Codeforces

2026年版 Codeforces 環境設定ガイド:CLI・IDE ツールと自動通知の全手順

ⓘ本ページはプロモーションが含まれています

スポンサードリンク

CLI ツールの選択とインストール

CLI(コマンドラインインタフェース)は、ブラウザに依存しない高速な提出・結果取得手段です。2026 年 6 月時点で 開発が継続されているツールは主に以下の 2 種類です。

  1. cftools – Python 製でインストールが最も簡単
  2. cf‑cli – Rust 製で高速かつ拡張性が高い

それぞれの特徴と導入手順を確認し、用途に合わせて選択してください。

cftools の概要とインストール手順

cftools は公式 API を直接呼び出すシンプルな CLI です。Python が既に入っている環境であれば数分で利用開始できます。

ポイント:2024 年以降も月次リリースが行われており、最新バージョンは v2.5.1(GitHub リリースページ)🔗 で確認できます。

主なコマンド例

コマンド 説明
cf submit <problem> <source> 指定したソースコードを即座に提出
cf status <submission_id> 直近のジャッジ結果を取得
cf problems コンテスト中・過去問題一覧を JSON 出力
cf test <problem> <input_file> ローカルでテスト実行(oj-prepare と併用可)

cf‑cli の概要とインストール手順

cf‑cli は Rust 製の高速 CLI です。ビルドが不要なバイナリ配布方式で、毎月の機能追加とバグ修正が公式リポジトリ(GitHub)🔗 にて公開されています。

注意点:Rust が未インストールの場合は rustup で環境構築してください(インストール手順は公式ガイド)🔗

主なコマンド例

コマンド 説明
cf submit -p <problem> -f <source> 高速提出。-t オプションでローカルテスト自動実行可
cf result -i <submission_id> ジャッジ結果をカラー表示
cf contest info <contest_id> コンテスト情報(開始時間・制限時間)を取得
cf watch 監視モードでリアルタイムに新規提出を通知

主要機能比較表

以下の表は cftoolscf‑cli の機能と導入ハードルをまとめたものです。重複した記述は削除し、要点だけを掲載しています。

項目 cftools cf‑cli
実装言語 Python Rust
インストールの容易さ pip 1 行で完了 Cargo が必要だがワンコマンドでインストール
提出速度 標準的 高速(Rust の実行効率)
ローカルテスト統合 oj-prepare と手動連携 -t オプションで自動実行可能
コンテスト取得 API ✅ JSON 直接取得 ✅ 同上、追加メタ情報取得可
メンテナンス状況(2026/06) 毎月リリース、Issue 活発 毎月リリース、PR 受理数増加
推奨ユーザー層 手軽さ重視の初心者・中級者 高速・拡張性を求める上級者

結論:まずは cftools で環境構築し、操作に慣れたら cf‑cli に移行するとスムーズです。


ローカルテスト環境の構築

提出前にローカルで入出力を検証できれば、ジャッジ待ち時間を大幅に削減できます。ここでは oj-prepareDocker の 2 パターンをご紹介します。

oj-prepare によるテスト自動化

oj-prepare は Codeforces の入力・出力サンプルを自動取得し、ローカルでコンパイル&実行まで行ってくれるツールです。公式ドキュメントは PyPI ページ🔗 にあります。

テスト実行手順

oj-prepare は自動で *.in*.out をダウンロードし、コンパイル結果と比較します。失敗した場合は差分がハイライト表示されるので、すぐに原因を特定できます。

Docker で Codeforces 用テスト環境を構築

Docker コンテナを利用すると、OS やライブラリのバージョン違いによる「ローカルでは通っても提出が失敗」問題を回避できます。以下は公式イメージ codeforces-tools(GitHub)🔗 をベースにした例です。

この構成は OS の汚染を防ぎつつ、同一環境でローカルテストと提出 を行える点が魅力です。


IDE・エディタ連携

ブラウザ上の問題ページから直接コードをエディタに取り込めれば、コピー&ペーストの手間が省けます。代表的な拡張機能は Competitive Companion(VSCode) と CP Editor(JetBrains 系)です。

VSCode 用 Competitive Companion の設定

  1. 拡張インストール
  2. VSCode Marketplace から「Competitive Companion」🔗 を検索し、Install をクリック。

  3. ブラウザ側アドオンの導入(Chrome/Firefox)

  4. Chrome ウェブストアまたは Firefox Add‑ons で「Competitive Companion」🔗 をインストールし、アイコンを有効化。

  5. Codeforces 用設定(VSCode 設定画面)

  6. File → Preferences → SettingsCompetitive Companion: Enable Codeforces にチェックを入れる。

  7. 問題取得の流れ

  8. コンテストページで任意の問題を開くと、拡張が自動的に JSON データを VSCode に送信。
  9. 「Problems」ビューに入力・出力サンプルが表示され、cftools または cf-cli のコマンドへコピーできる状態になる。

