[iOS] iTunes Search API を利用してアプリの情報を取得する

2017.07.07

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

iTunes Search API

iTunes Search API を利用すれば、iTunes Store、App Store、 iBookstore、Mac App Store にあるコンテンツの様々な情報を取得することができます。
この API を利用して iOS アプリの情報を取得してみましょう。

リクエスト

今回は iOS のゲームアプリ Monument Valley 2 の情報を取得してみます。
このアプリの場合、リクエスト URL は以下の通りです。

https://itunes.apple.com/lookup?id=1187265767&country=JP

1187265767 はこのアプリの ID, JP は検索したい Store の国コードです。(デフォルトは US)

https://itunes.apple.com/lookup のあとにこれらのパラメータを指定すれば、該当するアプリの情報が JSON 形式で取得されます。

レスポンス

上記のリクエストをウェブブラウザのアドレスバーに入力すると、(私の環境では)1.txt.js というファイルがデスクトップに保存されます。
そのファイルの内容を整形したものがこちらです。

{
  "resultCount":1,
  "results": [
    {
      "ipadScreenshotUrls":[
        "http://a2.mzstatic.com/jp/r30/Purple117/v4/16/37/4f/16374f60-f3e0-3493-4ad9-8a5ade7a96a9/sc1024x768.jpeg",
        "http://a5.mzstatic.com/jp/r30/Purple117/v4/43/26/55/432655d6-cfbb-b184-11c4-66484b8a1390/sc1024x768.jpeg",
        "http://a5.mzstatic.com/jp/r30/Purple117/v4/51/4a/63/514a6315-ae6c-1fc3-f962-0476cb7b8c56/sc1024x768.jpeg",
        "http://a3.mzstatic.com/jp/r30/Purple117/v4/46/f0/bd/46f0bd1c-d66d-9b1f-cc17-5212d1ad2a04/sc1024x768.jpeg",
        "http://a1.mzstatic.com/jp/r30/Purple117/v4/3a/8a/52/3a8a520a-c9fb-896b-6414-77cf9ffd4c32/sc1024x768.jpeg"
      ],
      "appletvScreenshotUrls":[],
      "artworkUrl512":"http://is5.mzstatic.com/image/thumb/Purple117/v4/4d/24/8f/4d248f2a-1077-3e6c-2be8-136c4a280206/source/512x512bb.jpg",
      "artworkUrl60":"http://is5.mzstatic.com/image/thumb/Purple117/v4/4d/24/8f/4d248f2a-1077-3e6c-2be8-136c4a280206/source/60x60bb.jpg",
      "artworkUrl100":"http://is5.mzstatic.com/image/thumb/Purple117/v4/4d/24/8f/4d248f2a-1077-3e6c-2be8-136c4a280206/source/100x100bb.jpg",
      "artistViewUrl":"https://itunes.apple.com/jp/developer/ustwo-games-ltd/id297468910?uo=4",
      "features":[
        "iosUniversal"
      ],
      "kind":"software",
      "supportedDevices":[
        "iPad2Wifi-iPad2Wifi",
        "iPad23G-iPad23G",
        "iPhone4S-iPhone4S",
        "iPadThirdGen-iPadThirdGen",
        "iPadThirdGen4G-iPadThirdGen4G",
        "iPhone5-iPhone5",
        "iPodTouchFifthGen-iPodTouchFifthGen",
        "iPadFourthGen-iPadFourthGen",
        "iPadFourthGen4G-iPadFourthGen4G",
        "iPadMini-iPadMini",
        "iPadMini4G-iPadMini4G",
        "iPhone5c-iPhone5c",
        "iPhone5s-iPhone5s",
        "iPadAir-iPadAir",
        "iPadAirCellular-iPadAirCellular",
        "iPadMiniRetina-iPadMiniRetina",
        "iPadMiniRetinaCellular-iPadMiniRetinaCellular",
        "iPhone6-iPhone6",
        "iPhone6Plus-iPhone6Plus",
        "iPadAir2-iPadAir2",
        "iPadAir2Cellular-iPadAir2Cellular",
        "iPadMini3-iPadMini3",
        "iPadMini3Cellular-iPadMini3Cellular",
        "iPodTouchSixthGen-iPodTouchSixthGen",
        "iPhone6s-iPhone6s",
        "iPhone6sPlus-iPhone6sPlus",
        "iPadMini4-iPadMini4",
        "iPadMini4Cellular-iPadMini4Cellular",
        "iPadPro-iPadPro",
        "iPadProCellular-iPadProCellular",
        "iPadPro97-iPadPro97",
        "iPadPro97Cellular-iPadPro97Cellular",
        "iPhoneSE-iPhoneSE",
        "iPhone7-iPhone7",
        "iPhone7Plus-iPhone7Plus",
        "iPad611-iPad611",
        "iPad612-iPad612",
        "iPad71-iPad71",
        "iPad72-iPad72",
        "iPad73-iPad73",
        "iPad74-iPad74"
      ],
      "screenshotUrls":[
        "http://a5.mzstatic.com/jp/r30/Purple19/v4/58/b7/c9/58b7c954-3131-8629-2f03-4504e30242ad/screen696x696.jpeg",
        "http://a3.mzstatic.com/jp/r30/Purple117/v4/55/2e/b4/552eb42a-8064-1a91-f11b-b7ac62145e6a/screen696x696.jpeg",
        "http://a3.mzstatic.com/jp/r30/Purple117/v4/23/04/27/2304279f-7fd1-6eee-9a8b-d07adb2af54c/screen696x696.jpeg",
        "http://a2.mzstatic.com/jp/r30/Purple127/v4/ed/54/dc/ed54dcf4-c5e6-9171-53dc-8422c7588bd0/screen696x696.jpeg",
        "http://a1.mzstatic.com/jp/r30/Purple117/v4/e1/6d/9f/e16d9fe8-8a5f-0649-ec26-f52764d1c525/screen696x696.jpeg"
      ],
      "isGameCenterEnabled":false,
      "advisories":[],
      "trackViewUrl":"https://itunes.apple.com/jp/app/monument-valley-2/id1187265767?mt=8&uo=4",
      "trackCensoredName":"Monument Valley 2",
      "languageCodesISO2A":[
        "NL",
        "EN",
        "FR",
        "DE",
        "IT",
        "JA",
        "KO",
        "PT",
        "RU",
        "ZH",
        "ES",
        "SV",
        "TH",
        "ZH",
        "TR"
      ],
      "fileSizeBytes":"580719616",
      "sellerUrl":"http://www.monumentvalleygame.com",
      "contentAdvisoryRating":"4+",
      "averageUserRatingForCurrentVersion":4.5,
      "userRatingCountForCurrentVersion":110,
      "trackContentRating":"4+",
      "releaseNotes":"In which we put together a quick update to improve your Monument Valley 2 experience :)\n\nImprovements include:\n- Install size optimisation (200MB less!)\n- Localisation fixes\n- Performance fixes\n- General bug fixes",
      "formattedPrice":"¥600",
      "currency":"JPY",
      "wrapperType":"software",
      "version":"1.0.2",
      "artistId":297468910,
      "artistName":"ustwo Games Ltd",
      "genres":[
        "ゲーム",
        "アドベンチャー",
        "パズル",
        "エンターテインメント"
      ],
      "price":600.00,
      "description":"不思議な建造物の中を進む母と娘の旅路を導いてください。あなたが神聖な幾何学模様の秘密を知るにつれ、素晴らしいパズルやありえないような通り道が見えてくるでしょう。\n\nモニュメントバレー2は、Apple Game of the Year 2014受賞作の続編です。美しい超現実の世界を舞台に、新たな冒険をお楽しみください。\n\n娘に谷の神秘を教えようとするローを助けましょう。目を奪われるような世界を探検し、建造物を操作しながら彼女達を導いてください。\n\n=====\n\n独自の冒険\nモニュメントバレーの世界で繰り広げられる、全く新しいストーリー。前作のモニュメントバレーをプレイしていなくても、モニュメントバレー2をお楽しみいただけます。\n\n1つ1つ作り上げられたパズル\n幻想的で心地の良いパズルが詰め込まれた、美しいレベルの数々をお楽しみください。新しいインタラクションを使い、キャラクター間で変化するダイナミクスを探求しましょう。\n\n現代的なビジュアル\nアートワークは、建築様式、芸術動向、そして個人的な影響など様々な面からインスピレーションを受けており、それぞれが素晴らしい幾何学的構造へ組み込まれています。\n\n美しいサウンド\nサウンドスケープは、ローと娘の旅の進行に合わせて独自に作られています。あなたの操作に対応したユニークな旋律に、ぜひ浸ってみてください。\n\n=====\n\nモニュメントバレー2は、iOS 9以降にのみ対応しています。",
      "trackId":1187265767,
      "trackName":"Monument Valley 2",
      "bundleId":"com.ustwo.monumentvalley2",
      "currentVersionReleaseDate":"2017-06-10T08:32:35Z",
      "isVppDeviceBasedLicensingEnabled":true,
      "primaryGenreName":"Games",
      "releaseDate":"2017-05-30T20:08:29Z",
      "minimumOsVersion":"9.0",
      "primaryGenreId":6014,
      "sellerName":"ustwo Games Ltd",
      "genreIds":[
        "6014",
        "7002",
        "7012",
        "6016"
      ],
      "averageUserRating":4.5,
      "userRatingCount":244
    }
  ]
}

