プロジェクト

全般

プロフィール

機能 #416

完了

機能 #396: ゲーム内常駐ペット育成機能の追加

選曲画面からの自然文曲検索UI (#404 follow-up)

機能 #416: 選曲画面からの自然文曲検索UI (#404 follow-up)

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

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

100%

予定工数:

説明

背景 / 目的

#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 と調整。


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

次のチケットに後続 beatoraja - 機能 #404: 自然文による曲検索完了いづ さん2026/06/23

操作

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

  • 期日2026/06/24 にセット
  • 開始日2026/06/25 から 2026/06/24 に変更
  • 次のチケットに後続 機能 #404: 自然文による曲検索 を追加

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

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

実装に着手しました。

  • ブランチ: feature/416
  • 対応方針: 既存の選曲画面検索欄にトグルキーでAI(自然文)モードを追加し、NaturalLanguageSongSearch.searchAsync をバックグラウンド実行。結果をUIスレッドに戻して検索結果フォルダ(新 NaturalLanguageSearchBar)として表示。検索中/該当なし/失敗の状態遷移は UI 非依存の NaturalLanguageSearchController(状態機械)に集約してテスト可能にする。

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

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

対応が完了しました。

概要

#404 で実装済みの自然文曲検索ロジック(NaturalLanguageSongSearch)を選曲画面のUIに接続。既存の検索欄をTabキーでAI(自然文)モードに切り替え、検索結果を選曲フォルダとして表示・プレイできるようにした。

変更点

  • 検索欄にTabキーでの通常テキスト検索 ⇔ AI(自然文)検索の切替を追加。AIモードのEnterで searchAsync をバックグラウンド実行。
  • 検索結果を新フォルダ NaturalLanguageSearchBarDirectoryBar)として表示。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)

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