Text List
Alexa Text Listテンプレート(AlexaTextList)は、テキストベースのリスト項目のスクロールリストを表示します。このテンプレートは全画面に表示されるため、ヘッダーと背景を含めることができます。リストに表示する、テキストベースの一連の項目を指定します。リストの外観(区切り線を挿入する、項目に番号を付けるかどうかなど)を設定できます。ユーザーがリストから項目を選択したときに実行するコマンドも指定できます。ユーザーが項目をスワイプできるようリストを設定します。
互換性
AlexaTextListは、次のViewportプロファイルで動作するように設計されています。
alexa-viewport-profilesパッケージの以下のウィジェットviewportプロファイル:- ウィジェット、中(
@hubWidgetMedium)
- ウィジェット、中(
alexa-viewport-profilesパッケージのすべての標準viewportプロファイル:- すべての円形デバイスプロファイル
- すべての横長デバイスプロファイル
- すべての縦長デバイスプロファイル
- すべてのモバイルプロファイル
- すべてのテレビプロファイル
viewportプロファイルの詳細については、Viewportプロファイルを参照してください。
ウィジェットの相違点
このテンプレートをウィジェット内で使用すると、AlexaTextListは、小さいウィジェットサイズに合わせて簡略化されたリストを表示します。この場合のテンプレートには次のような違いがあります。
- 背景には色や画像を表示できますが、ビデオは表示できません。ウィジェットでは、
Videoコンポーネントはサポートされません。 - リストヘッダーには、ヘッダータイトルテキストは表示されますが、アトリビューションテキスト、アトリビューション画像、サブタイトルは表示されません。
- リストヘッダーでは、戻るボタンはサポートされません。
- リスト項目には、第1テキスト、第2テキスト、画像のサムネイルが表示されます。第3テキスト、評価、項目番号は表示されません。
- リスト項目の第2テキストの位置は変更できません。
- ウィジェットでは
SpeakListコマンドがサポートされないため、speechItemsとSpeakListコマンドを使用してリスト項目を読み上げることはできません。
alexa-layoutsパッケージを読み込む
AlexaTextListを使用するには、alexa-layoutsパッケージをインポートします。
alexa-layoutsパッケージの最新バージョンは1.7.0です。AlexaTextListはバージョン1.1.0で導入されました。
AlexaTextListパラメーター
以下の表は、AlexaTextListで設定できるパラメーターを示しています。特に記載のない限り、標準viewportプロファイルはすべてのパラメーターをサポートします。「ウィジェットのサポート」列は、各パラメーターをサポートするウィジェットviewportプロファイルを示しています。viewportプロファイルの詳細については、Viewportプロファイルを参照してください。
type以外のパラメーターはすべてオプションです。
| 名前 | 型 | デフォルト | 説明 | ウィジェットのサポート | 追加されたバージョン |
|---|---|---|---|---|---|
|
|
文字列 |
— |
リストに表示されるフッターアクションボタンを説明する文字列です。ユーザーがボタンを選択すると、ボイスオーバーでこの文字列が読み上げられます。 |
中 |
1.5.0 |
|
|
文字列 |
|
背景画像または背景ビデオの配置を指定します。 |
中 |
1.1.0 |
|
|
ブール値 |
|
|
中 |
1.1.0 |
|
|
— |
背景色として使用する色です。 |
中 |
1.1.0 | |
|
|
ブール値 |
|
|
中 |
1.1.0 |
|
|
文字列 |
— |
背景画像ソースのURLです。 |
中 |
1.1.0 |
|
|
ブール値 |
|
|
中 |
1.1.0 |
|
|
文字列 |
|
背景画像または背景ビデオのサイズを調整する方法を指定します。 |
中 |
1.1.0 |
|
|
文字列 |
|
ビデオを再生する際に流すオーディオトラックです。指定できる値は、 |
サポートされません |
1.1.0 |
|
|
ブール値 |
|
|
サポートされません |
1.1.0 |
|
|
— |
背景ビデオのソースです。Videoコンポーネントの |
サポートされません |
1.1.0 | |
|
|
文字列 |
— |
フッターアクションボタンのスタイルです。 |
中 |
1.5.0 |
|
|
文字列 |
— |
フッターアクションボタンに表示するテキストです。ボタンの目的を示します。ウィジェット以外のViewportでドキュメントを表示する場合は適用されません。 |
中 |
1.5.0 |
|
|
ブール値 |
|
|
サポートされません |
1.7.0 |
|
|
配列 |
— |
このテンプレートにバインドするentityデータの配列です。 |
中 |
1.2.0 |
|
|
文字列 |
— |
アトリビューションの画像ソースのURLです。 |
サポートされません |
1.1.0 |
|
|
数値 |
|
ヘッダーのアトリビューションテキストとアトリビューション画像にopacityを設定します。0と1の間の数値を設定します。 |
サポートされません |
1.3.0 |
|
|
ブール値 |
|
|
サポートされません |
1.1.0 |
|
|
文字列 |
— |
ヘッダーで表示するアトリビューションのテキストです。 |
サポートされません |
1.1.0 |
|
|
ブール値 |
|
|
サポートされません |
1.1.0 |
|
|
文字列 |
|
スクリーンリーダーを使用するユーザーに、戻るボタンについて説明するアクセシビリティラベルです。 |
サポートされません |
1.1.0 |
|
|
|
ユーザーが戻るボタンを選択したときに実行するコマンドです。 |
サポートされません |
1.1.0 | |
|
|
文字列 |
|
ヘッダーの背景色として使用するオプションの色の値です。 |
中 |
1.1.0 |
|
|
文字列 |
— |
ヘッダーに表示する第2テキストです。 |
サポートされません |
1.1.0 |
|
|
文字列 |
— |
ヘッダーに表示する第1テキストです。 |
中 |
1.1.0 |
|
|
ブール値 |
|
|
中 |
1.5.0 |
|
|
ブール値 |
|
|
中 |
1.1.0 |
|
|
ブール値 |
|
|
サポートされません |
1.1.0 |
|
|
文字列 |
|
テンプレートに表示されるテキストの言語です。この言語によって、テキストに使用されるデフォルトのフォントが決まります。たとえば、 |
中 |
1.4.0 |
|
|
文字列 |
|
コンテンツのレイアウト方向を指定します。このプロパティは、 |
中 |
1.4.0 |
|
|
文字列 |
— |
リストとして使用される |
中 |
1.2.0 |
|
|
listItemsの配列 |
— |
リストに表示するテキストリスト項目の配列です。 |
中 |
1.1.0 |
|
|
配列 |
— |
ユーザーがリストを並べ替えたときに実行するコマンドの配列です。 |
サポートされません |
1.7.0 |
|
|
任意 |
— |
ユーザーがスワイプアクションを完了した場合に実行するコマンドです。 |
1.2.0 | |
|
|
任意 |
— |
ユーザーが項目をスワイプしているときに実行するコマンドです。 |
サポートされません |
1.2.0 |
|
|
任意 |
— |
オプションリストの最初のボタンにバインドするコマンドです。テレビデバイスにのみ使用します。 |
サポートされません |
1.2.0 |
|
|
文字列 |
— |
オプションリストの最初のボタンのテキストです。テレビデバイスにのみ使用します。 |
サポートされません |
1.2.0 |
|
|
任意 |
— |
オプションリストの2番目のボタンにバインドするコマンドです。テレビデバイスにのみ使用します。 |
サポートされません |
1.2.0 |
|
|
文字列 |
— |
オプションリストの2番目のボタンのテキストです。テレビデバイスにのみ使用します。 |
サポートされません |
1.2.0 |
|
|
コマンドの配列 |
— |
標準Viewportで使用した場合、独自の |
中 |
1.1.0 |
|
|
文字列 |
|
サポートされません |
1.7.0 | |
|
|
任意 |
— |
読み上げ項目の配列です。テンプレートは、この配列の各項目を、対応するリスト項目の |
サポートされません |
1.2.0 |
|
|
ブール値 |
|
|
中 |
1.5.0 |
|
|
文字列 |
— |
スワイプ中に表示するカスタムアイコンのソースです。 |
中 |
1.2.0 |
|
|
— |
ユーザーが項目をスワイプしたときにアクションアイコンの背後に表示する背景色です。 |
中 |
1.2.0 | |
|
|
文字列 |
— |
ユーザーが項目をスワイプしたときに表示するアクションアイコンの色です。 |
中 |
1.2.0 |
|
|
文字列 |
— |
カスタムの |
中 |
1.2.0 |
|
|
文字列 |
— |
リスト内の項目に使用するスワイプジェスチャーの方向です。 |
中 |
1.2.0 |
|
|
文字列 |
|
色のテーマをダークまたはライトに設定します。テーマを選択することでテンプレートの色を制御します。 |
1.1.0 | |
|
|
ブール値 |
|
|
中 |
1.1.0 |
|
|
文字列 |
— |
常に |
中 |
1.1.0 |
リスト項目を指定する
AlexaTextListレイアウトは、listItemsプロパティに項目の配列が設定されることを想定しています。各項目は、AlexaTextListItemまたはAlexaSwipeToActionレスポンシブ対応コンポーネントで定義されたプロパティを持つオブジェクトです。ウィジェット内で使用すると、AlexaTextListItemコンポーネントでサポートされるプロパティは少なくなります。たとえば、ウィジェット内のリスト項目には評価や第3テキストを表示できません。
リスト項目の配列の例
次の例は、AlexaTextListで使用できるリスト項目の配列を示しています。
{
"listItems": [
{
"primaryText": "最初の項目の第1テキストです",
"secondaryText": "これは第2テキストです",
"secondaryTextPosition": "bottom",
"tertiaryText": "これは第3テキストです",
"tertiaryTextPosition": "bottom",
"ratingNumber": 2,
"imageThumbnailSource": "https://d2o906d8ln7ui1.cloudfront.net/images/md_brie.png",
"hideOrdinal": true,
"touchForward": true
},
{
"primaryText": "リストの2番目の項目です",
"secondaryText": "2番目の項目の第2テキストです",
"imageThumbnailSource": "https://d2o906d8ln7ui1.cloudfront.net/images/md_gruyere.png",
"tertiaryText": "第3テキスト",
"tertiaryTextPosition": "bottom",
"ratingNumber": 0
},
{
"primaryText": "リストの3番目の項目です",
"imageThumbnailSource": "https://d2o906d8ln7ui1.cloudfront.net/images/sm_blue.png"
},
{
"primaryText": "リストの4番目の項目です"
},
{
"primaryText": "リストの5番目の項目です"
},
{
"primaryText": "このリストにはほかにも多数の項目があります"
}
]
}
リスト項目に指定できるパラメーターは、AlexaTextListItemのバージョンによって異なります。たとえば、評価を表示するプロパティには、alexa-layoutsパッケージのバージョン1.2.0以降が必要です。すべてのプロパティについては、以下を参照してください。
listItemsプロパティにリスト項目の配列をバインドする
listItemsプロパティに項目の配列をバインドするには、次の2つの方法があります。
-
データバインディング式を使用して、別のデータソースにある配列を
listItemsに設定する。- この方法は標準Viewportで使用します。スキルコードで、
RenderDocumentディレクティブの一部としてdatasourcesオブジェクトにリスト項目の配列を含めます。 - ウィジェットの場合は、
RenderDocumentを使用するのではなく、ユーザーのデバイスにウィジェットをインストールするときにデータソースを指定します。したがって、このオプションはウィジェットの存続期間中に変更されないデータに使用してください。
- この方法は標準Viewportで使用します。スキルコードで、
-
データバインディング式を使用して、デバイス上のデータストアに保存されている配列を
listItemsに設定する。その後、スキルでデータストアのコンテンツを更新して、ウィジェットに最新の情報を表示できます。- データストアはウィジェットで使用できます。標準Viewportに表示されるAlexa Presentation Language(APL)ドキュメントでは、データストアを使用することはできません。
- データストアExtensionを使用し、リージョン、名前空間、キーを設定して、
dataTypeがARRAYに設定された項目にマップする必要があります。 - 例については、AlexaTextListをウィジェットのデータストアにバインドする例を参照してください。
listItemsプロパティには、APLドキュメント内の静的配列を設定することもできます。この方法はテストに役立ちますが、ベストプラクティスではありません。可能な場合は、データバインディングを使用して配列をリストに渡してください。
AlexaTextListをウィジェットのデータストアにバインドする例
次の例では、データストアExtensionを有効にしてDataStoreという名前を割り当てます。次に、DataStore.dataBindingsプロパティでDS_ListItemsという名前のデータバインディングを定義して、指定されたリージョン、名前空間、キーにマップします。このデータバインディングのdataTypeをARRAYに設定します。
{
"extensions": [
{
"uri": "alexaext:datastore:10",
"name": "DataStore"
}
],
"settings": {
"DataStore": {
"dataBindings": [
{
"namespace": "TextListTestDataStore",
"key": "mainList",
"dataBindingName": "DS_ListItems",
"dataType": "ARRAY"
}
]
}
}
}
これで、${DS_ListItems}というデータバインディング式により、スキルがデータストアに保存する配列を参照できます。したがって、次のAlexaTextListテンプレートのインスタンスはリストを表示します。
{
"type": "AlexaTextList",
"theme": "dark",
"id": "myTextList",
"backgroundColor": "red",
"headerTitle": "ウィジェット内のテキストリストの例",
"buttonText": "フッターアクションボタン",
"stickyButton": true,
"listItems": "${DS_ListItems}"
}
Alexa.DataStore.ExecuteCommandsディレクティブまたはデータストアREST APIで次のデータストアコマンドを使用すると、データストアの指定した領域に、AlexaTextList用にフォーマットされた項目の配列を入力できます。
[
{
"type": "PUT_NAMESPACE",
"namespace": "TextListTestDataStore"
},
{
"type": "PUT_OBJECT",
"namespace": "TextListTestDataStore",
"key": "mainList",
"content": [
{
"primaryText": "最初のリスト項目です。"
},
{
"primaryText": "2番目のリスト項目です。"
},
{
"primaryText": "3番目のリスト項目です。"
},
{
"primaryText": "4番目のリスト項目です。"
}
]
}
]
テキストリストのタップアクションを指定する
AlexaTextListは対話型です。標準Viewportでは、ユーザーはヘッダーの戻るボタンをタップしたり、リストの各項目を選択したりできます。ウィジェットでは、ユーザーはオプションのフッターアクションボタンや個々のリスト項目をタップできます。次の表に示すように、これらのアクションに応答して実行するコマンドを指定できます。
| タップターゲット | 標準Viewportでの設定 | ウィジェットでの設定 |
|---|---|---|
|
ヘッダー |
ヘッダーの戻るボタンを設定できます。
|
該当なし |
|
フッターアクションボタン |
該当なし |
|
|
個々のリスト項目 |
|
|
ユーザーがリスト項目をスワイプできるようにする
ユーザーがリスト項目をスワイプしてアクションを実行できるようにするには、swipeDirectionプロパティを次のいずれかの値に設定します。
backwardforwardleft(下位互換性のために提供)right(下位互換性のために提供)
次に、その他のスワイプ関連のプロパティを必要に応じて設定します。これらのプロパティは、AlexaSwipeToActionのプロパティと対応しています。
swipeActionIconswipeActionIconTypeswipeActionIconForegroundswipeActionIconBackgroundonSwipeMoveonSwipeDoneoptionsButton1TextoptionsButton1CommandoptionsButton2TextoptionsButton2Command
スワイプアクションの詳細とテキストリスト内でAlexaSwipeToActionを使用する例については、AlexaTextList内のAlexaSwipeToActionを参照してください。
ユーザーがリスト項目の順序を変更できるようにする
テキストリストは、ユーザーがリスト内で項目を上下に移動できるように設定することが可能です。並べ替え機能は、Hub Round Smallを除くすべての標準Viewportプロファイルでサポートされます。
リストの並べ替えを有効にするには、enableReorderプロパティをtrueに設定します。各リスト項目に上向きと下向きの矢印が表示され、ユーザーはそれをタップして項目を上下に移動できます。ユーザーが項目の上向きボタンまたは下向きボタンをタップすると、AlexaTextListテンプレートは表示されているリストを更新して変更を反映します。デフォルトでは、テンプレートはさらにSendEventを使用して、更新されたリスト項目を含むリクエストをスキルに送信します。また、onReorderプロパティに指定されている追加コマンドも実行します。
デフォルトのSendEventコマンドを使用する
次の例は、enableReorderがtrueに設定されたAlexaTextListを示しています。ユーザーが「Peonies & Petals Nursery」項目の下向き矢印をタップすると、テンプレートはSendEventコマンドを実行して、更新されたリスト項目をスキルに送信します。さらに、onReorderプロパティに指定されているSetValueコマンドも実行して、ヘッダーのサブタイトルを変更します。
次の例は、ユーザーがリスト内で「Peonies & Petals Nursery」を下に移動したときにスキルに送信されるUserEventリクエストを示しています。
{
"type": "Alexa.Presentation.APL.UserEvent",
"requestId": "amzn1.echo-api.request.1",
"timestamp": "2023-04-10T17:26:34Z",
"locale": "ja-JP",
"arguments": [
{
"primaryText": "Ivy Lane Nursery and Tree Farm"
},
{
"primaryText": "Peonies & Petals Nursery",
"ratingNumber": "3.5",
"ratingText": "3.5"
},
{
"primaryText": "House of Hyacinth"
},
{
"primaryText": "Swan Nursery"
},
{
"primaryText": "House of Peonies"
},
{
"primaryText": "Spruce Nursery"
}
],
"components": {},
"source": {
"type": "TouchWrapper",
"handler": "Press",
"id": "",
"value": false
},
"token": "developer-provided-token"
}
この例のUserEventリクエストをテストするには、コードをスキルにコピーします。
並べ替えコマンドをカスタマイズする
スキルに送信されるリクエストをより細かく制御する必要がある場合は、enableReorderに加えてreorderListItemsDataBindingNameプロパティとonReorderプロパティを使用します。ユーザーが順序の変更ボタンをタップすると、AlexaTextListテンプレートは、表示されているリストを更新して変更を反映し、onReorderプロパティに指定されたコマンドを実行します。このシナリオでは、テンプレートはSendEventを自動的に実行しません。スキルにリクエストを送信する場合は、このコマンドをonReorderの一部として指定する必要があります。
ユーザーがリストを並べ替えたときに実行するコマンドをカスタマイズするには
- 表示するリスト項目の配列を使用して
bind変数を定義します。 bind変数の名前をreorderListItemsDataBindingNameプロパティに渡します。-
onReorderプロパティに、ユーザーがリストを並べ替えたときに実行するコマンドの配列を設定します。ユーザーがボタンをタップしてリストの順序を変更すると、
AlexaTextListはreorderListItemsDataBindingNameで指定されたbind変数の値を更新します。更新されたリストをスキルに送信するには、SendEventコマンドを使用してbind変数を渡します。
次の例は、reorderListItemsDataBindingNameプロパティがdynamicListItemsというbind変数に設定されたAlexaTextListを示しています。dynamicListItemsの初期値は、データソースから提供されるリスト項目の配列です。onReorderプロパティは、dynamicListItems変数をSendEventコマンドに渡して、更新されたリストを含むカスタム配列オブジェクトをスキルに送信します。
次の例は、ユーザーがリスト内で「Peonies & Petals Nursery」を下に移動したときにスキルに送信されるUserEventリクエストを示しています。
{
"type": "Alexa.Presentation.APL.UserEvent",
"requestId": "amzn1.echo-api.request.1",
"timestamp": "2023-04-10T18:03:57Z",
"locale": "ja-JP",
"arguments": [
{
"revisedList": [
{
"primaryText": "Ivy Lane Nursery and Tree Farm"
},
{
"primaryText": "Peonies & Petals Nursery",
"ratingNumber": "3.5",
"ratingText": "3.5"
},
{
"primaryText": "House of Hyacinth"
},
{
"primaryText": "Swan Nursery"
},
{
"primaryText": "House of Peonies"
},
{
"primaryText": "Spruce Nursery"
}
],
"type": "myCustomReorderCommand"
}
],
"components": {},
"source": {
"type": "TouchWrapper",
"handler": "Press",
"id": "",
"value": false
},
"token": "developer-provided-token"
}
AlexaTextListの例
以下は、AlexaTextListの例を示しています。この例では、リスト項目を選択すると、arguments配列に"ListItemSelected"とリスト項目の番号を含むUserEventリクエストが送信されます。このイベントをテストするには、例をスキルにコピーします。
次の例は、データソースから静的な項目セットを表示するウィジェットを示しています。primaryActionプロパティでは、Selectコマンドをwhen文と組み合わせて、ユーザーがフッターアクションボタンをタップしたか、リスト項目をタップしたかに応じて異なるコマンドを実行します。どちらの場合も、イベントはSendEventコマンドを実行して、ユーザーがタップしたボタンまたは項目に関する情報を含むUserEventをスキルに送信します。
関連トピック
最終更新日: 2025 年 10 月 09 日