AppClipまとめ

App Clipとは
2020年のiOS14から登場した、ダウンロードやインストールをせずにアプリの機能を試すことができる小さなアプリです。
App Clip Code、NFCタグ、QRコードなどを通じてApp Clipを呼び出したり、マップやSafari、Spotlightなどのアプリを通じてデジタル表示させたりできます。
App Clipはユーザ自身が管理するものではなく、ホーム画面には表示されません。
使用から30日間非アクティブな状態が続くと、システムが自動的にApp Clipを削除します。
できること
- 通知
- 起動後最長8時間まで通知を送ることができる
- 8時間経過以降もApp Clipで通知を送りたい時は、App Clipでデバイス上に存在している間は、通知を送信できるようにするための許可をリクエストできる
- 位置情報の確認
- App Clip専用の位置情報確認用APIを使用すると、物理世界でのスキャンが所定の場所で使用されているかどうかを1回限定で確認できる
- 別の場所に関連付けられたコードを使用している誤った支払いや購入を防げる
- App Clip専用の位置情報確認用APIを使用すると、物理世界でのスキャンが所定の場所で使用されているかどうかを1回限定で確認できる
- ローカルテスト
- デバイス上でローカルの起動環境を構成してテストできる
- 複数のApp Clipを作れる
- 完全版アプリとの整合性
- 完全版アプリがある場合、App Clipを起動するコードorリンクを使うと完全版アプリが立ち上がる
- この時、アプリがリンクを処理してApp Clipと同じ機能を提供できるようにすること
- 完全版アプリがある場合、App Clipを起動するコードorリンクを使うと完全版アプリが立ち上がる
App Clipのここがいい!
- アプリの一部の機能を素早く提供できる
- App Clipは軽量なため、デバイスにダウンロードしていなくても素早く起動できます
- (店頭で入れさせられるポイント系アプリ全部これ入れて欲しい・・・!何度ギガ死したことか)
- 完全版アプリのダウンロードへの誘導
- アプリの体験版のような立ち位置として使うことができる
- 適切なタイミングでダウンロードアプションを表示するのがおすすめ
- ユーザが入力した情報を保存しておいて、完全版アプリにその情報をシームレスに移行することも可能
- アプリの体験版のような立ち位置として使うことができる
- 効率的なユーザ体験
- 1つのタスクを素早く実行することに特化しており、ユーザが数秒間のうちにタスクを開始して完了できることが理想的です。
- Apple Payに対応
- クレジットカード情報の入力を求める代わりに、Apple Payでの決済をApp Clipで受け付けることができます
- Appleでサインインに対応
- Appleでサインインすることで、フォームへの入力やアカウントの新規作成を行わずにアプリのサービスにサインインできます
- Apple Payに対応
- 1つのタスクを素早く実行することに特化しており、ユーザが数秒間のうちにタスクを開始して完了できることが理想的です。
App Clipのここがダメ!
- Androidに代替機能がない
- (どうやってandroid切り捨てたらいいかな・・・?)

WWDC23でのApp Clipの変更
iOS17以降、家の高速回線を使っている場合にはApp Clipは50MBまでのサイズを持たせることができるようになりました。
ただし、物理世界でコードをスキャンするタイプ(インターネットよわのとき)のApp ClipはiOS16までと同様に、15MBまでです。
iOS15以前のApp Clipは10MBまでです。
また、iOS16.4以降DefaultAppClickLinkが追加されました。
ストアにApp Clipを含めたビルドをアップロードし、デフォルトのApp Clipを設定するとデフォルトのApp ClipのURLがApp Store Connectで自動的に生成されるようになりました。
以前は自前で関連するメタデータをホストするwebサイトが必要でしたが、必要なくなりました!
以下のようなURLが生成されます。
https://appclip.apple.com/id?p=app_clip_bundle_id&key=value
また、パラメータでApp Clipの状態を指定できるようにもなりました。
さらに、任意のアプリから直接App Clipを起動ができるようになったので、SafariViewなどを介して起動するようにしなくて良くなりました。
- LPLinkView(リッチにカードっぽくリンクをプレビューできるやつ)に渡せる
- 別のアプリから直接呼び出す
- SwiftUI
- UIKit
- SwiftUI

App Clipの体験設計
使い捨てることを想定して設計し、完全版をインストールするともっと便利になる、というように機能を搭載する(↑のコーヒーショップの例が超わかりやすい)
- 重要な機能にフォーカスする
- 目の前のタスクを達成するために必要な機能 だけ にしておく
- App Clipをマーケティング目的のみに使用しない
- アプリの真の価値を提供して迅速にタスクを達成できるようにするため、サービスや製品を宣伝するために使ったり、App Clipに広告を表示したりしないこと
- App Clipではwebビューを使わない
- webビュー使うなら最初からwebサイトに案内しろや
- シンプルなユーザインターフェースにすること
- タブバーや複雑なナビゲーションなどは使わず、画面や入力フォームを最小限に抑えて、可能な限り無関係な情報を削除してユーザインターフェースの複雑さを軽減する
- 起動したらApp Clipの最も重要な部分を表示すること
- すぐにApp Clipを使用できるようにすること
- スプラッシュとかいらんから
- App Clipは可能な限り小さくすること
- App Clipが小さいほど、ユーザのデバイスでの起動が速くなる
- 帯域幅が制限されている場合は、App Clip を小さく保つことが特に重要
- 可能な限り不要なコードを減らし、未使用の資産を削除する
- App Clipを共有可能にする
- App Clipへのリンクを共有すると他のユーザもApp Clipを起動できるようにする
- App Clip 内の特定のポイントへのリンクを共有する機能を提供し、App Clip を他のユーザーと共有することを奨励
- サービスや製品の支払いを簡単にする
- 支払い情報の入力は時間がかかる上に間違いやすい作業なので、Apple Payをサポートして迅速に支払いができるようにする
- App Clipの使用時にユーザにアカウント作成を要求するのはやめたもう
- アカウントの作成は時間がかかってダルい作業なので、アカウントを必要としないようにするか、タスクの完了後にアカウントの作成を求めるようにする
- どうしてもアカウントが必要な場合、例えばAppleでサインインをサポートして、ユーザが提供する必要がある情報の量を制限する
- ユーザがApp Clipから完全版アプリに移行した時にシームレスに使えるようにすること
- 再ログインを要求しないとか、App Clipを使ったことがあるユーザがApp Clipで使い慣れた体験を完全版アプリでも提供するようにすること

iOSDC23の名刺交換アプリで試せる
あとはコーラの自販機にたまにあるらしい

試してみた
AppClipにしたい機能をモジュール化する必要がある(全く同じものをAppClip用に作ることでも実現できるが、メンテコスト増加など色々問題が発生するので、どうせ頑張るならモジュール化頑張った方がいい)
targetにAppClipを追加して、AppClipのFrameworkに使いたい機能のモジュールを追加するとできる。
CppClipの導入自体はすごく簡単だったが、既存のアプリをモジュール化するところと、AppClipを含めたアプリ体験の再設計が大変かなと思う。
リアル->アプリの誘導と、アプリ->アプリの誘導ができるところが良いところだと思う

Androidの代替として考えられるのは、Google Play Instantがある