WindowsでのAtCoder用開発環境構築ガイド
はじめに
このガイドは、AtCoderで効率的に競技プログラミングをするための環境構築手順をまとめたものです。
具体的には、Windows環境でC++のコンパイルや実行を行うためのツールや設定方法について説明します。
以下を想定しています。
・win11
・VScodeインストール済み
・C++でのAtCoderでのテスト自動化を目的
目次
- MSYS2のインストール
- g++のインストール
- 環境変数の設定
- Tasks.jsonとコンパイル用バッチファイルの作成
- 実行してみる
- 最後に
1. MSYS2のインストール
MSYS2
MSYS2は、WindowsでUnix系のツールを使用するための環境です。これをインストールすることで、g++やbashなどのツールを使えるようになります。
MSYS2のインストール手順
-
MSYS2公式サイトからインストーラーをダウンロードします。
- MSYS2公式サイト
- 自分はmsys2-x86_64-xxxxxxx.exe をダウンロードしました(環境に合わせて)
- インストーラーを実行し、MSYS2をインストール
- インストール先はデフォルトの C:\msys64\ のままでOK
- インストールが完了したら、MSYS2を起動する
- MSYS2のパッケージを最新化する
- MSYS2ターミナルを開き、パッケージリストを最新に更新します
# MSYS2のパッケージ更新 pacman -Syu
2. g++ のインストール
MSYS2では、mingw-w64 のパッケージを使って g++ をインストールします。
pacman -S mingw-w64-ucrt-x86_64-gcc
インストール後、以下のコマンドで g++ のバージョンを確認できます。
g++ --version
これでバージョンが表示されれば g++ のインストールが完了です!🎉
3. 環境変数の設定
MSYS2でインストールしたg++を使用するため、Windowsの環境変数にMSYS2のパスを追加します
手順:
1. MSYS2をインストールしたディレクトリにあるmingw64\binフォルダのパスをコピーします
例: C:\msys64\mingw64\bin
2. Windows環境変数の設定手順:
1.スタート」→「システム環境設定」を開きます
2.「環境変数」ボタンをクリックします
3.「システム環境変数」の「Path」を選択し、「編集」します
4.新しい値として、コピーしたパス(C:\msys64\mingw64\bin)を追加します
3.g++ がWindowsのターミナルで使えるか確認
VSCodeのターミナル(PowerShell や CMD)を開いて、MSYS2の g++ がどこにあるか確認します
which g++
これで、エラーが出なければ、MSYS2のg++を使えるようになります
4. tasks(g++コマンドを自動化)
VS Codeの Tasks.json を使うことで、バッチファイルを使わずにコンパイルや実行を簡単に行うことができます。ここでは、タスクの設定方法を説明します。
1. Tasks.jsonの設定
まず、VS Codeのワークスペースのルートディレクトリに .vscode フォルダを作成します。その中に tasks.json を作成して、以下の内容を記入します。
tasks.json の内容:
{
"version": "2.0.0",
"tasks": [
{
"label": "Build and Run",
"type": "shell",
"command": "g++",
"args": [
"${file}",
"-o",
"a.exe"
],
"group": {
"kind": "build",
"isDefault": true
},
"problemMatcher": ["$gcc"],
"detail": "コンパイルして実行します"
},
{
"label": "Run a.exe",
"type": "shell",
"command": "./a.exe",
"group": {
"kind": "test",
"isDefault": true
},
"problemMatcher": []
}
]
}
この設定を行うことで、VS Codeのターミナル内で「Build and Run」タスクを実行すれば、現在開いているC++ファイルを自動でコンパイルし、実行することができます。
2バッチファイル(abc_runner.bat
)の作成
次に、更新日時が最新のファイルをコンパイルするように、バッチファイルを作成して、自動化します。
abc_runner.bat
というファイルを作成し、以下の内容を記述します。このバッチファイルは、AtCoder Beginner Contest 397
フォルダ内のmySolutions
ディレクトリにある最新の.cpp
ファイルを見つけ、コンパイルして実行するものです。
バッチファイルの内容:
@echo off
:: 最新の .cpp ファイルを取得
for /f "delims=" %%F in ('dir /b /od /a-d "AtCoder Beginner Contest 397\mySolutions\*.cpp"') do set LATEST_FILE=%%F
:: コンパイル&実行
g++ "AtCoder Beginner Contest 397\mySolutions\%LATEST_FILE%" -o a.exe
a.exe
バッチファイルの保存場所
このバッチファイルは、AtCoder Beginner Contest フォルダ内に保存します。以下のような構成になります
AtCoder Beginner Contest
├── abc_runner.bat
└──AtCoder Beginner Contest 397\
└── mySolutions\
├── A - Thermometer.cpp
├── B - Test.cpp
└── C - SomeOtherProblem.cpp
abc_runner.batは、mySolutions内の最新の.cppファイルを検出してコンパイルし、実行します。これにより、手動でコンパイルする手間が省け、効率的に問題を解くことができます。
5.実行してみる
実行テスト用のファイルを作成します
AtCoder Beginner Contest 397のA問題Thermometerを、以下のCppファイルを作成します。
#include <bits/stdc++.h>
using namespace std;
#define rep(i,n) for(int i = 0;i < (n);i++)
int main() {
int ans;
double x = 0;
cin >> x;
if(x >= 38){
ans = 1;
}
if(x >= 37.5 && x < 38){
ans = 2;
}
if(x < 37.5){
ans = 3;
}
cout << ans << endl;
return 0;
}
VScodeのターミナルに以下を入力(Ctrl+Shift+Bでショートカット)
.\abc_runner.bat
39
2
.\abc_runner.batを入力したに、標準入力で39と入力したところ2と出ました。正常に機能しました。
6. 最後に
これで、競技プログラミングを効率的に進めるための開発環境が整いました🎉
若干、まだコンテストごとにbatファイル内で指定しているパスを修正してあげないといけないですが、ローカル環境でコードテストができるようになりました。
VS CodeとMSYS2をうまく活用して、快適にコードを書いてコンパイルしていきましょう!😊