iPhone/iPod Touch アプリのアイコンを手に入れるには

はてなブックマークで、話題になっている iPhone/iPod Touch アプリが見られるようになった。

で、アプリのアイコンも表示されてるんだけど、これはどういう仕組みなのか。

画像はどこにある?

例として、僕が気に入っているパズルゲーム「ルミネス - Touch Fusion」を見てみる。

ソースを見てみると、アイコン画像の URL は

となっている。このアドレスをブラウザで直接開くと、


http://a1.phobos.apple.com/us/r1000/004/Purple/67/5a/78/mzl.jqnlsivg.100x100-75.jpg http://a1.phobos.apple.com/us/r1000/004/Purple/67/5a/78/mzl.jqnlsivg.75x75-65.jpg

と表示される。Apple のサーバにあることから、何らかの仕組みを Apple 側が用意していて、はてなはそれを利用していることがわかる。まぁ、ふつーに考えたら Web ベースの API だろうな、という予測もつく。

API はどこで使える?

Apple のサーバに画像があるとして、例えば自分が blog で紹介したいアプリの画像はどうやって探せばいいのか。とりあえず、画像の URL に含まれる phobos.apple.com というドメイン名でググってみた。で、見つかったのがこちらの PDF。

iTunes Store Web Service Search API
http://www.apple.com/itunesaffiliates/API/AffiliatesSearch2.1.pdf

なんかあちこちに "Apple Confidential" って書いてあるんだけど、普通に検索して見つかるんだから公開情報だよね。現代にはプライバシーなんてないって Google のエラい人も言ってたし。

で、この PDF には、iTunes Store の情報を検索するための REST API の説明が書いてあって、例えば日本の iTunes Store を "lumines" で検索するには、次のような URL を叩けばいいらしい。結果は JSON で返されて、その中に詳細な情報が含まれるという。

が、実際に上のリンクをブラウザで踏んでもらえばわかる通り、なんか関係ない楽曲がずらずら出てくるばかりで、肝心の名作パズルゲーム「ルミネス - Touch Fusion」がヒットしない。

上では英語表記で "lumines" ってしてるけど、念のためカタカナで「ルミネス」としてもダメだ。検索結果は少し変わるものの、何時間でも遊べちゃうパズルゲーム「ルミネス - Touch Fusion」はやはりヒットしない。

アプリだけ探すには?

上の PDF をよく見てみると、検索対象の種類 (楽曲とか Podcast とか) を絞れるよ、と書いてあるんだけど、そこにはアプリについて一言も触れられていない。この資料が作られたのは 2007 年となっているので、そもそも App Store が始まる前。きっとどこか別の場所に最新版があって、そっちを見ればアプリの検索もできるんだろう。

そこで、上記の API で叩く URL から適当に切り取って "MZStoreServices.woa/wa/wsSearch" で検索してみた。見つかったのがこちらのページ。

How do I use the search API for iTunes - IPhone Dev FAQ
http://www.iphonedevfaq.com/index.php?title=How_do_I_use_the_search_API_for_iTunes

このページとさきほどの PDF を見ると、どうやら「アプリだけ探すにはパラメータ entity に software を指定すればいいらしい」ということがわかった。

ワーオ! いまこれを書いている時点だと、大人気のパズルゲーム「ルミネス - Touch Fusion」とその体験版「ルミネス - Touch Fusion Lite」の 2 つがちゃんとヒットした。JSON の冒頭を数行だけ紹介すると (見やすいように改行を入れてます)、

{
 "resultCount":2,
 "results": [
{"wrapperType":"software",
 "trackName":"ルミネス - Touch Fusion",
 "trackCensoredName":"LUMINES™ - Touch Fusion",
 "artworkUrl60":"http://a1.phobos.apple.com/us/r1000/013/Purple/c2/c5/f8/mzl.mkgyrehe.png",
 "artworkUrl100":"http://a1.phobos.apple.com/us/r1000/004/Purple/67/5a/78/mzl.jqnlsivg.jpg",

このうち、artworkUrl60 と artworkUrl100 が画像ですね。artworkUrl60 は小サイズの画像で、こんな感じ。


http://a1.phobos.apple.com/us/r1000/013/Purple/c2/c5/f8/mzl.mkgyrehe.png
artworkUrl100 の方はちょっとドデカイので、見たい方は http://a1.phobos.apple.com/us/r1000/004/Purple/67/5a/78/mzl.jqnlsivg.jpg を開いてください。

よく見ると、どっちもはてなブックマークで使われているのとはサイズが違う。そこらへんはきっと、最新版の API 仕様書を見ると何か書いてあるんでしょうね。

なんで光沢・角丸じゃないの?

元々 iPhone/iPod Touch アプリのアイコンって、アプリ開発者がアイコン画像を作る時には、光沢も角丸も付けないで作成する。光沢と角丸は、自動的に付加される仕組みになっているからだ (デフォルトの場合)。で、上記のように API を叩いて取得した画像を見ると、光沢も角丸もついてない。つまり、素の状態で取れてしまっている。

落ち着いて見直すと、はてなで実際に使われている画像も、光沢はついてるんだけど角丸になっていないことがわかる。光沢がついたりつかなかったりするのは、API の呼び方がなんか違うんだろうか?


http://a1.phobos.apple.com/us/r1000/004/Purple/67/5a/78/mzl.jqnlsivg.100x100-75.jpg

なお、なんではてなブックマーク上だと角丸に見えるかというと、はてな側で CSS (+マスク画像) 使って角丸を追加しているようだ。具体的にどうやるかはブラウザごとに変えているっぽい。

まとめ

API の仕様書、最新版はどうやったら見られるんですかね。アフィリエイトプログラムに申し込まないとダメなのかな。

おまけ

アイコンいらないから、iTunes Store 上のアプリ詳細ページにリンクだけ張りたい、という場合は、2 つくらい方法がある。たぶん簡単なのは

  • iTunes を起動して、目的の詳細ページを開く。で、アプリアイコンかアプリ名のところを右クリックして、「リンクをコピー」する

別解として、

というのもある。「メディアタイプ」を「アプリケーション」にして検索すると、検索結果の一覧が表示される。で、一覧からどれか選ぶと、

<a href="http://itunes.apple.com/jp/app/id327536757?mt=8&uo=6" target="itunes_store"><img height="15" width="61" alt="ルミネス - Touch Fusion" src="http://ax.phobos.apple.com.edgesuite.net/images/badgeitunes61x15dark.gif" /></a>

みたいな HTML の切れ端が表示されるので、blog に埋め込めばいい。実際にこの下に埋め込んでみる。

ルミネス - Touch Fusion

このボタン (リンク) をクリックすると、iTunes が起動して、iPhone/iPod Touch ユーザならプレイ必須と言っても過言ではないパズルゲーム「ルミネス - Touch Fusion」の詳細ページが表示される。iTunes がインストールされていない環境の場合は、代わりに iTunes のダウンロードページが表示されるとの噂。

いくら「ルミネス - Touch Fusion」が面白いからって、いきなり有料アプリを紹介されても……という人のために、体験版「ルミネス - Touch Fusion Lite」の詳細ページへのボタンを下記に貼っておく。今すぐダウンロード!!

ルミネス - Touch Fusion Lite