APL 1.5の新機能
Alexa Presentation Language 1.5では、APLに新機能が追加されました。
APL for Audio(ベータ)
APL for Audio(ベータ)がバージョン0.9に更新されました。このリリースでは、次の新機能が追加されました。
- リソース:APL for Audioドキュメントでリソースを定義できるようになりました。リソースは、ハードコーディングした値の代わりに値を指定する名前付き定数です。ユーザーのデバイスの特性に応じて、条件付きリソースを作成できます。リソースを使うことで、APLコードをシンプルにし、一貫性を維持することができます。リソースの作成と使用の詳細については、リソースを参照してください。
- 合成:APL for Audioドキュメントで合成を定義できるようになりました。合成は、コンポーネントを組み合わせて新しい「カスタム」コンポーネントを作成します。合成したカスタムコンポーネントはドキュメントのメインテンプレート内で再利用できます。合成内で条件付きロジックを使用して、最終オーディオクリップでどのコンポーネントをレンダリングするかを選択できます。合成を使うことで、APLコードをシンプルにし、一貫性を維持することができます。合成の作成と使用の詳細については、合成を参照してください。
- オーサリングツールの更新:オーサリングツールに、オーディオ応答をプレビューできるツールが追加されました。
- タイムラインをクリックすると、応答のさまざまな部分を聞くことができます。
- 再生するタイムラインを選択できます。
- 繰り返しモードをオンにすると、応答全体または応答の一部を繰り返し再生できます。
APL for Audioのオーサリングツールの詳細については、APL for Audioのオーサリングツールを使用するを参照してください。
APLレスポンシブ対応コンポーネントとテンプレート
新たなレスポンシブ対応コンポーネントとテンプレートを使用して、APLレスポンシブ対応ドキュメントを作成します。この新しいコンポーネントとテンプレートを使用するには、alexa-layouts
パッケージをドキュメントに読み込みます。version
には、必ず1.2.0を指定してください。
{
"import": [
{
"name": "alexa-layouts",
"version": "1.2.0"
}
]
}
コンポーネントとテンプレートの概要については、レスポンシブ対応コンポーネントとテンプレートを参照してください。
新しいレスポンシブ対応コンポーネント
新しいレスポンシブ対応コンポーネントについて詳しくは、以下を参照してください。
アップデートされたレスポンシブ対応コンポーネントとテンプレート
APL 1.5では、既存のレスポンシブ対応コンポーネントとテンプレートがアップデートされています。
AlexaButton
–AlexaButton
コンポーネントの変更点は次のとおりです。buttonStyle
プロパティに、ingress
とegress
のスタイルが追加されました。- コンポーネントに、ボタンのテキストスタイルを変更する
touchForward
プロパティが追加されました。
AlexaTransportControls
–AlexaTransportControls
コンポーネントに、アクセシビリティテキストを定義するプロパティが追加されました。ユーザが画面上のコンポーネントを選択すると、この文字列が読み上げられます。以下の新しいプロパティを設定できます。accessibilityLabel
secondaryControlsLeftAccessibilityLabel
secondaryControlsRightAccessibilityLabel
-
AlexaTextList
–AlexaTextList
テンプレートが新たにAlexaSwipeToActionコンポーネントをサポートするようになりました。この新しいコンポーネントのプロパティは、AlexaTextListItem
と同じです。これにより、ユーザーが項目をスワイプしてアクションを実行できるテキストリストを作成できます。この変更により、
AlexaTextList
に以下の新しいプロパティが追加されました。これらを使ってスワイプ項目のデフォルトを設定できます。swipeDirection
swipeActionIcon
swipeActionIconType
swipeActionIconForeground
swipeActionIconBackground
onSwipeMove
onSwipeDone
optionsButton1Text
optionsButton1Command
optionsButton2Text
optionsButton2Command
新しい画像フィルター
APLでは、さまざまなエフェクトを作成するために、より多くの画像フィルターがサポートされるようになりました。
Blend
– 2つの画像を定義した操作モードによってマージします。Color
– 単色の画像を作成し、画像の配列に追加します。このフィルターをBlend
と組み合わせることで、画像に色を適用できます。Gradient
– グラデーションの画像を作成し、画像の配列に追加します。このフィルターをBlend
と組み合わせることで、画像にグラデーションを適用できます。Grayscale
– 画像をグレースケールに変換します。Saturate
– 画像の色の彩度を変更します。
この変更の一環として、Image
コンポーネントはsource
プロパティまたはsources
プロパティ内のイメージURLの配列を受け取るようになりました。
フィルターの動作の詳細については、フィルターを参照してください。
Alexa Vector Graphics(AVG)の改善
Alexa Vector Graphics(AVG)形式で、グラフィックにエフェクトを適用するフィルターがサポートされるようになりました。新しいフィルターでは、グラフィックにドロップシャドウが適用できます。詳細についてはAVGフィルターを参照してください。
AVG形式は、複数の子インフレーションもサポートするようになりました。AVGオブジェクトにdata
プロパティのデータ配列を渡すことができます。グラフィックは、data
配列の各要素について、items
配列から1つの項目をインフレートします。詳細については、Alexa Vector Graphics形式を参照してください。
更新情報
Sequence
がeventのsourceまたはtargetである場合、生成されるイベントには、完全に表示される子コンポーネントと部分的に表示される子コンポーネントの両方の詳細が含まれます。詳しくはSequenceイベントオブジェクトを参照してください。GridSequence
がeventのsourceまたはtargetである場合、生成されるイベントには、完全に表示される子コンポーネントと部分的に表示される子コンポーネントの両方の詳細が含まれます。詳しくはGridSequenceイベントオブジェクトを参照してください。
新しい関数呼び出し
String.length()
関数は、文字列の長さをUnicodeコードポイントで返します。詳細については、文字列関数を参照してください。
データバインディングコンテキスト内の新しいArray
オブジェクトは、配列を操作するための関数を提供します。詳細については、配列関数を参照してください。
データバインディングコンテキストのMath
オブジェクトは、3つの新しい関数を提供します。
Math.isFinite(x)
Math.isInf(x)
Math.isNaN(x)
詳細については、数学関数を参照してください。
新しい環境プロパティ
データバインディングコンテキストで、次の新しいenvironment
プロパティを使用できるようになりました。
コンポーネントのプロパティ
すべてのコンポーネントに、APLと支援技術の連携を改善する新しいプロパティが追加されました。
accessibilityLabel
基本コンポーネントプロパティが動的になり、値をSetValue
コマンドで変更できるようになりました。
Container
内の子コンポーネントは、絶対配置に加えて、相対配置のleft
、right
、top
およびbottom
プロパティの使用をサポートします。以前は、position
がrelative
に設定されている場合、これらの配置プロパティは無視されていました。この変更により、これらのプロパティは、親コンテナ内のコンポーネントの通常の位置から子コンポーネントをオフセットします。
これらのプロパティの使用方法の詳細については、position、bottom、left、right、topを参照してください。
APLのバージョンを指定する
APLドキュメントで、version
を"1.5"
に設定します。
APLの最新バージョンをサポートしていない古いデバイスで、スキルが呼び出される場合があります。特定のバージョンのAPLで導入された機能を使用する場合は、それ以前のバージョンのAPLを実行しているデバイス向けに代替機能を提供してください。データバインディングコンテキストのenvironment.aplVersion
プロパティを使用すると、デバイスのAPLのバージョンを取得できます。このプロパティでは、APL 1.0についてはnull
が、APL 1.1以降では実際のバージョン番号が返されます。このプロパティをwhen
ステートメントで使用すると、バージョンに基づく条件付きブロックを作成できます。
たとえば、次のようにすると、APL 1.1以降を使用しているデバイスではVectorGraphic
を、APL 1.0を使用しているデバイスでは画像(Image)をレンダリングできます。
[
{
"type": "Image",
"when": "${environment.aplVersion == null}",
"width": 100,
"height": 100,
"source": "https://example.com/alternate/image/for/older/versions.jpg"
},
{
"type": "VectorGraphic",
"when": "${environment.aplVersion != null}",
"source": "lightbulb",
"width": 100,
"height": 100,
"scale": "best-fit"
}
]
APLのバージョンは、スキルに送信されるリクエストにも含まれています。
context.System.device.supportedInterfaces.['Alexa.Presentation.APL'].runtime.maxVersion
次の例は、APL 1.5に対応したデバイスからのリクエストを示しています。短くするために、session
、request
、viewport
の各プロパティは省略しています。
{
"version": "1.0",
"session": {},
"context": {
"System": {
"application": {
"applicationId": "amzn1.ask.skill.1"
},
"user": {
"userId": "amzn1.ask.account.1"
},
"device": {
"deviceId": "amzn1.ask.device.1",
"supportedInterfaces": {
"Alexa.Presentation.APL": {
"runtime": {
"maxVersion": "1.5"
}
}
}
},
"apiEndpoint": "https://api.amazonalexa.com",
"apiAccessToken": "eyJ..."
},
"Viewport": {}
},
"request": {}
}