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
プロパティを次のいずれかの値に設定します。
backward
forward
left
(下位互換性のために提供)right
(下位互換性のために提供)
次に、その他のスワイプ関連のプロパティを必要に応じて設定します。これらのプロパティは、AlexaSwipeToActionのプロパティと対応しています。
swipeActionIcon
swipeActionIconType
swipeActionIconForeground
swipeActionIconBackground
onSwipeMove
onSwipeDone
optionsButton1Text
optionsButton1Command
optionsButton2Text
optionsButton2Command
スワイプアクションの詳細とテキストリスト内で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 日