Alexaハンズオントレーニングに参加してきました。

Publish2018/02/13(火)

Alexaハンズオントレーニングに参加してきました。

2018/2/10に大阪のアマゾンジャパンで行われたAlexaハンズオントレーニングに参加してきました。

目次

  1. Alexaハンズオントレーニングとは?
  2. 参加しようと思った動機
  3. 当日の内容について
  4. Alexaスキル開発の手順と公開時の審査のポイント
  5. まとめ

Alexaハンズオントレーニングとは?

まず、今回のAlexaハンズオントレーニングがどういうイベントなのかをだいぶざっくりと説明しますと、最近話題のスマートスピーカー「AmazonEcho」で使用するカスタムスキルと呼ばれる拡張機能を開発するための勉強会といった感じです。
スマートスピーカーは、今の時点でも今回メインとなるAmazonEchoだけではなく、GoogleのGoogleHomeやLINEのClovaがあり、噂ではAppleからもスマートスピーカーが発売されるんじゃないかという話が出ていたりと、最近結構耳にすることが多くなってきているトピックだと思います。
今回のハンズオンでは、Amazon Echo(Alexa)のカスタムスキルを作る流れを、実際にAmazonの人達が教えてくれるというまたとない機会なので参加してきました。

参加しようと思った動機

今回、なぜAlexaのハンズオンに行こうかと思ったのかと言いますと、単純に家にAlexaがやって来て、家の中でAlexaを使って凄く便利だなと感じたので、自分でもスキルを作ってAlexaをコントロールしてみたらきっと面白いと思ったからです。
なお、家にあるのがもしGoogleHomeだったら、Googleのハンズオンを探して行っていた可能性もあります。
たまたま今回はAlexaが家に来たので、Alexaのハンズオンに参加しました。
ちなみに、我が家では子供達もAlexaに天気を聞いたり計算をさせたりなど、デジタルネイティブらしく早速使いこなしている感じがあります。
ちょっと話が逸れますが、Alexaに限らずスマートスピーカーにはすごく将来性を感じています。
音声による入力は、文字を打てない子供でも使えるし、両手がふさがっていても声だけで色々なことがコントロールできるので、実際に使うと思っていたよりもはるかに便利さを感じます。
ついこないだも、違う種類の集まりの新年会だったのに、最終的には今年はみんなでスマートスピーカーのことをがんばろうというような話になったりしたくらい、実際に使った人に与えるインパクトは大きいなと実感しています。
正直、使う前までは「まあこんなくらいだろうな」という先入観のようなものがあったんですが、実際にやってみるとその思い込みがいかに浅はかだったかと思い知らされました。
という事もあり、最近の僕の中での最もアツいテーマはスマートスピーカーだったりします。
話を元に戻します。
そんな感じでなにかAlexaのイベントがないかなと探してみたら、今回のハンズオントレーニングの情報を知り、早速申し込んだわけです。

Alexa
参加のきっかけになった我が家のAlexa。かわいい。

当日の内容について

当日は、雨の降る中移動したこともあり、ちょっとつらいななどと心が弱気になりながらも、会場に着くとすでにたくさんの人が到着しており期待は高まります。
僕は比較的早く着いておく方(人を待たせるくらいなら自分が待つ方が気が楽)なので開始の30分前に到着したんですが、今回は参加者のモチベーションがすごく高いためか既に半数以上の人が席についていました。

IMG_8760
今回の会場入り口のamazonロゴを見て若干テンションが上がります。

この状況でいつもと違う空気を感じますが、楽しくなってきた感じもありました。
当日は、それぞれにAmazonEchoDot(AmazonEchoの小さいモデル)が貸し出され、まずはセットアップというところから始まります。
全体で結構な数の参加者がいたためか、会場のネット回線が非常に重く、まずセットアップができないという状況が頻発しており、大丈夫かなと思いましたが少し時間が経つと解消していました。
エンジニアがやるセミナーはこの辺すごく強いなと思います。
僕もマニュアルを見ながらサクサクっとAmazonEchoDotのセットアップを終え、開始を待ちます。

