ノンエンジニア向けにiOS14のAppClipsでのユーザー体験と機能を伝えるために考慮したい事まとめ

![スクリーンショット 2020-08-18 18.58.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6691/91a3a8c0-ab91-b841-3a41-416b9b151a8e.png)


## はじめに
※ 本記事はWWDC2020で発表された内容を元に作成しております
※ 記事中の画像はWWDC2020で発表された内容を引用させて頂きました
※ 記事中の内容は変更される可能性があります

社内向けにAppClipsの概要・ユースケースや
注意点を説明するためにまとめました。

個人的には罠が多いな…という印象でしたので
ネガティブっぽい要素を理解した上でどんなユーザー体験が提供できそうか
あーでもないこーでもない、をする際などにお役に立てれば幸いです。

## AppClipsで何ができるのか?
アプリが提供している機能の一部を
**本体アプリのインストール不要で**利用できます。

WWDC20ではAppClipsを起動してスムージーを注文したり
[「Spin」](https://www.spin.app/)の電動キックスケーターの利用や
[「Etsy」](https://www.etsy.com/)で買物するなどのデモが紹介されました。

以下は起動トリガーの一つであるNFCタグを読み取ってAppClipsを利用する流れです。
![SS.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6691/f0cb3641-de66-b799-2d87-519589dff499.png)

## AppClipsのざっくりとした流れ

1. 起動トリガー(以下ではNFCタグ)からAppClipsと紐付いたURLが読みこまれAppClipsカードが表示
2. AppClipsカードの開くボタンをタップでNSUserActivityを介して渡されるURLで処理が起動
![スクリーンショット 2020-08-18 21.22.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6691/e9f17c0b-a12d-a6b0-1469-972913fa773d.png)

## AppClipsを起動させるためのトリガー
  * モバイルWEBサイトで表示されるバナー(Smart App Banner)
  * NFCタグ
  * QRコード
  * AppClipsコード(NFCタグと組み合わせたタッチできる二次元コード)
  * メッセージアプリのリンク
  * Mapsアプリ
  * Siri Nearby Suggestions

※ 未確定情報ですがMapsアプリとSiri Nearby SuggestionsでAppClipsを表示させるには
[Apple Maps Connect](https://mapsconnect.apple.com/)にて事業者を登録する必要があるとのことです。

## AppClipsカードの見た目
起動時に表示されるAppClipsカードは各要素を
AppStoreConnectにてメタ情報を登録します。
![スクリーンショット 2020-08-18 18.24.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6691/97fc5cb0-9a09-a952-e5ad-889c52dace0b.png)

AppClipsカードは基本的には以下の要素で構成されます。
![スクリーンショット 2020-08-18 17.58.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6691/b4b33932-9f00-f096-cc6e-a84650185e2e.png)

## AppClipsの体験設計について

>「App Clipの体験は特定のタスクを達成することに焦点を当てた合理的で直線的なものです。」
>WWDC20 Explore app clipsより

AppClipsによってiOSアプリ開発黎明期から現在に至るまでに様々な事情で機能肥大化の一途を辿った殆どのアプリ達に、再び「単機能」 という機能美をユーザーに提供する機会が与えられることになります。

ユーザーの立場としては「アプリのインストールが不要になり余計なアプリが増えず
通知をオフにしたりログインしたりする必要がなくなってハッピー！!」
といった妄想もできますが、AppClipsはアプリの様にSpringBoard(ホーム画面)で管理できないとのことですので特定の単機能をマイクロサービス的に定期的に使用するといった用途向きではないかもしれません。

多くのデモで披露されている通り、その場限りでもいいので物理空間においての迅速なユーザー体験を提供してリアルとiOSデバイスの連携を推進する用途な感じでしょうか。

マーケター的な旨味としては本体のアプリをインストールしてもらうための
エントリーポイントが増えるといった事が考えられます。

## Universal Linksとの違い 
AppClipsもUniversalLinksと同様に
ブラウザ経由で起動する経路がありますが
以下の違いがあります。

| | Universal Links | App Clips |
|:-:|:-:|:-:|
|大元のアプリが未インストール| ブラウザでWEBページが表示される  | App Clipsが起動  |
|大元のアプリをインストール済| アプリが起動 | アプリが起動  |

Universal Linksについては [こちらの記事](https://qiita.com/mono0926/items/2bf651246714f20df626) を参考にさせて頂きました🙇‍♂️

## Android Instant appsとの違い

| | Instant apps | App Clips |
|:-:|:-:|:-:|
|容量制限| 15MB  | 10MB |
|広告表示| 目立たないバナー広告のみ可 | 推奨されてはいない |
|ペイメント| アプリ内購入あり ※購入したアプリ内アイテムを大元のアプリへの転送必要があり | ApplePay / アプリ内課金 |
|ユースケース| ゲームアプリの体験版等で大元のアプリをインストールして貰うためが多く見られる  | 物理空間での単機能を提供。最悪大元のアプリはインストールされなくてもいい？ |
|通知|　非サポート？ GoogleI/O [2018で通知を有効にするというベータ版はアナウンスされている模様](https://www.youtube.com/watch?v=tXqat1JOmS8&feature=youtu.be&t=743) | AppClipsが破棄される期間のみ許諾後に利用可 |

※ドキュメント見た程度ですので間違ってたらご指摘頂けると幸いです🙇‍♂️

## LINEやWeChat等のミニアプリとの違い

| | ミニアプリ | App Clips |
|:-:|:-:|:-:|
|インストール方法| 大元になるアプリをインストールした上で設定して利用  | QRやNFC等でインストールした上で利用 |
|利用時のデータ保存| 大元となるアプリの規約に従って管理 | OSが管理 (自動的に破棄されるためキャッシュ的な用途向け) |
|個人情報へのアクセス| 許諾確認後アクセス可  | アクセス不可 ※限定的な情報は可 |


## 説明時に合わせて伝えておきたい注意点など
* あくまでもアプリの一部機能を切り取って利用するための仕組みなので大元となるアプリと合わせてAppStoreへの申請・審査・公開のフローは当然必要
* (未確定だがおそらく)AppStoreに公開しないクローズドな利用のアプリでは使え無さそう??
* (未確定だがおそらく)アプリと違ってホーム画面等にアイコンは表示されない・追加もできない？?
* 広告表示やサービスや製品を宣伝する手段としての利用は推奨されていない
* 写真、連絡先、ヘルスケア、スケジュールなどのユーザーの許諾が必要なデータにアクセスすることはできない
* 新しい位置確認APIでワンタイム位置確認は利用可とのこと
* データ保存は可能だがOSの判断で削除されるため、一時キャッシュ的に実装する必要あり
* AppClipsは10メガバイト以内に収めつつ起動後すぐに使用できるように十分な画像ファイル等予めプロジェクトにを含めてデータのダウンロードは必要最低限が推奨される
* 起動後すぐに使用できるようにスプラッシュ画面を含めたりするのはNGかつダウンロードを待たせたりしないようにすることが推奨される
* ユーザーにサインアップを求めるのは、ユーザーがタスクを終えてからが推奨される(Appleアカウントでのサインインが最適
* サードパーティーログインも可 (ASWebAuthenticationSessionを利用)
* AppClipのサイズは小さければ小さいほどよい


## パッと思いついたユースケース
* カーシェアの車のわかりやすい位置にQRのステッカーを貼って開始と終了時にアプリ起動の必要を無くす
* 紙の出退勤タイムカードを置き換えるアプリのエントリーポイントとしての利用

## ここまで書いてて思った
手段が目的になってはいけない

## 参考URL🙏
* [Documentation App Clips Beta](https://developer.apple.com/documentation/app_clips)
* [Configuring Your App Clip’s Launch Experience] (https://developer.apple.com/documentation/app_clips/configuring_your_app_clip_s_launch_experience)
* [Human Interface Guidelines App Clips](https://developer.apple.com/design/human-interface-guidelines/app-clips/overview/)
* [アップルはパンデミックという“完璧”なタイミングで、「App Clips」の提供を開始する](https://wired.jp/2020/07/14/apple-app-clips/)
* [URLスキーム・独自ディープリンク実装に代わる、Universal Links(iOS 9で導入)でより良いUXを実現](https://qiita.com/mono0926/items/2bf651246714f20df626)
* [WWDC20 Explore app clips](https://developer.apple.com/videos/play/wwdc2020/10174/)
* [WWDC20 Configure and link your app clips](https://developer.apple.com/videos/play/wwdc2020/10146/)
* [WWDC20 Create app clips for other businesses](https://developer.apple.com/videos/play/wwdc2020/10118/)
* [WWDC20 Streamline your app clip](https://developer.apple.com/videos/play/wwdc2020/10120/)