Alexaスキル開発トレーニングシリーズ 第1回 初めてのスキル開発 (改訂版)

このトレーニングは6回のシリーズで、Alexaスキルの基礎、仕組み、スキルの開発と認証まで、幅広い内容を解説します。
第1回は、AlexaとAlexa Skills Kitの概要を理解し、Alexaスキル作成の実習を通してスキル作成手法を習得します。
- Alexaとは
- Alexaスキル
- スキル実行の仕組み
- 実習 : サンプルスキルの作成
まずは、今回学習する内容を簡単に説明するビデオを見てみましょう。
1. Alexaとは
Alexaは、音声によるユーザーインターフェースを使って、ユーザーにさまざまな体験を届けるクラウドベースの音声サービスです。Amazon Echoをはじめとする様々なデバイスで利用することができます。
Amazon Echo
Amazon EchoシリーズはAlexaに対応した代表的なデバイスです。音声で操作するハンズフリーのスピーカーで、ユーザーは好きな音楽を再生したり、照明をつけたりと、Alexaの持つ様々な機能を利用できます。また、ニュースやスポーツの結果、天気などの情報を、音声を通して知ることもできます。
ASK と AVS
Alexaの大きな特徴は、サードパーティや個人の開発者によってAlexaの機能を拡張できることです。拡張する方法は大きく2種類があり、それぞれ以下の名称で公開されています。
- Alexaの機能を拡張 : Alexa Skills Kit (ASK)
- 独自デバイスにAlexaの機能の組み込む : Alexa Voice Service (AVS)
スキル開発をより簡単に、早くできるようにする開発キットがAlexa Skills Kit (ASK)で す。ASKにはセルフサービのAPI、開発ツール、ドキュメント、コードサンプルなどが含まれます。このトレーニングブログでは、Alexaスキルについて主に扱います。Alexa Voice Serviceについては詳しく触れることはありませんが、AVS Device SDKを利用すると、家電製品や自動車など、あらゆるデバイスにAlexaの音声体験を提供する製品の開発を行うことができます。
2. Alexaスキル
Alexaの大きな特徴は、サードパーティや個人の開発者によってAlexaの機能を拡張できることです。拡張する方法は大きく3種類があり、それぞれ以下の名称で公開されています。
- カスタムスキル : 汎用的なスキル
- スマートホームスキル : 家電製品などを制御するスキル
- フラッシュブリーフィングスキル : ニュースなどを読み上げるスキル
カスタムスキルはユーザーの発話内容に応じて自由な処理を行い任意の応答を返すことができる最も汎用的なスキルです。その他のスキルは固定のAPIが用意され、用途に特化したスキルです。Alexaで実現したいことに最も近いスキルの種類を選択し、スキルの開発を進めましょう。このトレーニングでは、カスタムスキルについて解説します。
開発したカスタムスキルは、審査を申請し認証を受けるとAmazonのAlexaスキルストアで公開することができます。スキルの認証と公開については、第6回で紹介します。
3. スキル実行の仕組み
Alexaカスタムスキルは、以下の流れで実行します。

- ユーザーがAlexa対応デバイスに発話
- デバイスはマイクで集音した音声データを、インターネット経由でAlexaサービスに送信
- Alexaサービスは音声データをAIで解析し、AWS Lambdaを呼び出して解析結果を伝える
- Lambdaはスキルの処理を実行し、その結果をAlexaサービスにレスポンスとして返す
- Alexaサービスはレスポンスに応じた音声データを生成、デバイスに返信
- デバイスは音声データを再生し、ユーザーに伝える
Alexaサービスのリクエスト先は、AWS Lambdaのほかに任意のWebサービスを設定することもできますが、今回は以後Lambdaを前提として解説します。
実習 : サンプルスキルの作成
- アカウントの作成
- スキルの設定と対話モデルの作成
- AWS Lambda関数の作成
- スキルとLambdaの接続
- Alexaシミュレータによるテスト
今回の実習では、スキル開発の流れを体験します。はじめに開発者アカウントの作成し、Alexaスキルの初期設定と対話モデルの作成を行います。次にAWS Lambda関数の開発を行いAlexaスキルと接続します。最後にAlexaシミュレーターを使って作成したスキルの動作を確認します。事前に必要なものを準備し、実習を進めて下さい。
必要なもの
- 受信可能なメールアドレス : アカウント登録に入力。確認メールを受け取ります
- クレジットカード : AWSアカウント登録時に必要。ただしAWSの無料枠を活用すれば費用はほとんどかかりません
- Chrome または Firefox ブラウザが利用できるコンピュータ (Win, Mac, Linux)
- (オプション) Amazon EchoなどのAlexa対応デバイス
ステップ 1. アカウントの作成
スキルを開発するためにはAmazonの開発者アカウントとAWSアカウントが必要です。既にアカウントをお持ちの場合はログインしておきましょう。
Amazon開発者アカウントの作成
- Webブラウザでhttps://developer.amazon.com/ja にアクセスします。
- 右上の「サインイン」をクリックします。

