APL基本コンポーネントのプロパティ
コンポーネントは、viewportに表示されるプリミティブな要素です。
Alexa Presentation Language(APL)のコンポーネントとは、クライアントでレンダリングされるプリミティブな視覚コンポーネントです。たとえば、Text
コンポーネントは画面にテキストを表示します。すべてのAPLコンポーネントは、基本プロパティのセットを共有します。
プロパティ
すべてのコンポーネントは、次のプロパティをサポートしています。
プロパティ | 型 | デフォルト | スタイル設定 | 動的 | 説明 | 追加されたバージョン |
---|---|---|---|---|---|---|
accessibilityLabel |
文字列 | — | × | ◯ | ユーザーがコンポーネントを選択したときに、この文字列が読み上げられます。 | 1.1 |
action , actions |
アクションの配列 | [] | ◯ | × | 複雑なタッチ操作に相当するプログラムです。 | 1.5 |
bind |
バインドの配列 | — | × | × | データバインディングコンテキストに追加する式です。 | 1.0 |
description |
文字列 | — | × | × | このコンポーネントの任意の説明です。 | 1.0 |
checked |
ブール値 | false |
× | ◯ | true の場合、このコンポーネントはchecked 状態に設定されます。 |
1.1 |
disabled |
ブール値 | false |
× | ◯ | true の場合、このコンポーネントはタッチやフォーカスに応答しません。 |
1.1 |
display |
文字列 有効な値: invisible 、none 、normal |
normal |
◯ | ◯ | コンポーネントが画面に表示されるかどうかを指定します。 | 1.1 |
entities 、entity |
エンティティの配列 | — | × | ◯ | Alexaでリファレンスの明確化に使用されるOpaqueデータです。 | 1.0 |
handleTick |
Tickハンドラーの配列 | [] | × | × | 時間が経過すると呼び出されるティックハンドラーです。 | 1.4 |
handleVisibilityChange |
可視性変更ハンドラーの配列 | [] |
× | × | コンポーネントの可視性が変更されたときに呼び出される可視性ハンドラーです。 | 2024.1 |
height |
正のディメンション | auto |
◯ | ◯ | コンポーネントに指定する高さです。 | 1.0 |
id |
文字列 | — | × | × | ナビゲーションおよびイベントに使用する、コンポーネントの参照名です。有効なコンポーネントIDは、正規表現[_a-zA-Z][_a-zA-Z0-9]* にマッチします。 |
1.0 |
inheritParentState |
ブール値 | false |
× | × | true の場合、コンポーネントの状態を、コンポーネントの親の状態で置き換えます。 |
1.0 |
layoutDirection |
文字列 有効な値: LTR 、RTL 、inherit |
"inherit" | ◯ | ◯ | コンポーネントがレンダリングされる方向です。このプロパティは、左から右、または右から左に記述する言語に設定します。 | 1.7 |
maxHeight |
正のディメンション | — | ◯ | ◯ | このコンポーネントの高さの上限です。 | 1.0 |
maxWidth |
正のディメンション | — | ◯ | ◯ | このコンポーネントの幅の上限です。 | 1.0 |
minHeight |
負でないディメンション | 0 | ◯ | ◯ | このコンポーネントの高さの下限です。 | 1.0 |
minWidth |
負でないディメンション | 0 | ◯ | ◯ | このコンポーネントの幅の下限です。 | 1.0 |
onMount |
コマンドの配列 | — | × | × | コンポーネントが最初に表示されたときに実行されるコマンドです。 | 1.1 |
onCursorEnter |
コマンドの配列 | [] | × | × | カーソル(マウスポインター)がコンポーネントのアクティブな領域に入ったときに実行するコマンドです。 | 1.2 |
onCursorExit |
コマンドの配列 | [] | × | × | カーソル(マウスポインター)がコンポーネントのアクティブな領域から出たときに実行するコマンドです。 | 1.2 |
onCursorMove |
コマンドの配列 | [] | × | × | カーソル(マウスポインター)がコンポーネントのアクティブな領域内を移動したときに実行するコマンドです。 | 2024.3 |
onSpeechMark |
コマンドの配列 | [] | × | × | speech プロパティで指定されたオーディオにスピーチマークが見つかったときに実行するコマンドです。 |
2023.1 |
onLayout |
コマンドの配列 | [] | × | × | コンポーネントのレイアウトの計算が変更されたときに実行するコマンドです。 | 2024.2 |
opacity |
数値 | 1.0 | ◯ | ◯ | このコンポーネントと子の不透明度です。 | 1.0 |
padding |
負でない絶対ディメンションの配列 | [] | ◯ | ◯ | コンポーネントの両側に追加するスペースです。 | 1.6 |
paddingBottom |
負でない絶対ディメンション | 0 | ◯ | ◯ | このコンポーネントの下側に追加するスペースです。 | 1.0 |
paddingEnd |
負でない絶対ディメンション | — | ◯ | ◯ | このコンポーネントの終点に追加するスペースです。終点は、コンポーネントのlayoutDirection に応じて、コンポーネントの左側または右側になります。 |
1.7 |
paddingLeft |
負でない絶対ディメンション | 0 | ◯ | ◯ | このコンポーネントの左側に追加するスペースです。 | 1.0 |
paddingRight |
負でない絶対ディメンション | 0 | ◯ | ◯ | このコンポーネントの右側に追加するスペースです。 | 1.0 |
paddingStart |
負でない絶対ディメンション | — | ◯ | ◯ | このコンポーネントの始点エッジに追加するスペースです。始点は、コンポーネントのlayoutDirection に応じて、コンポーネントの左側または右側になります。 |
1.7 |
paddingTop |
負でない絶対ディメンション | 0 | ◯ | ◯ | このコンポーネントの上側に追加するスペースです。 | 1.0 |
pointerEvents |
文字列 有効な値: auto 、none |
auto |
× | ◯ | コンポーネントをタッチイベントのターゲットにできるかどうかを制御します。 | 2024.2 |
preserve |
文字列の配列 | — | × | × | Reinflate コマンドでドキュメントを再インフレートする際に保存するプロパティです。 |
1.6 |
role |
文字列 | — | ◯ | × | コンポーネントの役割または目的です。 | 1.5 |
shadowColor |
色 | transparent | ◯ | ◯ | 影の色です。 | 1.2 |
shadowHorizontalOffset |
絶対ディメンション | 0 | ◯ | ◯ | 影の水平方向のオフセットです。 | 1.2 |
shadowRadius |
負でない絶対ディメンション | 0 | ◯ | ◯ | 影のぼかしの半径です。 | 1.2 |
shadowVerticalOffset |
絶対ディメンション | 0 | ◯ | ◯ | 影の垂直方向のオフセットです。 | 1.2 |
speech |
不透明 | — | × | × | オーディオ再生に関する変換済みの音声の情報です。 | 1.0 |
style |
スタイル | — | × | × | 適用するスタイル(複数可)の名前です。 | 1.0 |
trackChanges |
文字列の配列 | [] | × | × | 視覚コンテキストの変更を追跡してレポートするためのプロパティです。 | |
transform |
transformの配列 | — | × | ◯ | (transformations)変換の配列です。 | 1.1 |
type |
文字列 | 必須 | × | × | コンポーネントの型です。 | 1.0 |
when |
ブール値 | true |
× | × | false に評価される場合、このコンポーネントはインフレートされません。 |
1.0 |
width |
正のディメンション | auto |
◯ | ◯ | このコンポーネントに指定する幅です。 | 1.0 |
「デフォルト」列は、プロパティのデフォルト値を示します。必須プロパティはすべて設定する必要があります。設定しない場合、コンポーネントはインフレートされません。デフォルト値のないプロパティは、「デフォルト」列にダッシュ(—)が表示されています。デフォルト値なしの解釈はプロパティによって異なります。たとえば、speech
プロパティが設定されていない場合、SpeakItemコマンドを実行してもコンポーネントはテキストを読み上げません。maxHeight
が設定されていない場合、コンポーネントは任意の高さに拡大される可能性があります。これは、maxHeight
を大きい数値に設定した場合と同等です。
「スタイル設定」列は、スタイルから設定できるプロパティかどうかを示します。コンポーネントのプロパティに値を直接指定すると、スタイル定義の値はすべてオーバーライドされます。次の例では、myTextStyle
の定義に関係なく、Text
コンポーネントの不透明度は常に0.5に設定されます。
{
"type": "Text",
"opacity": 0.5,
"style": "myTextStyle"
}
「動的」列は、SetValueコマンドを使用して動的に変更できるプロパティかどうかを示します。SetValue
を使用して動的プロパティを設定すると、スタイル値はすべて上書きされます。動的プロパティの設定を解除するメカニズムはありません。
コンポーネントがイベントのソースまたはターゲットである場合は、event.source
またはevent.target
に以下の値がレポートされます。
{
"bind": Map, // コンポーネントのデータバインディングコンテキストへのアクセス
"checked": Boolean, // チェック済みの状態
"disabled": Boolean, // 無効化の状態
"focused": Boolean, // フォーカス状態
"height": Number, // コンポーネントのdp単位の高さ(パディングを含む)
"id": ID, // コンポーネントのID
"opacity": Number, // コンポーネントの不透明度[0~1]
"pressed": Boolean, // 押された状態
"type": TYPE, // コンポーネントの型(Frame, Image)
"uid": UID, // ランタイムで生成されたコンポーネントの固有ID
"width": Number // コンポーネントのdp単位の幅(パディングを含む)
}
コンポーネント固有の値がevent.source
とevent.target
に追加されます。
accessibilityLabel
アクセシビリティモードでスクリーンリーダーが使用する文字列です。
actions
障がいなどの理由でユーザーが操作できない場合は、支援技術を使ってプログラムで画面上のコンポーネントを操作できます。コンポーネントは、この技術で使う一連のアクションを定義します。actions
プロパティにはアクションオブジェクトのリストが含まれます。各アクションオブジェクトには、name
と、実行するcommands
のセットがあります。アクションのname
には、標準アクション、カスタムアクションのいずれかを指定できます。
以下は、1つの標準アクション(activate
)と1つのカスタムアクション(thumbsup
)を定義するTouchWrapper
の例です。
{
"type": "TouchWrapper",
"actions": [
{
"name": "activate",
"label": "ユーザーへの応答",
"command": {
"type": "SendEvent",
"arguments": "Activated by action invocation"
}
},
{
"name": "thumbsup",
"label": "いいね!します。",
"command": {
"type": "SetValue",
"property": "Rating",
"value": 1
}
}
]
}
actions
プロパティは、次の表に挙げたプロパティを持つオブジェクトの配列です。
名前 | 型 | デフォルト | 説明 |
---|---|---|---|
command , commands |
コマンド配列 | — |
このアクションがトリガーされたら実行するコマンドの配列です。 |
enabled |
ブール値 | true |
true の場合、ユーザーはこのアクションを呼び出すことができます。 |
label |
文字列 | 必須 | ユーザーに提示する、このアクションのローカライズした説明です。 |
name |
文字列 | 必須 | 実行するアクションの名前です。 |
label
プロパティには、アクションのローカライズされた説明を指定します。ラベルの例として、「アイテムを削除」や「返信」などがあります。
enabled
プロパティにより、アクションを呼び出すことができるかどうかを決定します。無効のアクションもアクセシビリティシステムに表示される可能性がありますが、利用不可としてマークされます。
アクションリスト内の2つのアクションが同じname
プロパティを持つ場合、最初の1つが使用されます。2つ目のアクションは、最初のアクションが有効になっていない場合でも無視されます。
標準アクションは、標準イベントハンドラーに関連付けられた名前で予約されています。コマンド配列なしでアクションリストに標準アクションを指定した場合、アクションを呼び出すと指定されたイベントハンドラーが呼び出されます。標準アクションには、暗黙的と明示的の2種類があります。明示的なアクションを有効にするには、コンポーネントのactions
プロパティにアクションを指定する必要があります。暗黙的なアクションはデフォルトで有効になりますが、コマンドをオーバーライドすることができます。
次の表に、標準アクションを示します。
名前 | コンポーネント | タイプ | デフォルトイベントハンドラー | 説明 |
---|---|---|---|---|
|
明示的 |
1回押して離す操作、または1回のタップに相当します。 | ||
|
明示的 |
コンポーネントのダブルタップに相当します。 | ||
|
明示的 |
コンポーネントの長押しに相当します。 | ||
|
暗黙的 |
なし |
コンポーネントを1ページ後方にスクロールする操作に相当します。スクロールアクションは、スクロールの結果として呼び出される通常のハンドラーを呼び出します。 | |
|
暗黙的 |
なし |
コンポーネントを1ページ前方にスクロールする操作に相当します。スクロールアクションは、スクロールの結果として呼び出される通常のハンドラーを呼び出します。 | |
|
明示的 |
コンポーネントのスワイプジェスチャーに相当します。 | ||
|
明示的 |
|
1回のタップに相当します。 |
以下は、activate
アクションを定義するTouchWrapper
コンポーネントの例です。activate
アクションにはコマンド配列がありません。このため、このアクションを呼び出すと、onPress
プロパティで定義されたコマンドが呼び出されます。
{
"type": "TouchWrapper",
"onPress": {
"type": "SendEvent",
"arguments": "押されました。"
},
"actions": [
{
"name": "activate",
"label": "サーバーへのメッセージ"
}
]
}
タップジェスチャーと「押す」操作は非常に似ているため、「activate」アクションの結果としてonPress
が呼び出されてもそのイベントハンドラーが指定されていない場合、onTap
ハンドラーがフォールバックとして実行されます。
以下の例では、「activate」アクションにコマンド配列がなく、onPress
ハンドラーが指定されていないため、「activate」アクションはonTap
ハンドラーを呼び出します。
{
"type": "TouchWrapper",
"gestures": [
{
"type": "Tap",
"onTap": {
"type": "SendEvent",
"arguments": "これはactivateアクションで呼び出されます"
}
}
],
"actions": [
{
"name": "activate",
"label": "サーバーへのメッセージ"
}
]
}
暗黙的な標準アクションは無効にすることができます。次の例では、Pager
のアクセシビリティスクロールを無効にします。
{ "type": "Pager", "actions": [ { "name": "scrollforward", "label": "アクセシビリティスクロール", "enabled": false } ] }
bind
コンポーネントのbind
プロパティは、ローカルのバインド変数を使用して、コンポーネントとその子のデータバインディングコンテキストを拡張します。バインド変数の詳細については、APLバインド変数を参照してください。
checked
checked
プロパティは、コンポーネントがchecked
状態かどうかを設定します。スタイルを定義する際にコンポーネントの状態として使用できます。
コンポーネントのchecked
状態を変更するには、SetValue
コマンドを使用します。
親のchecked
状態を継承するには、子コンポーネントのinheritParentState
プロパティをtrue
に設定します。
disabled
disabled
プロパティは、コンポーネントがdisabled
状態かどうかを設定します。スタイルを定義する際にコンポーネントの状態として使用できます。disabled
がtrue
の場合、コンポーネントはタッチイベントに応答しません。
コンポーネントのdisabled
状態を変更するには、SetValue
コマンドを使用します。
親のdisabled
状態を継承するには、子コンポーネントのinheritParentState
プロパティをtrue
に設定します。
display
コンポーネントのdisplay
プロパティは、コンポーネントが画面に表示されるかどうかと、コンポーネントがレイアウトの計算にどのように影響するかを決定します。次の表に示す値のいずれかに設定します。
名前 | 説明 |
---|---|
invisible |
コンポーネントは描画されませんが、スペースを占有します。タッチイベントには応答しません。 |
none |
コンポーネントを削除します。コンポーネントはレイアウトの一部ではなくなり、タッチに応答しません。 |
normal |
コンポーネントを描画します。 |
display
プロパティは、コンポーネントの作成時に使用されるデータバインディングコンテキスト、順序数、インデックスには影響しません。たとえば、3つの子を持つコンテナーがあり、最初の子がdisplay=none
に設定されているとしても、最初の子はindex=0
でデータバインドされ、次の子はindex=1
になります。
次の表は、コンテンツの表示と非表示を切り替えるさまざまな方法を示しています。
表示 | 無効化 | 不透明度 | 表示の可否 | スペース占有の有無 | フォーカスの可否 | タッチの可否 | タッチおよびホバーのパススルー |
---|---|---|---|---|---|---|---|
normal | false |
> 0 | ◯ | ◯ | ◯ | ◯ | × |
normal | true |
> 0 | ◯ | ◯ | × | × | × |
normal | false |
0 | × | ◯ | ◯ | ◯ | × |
normal | true |
0 | × | ◯ | × | × | × |
invisible | any | any | × | ◯ | × | × | ◯ |
none | any | any | × | × | × | × | ◯(コンポーネントはスペースを占有しない) |
「フォーカスの可否」列はキーボードフォーカスを許可するかどうかを示します。「タッチの可否」列はタッチイベントに応答するかどうかを示します。display
がinvisible
またはnone
の場合、タッチイベントはコンポーネントが存在しないものとして通過し、スタック順で次のコンポーネントによって処理されます。displayがnormal
のコンポーネントはタッチイベントを通過させませんが、タッチイベントに応答するのはdisabled
がfalse
の場合だけです。
APL 2024.2以降では、pointerEventsプロパティにより、「タッチの可否」列と「タッチおよびホバーのパススルー」列に示されている動作がオーバーライドされる可能性があります。pointerEvents
がnone
の場合、コンポーネントとその子はポインターイベントのターゲットになりません。イベントは、Zオーダー順で次に対象となるコンポーネントに渡されます。
display=invisible
のコンポーネントの子要素は描画されません。つまり、invisibleのコンポーネントがvisibleの子要素を持つことはありません。同様に、コンポーネントにdisplay=none
が指定されている場合、コンポーネントとそのすべての子要素は表示階層から削除され、画面上のスペースを占有しません。
entities、entity
Opaque(不透明)のentity
データです。Alexaデバイスはentityデータをコンテキストとしてスキルに返します。このプロパティを通じて、コンポーネントの目的に関する情報を提供してスキルコードで使用できます。
このプロパティにはオブジェクトの配列を設定します。各オブジェクトには、id
、type
、value
の各プロパティを指定できます。その他のプロパティは視覚コンテキストに含められません。
視覚コンテキストの詳細については、スキルリクエストのAPL視覚コンテキストを参照してください。
handleTick
時間が経過すると実行されるTickイベントハンドラーの配列です。
ティックイベントハンドラーに対して生成されたイベントは、次のような形式になります。
"event": {
"source": {
"type": "COMPONENT_TYPE", // コンポーネントの型(Pager、TouchWrapperなど)
"handler": "Tick",
... // コンポーネントのソースプロパティ
}
}
event.source.type
プロパティには、コンポーネントの名前(TouchWrapper
、ScrollView
など)が設定されます。event.source
の詳細についてはイベントソースを参照してください。
コンポーネントのティックイベントハンドラーは、コンポーネントのデータバインディングコンテキストで実行されます。
handleVisibilityChange
コンポーネントの可視領域または全体的な不透明度が変更されたときに実行する可視性変更ハンドラーの配列です。
コンポーネントの可視性変更ハンドラーは、コンポーネントのデータバインディングコンテキストで実行されます。
height
コンポーネントの最終的な高さを計算するために使用される値です。height
は、次の4つの方法のいずれかで設定できます。
- 絶対ディメンション -
100dp
、25vh
、24px
などの値は、コンポーネントの高さを固定します。50.2
のような数字だけの値は、dp
値として解釈されます。したがって、50.2
は"50.2dp"
と同じです。絶対ディメンションの詳細については、絶対ディメンションを参照してください。 - 相対ディメンション -
25%
などの値は、コンポーネントの高さを親コンポーネントの高さの割合として設定します。これを機能させるには、親コンポーネントでディメンションが定義されている必要があります。親コンポーネントのheight
がauto
の場合、子コンポーネントで相対的な高さを使用することは未定義の動作となり、0に設定されます。相対ディメンションの詳細については、相対ディメンションを参照してください。 - 自動ディメンション -
auto
を指定すると、子の高さにパディングを加えた高さがコンポーネントに適用されます。Frame
の場合、この高さには境界線の高さも含まれます。 - ディメンション未設定 - コンポーネントの
height
が指定されていない場合、高さはコンポーネントのデフォルトの高さに戻ります。デフォルトの高さについては、個別のコンポーネントのドキュメントを参照してください。
height
には、垂直方向のパディング、境界線、含まれているすべての子の高さの合計よりも小さい値を設定することができます。この場合、コンポーネントのコンテンツは最終的なコンポーネントの高さにクリップされます。
コンポーネントのheight
は、可能な限り相対ディメンションで指定してください。相対ディメンションでサイズを指定したコンポーネントは、異なるサイズの画面に合わせて調整できます。ドキュメントがさまざまなデバイスで適切に表示されるようにする方法の詳細については、以下を参照してください。
id
コンポーネントのインスタンスに対して定義できる識別子です。id
により、視覚階層で特定のコンポーネントを見つけることができます。有効なid
を表す正規表現は[_a-zA-Z][_a-zA-Z0-9]*
です。ほかのid
と同じ値を使用しても構いませんが、一意の値を割り当てることをお勧めします。内部的には、APLによって各コンポーネントに内部ID(uid
)が割り当てられます。
次の例は、Text
コンポーネントとImage
コンポーネントを含むContainer
を示しています。
{
"type": "Container",
"items": [
{
"type": "Text",
"id": "myText"
},
{
"type": "Image"
}
]
}
Container
、Text
、Image
には、それぞれ:1001
、:1002
、:1003
のような一意の内部ID値が割り当てられます。Alexaは、生成された内部uid
と開発者が割り当てたid
値の両方を視覚コンテキストにレポートします。
コンポーネントのid
は、コマンドのターゲットとなるコンポーネントを指定するためにセレクター構文で使用できます。
inheritParentState
コンポーネントの状態を、コンポーネントの親の状態に置き換えます。コンポーネントの見た目を親の状態に合わせて変更する必要があるときに使用します。たとえば、ユーザーがTouchWrapper
を押したときに、TouchWrapperの内側にあるTextコンポーネントの色を変更する場合を考えます。inheritParentState
をtrue
に設定すると、TouchWrapper
の状態が変わるたびにText
コンポーネントの状態も変更されます。
layoutDirection
コンポーネントがレンダリングされる方向を指定します。このプロパティを次のいずれかに設定します。
inherit
– デフォルトです。コンポーネントは、親からlayoutDirectionを継承します。コンポーネントがmainTemplate
の直下にある場合、コンポーネントはドキュメントで指定されたlayoutDirection
を継承します。LTR
– コンポーネントは左から右方向を使用します。RTL
– コンポーネントは右から左方向を使用します。
コンポーネントのlayoutDirection
は、paddingStart
プロパティとpaddingEnd
プロパティはpaddingLeft
プロパティとpaddingRight
プロパティをどのように上書きするかを決定します。
layoutDirection
プロパティによって、以下のコンポーネントの内部レイアウトが決まります。
layoutDirection
を設定するための推奨方法は、ドキュメントレベルのlayoutDirection
をデータソースの値に設定することです。レイアウトの特定のコンポーネントにドキュメント全体のlayoutDirection
とは異なる設定をする必要がある場合は、コンポーネントレベルのlayoutDirection
を使用します。
以下の例では、Container
内に複数のテキストブロックを表示しています。すべてのテキストブロックがドキュメントのデフォルトのlayoutDirection
を使用していますが、1つだけ値をオーバーライドして別の値を使用しています。
この例では、データソースのexampleDataSource.responseLanguage.layoutDirection
を変更すると、画面に表示されるレイアウトが自動的に変更されます。スキルに送信されたリクエストで指定されたロケールを使用して、layoutDirection
とlang
の値を特定し、これらの値をデータソースのAPLに渡します。
さまざまな言語をサポートし、リクエストのロケールを判定する方法の詳細については、多言語に対応するスキルを開発するを参照してください。
alexa-layouts
パッケージで提供されるレスポンシブ対応コンポーネントもlayoutDirection
パラメーターをサポートしています。レスポンシブ対応コンポーネントでこのプロパティを設定する方法の詳細については、右から左に記述する言語のサポート(レスポンシブ対応コンポーネントとテンプレート)を参照してください。maxHeight
コンポーネントの最大の高さを制限するディメンションです。コンポーネントの高さがmaxHeight
より大きくなることはありません。maxHeight
プロパティは常に、minHeight
プロパティと同じかそれ以上にする必要があります。maxHeight
プロパティが指定されていない場合は、無限と見なされます。
maxWidth
コンポーネントの最大の幅を制限するディメンションです。コンポーネントの幅がmaxWidth
より大きくなることはありません。maxWidth
プロパティは常に、minWidth
プロパティと同じかそれ以上にする必要があります。maxWidth
プロパティが指定されていない場合は、無限と見なされます。
minHeight
コンポーネントの最小の高さを制限するディメンションです。コンポーネントの高さがminHeight
より小さくなることはありません。minHeight
プロパティは常に、maxHeight
プロパティと同じかそれ以下にする必要があります。minHeight
プロパティが指定されていない場合は、0と見なされます。
minWidth
コンポーネントの最小の幅を制限するディメンションです。コンポーネントの幅がminWidth
より小さくなることはありません。minWidth
プロパティは常に、maxWidth
プロパティと同じかそれ以下にする必要があります。minWidth
プロパティが指定されていない場合は、0と見なされます。
onCursorEnter
カーソルがコンポーネントのアクティブな領域に入ったときに実行するコマンドです。
event.source.value
プロパティにコンポーネントの標準的なsource値が設定されます。詳細については、 イベントのsourceプロパティを参照してください。
disabled状態がtrue
に設定されているコンポーネントは、カーソルイベントの変更に応答しないため、onCursorEnter
イベントハンドラーに割り当てられたコマンドは実行されません。無効なコンポーネントの上にカーソルがある状態で、そのコンポーネントが有効になった場合、そのコンポーネントに対してonCursorEnterイベントが生成されます。
生成されるイベントの形式は次のようになります。
"event": {
"source": {
"type": "COMPONENT_TYPE", // コンポーネントの型(Pager、TouchWrapperなど)
"handler": "CursorMove",
... // コンポーネントのソースプロパティ
},
"component": {
"x": Number, // コンポーネントのmoveイベントのX位置(dp)
"y": Number, // コンポーネントのmoveイベントのY位置(dp)
"width": Number, // コンポーネントのdp単位での横幅
"height": Number, // コンポーネントのdp単位での縦幅
}
}
event.source.type
プロパティには、コンポーネントの名前(TouchWrapper
、ScrollView
など)が設定されます。event.source
の詳細についてはイベントソースを参照してください。
onCursorEnter
イベントハンドラーは、コンポーネントのデータバインディングコンテキストで高速モードで実行されます。
onCursorExit
カーソルがコンポーネントのアクティブな領域から出たときに実行するコマンドです。
event.source.value
プロパティにコンポーネントの標準的なsource値が設定されます。詳細については、 イベントのsourceプロパティを参照してください。
disabled状態がtrue
に設定されているコンポーネントは、カーソルイベントの変更に応答しないため、onCursorExit
イベントハンドラーに割り当てられたコマンドは実行されません。無効なコンポーネントの上にカーソルがある状態で、そのコンポーネントが有効になった場合、そのコンポーネントに対してonCursorExitイベントが生成されます。
生成されるイベントの形式は次のようになります。
"event": {
"source": {
"type": "COMPONENT_TYPE", // コンポーネントの型(Pager、TouchWrapperなど)
"handler": "CursorExit",
... // コンポーネントのソースプロパティ
}
}
event.source.type
プロパティには、コンポーネントの名前(TouchWrapper
、ScrollView
など)が設定されます。event.source
の詳細についてはイベントソースを参照してください。
onCursorExit
イベントハンドラーは、コンポーネントのデータバインディングコンテキストで高速モードで実行されます。
onCursorMove
カーソルがコンポーネントのアクティブな領域内を移動したときに実行するコマンドです。
event.source.value
プロパティにコンポーネントの標準的なsource値が設定されます。詳細については、 イベントのsourceプロパティを参照してください。
disabled状態がtrue
に設定されているコンポーネントは、カーソルイベントの変更に応答しないため、onCursorMove
イベントハンドラーに割り当てられたコマンドは実行されません。
移動イベントは、onCursorEnter
イベントまたはonCursorExit
イベントの実行時には実行されません。
生成されるイベントの形式は次のようになります。
"event": {
"source": {
"type": "COMPONENT_TYPE", // コンポーネントの型(Pager、TouchWrapperなど)
"handler": "CursorMove",
... // コンポーネントのソースプロパティ
},
"component": {
"x": Number, // コンポーネントのmoveイベントのX位置(dp)
"y": Number, // コンポーネントのmoveイベントのY位置(dp)
"width": Number, // コンポーネントのdp単位での横幅
"height": Number, // コンポーネントのdp単位での縦幅
}
}
event.source.type
プロパティには、コンポーネントの名前(TouchWrapper
、ScrollView
など)が設定されます。event.source
の詳細についてはイベントソースを参照してください。
onCursorMove
イベントハンドラーは、コンポーネントのデータバインディングコンテキストで高速モードで実行されます。
onMount
コンポーネントが最初に表示されたときに実行されるコマンドです。マウントコマンドは、視覚的な画面切り替えを表示するために使用します。マウント時には、event.source.value
は未設定のままになります。
onMount
コマンドは、ドキュメントの読み込み時にトリガーされます。コンポーネント自体が非表示である場合や画面に表示されていない場合でも、コンポーネントのonMount
コマンドは実行されます。
生成されるイベントの形式は次のようになります。
"event": {
"source": {
"type": "COMPONENT_TYPE", // コンポーネントの型(Pager、TouchWrapperなど)
"handler": "Mount",
... // コンポーネントのソースプロパティ
}
}
event.source.type
プロパティには、コンポーネントの名前(TouchWrapper
、ScrollView
など)が設定されます。event.source
の詳細についてはイベントソースを参照してください。
onMount
イベントハンドラーは、コンポーネントのデータバインディングコンテキストで通常モードで実行されます。コンポーネントレベルとドキュメントレベルのonMount
ハンドラーの相互作用については、ドキュメントのonMount
プロパティを参照してください。
onLayout
コンポーネントのレイアウトの計算が変更されたときに実行するコマンドです。
このハンドラーは、コンポーネントが最初に表示されるとき(onMount
)に呼び出され、その後、コンポーネントのレイアウトが変更されるたびに再び呼び出されます。
このハンドラーはレイアウトが計算された直後に呼び出されますが、イベントを受け取った時点では、新しいレイアウトはまだ画面に反映されていない可能性があります。これは特に、レイアウト(ディメンション)アニメーションが進行中の場合に当てはまります。
event.source.value
プロパティにコンポーネントの標準的なsource値が設定されます。詳細については、 イベントのsourceプロパティを参照してください。
生成されるイベントの形式は次のようになります。
"event": {
"source": {
"type": "COMPONENT_TYPE", // コンポーネントの型(Pager、TouchWrapperなど)
"handler": "Layout",
... // コンポーネントのソースプロパティ
},
"width": NUMBER, // レイアウト変更後のコンポーネントの幅
"height": NUMBER, // レイアウト変更後のコンポーネントの高さ
"x": NUMBER, // 親コンポーネント内でのコンポーネントのX座標
"y": NUMBER // 親コンポーネント内でのコンポーネントのY座標
}
次の例では、onLayout
を使用して水平方向のSequence
のサイズを変更し、異なるサイズの4つのText
コンポーネントが表示されるようにします。これらのコンポーネントは、それぞれwidth
がauto
に設定されています。Text
コンポーネントのonLayout
ハンドラーは、when
条件を使用して、最初の4つの子項目についてコマンドを1回ずつ実行します。SetValue
コマンドによってSequence
の幅を広げ、Text
項目の表示に十分な大きさにします。
{
"type": "APL",
"version": "2024.3",
"theme": "dark",
"mainTemplate": {
"items": [
{
"type": "Container",
"height": "100%",
"width": "100%",
"padding": "16dp",
"bind": [
{
"name": "TotalItemsToShow",
"value": ["最初の項目", "テキスト1", "3番目の項目", "T3", "テキスト4", "テキスト5", "テキスト6"]
}
],
"items": [
{
"type": "Sequence",
"scrollDirection": "horizontal",
"data": "${TotalItemsToShow}",
"height": "auto",
"width": 100,
"maxWidth": "75%",
"items": {
"type": "Text",
"width": "auto",
"height": "auto",
"text": "${data}",
"spacing": 10,
"onLayout": [
{
"when": "${index <= 3}",
"type": "SetValue",
"componentId": ":parent()",
"property": "width",
"value": "${event.x + event.width}"
}
]
}
},
{
"type": "Text",
"id": "showResult",
"text": "合計項目数:${TotalItemsToShow.length}(すべて表示するにはスクロール)"
}
]
}
]
}
}
onLayout
イベントハンドラーは、コンポーネントのデータバインディングコンテキストで高速モードで実行されます。
onSpeechMark
speech
プロパティで指定されたオーディオにスピーチマークが見つかったときに実行するコマンドです。
スピーチマークの詳細については、スピーチマーク - Amazon Pollyを参照してください。
event.source.value
プロパティにコンポーネントの標準的なsource値が設定されます。詳細については、 イベントのsourceプロパティを参照してください。
onSpeechMark
イベントは、コンポーネントのspeech
プロパティにスピーチマークのあるオーディオが設定されている場合に、SpeakItem
コマンドの実行中に発生します。
生成されるイベントの形式は次のようになります。
"event": {
"source": {
"type": "COMPONENT_TYPE", // コンポーネントの型(Pager、TouchWrapperなど)
"handler": "SpeechMark",
... // コンポーネントのソースプロパティ
},
"markType": MARK_TYPE, // スピーチマークのタイプ
"markTime": NUMBER, // スピーチマークの開始時間(ミリ秒)
"markValue": STRING
}
各スピーチマークにはタイプがあり、次の表に示す値のいずれかになります。
タイプ | 説明 |
---|---|
|
入力テキスト内のセンテンス要素を示します。 |
|
テキスト内の単語要素を示します。 |
|
スピーチ音声の各音素に対応する顔と口の動きを表します。 |
|
SSML入力テキストの |
たとえば、SpeakItem
コマンドが「right」という単語を読み上げたときにword
スピーチマークが生成された場合、次のイベントが生成されます。
"event": {
"source": {
"type": "Text",
"handler": "SpeechMark",
},
"markType": "word",
"markTime": 3562,
"markValue": "right"
}
onSpeechMark
イベントハンドラーは、コンポーネントのデータバインディングコンテキストで高速モードで実行されます。
以下の例は、SpeakItem
を使用して短文を読み上げるAPLドキュメントを示しています。この文には向きを表す単語が含まれています。onSpeechMark
ハンドラーは、文中の単語に対応する矢印のベクターグラフィックを表示するコマンドを実行します。たとえば、Alexaが「right」という単語を読み上げると矢印が右を指し、Alexaが「down」という単語を読み上げると下を指します。 この例では、onSpeechMark
ハンドラーでwhen
を使用して、「right」、「left」、「up」、「down」、「disappear」の各単語に応じてベクターグラフィックを更新します。
opacity
このコンポーネントとその子に不透明度(opacity
)を一律に適用します。opacity
は0以上1以下の数値です。この範囲を超える数値を指定した場合は、1に設定されます。実際に表示されるコンポーネントの不透明度は、opacity
値に上位レベルの不透明度の値を掛けたものになります。
たとえば、現在のコンポーネントの不透明度が0.5で、親の不透明度が0.8の場合、実際に表示されるコンポーネントの不透明度は0.4になります。コンポーネントの不透明度を0に設定すると表示されなくなりますが、コンポーネント階層からは削除されません。
padding
padding
プロパティは、コンポーネントの周りにスペースを追加します。計算されたコンポーネントのwidth
とheight
により、コンポーネントの外側の境界と切り抜かれる境界が定義されます。paddingに指定する値は、コンポーネントの外側の境界とコンテンツとの間のスペースを指定します。paddingプロパティには、負ではない絶対ディメンションの値を指定する必要があります。

