この記事の続き。
今回は、前回のようにカメラや外部のAPIを使うこともなかったので、比較的スムーズにできた。それでもエラーログを投げてはコードを書き直してもらう、の繰り返しは数回あったのだが。
Q1)無事に動作しました。では、このアプリについての詳細な仕様書を作成してください。また、Androis Studioでのファイル構成とその役割の概要についても解説してください。
アプリの動作確認、おめでとうございます! エラーを乗り越えて、ご自身のアイデアが形になって動く瞬間は格別ですよね。
ご依頼いただいた「アプリ詳細仕様書」と、今回触った「Android Studioのファイル構成と役割」についてまとめました。今後の開発や振り返りにご活用ください。
📱 アプリ仕様書:Music Digger
1. アプリ概要
アプリ名: Music Digger(仮)
目的: Amazon Music等の音楽ストリーミングサービスで聴いている楽曲について、「YouTube動画」「公式サイト」「信頼できるメディアのレビュー」をワンタップで深掘り(Dig)するためのランチャーアプリ。2. ユーザーフロー
- 共有: ユーザーがAmazon Musicアプリで楽曲の「共有」ボタンを押す。
- 起動: 共有先リストから「Music Digger」を選択する。
- 解析: アプリが起動し、共有されたテキストから「アーティスト名」と「曲名」を自動抽出して画面に表示する。
- 修正: 必要に応じて、ユーザーがアーティスト名や曲名を手動で修正する。
- 検索: 目的のボタン(YouTube / 公式サイト / レビュー)をタップし、外部ブラウザやアプリで情報を閲覧する。
3. 機能要件
A. データ受信機能
- インテントフィルタ: Androidの共有機能(
ACTION_SEND)に対応し、テキストデータ(text/plain)を受け取る。- 起動時処理: アプリ起動時に共有テキストが存在する場合、自動的に解析ロジックを実行する。
B. テキスト解析ロジック
- 対象フォーマット:
Amazon Music内で[アーティスト名]の[曲名]を見る- 処理内容:
- 正規表現を用いて「アーティスト名」と「曲名」を分離・抽出する。
- URLや不要な空白を除去する。
- フォーマットが一致しない場合、テキスト全体を「曲名」として扱い、アーティスト名は空欄とする(フォールバック処理)。
C. 検索アクション機能
以下の3つのボタンを提供し、それぞれ異なるクエリでWeb検索を行う。
ボタン名 検索対象 生成される検索クエリ (URLエンコード済) YouTubeで聴く YouTube [アーティスト名] [曲名]公式サイトを探す [アーティスト名] official site厳選レビューを読む [アーティスト名] [曲名] (site:pitchfork.com OR site:nme.com ...)※レビュー検索対象サイト: Pitchfork, NME, RollingStone, Rate Your Music, Mikiki, amass, ナタリー, CINRA.NET, Real Sound, Wikipedia
4. 技術スタック
- OS: Android (Min SDK: 24, Target SDK: 35)
- 言語: Kotlin
- UIフレームワーク: Jetpack Compose (Material3)
- アーキテクチャ: Single Activity (MainActivityのみで構成)
📂 Android Studio プロジェクト構成と役割
今回、私たちが手を加えたファイルを中心に、Androidアプリがどのような構造で動いているかを解説します。
MusicDigger/ ├── app/ │ ├── manifests/ │ │ └── AndroidManifest.xml <-- [1] アプリの名札・設定図 │ ├── java/ │ │ └── com.example.musicdigger/ │ │ └── MainActivity.kt <-- [2] アプリの本体(脳みそと顔) │ ├── res/ <-- [3] 画像や文字などの素材 │ └── build.gradle.kts <-- [4] 設計図・組み立て指示書 └── gradle/ ...[1]
AndroidManifest.xml(マニフェストファイル)役割: アプリの「身分証明書」兼「基本設定図」 Androidシステムに対して、「このアプリはこういう名前で、こういう権限が必要で、こういう機能を持っています」と宣言する場所です。
- 今回のポイント:
<intent-filter>というタグを追加しました。これにより、スマホ本体が「おっ、このアプリはテキストの共有を受け取れるんだな」と認識し、Amazon Musicの共有メニューに表示してくれるようになります。[2]
MainActivity.kt(メインアクティビティ)役割: アプリの「プログラム本体」 画面の表示(UI)と、裏側の処理(ロジック)が書かれています。
- 今回のポイント:
- UI (Jetpack Compose):
MusicDiggerApp関数の中に、「入力欄を縦に並べる」「ボタンを置く」といった画面のデザイン指示が書かれています。- ロジック:
parseAmazonMusicText関数などで、受け取ったテキストを分解したり、ボタンが押されたときにブラウザを開く命令を出したりしています。[3]
resフォルダ (リソース)役割: 「素材置き場」 プログラムコード以外のデータ(アプリアイコン、画面に表示する固定の文字、色設定など)が入っています。今回は直接編集しませんでしたが、アプリアイコンを変更する場合などはここを触ります。
[4]
build.gradle.kts (Module: app)役割: アプリの「組み立て指示書」 ビルドツール(Gradle)に対して、どうやってアプリをコンパイルするかを指示するファイルです。
- 今回のポイント:
今後のステップ(提案)
アプリは完成しましたが、さらにブラッシュアップするなら以下のようなことができます。
- アプリアイコンの変更: デフォルトのドロイド君アイコンから、オリジナルの「Digger」っぽいアイコンに変える。
- 解析精度の向上: Amazon Music以外のアプリ(SpotifyやApple Music)の共有テキストにも対応させる。
- 履歴機能: 過去に検索した曲のリストを保存しておく。
もし「ここを直したい」「アイコンを変えてみたい」などの要望があれば、いつでも相談に乗ります。 まずは、ご自身のスマホでバリバリ使ってみてください!