- お手持ちのAmazon.co.jp のアカウントでログインします。まだ開発者アカウントをお持ちでない場合でも「Amazon Developer アカウントを作成」ボタンはクリックしないでください。Alexa対応デバイスをお持ちの方は、そのデバイスで動作テストができるように、Alexaアプリに登録する際に使用したアカウントでログインすることをお勧めします。

- 初めてログインすると自動的に開発者アカウントの登録画面が表示されます。

- 「2. App Distribution Agreement」タブの内容を確認し「承認して実行」をクリックします。

- 「3. 支払い」タブの質問項目に回答し「保存して実行」をクリックすると、自動的にサインインします。

開発者アカウント作成時の注意点は別記事「Alexa 開発者アカウント作成時のハマりどころ」を参照してください。
AWSアカウントの作成
AWSアカウントは「AWS アカウント作成の流れ」の手順に従って作成してください。
ステップ 2. スキルの設定と対話モデルの作成
Amazon開発者コンソールでは、Alexaスキルの設定や対話モデルの作成を行います。ここでは、公開されている宇宙の豆知識を返すサンプルスキル http://alexa.design/fact-jpを用いてAlexaスキルを作成する手順を説明します。
2-1.スキルの作成画面を表示させる
- 開発者コンソールにサインインします。

- 開発者コンソールのメニューから「ALEXA SKILLS KIT」をクリックします。

- 「スキルの作成」ボタンをクリックします。

- スキル名を入力します。この名前がスキルストアに表示されます。ここでは「MyFactSkill」と入力しましょう。スキルのデフォルト言語は日本語を選択し、スキルに追加するモデルは「カスタム」を選択して「スキルを作成」ボタンをクリックします。

- スキルビルダーの画面が表示されます。この画面でスキルの対話モデルを設計します。

2-2. 対話モデルをデザインする
それでは、スキルの対話モデルを入力しましょう。今回は宇宙の豆知識を教えてくれるスキルを作るので、ユーザーの要求は「アレクサ、宇宙の豆知識を開いて、豆知識を教えて」のように話しかけると想定します。ここで、「宇宙の豆知識」を開いての部分は、スキルの呼び出し名と呼ばれ、何かを要求する前にスキルを呼び出すために必ず用いられるフレーズです。まずは、この呼び出し名を入力しましょう。
- 右側パネルの「スキルビルダーのチェックリスト」または左側メニューパネルの「呼び出し名」のどちらかをクリックします。

- 呼び出し名に「宇宙の豆知識」と入力します。下の呼び出し名の要件の説明は必ず目を通すようにしましょう。念のために「モデルを保存」をクリックしておきます。

- 次にカスタムインテントを追加します。インテントとはユーザーの要求に対して発生するイベント名です。例えば「豆知識を教えて」という要求に対して、GetNewFactIntentというインテントが発生するように設定しましょう。

- カスタムインテントの名前「GetNewFactIntent」を入力し「カスタムインテントを作成」ボタンをクリックします。

- 下図のようにユーザーが「豆知識」を知りたい時に言いそうなフレーズ(サンプル発話)をできるだけ多く入力します。

- 入力が終わったら「モデルを保存」をクリック、さらに「モデルをビルド」をクリックします。ビルドには少し時間がかかります。

以上で、ユーザーがサンプル発話に近しいフレーズを要求した場合、GetNewFactIntentインテントが発生し、エンドポイント(開発者のサーバー:Lambda関数)に送信されるようになります。
あとでこの画面に戻ってくるので、Webのウィンドウはそのままにしておきます。
ステップ3. Lambda関数の作成
続いて、AWS Lambdaの関数を作成します。AWS Lambdaは、サーバー管理が不要なプログラムの実行サービスで、カスタムスキルのためのクラウドベースサービスとして簡単に利用できます。Lambdaでは実行するプログラムを「関数」という単位で管理します。今回はサンプルコードをコピーして関数を作成し、Alexaスキルから呼び出せるよう設定します。
- サンプルコードのZIPファイルをダウンロードし、解凍しておきます。
- WebブラウザでAWSマネージメントコンソールにアクセスし、ログインします。