なお、今回はTwitterのハッシュタグは「#alexaトレーニング」でした。
みんな集中してやっていたためか、ほとんど投稿がありませんが、一応。

AmazonEchoの概要と特徴などについて

ハンズオントレーニングの前半は、まずそもそもAmazonEcho(Alexa)がどういうものなのかというところから入ります。
本体のボタンの説明から入ったのでわかりやすかったというのもありますが、「マイクオフで指示をミュートできる」とかアクションボタンを押すことで「Alexa」というウェイクワードが不要になるとか、使ってても知らなかったことも知れたのが楽しかったです。
(一応言い訳するとAlexaには音声でしか接していないので、そもそもボタン自体触っていなかったから知らなかったというのもあります。不勉強なのは間違いないですが)
また、「履歴で録音された声が聞ける」など管理画面でできることの種類もわかりましたし、Alexaの精度を上げるためのフィードバックを手入力で対応しているなどの事情が知れたというのも面白い経験でした。
Amazonが最初から用意しているビルトインスキルは「Alexa、今日の天気を教えて」という感じで「Alexa」「コマンド」の順序で処理されるけど、これからカスタムスキルとして作成するサードパーティのスキルでは、「Alexa、NHKの天気予報を聞かせて」など「Alexa」「スキル名」「コマンド」で認識されるというルールも改めて説明してもらうことで、より具体的に内容を把握することができました。
あと、これも知りませんでしたが、Alexaのスキルは管理画面上(もしくはアプリ上)から有効化するものだとばかり思ってましたが、スキル名がわかっている場合は音声でも有効化できるということです。
この辺がさすがに面白いですね。
スキルを有効化まで音声でできるなら、教えて使ってもらうのもすごく簡単になります。

Alexaの仕組み

Alexaのスキルを開発するにあたっては、Alexaの仕組み自体を理解していないと難しいということで、Alexaの仕組みも学びました。
Alexaの処理の流れは以下のような感じになります。

話す(インテント)

録音

amazon alexaに転送、自動音声認識(テキスト化)、自然言語理解の処理

エンドポイントで処理の実行(今回はAWSのLambdaを使います)

文字や画像で応答を返す

amazon alexaに転送

音声データに変換してAlexaが話す

ユーザーが聞く

この流れがわかっていないと作る時に困るのは間違いないですね。
改めて知ることができてスッキリです。
なお、今回はnode.jsのSDKが用意されているので、node.jsで処理ロジックを書きます。
他の言語がいい人はそれでもできないことはないということでしたが、僕にはどれも同じくらいわからないので、推奨されているもので対応します。
というかそれ以外の選択肢はないかなと。

Alexaスキルについて

Alexaのスキルは、Amazonが用意している「ビルトインスキル」とそれ以外の「Alexaスキル」に大きく分かれます。
Alexaスキルには「カスタムスキル」「スマートホームスキル」「フラッシュブリーフィングスキル」の3つがあります。

カスタムスキルはインテントを自分で定義する形のスキルで、自分でAlexaのコントロールをデザインするタイプのものです。
今回作るのはカスタムスキルになります。
スマートホームスキルは、電気や鍵の連動とかをするタイプのもので、家電メーカーなどのハードウェアとの連携を行うものです。
対応するハードが決めたルール通りに設定するタイプのものなので、マニュアルさえあれば誰でも使えるというのがポイントです。
フラッシュブリーフィングスキルは、RSSの読み上げをするスキルで、ニュースなどを聞く場合に使用するものです。
3つのスキルの種類の中で最も簡単に作ることができるので、「特に説明なくてもサイト見てもらったらできるので後でやってみてください」と言われたくらいのものです。
まだ作ってないのでなんとも言えませんが、説明を見た限りでは全然難しくなさそうでした。

