App Storeから古いバージョンのアプリケーションをダウンロードする方法

App Storeからダウンロードしたアプリのバージョンを最新に保つことは、セキュリティ、機能改善にも役立つことですが、時にアップデートしたことによる不具合に見舞われることがあります。その場合は、今回ご紹介する方法を使用して、任意の古いバージョンをiPhoneにダウンロードできますのでお試しください。

App Storeから古いバージョンのアプリケーションをダウンロードする

少々、長い行程で面食らいますが、慣れてしまえば同じことの繰り返しですので簡単です。ぜひ、最後までご覧いただければと思います。

iTunesのバージョンについて

iTunes 12.7以降のバージョンにおいては、iTunesからApp StoreおよびAppの管理機能が廃止されました。今回ご紹介する方法をお試しする場合には、企業環境で iTunes を使って App を配布する - Apple サポートから、iTunes 12.6.3をダウンロードしてインストールしてください。

Charlesのダウンロード

Charlesは、HTTPプロキシ、HTTPモニター、リバースプロキシとして機能するソフトウェアで、端末⇄サーバ間のHTTP、およびHTTPSのリクエストと応答をモニターリングできます。Charlesは有償ソフトウェアですが、30日間は無料で試用できます。こちらのリンクから、試用版のCharles**をダウンロードしてください。

Charlesのインストール

Charlesをダウンロードし、ディスクイメージ(dmg)ファイルをダブルクリックすると、ライセンスが表示されますので「Agree」ボタンをクリックします。

「Charles.app」を「Applications」にコピーすると、インストールは完了です。

Charlesの起動

Charlesがネットワークモニターとして機能するために、権限を求められるため「Grant Priviliges」をクリックします。これは、Charlesの初回起動時のみ求められます。

権限の付与には管理者権限が必要であるため、管理者のユーザ名とパスワードを入力します。

以上で、Charlesの起動は完了です。上図に示すボタンをクリックすることで、CharlesによるHTTPプロキシのオン、オフの切り替えを行うことができます(赤くなっていればプロキシがオンの状態)。

Charlesで古いアプリケーションをダウンロードする

ここからは、Charlesを使用してiTunes Storeから古いバージョンのアプリケーションをダウンロードする方法をご紹介します。

①目的のアプリケーションをダウンロードする

Charlesを起動し、HTTPプロキシをオンにします(起動時にはデフォルトでオンになっています)。続いて、iTunesを起動し、App Storeから目的のアプリケーションをダウンロードします。今回は、Facebookを対象とします。

②CharlesのSSLプロキシを有効化する

Mac⇄App Store間のHTTPS通信をモニターリングするためには、SSLプロキシを有効化する必要があります。また、HTTPS通信をモニターリングするためにはCharlesの証明書をシステムにインストールする必要があります。Charlesの証明書がインストールされていない状態で、App Storeからアプリをダウンロードしようとすると、「““を購入できませんでした。安全なネットワーク接続を確立できませんでした。このサーバの証明書チェーンは不正です」と警告が表示されます。

Charlesを起動したら、「Help」→「SSL Proxying」→「Install Charles Root Certificate」を選択します。

「OK」ボタンをクリックします。すべてのユーザで有効にしたい場合は、「キーチェーン」を「システム」にします。これで、キーチェーンにCharlesのルート証明書が追加されます。SSL通信時にこの証明書が使用されるようになりますが、最新のmacOSでは未知の証明書は使用できないようになっているため、キーチェーンアクセスから有効化します。「アプリケーション」→「ユーティリティ」→「キーチェーンアクセス.app」を開きます。

「Charles Proxy CA」というルート証明書を探します。「このルート証明書は信頼されていません」と表示されている場合には、その証明書をダブルクリックしてください。

「信頼」というプルダウンをクリックし、「この証明書を信頼するとき」を「常に信頼」に変更してください。これで、Charlesを使用している際に、App StoreとのSSL通信をモニターリングできるようになります。

続いて、App Storeから目的のアプリケーションをダウンロードします。Charlesの左ペインの「Structure」タブからhttps://**-buy.itunes.apple.com(**は任意の英数字)を見つけ、HTTPS通信のモニターリングを有効化するために、右クリックして「Enable SSL Proxying」をクリックします。これで次回以降、App Storeに対するHTTPS通信をモニターリングすることができるようになりました。

③目的のアプリケーションをダウンロードする(2回目)

iTunesから、①でダウンロードしたアプリケーションを削除し、再度同じアプリをApp Storeからダウンロードします。

④アプリケーションの情報を取得する

Charlesの左ペインの「Structure」タブから「https://**-buy.itunes.apple.com」を再度見つけます。この時、鍵マークが付いていないことを確認してください。三角形のマークをクリックして展開していくと、WebObjectsMZBuy.woawabuyProductが見つかります。

右側ペインにおいて、上部を「Contents」、下部を「XML Text」に変更してsoftwareVersionExternalIdentifiersのキーワードを検索してください。(⌘+Fでこのキーワードで検索すると便利です)

ここに表示されている番号が、アプリケーションのバージョンを一意に識別する番号になります。古い番号ほど、古いバージョンのアプリケーションになります。ただし、このままでは、アプリケーションのバージョン情報がわかりませんので、再度Charlesで確認します。

続いてbundleShortVersionStringで検索します。ここに表示されている文字列が上記のsoftwareVersionExternalIdentifiersに対応するバージョンになります。今回の場合は、「157.0」です。

⑤古いバージョンのアプリケーションをダウンロードする

いよいよCharlesを使用して古いバージョンのアプリケーションをダウンロードします。事前にiTunesからダウンロードしたアプリケーションを削除しておきます。左ペインのWebObjectsMZBuy.woawabuyProductを右クリックして、「Breakpoints」をクリックします。これで、App Storeからアプリケーションをダウンロードする際に、特定のポイントで通信が停止するようになります。

再びApp Storeに戻り、ダウンロードしたいアプリケーションをダウンロードします。Charlesに「Breakpoints」が表示されるようになります。「Edit Request」をクリックします。

画面下部から「XML Text」を選択して、XMLの先頭のappExtVrsIdの番号を書き換えます。書き換えが完了したら「Execute」をクリックします。

途中、通信が停止した場合は、再度「Execute」をクリックします。最後まで通信が完了したらダウンロードは完了です。

なお、bundleShortVersionStringからダウンロードしようとしているアプリのバージョン番号を確認できます。

これで任意のバージョンのアプリケーションをiTunes Storeからダウンロードすることができました。

再度アプリケーションをダウンロードしようとした場合、再びブレークポイントで通信が遮断されてしまうため、メニューから「Breakponts」を解除しておきましょう。

まとめ

長い道のりでしたが、道中の工程を簡単に整理すると以下のようになります。

  1. Charlseでアプリケーションの情報を取得する
  2. Charlseでダウンロードしたいアプリケーションの番号を確認する
  3. Charlseでブレークポイントを設定し、ダウンロードしたアプリケーションのバージョン情報に書き換えを行う

この工程を繰り返すことで、任意のアプリケーションの任意のバージョンをダウンロードすることができるようになります。あとは、iTunesとiPhoneを同期することで、古いバージョンをiPhoneに導入することが可能です。

注意点としては、すべてのバージョンがダウンロードできるとは限らない点です。あまりに古いバージョンを指定すると、サーバからエラーが返却されますのでご注意ください。

comments powered by Disqus