アプリの軽量化 (iOS、tvOS、watchOS)


ストアとオペレーティングシステムは、最小限の設置面積で、ユーザーの特定のデバイスの機能にアプリの配信を調整することによって iOS、tvOS、および watchOS アプリのインストールを最適化します。アプリの軽量化 と呼ばれるこの最適化は、ほとんどのデバイスの機能を使用するアプリを作成でき、ディスク領域の占有を最小にし、Apple によって適用されうる、将来のアップデートに適応しています。より高速なダウンロードや他のアプリやコンテンツのためのより多くのスペースは、より良いユーザーエクスペリエンスを提供します。


スライス、ビットコード、およびオンデマンドのリソース:この章では、アプリの軽量化の3つのコンポーネントについて説明します。


スライス (iOS、tvOS)


スライス は、異なるターゲットデバイスのためのアプリ・バンドルのバリアントを作成し、提供するプロセスです。バリアント は、ターゲット・デバイスのために必要とされる実行可能なアーキテクチャとリソースだけを含んでいます。iTunes Connect へのアプリのフルバージョンをあなたは開発し、アップロードし続けます。ストアはアプリがサポートしているデバイスに基づいて種々のバリアントを作成し、お届けします。イメージ・リソースは、その解像度とデバイス・ファミリに応じてスライスされます。GPU のリソースはデバイスの機能に応じてスライスされます。tvOS アプリについては、iOS と tvOS ターゲット間の共有カタログで資産がスライスされ、大きなアプリ・アイコンは削除されます。ユーザーがアプリをインストールすると、ユーザーのデバイスのバリアントは、ダウンロードされ、インストールされます。


バリアントを作成でき、ローカルにテストできるよう Xcode は開発中のスライスをシミュレートします。デバイス上のアプリをビルドし、実行すると、Xcode は、あなたのアプリをスライスします。アーカイブを作成すると、Xcode は、アプリのフルバージョンを含みますが、アーカイブからバリアントをエクスポートすることができます。


注意: スライスされたアプリは、9.0 以降を実行しているデバイスでサポートされています。そうでない場合は、ストアは、顧客にユニバーサルアプリを提供します。


app_thinning_2x


スライスは、通常の開発と配布ワークフロー中に実行され、普通は次のように進みます。


  1. Xcode で、ターゲットデバイスを指定し、アセットカタログ内の画像の複数の解像度を提供します。
  2. リソースをスライスするためにアセットカタログを使用する必要があります。


  3. ビルドして、シミュレータまたはデバイス上でアプリを実行します。
  4. Xcode は選択したデバイスタイプのためのアプリのバリアントをビルドし、デバッグビルド時間を改善し、バリアントをローカルでテストできます。


  5. アプリのアーカイブを作成し、ターゲットデバイスにローカルでバリアントをエクスポートします。
  6. 早く構成の問題を発見するために、ターゲットデバイスにエクスポートするすべてのバリアントをテストします。


  7. iTunes Connect にアプリをアップロードします。
  8. ストアは、アーカイブから個々のアプリのバリアントを作成します。バリアントの数は、Xcode プロジェクトに指定されたアーキテクチャとリソースに依存します。


  9. iTunes Connect では、指定されたテスターにアプリのプレリリース版を配布します。
  10. テスターはテストフライトを使用してサポートされるデバイス上にプレリリース版をインストールします。テストフライトは、ユーザーのデバイスに固有のアプリのバリアントをダウンロードします。


    注意: ユーザーにアプリを配布する前にストアがビルドするバリアントをテストするには、内部テスター (あなたのチームの iTunes Connect ユーザー) だけを招待し、テストフライトを使用してバリアントをダウンロードします。外部テスター (メールアドレスだけを指定するユーザ) を招待する場合、彼らがバリアントをダウンロードできる前に、ベータ版アプリレビューが承認されるまで、外部テスターは待たなければなりません。


  11. iTunes Connectで、アプリをリリースします。
  12. ユーザーがサポートされているデバイスにアプリをインストールすると、ストアのアプリは、ユーザーのデバイスに固有のアプリのバリアントをダウンロードします。


ビットコード


ビットコード はコンパイルされたプログラムの中間表現です。ビットコードを含んでいるアプリを iTunes Connect にアップロードすると、コンパイルされ、ストアでリンクされます。ビットコードを含めると、ストアにアプリの新バージョンを提出する必要がなく、将来的にあなたのアプリのバイナリを再最適化できます。


Xcode はデフォルトでビルド時に生成されたシンボルを隠すので、Apple が読み取れるものではありません。iTunes Connect にアプリをアップロードする際にシンボルを含めることを選択した場合にのみシンボルは、Apple に送信されます。Apple からのクラッシュレポートを受信するためにはシンボルを含めなければなりません。


