Google I/O 2016 Keynoteで発表されたAndroid Instant Appsはネイティブアプリ(APK)をインストールせずに実行できる機能です。今までのネイティブアプリは、体験してもらうためにも最初にインストールという障壁を乗り越える必要がありました。どんなに良いアプリであっても使ってもらわなければ価値は伝わりません。そのような状況を改善する(まず体験してもらう)ための機能がAndroid Instant Appsです。
Instant Appsはまだ提供されていませんが、開発者の間ではどのように動くのか動作原理に注目が集まっていました。キーノート、セッションで発表された内容をまとめて解説します。それぞれ次の情報も参考に記事を構成しています。
- 公式サイト:https://developer.android.com/topic/instant-apps/index.html
- FAQ: https://developer.android.com/topic/instant-apps/faqs.html
- Islands in the byte stream(gfx氏):http://gfx.hatenablog.com/entry/2016/05/19/141427
- 電気羊はandroidの夢を見る(mochico氏)http://mochi34.blogspot.com/2016/05/googleio2016androidinstantapps.html
Instant Appsはリリース時期が未定(早くて年内または来年と幅があります)の機能ですが、活用できれば効果は絶大です。詳細は続きからどうぞ
Instant Appsの動作原理
Instant AppsではGoogle Playストアアプリの中で(サンドボックス環境下で)Instant Appsを実行しています。Instant Apps対応アプリケーションは、通常のAPKのほかにInstant Apps用のAPKをもうひとつ用意してPlayストアにアップロードする必要があります。
- Instant Apps用のサイズ制限は最大4MB(Module単位。後述)
- Instant Apps用APKではDeep LinkなどActivityへのダイレクトジャンプが利用可能
- AndroidManifestも個別に用意
- Instant AppsビルドにはAndroid Studio 2.2以上が必要
Google PlayストアアプリではDeepLinkなどを契機にInstant Apps対応アプリをダウンロード、サンドボックス環境化で自動的に実行するため、ネイティブアプリなのにインストールがいらないようにみえまています。
Instant Appsの利点をフルに利用するには専用のAPKを用意するだけではなく、その中に必要な機能(Moduleと表現)を実装していくことになります。Google I/O Keynoteのデモでは、AlloというチャットアプリからURLをクリックして、素早く買い物アプリを実行している様子が紹介されました。Instant AppsではDeepLinkで(URLからアプリの個別の機能を)呼び出すときにModuleごとのダウンロードを行っています。そのため、必要最小限のダウンロードで済み、素早い実行が可能になっているわけです(このことからInstant AppsのAPKはModuleごとのリソースひも付けなども考慮した専用ビルドが用意されていると推測できます)。またModuleのサイズ制限の4MBも最大サイズというだけで小さいほうが良いことは間違いありません。
※サイズ制限についてAPK単位ではない、という指摘があり5/21 8:05に修正しています。
Google Playストア内で動作するInstant Appsの特徴は次のとおりです。
- Android 4.1以上をサポート(Playストアアプリが用意するInstant Apps実行環境はAndroid 4.1までバックポート。アプリ側が必要な作業はない)
- バックグラウンド動作が制約されるほか、端末情報などは取得できない
- パーミッションモデルはRuntime Permissionsとなる
Instant AppsはGoogle Playストアのサンドボックス環境下で実行するため、バックグラウンド動作ができない(※)など制約もありますが通常のAndroidアプリと同じように開発できます。インストールという概念がなくなるため、実行時にパーミッションを求めるAndroid M以降のパーミッションモデルRuntime Permissionsに対応する必要があります。更にInstant Apps機能そのものはGoogle PlayストアアプリがAndroid 4.1までバックポートすることが発表されています。この点については対象端末のシェアが多くなり、インストール不要でアプリを触るユーザーが増えるため歓迎できる特徴です。
※更新:サービスが使えないわけではなく、一度アプリを閉じてしまうと、インストールされたアプリではないのでバックグラウンドで生き続けることができない、という意味です。フォアグラウンド状態であれば問題なく動作すると考えられます
一方で、いままでひとつだったアプリケーションAPKを複数に分割するため、設計方針について幾つかの注意点が出てきます。たとえばゲームであれば体験版をより小さいサイズで作成する、アプリであればコア機能についてModule化し、Instant Appsに対応するなどです。これらは単純に小さなAPKとして開発できることを示しています(最小のInstant Apps開発要件)。その上で「ユーザーの要望にあわせてアプリの価値を最大化できる体験を提供する」ミッションを考慮すると、最初の特徴であるDeepLinkとModuleを活用していく必要がでてきます。
例えばショッピングアプリであれば買い物をする部分です(Android Payなど決済機能もInstant Appsで動きます)。ピザの注文、クーポンの表示など多くのアプリでは、ユーザーにリーチして便利だと思ってもらえる部分が該当します。単純なAPKを作る以上のことを考えるとInstant Appsの制約をうまく利用してModule単位で機能を分割して、最適なかたち動線を用意する(たとえば共有ボタンで生成するURLを工夫して、Instant Appsでも同じ画面を開けるようにDeepLinkを使う)などシェアを広げる工夫も一緒に行うことが求められます。
Instant Appsは、ネイティブアプリを非常に強力な機能です。アプリだけではなくマーケティングを考慮した動線設計、Module構成にすることでその効果は更に強くなります