APL 1.6の新機能



APL 1.6の新機能

Alexa Presentation Language(APL)1.6では、APLに新機能が追加されました。

オーサリングツールの更新

APLオーサリングツールが更新され、いくつかの改善が加えられました。

  • オーサリングツールでは、新しいドキュメントを作成する際にたたき台として使用できるサンプルテンプレートを改良しました。これらのテンプレートではレスポンシブ対応コンポーネントとテンプレートを使用しています。レスポンシブ対応デザインのベストプラクティスに沿って作成されているため、さまざまなデバイスで見栄え良く表示されます。詳細については、APLドキュメントの作成と編集を参照してください。
  • Lottie形式のアニメーションをAlexa Vector Graphics(AVG)形式に変換してAPLドキュメント内で使用できるようになりました。LottieはJSONのアニメーション形式で、Adobe After Effectsから書き出すことができます。詳細については、Lottieアニメーションのインポートを参照してください。
  • オーサリングツールに、タブレットデバイスでプレビューを行う新しいviewportプロファイルが3つ追加されました。 それぞれ、モバイル小、モバイル中、モバイル大です。これらは、alexa-viewport-profilesパッケージの新しいviewportプロファイルに対応しています。これらのプロファイルを条件付きロジックで使用することで、タブレットデバイスで見栄え良く表示されるドキュメントを作成できます。
    • さまざまなviewportプロファイルを使ってオーサリングツールでドキュメントをプレビューする方法については、視覚応答のプレビューを参照してください。
    • ドキュメントでalexa-viewport-profilesパッケージを使用する方法については、Viewportプロファイルを参照してください。

APLレスポンシブ対応コンポーネントとテンプレート

APL 1.6ではレスポンシブ対応コンポーネントとテンプレートが一部更新されました。

  • alexa-stylesパッケージのバージョンが1.2.0に更新されました。パッケージの既存のスタイルがいくつか更新されました。スタイルの詳細については、Alexa Stylesを参照してください。
  • viewport-profiles-packageのバージョンが1.2.0に更新されました。パッケージに、新しいmobileSmallmobileMediummobileLargeのプロファイルが追加されました。viewportプロファイルパッケージについて詳しくは、Viewportプロファイルを参照してください。
  • alexa-layoutsパッケージのバージョンが1.3.0に更新されました。新しいコンポーネントやテンプレートはありませんが、一部の既存の項目に新しいプロパティが追加されています。以下の表は、alexa-layoutsパッケージのコンポーネントやテンプレートで利用できる新しいプロパティです。
プロパティ 説明 利用可能なコンポーネント

imageShadow

trueの場合、イメージの背後にドロップシャドウが表示されます。

imageThumbnailShadow

trueの場合、イメージサムネイルの背後にドロップシャドウが表示されます。

headerAttributionOpacity

attributionテキストとattribution画像にopacityを設定します。0と1の間の数値を設定します。

AlexaHeader

ratingTextOpacity

評価の横に表示されるテキストのopacityを設定します。0と1の間の数値を設定します。

AlexaRating

コンポーネントとテンプレートの概要については、レスポンシブ対応コンポーネントとテンプレートを参照してください。

画面のサイズを変更できるタブレットのサポート

APLは、スキルセッション中に特性を変更できるデバイスをサポートします。たとえば、ユーザーはタブレットを回転させて縦向きか横向きかを切り替えることができます。新しい画面に合わせて自動的にサイズを変更するAPLドキュメントを作成できます。新たに追加されたReinflateコマンドを使って、画面サイズが変更されたときにレイアウトを変更することもできます。

以下のトピックを参照してください。

Pagerのカスタム遷移

Pagerコンポーネントでは、カスタムのアニメーションページ遷移を作成して、デフォルトのページ遷移の代わりに使用できるようになりました。Pagerの新しいhandlePageMoveプロパティにページ移動ハンドラーの配列を指定します。

詳細と例については、handlePageMoveを参照してください。

日本語テキストサポートの改善

  • Textコンポーネントで、テキストが複数行に自動で折り返されないようにする<nobr>タグがサポートされるようになりました。
  • 新しいlineBreakProcessorトランスフォーマーが日本語テキストに<nobr>タグを自動追加します。

更新情報

トークンベースの遅延読み込み

トークンベースの遅延読み込みをサポートする新しいデータソース型やディレクティブ、リクエストが追加されました。ユーザーが大きなリストのコンテンツをスクロールした場合に、その項目を順次読み込むことができます。トークンベースの遅延読み込みは、バックエンドでデータにトークンベースのAPIを使用している場合に便利です。以下のトピックを参照してください。

コンポーネントとレイアウトのプロパティ

  • すべてのコンポーネントでpaddingプロパティがサポートされるようになりました。1つの配列で、上、左、下、右のパディングを設定できます。詳細については、paddingを参照してください。
  • すべてのコンポーネントで、ドキュメントの再インフレート時に保存するプロパティを指定するpreserveプロパティがサポートされるようになりました。詳細については、preserveおよびタブレットなどの異なるサイズのデバイスをサポートするを参照してください。
  • SequenceコンポーネントとGridSequenceコンポーネントでsnapプロパティがサポートされます。ユーザーがコンテンツをスクロールしてスクロールを停止すると、コンポーネントは子項目を移動してコンテナの最初、中央、最後に「止め」ることができます。詳細については、SequenceおよびGridSequenceを参照してください。
  • 一部のコンポーネントプロパティが動的になりました。動的なプロパティの値は、SetValueコマンドで変更できます。
  • 一部のコンポーネントプロパティでスタイルを設定できるようになりました。スタイル設定が可能なプロパティの値は、styleで設定できます。スタイル設定が可能なすべてのプロパティについては、APLスタイル設定可能プロパティを参照してください。
  • レイアウトでbindプロパティがサポートされるようになりました。コンポーネントのbindプロパティと同様です。詳細については、bindプロパティを参照してください。

新しい関数呼び出し

データバインディングコンテキストのMathオブジェクトが、2つの新しい関数を提供します。

関数 説明

Math.float(x)

xを浮動小数点数に変換します。末尾の「%」文字はパーセンテージを表します。

${Math.float('23.4')} == 23.4
${Math.float('23.4%')} == 0.234

Math.int(x,[b=10])

xを整数に変換します。bは文字列変換に使用するオプションの基数です。0で自動検出するか、2~36で基数を定義します。

${Math.int('23.3')} == 23
${Math.int('20', 16)} == 32
${Math.int('0x20', 0)} == 32

詳細については、数学関数を参照してください。

スキル応答サイズの引き上げ

スキル応答の合計サイズの上限が120キロバイトに増えました。APLドキュメントとデータソースは、より大きな応答サイズを最大限に活用できます。以前は、APLドキュメントとデータソースは24キロバイトに制限されていました。

APLのバージョンを指定する

APLドキュメントで、version"1.6"に設定します。

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.6に対応したデバイスからのリクエストを示しています。短くするために、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.6"
            }
          }
        }
      },
      "apiEndpoint": "https://api.amazonalexa.com",
      "apiAccessToken": "eyJ..."
    },
    "Viewport": {}
  },
  "request": {}
}