カスタムスキルを作成する場合は、「Alexa、天気予報を開いて大阪の天気を教えて」というような「ウェイクワード、呼び出し名、起動フレーズ、インテント」という部分をどうするのかを先に決めます。
この例だと「ウェイクワード=Alexa、呼び出し名=天気予報、起動フレーズ=大阪、インテント=天気を教えて」といった感じです。
このルールに沿ってスキルを作成していきます。
このワードは発話パターンを学習データとして登録していく(精度を高める)必要がありますが、ある程度はAlexaがいいようにしてくれるというのもとっつきやすいポイントかと思います。
ただ、細かく入力すればするほどスキルの精度は上がるのでできる限り発話パターンは入力した方がいいみたいです。
あと、スキル作成時は「キャンセル」「ヘルプ」「停止」ワードは必須なので、これを設定しないとスキルに申請しても通らないそうです。
なので、作る際には注意ですが、基本的な部分はビルトインスキルで対応できているのでその点は理解しておいた方がいいです。

参考ドキュメント:一般的標準インテント

ハンズオンで行った実際の内容

当日のハンズオンでは、例として返事を返すスキル「コーヒーショップ」を作成しました。
スキルの内容としては、
「Alexa コーヒーショップを開いて」というとAlexaが「いらっしゃいませ。Amazon コーヒーへようこそ。今日はなににしますか?」と返事を返すので 「コーヒーちょうだい」と返事をすると 「コーヒーですね、ありがとうございます。今日は天気がいいので全部100円でいいですよ。またの御利用をお待ちしております。」とAlexaが答えるという内容のスキルです。
ハンズオンのポイントとしては、「呼び出し名の意味と使い方を理解すること」「インテントとサンプル発話を適切に設計する」という2点です。
作業は用意してもらったドキュメントを順番にこなしていくという内容で、画面付きのドキュメントなので非常にわかりやすく、サクサクと進めることができました。
作業開始前に、ここを見ておくといいとアドバイスされたのがこちら。
https://developer.amazon.com/ja/alexa

以下がドキュメントの内容です。主に自分用メモですが。

音声インターフェイスの作成

Amazon開発ポータルにアクセスし、「Amazon Alexa」を選択し、ログインする。
開発者ポータルから「Alexa Skill Kit」を選択し、「新しいスキルを追加」を行う。
今回の設定では、スキルの種類は「カスタム対話モデル」、言語は「Japanese」、スキル名は「コーヒーショップ」、呼び出し名は「コーヒーショップ」。
ここまでで初期設定は完了。
次に対話モデルの作成に入る。
「対話モデル」タブから「スキルビルダーを起動する」を選択し、インテントの追加を選択、インテント名に「OrderIntent」を入力後、「Create Intent」をクリック。
注意点として、ここで作成するインテント名がAlexaに反映されるので、「OrderIntent」の大文字と小文字を含めて設定した内容を後で設定するコードに正しく反映させないとAlexaが動かない原因になるので注意が必要ということですので、気をつける。
あとはサンプル発話に考えられる「コーヒーください」「コーヒーをくれ」などのサンプルケースを入力する。
ここで入力するサンプル発話がAlexaの精度に直接反映していくので、サンプルは多ければ多いほどいい感じ。
ドキュメントには、1インテントに対し最低6つで理想は30以上のサンプル発話の登録が必要と書いてあったので、最低でも6つは登録することがいいようです。
設定完了後、「Save Model」をクリックして設定を保存し、「Build Model」で設定をAlexaに学習させます。
ビルドには少し時間がかかるので、少し休憩できます。
ビルド完了後、スキル設定の初期画面に移動し、スキルIDをコピーしておきます。
このスキルIDを次のフェーズの処理ロジック作成時に使用しますので、ここも重要です。
とりあえずこれまでで音声インターフェースの入力フェーズは終了。
管理画面で設定するだけでコードは一切不要という簡単さ。
概念的に何をすればいいのかだけを把握しておけば、詳しい操作は覚えてなくても何となくでも作れそうです。

処理ロジックの作成

