概要
AtCoder Heuristic Contest(AHC)をはじめとするマラソン系のプログラミングコンテストでは、ローカルテストによるデバッグや試行錯誤が非常に重要です。
本記事では、Google Cloud Platform(GCP)の仮想マシン(VM)を用いて、できるだけ低コストで高速なテスト環境を構築する方法を紹介します。
特に、Spot VMを用いてコスト削減を狙います。
クラウドVMの利用コスト(筆者の体感)
Google Cloudの料金はマシンタイプや使用時間によって異なりますが:
- 通常VM:約30円/時間(c2d-highcpu-4)
- Spot VM:約10円/時間(※変動あり)
Spot VMは余剰リソースを活用することで安価に利用できるVMです。
ただし、リソースが不足すると強制的に停止される可能性があります。
手順
動作環境(参考)
以下は筆者の動作環境ですが、多くの環境でも同様に動作するはずです。
項目 | version |
---|---|
OS | windows 11 Home |
ローカル環境 | WSL (Ubuntu 22.04.5 LTS) |
クラウドVM | Google Compute Engine |
VMインスタンスの作成
本記事では Google Compute Engine(GCE) を例に説明します。
特に本章ではインスタンス作成時の設定値に重点をおいて解説しますので、VMの作成〜接続までの基本操作は、以下の公式ガイドを参照してください。
マシンの構成
項目 | 設定例 |
---|---|
名前 | 任意(デフォルトでも可) |
リージョン | 任意(深夜など空いている時間帯がおすすめ) |
ゾーン | 指定なし |
マシンタイプ | コンピューティング最適化 > C2D > c2d-highcpu-4 |
※下記はマシンタイプの選択手順です。
OSとストレージ
項目 | 設定例 |
---|---|
オペレーティングシステム | Ubuntu |
バージョン | Ubuntu25.04. Minimal |
ブートディスクの種類 | 標準永続ディスク |
サイズ | 10GB |
データ保護
ネットワーキング~セキュリティ
変更なし
詳細
項目 | 設定例 |
---|---|
自動化 | 下記のスクリプトを記載する |
プロビジョニングモデル | Spot |
#!/bin/bash
apt update
apt -y upgrade
apt -y install vim #念の為のエディタ
apt -y install unzip #zipを解凍するため
apt -y install build-essential #buildに必要(だったはず)
【VMで操作】Rustのインストール
公式ビジュアライザのビルドにはRustが必要であるため、Rustをインストールします。
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
インストール後は、一度VMからログアウトし、再ログインしてください。
公式ビジュアライザをVMにインストール
【ローカルで操作】AHC公式ビジュアライザのリンクを取得
直接クラウドVMにダウンロードするため、ローカル版の「リンクのアドレスをコピー」します。

リンクから?
以降の文字列を削除する。
#コピー直後
https://img.atcoder.jp/ahc048/lI5DXOAV.zip?${長い文字列}
#"?"以降は削除する
https://img.atcoder.jp/ahc048/lI5DXOAV.zip #これを次で使う!!
【VMで操作】AHC公式ビジュアライザをダウンロード&展開
$ wget ${上で取得したリンク} #Atcoderから直接ビジュアライザをVMにダウンロード
#$ wget https://img.atcoder.jp/ahc048/lI5DXOAV.zip #AHC048の例
$ unzip ${取得したファイル.zip} #ダウンロードしたzipを解凍
#$ unzip lI5DXOAV.zip #AHC048の例
【VMで操作】テスタを入手(筆者のGithub)
$ curl https://raw.githubusercontent.com/g1ac3/ahc-param-tuner/refs/heads/main/test.py test.py
ikomaさんのソースコードを参考に作成していますので詳しい利用方法は下記を参照:
ソースコード(自身の解答)をVMへ転送
【ローカルで操作】VMへデータをアップロード
VMへのファイル転送方法は以下を参照:
WSLを使っている場合、以下でエクスプローラを開き、パスをコピーすると便利。
$ explorer.exe .
【VMで操作】ソースコード(自身の解答)をコンパイル
いつも通りコンパイルしてください。ただし、実行ファイル名は「a.out」にしてください。
現状確認
この段階で手元のファイルは下記のようになるはずです。
$ ls
a.out lI5DXOAV.zip source.cpp test.py tools #lI5DXOAVの名前はコンテストによる
テスタの実行
$ python3 test.py
#1.ビジュアライザのコンパイルログ
Updating crates.io index
...
Compiling tools v1.0.0 (/home/${googleのID}/tools)
Finished `release` profile [optimized] target(s) in 11.83s
#2.ローカルテストの実行ログ
0 score: 1,247,802 2907 ms
...
99 score: 644,416 2884 ms
#3.結果まとめ
total time: 21.1 s
average time: 2917 ms
sum score : 86,386,379 pt
average(log): 5.9246
VMの使用が完了したら、"VMインスタンスの削除"を忘れずにしましょう。
VMを"停止"しただけではストレージの料金を払い続けることになります。
あとがき
ローカル(私用PC)でテストするのが嫌な場合も、Spot VMを活用すれば低コストかつ高速に反復可能です。
また、他のクラウドサービス(AWS, Azure)でも同様の構成が可能なので、用途や予算に応じて使い分けるのもアリです。