アプリ内の音声ナビゲーションと選択


アプリ内の音声ナビゲーションと選択

Fire TV Cube(日本未対応)では、デバイスのすべての画面で、音声によるナビゲーションと選択を実行できます。アプリ内の音声ナビゲーションと選択は、D-Padナビゲーションイベントを音声コマンドにマッピングすることで動作します。D-Padとは、上下左右にスクロールする際に使用する、リモコンの方向キーパッド([選択] ボタンの周囲にある「ナビゲーション」リング)のことです。Alexaにより、音声コマンドがD-Padナビゲーションイベントに変換され、さらにそのイベントがアプリに送信されます。

音声によるナビゲーションと選択

Fire TVには、アプリのすべての画面のUIをナビゲーションおよび選択できるアプリ内音声機能が備わっています。

ナビゲーション

ナビゲーションする場合は、「スクロール」を方向(上下左右)と組み合わせて発話することで、アプリ内のナビゲーション可能なコンテンツ間でフォーカスを移動できます。たとえば、「アレクサ、左にスクロールして」や「アレクサ、下にスクロールして」と言えば、 Fire TVの画面上でフォーカスを希望の方向に移動させることができます。Fire TVでは、リモコンのRIGHT・LEFT・UP・DOWN(DPAD_RIGHT/LEFT/UP/DOWN)イベントを複数回シミュレーションすることで、ナビゲーション操作を実行します。

フォーカスが水平または垂直に移動する際に動く要素の数は、アプリレベルで設定され、各アプリ固有のレイアウトに基づきます。デフォルトでは、水平移動の場合の要素数は3、垂直移動の場合の要素数は2に設定されます。ただし、アプリに最適なエクスペリエンスを提供するため、このデフォルトの設定はAmazon側で手動で調整します。たとえば、最適なエクスペリエンスのために移動させる必要がある要素数が3ではなく4である場合、Amazon側で自動的にその設定を選択します。移動が必要な要素数を調整する場合は、お問い合わせフォームから変更のリクエストを行ってください。

Fire TVは、スクロールに加えて、シンプルなワンステップナビゲーションにも対応しています。ワンステップナビゲーションでは、キーワード「移動」を方向(上下左右)と組み合わせた呼びかけに応じて、フォーカスを一度に1要素ずつ移動させます。(例:「アレクサ、右に移動して」や「アレクサ、上に移動して」など)。 Fire TVは、従来と同じD-Padイベントを使用してワンステップナビゲーションを実行しますが、リモコンのRIGHT・LEFT・UP・DOWN(DPAD_RIGHT/LEFT/UP/DOWN)イベントを複数回​ではなく、1回だけシミュレーションすることで、フォーカスを1要素ずつ移動させます。

選択

フォーカスが置かれたアイテムを選択したり、ハイライトされたタイトルを再生したりするには、「アレクサ、選択して」または「アレクサ、これ/あれ/それを選択して」と発話します。 この呼びかけは、現在フォーカスが置かれている要素をクリックまたは選択するのと同じ動作を実行します。また、Fire TVは、リモコンの選択(DPAD_CENTER)キー押下イベントをシミュレーションします。

アプリ内の音声コマンドに関するよくある問題

アプリ内の音声ナビゲーションと選択に関する機能をアプリに実装するには、フォーカスのリセットや画面の更新を行わずにオーバーレイを処理する必要があります。デフォルトでこの処理を実行できるアプリがほとんどですが、処理ができない場合は次のような原因が考えられます。

問題1: フォーカスが置かれた要素がリセットされる

(Alexaの操作のように異なるプロセスに関連する)オーバーレイやダイアログがアプリ画面の最上部に表示されてから消える仕様の場合、フォーカスが置かれた要素が変わったり、リセットされたりしないようにします。

たとえば、アプリが最前面にあり、フォーカスが3番目の列の要素に置かれているときに、ユーザーが「アレクサ、今何時?」と発話してAlexaを起動したとします。 この場合、Alexaが応答を終了しても、フォーカスは引き続き同じ要素に置かれていなければなりません。

