Alexa Web API for Gamesとは
Alexa Web API for Gamesを利用すると、Alexa Skills Kitディレクティブと使い慣れたウェブテクノロジーを組み合わせて、リッチで没入感のある音声対応ゲームを作成できます。たとえば、JavaScript、HTML5、CSS、ウェブオーディオなどが使えます。これらのテクノロジーを使用すると、カスタムアニメーションを利用したAlexaゲームを開発したり、既存のHTMLゲームをAlexa搭載デバイス(Echo ShowやFireTVなど)で動作するマルチモーダルゲームエクスペリエンスに変えたりすることができます。
次の図は、Alexa搭載デバイスでの音声対応ゲームの動作を示しています。

- ユーザーがデバイスに話しかけて、ゲームの開始をリクエストします。
- デバイスが発話をクラウドにあるAlexaサービスに送信し、自動言語認識によって発話が処理されてテキストに変換されます。その後、自然言語理解によってテキストのインテントへの紐付けが行われます。
- Alexaサービスが発話を処理してインテントへの紐付けを行い、スキルのバックエンドにリクエストを送信します。
- スキルはHTMLディレクティブに対応していることを示すリクエストを受け取り、ウェブアプリを起動するための応答を送信します。その際に、ウェブアプリがホストされているURLを指定します。
- Alexaがデバイス上でブラウザを起動します。
- 指定されたURLにあるゲームがブラウザでロードされます。従来のウェブサイトと同様に、含まれる各アセットに対して複数のリクエストが送信されます。
- ユーザーが、音声、タッチスクリーン、リモコンを使ってゲームを操作します。ゲームロジックがスキルのバックエンドに含まれている場合は、ウェブアプリがスキルのバックエンドとやり取りします。
ユーザーによるゲームの操作
ユーザーは通常どおりスキルを呼び出して対話します。スキルは、Alexaサービスからの標準的なリクエストに応答して、ウェブアプリ部分のエクスペリエンスを開始します。たとえば、LaunchRequest
を受け取ったら、ユーザーにゲームを開始する準備はよいかをたずねるスキルをデザインするとします。
ユーザー: アレクサ、マイウェブゲームを開いて
Alexa: マイウェブゲームへようこそ。プレイの準備はいいですか?
ユーザー: はい
Alexa: わかりました。エンジンを起動します…(サウンドエフェクト)
スキルはウェブアプリを起動し、開始ページを表示します。
ウェブアプリが起動したら、ユーザーはタッチと音声、またはリモコンと音声を使ってアプリを操作します。たとえば、次のようなことができます。
- 画面上のボタンを押すと、ウェブアプリ内のAlexa音声やその他のアクションをトリガーできます。
- ゲームにコマンドを話しかけます(「アレクサ、ビームを発射して!」など)。
- アプリがトリガーした音声プロンプトに答えます(「外れました! もう一度発射しますか?」など)。
この対話は、ウェブアプリが閉じるまで続きます。たとえば、ユーザーが「アレクサ、終了して」と言った場合です。
Alexa Web API for Gamesを使った開発
Alexa Web API for Gamesを使ってゲームを開発する際は、次の2つのパートを作成します。
- ウェブアプリを起動し、音声リクエストを処理して、実行中のアプリと通信するAlexaカスタムスキルのパート。詳細については、ウェブアプリゲームのAlexaスキルの開発を参照してください。
- ブラウザ表示とユーザーとの対話を行うウェブアプリのパート。Alexa JavaScript APIを使って、アプリの実行中にスキルと通信します。詳細については、Web API for Gamesを使用したウェブアプリの開発を参照してください。
スキルを開発する際は、これらのパートを別々に作成してから、統合することもできます。たとえば、ゲームのウェブアプリですべての機能が動くようになってから、Alexa音声と音声操作の呼び出しを追加することができます。ウェブアプリまたはスキルのバックエンドにゲームロジックを含めるようにゲームをデザインできます。
スキルとウェブアプリとの通信
Alexa Web API for Gamesのインターフェースを使用して、ユーザーのゲーム操作中に、スキルとウェブアプリ間の通信を行うことができます。
Alexa.Presentation.HTML
インターフェースは、スキルにウェブアプリとの通信を行うディレクティブとリクエストを提供します。スキルは、ディレクティブを使用してウェブアプリに情報を送信し、ウェブアプリから受け取るイベントを待機するリクエストハンドラーを使用します。- Alexa JavaScript APIインターフェースはウェブアプリに、スキルとの通信に使うメソッドとプロパティを含む
Alexa
クラスを提供します。ウェブアプリはこのクラスでメソッドを呼び出してスキルにメッセージを送信し、スキルから受け取るイベントを待機するコールバックを登録します。
以下の図は、通信フローを示しています。

- ユーザーがスキルを呼び出します。
- Alexaサービスが発話を処理し、
LaunchRequest
またはIntentRequest
を送信します。 - スキルコードのリクエストハンドラーが、応答でAlexa.Presentation.HTML.Startディレクティブを返します。
- Alexaサービスが、ウェブアプリを起動するようデバイスに指示します。
- デバイスがウェブアプリを起動します。
- デバイスに開始ページが表示されます。
- ウェブアプリが
Alexa.create()
を呼び出して、AlexaClient
オブジェクトのインスタンスを作成します。 - ユーザーが通常どおりウェブアプリの操作を始めます。
- ウェブアプリが
alexa.skill.sendMessage()
を呼び出してスキルにメッセージを送信します。このメッセージには、ユーザーに対して音声入力のプロンプトを出すようAlexaに指示するイベントなどが考えられます。 alexa.skill.sendMessage()
により、Alexa.Presentation.HTML.Messageリクエストが送信されます。- スキルが、これらの受信したリクエストを処理してから、ディレクティブと出力音声で応答します。
- スキルが、アプリにメッセージを送信するAlexa.Presentation.HTML.HandleMessageディレクティブを返します。
- ウェブアプリが、
alexa.skill.onMessage()
を使用して、スキルから送信されたメッセージに応答するコールバックを登録します。 - この対話中、スキルセッションは開いたままです。ユーザーがゲームを終了するまで続きます。
ウェブアプリでAlexa音声の開始や終了といったその他のイベントを使って、画面上のイベント(ボタンの押下など)と音声コマンドとの間のフローを構築できます。スキルとウェブアプリの通信を使って音声操作と対話を組み込む方法の例については、ウェブアプリに音声操作と対話を追加するを参照してください。
スキルとウェブアプリの要件
Alexa Web API for Gamesを使用するには、スキルとウェブアプリが次の要件を満たす必要があります。
- HTMLディレクティブに対応するようスキルのコンフィギュレーションを行います。
- インターネットからアクセス可能な
HTTPS
エンドポイントでウェブアプリをホストします。ウェブサーバーが有効で信頼できるSSL証明書を示している必要があります。詳細については、Alexa Web API for Gamesを使った開発を参照してください。 - ウェブアプリでAlexa JavaScript APIを使ってアプリの実行中にスキルと通信します。