音声インターフェイス作成後は、作成した音声インターフェイスでの処理を行うエンドポイントの作成と設定に移ります。
今回のハンズオンでは、AWSの「Lambda」とAmazonが提供するオープンソースのSDK「Alexa Skills Kit SDK for Node.js」を使用してエンドポイントを作成します。
作成と利用にはAWSのアカウントが必要なので、事前にAWSのアカウントを作成しておきます。
AWSポータルにアクセスし、「コンソールにログイン」をします。
IDとパスワードの入力を求められるので、IDとパスワードを入力し、AWSのコンソールにログインします。
ログイン後、「Lambda」を選択し、Lambdaの設定をはじめます。
Lambdaのリージョンが「東京」になっていない場合は東京リージョンを選択し、「関数の作成」を選択します。
AWSにはいろいろなリージョンがありますが、ここで東京リージョンを選択する理由は、これから作成するSDKが東京リージョンにあるからという理由です。
実はハンズオンの際に、ちゃんと確認せずシンガポールのリージョンで作成していたんですが、SDKがきちんと表示されませんでした。
リージョンごとに用意されているSDKが違ったりするんですね。勉強になりました。
話を戻します。
関数の作成を行った後は、「設計図」を選択し、「alexa-skill-kit-sdk-factskill」を選択します。
名前 (関数名) に「coffeeshop」、「ロール」のプルダウンメニューから「テンプレートから新しいロールの作成」、ロール名には「myAlexaRole」、ポリシーテンプレートは「シンプルなマイクロハーネスのアクセス権限」を設定し、「関数の作成」を行います。
作成した関数には、トリガーを設定する必要があるので次にトリガーの設定に移ります。
画面左にある「トリガーの追加」から「Alexa Skills Kit」を選択し、アプリケーションIDに音声インターフェイス作成時にコピーしておいたスキルIDを設定し、保存します。
保存が済んだら、画面にある「coffeeshop」をクリックすると、関数エディタが開きます。
ここにnode.jsで作成したコードを適用させていきます。
なお、作業はブラウザ内で行えます。
今回は設定するコード自体を用意してもらっていたので、コピー&ペーストで関数エディタに内容を反映させ、保存します。
保存完了後、画面右上に表示されているARNの文字列をコピーします。
注意点として、画面上には「ARN – arn:aws:lambda:ap-northeast-1:XXXXXXXXX:function:coffeeshop」のような文字列が表示されていますが、実際に使用するのは「arn:aws:lambda:ap-northeast-1:XXXXXXXXX:function:coffeeshop」の部分なので、「ARN – 」は不要です。
処理ロジックの作成手順は以上です。
全体的に、先ほどの音声インターフェイスの内容と同じく、やることの内容を理解していれば操作手順は覚えていなくてもなんとかなりそうです。
一番の問題は、今回コピペした関数のコード部分ですね。
Alexaのスキル開発で個人的に一番学習コストが高いのはここだと思います。
なので、これから自分でスキルを作る場合は、ここのコード作成が一番難しいポイントになると考えて間違いないと思います。

接続とテスト

音声インターフェイスと処理ロジックの準備ができたら、作成した2つを連携させてテストを行います。
まず、Amazon開発ポータルにログインし、「設定」タブから「サービスエンドポイント」で「AWS Lambda」を選択し、「デフォルト」のテキストボックスにLambdaのARNの文字列を貼り付けます。
接続の設定は以上です。はっきりいって簡単すぎるくらい簡単です。
設定完了後は、テストを行います。
テストを行う場合は、「テスト」タブから「サービスシミュレーター」のセクションのテキストボックスに「コーヒー下さい」と入力し、「コーヒーショップを呼び出す」を選択します。
そうすると、「サービスリクエスト」ボックスには、Alexaから処理ロジックに送信された内容が表示され、「サービスレスポンス」ボックスには、処理ロジックからAlexaに戻された内容が表示されます。
なお、実機確認もできます。
Alexaアプリを開いて、スキルにある「有効なスキル」の中の「DEV スキル」に作成したスキルが表示されますので、スキルを有効化し、Alexaに「Alexa、コーヒーショップを開いてコーヒーを1つ注文して」としゃべりかけると、設定した内容でAlexaが返事を返してくれます。
Alexaアプリの「履歴」にテスト内容も録音されているので、確認しておきましょう。
ここまでの流れでテストは完了です。