paddingの値は、padding
プロパティで指定できます。コンポーネントの各辺には別々のプロパティを使用します。
padding
– コンポーネントの複数の辺に対してパディングを設定する値の配列を受け取ります。paddingBottom
– コンポーネントの下側にパディングを設定します。paddingLeft
– コンポーネントの左側にパディングを設定します。paddingRight
– コンポーネントの右側にパディングを設定します。paddingTop
– コンポーネントの上側にパディングを設定します。paddingStart
– コンポーネントのlayoutDirection
に応じて、左または右のパディングを上書きするパディングです。詳細については、paddingStart, paddingEndを参照してください。paddingEnd
– コンポーネントのlayoutDirection
に応じて、左または右のパディングを上書きするパディングです。詳細については、paddingStart, paddingEndを参照してください。
padding
プロパティは1~4個の値の配列です。左、上、右、下の順に指定します。この配列に指定する値が4つより少ない場合、
padding
プロパティは以下の表に記載したルールに従って4つの要素の配列に拡張されます。
配列のマッピング | 説明 |
---|---|
|
X値を4辺すべてに割り当てます。 |
|
X値を左と右に割り当てます。Y値を上と下に割り当てます。 |
|
X値を左に割り当てます。Y値を上と下に割り当てます。Z値を右に割り当てます。 |
ほかの4つのpaddingプロパティは、特定の辺のpadding
に指定された値を上書きします。以下の例は、同じパディングを指定する3つの方法です。それぞれ、左と右に10、上に20、下に40のパディングが設定されます。
1つのpadding
プロパティで、左に10、上に20、右に10、下に40の値を指定します。
{
"padding": [10,20,10,40]
}
1つのpadding
プロパティで、左と右に10、上と下に20の値を指定します。次に、paddingBottom
プロパティで下の値を40に上書きします。
{
"padding": [10,20],
"paddingBottom": 40
}
1つのpadding
プロパティで、4辺すべてのパディングを10に指定する値を設定します。次に、paddingTop
で上のパディング値を20に上書きします。次に、paddingBottom
で下のパディング値を40に上書きします。
{
"padding": 10,
"paddingTop": 20,
"paddingBottom": 40
}
paddingStart, paddingEnd
指定すると、paddingStart
プロパティとpaddingEnd
プロパティによって paddingLeft
プロパティとpaddingRight
プロパティが上書きされます。上書きはlayoutDirection
プロパティに依存します。
プロパティ | 左から右("LTR") | 右から左("RTL") |
---|---|---|
|
|
|
|
|
|
たとえば、layoutDirection
がLTR
の場合、次のコンポーネントでは左のパディングが15、右のパディングが20になります。layoutDirection
がRTL
の場合、コンポーネントは右のパディングが15、左のパディングが20になります。
{
"paddingLeft": 10,
"paddingRight": 10,
"paddingStart": 15,
"paddingEnd": 20
}
paddingStart
プロパティとpaddingEnd
プロパティにはAPL 1.7以降が必要です。これらのプロパティと、コンポーネントのpaddingLeft
/ paddingRight
プロパティの両方を設定できます。APLの以前のバージョンでは、新しいプロパティは無視されます。preserve
Reinflate
コマンドでドキュメントを再インフレートするときに保存する、動的なコンポーネントプロパティとバインドされたプロパティの配列です。Reinflate
コマンドは、古いコンポーネントのid
が新しいid
と一致した場合にこれらのプロパティを保持します。コンポーネントにid
がない場合、preserve
に指定されたコンポーネントプロパティは保存されません。
以下の例では、TouchWrapper
のchecked
状態が保存されます。
{
"type": "TouchWrapper",
"id": "MyUniqueID",
"preserve": ["checked"]
}
バインドされるプロパティも保存できます。以下の例では、Counter
と呼ばれるバインドされるプロパティと、Counter
を増分させるTouchWrapper
を定義しています。preserve
配列には、このバインドされるプロパティの名前が含まれています。このため、ドキュメントが再インフレートされるとCounter
の値が保存されます。
{
"type": "TouchWrapper",
"id": "MyCounterButton",
"bind": [
{
"name": "Counter",
"value": 0
}
],
"preserve": [
"Counter"
],
"items": {
"type": "Text",
"text": "このボタンを${Counter}回押しました"
},
"onPress": [
{
"type": "SetValue",
"property": "Counter",
"value": "${Counter + 1}"
}
]
}
コンポーネントの中には、動的なプロパティやバインドされるプロパティに加えて、コンポーネント固有のデータを保存するpreserve
プロパティを持つものもあります(名前はコンポーネント固有)。たとえば、スクロールするコンポーネントにはスクロール位置を保存するpreserve
プロパティが含まれます。次のコンポーネントのpreserve
プロパティは、以下を参照してください。
preserve
プロパティは、新しいコンフィギュレーション値によって追加されたevent
プロパティを使ってコンポーネントのデータバインディングコンテキストで評価されます。そうすることで、保存するプロパティを動的に選択できます。
pointerEvents
コンポーネントをポインターイベントのターゲットにできるかどうかを決定します。ポインターイベントには、タッチイベントやカーソルイベント(上、移動、下、キャンセル)、ジェスチャー、ホバーが含まれますが、これらに限定されません。
このプロパティには次の値を指定できます。
名前 | 説明 |
---|---|
|
コンポーネントはポインターイベントのターゲットになることができます(デフォルト)。ポインターイベントの動作を決定するデフォルトのルールが適用されます。 |
|
コンポーネントとその子はポインターイベントのターゲットになりません。イベントは、Zオーダー順で次に対象となるコンポーネントに渡されます。このオプションは、通常のポインターイベントの動作をオーバーライドしてイベントを通過させます。 |
pointerEvents
プロパティは、disabled
プロパティとは異なります。disabled
がtrue
の場合、コンポーネントはポインターイベントに応答せず、それらのイベントが次のコンポーネントに渡されることもありません。pointerEvents
がnone
の場合、コンポーネントはポインターイベントに応答しませんが、それらのイベントはZオーダー順で次に対象となるコンポーネントに渡されます。disabled
プロパティおよびパススルーに影響するその他のプロパティの詳細については、disabled
とdisplay
を参照してください。以下の例では、グラデーションを表示するVectorGraphic
がSequence
の上に重ねて配置され、Sequence
の下部を覆っています。デフォルトの動作では、VectorGraphic
がすべてのタッチイベントをキャプチャして通過させないため、Sequence
の下部をタッチしてドラッグしてもスクロールしません。pointerEvents
をnone
に設定すると、ユーザーはSequence
のどの部分でもタッチしてドラッグし、コンテンツをスクロールできるようになります。
{
"type": "APL",
"version": "2024.3",
"theme": "dark",
"background": "#232F3E",
"mainTemplate": {
"items": {
"type": "Container",
"height": 400,
"width": 400,
"alignItems": "center",
"items": [
{
"type": "Sequence",
"height": "100%",
"width": "100%",
"data": ["red", "blue", "green", "yellow", "gray", "purple"],
"item": {
"type": "Frame",
"height": 125,
"width": "100%",
"background": "${data}"
},
"lastItem": [
{
"type": "Text",
"text": "リストの終わり",
"textAlign": "center",
"textAlignVertical": "center",
"height": 125
}
]
},
{
"type": "VectorGraphic",
"id": "OverlayEffect",
"position": "absolute",
"height": 100,
"width": 400,
"top": 300,
"source": "GradientOverlay",
"pointerEvents": "none"
}
]
}
},
"graphics": {
"GradientOverlay": {
"type": "AVG",
"version": "1.2",
"width": 400,
"height": 100,
"resources": [
{
"gradients": {
"linearGradient": {
"inputRange": [
0,
0.8
],
"colorRange": [
"#ffffff00",
"#000000ff"
],
"type": "linear",
"x2": 0,
"y2": 1,
"x1": 0,
"y1": 0
}
}
}
],
"items": [
{
"type": "path",
"pathData": "M0,0 L400,0 L400,100 L0,100 Z",
"fill": "@linearGradient"
}
]
}
}
}
role
role
は、コンポーネントの目的に関して、機械が読み取り可能な情報を提供します。一部の支援技術がこの情報を使用しています。たとえば、スクリーンリーダーは画面に表示されたコンポーネントを説明する際にrole
を利用できます。
APLは、コンポーネント上で次のロールをサポートします。
adjustable
– コンポーネントは「調整」可能です(例:スライダーはadjustableです)。alert
– ユーザーに提示する必要のある重要な情報を含む領域です。button
– クリックまたは押下されたときに一般的なアクションをトリガーする入力です。link
ロールと関連があります。checkbox
– チェックやチェック解除、チェック状態の混在が可能なチェックボックスです。combobox
– ユーザーが複数の選択肢から選択できるコンボボックスを表します。header
– コンテンツセクションのヘッダーとして機能します(例:ナビゲーションバーのタイトルなど)。image
– コンポーネントを画像として処理します。コンポーネントがボタンとしても機能する場合は、imagebutton
を使用します。imagebutton
– ボタンとしても機能する画像コンポーネントです。keyboardkey
– コンポーネントはキーボードのキーとして機能します。link
– トリガーされると、ユーザーエージェントが新しいリソースやディスプレイに移動する入力です。list
–listitem
のリストを含む領域です。listitem
– リスト内の個々の項目です。listitem
の上位レベルにはlist
が必要です。menu
– コンポーネントは選択可能なメニューです。menubar
– コンポーネントは複数のメニューのコンテナーです。menuitem
–menu
内の項目を表します。progressbar
– コンポーネントはタスクの進捗状況を表します。radio
– コンポーネントはラジオボタンとして機能します。radiogroup
– コンポーネントにはradio
ボタンのグループが含まれます。scrollbar
– 領域のスクロールを制御するスクロールバーを表します。search
– 検索フィールドとしても処理されるテキストフィールドコンポーネントです。spinbutton
– 選択肢のリストを開くボタンです。summary
– アプリの初回起動時に、コンポーネントがアプリ内で現在どのような状態になっているかという情報を提供するために使用します。switch
– チェック/チェック解除ではなく、オン/オフを切り替えることができるスイッチを表します。tab
– タブを表します。tab
の上位レベルにはtablist
が必要です。tablist
–tab
コンポーネントのリストを含む領域です。text
- コンポーネントは、変更できない静的なテキストとして扱われます。timer
– 経過時間や残り時間を表すカウンターを表示する領域です。toolbar
– ツールバー(アクションボタンやコンポーネントのコンテナー)を表すために使用します。
shadowColor
影の色です。通常は、ある程度の透明度がある色が使用されます。影の色には、全体のopacity
(不透明度)も適用されます。
shadowHorizontalOffset
影の描画の水平方向のオフセットです。正の数では影が右に、負の数では影が左に移動します。
shadowRadius
影のぼかしの半径です。
shadowVerticalOffset
影の描画の垂直方向のオフセットです。正の数では影が下に、負の数では影が上に移動します。
speech
コンテンツをスピーチ音声に変換するトランスフォーマーから提供される不透明データです。speech
プロパティで使用できるオーディオは、次のトランスフォーマーによって出力されます。
データバインディング式を使用して、speech
プロパティをトランスフォーマーの出力にバインドできます。その後、SpeakItem
コマンドまたはSpeakList
コマンドを使用して、Alexaでコンテンツを読み上げることができます。
style
コンポーネントのプロパティを設定するために使用する名前付きのスタイルです。
trackChanges
追跡するコンポーネントプロパティのリストです。追跡対象の状態またはプロパティへの各変更は、ドキュメントの視覚コンテキストに記録されてレポートされます。
たとえば、次の設定は、Video
コンポーネントの再生状態の変更を追跡するようにAPLに指示します。
{
"type": "Video",
"trackChanges": [ "playingState" ]
}
バインドされたプロパティの変更も追跡できます。次の例では、ボタンが押された回数を追跡します。
{
"type": "TouchWrapper",
"id": "MyCounterButton",
"bind": {
"name": "Counter",
"value": 0
},
"trackChanges": [ "Counter" ],
"items": {
"type": "Text",
"text": "このボタンを${Counter}回押しました"
},
"onPress": {
"type": "SetValue",
"property": "Counter",
"value": "${Counter + 1}"
}
}
コンポーネントによっては、動的プロパティやバインドされたプロパティのほかに、内部状態を表す特別なtrackChanges
プロパティ名を持つものがあります。
Video
- 再生状態の変更を追跡する追加のtrackChanges
プロパティ名があります。詳細については、Video
コンポーネントのtrackChanges
プロパティを参照してください。
trackChanges
プロパティは、コンポーネントのデータバインディングコンテキストで、新しい設定値が追加されたevent
プロパティを使用して評価されます。これにより、追跡するプロパティを動的に選択できます。
変更がどのようにスキルにレポートされるかの詳細については、スキルリクエストのAPL視覚コンテキストを参照してください。
transform
変換配列は、コンポーネントに適用される変換値の配列です。次に例を示します:
"transform": [ { "rotate": 30 }, { "scaleX": 1.5 }, { "translateX": 10 }]
transformは、単一のプロパティとそれに関連付けられた値を持つオブジェクトです。変換は右から左に適用されます(ウェブ標準に従います)。上の例では、コンポーネントはまず右に10dp移動し、50%拡大された後、その中心の周りに30度回転されます。
変換配列の各要素は、次のいずれかになります。
プロパティ | グループ | 型 | デフォルト | 説明 |
---|---|---|---|---|
rotate | 回転 | 数値 | 0.0 | 回転角度(度単位)です。正の角度で時計回りに回転します。 |
scale | スケール | 数値 | 1.0 | X方向とY方向に均等に拡大縮小されます。 |
scaleX | スケール | 数値 | 1.0 | X方向の倍率です(同じグループの場合は「scale」を上書きします)。 |
scaleY | スケール | 数値 | 1.0 | Y方向の倍率です(同じグループの場合は「scale」を上書きします)。 |
skewX | 傾斜 | 数値 | 1.0 | X軸の傾斜角度(度単位)です。X軸は横線のままです。 |
skewY | 傾斜 | 数値 | 1.0 | Y軸の傾斜角度(度単位)です。Y軸は縦線のままです。 |
translateX | 移動 | ディメンション | 0.0 | オブジェクトを右方向に平行移動する距離です。 |
translateY | 移動 | ディメンション | 0.0 | オブジェクトを下方向に平行移動する距離です。 |
同じグループのtransformプロパティは、単一のオブジェクトにまとめることができます。たとえば、以下は同等となります。
[ { "scaleX": 3.0, "scaleY": 2.0} ]
[ { "scale": 3.0, "scaleY": 2.0 } ]
[ { "scaleX": 3.0 }, { "scaleY": 2.0 } ]
[ { "scale": 2.0 }, { "scaleX": 1.5 } ]
変換は累積されます。最後の例では、X軸方向に1.5倍に拡大してから、両軸方向に2.0倍に拡大することで、最終的に{ "scaleX": 3.0, "scaleY": 2.0 }
というスケーリングになります。
変換は、コンポーネントのデフォルトの境界を使用してドキュメントレイアウトが計算された後、コンポーネントに適用されます。その結果、変換後のコンポーネントとその子コンポーネント以外のコンポーネントのドキュメントフローには影響しません。
平行移動値では、絶対ディメンション(10px
や20dp
など)と相対ディメンション(30%
など)の両方がサポートされます。相対ディメンションは、拡大縮小前のコンポーネントの幅と高さに基づいて計算されます。たとえば、コンポーネントを右下隅を中心に45度回転させるには、次のように入力します。
"transform": [
{ "translateX": "50%", "translateY": "50%" },
{ "rotate": 45 },
{ "translateX": "-50%", "translateY": "-50%" }
]
コンポーネントのデフォルトの境界は、transform
プロパティで定義されている変換が適用される前のコンポーネントの境界です。
コンポーネントの変換された境界は、transform
プロパティで定義された変換が適用された後のコンポーネントの境界です。
type
インフレートするコンポーネントを指定します。このセクションに記載したプリミティブコンポーネントのいずれか、または名前付きレイアウトを指定できます。
when
when
の式がtrue
の場合、コンポーネントをインフレートします。false
の場合は、コンポーネントとすべての子コンポーネントが無視されます。
width
コンポーネントの最終的な幅を計算するために使用される値です。width
は、次の4つの方法のいずれかで設定できます。
- 絶対ディメンション -
100dp
、25vh
、24px
などの値は、コンポーネントの幅を固定します。50.2
のような数字だけの値は、dp
値として解釈されます。したがって、50.2
は"50.2dp"
と同じです。絶対ディメンションの詳細については、絶対ディメンションを参照してください。 - 相対ディメンション -
25%
などの値は、コンポーネントの幅を親コンポーネントの幅の割合として設定します。これを機能させるには、親コンポーネントでディメンションが定義されている必要があります。親コンポーネントのwidth
がauto
の場合、子コンポーネントで相対的な幅を使用することは未定義の動作となり、0に設定されます。相対ディメンションの詳細については、相対ディメンションを参照してください。 - 自動ディメンション -
auto
を指定すると、子の幅にパディングを加えた幅がコンポーネントに適用されます。Frame
の場合、この幅には境界線の幅も含まれます。 - ディメンション未設定 - コンポーネントの
width
が指定されていない場合、幅はコンポーネントのデフォルトの幅に戻ります。デフォルトの幅については、個別のコンポーネントのドキュメントを参照してください。
width
には、水平方向のパディング、境界線、含まれているすべての子の幅の合計よりも小さい値を設定することができます。この場合、コンポーネントのコンテンツは最終的なコンポーネントの幅にクリップされます。
コンポーネントのwidth
は、可能な限り相対ディメンションで指定してください。相対ディメンションでサイズを指定したコンポーネントは、異なるサイズの画面に合わせて調整できます。ドキュメントがさまざまなデバイスで適切に表示されるようにする方法の詳細については、以下を参照してください。
影に関する注意事項
テキストコンポーネントでは、テキストの形状に応じた影が生成されます。その他のすべての種類のコンポーネントでは、対象となるコンポーネントの変換された境界を囲む矩形の影が生成されます(パディングも含まれます)。コンポーネントの影は、親コンテナーに合わせて切り取られます。
コンポーネントの影は、標準的な描画の順番に従って描画されます。つまり、描画順が後のコンポーネントの影は、先に描画されたコンポーネントの上に表示されます。コンポーネントの影が重なったり、不要にクリップされたりしないように、コンポーネントの周りに十分なスペースを確保してください。
関連トピック
- APLコンポーネント
- アクション可能なコンポーネントのプロパティ
- タッチ可能なコンポーネントのプロパティ
- 複数子コンポーネントのプロパティ
- Alexaデザインガイド: Alexa Presentation Language
最終更新日: 2025 年 10 月 09 日