Alexaの応答後にフォーカスが別の要素に移動する仕様の場合、音声によるナビゲーションや選択を正常に行えず、ユーザーエクスペリエンスが低下してしまいます。たとえば、ユーザーが「アレクサ、これを選択して」と発話しても、ユーザーの意図に反して新たにフォーカスが置かれたアイテムが(誤って)選択されてしまいます。

問題2: 画面の更新でナビゲーションに不整合が生じる

フォーカスのリセット問題と同様に、Alexaの応答後に行われる画面の更新やリロードによって、問題が生じてしまうアプリもあります。音声コマンドに応答する際に画面が更新したり、リロードが発生したりすると、Fire TVはAlexa起動時におけるフォーカスの情報を保持できません。これもユーザーエクスペリエンスの低下につながります。

たとえば、ユーザーが「アレクサ、右にスクロールして」と発話すると、Fire TVはスクロールをシミュレーションするためのキー押下イベントを該当アプリに送信します。その際にアプリ画面の一部または全部が読み込まれると、キー押下イベントは意図した要素に設定されず、スクロールや選択が正常に行えなくなります。

問題3: D-Padナビゲーションを制限するアプリの更新

アプリの更新によっては、ナビゲーション・選択機能が直接の影響を受けない場合があります。ただし、更新によりユーザーがD-Padコントロールを使用してアプリをナビゲーションできなくなった場合、アプリ内の音声ナビゲーション・選択機能がより制限されます。

たとえば、リモコンの [メニュー] ボタンに過度に依存すると、アプリ内における音声操作が限定的になりかねません。サイドバーメニューの表示、テレビドラマのエピソード表示、詳細情報の表示といった、アプリの重要機能を実行する方法が [メニュー] ボタンだけの場合(D-Padの方向キーでは実行できない場合)、音声ナビゲーションと選択の機能は用途の幅が狭まり、重要度も下がってしまいます。

また、D-Padナビゲーションキーをほかの機能(DPAD_UPが押された際にメニューオプションを表示するなど)にマッピングすると、アプリのナビゲーションに利用できるD-Pad機能が制限され、アプリ内の音声ナビゲーションと選択に関する機能にもマイナスの影響が生じます。

アプリを更新するたびに、音声によるナビゲーション・選択機能との互換性をテストして、音声によるナビゲーションと選択を実行できるようにしてください。

アクティビティライフサイクルの処理

アクティビティライフサイクルの処理におけるベストプラクティスを取り入れることで、アプリ内の音声コマンドに関するよくある問題は回避できます。ユーザーがアプリ内を移動すると、アプリのアクティビティインスタンスがライフサイクルのさまざまな状態に遷移します。ライフサイクルコールバックメソッド内では、ユーザーの操作に基づいてアクティビティがどのように動作すべきかを定義することも可能です。詳細については、Androidのアクティビティライフサイクルに関するドキュメントを参照してください。