公開

今回のハンズオンでは、作成したスキルを公開することはしないということなので、作業自体はここまで。
個人でこれからスキルを作る場合は、これから公開の申請を行って公開していくことになります。

以下参考リンク。

ドキュメントはで公開中:GitHub
コードの書き方はこちら。開発時に重要。:https://github.com/alexa/alexa-skills-kit-sdk-for-nodejs

Alexaスキル開発の手順と公開時の審査のポイント

ハンズオンの流れとしては以上でした。
まとめ的に書いておくと、Alexaスキル開発の手順としては以下の5つのフローに分かれますので、今どこで何をしているのかを理解しておくためにも、どういうフローがあり、今何をしているのかを把握しておくことが重要です。

  1. 音声インターフェイスの作成
  2. 処理ロジックの作成
  3. 接続
  4. テスト
  5. 公開

今回のハンズオンでは公開までしませんでしたが、実際にスキルを作って公開する場合は、ここからAlexaスキルとして適正かどうかの審査があります。
ハンズオンに来れられていた審査チームの方から実際の審査の時によくある間違いなどの注意点を教えてもらったので書いておきます。

まず、Alexaスキルには公開にあたってのスキルポリシーがあるので、スキルポリシーに寄り添っていないスキルはどうがんばっても公開されることはないそうです。
なので、スキルを作成する前に、まず考えているスキルがAlexaのスキルポリシーにあっているかどうかを確認しましょうということでした。
ドキュメントはこちらにあるので、まず読みましょう。
Alexaスキルのポリシーのテスト

実際に審査に来たスキルで、よくあるものとしては以下の2つがあるそうです。

1つ目が「第三者の知的財産の使用は禁止」というものです。
作成したスキルが著作権や肖像権など、第三者の知的財産を侵害しないようにするということが重要なわけです。
よくあるパターンは、ゲームやアプリの攻略情報などらしいです。
ゲームやアプリのスキルを公開したい場合は、著作権を持つ人や企業にきちんと使用の許諾を取った後、その書面をAmazon側で確認してはじめて審査できるようになるそうなので、そういう系統のスキルを公開する場合は最初から時間がかかることを想定しておいたほうがいいそうです。
2つ目は「子供を対象としたスキルの禁止」。
現時点では、子供を対象としたスキルはアメリカ国内のみで許可されているようで、日本では子供対象のスキルの公開は許可されていません。
アプリ審査時に設定する項目にも子供対象のスキルかどうかのチェック項目があり、良かれと思って設定している風に返事をするパターンが多いそうですが、その場合スキルポリシーに反していることになるので、絶対に審査には通りません。
スキル名で「非こども対象」とか書いても、スキルの内容で判断されるので無意味ということも聞きました。
今の時点でこの2つは特に注意ということだったので、公開時には注意しましょう。
また、審査時のポイントとして以下の点は確実にチェックしているので、審査前に自分のスキルが問題ないかどうかのチェック項目とした方がいいみたいです。

  • 機能テストに問題はないか
  • コアの機能は確実に動作しているか
  • 発話が正確に定義されているか
  • ユーザーが間違えた際にわかりやすく説明しているか
  • スキルの各機能は期待どおりに動作するか
  • 1つ目のサンプルフレーズには「Alexa、」を必ず含める
  • サンプルフレーズは、サンプル発話に定義されているものを選ぶ
  • ユーザーに入力を求める場合は明確に発話を促す
  • 想定外の入力が行われた場合にエラーを起こさず対応する

この項目を確認してから、審査に送るようにしましょう。

まとめ

