プロジェクト

全般

プロフィール

リファクタ #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 コメントの確認事項参照)。実装着手前に方針を最終確認すること。

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

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

実装に着手しました。

  • ブランチ: feature/458
  • 対応方針: 誰からも読まれない write-only な scoredatalogScoreDataLogDatabaseAccessor)を廃止し、PlayDataAccessor の初期化・書き込みブロックと関連テストを除去する。既存の scoredatalog.db ファイルはディスク上に放置(無害・マイグレーション不要)。

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

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

対応が完了しました。

概要

誰からも読まれない write-only な scoredatalogScoreDataLogDatabaseAccessor)を全廃。複合PK (sha256, mode)INSERT OR REPLACE で毎プレイ上書きされ履歴も残らずログとしての価値がなかったため削除。追記型で能動的に読まれる scorelog は責務が異なるため残置。

変更点

  • ScoreDataLogDatabaseAccessor.java とそのテスト ScoreDataLogDatabaseAccessorTest.java を削除。
  • PlayDataAccessor から scoredatalogdb フィールド・初期化・writeScoreData 内の書き込みブロックを除去。ブロック内の newscore.setXXX(...) は後段 updatePlayerData が参照しない(judgeカウントと getClear() のみ参照)ため、除去しても保存挙動は不変。
  • ExistingUserDatabaseCompatibilityTest から scoredatalog 関連テストと、未使用化する countRows ヘルパーを除去。
  • scorelog / score 系アクセサは無変更。変更ファイル: 4 件(2 削除・2 修正)。

テスト

  • .\gradlew.bat test : 成功(BUILD SUCCESSFUL・全テストグリーン)

関連 MR

  • !132 (feature/458develop) マージ済

記載

  • 既存ユーザーの scoredatalog.db ファイルはディスク上に残るが、誰も開かなくなるため無害(マイグレーション不要・削除しない)。

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