ひとりぶろぐ

価値ある情報をユーザー視点で発信するブログ

iOSアプリの過去の任意のバージョンをダウンロードする画期的な方法

      2015/12/12

iOSアプリを過去のバージョンにダウングレードしたいことがある

※この記事は、 Hiraku さんの「How to download legacy versions of iOS apps」を参照して書きました。

how-to-download-legacy-versions-of-ios-apps-14

iOSアプリを、自分で意識して保存しておいた.ipaファイルなしにダウングレードできないことは皆さんご承知のことだと思います。

とはいうものの、新しいバージョンにおいて発現した致命的なバグ、あるいは新しいバージョンにおいて重要な機能が廃止になるなどの理由で、iOSアプリのダウングレードが必要だと思う機会は少なくありません。

TimeMachineを常に利用している環境かつ、iTunesとの同期を欠かしていない場合においては、.ipaファイルを明示的にバックアップしていなくても、TimeMachineのバックアップをたどれば過去のバージョンの.ipaファイルを得ることができます。

how-to-download-legacy-versions-of-ios-apps-15

しかしながら、ほとんどの方はTimeMachineを使ったバックアップを取っていないことでしょう。

実は、そんなケースにおいても、iOSアプリのバージョンを過去に遡ってダウンロード可能な方法があるのです。今回は、その方法を紹介します。

このチュートリアルはOS Xを対象に書いていますが、今回の手法で使うソフトウェア「Charles」(シェアウェア)にはWindows版もありますから、Windowsでの再現は容易でしょう。

Windowsでは、同種の代替ソフトウェア「Fiddler」(フリーウェア)を使うこともできます。何らかの理由でそちらを使う場合は、こちらのチュートリアル が参考になります。(続きは[Read More]から)

準備

このチュートリアルでは、Facebookアプリの初期バージョン、v1.0をダウンロードする例を取り上げます。手順をスタートする前に、Charlesをダウンロードし、インストールしておく必要があります。

how-to-download-legacy-versions-of-ios-apps-01

前述の通り、代替となるフリーウェアのFiddlerを使うこともできますが、FiddlerはWindows用でOS Xで動作しません。それがシェアウェアのCharlesを使う理由です。

Charlesはシェアウェアですが、30日間無料で試用可能ですから、試用期間中に購入するかどうか検討できます。

Charlesをインストールしたら、それを起動します。起動すると、「Automatic Mac OS X Proxy Configuration」というタイトルのダイアログが表示されますが、そこでは「Grant Privileges」ボタンを押下。

how-to-download-legacy-versions-of-ios-apps-021

続いて「In order to automatically configure your Network Settings これを許可するにはパスワードを入力してください。」というダイアログが表示されるので、パスワードを入力して「OK」ボタンを押下。

how-to-download-legacy-versions-of-ios-apps-03

「Mozilla Firefox Proxy Configuration」というタイトルのダイアログは、今回のチュートリアルにかかわるものではないので、「Cancel」ボタンを押してキャンセルしても構いません。

how-to-download-legacy-versions-of-ios-apps-04

Charlesが起動したら、そのままにしておきます。

how-to-download-legacy-versions-of-ios-apps-061

続いては、iTunes上のFacebookアプリを削除します。後でそれを再ダウンロードするためです。削除しておかないと、次のステップで操作が必要な「ダウンロード」ボタンを表示することができません。

how-to-download-legacy-versions-of-ios-apps-05

アプリのダウンロード(1回目)

それでは、FacebookアプリをApp Storeからダウンロードしましょう。これから、Facebookアプリを3回再ダウンロードすることになります。詳細は後述します。

iTunesのAppタブ内のApp Storeタブに切り替え、検索のテキストフィールドにfacebookと入力して検索。Facebookアプリが見つかったら、ダウンロードボタンを押下。

how-to-download-legacy-versions-of-ios-apps-07

ダウンロードが始まったら、ウインドウの右上にダウンロードのキューが表示されますので、ポップアップウインドウを表示し、ダウンロードをできるだけ早く中止します。中止したら、Facebookアプリのダウンロードキューを選択してからDeleteキー2回押しでキューを削除。