ちょっと長文になりましたが、実際に参加してみるとかなりわかりやすかったなというのが印象で、スキルを作ろうというとっかかりには最適な内容だったと思います。
実際にコーヒーショップを作成して、Alexaから返事が返ってきた時のうれしさは、初めてHTMLを書いてブラウザに表示された時のそれに近い感じでした。
コード自体はコピペなので、これからその辺を学習していく必要はありますが、公開までの流れを一通り体感できたことは大きいなと思います。
あとはAlexaのポリシーに準じた形で、どういったスキルを作りたいのかを考えて作って近いうちに公開したいなと思います。
なお、今回スキルの作成と公開までの流れは非常にわかりやすく、かなり詳細に理解できたんじゃないかなと思うんですが、一点だけ残念で、かつ今後の課題もわかりました。
それはAmazonのアカウントの事。
Alexaのスキルには直接関係ありませんが、「amazon.com」と「amazon.co.jp」に同じアドレス、同じパスワードでアカウントがあると「co.jp」で作ったものが「.com」で認識されてしまうという問題です。
これが非常に面倒でややこしいので、詳しい説明は省略しますが、結論としてはスキル開発用に「.co.jp」の新しいアカウントを作成することにしました。
本筋とは関係ない部分で面倒ごとがあるのは少しストレスです。
とはいえ、スキルの開発自体はすごくわかりやすくて、3時間のハンズオンの時間はあっという間に終わったといった印象でした。
何を作るのかをまだ決めていない(最終的にこれがしたいというのはあるけど、まだそのレベルではないので今の知識でできることから始めようと思っています。)ので、直近でこれを作るというのはないんですが、今回作ったコーヒーショップをベースにした誰得系のどこが面白いのかわからないようなスキルを作りたいと思います。
できたらブログで報告するかもしれません。

といった感じで、すごくいい経験になったし、いい勉強ができました。
個人的に、スマートスピーカーはこれから間違いなく普及すると思っているので、Alexaに限らずGoogleHomeもClovaも同様に触ってみたいと思います。

記事の著者:ふにすでぐち

ふにすでぐち

1978年生まれ。企業のWeb活用をテーマに、Webサイトの運用を中心とした戦略的な企画立案、サポートやWebサイトの構築などを行っています。
5年間のWeb制作会社勤務後、2年間のフリーランスで「フニス」として活動後に法人化し、2012年7月「ふにす株式会社」を設立。
Web活用の情報や考え方などを発信するブログ「ふにろぐ」を平日毎日更新中。
2015年11月より大阪府高槻市に「ふにすWeb相談所」を開設。
地域の方々に気軽にWebのことを相談できる場所として、より多くのWeb運用の問題解決をするために活動しています。
また、不定期で大阪を中心にWeb運用やブログなどをテーマにしたイベント「ふにセミWS」を開催しています。
サイトの運用や活用にお困りの方はお気軽にご相談ください。
お問い合わせはこちら

LINEでWebに関する質問にお答えしています。

ふにすでは、LINEでWebに関するご質問にお答えしています。Webに関するあんなことやこんなこと、今さら聞けない疑問などなんでもご相談ください。LINEアプリでQRコードを読み取ると友達登録のリンクが表示されますので、試しに登録してみてください。

About

ふにろぐとは?

ふにろぐは「ふにす株式会社」の「でぐち」が書いているブログです。
このブログでは主にサイトの運営をしている企業のご担当者様向けに、「サイトの運営に役立つTips」や「今更人に聞けないような初歩的なこと」を中心に情報を配信しています。
その他には僕自身の考え方なども書いています。

このブログについて

ふにすのお仕事

このブログを書いている「でぐち」がしている「ふにす株式会社」は大阪と京都の間にある高槻という街で、Webの運用サポートを中心に活動しています。
Webサイトの制作とかもしてますが、ブログを続けるためのサポートとか、会社をどうやってPRすればいいんだろうとか、そういうふわっとした事を相談してください。
どういう内容を相談できるのかをまとめましたので、参考にしていただければと思います。

ふにすにはどんな仕事が頼めるの?

ふにすWeb相談所

ソーシャルとか。

NewEntry

PickUP

Webサイトの運用に関する情報

ふにろぐで取り上げたWebサイトの運用に関する記事のまとめです。ツールや運用ノウハウなど、知っていると便利になる情報ですので、まずはこちらをご覧ください。

Category

Month