APL 1.7の新機能



APL 1.7の新機能

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

APL for Audioの一般公開

APL for Audioが一般公開され、再プロンプトでのAPL for Audioの使用やサポート対象デバイスでの高品質のオーディオ再生が可能になりました。

再プロンプトでのAPL for Audioの使用

スキルの応答には再プロンプトを含めることができます。ユーザーが数秒以内に応答しないとき、Alexaは再プロンプトを読み上げます。これらの再プロンプトで、outputSpeechのほかにAPL for Audioを使用できるようになりました。

再プロンプトとしてAPL for Audio応答を送信する

  1. APL for Audioのドキュメントとデータソースを作成します。
  2. 応答に、repromptオブジェクトを含めます。Alexa.Presentation.APLA.RenderDocumentディレクティブをdirectives配列に追加します。

     {
         "reprompt": {
             "outputSpeech": {
                 "type": "PlainText",
                 "text": "アレクサは、API for Audio応答を再生する前にこのテキストを読み上げます。"
             },
             "directives": [
                 {
                     "type": "Alexa.Presentation.APLA.RenderDocument",
                     "document": {}
                 }
             ]
         }
     }
    
    • 応答のshouldEndSessionfalseに設定することも忘れないでください。
    • outputSpeechを含めると、AlexaはまずoutputSpeechを読み上げてから、APL for Audio応答を再生します。

サポート対象デバイスでの再現性の高いオーディオ出力

デバイスでのオーディオ再生時に、APL for Audioが24kHzにダウンサンプリングされることはなくなりました。高品質のオーディオ(最大48kHz)に対応するデバイスで、オリジナルの音質を損なうことなくオーディオを再生できるようになりました。

この更新に伴い、Audioコンポーネントを持つオーディオファイルのサンプルレートも最大48kHzに上がります。

APL for Audioで使用できるオーディオ形式の詳細については、オーディオファイルのサポートを参照してください。

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

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

右から左に記述する言語のサポート

APL 1.7では、アラビア語スキルのサポートを提供しています。最新のレスポンシブ対応コンポーネントとテンプレートを使って、右から左に記述する言語で書かれたコンテンツを表示できるようになりました。

コンポーネントとテンプレートにlayoutDirectionプロパティが追加されました。このプロパティを使って、コンポーネントの向きを左から右、または右から左のどちらかに指定できます。

layoutDirectionプロパティを持つコンポーネントは次のとおりです。

layoutDirectionプロパティを持つテンプレートは次のとおりです。

レスポンシブ対応コンポーネントとテンプレートでのアラビア語のサポートについて詳しくは、Support for Right-to-left Languagesを参照してください。

言語固有のフォントのサポート

一部のレスポンシブ対応コンポーネントとテンプレートに、langプロパティが追加されました。このプロパティを使ってコンテンツの言語を指定できます。利用できるフォントがある場合、デバイスは対応する言語固有のフォントを使用します。たとえば、langar-SAを指定すると、アラビア語固有のフォントを使用します。

langプロパティを持つコンポーネントは次のとおりです。

langプロパティを持つテンプレートは次のとおりです。

既存のコンポーネントとテンプレートの新しいプロパティ

プロパティ 説明 利用可能なコンポーネント

accessibilityLabel

項目を説明する文字列です。ユーザーが項目を選択したときに、この文字列が読み上げられます。

  • AlexaImageListItem
  • AlexaRating

contentDirection

画像とテキストのコンテンツの方向です。columnまたはrowに設定します。

AlexaImageListItem

headerAttributionOpacity

ヘッダーのattributionテキストとattribution画像のopacityです。0と1の間の数値を設定します。

headerAttributionOpacityプロパティはalexa-layouts 1.3.0でAlexaHeaderに追加されました。バージョン1.3.0と1.4.0両方のalexa-layoutsで、AlexaHeaderを表示するレスポンシブ対応テンプレートで利用できます。

  • AlexaDetail
  • AlexaGridList
  • AlexaHeadline
  • AlexaImageList
  • AlexaLists
  • AlexaPaginatedList
  • AlexaTextList

imageAltText

画像の代替テキストです。ボイスオーバーはこの文字列を読み取ります。

  • AlexaImageListItem

lang

テンプレートに表示されるテキストの言語です。この言語によって、テキストに使用されるデフォルトのフォントが決まります。たとえば、ar-SAを設定すると、コンポーネントはデバイスで利用できる場合にアラビア語のフォントを使用します。BCP-47文字列に設定します。

レスポンシブ対応コンポーネントとテンプレートの言語固有フォントについて詳しくは、Language-specific fonts in the components and templatesを参照してください。

このプロパティは、テキストを表示するレスポンシブ対応コンポーネントとテンプレートに追加されました。コンポーネントとテンプレートの一覧については、言語固有のフォントのサポートを参照してください。

layoutDirection

コンテンツのレイアウト方向を指定します。このプロパティをLTR(左から右)、RTL(右から左)のいずれかに設定します。

レスポンシブ対応コンポーネントとテンプレートでの右から左に記述する言語のサポートについて詳しくは、Support for Right-to-left Languagesを参照してください。