- 画面右上のリージョン選択メニューから「アジアパシフィック(東京)」を選択します。

- 画面左上の「AWSサービス」のテキストボックスに「lambda」と入力し、表示される候補から「Lambda」をクリックします。

- AWS Lambdaの初期画面が表示されたら、「関数の作成」ボタンをクリックします。

- 以下の手順に従い、Lambda関数を作成します。
- 関数の作成では「一から作成」をクリックします。次に関数の名前に「MyFactSkill」、ランタイムを「Node.js 8.10」、ロールの設定では「カスタムロールの作成」をクリックします。

- 下図のような画面が出たら設定は何も変更せずに「許可」ボタンをクリックします。

- 画面の下に表示される「関数を作成」ボタンをクリックします。

- トリガーの追加のリストから「Alexa Skills Kit」を選択します。

- セキュリティの観点で、本来はスキルIDを入力すべきですが、ここでは簡略化のため「無効」を選択し、「追加」ボタンをクリックします。

- MyFactSkill のアイコンボタンをクリックします。

- 関数コードのコードエントリタイプをクリックして「.ZIP ファイルをアップロード」とします。関数パッケージの「アップロード」ボタンをクリックして、手順1でダウンロードした lambda.zip ファイルを指定します。最後に「保存」ボタンをクリックします。

- MyFactSkill関数が作成されたら、画面右上の「テスト」をクリックします。

- [サンプルイベントテンプレート]から「Alexa Start Session」を選択し、イベント名を「AlexaTest」と入力します。入力できたら画面下の「作成」ボタンをクリックします。

- テストの選択が「AlexaTest」になっていることを選択し「テスト」ボタンをクリックしてテストを実行します。

- 「実行結果:成功」と表示され、[詳細]をクリックし以下のようなJSON形式の結果が表示されることを確認します(スキル名のみが呼ばれた時に発生するLaunchRequestイベントに正しく応答するかどうかをテストしています)。

- 画面右上の「ARN」に表示されるARN(Amazonリソースネーム)をクリップボードまたはメモ帳などのテキストエディタにコピーしておきます。

ステップ4. スキルとLambdaの接続
ステップ2で作成したAlexaスキルから、ステップ3で作成したMyFactSkill関数を呼び出すように設定します。
- Amazon開発者コンソールの画面に戻り、左側のメニューから「エンドポイント」をクリックします。次にサービスのエンドポイントの種類では、「AWS Lambdaの ARN」を選択し、デフォルトの地域のフィールドに、先ほどコピーしておいたLambda関数のARN文字列をペーストします。

- 「エンドポイントを保存」ボタンをクリックします。

- 「カスタム」をクリックし初期の画面に戻るとカスタムスキルのチェックリストが全てグリーンになっていることを確認します。これでカスタムスキルの設定は全て完了です。

ステップ5. Alexaシミュレータによるテスト
開発者コンソールにはスキルの動作をテストするAlexaシミュレータ機能があります。これを利用して、作成したAlexaスキルの動作を確認します。
- 開発者コンソールの「テスト」タブをクリックします。テストが無効になっている場合はスイッチをクリックし有効にします。

- 発話の入力欄に、ユーザーの発話をマイクまたはキーボードでタイプ入力します。例えば「宇宙の豆知識で何か教えて」と入力してみましょう。下図のような結果が表示され、アレクサが正しく応答していることを確認します。

宇宙の豆知識を返すスキルの作成からAlexaシミュレーターの動作確認までの手順を確認しました。これで、今回の実習は終了です。
まとめ
第1回では、Alexaと独自のスキルを実行できるAlexa Skills Kitの仕組みについて学習し、スキルの作成から実行までの流れを実習で確認しました。次回は、カスタムスキルの開発に必要な対話モデルについてご紹介します。
(このコンテンツはAmazonとの業務委託に基づいて、クラスメソッド株式会社がオリジナルを作成しAmazonが改編しました)
Note:2018年10月16日 Alexa Skills Kit SDK for Node.js Version 2を使用した開発方法に更新しました。