注意: iOS アプリの場合は、ビットコードは、デフォルトですが、任意です。watchOS と tvOS アプリでは、ビットコードは必須となります。ビットコードを提供した場合は、アプリ・バンドル内のすべてのアプリやフレームワーク (プロジェクト内のすべてのターゲット) がビットコードを含める必要があります。
iTunes Connect を使用してアプリを配布した後は、デバイスウィンドウでクラッシュの表示とインポート で説明したように、ビルドの dSYMs ファイルをダウンロードできます。


オンデマンド・リソース (iOS、tvOS)


オンデマンド・リソース は、画像やサウンドなどのリソースであり、つまりタグにより、キーワードやグループでの要求でタグ付けすることができます。ストアは Apple のサーバ上のリソースをホストし、ダウンロードを管理します。オンデマンドリソースは、初めての起動体験を向上し、高速なダウンロードと小さいアプリサイズを可能にします。例えば、ゲームアプリは、ゲームのレベルにリソースを分割し、アプリはユーザーがそのレベルに移動すると予想した場合にのみ、リソースの次のレベルを要求します。同様に、ユーザーが対応するアプリ内購入で購入した場合にのみ、アプリはアプリ内購入のリソースを要求します。


オペレーティングシステムは、オンデマンドリソースを、それらがもはや必要でなく、ディスクスペースが少ない時にパージします。あなたがストアの外でテストや配布用アプリをエクスポートする場合は、オンデマンドリソースを自分でホストする必要があります。実行可能なオンデマンド・リソースがサポートされていない事に注意してください。さらに、ユーザー体験を向上させる、スライス (iOS、tvOS) で説明したようにストアも、オンデマンドリソースをスライスします。


ユーザーのため、オンデマンド・リソースは、ユーザーがアプリの機能を探っている間に、必要に応じてリソースを供給し、バックグラウンドで透過的に動作します。


on_demand_resources_2x


アプリ内でオンデマンドリソースを設定する詳細については、オンデマンドリソースガイドNSBundleResourceRequest クラスリファレンス を参照して下さい。





前の章
次の章

