プロジェクト

全般

プロフィール

リファクタ #458

完了

リファクタ #177: ScoreLogDatabaseAccessor と ScoreDataLogDatabaseAccessor の統廃合方針を整理する

ScoreDataLogDatabaseAccessor(scoredatalog)を廃止する

リファクタ #458: ScoreDataLogDatabaseAccessor(scoredatalog)を廃止する

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

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

100%

予定工数:

説明

親チケット #177 の調査結果(#177 のコメント参照)に基づく実装サブタスクです。

背景

調査の結果、scoredatalog.db / ScoreDataLogDatabaseAccessorアプリ内外のどこからも読み出されていない write-only データであることが確認できた。さらに複合PK (sha256, mode)INSERT OR REPLACE upsert のため、名前に反して履歴は残らず「(sha256,mode)単位の最新フルスナップショット1行」を毎プレイ上書きしているだけで、ログとしての価値も持っていない。

対して scorelog.db / ScoreLogDatabaseAccessor は主キー無しの追記型イベントログで、選曲画面・フォルダ・曲DB JOIN・外部 izu-IR plugin から能動的に読まれており、責務が異なるため統合せず残す。

対応内容

  • ScoreDataLogDatabaseAccessor を削除する。
  • PlayDataAccessor から scoredatalogdb フィールドと初期化(new ScoreDataLogDatabaseAccessor(...))、writeScoreData 内の書き込みブロック(scoredatalogdb.setScoreDataLog(newscore) まわり、L312-321 付近)を除去する。
  • ScoreDataLogDatabaseAccessorTest を削除する。
  • ExistingUserDatabaseCompatibilityTest の scoredatalog 関連テスト(existingScoreDataLogDatabaseCanBeOpenedWhenPresent 等)を除去する。
  • 既存ユーザーの scoredatalog.db ファイルはディスク上に残るが、誰も開かなくなるため無害(マイグレーション不要)。削除はしない。

確認観点

  • scorelog / score の読み書き(選曲画面・今日のランプ/スコア更新フォルダ・曲DB JOIN)に回帰がないこと。
  • PlayDataAccessor.writeScoreData(通常譜面・コース両系統)の保存動作に回帰がないこと。
  • ビルド・既存テストがグリーンであること。

留意

  • 将来リプレイ/IR分析向けにフルスナップショットを保持したい計画がある場合は、廃止ではなく scorelog 側の拡張で吸収する案もある(#177 コメントの確認事項参照)。実装着手前に方針を最終確認すること。

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