かなりの情報量ですね。
アプリのスクリーンショット URL やサポートデバイス、バージョンや料金なども存在します。

iOS で取得する

難しいことは特になく、よくある通信処理のコードで実現できます。

let config = URLSessionConfiguration.default
let session = URLSession(configuration: config)
let url = URL(string: "https://itunes.apple.com/lookup?id=1187265767&country=JP")!

let task = session.dataTask(with: url) { (data: Data?, response: URLResponse?, error: Error?) in
    if let data = data {
        let str = String(data: data, encoding: .utf8)!
        print(str)
    }
}

task.resume()

このあとは JSON をパースして必要な情報を取得し利用しましょう。

さいごに

iTunes Search API を使えば iOS アプリの多くの情報が取得できることがわかりました。
個人的には公式のアイコンやスクリーンショットをゲットできるのが魅力です。
特定のコンテンツの情報を取得したい場合は試してみてください。

リンク

ミレニアム・ファルコン製作日記 #77

77 号 表紙

mfd_77_1

パーツ

mfd_77_2

mfd_77_3

mfd_77_4

成果

mfd_77_5

今回の作業は以下の 2 つでした。

  • 穴メカを取り付ける
  • ディテールパーツを取り付ける

マンディブル部分に穴メカを取り付け、右舷マンディブル下部にディテールパーツを取り付けました。
この後は上部にディテールパーツを取り付けて上部と下部を結合するのでしょうか?
この部分にはきっと LED も取り付けるはず!
楽しみに待ちましょう。

それではまた次回。

May the Force be with you!