目次
Xcode の新機能
====================
  • アプリの配布について:序文
  • アプリの軽量化(iOS、tvOS、watchOS)
  • スライス(iOS、tvOS)
    ビットコード
    オンデマンド・リソース(iOS、tvOS)
  • アカウントの管理
  • Apple 開発者プログラムについて
    個人または企業としての登録を選択
    複数のチームに参加できます
    Xcode に Apple ID アカウントを追加
    総括
  • 配布用に Xcode のプロジェクトを構成
  • Xcode プロジェクトを作成する際のプロパティの設定
    プロジェクトの構成を開始する前に
  • ID とチーム設定の構成
  • バンドル ID について
    バンドル ID の設定
    署名 ID の選択(Mac)
    チームに Xcode プロジェクトの割り当て
    チーム・プロビジョニング·プロファイルの作成
    アプリのカテゴリの設定(Mac)
    バージョン番号とビルド文字列を設定
  • 展開情報の設定
  • 展開ターゲットの設定
    ターゲット・デバイスの設定(iOS、watchOS)
  • アプリアイコンと起動スクリーンファイルの追加
  • 画像の準備
    アセットカタログにアプリアイコンを追加
    起動スクリーンファイルの作成
    起動イメージの追加とスクリーンショットのキャプチャ
    個々のアプリアイコンと起動イメージファイルを設定
    アセットカタログにイメージを移行
    著作キーの設定(Mac)
  • ビルド設定の確認
  • iOS アプリのアーキテクチャを設定
    ベース SDK を設定する
    デバッグ情報の形式を設定
    総括
  • 機能の追加
  • 資格について
    始める前に
    アプリ・サンドボックスの設定(Mac)
  • iCloud サポートの追加
  • iCloud を有効にする
    キー値の保管の構成
    書類の保管の構成
    CloudKit を使用
    カスタムコンテナの指定
  • プッシュ通知の構成
  • プッシュ通知を有効に
    プッシュ通知クライアントの SSL 証明書の作成
    手順の確認
  • サーバーでクライアントの SSL 署名 ID のインストール
  • ゲームセンターを有効にする(iOS、tvOS、Mac)
    ゲームコントローラを有効にする(tvOS)
    ウォレットの構成 (iOS、WatchKit 拡張機能)
  • Apple ペイの構成 (iOS、WatchKit 拡張機能)
  • アプリ内購入を有効にする(iOS、tvOS、Mac)
    パーソナル VPN を有効にする (iOS、Mac)
  • マップの構成(iOS、WatchKit 機能拡張、Mac)
  • Xcode でマップを有効化
    ルーティングアプリの構成 (iOS、WatchKit 機能拡張)
    ルーティング方向を提供
    iTunes Connect でアプリレコードの作成
    ストアにビルドを提出
    iTunes Connect に地理的範囲ファイルのアップロード
  • 背景モードの構成 (iOS、tvOS、WatchKit アプリ)
  • アプリ内オーディオを有効にする (iOS)
  • キーチェーン共有の構成
  • 関連ドメインの構成 (iOS、WatchKit 拡張機能)
  • アプリグループの構成
    HomeKit 追加 (iOS、WatchKit 拡張機能)
    データ保護を有効にする (iOS、WatchKit 機能拡張、tvOS)
    HealthKit の追加 (iOS、WatchKit 機能拡張)
    無線アクセサリー構成の有効化 (iOS)
    ニューススタンドの構成(iOS、WatchKit 拡張機能)
    トラブルシューティング
    総括
  • デバイス上でアプリを起動
  • Mac アプリの起動
    デバイス上でアプリの起動(iOS、tvOS、watchOS)
    スキームメニューからデバイスを削除
    デバイスからアプリを削除(iOS、tvOS、watchOS)
    手順の確認
    トラブルシューティング
    チームのプロビジョニングプロファイルをより詳しく
    総括
  • テストの為アプリをエクスポート(iOS、tvOS、watchOS)
  • 臨時のプロビジョニングプロファイルについて
    テストデバイスの登録
    アプリのアーカイブ
    ストア外でのテスト用にアプリをエクスポート
  • Xcode を使ってテストデバイスにアプリをインストール
  • iTunes を使ってテストデバイスにアプリをインストール (iOS、watchOS)
    Apple コンフィギュレータ2 (iOS、watchOS、tvOS) を使用してテストデバイスにアプリをインストール
    Xcode サーバーを使ってアプリの配布
    テスターからのクラッシュレポートを勧誘
    臨時のプロビジョニングプロファイルをより詳しく
    総括
  • テストのためアプリをエクスポート (Mac)
    テスト用 Mac の登録
    アプリのアーカイブ
    チームプロビジョニングプロファイルを使ってアプリをエクスポート
    テスト用 Mac 上にアプリをインストール
    Mac のインストーラパッケージをテスト
    インストーラパッケージを作成
    インストーラパッケージをテスト
  • iTunes Connect にアプリをアップロード
    ストアのプロビジョニングプロファイルについて
    iTunes Connect でアプリレコードの作成
    バージョンとビルド文字列を更新
  • アプリをアーカイブ
  • アーカイブスキーム設定の確認
    アーカイブの作成
    iTunes Connect の検証テストの実行
    アプリをアップロード
  • TestFlight を使ったアプリの配布 (iOS、tvOS、watchOS)
  • クラッシュレポートの分析
  • クラッシュレポートサービスについて
    クラッシュレポートを表示する前に
  • クラッシュオーガナイザでクラッシュレポートの表示
  • クラッシュレポートの表示と検索
    クラッシュレポートの情報を編集
  • デバッグナビゲータでソースコードを開く
    クラッシュレポートの統計情報の表示
  • アプリ開発者とクラッシュデータの共有
  • デバイスウィンドウでクラッシュの表示とインポート
    Xcode でクラッシュの再現
  • ストアにアプリの提出
    提出用のアプリを用意
    ヒューマンインタフェースとストアガイドラインを確認
    iTunes Connect に追加情報を入力
    最終候補をアップロード
    アプリを提出
    総括
  • iTunes Connect でアプリの管理
  • iTunes Connect のユーザーの役割と権限について
    iTunes Connect へのアクセス
    iTunes Connect のユーザーの追加と役割の表示
    アプリレコードの作成
    iOS のアプリレコードに tvOS アプリを追加
    アプリのステータスの表示
    分析を表示
    カスタマーレビューの表示
    アプリの新しいバージョンを作成する
    総括
  • 会員センターでのチームの管理
  • Apple デベロッパプログラムのチームの役割と権限
  • チームの役割
    チームの特権
    チームのエージェント
  • チームメンバーを招聘し役割を割り当てる
  • チームメンバーを招聘する
    チームの役割を変更
    チームメンバーのデバイスを登録
    チームエージェントの役割を移動
    チームメンバーの削除
  • 署名 ID と証明書を維持する
  • 署名 ID と証明書について
    署名 ID とプロビジョニングプロファイルの表示
  • 署名 ID の作成
  • 手順の確認
  • 会員センターを使用し確認
    キーチェーンアクセスを使用し確認
    トラブルシューティング
    開発者 ID 証明書の追加作成
    なくなった中間証明権限をインストール
  • 証明書とプロファイルのエクスポートとインポート
    開発者プロファイルをエクスポート
    選択した証明書のエクスポート
    開発者プロファイルをインポート
    キーチェーンから署名 ID を削除
  • 証明書の破棄
  • 破棄する特権
    Xcode を使用して開発証明書のリセット
    会員センターを使用して証明書の破棄
    期限切れの証明書の交換
    証明書を再作成し関連するプロビジョニングプロファイルの更新
    プッシュ通知クライアントの SSL証明書の作成
  • コード署名 ID ビルドを設定する
  • トラブルシューティング
    署名証明書を詳しく
    総括
  • ID、デバイス、プロファイルの維持
  • アプリ ID の登録
    アプリ ID の編集
    アプリ ID の削除
    チーム ID を検索する
  • 会員センターを使用してデバイスを登録する
  • デバイス ID の検索
  • Xcode を使用してデバイス ID を検索
    iTunes を使って iOS のデバイス IDを検索(iOS,tvOS)
    システム情報を使用してデバイス ID 検索(iOS,tvOS,Mac)
    個々のデバイスを登録
  • 複数のデバイスを登録
  • Apple コンフィギュレータを使用してプロパティリストのデバイスファイルを作成
    プレインテキストのデバイスファイルの作成
    デバイスファイルのアップロード
    あなたの iOS または Apple TV デバイスにプレリリースのインストール
    会員センターを使ってデバイスを無効/有効にする
    デバイス上のアプリの管理
    デバイスからアプリの削除
    会員センターを使用してプロビジョニングプロファイルの作成
    開発用プロビジョニング・プロファイルの作成
    アドホック・プロビジョニング・プロファイルの作成(iOS、tvOS、watchOS)
    ストアのプロビジョニングプロファイルの作成
    Xcode でプロビジョニングプロファイルのダウンロード
    カスタム・プロビジョニング・プロファイルの使用
    トラブルシューティング
    Xcode 管理のプロビジョニング・プロファイルへの移行
    会員センターでプロビジョニングプロファイル編集
    期限切れのプロビジョニングプロファイルの更新
    デバイス上のプロビジョニングプロファイルの確認と削除
    会員センターからプロビジョニングプロファイルを削除
    会員センターからプロビジョニングプロファイルをダウンロード
    アプリのバイナリ資格の確認
    総括
    Apple 開発者エンタープライズプログラムアプリの配布
    Apple 開発者エンタープライズプログラムアプリの開発
    あなたのチームをビルドする(チームエージェント)
    共有したチームプロビジョニングプロファイルの作成 (チーム管理者)
    開発の開始(チームメンバー)
    Apple 開発者エンタープライズプログラムアプリのテスト
    追加のエンタープライズ配布証明書の作成
    期限切れの証明書とプロビジョニング・プロファイルの管理
    あなたのアプリの社内でのエクスポート
    アーカイブの作成
    iOS アプリのファイルの作成
    手動でエンタープライズ開発者を信頼
    サーバーツールについて詳しく知る
    総括
  • Mac App Store 外でのアプリの配布
  • 開発者 ID の署名付きアプリとインストーラパッケージの作成
    開発者 ID にコード署名 ID の設定
  • 開発者 ID 証明書の作成
  • アーカイブの作成
    開発者 ID 署名のアプリの検証
    開発者 ID 署名のアプリのエクスポート
    インストーラパッケージに署名
  • 手順の確認
  • ゲートキーパーの有効化と無効化
  • ゲートキーパーの動作のテスト
  • 開発者 ID で署名されたアプリのテスト
    起動動作をテスト
    ゲートキーパーの動作テストに備えるため
    総括
  • トラブルシューティング
  • 証明書の問題
  • コード署名 ID をなくした時
    一致するプロビジョニングプロファイルがない時
    署名 ID の秘密鍵がなくなった場合
    開発者 ID 証明書の秘密鍵がなくなった場合
    中間証明書がないので証明書が無効
    証明書は、信頼に問題あり
    証明書は、有効期限が切れている
    要求がタイムアウトした
    プロビジョニングプロファイルや署名 ID が Xcode のメニューに表示されない
  • プロビジョニングの問題
  • デバイスにインストールされたプロビジョニングプロファイルが無効
    プロビジョニングプロファイルが会員センター内で無効とされる
    そのようなプロビジョニングプロファイルは見つからない
  • ビルドとコード署名の問題
  • Xcode にはプロビジョニングプロファイルが見つからない
    Xcode は、証明書を信頼していない
    コード署名 ID ビルド設定がどの証明書とも一致しない
    キーチェーンが、重複したコード署名 ID を含む
    プロビジョニングプロファイルのアプリ ID がアプリのバンドル ID と一致しない
    あなたのデバイスが、スキームツールバーメニューでリストされないか不適格
    デバッグ情報の問題
    Xcode はデバイスを接続すると不明の iOS を検出したというダイアログが表示
    アーカイブと提出の課題
    サポートされている機能
    文書改訂履歴
    用語集