APL 1.5の新機能



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では、既存のレスポンシブ対応コンポーネントとテンプレートがアップデートされています。

  • AlexaButtonAlexaButtonコンポーネントの変更点は次のとおりです。
    • buttonStyleプロパティに、ingressegressのスタイルが追加されました。
    • コンポーネントに、ボタンのテキストスタイルを変更するtouchForwardプロパティが追加されました。
  • AlexaTransportControlsAlexaTransportControlsコンポーネントに、アクセシビリティテキストを定義するプロパティが追加されました。ユーザが画面上のコンポーネントを選択すると、この文字列が読み上げられます。以下の新しいプロパティを設定できます。
    • accessibilityLabel
    • secondaryControlsLeftAccessibilityLabel
    • secondaryControlsRightAccessibilityLabel
  • AlexaTextListAlexaTextListテンプレートが新たに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形式を参照してください。

更新情報

  • Sequenceeventの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内の子コンポーネントは、絶対配置に加えて、相対配置のleftrighttopおよびbottomプロパティの使用をサポートします。以前は、positionrelativeに設定されている場合、これらの配置プロパティは無視されていました。この変更により、これらのプロパティは、親コンテナ内のコンポーネントの通常の位置から子コンポーネントをオフセットします。

これらのプロパティの使用方法の詳細については、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に対応したデバイスからのリクエストを示しています。短くするために、sessionrequestviewportの各プロパティは省略しています。

{
  "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": {}
}

以前のバージョンのAPL