アクティビティUI処理の主なライフサイクルイベントは以下のとおりです。アプリにとっての適切な処理とフローについても説明します。

  • onPause()コールバックは、アクティビティが部分的にほかのアクティビティによって見えない状態になった際に呼び出されます(例:[ホーム] ボタンを長押ししてヘッドアップ通知がFire TVに表示される、またはFire TVでAlexaを起動する場合など)。厳密に言うと、onPause()の後でもアクティビティは部分的に見えていますが、このような場合、ユーザーがアクティビティを離れるケースがほとんどで、アクティビティはすぐに停止または再開の状態に移行します。

  • アクティビティがonPause()を受け取った後、通常はonStop()への呼び出しが続きます(次のアクティビティが再開および表示された後)。ただし、場合によっては停止状態を経ることなく、onResume()への直接コールバックが行われることもあります。

  • onResume()は、アクティビティとユーザーの対話が始まる直前に呼び出されます。この時点では、アクティビティはアクティビティスタックの一番上にあり、すべてのユーザー入力をキャプチャします。onResume()は変更を加えずに元のUIの状態を復元し、onPause()onResume()の間で変更がある場合にのみ、UIを更新する必要があります。onPause()の後にonResume()を受け取る場合、onResume()の間はフォーカスが置かれた要素の変更や画面の更新はなるべく避けてください。

  • Fire TVは、アクティビティがユーザーに表示されなくなるとonStop()を呼び出します。アクティビティの破棄や新しいアクティビティの開始時にも、同様のことが起こり得ます。既存のアクティビティが再開の状態となり、停止したアクティビティをカバーする場合にも、同じことが言えます。これらすべてのケースで、停止したアクティビティはユーザーに表示されなくなります。また、onStop()が呼び出されている間は、アクティビティがすべてのリソースを解放するようにしてください。onStop()メソッドでは、アプリがユーザー側で表示されない間、必要のないリソースを解放または調整する必要があります。

  • 次のコールバックFire TV呼び出しは、onRestart()onDestroy()のいずれかになります。前者は、アクティビティがユーザーとの対話のために戻ってくる場合で、後者はアクティビティが完全に破棄される場合です。アクティビティがonStop()を完了して再起動した場合にのみ、onResume()の間にUIの更新やフォーカスが置かれた要素のリセットを行ってください。

音声によるナビゲーション・選択機能のテスト

  1. アプリ開発中に、adbを使用してアプリをデバイスにサイドローディングすることで、アプリの選択・ナビゲーション機能をテストできます。詳細については、adbを使用してFire TVに接続する方法を参照してください。
  2. テスト完了後は、通常通り公開に向けてアプリを申請することができます。
  3. テストに不合格だった場合は、問題点を修正後にアプリの更新バージョンを申請することができます。手順1と2を使用して、新しいバージョンのアプリを検証します。

アプリをサイドロードしてテストする方法のほかに、ライブアプリテストを使用してアプリをテストすることもできます。ライブアプリテスト用にアプリをアップロードしたら、テスト用に指定したアカウントでそのアプリをダウンロードし、テストを実行できます。

音声によるナビゲーション・選択機能は、Amazonアプリストアで公開される前にAmazonの審査に合格しなければなりません。このとき、審査対象のアプリに音声によるナビゲーション・選択機能との互換性がない場合は、問題を修正するためにAmazonからご連絡いたします。

ユーザーエクスペリエンスを保護するため、以前のバージョンで音声によるナビゲーション・選択機能に対応していたとしても、新バージョンで非対応の場合は却下されてしまいます。

よくある質問(FAQ)

音声を利用してどのような操作を実行できますか?
Amazonアプリストアでは、開発者側に負担をかけることなく、より多くのアプリに基本的な音声機能を提供できるよう目指しています。たとえば、「アレクサ、右にスクロールして」や「アレクサ、下に移動して」と言うことでコンテンツ内を移動したり、「アレクサ、選択して」や「アレクサ、これを選択して」と言うことでフォーカスが置かれた要素を選択したりできます。この機能では、次のような発話がサポートされています。
  • ナビゲーション: [方向] にスクロールして、[方向] のページに進んで、[方向] に移動して、[方向] に進んで。[方向] には、上下左右のいずれかを使用します。
  • 選択: 選択して、これ/あれ/それを選択して
この機能はすべてのアプリで使用できますか?
はい。この音声機能は、すべてのアプリで利用できます。上記のガイドラインに記載された基準を遵守していれば、この機能は自動的に使用できるようになります。
この機能がアプリ自体に何らかの影響を与えることはありますか?
いいえ。アプリの機能やパフォーマンスに対して、悪影響が及ぶことはありません。
より高度な音声機能の使用方法を教えてください。
高度な音声機能を実現するには、AlexaビデオスキルをFire TVアプリに統合する必要があります。これにより、最も包括的かつ機能豊富なアプリの音声機能が実現します。
この機能が利用できるデバイスを教えてください。
この機能は、現在Fire TV Cube(日本未対応)にのみ対応しています。
この機能に関するフィードバックは、どこに送ればよいですか?
フィードバックはお問い合わせフォームからお送りいただけます。