Viewportプロファイル
Alexa viewportプロファイルパッケージは、条件付きロジックで使用できるviewportプロファイルのコレクションです。viewport特性で細かく設定するのではなくviewportプロファイルを使用することで、スムーズにレスポンシブ対応のAPLドキュメントを作成できます。
viewportプロファイルとは
画面付きのAlexa搭載デバイスでは、「Viewport」はユーザーに表示される画面領域のことを指します。それぞれのViewportには、形状、向き、サイズ、密度があります。viewportプロファイルは、viewport特性の範囲を表す名前付きのリソースです。プロファイルでは、viewportの各値(形状、サイズなど)を指定します。サイズと密度は、プロファイルが複数の物理デバイスを表すことができるように範囲として定義されます。たとえば、hubLandscapeSmall
というViewportプロファイルは、幅が960
~1280
ピクセル、高さが600
ピクセル未満の横長の長方形デバイスを含みます。
APLドキュメントを作成する場合、Alexa viewportプロファイルパッケージで提供されているAlexa viewportプロファイルを条件付きロジックで使用して、レスポンシブ対応のドキュメントに変更できます。
Alexa viewportプロファイルパッケージを読み込む
Alexa Viewportプロファイルパッケージのリソースを使用するには、ドキュメントのimport
配列にalexa-viewport-profiles
パッケージを追加します。alexa-viewport-profiles
パッケージの最新バージョンは1.6.0
です。
次に例を示します。
{
"import": [
{
"name": "alexa-viewport-profiles",
"version": "1.6.0"
}
]
}
条件付きロジックでviewport情報を使用する
viewportプロファイルパッケージでは、プロファイル用の名前付きのリソースと、プロファイルに統合されるviewport特性を提供しています。viewportサイズなどの値をハードコーディングするのではなく、これらのリソースを使用してください。
条件付きロジックでパッケージのリソースを使用するには、リソース名に予約文字の「@」を使用します。
次の例のwhen
句は、ユーザーのデバイスがhubRoundSmall
プロファイルの基準を満たしている場合にtrueに評価されます。
"when": "${@viewportProfile == @hubRoundSmall}"
次の例のwhen
句は、Viewportが長方形の場合にtrueに評価されます。
"when": "${@viewportShape == @viewportShapeRectangle}"
APLドキュメントのデータバインディングの式と条件付きロジックの詳細については、データバインディングの構文とコンポーネントの条件付きインフレートを参照してください。APLでのリソースの動作については、APL Resourcesを参照してください。
Viewportプロファイルリソース(@viewportProfile)
@viewportProfile
リソースは、デバイスをさまざまなカテゴリーに分類します。デバイスの特性をハードコードする代わりに、これらのカテゴリーに基づいて条件付きロジックを実装すれば、新しいデバイスが利用可能になったときのロジックの堅牢性が向上します。
次の例は、ユーザーのデバイスがEcho ShowなどのhubLandscapeMedium
プロファイルの条件を満たす場合にtrue
に評価される条件文です。
"when": "${@viewportProfile == @hubLandscapeMedium}"
以下の表に、利用可能なviewportプロファイルをまとめています。この表では、幅と高さの値はdp
単位で表されています。
Viewportプロファイル | 形状/向き | モード | minWidth / maxWidth | minHeight / maxHeight |
---|---|---|---|---|
|
丸/等しい |
デバイス |
100 – 599 |
100 – 599 |
|
長方形/横長 |
デバイス |
960 – 1279 |
100 – 599 |
|
長方形/横長 |
デバイス |
960 – 1279 |
600 – 959 |
|
長方形/横長 |
デバイス |
1280 – 1920 |
600 – 1279 |
|
長方形/横長 |
デバイス |
1920 – 2560 |
960 – 1279 |
|
長方形/縦長 |
デバイス |
960 – 1279 |
1920 – 2560 |
|
長方形/横長 |
テレビ |
960 – 960 |
540 – 540 |
|
長方形/縦長 |
モバイル |
600 – 959 |
320 – 1920 |
|
長方形/横長 |
モバイル |
960 – 1279 |
320 – 1920 |
|
長方形/横長 |
モバイル |
1280– 1920 |
320 – 1920 |
|
長方形 |
デバイス |
134 / 425 |
222 / 711 |
ウィジェットViewportプロファイルのサイズ
ウィジェットViewportプロファイルのサイズは、そのウィジェットが含まれているViewportのサイズによって変わります。たとえば、「デバイス、横長、特大」Viewportプロファイルのデバイスでは、「デバイス、横長、中」のデバイスよりも大きいバージョンの「ウィジェット、中」プロファイルが表示されます。ウィジェットの作成中には、そのウィジェットがさまざまなデバイスでどのようにレンダリングされるかをオーサリングツールでプレビューできます。
viewportの特性のリソース
viewportプロファイルパッケージは、形状、サイズ、密度といったviewport特性のその他のリソースを定義します。
形状(@viewportShape)
@viewportShape
リソースは、Viewportのさまざまな形状を区別します。
"when": "${@viewportShape == @viewportShapeRectangle}"
リソース | 条件 |
---|---|
|
|
|
|
|
|
向き(@viewportOrientation)
@viewportOrientation
リソースは、Viewportのさまざまな向きを区別します。
"when": "${@viewportOrientation == @viewportOrientationLandscape}"
リソース | 条件 |
---|---|
|
|
|
|
|
|
サイズクラス
サイズとサイズクラスのリソースは、さまざまなサイズのviewportを区別します。
viewportの幅と高さ(dp)のviewportサイズのリソースグループ
条件付き句のサンプルです。
"when": "${@viewportWidth == @viewportSizeMedium}"
"when": "${@viewportHeight == @viewportSizeSmall}"
リソース | viewport幅/viewport高さ(dp)の条件 |
---|---|
|
< 600 |
|
≥ 600 && <960 |
|
≥ 960 && <1280 |
|
≥ 1280 && <1920 |
|
≥ 1920 |
viewportの幅と高さの組み合わせのviewportサイズクラスのリソースグループ(@viewportSizeClass)
@viewportSizeClass
リソースは、幅と高さの組み合わせによってさまざまなViewportサイズを区別します。
条件付き句のサンプルです。
"when": "${@viewportSizeClass == @viewportClassMediumSmall}"
リソース | 幅 | 高さ |
---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
密度(@viewportDensity)
@viewportDensity
リソースは、さまざまな密度(dpi)を区別します。
条件付き句のサンプルです。
"when": "${@viewportDensity == @viewportDensityNormal}"
リソース | viewportの条件(dpi) |
---|---|
|
< 140 |
|
≥ 140 && < 200 |
|
≥ 200 && < 280 |
|
≥ 280 && < 400 |
|
≥ 400 && < 560 |
|
≥ 560 && < 720 |
Viewportプロファイルの例
以下の例では、データバインディングコンテキストのviewport
オブジェクトから、Viewportに関する情報を表示します。さらに、いくつかのwhen
文を使用して、プロファイルが条件を満たす場合に追加の詳細を表示します。たとえば、Viewportのプロファイルを「デバイス、横長、中」に変更すると、追加の詳細がすべて表示されます。
関連トピック
最終更新日: 2025 年 10 月 02 日