ドキュメント

Xcodeを使ったApp Clipの開発

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

最新の英語ドキュメント

Creating an App Clip with Xcode


概要

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

App Clipターゲットの追加

App Clipには、少なくともApp Clipと同じ機能を提供する完全版アプリが必要です。完全版アプリとApp Clipでは、同じXcodeプロジェクトを使用します。新しいアプリプロジェクトを始める場合は、まずXcodeで新規のiOSプロジェクトを作成します。App Clipを既存のiOSアプリに追加する場合は、対象の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」と呼ばれる新機能

  • 親アプリIDのエンタイトルメント(英語)

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

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

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

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

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

コードとアセットの追加

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

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

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

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

App Clipのサイズの抑制

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

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

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

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

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

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

Active Compilation Conditionの使用

多くの場合、アプリにApp Clipを追加することは、アプリのコードをリファクタリングし、より柔軟なモジュール型の再利用可能なコードにする絶好の機会となります。完全版アプリで利用できる機能とフレームワークのほとんどは、App Clipでも利用できます。一方、アプリのコードの一部をApp Clipで使うことができず、かつアプリと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ターゲットをアプリのXcodeプロジェクトに追加し、プロジェクトに変更を加えることが、App Clipを提供するための最初のステップとなります。次に、作業にかかる時間を含め、以下を実施する計画を立てます。

関連項目

開発