開発者コンソール

Fire TV対応アプリ用VSK(Video Skills Kit)について


Fire TV対応アプリ用VSK(Video Skills Kit)について

Fire TV対応アプリ用VSK(Video Skills Kit)を実装すると、自然言語コマンドを使用してアプリの起動やコンテンツ検索、メディア再生の制御、チャンネル変更などを行えるようになります。たとえば、アプリにVSKを実装した場合、「<アプリ名>で『ボッシュ』を再生して」や「『ボッシュ』を再生して」などのフレーズを言うと、アプリがメディア再生を開始します。

Fire TV対応アプリ用VSKを実装する場合、まずAlexaビデオスキルAPIを実装します。ただし、統合を行う場合は、追加のAPIやサービスが必要になります(例:Amazon Device Messaging(ADM)AWS LambdaAWS IAMLogin with AmazonNode.jsAlexa Client Libraryなど)。Fire TV対応アプリにVSKを組み込むことで、アプリで優れた音声エクスペリエンスをユーザーに提供しながら、エンゲージメントやコンテンツの見つけやすさの向上を図ることができます。

Fire TV対応アプリ用VSKで提供される機能

Fire TV対応アプリにVSKを統合することで、以下の機能が利用可能になります。

  • アプリの起動: ユーザーが特定のコンテンツの再生や検索を依頼すると、Alexaが適切なFire TV対応アプリを起動します。「アレクサ、<アプリ名>を開いて」と話しかけると、アプリのトップ画面に移動します。ビデオスキルを使用すると、AlexaビデオスキルAPI経由でアプリを自動的に起動できるようになります。
  • クイック再生: 「アレクサ、<番組名>を再生して」または「アレクサ、<アプリ名>で<番組名>見せて」と話しかけるだけで、ビデオを再生することができます。 その際、該当コンテンツを含む適切なアプリが開き、Fire TVが自動的に再生を開始します(詳細ページへは移動しません)。
  • 検索: 「アレクサ、<番組名>を探して」と話しかければ、Alexaにコンテンツのユニバーサル検索を依頼できます。 範囲がアプリに限定されていない検索は「ユニバーサル検索」と呼ばれ、カタログに統合されているあらゆるFire TV対応アプリのコンテンツを検索します。検索範囲を特定のアプリに絞る方法は「ローカル検索」と呼ばれます。 ローカル検索では、「アレクサ、<アプリ名>で<番組名>を探して」や「アレクサ、<アプリ名>で<ジャンル>を探して」といったフレーズで、検索範囲を絞り込むことができます。
  • トランスポートコントロール: 「アレクサ、早送りして」「アレクサ、5分早送りして」「アレクサ、次」「アレクサ、前」などと話しかけることで、再生・巻き戻し・一時停止・再開・終了などの操作を制御できます。
  • チャンネル変更: ライブTV機能を搭載するアプリの場合、「アレクサ、<アプリ名>に変えて」のように話しかけてチャンネルを切り替えることができます。

よくあるやり取りの例を以下に示します。

ユーザーがあるTV番組の再生をAlexaに依頼します。
ユーザーがあるTV番組の再生をAlexaに依頼します。
Fire TV対応アプリにVSK統合を実装することで、Alexaはコンテンツを見つけて再生できるようになります。
アプリで有効化されたビデオスキルを通じて、Alexaがコンテンツを見つけて再生します。

実装する必要があるのは、アプリで利用可能な機能のロジックだけです。たとえば、チャンネル機能がないアプリの場合、VSKでチャンネル変更の動作を実装する必要はありません。

一般的に、音声機能があるとコンテンツの検索と再生を楽に行えるようになります(映画やTV番組を扱うアプリとビデオスキルは相性抜群です)。また、音声機能の搭載はコンテンツへのエンゲージメントを高めるうえでもお勧めです。

音声操作は多くのデバイス(特にストリーミングメディアプレーヤー)における標準機能になりつつあります。音声操作によってユーザーエクスペリエンスが簡略化され、アプリの使用率が向上するしくみについて詳しくは、AWSのトレーニングと認定に関するライブラリにあるGetting into the Voice Mindset(英語のみ)を参照してください。

前提条件: カタログ統合

Fire TV対応アプリにVSKを組み込むには、事前にアプリのカタログ統合を実装する必要があります。カタログ統合とは、XMLスキーマで記述されたAmazonのカタログデータフォーマット(CDF)に従ってアプリのメディアを記述し、S3バケットに定期的にカタログをアップロードするプロセスのことです。

