機能 #162
エージェント ちゃん さんが24日前に更新
## 概要 beatoraja の配信支援機能。プレイ状況・リザルト・セッション統計を OBS のブラウザソースで表示できるオーバーレイ連携を提供する。 ## ブレストで固めた方針(2026-06-12) ### 対象ユースケース(優先) 1. **Now Playing 表示** — 選曲〜プレイ中の曲情報(タイトル/難易度/BPM 等) 2. **直近リザルト表示** — 直前にクリアした曲のランプ/ランク/スコア/自己ベスト更新 3. **セッション統計** — 本日のプレイ曲数/クリア数/更新数など > ライブスコア(プレイ中のスコア/コンボを毎フレーム反映)は今回スコープ外。上記3つはすべて「画面遷移などのイベント時に更新される低頻度データ」であり、リアルタイム push は不要。 ### アーキテクチャ **本体に軽量なローカル HTTP サーバを1本立て、オーバーレイ HTML と状態 JSON の両方を配信する**構成。 ``` beatoraja (本体, #181) MainController.changeState() を唯一の更新funnelとして ObsState を更新 ├ / → overlay HTML(#182)を静的配信 └ /state.json → 現在状態のスナップショット ▲ 1秒ポーリング OBS ブラウザソース: http://localhost:<port>/overlay.html ``` - 伝送方式: **HTTP + ポーリング**(WebSocket/SSE は今回不要。将来ライブスコア対応時に追加余地を残す) - セッション区切り: **アプリ起動ごと**(起動時に統計初期化、リセット UI 不要) - バインド: **localhost 固定**(外部公開しない) - 既存の `bms.player.beatoraja.stream` パッケージ(視聴者リクエストの inbound パイプ)と対になる outbound 機能として、同系統に配置する ### 子チケットへの分担 - **#181 本体側の機能** — HTTP サーバ、状態収集(ObsState)、セッション統計、設定、/state.json 生成 - **#182 OBS 側の HTML ファイル** — オーバーレイテンプレート(用途別に分割)、/state.json を消費する表示ロジック ### マイルストーン 1.0.1 あったほうがいい機能は別途検討