how-to-download-legacy-versions-of-ios-apps-09

Charlesに切り替え、左のサイドバーを確認。名前が「https://pxx-buy.itunes.apple.com」という項目が出現しているはずです。この項目を右クリックし、「Enable SSL Proxying」と「Breakpoints」にチェックを入れておきます。

how-to-download-legacy-versions-of-ios-apps-10

アプリのダウンロード(2回目)

再度Facebookアプリのダウンロードをします。既にダウンロードキューから削除したにもかかわらず、iTunesがFacebookアプリのダウンロード中であることを示していて再ダウンロードできなければ、一度App Storeの別のページを表示してから再度やり直します。

ダウンロード開始時に「the certification is not valid」というダイアログが表示されたら、「continue」ボタンないしはそれに準じたボタンを押して継続します。

最初は、ダウンロードリクエストのAppleへの送信。このときは「execute」ボタンを押して先に進めます。

how-to-download-legacy-versions-of-ios-apps-11

表示内容が更新されたら、それはAppleのサーバからの「応答」が返ってきたことを意味するので、データを確認します。確認方法は、「Edit Response」タブを選択、さらに、「XML Text」タブを選択です。内容を下方にスクロールし、「softwareVersionExternalIdentifiers」というキーの中にある、下掲の画像内にあるようなバージョン番号のリストがあればビンゴ。これが欲しい情報です。これをコピーして保存しておきます。保存したら「abort」ボタンを押してダウンロードを中止します。

なければ、出てくるまで「execute」ボタンを押して次に進めていきます。「softwareVersionExternalIdentifiers」は、「request → response → request → response」で2往復目の「response」に含まれていると思います。

how-to-download-legacy-versions-of-ios-apps-12

「softwareVersionExternalIdentifiers」の中身は、v1.0などのいつも見るバージョン番号とは違うものです。ここを見て分かることは、より大きな数字が新しいバージョンを意味するということです。

従って、特定のバージョンのアプリをダウンロードするには、該当するバージョンに当たるまで、何度も次なる手順「アプリのダウンロード(3回目)」を繰り返す必要があります。

iOS 9上には「bitcode」と呼ばれる新しいフィーチャーがあります。「bitcode」のある環境下では、アプリの1つのバージョンは複数のビルド番号を持っているので、希望するバージョンを探すのはより困難になります。あなたができるのは、とにかくトライ&エラーをすることだけです。

今回は、最初のバージョンv1.0をダウンロードすることが目的ですので、得られたバージョンリスト先頭で、一番小さい数字「18372」を使います。これが恐らくv1.0に相当するバージョン番号のはずです。

アプリのダウンロード(3回目)

さて、3度目のアプリのダウンロードです。これが本番です。

このステップでは、前のステップで確認した「response」の代わりに「request」を編集することになります。Charlesが「request」を送る段になったら、「Edit Request」タブを選択、さらに「XML Text」タブを選択し、「ppExtVrsId」というキーがないか探します。あったら、その直下の数字を前のステップで得たバージョン番号「18372」に置き換えます。

そして、タスクが終了するまで何度も「Execute」ボタンを押します。(あるいは、「Breakpoints」ボタンを押してブレークポイントをキャンセルします)

how-to-download-legacy-versions-of-ios-apps-13

すると、iTunesでFacebookアプリのダウンロードが開始されます。ついに、v1.0のFacebookアプリのダウンロードに成功しました!

how-to-download-legacy-versions-of-ios-apps-14

いつでもアプリの過去のバージョンをダウンロードできるとは、何という開放感でしょうか。この手法を知っていれば、理不尽なバグや変更を怖がることなく、最新バージョンへのアップデートを試みることができますね。

謝辞

この記事は、Hiraku (@hirakujira) さんの「How to download legacy versions of iOS apps」を参照して書きました。Hirakuさん、有用な記事の公開ありがとうございます。

APPLE AirMac Time Capsule - 2TB ME177J/A
アップル (2013-06-11)
売り上げランキング: 4,543

 - iOS