はじめに Preview
未公開の統合 candidate の手順です。ローカルの大会・チーム運用は実装されていますが、クラウド基盤の配置や全カタログのプレイ確認が完了した公開版ではありません。
ローカル競技を起動する
確認対象の checkout、Bun 1.3.11、固定した問題 submodule を使います。macOS または Linux(WSL2 を含む)が対象です。Docker 問題には Docker Engine と Compose が必要です。リポジトリのルートで実行します。
git submodule update --init --recursive
bun install --frozen-lockfile --ignore-scripts
make local
既定の開催者 URL は http://127.0.0.1:5174、参加者 URL は http://127.0.0.1:5175 です。実際にはプロセスが表示した URL を使います。主催者キーだけでログインし、ユーザー名・パスワードは使いません。対話ターミナルで make local を起動するたびに新しいキーを一度だけ表示し、以前の主催者キーとログインを失効させます。起動中の再発行は、別の対話ターミナルで同じデータディレクトリを指定して make local-reset を実行します。大会・得点・参加者キー・問題のデータを保持します。非対話起動と public/container 起動では既存のキーを保持し、ログにキーを出力しません。
大会を作成して参加する
- 開催者コンソールで大会、チーム、出題する問題を選びます。
- jobs を準備し、チームごとの結果を確認します。新しい Docker jobs は参加者が起動するまで停止状態です。AWS 問題は配置手順を使います。
- Schedule から大会を開始し、各チームへ参加者 URL とチームキーを渡します。
- 参加者ポータルへそのキーで入ります。Docker は Start / resume で起動し、問題文、操作、得点まで確認します。使い終えた環境は Stop (keep data) で停止します。
開催者と参加者が使う一つの競技システムです。個人練習専用のログインはありません。Docker カタログと workbench の復旧は進行中です。106 問が一覧に出ることと、terminal や実 Docker のブラウザ操作まで全問確認済みであることは別です。
データを消さず停止・再開する
同じ checkout の別端末で実行します。
make down
make local
make down は管理対象のローカルプロセスと所有する Docker 環境を止め、DB、得点、キー、Docker のデータを保持します。大会の終了や AWS 問題 stack の削除は行いません。make local 後も、新しいオンデマンドの Docker jobs は参加者が再開するまで停止したままです。書き込みレイヤーと volume は保持しますが、RAM は保持しません。再起動しても大会の時刻はリセットされません。End Event は採点を止め、環境の teardown は所有する環境を削除します。削除が完了するまでデータディレクトリを消さないでください。
起動オプションは LOCAL_ARGS へ渡します。例は make local LOCAL_ARGS="--no-build" です。--data を指定した場合、make down にも同じディレクトリを指定します。
make local-clear は host を停止してから、確認後に競技データと所有する Docker 問題データを消去します。主催者キーと host 設定は保持します。make down はデータを保持して停止し、make local-reset は主催者アクセスを再発行します。
クラウド開催を設定する
使う AWS CLI のプロファイルを選び、aws sts get-caller-identity で確認します。make env-init ENV=development を実行して、開催者のメールアドレス・配置先アカウント ID・リージョンを入力します。選択した .env がなければ作成します。既存ファイルの設定を変える場合は編集してください。
Turso は make turso-live ENV=development で CLI の導入・ログイン・DB の作成・SSM へのトークン保存・認証検証を進め、配置前に確認します。DynamoDB は env-init の後で make deploy ENV=development を実行します。make turso-live-guide で手順を表示でき、make turso-token-rotate ENV=development でトークンを表示せずに再発行できます。期限を設定する場合は ROTATE_ARGS="--expiration 30d" を指定し、期限前に更新してください。前提条件・プロファイルの選択・各確認事項は、checkout の infrastructure/README.md に記載しています。
クラウド配置の状態
make deploy と make destroy は権限設定を確認したうえで、この版の Lambda + Turso/DynamoDB CLI を実行します。クラウド開催は Lambda・Cognito と選択した Turso / DynamoDB で、汎用 CloudFormation 配置、flag / multi-flag・定期採点、参加者の Console / CLI アクセス、Cryptography Battle などの組み込み coordination を実行します。撤収時に対象を確認し、基盤の所有データはデフォルトで削除します。通常の make destroy は外部 Turso の行を残し、make destroy-all で明示的にリセットします。問題環境の撤収は別操作です。Lambda + Turso/DynamoDB によるクラウド開催は検証中で、費用ゼロを保証していません。AWS サービスの問題はクラウド開催専用です。Docker / Compose 問題はローカル開催専用で、クラウドのカタログには表示しません。実 AWS・hosted Turso での大会性能は未検証です。cloud pipeline は現行 CLI を既定で使います。build を始める前にソース設定と配置 role を確認してください。
Codespaces の転送 URL と問題接続は、この candidate では未確認です。確認記録ができるまでは上のローカル手順を使ってください。
書籍と互換性
自分で作るクラウド競技と
Build Your Own Cloud Competitionは、
教材と設計の背景を説明します。現行の挙動の正本はこのドキュメントと対応する checkout です。
公開済み書籍には旧版の構築手順が残っています。docs/book-compatibility.md に
コマンド、採点、runtime の修正点を記録しています。外部の書籍は変更していません。
新規クラウド環境の stack 名は tenkacloud-cloud 系です。既存の tenkacloud-lite 系 stack は名前を維持します。CLI は Lite / cloud の既存 stack を検出し、両方ある場合は TENKACLOUD_STACK_LAYOUT=lite または cloud の明示指定が必要です。旧 Lite の更新は所有情報と永続 resource ID を検証します。 catalog pin のない旧 Lite 環境は、resource / schema の検査後、bootstrap・source upload・配置の前に、進行中の大会がないことを初回だけ明示確認します。開催中の大会は完了まで配置済みの版で継続してください。大会が残っていないことを運用者が確認してから対話で承認し、非対話の更新には CLOUD_ARGS="--confirm-no-active-events" を使います。通常の --yes ではこの確認を省略できません。legacy catalog key だけでは安全な更新を証明できず、過去のデータも自動移行しません。新規環境と復旧済み環境は通常の make deploy で自動配置します。公開 cloud-v1 の resource / DB schema への上書き更新は拒否し、データは自動移行しません。--drain-events は使えません。問題環境を大会の Teardown で撤収してから基盤を削除してください。
両 DB とも 99 チーム、SQL coordination は旧 4 MiB 上限です。現行 catalog の 9 template は TemplateBody の 51,200 bytes 上限を超え、TemplateURL は未実装です。全 AWS 問題の配置確認済みを意味しません。