chroju.dev/blog

the world as code

AlexaにAWSの請求額を教えてもらう

Amazon Echo Dotを書いたのでさっそくオリジナルスキルを作ったのだけど、アイディアに乏しいマンなので、「自分が使っているAWSアカウントの請求額を教えてもらう」という、あんまり夢のないスキルが出来上がった。想定される発話の一覧を作っているとき、「請求額を教えて」とか「支払いを確認して」とかいっぱい書いてて、若干つらい気持ちになったのだけど、取りあえず作るのが目的だったのでそこは気にしない。

ライバルであり、先に国内発売していたGoogle Homeは買っていないので、比較はできていないのだけど、Alexaの強みはLambdaを直接叩けることだと思う。API Gatewayを準備してHTTPSのエンドポイントを渡す、とかではなくて、LambdaのARNを指定して直接連携ができるのでとてもシンプル。既知の技術を活かせることもあって、開発の難易度は高くない。面倒なのはデバッグで、声に出して全機能試してみるというのはわりとまどろっこしくてだるい。

チャットボットフレームワークであるAmazon Lexや、音声変換技術であるAmazon Pollyが公開された時点で意図がわかってはいたけど、Alexaの開発にはバックエンドにAWSを存分に使ってくれということなんだろう。Google Homeの強みが、Google Assistantという高機能AIにあるとしたら、Amazonの方の強みは長年培ってきたクラウドサービスノウハウとのシームレスな連携にあるような気がしている。

Alexaの開発

Alexa開発はデモをしても音声なので、動画か音声ファイルを貼る必要があるのがちょっとつらい。一応アプリにも会話の記録が残るので、今回はそれを貼ることにする。こんな感じで、サービスごとの請求金額や、請求金額の合計を教えてくれる。

https://gyazo.com/a42658b0b61e3b2b237a8298672a98ce

開発にまつわる技術的な話もしようと思っていたのだけど、Alexa Skill開発入門みたいなことは、書いたら長くなってしまったのでQiitaに投稿しておいた。そちら参照。

ここにはLambdaのコードとIntent Schemaだけ貼っておく。Lambdaの方はblueprintで用意されている「alexa-skills-kit-color-expert-python」を少しいじっただけなので、そんな大したものではないというのと、Python2.7のままですというのを断っておく。逆に言えば、用意するものはこんなもんだけでAlexaのSkillは作れてしまう。

like a hubot ?

ところで人間的な応答を返す会話インターフェースとなると、hubotを始めとするチャットボットを彷彿とさせる。hubotの登場後は、単純な雜談や情報連携から、CIとの連携、監視との連携、さらにはbotを使ったdeployなどもチャットで行われるようになった。ではAlexaはどうなのか。開発の現場でも似たように使えるんじゃないか。

Lambdaと連携できるということは、自社のAWSアカウントのAPIを叩かせることもできるわけで、例えば「Alexa, サーバー台数を100台に増やして」みたいな「ボイスオペレーション」も可能ではある。突然Yahoo!砲のような大量のリクエストが来てワタワタとオペレーションしているときに、片手間で呼びかけるだけで操作を肩代わりしてもらえるなら、ちょっと便利かもしれない。

ただ冷静に考えるとやっぱり無理かなという思いがある。ひとつは文字が使えないこと。チャットボットは文字で指示する、要はCLIの派生みたいなものだったので、記号的なidだとか、固有名だとかでも違えず引数として与えることができた。対してAlexaは音声を解釈するので固有名詞や記号的文字列はどうしても苦手であり、「AutoScalingグループのhogefugaを」などと指示しても、たぶん読み取ってはくれない。

もうひとつは権限の問題。強力なオペレーション機能を持ったhubotは、専用のchannelだけに置いたり、特定のユーザーだけに反応するように組むことで、「権限」の制約ができたのだけど、Alexaは声紋認証するわけでもないので、anonymousに命令を受け付ける。なのでさっき書いたような「起動サーバー台数を増やす」機能を持ったAlexaなど、オフィスに置いたら危なっかしくて仕方ない。てわけで、ボイスオーバーオペレーションはちょっとだけ夢見たのだけど、今のとこ無理そうかなという気がしている。小規模ベンチャーとかで限定的に導入したらテンション上がるかもだけど。

Alexaブーム来てほしい

繰り返しになってしまうけど、開発プラットフォームがAWSという既知の領域に開放されたことは結構大きいと思っていて、ぶっちゃけた話企業によるスキルの公開を待たなくても、巷のAPIと連携する形で必要なものはどんどん作れてしまう(もちろん、企業側とバッティングすれば審査で弾かれるんだろうけど)。スマートスピーカー、いざ使ってみると案外手の届かないことが多くてそのうち使わなくなる、みたいなことを想定したりもしていたのだけど、自分の好きなようにスキルが作れるなら、いくらでも使いようがあるなという気がしている。個人的にはAlexaスキル作成ブームが来ることをちょっと期待したい。お前も書けって話だと思うので、機会があればまた書きたいとも思う。