Project Plateau
Project Plateau: four glass plates, one living valley, and the road back to camp.
翻訳待ち
No updates detected yet. GitHub releases will appear here.
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗球面・トーラス上で囲碁を遊ぶ、ブラウザ用の静的アプリです。比較用に通常の平面盤(7・9・11 路)もあります。入門用 AI との対局と、同じ端末での二人対局に対応します。
コードの作成・修正・検証には、AI エージェント(OpenAI Codex、Claude Code)を使用しています。
Python 3 でローカルサーバーを起動します。
python3 -m http.server --directory dist 8000
ブラウザで http://localhost:8000 を開きます。dist/ がそのままソース兼配信ファイルです。ビルド、npm パッケージのインストール、API キーは不要です。JavaScript モジュールを使うため、HTML を file:// で直接開かず HTTP サーバーを使ってください。
球面盤は立方体の各面を格子に分割して球面に投影したグラフです。1 辺を n 分割したとき、交点は 6n² + 2 個。立方体の頂点に相当する 8 点だけ次数 3、残りは次数 4 です。
| 大きさ | 球面 | トーラス |
|---|---|---|
| 小 | 56 点 | 49 点(7 × 7) |
| 標準 | 98 点 | 81 点(9 × 9) |
| 大 | 152 点 | 121 点(11 × 11) |
| ファイル | 役割 |
|---|---|
dist/index.html / dist/style.css | 画面、設定・説明ダイアログ、モバイル向けレイアウト |
dist/app.js | Canvas 描画、操作、対局進行 |
dist/orientation.js | クォータニオンによる画面基準の回転と旧保存形式の姿勢変換 |
dist/surface-renderer.js | 盤面・碁石の奥行きバッファ描画、盤ごとに寸法を揃えた碁石、可視部分に対応した選択判定・強調表示 |
dist/board-analysis.js / dist/display.js | 表示用の盤面解析(活き石・死に石・アタリ・地)と、表示設定・カウンター |
dist/engine.js | 盤のグラフ生成、合法手・取り・反復禁止・得点 |
dist/ai-worker.js / dist/ai-v2.js | Workerの再利用と、WASM / 生成JSの実行切り替え |
dist/ai-api.js / dist/ai-wasm.js / dist/ai-js.js | WASM版と生成JS版で共有するv2の呼び出し処理 |
dist/ai-engine.wasm / dist/ai-engine.generated.js | 同じRustから作るWASMとJS。生成JSは必要時だけ取得 |
dist/ai-position.js | Workerに渡す着手履歴と、検証用の局面復元 |
dist/sphere-projection.js | 二半球の正距方位投影、境界での辺の切り分け |
dist/record.js | 棋譜リンクの符号化と、ルールに沿った再生による検証 |
dist/persistence.js | ブラウザへの自動保存、合法手の再生による保存内容の検証・復元 |
docs/ai/ / experiments/ai/ | AI の現行仕様と、世代・実験ごとの報告書・保存データ |
tools/ai-tuner/ | Kyokugo AI v1 / v2 の開発・評価・係数調整ツール |
tests/fixtures/ai/ | AI の一致確認に使う固定局面 |
ルールは立体座標ではなく交点と隣接関係のグラフ上で動きます。立体表示と平面表示は同じ交点 ID・対局状態を共有します。処理は端末内で完結し、バックエンドはありません。
アプリ本体と開発・学習・検証用ツールのソースコードは、MIT-0(MIT No Attribution) ライセンスで公開しています。正式な条件は LICENSE を参照してください。
ただし、外部から取り入れたコードやライブラリには、それぞれのライセンスが適用されます。WASM や生成 JS に含まれる第三者コードの告知も維持してください。
| 文書 | 内容 |
|---|---|
| LICENSE | 自作ソースコードに適用する MIT-0 の本文 |
| THIRD_PARTY.md | 第三者ソフトウェア・参考実装・文献の目録と更新手順 |
| JSON 目録 | 自作ソースのライセンス情報と第三者目録の機械可読な正本 |
| 配信用のライセンス表示 | アプリから参照するライセンス案内・第三者告知へのリンク |
配信物には MIT-0 本文のコピー、第三者の告知全文、目録 JSON を含めています。配信用の文書と目録は node tools/third-party.mjs --write で生成し、引数なしで正本との一致を確認します。
一手評価のアーキテクチャを Kyokugo AI v1、最大 4 手探索のアーキテクチャを Kyokugo AI v2 と呼びます。仕様・現在の配信構成は AI 文書、評価結果と保存データは 実験索引、実行方法は 開発ツール にまとめています。
実験版の Kyokugo AI v3 は小型 GNN とバッチ MCTS を組み合わせ、?ai=v3 で試せます。WebGPU 推論・初期学習モデル・uv による学習手順は v3 開発 を参照してください。通常対局への採用はまだ行っていません。
AIの着手計算はRustからビルドしたWASMを使います。WASMを利用できない場合は同じWASMから生成したJS版v2へ切り替え、Workerが使えない場合も同じ生成JSを画面側で実行します。画面操作、保存・棋譜、実際の着手検証はJSが担当します。配布済みの dist/ にはWASMと生成JSを含むため、起動時のビルドは不要です。
WASM 化の範囲、Worker の再利用、ビルド手順は アプリ用 WASM AI を参照してください。Rust の実装を変更した場合は node tools/ai-tuner/build-wasm.mjs で配信物を更新します。
Node.js 24 で動作確認しています。外部パッケージは不要です。
node tests.mjs
node wasm-tests.mjs
node generated-js-tests.mjs
node search-tests.mjs
node v3-tests.mjs
node komi-tests.mjs
node record-tests.mjs
node persistence-tests.mjs
node analysis-tests.mjs
node display-tests.mjs
node --experimental-vm-modules persistence-review.mjs
node projection-review.mjs
node rendering-review.mjs
node tools/bench-rendering.mjs
node orientation-tests.mjs
node --experimental-vm-modules rotation-review.mjs
node ui-tests.mjs
UI_WIDTH=390 UI_HEIGHT=844 node ui-tests.mjs
UI_WIDTH=844 UI_HEIGHT=390 node ui-tests.mjs
描画の変更前後を比較するには node tools/bench-rendering.mjs --baseline <変更前のコミット> を実行します。全盤種・全サイズの90ケースで画像・奥行き・選択判定の一致を検証し、空盤・中盤・密集盤面のドラッグ時/静止時の描画時間の中央値を表示します。Node.js上のCPU描画の計測で、ブラウザーへの転送・表示時間は含みません。
最後の 2 行は POSIX シェル向けです。UI_WIDTH / UI_HEIGHT を省略すると 360 × 640 の想定になります。
persistence-tests.mjs / persistence-review.mjs:保存・復元、破損データ、履歴・スーパーコウ、再読み込み後の AI 再開。後者は新規 VM コンテキストを使う UI シミュレーションです。analysis-tests.mjs / display-tests.mjs:盤面の印の判定(死に石は全探索でも確認)、カウンターの値、表示設定の保存。record-tests.mjs:棋譜リンクの往復変換と、壊れた・不正なリンクの拒否。search-tests.mjs:探索版の native / WASM の選択手一致、JS での再生・得点、取り・スーパーコウ・コミに応じたパス判断。wasm-tests.mjs:配布 WASM と JS の選択手、履歴・スーパーコウ、Worker の再利用と読み込み失敗時のフォールバック。tests.mjs:盤の構造、合法手、取り、反復禁止、得点、AI など。AI が調整ツールと同じ手を選ぶことも確認します。rendering-review.mjs:描画バッファの奥行き・可視性・選択判定の検証。実ブラウザの描画テストではありません。projection-review.mjs:全交点・辺の網羅、境界での切り分け、投影の逆変換・表示範囲・点の衝突など。ui-tests.mjs:DOM / Canvas スタブによる操作連携テスト。全球図での着手、表示切替、AI、待った、設定、終局など。UI テストは実ブラウザやスマートフォンの描画・タッチ操作を検証するものではありません。画面表示の変更時には別途実機確認が必要です。
静的ホスティングに dist/ の内容を配置します。
SNS 共有時のカード画像(og-image.png)とアイコンは、アプリの盤描画から node tools/social-card.mjs で再生成します。ImageMagick 7(Pango 対応)と Noto Sans JP が必要です。
公開先は https://kyokugo.ryusei.dev です。wrangler.jsonc で dist/ の静的配信と独自ドメインを設定しています。アプリのビルドやサーバー側の実行コードは不要です。
Cloudflare の対象アカウントにログインし、リポジトリのルートで実行します。
npx --yes [email protected] login
node tools/write-build-info.mjs
npx --yes [email protected] deploy --dry-run
npx --yes [email protected] deploy
デプロイには Workers の編集と ryusei.dev の独自ドメイン設定に必要な権限を使います。独自ドメインの DNS と証明書は Cloudflare が管理します。workers.dev とプレビュー URL は無効にしています。dist/ 以外の文書・実験データは配信しません。AI の Rust 実装を変更した場合は、先に上記の WASM ビルドとテストを実行してください。