ドキュメント

Xcodeを使ったApp Clipの開発

XcodeプロジェクトにApp Clipターゲットを追加し、App Clipとそれに対応する完全版Appの間でコードを共有します。

概要

App ClipはAppの軽量版で、Appの機能の一部をユーザーが必要なときに、必要な場面で提供するものです。Xcodeを使うと、App ClipターゲットをAppのプロジェクトに追加し、App Clipと完全版Appの間でコードとアセットを共有して、App Clipのビルド、実行、デバッグを行うことができます。

App Clipターゲットの追加

App Clipには、少なくともApp Clipと同じ機能を提供する完全版Appが必要です。完全版AppとApp Clipでは、同じXcodeプロジェクトを使用します。新しいAppプロジェクトを始める場合は、まずXcodeで新規のiOSプロジェクトを作成します。App Clipを既存のiOS Appに追加する場合は、対象のXcodeプロジェクトを開きます。そして、App ClipターゲットをXcodeプロジェクトに追加します。

  1. App Clipテンプレートを使って新規ターゲットを追加します。

  2. 製品名を選び、App Clipに適用するオプションを選択したら、「Finish(終了)」をクリックします。

App Clipターゲットを作成するシートを示すスクリーンショット。

選択したオプションに必要なすべてのファイルをXcodeが生成し、以下と共にApp Clipターゲットを追加します。

  • App Clipとそのテストをビルドし、実行するスキーム

  • com.apple.developer.on-demand-install-capable(英語)のエンタイトルメントを追加する「On Demand Install Capable」と呼ばれる新機能

  • 親App IDのエンタイトルメント(英語)

  • App Clip用のApp IDは、完全版AppのApp IDをプレフィックスとして使用し、その後に文字列が続きます。たとえば、完全版AppのApp IDが「$(AppIdentifierPrefix)com.example.MyApp」である場合、App Clip用のApp IDは「$(AppIdentifierPrefix)com.example.MyApp.Clip」となります。

  • App Clipのスキームの一部で、呼び出しをデバッグすることができる_XCAppClipURL環境変数

  • 完全版Appと同じデバイスのサポート(macOSを除く)

さらに、XcodeはApp ClipをAppに埋め込むAppターゲット用にビルドフェーズを新たに生成します。

コードをApp Clipターゲットに追加する前に、App Clipをシミュレータまたはデバイス上で実行してください。この時点では、まだApp Clipターゲットにコードとアセットを追加していないため、App Clipには空白画面が表示されます。

コードとアセットの追加

App Clipは完全版Appと同じフレームワークを利用するため、App Clipターゲットへのコードやアセットの追加は、それ以外のターゲットと同じように行うことができます。新規にソースファイルとアセットを作成するか、既存のソースファイルとアセットを使って、App Clipターゲットにメンバーとして追加します。プロジェクトを維持管理しやすいよう、完全版AppとApp Clipはできるだけコードを共有する必要があります。

  • 新規Appを作成する場合は、App Clipの作成を前提に構築し、モジュール型のコードベースを推奨するベストプラクティスに従ってください。たとえば、再利用可能なコンポーネントを作成してSwiftパッケージ(英語)としてまとめ、完全版AppとApp Clipの両方でそのパッケージを利用します。詳しくは、「ローカルパッケージを使ったコードの整理(英語)」を参照してください。

  • 既存のAppにApp Clipを追加する場合は、Appコードベースのリファクタリングに時間を投資してモジュール型のコードにし、完全版AppとApp Clip間で共有することでコードの重複を避けます。

  • 共有アセットを新規アセットカタログに追加し、完全版AppとApp Clipの両方でこのカタログを利用します。詳細については、Xcodeヘルプの「アセットカタログについて(英語)」を参照してください。

App Clipのサイズの抑制

App Clipを高速で起動するには、App Clipのサイズを小さくする必要があります(非圧縮バイナリで10MB未満)。できれば、この制限を大幅に下回るようにApp Clipのサイズを抑えてください。

App Clipのサイズを測るには、App ClipのAppサイズレポートを作成します。

  1. XcodeでApp Clipに対応するAppをアーカイブし、「Organizer(オーガナイザ)」ウインドウを開き、アーカイブを選択したら、「Distribute App(Appの配信)」をクリックします。

  2. 「App Thinning(Appの軽量化)」と「Rebuild from Bitcode(ビットコードからの再ビルド)」を有効にして、App Clipを「Ad Hoc(アドホック)」または「Development(開発用)」ビルドとして書き出します。

書き出したApp Clipの出力フォルダに、「App Thinning Size Report.txt」というファイル名のサイズレポートが含まれています。このテキストファイルを開いて、App Clipの各バリアントの非圧縮サイズを確認した後、プロジェクトを調整して各バリアントの非圧縮時のサイズが10MB未満になるようにします。

Appのサイズ測定の詳細については、「Appサイズの削減(英語)」を参照してください。

Active Compilation Conditionの使用

多くの場合、AppにApp Clipを追加することは、Appのコードをリファクタリングし、より柔軟なモジュール型の再利用可能なコードにする絶好の機会となります。完全版Appで利用できる機能とフレームワークのほとんどは、App Clipでも利用できます。一方、Appのコードの一部をApp Clipで使うことができず、かつAppとApp Clipコードで別のモジュールを作成することが現実的ではない場合もあります。このような場合は、ビルド設定の「Active Compilation Conditions(アクティブコンパイル条件)」を活用して、除外するコードを判定する条件を宣言することができます。

「APPCLIP」という名前のアクティブコンパイル条件を表示しているスクリーンショット。

まずApp Clipターゲットのビルド設定画面を開き、ビルド設定の「Active Compilation Condition」に新しい値を入力します(例:APPCLIP)。その後、App Clipで使いたくないコードを除外するよう、必要な箇所で共有コードにチェックコードを追加します。

次のコードは、「Active Compilation Condition」ビルド設定に追加した「APPCLIP」という値がないかをチェックします。


#if !APPCLIP
// Code you don't want to use in your App Clip.
#else
// Code your App Clip may access.
#endif

次のステップの確認

App ClipターゲットをAppのXcodeプロジェクトに追加し、プロジェクトに変更を加えることが、App Clipを提供するための最初のステップとなります。次に、作業にかかる時間を含め、以下を実施する計画を立てます。

関連項目

開発