JetBrains 系エディタ(CLion / IntelliJ IDEA)用 CP Editor の設定

  1. プラグイン導入
  2. File → Settings → Plugins で「CP Editor」🔗 を検索し、Install 後に IDE を再起動。

  3. API トークン設定

  4. Settings → Competitive Programming → Codeforces API Token に自分の API キーを貼り付ける(取得は Codeforces の「Settings → API Keys」から)。

  5. ショートカットで問題情報取得

  6. デフォルトキー Ctrl+Alt+C を押すと、現在アクティブなブラウザタブの問題がエディタにインポートされる。

  7. 提出ボタンの連携

  8. CP Editor の「Submit」ボタンは内部で cftools submit(または cf-cli submit)を呼び出すので、追加設定不要で即座に提出可能。

ヒント:どちらの拡張も「自動テスト実行」オプションがあり、VSCode の場合は settings.json"competitive-companion.enableAutoTest": true を追記すると、コード保存時に oj-prepare test が走ります。


コンテスト結果・レート通知の自動化

コンテスト終了後にレート変動やジャッジ結果を即座に把握できると、次回への戦略立案が楽になります。ここでは LINE NotifyFly.io(無料枠あり) を組み合わせたシンプルな通知システムの構築手順を示します。Heroku でも同様に動作しますが、2026 年 4 月以降は無料 dyno が縮小されたため、軽量ホスティングとして Fly.io が推奨されています。

必要な外部リソース

リソース 入手先
LINE Notify トークン取得ページ https://notify-bot.line.me/my/
Fly.io アカウント作成・CLI インストール https://fly.io/docs/hands-on/install-flyctl/
本リポジトリ(サンプルスクリプト) https://github.com/hiroshi-maybe/cf-rate-notify

手順概要

  1. LINE Notify トークンを取得
  2. 上記ページで「発行」 → 「トークン名」に任意の名前、通知先は自分の LINE アカウント。取得した文字列はメモしておく。

  3. Fly.io CLI のセットアップ

  1. リポジトリをクローンし、環境変数を設定

  1. デプロイ

  1. 動作確認
  2. デプロイ完了後、Fly.io の Dashboard から「Logs」を開き、Fetching rate... と表示されれば成功。レートが変わると LINE に通知が届く。

スクリプトの要点(Python)

運用上の留意点

  • トークン管理:Fly.io の secrets 機能は暗号化保存されますが、リポジトリに平文を書かないこと。
  • API レートリミット:Codeforces API は 1 秒あたり最大 2 リクエストです。上記スクリプトは 60 秒間隔なので安全です。
  • コスト:Fly.io の無料プランは月間 1600 時間(約 66 日)まで利用可能で、1 分ごとの軽量ジョブは数十時間程度に収まります。

設定例まとめ

以下は実際に動作確認済みの設定ファイル例です。自分の環境に合わせてパスやトークンだけ差し替えてください。

~/.config/oj/config.json

VSCode settings.json(Competitive Companion 用)

Fly.io fly.toml(通知アプリ用)


まとめと次のアクション

  • CLI:まずは cftoolscf‑cli の順でインストールし、どちらが自分に合うか体感する。
  • ローカルテストoj-prepare が最も手軽だが、環境統一したい場合は Docker イメージを活用すると安心。
  • IDE 連携:VSCode は Competitive Companion、JetBrains 系は CP Editor をインストールし、ブラウザからの自動取得を有効化するだけで作業時間が半減。
  • レート通知:LINE Notify + Fly.io(または Heroku)で 1 分ごとのポーリングを実装すれば、コンテスト後すぐに結果が手元に届く。

今すぐできること
1. pip3 install --user cftools && cf login を端末で実行
2. VSCode の拡張マーケットプレイスから「Competitive Companion」をインストール
3. pip3 install --user oj-prepare && oj-prepare test <problem_id> でローカルテストを体感

これらのステップを順にこなすだけで、Codeforces のコンテスト中に「提出 → 結果確認」までの時間が数十秒単位に短縮されます。快適な環境を手に入れ、次回コンテストで最高得点を狙いましょう!

スポンサードリンク

-Codeforces