プロジェクト

全般

プロフィール

リファクタ #211

完了

ロボライバル機能を本体から削除し izu-IR 側に移管する

リファクタ #211: ロボライバル機能を本体から削除し izu-IR 側に移管する

エージェント ちゃん さんが22日前に追加. 21日前に更新.

ステータス:
完了
優先度:
通常
担当者:
対象バージョン:
開始日:
2026/06/16
期日:
2026/06/16
進捗率:

100%

予定工数:

説明

refs #195

#187 の方針「ロボライバル機能を IR 側に」に従い、beatoraja 本体のローカルロボライバル実装を整理・削除する。izu-IR サーバー(izu-ir #194)がロボライバルを提供し、plugin(#195)の getRivals がサーバーから取得するため、本体内蔵の RoboRival は置き換え可能。

背景

  • 現状 beatoraja にはローカルの偽 IR としてのロボライバル機能がある(RoboRivalIRConnection など)。
  • izu-IR 移管後はサーバーがロボライバルスコアを返すため、本体側の重複実装は不要になる見込み。

影響範囲(要整理)

grep -ri RoboRival src で本体 18 ファイル + テスト 4 ファイルに分布。主な箸所:

  • IR: ir/RoboRivalIRConnection.java, ir/RankingData.java
  • ランチャー UI: launcher/RoboRivalConfigurationView.java / .fxml, launcher/PlayConfigurationView.java / .fxml
  • 設定/永続化: RoboRivalConfig.java, PlayerConfig.java, PlayerConfigPersistenceDto.java, PlayerConfigValidator.java, RivalDataAccessor.java
  • プレイ/ターゲット: play/RoboRivalRotationTargetProperty.java, play/TargetProperty.java, play/BMSPlayer.java, MainController.java
  • リザルト: result/MusicResult.java, result/CourseResult.java
  • テスト: RoboRivalTest.java, play/RoboRivalRotationTargetPropertyTest.java, launcher/LauncherFxmlLoadSmokeTest.java, PlayerConfigFileCompatibilityTest.java

やること(要仕様決定)

  • 本体のロボライバル UI・設定・コネクション(RoboRivalIRConnection 他)を削除するか、izu-IR 経由に一本化するかを決定。
  • **ターゲット表示(RIVAL/ロボライバルをプレイ中ターゲットにする機能)**を残すかを要決定。残す場合は IR から取得したライバルスコアをターゲット源にする形へ組み替えが必要。
  • PlayerConfig 永続化の互換性PlayerConfigPersistenceDto / PlayerConfigFileCompatibilityTest)に注意し、既存設定ファイルを壊さない移行を検討。
  • 関連テストの削除/更新。

注意

  • 影響範囲が広く(プレイ/リザルト/設定永続化)大きなリファクタ。着手時にサブタスク分解推奨。
  • 本体での RoboRival 削除は IR 有効化(#210)・ izu-IR ロボライバル取得の動作確認後に行うのが安全。

関連

  • #187(仕様ブレスト: ロボライバルを IR 側に)
  • #210(IR 有効化)
  • izu-ir #194(server の ranking/rival/robo-rival API)ーizu-ir #195(plugin getRivals)

関連するチケット 1 (0件未完了1件完了)

次のチケットに後続 beatoraja - 機能 #210: IR機能を有効化する(IRConnectionManager.isIRAvailable を true に)完了いづ さん2026/06/15

操作

エージェント ちゃん さんが22日前に更新 操作 #1

  • 期日2026/06/16 にセット
  • 開始日2026/06/15 から 2026/06/16 に変更
  • 次のチケットに後続 機能 #210: IR機能を有効化する(IRConnectionManager.isIRAvailable を true に) を追加

いづ さん さんが22日前に更新 操作 #3

  • 対象バージョン1.1.0 にセット

エージェント ちゃん さんが21日前に更新 操作 #4

  • ステータス未着手 から 実装中 に変更
  • 進捗率0 から 10 に変更

実装に着手しました。

  • ブランチ: feature/211
  • 対応方針: ローカル疑似IR「ロボライバル」一式(RoboRivalIRConnectionRoboRivalConfig・設定UI・永続化・各クラスの特例分岐)を削除し izu-IR に一本化する。プレイ中ターゲット ROBO_RIVAL_ROTATIONRivalDataAccessor(IR取得ライバルスコア)を源とするため存続させ izu-IR ライバルへ転用する。PlayerConfig 永続化は ignoreUnknownFields により旧 config 互換を維持。

エージェント ちゃん さんが21日前に更新 操作 #5

  • ステータス実装中 から 完了 に変更
  • 進捗率10 から 100 に変更

対応が完了しました。

概要

ロボライバル機能を izu-IR サーバー側へ移管する方針(#187 確定 / #210 で IR 有効化済)に従い、beatoraja 本体のローカル疑似IR「ロボライバル」実装一式を削除し izu-IR に一本化した。

削除したもの(ローカル疑似IR一式)

  • ir/RoboRivalIRConnection.java(ネットワークなしの疑似IR)、RoboRivalConfig.java
  • ランチャー「Robo Rival」設定タブ:launcher/RoboRivalConfigurationView.java/.fxml + PlayConfigurationView.fxml/.java のタブ・配線
  • PlayerConfig.roboRival フィールド・getter/setter、PlayerConfigPersistenceDto の永続化、PlayerConfigValidator.validateRoboRival
  • RoboRival 特例分岐: MainController(IRStatus 組み立て)、RivalDataAccessorinstanceof RoboRivalIRConnection)、ir/RankingData(robo-self ローカルスコアマージ)、result/MusicResultresult/CourseResult(送信抑止・ランキング取得・getResultRankingIR 簡略化)

維持したもの(izu-IR ライバルへ転用)

  • プレイ中ターゲット ROBO_RIVAL_ROTATIONplay/RoboRivalRotationTargetProperty / play/BMSPlayer のローテーション処理)。RivalDataAccessor(IR取得ライバル)を源とするため izu-IR ライバルにそのまま機能する。

互換性

PlayerConfigPersistenceDto.readignoreUnknownFields=true により、旧 config.json の roboRival ブロックは無視され安全にロードされる(前方互換)。回帰テストを追加。

テスト

  • xvfb-run -a ./gradlew test : 成功(FXML を実ロードする LauncherFxmlLoadSmokeTest を含む全テスト green)
  • テスト変更: RoboRivalTest.java 削除、LauncherFxmlLoadSmokeTest から robo 専用ケース/ヘルパー除去+tab非存在アサーション追加、PlayerConfigFileCompatibilityTest に旧 roboRival ブロックの前方互換回帰テストを追加。RoboRivalRotationTargetPropertyTest は変更なし。
  • 変更ファイル: 計 17 件

関連 MR

  • !46 (feature/211 → develop)

他の形式にエクスポート: PDF Atom