カタログ統合は、IMDb、Amazonプライム・ビデオ、Gracenoteに組み込まれ検出されるのにふさわしい十分な数の長編映画やTV番組シリーズを持つアプリに制限されています。これらのソースに含まれていないコンテンツで構成されたカタログを使用する場合は、Amazonの担当者にお問い合わせください。

カタログ統合の条件を満たさない場合は、Fire TV対応アプリにVSKを実装することはできません。ただしその場合でも、以下の関連技術を利用すれば音声機能の一部をアプリに組み込むことは可能です。

  • MediaSession APIを使用した音声対応トランスポートコントロール:「アレクサ、再生して」「アレクサ、早送り」「アレクサ、巻き戻し」などといったコマンドのことです。MediaSessionを使用すれば、このようなインタラクティブ機能を有効にできます。
  • アプリ内の音声ナビゲーションと選択:「アレクサ、左にスクロール」や「アレクサ、選んで」などといったコマンドのことです。 この音声ナビゲーション・選択機能はFire TVに組み込まれているため、ほとんどのアプリで自動的に機能します。

Fire TV対応アプリにビデオスキルを実装する場合、追加の音声統合を実装する必要はありません。VSKの機能には、MediaSessionと同じトランスポートコントロール機能と、アプリ内での音声ナビゲーション・選択機能が自動的に含まれています。

期待されるディレクティブの処理

VSKの統合では、Fire TV対応アプリがどのようなディレクティブを受け取り、それに対してどのように反応すべきかを理解しておく必要があります。「ディレクティブ」は、JSON形式で記述されたデータと命令のセットのことで、AlexaからLambda関数に送信されます。たとえば、TV番組の検索や、映画の再生などを行うディレクティブがあります。ビデオスキルはこれらのディレクティブをLambda関数に送信します。このLambda関数では、Lambda関数またはアプリのロジックを使用してディレクティブを処理する必要があります。各ディレクティブの詳細については、APIリファレンス(具体的には手順9: Alexaディレクティブを解釈して応答する)を参照してください。

サポート対象国

Fire TV対応アプリ用VSKは、すべての国でサポートされているわけではありません。ビデオスキルがまだサポート対象外の国向けにアプリを開発している場合、アプリにVSKを統合することはできません。また、VSKサポート対象外の国在住の開発者がVSKのサポート対象国向けのアプリを開発する場合、その開発者はAlexaコンソールで必要なビデオスキル構成オプションを確認するための許可リストに追加されなければなりません。詳細については、Amazonの担当者にお問い合わせください。

また、Lambda関数は、開発者の居住国/地域に応じた特定のAWSリージョンで作成する必要があります。このリージョン指定は任意ではなく、必ず従う必要があります。たとえば、英国に拠点がある場合は、Lambda関数用にAWSの欧州(アイルランド)リージョンを使用する必要があります。

サポート対象国と必要なAWSリージョンの詳細については、Fire TV対応アプリ用ビデオスキルのサポート対象国を参照してください。

必要なもの

Fire TV対応アプリにVSKを統合するには、以下が必要になります。

また、Amazonアプリストア開発者コンソール、Alexa開発者コンソール、AWSでさまざまなサービス(IAM、AWS Lambda、Amazon CloudWatch、セキュリティプロファイルなど)を構成する必要もあります。

大まかなワークフロー

Fire TV対応アプリにVSKを統合するには、まずAlexa開発者コンソールでビデオスキルを作成し、同スキルをAWS Lambda関数に関連付けます。ユーザーが音声でアプリと対話すると、クラウドベースのAlexa Voice Serviceがユーザーのコマンドを「ディレクティブ」と呼ばれるJSONオブジェクトに変換します。

ビデオスキルは、このディレクティブをLambda関数に送信します。Lambda関数はリクエストを検査し、検索などの必要な処理を実行してから、必要な情報をアプリに送信します。Lambda関数は、プッシュ通知サービスのAmazon Device Messaging(ADM)を使用してアプリとの通信を行います。アプリに関連付けられたセキュリティプロファイルが、アプリとADMの間の通信を承認します。Lambda関数からの通信を受信したら、アプリはリクエストに応じてメディアの検索結果または最初に再生するメディアを表示します。

詳細なワークフロー

前のセクションではVSKの大まかなしくみについて触れましたが、今度はワークフローを詳しく見ていきます。Fire TVにおけるビデオスキルのワークフローは、下図のとおりです。

Fire TV対応アプリ用ビデオスキルの説明図とワークフロー
Fire TV対応アプリ用ビデオスキルの説明図とワークフロー

Alexa搭載デバイスが自然言語のコマンドをリッスンする