このプロパティは、項目を読み上げる順序に沿ってコンテンツを表示するすべてのレスポンシブ対応コンポーネントとレイアウトに追加されました。コンポーネントとレイアウトの一覧については、右から左に記述する言語のサポートを参照してください。

listId

リストに使用されるSequenceコンポーネントに割り当てる識別子です。値をlistIdに設定すると、ビルトインインテントを使って音声によるスクロールが可能になります。SpeakListコマンドなどのコマンドの一覧をターゲットにする必要がある場合は、このパラメーターをIDに設定します。

listIdパラメーターは、バージョン1.2.0、1.3.0、1.4.0のすべてのリストテンプレートに追加されました。

  • AlexaGridList
  • AlexaImageList
  • AlexaLists
  • AlexaPaginatedList
  • AlexaTextList

speechItems

読み上げ項目の配列です。AlexaImageListテンプレートはこの配列の各項目を対応するリスト項目のspeechプロパティに割り当てます。このプロパティは、SpeakListコマンドを使用してリスト項目を読み上げる場合に使用します。

AlexaImageListでこのプロパティを使用する例については、AlexaImageListでSpeakListを使用するを参照してください。

listIdパラメーターは、バージョン1.2.0、1.3.0、1.4.0のすべてのリストテンプレートに追加されました。

  • AlexaGridList
  • AlexaImageList
  • AlexaLists
  • AlexaPaginatedList
  • AlexaTextList

AlexaパッケージをAPLドキュメントに読み込む

更新されたコンポーネント、テンプレート、スタイル、リソースを使用するには、APLドキュメントを更新してパッケージの最新バージョンを読み込みます。

パッケージ バージョン

alexa-layouts

1.4.0

alexa-styles

1.3.0

alexa-viewport-profiles

1.3.0

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

右から左に記述する言語のAPLサポート

APL 1.7では、右から左に記述するコンテンツに対応することで、アラビア語のスキルをサポートします。

新しいlayoutDirectionプロパティ

layoutDirectionプロパティは新しい基本コンポーネントのプロパティです。このプロパティにLTRRTLのいずれかを設定することで、レイアウトが自動で決定されます。

たとえば、行ベースのContainerlayoutDirectionRTLを設定すると、Containerは右にある項目から子項目を表示します。

layoutDirectionプロパティによって、以下のコンポーネントのレイアウトが決まります。

layoutDirectionに基づいた調整を行う新しいプロパティとオプション

1つのドキュメントで左から右、右から左、両方のエクスペリエンスをサポートできるよう、APL 1.7にはlayoutDirectionの値に基づいてコンテンツを自動調整する新しいプロパティと設定が追加されています。

  • すべてのコンポーネントにpaddingStartプロパティとpaddingEndプロパティが追加されました。これらは、paddingLeftpaddingRightより優先されます。詳細については、paddingStart, paddingEndを参照してください。
  • Containerコンポーネントに位置調整を行うstartプロパティとendプロパティが追加されました。これらは、layoutDirectionに基づくleftプロパティとrightプロパティよりも優先されます。詳細については、start, endを参照してください。
  • TextコンポーネントのtextAlignプロパティがstartendの値を受け入れるようになりました。leftrightの代わりにこれらを使い、layoutDirectionに基づいてテキストの位置を調整します。詳細については、textAlignを参照してください。
  • SwipeAwayジェスチャーのdirectionプロパティがforwardbackwardの値を取るようになりました。leftrightの代わりにこれらを使い、layoutDirectionに基づいてスワイプの向きを設定します。詳細については、directionを参照してください。

新しいlangプロパティ

TextコンポーネントとEditTextコンポーネントに、テキストの言語を指定するlangプロパティが追加されました。APLはテキスト表示の際、fontFamilyの言語固有のバージョンを探します。たとえば、アラビア語バージョンのフォントを使用するには、langar-SAを設定します。

更新情報

コンポーネントのプロパティ

APL 1.7には、コンポーネントのプロパティと値に以下の変更が行われています。

  • Containerコンポーネントのpositionプロパティがsticky値を受け入れるようになりました。このプロパティを使用すると、別の粘着コンポーネントによって押し出されるまで、項目を最も近くにあるスクロール項目に「粘着」させることができます。詳細については、Sticky positioningを参照してください。
  • Textコンポーネントで、textプロパティのコンテンツで<span>タグを使用できるようになりました。このアトリビュートを使用すると、テキストにインライン書式を適用できます。詳細については、Textコンポーネントのtextプロパティを参照してください。
  • Pagerコンポーネントでは、navigationプロパティとpageDirectionプロパティが動的になりました。SetValueを使用すると、ドキュメントが既に画面上にレンダリングされているときにこれらのプロパティの値を変更できます。
  • 次の影関連のプロパティが動的になり、スタイルを適用できるようになりました。
    • shadowColor
    • shadowHorizontalOffset
    • shadowRadius
    • shadowVerticalOffset
  • データバインディング式で、配列およびマップをインラインで定義できるようになりました。詳細については、配列Mapsを参照してください。
  • 右から左に記述する言語のサポートに関連する新しいプロパティについては、右から左に記述する言語のAPLサポートを参照してください。

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

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

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