アプリの軽量化 (iOS、tvOS、watchOS)
ストアとオペレーティングシステムは、最小限の設置面積で、ユーザーの特定のデバイスの機能にアプリの配信を調整することによって iOS、tvOS、および watchOS アプリのインストールを最適化します。アプリの軽量化 と呼ばれるこの最適化は、ほとんどのデバイスの機能を使用するアプリを作成でき、ディスク領域の占有を最小にし、Apple によって適用されうる、将来のアップデートに適応しています。より高速なダウンロードや他のアプリやコンテンツのためのより多くのスペースは、より良いユーザーエクスペリエンスを提供します。
スライス、ビットコード、およびオンデマンドのリソース:この章では、アプリの軽量化の3つのコンポーネントについて説明します。
スライス (iOS、tvOS)
スライス は、異なるターゲットデバイスのためのアプリ・バンドルのバリアントを作成し、提供するプロセスです。バリアント は、ターゲット・デバイスのために必要とされる実行可能なアーキテクチャとリソースだけを含んでいます。iTunes Connect へのアプリのフルバージョンをあなたは開発し、アップロードし続けます。ストアはアプリがサポートしているデバイスに基づいて種々のバリアントを作成し、お届けします。イメージ・リソースは、その解像度とデバイス・ファミリに応じてスライスされます。GPU のリソースはデバイスの機能に応じてスライスされます。tvOS アプリについては、iOS と tvOS ターゲット間の共有カタログで資産がスライスされ、大きなアプリ・アイコンは削除されます。ユーザーがアプリをインストールすると、ユーザーのデバイスのバリアントは、ダウンロードされ、インストールされます。
バリアントを作成でき、ローカルにテストできるよう Xcode は開発中のスライスをシミュレートします。デバイス上のアプリをビルドし、実行すると、Xcode は、あなたのアプリをスライスします。アーカイブを作成すると、Xcode は、アプリのフルバージョンを含みますが、アーカイブからバリアントをエクスポートすることができます。
スライスは、通常の開発と配布ワークフロー中に実行され、普通は次のように進みます。
- Xcode で、ターゲットデバイスを指定し、アセットカタログ内の画像の複数の解像度を提供します。
- ビルドして、シミュレータまたはデバイス上でアプリを実行します。
- アプリのアーカイブを作成し、ターゲットデバイスにローカルでバリアントをエクスポートします。
- iTunes Connect にアプリをアップロードします。
- iTunes Connect では、指定されたテスターにアプリのプレリリース版を配布します。
- iTunes Connectで、アプリをリリースします。
リソースをスライスするためにアセットカタログを使用する必要があります。
Xcode は選択したデバイスタイプのためのアプリのバリアントをビルドし、デバッグビルド時間を改善し、バリアントをローカルでテストできます。
早く構成の問題を発見するために、ターゲットデバイスにエクスポートするすべてのバリアントをテストします。
ストアは、アーカイブから個々のアプリのバリアントを作成します。バリアントの数は、Xcode プロジェクトに指定されたアーキテクチャとリソースに依存します。
テスターはテストフライトを使用してサポートされるデバイス上にプレリリース版をインストールします。テストフライトは、ユーザーのデバイスに固有のアプリのバリアントをダウンロードします。
ユーザーがサポートされているデバイスにアプリをインストールすると、ストアのアプリは、ユーザーのデバイスに固有のアプリのバリアントをダウンロードします。
ビットコード
ビットコード はコンパイルされたプログラムの中間表現です。ビットコードを含んでいるアプリを iTunes Connect にアップロードすると、コンパイルされ、ストアでリンクされます。ビットコードを含めると、ストアにアプリの新バージョンを提出する必要がなく、将来的にあなたのアプリのバイナリを再最適化できます。
Xcode はデフォルトでビルド時に生成されたシンボルを隠すので、Apple が読み取れるものではありません。iTunes Connect にアプリをアップロードする際にシンボルを含めることを選択した場合にのみシンボルは、Apple に送信されます。Apple からのクラッシュレポートを受信するためにはシンボルを含めなければなりません。
iTunes Connect を使用してアプリを配布した後は、デバイスウィンドウでクラッシュの表示とインポート で説明したように、ビルドの dSYMs ファイルをダウンロードできます。
オンデマンド・リソース (iOS、tvOS)
オンデマンド・リソース は、画像やサウンドなどのリソースであり、つまりタグにより、キーワードやグループでの要求でタグ付けすることができます。ストアは Apple のサーバ上のリソースをホストし、ダウンロードを管理します。オンデマンドリソースは、初めての起動体験を向上し、高速なダウンロードと小さいアプリサイズを可能にします。例えば、ゲームアプリは、ゲームのレベルにリソースを分割し、アプリはユーザーがそのレベルに移動すると予想した場合にのみ、リソースの次のレベルを要求します。同様に、ユーザーが対応するアプリ内購入で購入した場合にのみ、アプリはアプリ内購入のリソースを要求します。
オペレーティングシステムは、オンデマンドリソースを、それらがもはや必要でなく、ディスクスペースが少ない時にパージします。あなたがストアの外でテストや配布用アプリをエクスポートする場合は、オンデマンドリソースを自分でホストする必要があります。実行可能なオンデマンド・リソースがサポートされていない事に注意してください。さらに、ユーザー体験を向上させる、スライス (iOS、tvOS) で説明したようにストアも、オンデマンドリソースをスライスします。
ユーザーのため、オンデマンド・リソースは、ユーザーがアプリの機能を探っている間に、必要に応じてリソースを供給し、バックグラウンドで透過的に動作します。
アプリ内でオンデマンドリソースを設定する詳細については、オンデマンドリソースガイド と NSBundleResourceRequest クラスリファレンス を参照して下さい。
前の章
次の章