TAERUクレーン配信 — 実装と検証状況(2026-09-06)
ローカル連携の主要な不足を実装した段階。本番配信を「完璧にできる」とはまだ判定しない。 本番/Firestoreの変更、デプロイ、YouTube枠作成・配信は実行していない。
実装済み
- 操作結果の追跡: APIでfeature flag無効を403、拡張未登録/無効を409で拒否。UnityはGodotの実行後ACKを待ってクラウドACKを返す。操作ID、action、Godot process、接続世代、台本runを照合し、未送信・古いACKでは成功にしない。Godotは直近256操作を再実行しない。Adminは受付/実行中/実行済み/結果未確認を分離し、自動再送しない。
- 効果音の配信経路: 認証済み19101にPCMを追加。Godot→Unity AudioSource→AudioListener→native
unity_mixに接続。キュー/パケットサイズに上限を設定し、再接続の残音・二重モニター・音声だけで映像停止が隠れる問題を防止。台本preflightは同一ゲームprocessの最新PCMも要求する。 - 起動・配布の取り違え防止: 同一secretで両アプリを起動するランチャー、認証/映像/PCM/capability確認、ビルドのソース/成果物SHA-256 manifest、既存ファイルを上書きしないexport、Godot 4.5.1をハッシュ固定したCIを追加。
実装の契約・起動例は Godot README。secretはAdmin設定、Firestore、Gitへ保存しない。認証済みIPCの利用に旧Virtual Controllerの絶対パスやアクセシビリティ権限は不要。
実施済み検証
- Godotロジックテスト(operator重複排除・PCM byte契約を追加)、3D物理テスト: 成功。
- Unity EditMode 78件: TAERUの操作ACK、映像受信、PCM上限/世代クリア、game captureの回帰テスト成功(実Godotテストも実行、skip 0)。
- 実Godotのproduction sceneを隔離portで起動し、production Unity extension/映像receiverで制御の相互認証、実操作のpositive ACK、JPEG、非ゼロの実SFX PCM、control/videoの同一processを確認。映像・音声ソケットを無効化した代替テストではない。
- Functions/ Admin操作/台本契約テスト81件、TypeScript build: 成功。
- ランチャーの認証失敗、旧capability、manifest不一致、分割映像/PCMの3テスト: 成功。
- 新規Godot macOS/Windows export: 成功。Mac配布バイナリの起動・認証・JPEG/PCM・ソースハッシュ一致も確認。WindowsはこのMacでは実行していない。
- Unity Mac GUI player: 配布対象ソースの隔離コピーでビルド成功。初回に発見したMacカメラ/マイクの利用目的文欠落を修正し、既存の
.venvは変更しなかった。Unityが生成した一部native pluginの署名不整合は、生成物だけの内側からのad-hoc再署名で修復し、codesign --verify --deep --strictに合格。Developer ID署名・notarizationは未実施。プレイヤーのstaging接続・実配信は未実行。
生成物(Git管理外、既存の配布物は保持):
- Godot:
GodotGames/TaeruCraneGame/builds/release-20260906-final/。ソースSHA-256=5c24dbc1f179cd14bf1a2f45ee19722e3892f5fed1e9d2c660b57333ec978efd。両OSの個別ファイルhashはmanifest.json。 - Unity:
Builds/TAERU-20260906-final/iMATE Engine.app(実行ファイルはContents/MacOS/AituberVer2)。入力ソースhash・ファイル数は同階層のunity-source-manifest.json、結果はunity-build.log。 - Unity検証:
/tmp/taeru-implementation-final-unity.xml(78 passed / 0 failed / 0 skipped)。
実Godot結合テストは描画・音声ドライバーが必要。Unityテスト起動時に TAERU_TEST_GODOT_BIN をGodot executableへ設定すると LocalGameFrameStreamClientTest.RealGodotIpc_ConfirmsOperatorAndReceivesPictureAndNonzeroPcm が有効になる。未設定の一般CIではこの1件はskipされる。Godot専用CIはロジック・3D・両OS exportとランチャーテストを行うが、CIの初回実行自体は未確認。
残る配布・本番確認
| 項目 | 現状 / 合格条件 |
|---|---|
| Unity配布ビルド | Mac版はソース隔離コピーで成功。元の.venvは削除/移動せずguardも維持。Macカメラ/マイクusage description欠落は修正済み。Windows用Build Supportがこの2022.3.15f1環境にないためUnity Windows版のビルドは未実施。 |
| stagingへの反映 | 未デプロイ。Functions/Admin/Unity/Godotを組み合わせ、無効拡張拒否・手動カメラ/投下・negative ACK・接続切断を確認する。 |
| YouTube 60分リハーサル | 未実施。所有者認証、公式横/奥/最終poll、0票/同率/失敗時のコメントfallback、緊急バイト給料の一回反映、終了までを限定公開で確認する。 |
| 音声/映像・長時間 | 非ゼロPCMがUnity receiverまで届くことは検証済みだが、最終YouTube再生のA/V同期・TTS/BGM/SFX音量・クリップ・2時間のフリーズ/メモリ増加は未実測。native unity_mix を使い、OS音声との二重収録をしない。 |
| 異常時復旧 | 停止・再接続の単体テストあり。実プレイヤー/実配信でGodot終了・再起動、回線断、GPU停止、二重起動、古い配布物を確認する。結果未確認の操作を機械的に再送しない。 |
途中再開・予約・chain配信は引き続き非対応。復旧はゲームreset後にcanonical台本を先頭から手動開始する。
検証記録の残し方
各実配信確認ではmanifestのsource SHA-256、Unity版/ビルド、OS/GPU、開始/終了時刻、限定公開動画ID、stagingのcommandIdとterminal状態、音声/映像の測定結果、再接続時の挙動を保存する。公開キー/共有secret/トークンは記録しない。上表を全て満たしてから本番利用可否を判定する。