WindowsでAtCoder環境構築を整えるメモ。
WSL + VSCode + atcoder-gui での手順を書いていきます。
※ WSL以外の部分はmacosなどでも利用可能
構築すると以下のことができます。
- 問題文を解析して、ソースコードのひな型を生成
- atcoder-toolsとほぼ同じもの
- いまのところC++とPythonのみ
- ルールベースで生成するため [AtCoder生成AI対策ルール - 20251003版] の条件下でも利用可能のはず
- 将来禁止される可能性はあります
- 複数ケースやクエリタイプなどの変則的な問題にも対応
- 失敗することもあります
- サンプル入力と出力のダウンロード
- テスト実行
- 提出のサポート
- 人間がブラウザを操作することにより、CAPCHA認証に対応
- VSCodeとの連携
- デバッグ実行のための設定値の準備
- 問題文を開いたときにVSCodeで該当するディレクトリを開く
↓ atcoder-gui の記事
↓ えびまさんのWindows環境構築動画
インストール
WSLとLinuxのインストール
AtCoderのジャッジがLinuxなのと、他の様々なツールを動かすときにLinuxがやりやすいです。WSLでUbuntuをインストールします。
管理者権限が必要です。
wsl --install
再起動後、Linuxのインストール
wsl --install Ubuntu
Linux環境のコマンドやライブラリの追加
PowerShellか、または、Windows TerminalからPowerShellを起動します。
wsl
sudo apt update
Linuxの追加設定
stack sizeのデフォルト値は8MBなので、少し拡大する。
↓ ソフトリミットを64MBにする例 (単純な処理なら100万回くらい再帰呼び出し可能)
echo "ulimit -Ss 65536" >> ~/.bashrc
C++の場合
C++の場合はGCCを入れます。たぶんClangでもいけます。
sudo apt install build-essential g++ gdb
AtCoder Libraryをインストールします。
WSLなどでsudo権限がある場合は /usr/local/include にインストールするのが手軽です。
公式サイトのReleases からダウンロードして展開します。↓ はv1.6の例です。
cd /tmp
wget https://github.com/atcoder/ac-library/archive/refs/tags/v1.6.tar.gz
tar zxvf v1.6.tar.gz
sudo cp -a ac-library-1.6/atcoder /usr/local/include/
Pythonの場合
2026/4現在だとバージョンマネージャーとして uv がお勧めらしいです。
curl -LsSf https://astral.sh/uv/install.sh | sh
uv python install 3.14
VSCodeのインストール
Microsoft Storeまたは 公式サイト からVSCodeをインストールしてください。
VSCodeの拡張機能の追加
拡張機能について、WSL と、開発に使いたい言語のもの (C++ または Python) をインストールしてください。
Node.jsのインストール
UbuntuにNode.jsをインストールします。ここではバージョンマネージャーとして nvm を使う場合で説明します。
公式サイト からリンクを取得します。↓ のような感じのリンク
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.4/install.sh | bash
シェルを再起動して (exit -> wsl) nvmを利用可能にしたあと、LTSのNode.jsをインストールします。
nvm install --lts
nvm alias default 'lts/*'
atcoder-guiのインストール
Node.jsがインストールできたら atcoder-gui をインストールします。
npm install -g atcoder-gui
Playwrightのインストール
atcoder-gui に Playwright が必要なので、依存ライブラリと、日本語のフォントをインストールします。これにより Playwright が WSL 環境で動きます。
npx playwright install
npx playwright install-deps chromium
sudo apt install fonts-noto-cjk fonts-noto-cjk-extra
各種設定
初期設定
作業用のディレクトリを決めます。特に指定しない場合は $HOME/atcoder ( ~/atcoder ) です。
シェルから atcoder-gui で起動すると、初期設定として、開発言語と作業用のディレクトリを聞いてきます。
C++の場合はそのまま Enter、Pythonの場合は python と入力してください。
作業用のディレクトリは Enter で ~/atcoder となります。
Welcome to AtCoder GUI!
It seems like this is your first launch or configuration is incomplete.
Choose your default language (cpp/python) [cpp]:
Enter your workspace directory [~/atcoder]:
AtCoderへのログイン
Playwright によりブラウザで atcoder.jp/home が開くので、ログインしてください。
VSCode用の設定
続いて、VSCode用の設定を行います。
command> setup-vscode
作業用のディレクトリの .vscode/ 以下にプロジェクトの設定ファイルが配置され、設定ファイル config.json5 にいくつか設定値が追加されます。
以上で設定完了です。
動作確認
試しにatcoder-guiのコマンド欄でgenコマンドを実行して、どれかのコンテスト情報を取得してみてください。
gen abc400
取得に成功したら、コマンド a を入力すると、問題Aが開くはずです。
VSCodeで main.cpp または main.py を編集して、F5でデバッグができます。
atcoder-guiのコマンド欄で test を入力するとテストができます。
ログインしている場合には submit で提出できます。
なお te su などでも認識します。
設定ファイルの構成
設定ファイルの場所は atcoder-gui config-dir で表示できます。Linuxだと ~/.config/atcoder-gui-nodejs のはず。
設定ファイルの構成は以下の通りです。
※ session.json はログインセッションの情報が含まれています。外部に公開しないように注意してください。
atcoder-gui-nodejs
├── config.json5 # 作業用ディレクトリなど、設定全般
├── cpp.json5 # C++のテンプレートの変数などの設定
├── cpp.njk # C++のコードテンプレート
├── python.json5 # Pythonのテンプレートの変数などの設定
├── python.njk # Pythonのコードテンプレート
└── session.json # セッション情報
VSCode用の設定値について
setup-vscode を実行すると、設定ファイルの config.json5 が ↓ のような感じになります。
各問題について、ソースコードが同名 (main.cpp または main.py) なので、ある問題でブレークポイントを設定すると、別の問題でもブレークポイントが発動します。これを防ぐため、問題のディレクトリに移動したとき、そのディレクトリを親ディレクトリとしてVSCodeを開くようにしています。
{
// UI Theme: 'light' or 'dark'
theme: "light",
// 起動時に開くURL
defaultUrl: "https://atcoder.jp/home",
// ブラウザのサイズ
windowSize: {
width: 1200,
height: 900,
},
// 作業用のディレクトリ
workspaceDir: "~/atcoder",
// 利用言語
// C++の場合 cpp
// Pythonの場合 python
language: "cpp",
// コンテスト毎のディレクトリを作成するかどうか
createContestDirectory: true,
buildCommand: {
// C++でビルドするコマンド
cpp: "g++ -O3 -std=c++23 -DNDEBUG main.cpp -o main",
},
runCommand: {
// Pythonでテストケースを実行するコマンド
python: 'uv run main.py',
},
// CLIで利用可能にしたいコマンド
allowedCommands: ["ls", "dir", "pwd", "code", "git"],
preProcess: {
// 各問題のディレクトリで、解析前に実行するコマンド
// VSCode用の設定値をコピーするなど
execOnEachProblemDir: "cp -a ~/atcoder/.vscode .",
},
postProcess: {
// 各問題のディレクトリで、解析後に実行するコマンド
// サンプル入力1を作業用にコピーする
execOnEachProblemDir: "cp in_1.txt in.txt",
},
onEnter: {
// 各問題のディレクトリに移動したときに実行するコマンド
// VSCodeで、そのディレクトリだけ開くようにする
execOnEachProblemDir: "code -r .",
},
}