ウィジェットとAlexa Presentation Language(APL)の概要
Alexaウィジェットは、スキルに関連する重要な情報をすばやく表示し、ユーザーが現在の画面コンテキストを離れたり、最新情報を確認することなく、アクションをすばやく実行できるようにします。ユーザーは、タッチまたは音声でウィジェットと対話します。スキルは、ユーザーを現在のタスクから移動させずに(「インライン」で)ウィジェットに表示されているコンテンツを更新するか、スキルを起動することで、これらの対話に応答します。
たとえば、天気スキルのウィジェットに現在の天候が表示されます。インラインの対話では、ウィジェットのボタンを押すことでウィジェットに表示されているデータが更新されます。スキルエクスペリエンスでは、ウィジェットのボタンを押すとスキルが開き、5日間の予報などの詳細を含む標準的なAPLドキュメントが表示されます。
ウィジェットをスキルに追加するには、Alexa Presentation Language(APL)を使用します。
ユーザーによるウィジェットの操作
ユーザーはウィジェットギャラリーにあるウィジェットを参照します。このギャラリーからウィジェットをインストールすると、ウィジェットパネルで使用できるようになります。パネルでのウィジェットの表示方法はデバイスによって異なります。Echo Show 15などの大型デバイスでは、ホーム画面にウィジェットパネルを常時表示できます。Echo Show 8などの小型デバイスの場合は、ユーザーが画面の端からスワイプするとウィジェットパネルが表示されます。
ユーザーがデバイスのウィジェットを操作する方法の詳細については、デジタルサービスとデバイスサポートの以下のトピックを参照してください。
ウィジェットの構成要素
ウィジェットは以下の要素で構成されています。
- APLドキュメント – ウィジェットに表示するテンプレートを定義します。このウィジェットドキュメントでは標準的なAPL機能の一部を使用できます。レスポンシブ対応コンポーネントおよびテンプレートの一部がウィジェットに対応しています。
- APLパッケージ – ウィジェットのメタデータとアセットを定義し、ウィジェットをスキルに関連付けます。このパッケージには、APLドキュメント、最初のデータソース、マニフェスト、その他のアセットが含まれます。
- データストア – ウィジェットのAPLドキュメントがデータバインディングによりアクセスするデータが格納されたデバイス上の領域。スキルにリクエストを送信して応答を待つのではなく、データストアからデータをプルすることで、ウィジェットは遅延なくコンテンツを表示できます。スキルは定期的にデータストアREST APIを呼び出し、データストアを新しいデータで更新します。
- Alexa.DataStore.PackageManagerインターフェース – AlexaがデバイスでAPLパッケージをインストール、削除、更新したときにスキルに通知するリクエストを利用できます。
- Alexa.DataStoreインターフェース – データストアにプッシュされた更新が失敗したときにスキルに通知するためのリクエスト。
- データストアREST API – デバイスのデータストアを更新するためのオペレーション。「スキルがスキルリクエストに応答するとき」および「スキルセッションの外から」という両方の状況で、このAPIを使用してスキルからデータストアに更新をプッシュできます。
ウィジェットのライフサイクル
ウィジェットのライフサイクルは、APLドキュメント全体のライフサイクルとは異なります。ユーザーがデバイスにウィジェットをインストールするという選択をする必要があります。ユーザーは、ウィジェットパネルが表示されていれば、インストールされたウィジェットをスキルセッションの内外で使用できます。ウィジェットは、ユーザーが削除することを選択するまでパネルに残ります。
ウィジェットのライフサイクルには以下の3つの主要なイベントがあります。
これらのライフサイクルイベントはすべてスキルセッション外で発生します。ユーザーはウィジェットギャラリーからインストールを開始し、ウィジェットパネルで削除を行います。開発者は、ウィジェットの最新版を公開するときに更新イベントを開始します。
ウィジェットのライフサイクルリクエストの詳細については、Alexa.DataStore.PackageManagerインターフェースのリファレンスを参照してください。APLパッケージの詳細については、APLパッケージリファレンスを参照してください。
ユーザーがウィジェットをインストールする
以下のステップは、ユーザーがウィジェットを見つけてインストールする場合のプロセスを示しています。
- ユーザーがウィジェットギャラリーでウィジェットを見つけ、インストールすることを選択します。
- Alexaがユーザーのデバイスにウィジェットをインストールします。ウィジェットのAPLパッケージの設定に応じて、Alexaはスキルへの
Alexa.DataStore.PackageManager.UsagesInstalled
リクエストの送信も行います。 - スキルは
UsagesInstalled
リクエストのハンドラーでデータストアREST APIを呼び出し、データストアにデータをプッシュします。
ウィジェットパネルが表示されていれば、この時点でパネルにウィジェットが表示されます。
開発者がウィジェットの更新版を公開する
以下のステップは、開発者がウィジェットの更新版を公開する場合のプロセスを示しています。
- 開発者がウィジェットの更新版を作成して公開します。多くの場合、基盤となるAPLドキュメントに変更を加えます。
- ウィジェットが既にインストールされているデバイスでは、ウィジェットの最新版を利用可能であることをAlexaが検出し、ウィジェットを最新版に更新します。ウィジェットのAPLパッケージの設定に応じて、Alexaはスキルへの
Alexa.DataStore.PackageManager.UpdateRequest
リクエストの送信も行います。 - スキルは
UpdateRequest
リクエストのハンドラーでデータストアREST APIを呼び出し、データストアに更新済みのデータをプッシュします。
ウィジェットパネルが表示されていれば、この時点でパネルに更新済みのウィジェットが表示されます。
ユーザーがウィジェットパネルからウィジェットを削除する
以下のステップは、ユーザーがウィジェットパネルからウィジェットを削除する場合のプロセスを示しています。
- ユーザーが対象のウィジェットをウィジェットパネルに残す必要がないと判断し、ウィジェットを長押しして削除します。
- デバイスがウィジェットをアンインストールし、スキルに
Alexa.DataStore.PackageManager.UsagesRemoved
リクエストを送信します。 - スキルで任意のクリーンアップアクションを実行することもできます。たとえば、該当するウィジェット専用のユーザー設定を保存している場合、
UsagesRemoved
リクエストのハンドラーを使用してそのデータを消去できます。
ウィジェットのライフサイクルと標準的なAPLドキュメントのライフサイクルの相違点
標準的なAPLドキュメントはスキルセッションのコンテキスト内に存在します。ユーザーがスキルを呼び出すと新しいスキルセッションが開始され、スキルにLaunchRequest
またはIntentRequest
が送信されます。スキルはAlexa.Presentation.APL.RenderDocument
ディレクティブで応答し、画面にドキュメントを表示します。スキルが新しいRenderDocument
ディレクティブを送信するかスキルセッションが終了するまで、ドキュメントは画面に表示されたままになります。
ウィジェットは新しいセッションを開始できますが、ウィジェットのAPLドキュメントはこのスキルセッション外で動作します。ウィジェットドキュメントでRenderDocument
を使用することはありません。ウィジェットパネルが表示されていれば、インストール済みのウィジェットがユーザーに表示されます。ウィジェットは、ユーザーが削除することを選択するまでパネルに残ります。
ウィジェットドキュメントがSendEvent
コマンドを使用してスキルにリクエストを送信すると、新しいスキルセッションが開始されます。この時点で、通常のスキルセッションが適用されます。
スキルとウィジェットの間の対話
ウィジェットには、ボタンやタッチ可能な領域など、対話用コンポーネントを含めることができます。これらの対話用コンポーネントは、APLのSendEvent
コマンドを使用してスキルにリクエストを送信できます。このコマンドは、スキルにAlexa.Presentation.APL.UserEvent
を送信します。
UserEvent
のリクエストハンドラーは、スキルエクスペリエンス全体を開始するか、ユーザーとの対話をそれ以上行わずにウィジェットを「インライン」で更新できます。たとえば、天気スキルのウィジェットをタップすると、スキル全体を開始しなくても新しい天気データが取得され、ウィジェットに表示されます。
ウィジェットでSendEvent
コマンドを使用する場合は、interactionMode
フラグを設定してスキルの応答方法を指定する必要があります。SendEvent
の詳細については、SendEvent
を参照してください。UserEvent
リクエストの詳細については、UserEvent
を参照してください。
ウィジェットとデータストア
データストアは、ウィジェットのAPLドキュメントがデータバインディングによりアクセスするデータが格納されたデバイス上の領域です。スキルはデータストアREST APIを使用して、定期的にこのデータストアを新しいデータで更新します。ウィジェットは、スキルにリクエストを送信して応答を待つことなく、このコンテンツを表示できます。
データストアを使用するには、APLドキュメントでデータストアExtensionを有効にして設定します。その後、データソースではなくデータストアにプロパティをバインドします。
ウィジェットのAPLドキュメントを定義するときに、ウィジェットのライフサイクルの中で変化する可能性があるデータについてはデータストアを使用します。このアプローチは、スキル呼び出し間で変化するデータにデータソースを使用する標準的なAPLドキュメントとは異なります。ウィジェットの場合、静的なウィジェットパッケージの一部として、最初のデータソースを一度だけ指定します。つまり、このデータソースはウィジェットに対して静的です。
データストアExtensionの詳細については、APLデータストアExtensionを参照してください。データストアを更新するためのデータストアREST APIの詳細については、データストアREST APIリファレンスを参照してください。データストアの更新に関連するリクエストの詳細については、Alexa.DataStoreインターフェースのリファレンスを参照してください。
デザインガイダンス
ウィジェットを開発する際のデザインガイダンスについては、Alexaデザインガイドのウィジェットの基本を参照してください。
スキルのウィジェットを開発する手順の概要
-
必要なインターフェースを有効にして、APLパッケージを設定します。
詳細については、ウィジェットを作成して管理するを参照してください。
-
ウィジェットとして表示するAPLドキュメントを作成します。このドキュメントでは、レスポンシブ対応コンポーネントやテンプレートなど、APL機能の一部を使用できます。
時間の経過に伴って変化する可能性があるデータを表示する場合は、ドキュメントをデータソースではなくデータストアにバインドします。
-
リクエストハンドラーをスキルコードに実装して、ウィジェットのライフサイクルイベントを管理します。
詳細については、Alexa.DataStore.PackageManagerインターフェースのリファレンスを参照してください。
-
ボタンやその他のタッチ可能な領域など、ユーザーとの対話がウィジェットに含まれる場合は、リクエストハンドラーをスキルコードに実装してこれらのイベントを処理します。
詳細については、Alexa.Presentation.APLインターフェースのリファレンスを参照してください。
-
時間の経過に伴って変化するデータがウィジェットに表示される場合、データストアREST APIを使用して定期的に新しいデータでデータストアを更新します。
詳細については、データストアREST APIリファレンスとAlexa.DataStoreインターフェースのリファレンスを参照してください。
-
デバイスでウィジェットをテストします。
詳細については、ウィジェットをテストするを参照してください。
-
スキルの認定を受けて公開し、ウィジェットギャラリーでウィジェットを使用できるようにします。
スキルを使用せずにウィジェットの開発を開始する
ウィジェットの開発を開始する際に、スキルから開始せずにオーサリングツールを直接開くことができます。ただし、作業内容を保存するにはウィジェットをスキルに関連付ける必要があります。
スキルを使用せずにウィジェットを開発するには、こちらのリンクhttps://developer.amazon.com/alexa/console/ask/displays/widget/にアクセスしてオーサリングツールを開きます。
以下の制限事項が適用されます。
- ドキュメントで定義されているトランスフォーマーは動作しません。
- テスト用にウィジェットをデバイスにインストールする場合、インストールオプションを使用できませんが、プレビューオプションは使用できます。完全なテストを実行するには、ウィジェットをスキルに関連付けてください。
- 作業内容を保存するには、ウィジェットをスキルに関連付ける必要があります。
- 保存アイコンをクリックします。
- ウィジェット名を入力します。
- スキルドロップダウンから既存のスキルを選択します。
詳細については、ウィジェットを作成して管理するを参照してください。
関連トピック
最終更新日: 2023 年 09 月 11 日