Fire TVでは、Alexaがユーザーからの自然言語コマンドをリッスンします。サポートされている発話(Alexa用語です)には、検索・再生・アプリの起動・チャンネル変更・トランスポートコントロールなどのコマンドが含まれます。Alexa搭載デバイスは、これらのコマンドをクラウド上のAlexaに送信します。

Alexaがフレーズを処理してディレクティブを生成する

Alexaはクラウド上で自動音声認識の機能を使用してユーザーの発話を処理し、音声をテキスト変換します。また、Alexaは自然言語理解の機能を使用してコマンドを処理し、テキスト内容の意図を認識します。この言語処理と解釈の機能はすべて無料で利用できます。

ディレクティブがビデオスキルAPIを介してLambdaに渡される

クラウド上でAlexaがユーザーの発話を分析・解釈して出力したものが、ディレクティブです。ディレクティブは、JSONオブジェクトとして記述されたデータと命令のセットのことです。たとえば、ユーザーが「『ビッグバックバニー』を見せて」と話しかけると、Alexaはこの発話を以下のような特定のJSON構造を持つSearchAndPlayディレクティブに変換します。

{
    "directive": {
        "payload": {
            "entities": [
                {
                    "type": "Video",
                    "uri": "entity://provider/program/amzn1.p11cat.merged-video.8a42b984-28c2-5c09-bd24-8d924e004d3f",
                    "value": "ビッグバックバニー",
                    "externalIds": {
                        "hawaii_us": "tt1254207",
                        "ENTITY_ID": "amzn1.p11cat.merged-video.8a42b984-28c2-5c09-bd24-8d924e004d3f",
                        "imdb": "tt1254207",
                        "tms": "MV006850300000"
                    }
                },
                {
                    "type": "Video",
                    "uri": "entity://provider/program/amzn1.p11cat.merged-video.4176eed9-eb18-546a-b934-314f50abe8db",
                    "value": "ビッグバックバニー",
                    "externalIds": {
                        "ENTITY_ID": "amzn1.p11cat.merged-video.4176eed9-eb18-546a-b934-314f50abe8db"
                    }
                },
                {
                    "type": "Video",
                    "uri": "entity://provider/program/amzn1.p11cat.merged-video.1ef9c397-544b-5632-a0d3-9b6439113616",
                    "value": "ビッグバックバニー",
                    "externalIds": {
                        "ENTITY_ID": "amzn1.p11cat.merged-video.1ef9c397-544b-5632-a0d3-9b6439113616",
                        "tms": "12631647"
                    }
                },
                {
                    "type": "Video",
                    "uri": "entity://provider/program/amzn1.p11cat.merged-video.5cdb7c5c-8771-55cd-b552-215e131223f1",
                    "value": "ビッグバックバニー",
                    "externalIds": {
                        "ENTITY_ID": "amzn1.p11cat.merged-video.5cdb7c5c-8771-55cd-b552-215e131223f1"
                    }
                },
                {
                    "type": "Video",
                    "uri": "entity://provider/program/amzn1.p11cat.merged-video.3cabe805-968e-5001-813c-f46b5b1069d7",
                    "value": "ビッグバックバニー",
                    "externalIds": {
                        "ENTITY_ID": "amzn1.p11cat.merged-video.3cabe805-968e-5001-813c-f46b5b1069d7",
                        "tms": "SH023726740000"
                    }
                }
            ]
        },
        "header": {
            "payloadVersion": "3",
            "messageId": "72dfff1c-17df-44c5-acbb-19f491e87609",
            "namespace": "Alexa.RemoteVideoPlayer",
            "name": "SearchAndPlay",
            "correlationToken": "1bb6264b-e248-4087-901e-30c3462082b7"
        },
        "endpoint": {
            "endpointId": "1736bf8bd3091561##amzn1-ask-skill-4c43ae24-ee76-4a78-a189-cc06b64d1be8##development##com-fireappbuilder-android-football-streamz",
            "cookie": {
                "VSKClientVersion": "1.4.5",
                "deviceType": "A2LWARUGJLBYEW",
                "appPackageName": "com.fireappbuilder.android.football.streamz",
                "deviceId": "G070L809716314UB",
                "appName": "Alexa VSKを使用するFire TV対応サンプルアプリ",
                "applicationInstanceId": "amzn1.adm-registration.v3.Y29tLmFtYXpvbi5EZXZpY2VNZXNzYWdpbmcuUmVnaXN0cmF0aW9uSWRFbmNyeXB0aW9uS2V5ITEhYUtudnpaOU1xYlV5aU04NElIdU80a3FYa29lVVFDbE5oa2QzM3FhL3hPUzFMaTNmOXBhTkZPeTVaUmFYK3RaU01Cc2Q4b0U0ZzVkOVdhZDR0TVIyb2UxMitUd3dwL0ZEaGpKMkN3bXJhUnUvNThOa0VCRmg1TzYrVmxGN1ZadWlwWmpZZnhEeU1USW1NY1d2MGZYZVMyVDRjVVZSdGtrMWJoQ1FNWEoyQlpRbVNBUmM1V2R5dG5TWUhJZHNwNHg3TzM0MExwQzh4NlhtZlpJY2lpZS9IZktpM0xDYkNFUHlWUTJYU2ZJdVZXNGk3T0c2T0xpWDVlTkl3YXVVZjAyd3JTWGpHVGJrMHRNYU5DcHQ4NGhBVVphQnBHR3dCclVDWGFjcURrUWhMWnd2WjZtZEhqcjNOSkhHd0RDNWt3UGdDWlVRZXRQUkVNVnNqNldlNWtMZ3A0VDdubUZ6SklSeStiSjkxMFEveVh3PSFINFJjeWd2djlCQ2Q1c3NocEptVU5RPT0"
            },
            "scope": {
                "token": null,
                "type": "BearerToken"
            }
        }
    }
}

