操作
機能 #416
完了機能 #396: ゲーム内常駐ペット育成機能の追加
選曲画面からの自然文曲検索UI (#404 follow-up)
機能 #416:
選曲画面からの自然文曲検索UI (#404 follow-up)
説明
背景 / 目的¶
#404(自然文による曲検索)のフォローアップ。#404 では検索ロジック+API層(NaturalLanguageSongSearch / SongSearchService)までを実装済みで、UIは対象外だった。本チケットで選曲画面から自然文で検索し、結果を参照できるUIを実装する。
作業内容¶
- 選曲画面で自然文クエリを入力するインターフェース(入力欄・呼び出し動屜)
-
NaturalLanguageSongSearch.search(String)の結果(SongData[])を検索結果フォルダ等として選曲リストに表示 - 検索中・該当なし時の状態表示(スピナー / 「該当なし」表示等)
- corpus 取得と
ScoreDatabaseAccessorへの配線(選曲画面の既存コンテキストからSupplier<SongData[]>を供給) - LLMロード/推論はバックグラウンドで実行し、UIスレッド・ゲームプレイをブロックしない
完了条件 (DoD)¶
- 選曲画面から自然文で検索し、結果から選曲・プレイに進める
- 該当なし・検索失敗時もUIが破綻せず例外が生じない
- UIの振る舞い・状態遷移に対するテストがあり、すべて通る
補足¶
UI設計・UIコードは Gemini / AGY に委譲、視覚ポリッシュは frontend-design スキルで仕上げる方針。推論のスレッドモデル化は #415 と調整。
エージェント ちゃん さんが11日前に更新
- 期日 を 2026/06/24 にセット
- 開始日 を 2026/06/25 から 2026/06/24 に変更
- 次のチケットに後続 機能 #404: 自然文による曲検索 を追加
エージェント ちゃん さんが11日前に更新
- ステータス を 未着手 から 実装中 に変更
- 進捗率 を 0 から 10 に変更
実装に着手しました。
- ブランチ:
feature/416 - 対応方針: 既存の選曲画面検索欄にトグルキーでAI(自然文)モードを追加し、
NaturalLanguageSongSearch.searchAsyncをバックグラウンド実行。結果をUIスレッドに戻して検索結果フォルダ(新NaturalLanguageSearchBar)として表示。検索中/該当なし/失敗の状態遷移は UI 非依存のNaturalLanguageSearchController(状態機械)に集約してテスト可能にする。
エージェント ちゃん さんが11日前に更新
- ステータス を 実装中 から 完了 に変更
- 進捗率 を 10 から 100 に変更
対応が完了しました。
概要¶
#404 で実装済みの自然文曲検索ロジック(NaturalLanguageSongSearch)を選曲画面のUIに接続。既存の検索欄をTabキーでAI(自然文)モードに切り替え、検索結果を選曲フォルダとして表示・プレイできるようにした。
変更点¶
- 検索欄にTabキーでの通常テキスト検索 ⇔ AI(自然文)検索の切替を追加。AIモードのEnterで
searchAsyncをバックグラウンド実行。 - 検索結果を新フォルダ
NaturalLanguageSearchBar(DirectoryBar)として表示。BarManagerの検索履歴をArray<DirectoryBar>に一般化。 - 状態遷移(IDLE/SEARCHING/COMPLETED/NO_RESULT/ERROR)をUI非依存の
NaturalLanguageSearchController(状態機械・stale完了破棄付き)に集約し、結果はUIスレッドへマーシャリング。検索中/該当なし/失敗はステータス文言で表示。 -
createDefault(ネイティブモデルロードで重い)はGLスレッド外で遅延構築、dispose時にclose()。PlayDataAccessor.getScoreDatabaseAccessor()を追加しplay履歴スコアリングへ配線。 -
BarRendererのバー種別マッピングにNaturalLanguageSearchBarを追加(未対応だとvalue=-1でバーが透明になる不具合を修正)。literal検索の既存挙動は不変。 - 変更ファイル:
select/NaturalLanguageSearchController.java(新),select/bar/NaturalLanguageSearchBar.java(新),select/BarManager.java,select/MusicSelector.java,select/SearchTextField.java,select/BarRenderer.java,PlayDataAccessor.java, およびテスト2件
テスト¶
-
.\gradlew.bat test: 成功(全スイート BUILD SUCCESSFUL)。新規ユニットテスト2本(計9ケース)追加し成功。
関連 MR¶
- !99 (feature/416 → develop)
操作