Q2)他に追加を検討している機能はこんな感じでしょうか。
・検索した履歴(日時情報も)を残す
・AmazonMusicのほか、Spotifyにも対応
・レビューの概要をまとめたものをテキストとして保存(AIが必要か)
これらを実装する上での注意点、Android Studioでどのファイルをどう修正するか、などについて解説してください。
※コードはまだ生成しないでください。
また、他に何か面白そうな機能があれば提案してください。
素晴らしい着眼点です! これら3つの機能は、アプリを「単なるランチャー」から「個人の音楽ライブラリ・データベース」へと進化させる重要なステップです。
それぞれの機能を実装する上での技術的なポイント、必要なファイル変更、注意点を解説します。
1. 検索履歴(日時情報)を残す
検索した曲をリストとして保存し、後から見返せるようにする機能です。
- 技術的な仕組み:
- 修正・追加するファイル:
build.gradle.kts: Roomを使うためのライブラリを追加。HistoryEntity.kt(新規): データの設計図(表の定義)。HistoryDao.kt(新規): データの保存・削除・読み出しを行う命令セット。AppDatabase.kt(新規): データベース本体の設定。MainActivity.kt: 画面下部に「履歴リスト」を表示するUIを追加し、検索ボタンを押したタイミングで保存する処理を追加。- 注意点:
- データが増えすぎないように「最新100件のみ保存」などの制限を入れるか検討が必要です。
- アプリをアンインストールするとデータは消えます。
2. Spotifyにも対応
Amazon Musicだけでなく、Spotifyの共有テキストも解析できるようにします。
- 技術的な仕組み:
- 修正・追加するファイル:
- 注意点:
- Spotifyは設定やバージョンによって共有テキストの形式が微妙に変わることがあるため、柔軟な(少し緩めの)解析ロジックにする必要があります。
3. レビュー要約の保存(AI活用)
ここが一番チャレンジングで面白い部分です。
- 技術的な仕組み:
- 修正・追加するファイル:
- 注意点:
- APIキーの発行と管理が必要です(無料枠で十分遊べます)。
- AIはたまに嘘をつく(ハルシネーション)可能性があることを考慮する必要があります。
💡 他に面白そうな機能の提案
さらに「Digる」体験を深めるために、こんな機能はいかがでしょうか?
A. 「自分メモ」機能(Dig Log)
- 履歴機能の拡張です。
- 検索した曲に対して、AIの要約だけでなく、「自分がどう感じたか(★評価や一言メモ)」を記録できるようにします。
- これで、単なる履歴ではなく「自分だけの音楽レビュー帳」になります。
B. 歌詞検索へのショートカット
- YouTubeやレビューだけでなく、Genius や 歌ネット などの歌詞サイトを検索するボタンを追加します。
- 「歌詞の意味を知りたい」というニーズに対応します。
C. クリップボード監視(自動検知)
- 共有メニューから飛ばなくても、Amazon Musicで「リンクをコピー」した状態でこのアプリを開くと、自動的にクリップボードの中身を読み取って解析してくれる機能。
- 共有メニューが使いにくい場合に便利です。
今後の進め方
一気に全部やると大変なので、以下の順序で実装していくのがおすすめです。
- Spotify対応(ロジックの修正だけで済むので簡単・すぐに効果が出る)
- 履歴機能の実装(データベースの基礎を作る)
- AI要約 or 自分メモ機能(履歴機能の上に積み上げる)
まずは 「1. Spotify対応」 から着手してみませんか? よろしければ、Spotifyの共有テキストのサンプル(もしあれば)を教えていただくか、一般的な形式でコードを作成します。
とりあえず、しばらく使ってみてから考えよう。