この場合、ビデオスキルのカタログは「hawaii_us」という名前です。 entities配列の最初の項目には、このメディアへの参照が含まれています。

Lambda関数で処理できるディレクティブの種類は、以下のとおりです。

ディレクティブ 説明
RemoteVideoPlayer - SearchAndPlay ユーザーが特定ビデオコンテンツの再生をAlexaにリクエストした際に送信されます。
RemoteVideoPlayer - SearchAndDisplayResults ユーザーがビデオコンテンツの検索をAlexaにリクエストした際に送信されます。
PlaybackController ユーザーがビデオコンテンツの再生、停止、ナビゲーションをリクエストした際に送信されます。
SeekController ユーザーが時間を指定して早送り(またはスキップ)や巻き戻しをリクエストした際に送信されます。
ChannelController ユーザーがチャンネルの変更をリクエストした際に送信されます。
RecordController ユーザーが録画の開始または停止をリクエストした際に送信されます。
VideoRecorder ユーザーが録画の検索、キャンセル、または削除をリクエストした際に送信されます。
KeypadController ユーザーが左右へのスクロール、ページの上下スクロール、フォーカスされているアイテムの選択をリクエストした際に送信されます。

Lambda関数とアプリで、Discoverディレクティブへの応答でサポートする一連の機能を宣言します。また、Alexa Client Libraryを統合した場合のアプリの機能も宣言します。宣言した機能によって、AlexaからLambda関数に送信されるディレクティブが決まります。たとえば、ChannelControllerの機能を宣言していない場合、AlexaはChannelControllerディレクティブを送信しません。

Lambdaがディレクティブを処理する

Lambdaは、コードをホストするサーバーを必要とせずに、クラウド上でコードを実行できるAWSのサービスです(サーバーレスコンピューティングと呼ばれます)。Lambda関数は、ビデオスキルAPI経由で渡されるディレクティブを処理し、簡単なステータスメッセージで応答します。

Lambda関数はさまざまなプログラミング言語に対応していますが、このテクニカルドキュメントで扱うLambdaサンプルコードではNode.jsを使用しています。Lambda関数におけるロジックのプログラミングは、開発者側で行ってください。つまり、Lambda関数にディレクティブを渡す役割はAmazon側が担いますが、必要なアクションをアプリに組み込むのは開発者側ということです。

Lambdaに送信されるディレクティブを処理する方法は複数あります。ディレクティブは、主に次の2つの方法で処理できます。

  • Lambda関数をコーディングして、Lambda関数内でディレクティブを完全に処理する。必要な情報を取得するために、Lambda関数がバックエンドのデータベースやその他サービスに対してクエリを実行する場合があります。Lambdaは、必要なアクションを実行するか、適切な情報を取得してから、アプリに命令を送信します。
  • Lambda関数からディレクティブを直接アプリに渡し、アプリ側でディレクティブの処理を行う。たとえば、アプリ側でクエリやその他サービスを実行して検索を行い、必要な情報を取得してから次のアクションに移ることが可能です。

LambdaがADMを介してアプリに命令を送信する

