Raise each other

技術ブログ、と言えるほどのものではありませんが学んだことを記すことにしました

簡易的なAlexaアプリを作ってみた

1.はじめに

こんにちわ、こんばんわ。

そして明けましておめでとうございます。

新年になって2週間経ってからようやく新年初ブログ更新できました。

皆さんはいかがお過ごしでしょうか。

 

さて、今回私は表題の通りアレクサアプリを作成してみました。

というのも昨年海外でスマートスピーカーが大流行し、日本にもその波がいずれ来るだろうということで勉強しても損はないと思ったからです。

昨年の年末には私もAlexaを購入し、私生活で使っていたのですがこれが中々に便利。

確かに売れるのも納得。

それじゃあ自分もアプリを作りますか、ということで今回に至ります。

 

f:id:yusakus:20190117180624j:plain

 

と言っても実際にアプリを作ってみるとこれがかなりお手軽にできる。

ネット上には既にいくつか私の記事と同じようにアレクサアプリを作ってみたという感じで丁寧な説明がありますので、過去の私にこんなにお手軽に作れるんだよ!ってオススメするという体でいきます。

 

2.アレクサとは

そもそもアレクサとはなんぞやという方に向けて簡単に説明を。

 

先ほどチラッと出てきましたが、所謂スマートスピーカーと呼ばれるものでappleユーザの方ならSiriをイメージしてもらうとわかりやすいかもしれません。

Wikiには対話型のAI機能を搭載した音声スピーカーと記述がありました。端的に表していますね。

用途は電気をつけてもらったり、曲をかけたり、ニュースを流したりと使い方は千差万別。

さすがにスマートフォンの次と称されるだけはある程の便利さです。

 

その中で私がアレクサを購入した理由はズバリ、シェアです。

昨年の市場シェアでは68%がAmazonGoogleが26.2%。

(Amazonが開発しているのがAlexa、Googleが開発しているのがGoogle Home)

 

2倍以上の差が付いていたので情報量にも差があるだろうということで、Alexaにしました。

まあ使い比べている訳ではないのでどちらが優れているとは言い切れないんですけどね。単純に今回は勉強・開発も兼ねていたからというだけです。

実際にGoogleもシェアを伸ばしてきいるとのことですし。

 

f:id:yusakus:20190117180820j:plain

 

3.実際にアプリ作成

それでは簡単な説明もしたところで、アプリ作成へと移ります。

手順としては以下の通り。

 

Amazon Developerのアカウント取得

→呼び出し名、インテント、スロットの設定

→ビルド

AWSのアカウント取得

→Lambda関数の作成

→ロールの作成

→コードの記述

Amazon Developerの作成したアプリのエンドポイントの設定をする

 

凄いざっくりと書いたけどコードの記述量もほとんどないし本当にあっという間に出来上がります。

(もちろん今回作成したものが簡易的なものだからっていうのもありますが。。。)

 

今回私が作成したのはAlexaに将棋の守りを聞くと教えてくれるというアプリです。

では順番に見ていきましょう。

Alexaはウェイクワード+呼び出し名+インテントと対応する言葉で言葉を返します。

ウェイクワードというのはAlexa自体を起動するワードです。

SiriであればHey,Siri!ですし、GoogleであればOK,Google!。Alexaの場合はそのまんまAlexaになります。

 

呼び出し名はAlexaアプリを起動するときに発する言葉です。

この名前は唯一無二なので登録したもの勝ちだったりします。

そういう意味でもキャッチーな名前は大事ですね。

まあ自分の場合はそういうネーミングセンスはないので、今回はシンプルに将棋の守りでいきます。こんな感じ。

f:id:yusakus:20190116191445p:plain

 

インテントはAlexaアプリに行ってもらう動作です。

今回であれば「教えて」であったり「守りかた」であったりといった具合ですね。

まずはインテントの名称を作成しましょう。いわゆる関数名ですね。

f:id:yusakus:20190116191451p:plain

 

インテントを作成したら今度は呼び出しに使われると考えられる言葉を追加していきます。

今回は雑学、豆知識、何か教えて、教えての4つで行うことにしました。

f:id:yusakus:20190116191510p:plain

 

アプリを呼び出すには今回の例で言えば「Alexa、将棋の守り方、何か教えて」といった感じになります。簡単ですね。

 

ここまで進んだらビルドしましょう。

ビルドをしたら次はLambda関数の作成です。

 

AWSにログインして、AWSサービスでLambda関数を作成します。

Lambdaとはサーバレスでコードを実行するものだそうです。

なんか凄い便利そう(コナミ

 

関数を作成したら設計図からalexa-skill-kit-sdk-factskillを見つける。

このとき自分が詰まったのは、右上部にある場所をアジアパシフィック(東京)を選択していなかったこと。

ここで場所の選択をしていないと後の作り方が変わってくるので注意。

f:id:yusakus:20190116194623p:plain

 

選択後は関数名を入力し、作成。

f:id:yusakus:20190116194634p:plain

 

関数の作成ができたら作成した関数のページでトリガーの追加からAlexa Skill Kitを選択。 

選択をしたら、Amazon開発者コンソールに戻ってスキル一覧からSkill IDをコピーしてLambdaのスキルIDにペーストして保存。

保存ができたらいよいよコードの記述。

 

初期で記述されているコード内にあるAPP_IDはスキルIDのことなので、先ほどコピーしてきたスキルIDをここにもペースト。

記述した内容はこんな感じ。

画像のXXXXのところにスキルIDを貼り付ける。

 

f:id:yusakus:20190117173748p:plain

 

f:id:yusakus:20190117173803p:plain


 1枚目の画像が変数の定義で2枚目がメイン処理とハンドラ。

流れとしてはメイン処理でSDKの利用宣言をして、アプリケーションIDの設定後ハンドラの記述内の処理を行う。

speechOutputやrepromptなどはAlexaの応答設定であったり聞き直す設定。

あとはここに想定される処理を記述していく。

 

記述ができたら右上部の保存をし、その上にあるARNコードをメモしておく。

再度Amazon開発者コンソールへ戻ってスキル一覧から編集でエンドポイントのデフォルトの地域に先ほどメモしたコードを貼り付けることで完成!

 

完成したらあとはスキル名等が書いてあるタブからテストを選択しenabledにすればデバッグができる。

 

4.まとめ・総評

さらっとではありますが、Alexaスキルの作成について一通り触れてみました。

いかがでしたでしょうか。

もちろん今回はさしてコードの記述量がないものではあったが簡単にアプリを作ることができるということがわかっていただけたのではないかと思います。

アレクサ本体がなくてもアプリ自体は作ることができるので、もし興味があったらぜひ作ってみてはどうでしょうか。

 

自分もこれから対話ゲーム式のアプリを作成してみようかなぁと考えています。

それでは今回はこんなところで。ここまで読んでいただきありがとうございました!

 

参考文献

qiita.com