プロジェクト

全般

プロフィール

機能 #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 あったほうがいい機能は別途検討

戻る