Lambda関数はAlexaから受信したディレクティブを処理した後、Amazon Device Messaging(ADM)経由のプッシュ通知を通じてFire TV対応アプリに命令を送信します。また、Fire TV対応アプリに組み込まれたAlexa Client Libraryがアクティブなアプリの情報をAlexaに伝え、Alexaがそのアプリを優先できるようにします。Alexa Client Libraryは音声対応をサポートするJavaライブラリで、スキルを自動的に有効化させる際にAlexaでアプリを認証するのに役立ちます。

Alexaは、Lambda関数に送信されるディレクティブにADM登録IDが含まれていることを確認してくれます。異なるプッシュ通知アーキテクチャとクラウドサービスを使用する場合は、ADMに代わるものを参照してください。

ADMからの受信メッセージに応じてアプリが動作する

命令を受け取ったアプリは、ユーザーのリクエストに応じたアクションを実行します。例として、「映画のタイトルを表示する」アクションが考えられます。繰り返しますが、ディレクティブはLambda関数で直接処理することも、アプリで処理することも可能です。

開発にかかる推定所要時間

Fire TV対応アプリにVSKを完全統合するには、数週間から数か月かかることがあります。コンテンツのカタログ統合が既に完了している場合、VSKの実装に必要な開発作業の大部分を占めるのは、Lambda関数が受信したディレクティブを処理するためのロジック作成です。

Fire TV対応アプリにVSKを組み込むプロセスは、一連の手順から成ります。詳細については、「Fire TV対応アプリ用VSK(Video Skills Kit)の実装プロセスについて」に記載された統合の手順を参照してください。

最初に、VSKが既に統合されたサンプルアプリサンプルLambda関数を使用して統合を行います。この統合作業には半日程度かかります(所要時間はAndroid、AWS、Amazon開発者コンソールへの理解度に左右されます)。このシンプルな統合を通じて、AlexaからクラウドのLambda関数に送信されるディレクティブを確認できるので、実装範囲の理解が深まるはずです。

サンプルアプリでの統合が完了したら、実際のアプリでも同じ統合手順を実行する必要があります。

VSKにおけるその他の実装

Fire TV対応アプリへのVSK実装に加えて、Echo ShowなどのマルチモーダルデバイスにもVSKを実装することができます。Echo Showのようなマルチモーダルデバイスでは、メディア再生時に既存のHTML5ウェブプレーヤーとAmazon用カタログ統合を利用する「アプリレス」フレームワークを使用します。デバイスで閲覧ページや検索ページをレンダリングするための既存テンプレートも複数提供されます。詳細については、Echo Show用VSKについてを参照してください。

セットトップボックスやコンソール、スマートテレビなどを作るデバイスメーカーは、これらのデバイスにVSKを直接実装することで、ユーザーがアプリの起動やチャンネルの変更などを行えるようにすることができます。デバイスへのVSK実装には、ライブTVやビデオオンデマンドのコンテンツ用に用意されたGracenoteカタログの活用や、再生・検索・ナビゲーション機能をサポートするLambdaの構築、デバイスソフトウェアが送信する状態情報の確認、Cloud to Device(C2D)通信の処理などが必要です。詳細については、リビングルームデバイス向けビデオスキルを参照してください。

VSKと画面表示を使用するカスタムスキルの違い

VSKは、カタログコンテンツのほとんどがIMDb(または各ロケールの類似サービス)にあるビデオプロバイダー、または音声対話型デバイスを開発するデバイスメーカー向けに設計されています。この実装では、開発したFire TV対応アプリまたはビデオサービスでAlexaからのディレクティブを処理して、「アレクサ、『インターステラー』を再生して」などのリクエストをサポートできるようにします。

これに対して、Alexaスキルに付随する視覚要素(画像、短いビデオクリップ、画面に表示されるテキストなど)だけを提供する場合は、(ビデオスキルではなく)カスタムスキルを作成し、Alexa Presentation Language(APL)を使用してDisplayテンプレートで視覚エクスペリエンスをレンダリングします。たとえば、クイズスキルに関連するテキストや画像をEcho Showの画面に表示することもできます。VSKを使用してビデオコンテンツのより複雑な対話型音声エクスペリエンスを構築するのではなく、このようなエクスペリエンスを構築する場合は、画面付きのAlexa搭載デバイス用のスキルの作成を参照してください。画面表示を使用するカスタムスキルの実装プロセスはよりシンプルで、開発にあたり広範な専門知識は必要ありません。

用語集

Alexaでは、聞き慣れない用語が新たに増えてきています。用語の定義については、用語集を参照してください。

次のステップ

Fire TV対応アプリへのVSK実装を開始するには、Fire TV対応アプリ用VSK(Video Skills Kit)の実装プロセスについてを参照してください。