Sequentialコマンド
一連のコマンドを順番に実行します。前のコマンドが終了するのを待ってから、次のコマンドを実行します。Sequentialコマンドは、すべての子コマンドが終了すると終了します。
プロパティ
Sequentialコマンドには、共通のコマンドプロパティに加えて、以下の表に示すプロパティがあります。typeプロパティはSequentialに設定します。
コマンドを実行するために値が必要なプロパティの場合、以下の表の「デフォルト」列に「必須」と表示されています。それ以外の場合はデフォルト値が表示されますが、デフォルト値がないこともあります。
| プロパティ | 型 | デフォルト | 説明 |
|---|---|---|---|
|
|
コマンドの配列 |
[] |
このシーケンスが早期停止した場合に実行する、順番に並んだコマンドのリストです。 |
|
|
コマンドの配列 |
必須 |
連続して実行する順番に並んだコマンドのリストです。 |
|
|
配列 |
[] |
コマンドに対してマップするデータのリストです。 |
|
|
整数 |
0 |
これらのコマンドを追加で実行する回数です。 |
|
|
コマンドの配列 |
[] |
通常のコマンドとcatchコマンドの後に実行する、順番に並んだコマンドのリストです。 |
通常モードでは、commandsは順番に実行され、最後にfinallyコマンドが実行されます。repeatCountは通常のコマンドにのみ適用されます。
高速モードでは、commandsは繰り返すことなく順番に実行され、最後にfinallyコマンドが実行されます。
commandsのいずれかが(通常モードで)早期停止した場合、catchコマンドとfinallyコマンドは高速モードで実行されます。
通常モードでの実行中にfinallyコマンドのいずれかが停止した場合、残りのfinallyコマンドは高速モードで実行されます。
catch
catchを使用するには、APL 1.1以降が必要です。これよりも古いバージョンのAPLを実行しているデバイスには、別のエクスペリエンスを提供してください。
ほかのコマンドが実行されたことでSequentialコマンドが停止した場合、catchコマンドが実行されます。catchコマンドは「高速」モードで実行されます。すべてのdurationは無視され、各コマンドはdurationで指定した時間の最終値までジャンプします。catchコマンドはすべてのfinallyコマンドの前に実行されます。
catchコマンドは1回のみ実行されます。repeatCountプロパティは、catchコマンドには適用されません。
commands
実行するコマンドの配列です。コマンドは配列順に実行され、各コマンドが終了しない限り次のコマンドは開始されません。Sequentialコマンドのdelay値と、シーケンスの最初のコマンドのdelay値は累積で計算されます。次の例では、最初のSendEventコマンドが3000ミリ秒後に実行されます。
{
"type": "Sequential",
"delay": 1000,
"repeatCount": 2,
"commands": [
{
"type": "SendEvent",
"delay": 2000
},
{
"type": "SendEvent",
"delay": 2000
}
]
}
data
反復処理するデータの配列です。data配列にデータが含まれている場合、Sequentialコマンドはその配列を反復処理し、配列内の各値に対して新しいSequentialコマンドを作成します。新しい各Sequentialコマンドには、元のcommandsプロパティのコマンドが含まれます。これは、複数子コンポーネントにおけるデータ配列のインフレートのしくみに似ています。
たとえば、次のSequentialコマンドには、commandsに2つのコマンドと、data配列に2つの文字列が含まれています。
{
"type": "Sequential",
"data": ["item1", "item2"],
"commands": [
{
"type": "CustomCommand1",
"item": "${data}"
},
{
"type": "CustomCommand2",
"item": "${data}"
}
],
"catch": {
"type": "OnFailCustom"
},
"finally": {
"type": "OnFinishedCustom"
}
}
このコマンドは、data内の2つの項目のそれぞれに対してSequentialを1つずつ含むSequentialコマンドに拡張されます。したがって、最終的に実行されるコマンドは次のようになります。
{
"type": "Sequential",
"commands": [
{
"type": "Sequential",
"commands": [
{
"type": "CustomCommand1",
"item": "item1"
},
{
"type": "CustomCommand2",
"item": "item1"
}
]
},
{
"type": "Sequential",
"commands": [
{
"type": "CustomCommand1",
"item": "item2"
},
{
"type": "CustomCommand2",
"item": "item2"
}
]
}
],
"catch": {
"type": "OnFailCustom"
},
"finally": {
"type": "OnFinishedCustom"
}
}
反復処理中に、データバインディングコンテキストは以下の表に示すプロパティを含むように拡張されます。
| 名前 | 説明 |
|---|---|
|
|
データ配列のプロパティから割り当てられたデータです。 |
|
|
現在のデータ項目の0から始まるインデックスです。 |
|
|
データ配列内のデータ項目の合計数です。 |
これらのプロパティは、data配列プロパティに1つ以上の項目が含まれている場合に設定されます。
data配列プロパティは、catchプロパティとfinallyプロパティの動作には影響しません。
finally
finallyを使用するには、APL 1.1以降が必要です。これよりも古いバージョンのAPLを実行しているデバイスには、別のエクスペリエンスを提供してください。
finallyコマンドは、通常のSequentialコマンドが終了した後、または早期停止によりcatchコマンドが実行された後に実行されます。(a)Sequentialコマンド全体が高速モードで実行された場合、または(b)Sequentialコマンドが早期停止した場合を除き、finallyコマンドは通常モードで実行されます。
finallyコマンドは1回のみ実行されます。repeatCountプロパティは、finallyコマンドには適用されません。
repeatCount
この一連のコマンドを繰り返す回数です。デフォルトは0です。負の値は無視されます。
再インフレート時の処理方針
Reinflateコマンドを実行すると、Alexaがドキュメントを再インフレートした後でSequentialコマンドを再開できます。コマンドは、ReinflateのpreservedSequencers配列で指定されたsequencerで実行されている場合に再開されます。このコマンドでは、現在の繰り返し回数、繰り返す回数、コマンドのリストが保存されます。
Alexaがドキュメントを再インフレートすると、現在実行中のコマンドは、「再インフレート時の処理方針」で指定されたとおりに実行を継続します。
データ配列を使用したSequentialの例
以下の例では、項目のリストが表示されます。このボタンでは、リストからランダムな色を選択し、項目の色をランダムな色に変更して、項目のテキストを色の名前に変更するという、3つのSetValueコマンドを含むSequentialを定義しています。Sequentialは、data配列をSequenceに表示されている項目のリストと同じものに設定します。
コマンドが実行されると、リスト内の各項目の色が最初に変わり、次にテキストが変わります。項目は順番に更新されます。
リスト項目を同時に更新する同様の例については、データ配列を使用したParallelの例を参照してください。
関連トピック
最終更新日: 2025 年 12 月 04 日