開発

iTunes Lookup APIで
自社アプリの公開状況を
自動チェックする仕組みを設計した話

· SEADICE

アプリを60本以上抱えて順次App Storeにリリースしていく体制だと、「このアプリはもう審査に通って公開されているか」を毎回手動でApp Storeを検索して確認するのは非効率になる。認証不要で叩けるiTunes Lookup APIにbundleIdを渡し、resultCountが1かどうかだけを見れば、公開判定は数行のスクリプトで自動化できる。

iTunes Lookup APIの使い方は認証不要でシンプル

https://itunes.apple.com/lookup?bundleId={バンドルID}&country=jp にGETするだけで、そのバンドルIDのアプリがストアに存在すればJSONで詳細情報が返る。APIキーもトークンも不要なので、ローカルの定期実行スクリプトに組み込みやすい。

レスポンスのフィールド用途
resultCount0なら未公開(または審査中)、1なら公開済みと判定できる
results[0].trackViewUrlApp Storeの実際の掲載URL。サイトのCTAボタンにそのまま使える
results[0].trackName / version実際にストアに登録されている名称・バージョンの確認に使う

ハマりどころはレート制限とbundleIdの事前確認

検索系の/searchエンドポイントは1分あたり約20リクエストという緩やかなレート制限があり、超えると429が返る。/lookupはより緩いとされるが、60本以上を毎回全件チェックするなら、1秒に1件程度の間隔を空けて順番に叩くのが安全だ。

公開判定後にサイト側で自動化したい3つの更新

公開が確認できたアプリは、ランディングページの「近日公開」バッジをApp StoreリンクのCTAボタンに差し替え、レジストリファイルのジャンル情報を埋め、必要ならFlutterアプリ側の関連アプリ表示も更新したい。

  1. アプリ詳細ページの「App Store近日公開」バッジを、trackViewUrlへのCTAボタンに差し替える
  2. 公開済みアプリを記録するレジストリファイルの該当エントリにジャンル情報を埋める
  3. 他アプリの「関連アプリ」表示から新規公開アプリを参照できるよう、更新対象をログに残す

この設計はまだSEADICEのリポジトリ本体には実装しておらず、判定用スクリプトと結果を保存するレジストリファイルは今後追加する予定として整理した段階にとどまる。認証不要で叩けるAPIである以上、実装コスト自体は小さい。

Related

新規アプリ公開後の「配線忘れ」をレジストリで自動化した話 →

← ブログ一覧に戻る