はじめに
RUNTEQで学んでいるsekiと申します!今回はAtCoderでJavaでの自動化環境の構築を自分なりにまとめてみたので公開したいと思います。
ゴール
VSCode上に、AtCoder用のJava環境を作成し、AtCoderの問題のダウンロード・テスト・提出をローカル上で完結できるようにする。
対象読書
- Javaに興味を持っている方
- AtCoderでJavaを使用していて、ブラウザでの操作に面倒くささを感じている方
参考記事
以下、参考にさせていただいた記事です。
- JavaでのAtCoderの拡張機能の設定
https://zenn.dev/polysan/articles/0dd6de3d18ff29#%E3%83%86%E3%82%B9%E3%83%88 - AtCoderの拡張機能を便利に使う設定
https://qiita.com/rakudalms/items/c261a6c0cfd588e96abf - Javaの環境構築
https://qiita.com/kobari_h/items/4b39f4a9772cc4ee2b0a
目次
1.JDKのインストーラをダウンロード
2.フォルダの作成
3.AtCoderの拡張機能のインストール
4.TIPS
1.JDKのインストーラーのダウンロード
こちらからJDKをインストールしてください。
※私の場合は、ARM64 DMG Installerで、インストールしました。MacAir2です。
https://www.oracle.com/java/technologies/downloads/?er=221886#jdk23-mac
Javaのバージョンを確認
java -version
以下のバージョンが出ていることを確認
java version "23.0.1" 2024-10-15
Java(TM) SE Runtime Environment (build 23.0.1+11-39)
Java HotSpot(TM) 64-Bit Server VM (build 23.0.1+11-39, mixed mode, sharing)
2.フォルダの作成・拡張機能のインストール
フォルダの作成
ターミナルで以下のコマンドを実行して、フォルダを作成
VSCodeを開く
mkdir atCoder
cd atCoder
. vsCode
Javaのインストール確認
touch Main.java
Main.java
を作成し、以下のコードを記述
public class Main {
public static void main(String[] args) {
System.out.println("Hello, world!")
}
以下のコマンドを打ち、「Hello, world!」が出れば成功です。
java Main.java
以下の拡張機能をインストール
Javaの便利な機能がまとめて入っているお得な機能です
https://marketplace.visualstudio.com/items?itemName=vscjava.vscode-java-pack
3.atCoderの拡張機能のインストール
次に、atCoderの拡張のatcoder-cli
と online-judge-tools
をインストールしていきます
以下、公式記事です。
http://tatamo.81.la/blog/2018/12/07/atcoder-cli-installation-guide/
ツールのインストールの確認
以下のコマンドがない場合は、適宜インストールしてください
# Homebrew
$ brew -v
Homebrew 4.4.8
# npm
$ npm -v
10.8.1
# pip3
$ pip3 -V
pip 22.0.4 from /usr/local/lib/python3.9/site-packages/pip (python 3.9)
ツールのインストール
# atcoder-cli インストール
$ npm install -g atcoder-cli
# インストール確認
$ acc -v
2.2.0
# online-judge-tools インストール
$ pip3 install online-judge-tools
# インストール確認
$ oj --version
online-judge-tools 11.5.1 (+ online-judge-api-client 10.10.1)
初期設定
コマンドライン上でAtCoderにログインをします
ユーザー名とパスワードを聞かれるので、記載してください。
$ acc login
4.TIPS
上記のことを行えば、AtCoderの拡張機能はインストール完了です。
ここから先はAtCoderを便利にするための機能です。
コンテストディレクトリ作成時に問題をすべてダウンロード
acc new コンテストID
でコンテスト用のディレクトリを作成した際にどの問題をダウンロードするか選択する
1問でも全問でもダウンロードは一瞬なので全問ダウンロードするようにします
下記を実行
acc config default-task-choice all
これでatcoder-cliの設定が毎回全問ダウンロードの設定に書きかわりました
テンプレートの作成
毎回提出用のファイルを作成するのは面倒になります。最低でもこれはどんな人でも打つと思います。
import java.util.Scanner;
/**
* AtCoder用クラス
*/
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
}
こちらをテンプレート化して、自動作成します。
# atcoder-cli設定ディレクトリに移動
cd `acc config-dir`
# テンプレート作成
mkdir java && cd java
touch template.json
touch Main.java
以下を記載
vi template.json
{
"task":{
"program": ["Main.java"],
"submit": "Main.java",
"testdir": "test"
}
}
次にこれをテンプレート化します。
acc config default-template java
できているかの確認
https://atcoder.jp/contests/abc380
こちらのコンテストで、確認をします。
まず、問題をローカルに落とします。
acc new abc380
問題の箇所に移動します。
cd abc380
cd a
aフォルダにあるMain.javaを適当に記載します。完了したら、以下のコマンドを打ちます。
oj t -c "java Main.java" -d ./test/
テスト結果が流れてくると思います。
[INFO] slowest: 0.194286 sec (for sample-1)
[FAILURE] test failed: 0 AC / 4 cases
最後に、提出をします
acc submit Main.java -- -l 5005
途中、以下のように聞かれるので、abca
を入力します。
Are you sure? Please type "abca"
最後に、AtCoderの提出の画面が出れば、成功です。