オンデマンド モジュールにすると効果的な機能とは、大部分のユーザーがインストール時には必要としない機能です。オンデマンド モジュールに適したアプリの機能の例を以下に示します。
- 大多数のユーザーが動画の視聴のみを行うアプリでの、動画の編集とアップロード
- ほとんどのユーザーが他のユーザーのレシピのブラウジングと追従しか行わないアプリでの、レシピの追加
- ほとんどのユーザーがヘルプを必要としない場合やアプリ内のヘルプを求めていない場合の、ヘルプとサポート機能
- 使用頻度の少ない機能の大規模なライブラリ(詳細なバグのキャプチャの提供やレポートなど)
- 特定のお支払い方法や精算機能
- 超高解像度のメディア エクスペリエンスや VR / AR 機能
一般に、これらのモジュールのサイズが比較的小さく(10 MB 未満)、ネットワークやその他の障害がない場合、ユーザーはオンデマンド モジュールを瞬時にダウンロードして使用できます。つまり、アプリのインストール時にそのモジュールが存在していた場合と、便宜性はほとんど変わりません。
このページでは、以下の場合に効果的なおすすめの方法について説明します。
- 即座に読み込まれない比較的大きなモジュールのダウンロードや、モジュールのインストール エラーの場合、ユーザーが認識し、管理できると感じてもらう。
- 特に、ユーザーが特定のモジュールを必要とすると予想される状況で、モジュール配信のエクスペリエンスをさらに最適化する。
このガイドを読み終えたら、Play Core API サンプルアプリを試して、これらのベスト プラクティスを実際に確認してください。
ユーザーに情報を知らせる
機能をすぐに使用できない場合は、ユーザーに知らせる必要があります。ユーザーが Google Play から機能をダウンロードすることにした場合は、ダウンロードの進行状況を表示します。
リクエストの状態をモニタリングして、ダウンロードの進行状況とインストールの状態を表示できます。ただし、表示する UI の種類は、ダウンロードのサイズによって変えることをおすすめします。
- 非常に短時間でインストールできる小さなモジュール(10 MB 以下)の場合は、スピナーや短い「コンテンツをダウンロードしています」というメッセージなどのインジケーターを検討してください。
- ダウンロードとインストールに数秒以上かかる場合は、図 1 に示すように、ダウンロードとインストールの進行状況バーを表示することを検討します。
図 1. オンデマンド機能をダウンロード、インストールする際にメッセージと進行状況バーを表示する
インストールの遅延と失敗を適切に伝える
ダウンロードが失敗した場合、または予想より時間がかっている場合は、図 2 と図 3 に示すように、ダウンロードの状況と、ユーザーができる対処(存在する場合)を明確にわかりやすく伝えます。たとえば、ダウンロード リクエストの状態をモニタリングしていて、アプリが API_NOT_AVAILABLE エラーを受け取った場合は、デバイスがオンデマンド ダウンロードをサポートしていないことをユーザーに通知します。
図 2. 現時点で機能をインストールできない理由を知らせる
図 3. 機能のダウンロードに想定より時間がかかっている理由を説明する
サイズの大きいダウンロードで許可を求める前にそのメリットを提示する
オンデマンド モジュールのサイズが大きい場合(150 MB 以上)、Google Play はダウンロードする前にユーザーに同意を求めます。
モジュールをリクエストする前に、そのモジュールのメリットをユーザーに説明してください。アプリの権限をリクエストする場合と同様に、このリクエストの理由をユーザーに理解してもらうようにします。率直に伝えることで、ユーザーがダウンロードを受け入れる可能性が高まります。
たとえば、e コマースアプリを構築していて、拡張現実(AR)を使用してユーザーがアパートに家具を直接配置できる機能があるとします。その場合、「新しいソファをリビングルームに置いてみませんか?今すぐ拡張現実ビューアをインストールしましょう」というメッセージを表示するとよいでしょう。
ダウンロードとインストールをバックグラウンドで実行する
モジュールのダウンロードとインストールは常にバックグラウンドで実行する必要があります。つまり、機能が用意されるのを待っている間、ユーザーがアプリの他の部分を引き続き使用できるようにします。機能が使用可能な状態になったら、通知を表示し、ユーザーが自分の判断でその機能に切り替えられるようにする必要があります。
図 5 に示すように、ユーザーはアプリの使用を続けて、オンデマンド機能のインストールが完了すると通知を受け取ります。
図 5. モジュールのインストールが完了したら、ユーザーのコンテキストを突然変更するのではなく、リクエストした機能の準備が整ったことをユーザーに通知する
モジュールを使用する準備が整ったら、ユーザーに通知し、機能を起動するかどうかを選択できるようにします。これは、ユーザーに機能の利用のコンテキストとコントロールを提供するものです。
場合によっては、準備が整い次第、機能をリリースできることもあります。ただし、ユーザー エクスペリエンスが中断される可能性があるため、この動作が想定どおりで適切かどうかを慎重に検討してください。
モジュールが不要になった場合はデバイスのストレージを解放する
すべての機能モジュールに共通する便利な特長は、個別にアンインストールできることです。機能モジュールが使用されなくなった場合は、Google Play にそのモジュールのアンインストールをリクエストすることで、ユーザーのデバイス上のアプリのサイズを削減できます。
たとえば、リッチメディアを豊富に使った本格的なオンボーディング フローをアプリに含める場合があります。ユーザーがオンボーディング フローを完了した後や、一定の期間アクティブ ユーザーとして過ごした後に、Play Feature Delivery API を使用して、アプリのそのコンポーネントのみをアンインストールするように Google Play にリクエストできます。
高度なヒント
通常は、ユーザーがオンデマンド機能モジュールの機能を使用したいという意思を明示した時点で対応する必要があります。
しかし、ユーザーが意思を示す前に、その機能を使用したくなるタイミングを予測できると便利です。料理レシピをダウンロードして作成できるアプリを例として、ユーザーのニーズを予測してモジュール配信エクスペリエンスを最適化する方法を、以下のガイドラインで説明します。
現在のセッションでの機能に関するユーザーのニーズを予測する。たとえば、レシピアプリでユーザーがアカウントを作成する必要があるのは、独自のレシピを作成してコミュニティと共有する場合のみかどうかを検討します。アカウントの作成を、ユーザーが独自のレシピを追加する可能性が高いことを示すシグナルとして使用し、ユーザーが [レシピを追加] をタップする前に機能モジュールのダウンロードを開始できます。このアプローチをアプリ内の他のユーザー ジャーニーに適用すると、機能のダウンロード プロセスをよりシームレスにすることができます。
今後のセッションでの機能に関するユーザーのニーズを予測する。アプリでオンデマンド モジュールをすぐにダウンロードしてインストールする必要がない場合は、アプリがバックグラウンドで動作しているときにインストールを遅延できます。その場合、Google Play がダウンロードとインストールを処理します。たとえば、料理アプリで新しい季節のレシピをリリースするとします。これは、ユーザーの現在のセッションでは優先度が高くありません。アプリがバックグラウンドで動作しているときに、これらのレシピをダウンロードしてインストールするよう Google Play にリクエストできます。これは、すぐには必要ないものの、将来的に必要になる可能性が高い、大規模な機能(10 MB 超)に特に役立ちます。
アプリのインストールより前に機能に関するユーザーのニーズを予測する。条件付き配信のサポートを追加して、ユーザーの国、デバイスのハードウェア機能、API レベルに基づいて、インストール時に機能を含めることもできます。たとえば、豚肉を使用するレシピを条件付きモジュールに含め、豚肉料理を避ける傾向が強い地域では、アプリのインストール時にそのモジュールを省略できます。