野次馬エンジニア道

野次馬な気持ちでプログラミングをあれこれと綴ります

Alexa Skills Kit を使ったAmazon Echoのカスタムスキル開発

(少し前の話だが) 6月に開かれたAWS Summit 2016*1で、気になる講演 「クラウドとマイクロサービスによる音声操作の新時代 - Amazon Echo & Alexa」があったので聴きに行ってきた。

www.youtube.com

Amazon Echoは音声でSpotifyにある楽曲を再生するデモを見てからずっと気になっていたが、日本での発売や日本語対応は残念ながら未だ*2。それにしてはかなり大体的な扱い(大袈裟)。

AWS Summitの文脈としてはその背後にあるAlexaというシステムがサーバレスアーキテクチャを活用していたりIoTの事例としても興味深いからだと思う。加えて音声のインターフェースによって「日用品を追加注文」「ピザを注文する」「音楽をかける」といった日常的なタスクを徐々に積み上げていくことで、Alexa自体が提供できるサービスが拡大していくエコシステムの完成を目指している点に惹かれる。

Alexa Skills Kit (ASK) 入門

エコシステムの実現のためには、オープンに誰でも「スキル」を開発できることが重要。音声認識自然言語処理、意図理解のような高度な処理はAlexaに任せて、JavaScriptPythonを使って実際に自分のサービスやブランドに関する「スキル」を誰でも開発できるAlexa Skills Kit(ASK) を提供している。

公式の記事としては、このチュートリアルが一番良さそう。最近は(USのEASTのリージョン限定のようだが)LambdaのテンプレートにもAlexaのスキルがいくつか登録されている。そちらを試すのもよい。

Hello Worldから

まずは何はともあれHello World。このサンプルはSDKとしても提供されているが、ZIPを作ってLambdaに上げたりと結構面倒な作業が多い。そこでAPI Gatewayを調べていたときによく紹介されていたfluctをイメージしてAlexa版のテンプレートを作ってみた。

開発のパイプライン

ES6(ES2015)でコードを書いて、mochaでテスト、そしてLambdaをデプロイして、Echo上でテスト。この一連の流れをまずは実現。

github.com

最初のLamdaのデプロイ後にはトリガの設定などが必要だが一度やってしまえば

npm test # スキルをmochaでテスト
gulp build # ES6 => ES5
gulp deploy # Lambda上にデプロイ

のように開発可能。スキルの中身は元のサンプルと全く同じ。

*1:セッション資料・動画は - https://aws.amazon.com/jp/summit2016-report/details/から閲覧可能

*2:https://echosim.io/welcome