Apple Music・Spotify・Discogs の3つに問い合わせる ― 名前・ジャンル・ジャケットの照会と、問い合わせ制限への対応
自作の MP3 タグ整理アプリ「Tag FloW」(作った話)は、最初は自分で調べて作った辞書だけで動いていました。辞書に無い曲には手が付かないので、11月に Apple Music・Spotify・Discogs の3つに問い合わせる機能を足しました。使うのは3か所です。
- 名前の照会(STEP 03):日本語のまま残った曲名・アーティスト名・アルバム名の、正式な表記を調べる
- ジャンルの照会(STEP 05):アルバムのジャンル・スタイルを調べる(ジャンルの記事)
- ジャケットの照会(STEP 06):MP3 に入っているジャケット画像と比べる画像を探す
1. 3つのサービスの違い
| Apple Music | Spotify | Discogs | |
|---|---|---|---|
| 使うために必要なもの | 不要 | 開発者登録(クライアント ID と シークレット) | アカウントと個人用のトークン |
| 問い合わせの間隔(アプリの設定) | 約3秒に1回 | 0.2秒に1回 | 約1秒に1回 |
| 名前 | 日本と米国のストアを引き比べ、原題を得られる | 日本語名と英語名の両方が見つかることがある | 英語の表記が中心。日本盤は「邦題 = 原題」と併記されることがある |
| ジャンル | 大まかなジャンルだけ | アルバムには無い(アーティストのジャンルは今回は空だった) | ジャンル > スタイルまで |
| ジャケット | 公式の画像、1000px | 公式の画像、最大 640px | 利用者が登録した画像。大きさはまちまち(今回は 600px 前後) |
間隔はアプリで決めた値です。Apple Music の検索は1分に20回程度が目安とされているため、余裕を見て約3秒にしています。Discogs はトークンを付けると1分に60回までです。
2. 名前の照会:2か所以上で一致したら採用
- 洋楽:日本でつけた邦題は正式名と認めず、元の題名を採用します(例:「素顔のままで」は
Just The Way You Are) - 邦楽:本人や盤の正式な表記のままにします。カタカナが正式ならカタカナ、英字が正式なら英字です(例:「いとしのエリー」はそのまま)
- 判定:2か所以上で同じ表記が見つかれば採用(緑)、1か所だけ・食い違いは要確認(橙)、見つからなければそのまま(赤)。緑以外は Excel の「確認リスト」のシートにまとめます

3. 「2/71 で止まった」問い合わせ制限
試験中、名前の照会が「2/71」のまま進まなくなりました。調べると、止まっていたのではなく、サービスから「問い合わせが多すぎる」と断られ、待っては再試行するのを繰り返していました。直前に別の処理で Apple Music に8分ほど続けて問い合わせていたのが原因とみられます。断られると30秒〜2分待ち、1回の問い合わせにつき最大5回やり直す作りだったので、1件に数分かかっていました。
そこで、次のように直しました。3か所(名前・ジャンル・ジャケット)とも同じ仕組みです。
- サービスを選べる:チェックボックスで選び、選んだ組み合わせは次回も使う。Apple Music を外せば、待ち時間が大きく減る
- 待っていることを見せる:画面の下に「アルバムを照会中 5/71:… / Apple Music の問い合わせ制限のため待機中 1/3回目(あと25秒)」のように出す
- すぐ止められる:待っている間もキャンセルが効く。止めても、照会が済んだ分は保存され、次は続きから
- やり直しは3回まで
- 結果を使い回す:今より多いサービスで照会した結果があれば、それを使う。3つで照会したあと Apple Music を外しても、済んだ分は問い合わせ直さない
4. ジャケットの照会:候補を切り替えて選ぶ
ジャケットは、選んだサービスを Apple Music → Spotify → Discogs の順に探し、最初に見つかった画像と MP3 の画像を比べます。比べ方は、どちらも 8×8 に縮めて明暗の並びを見るもので、解像度の違いくらいでは知らせません。見つかったほかの画像も「候補」として並べ、クリックで切り替えられます。1000px より小さい画像は黄色で示し、使うかどうかは手で選びます。

5. キーはアプリの外に置く
Spotify と Discogs のキーは、アプリにもプログラムにも書きません。キーを書いたテキストファイルを Mac の決まった場所に置き、その場所を設定画面で選ぶ形にしました。ファイルを指定しなければ、キーのいらない Apple Music だけで動きます。
