今巷でトレンドなテーマのAlexaスキルですが、簡単に出来る!と言われます。
確かにそうなのですが、概念も分からず作るのは、新入社員が「これはこういうものだからやれ」と理不尽な教育を受けるようなものなので、
いくつかスキルを作って私なりに理解した内容を噛み砕いて説明したいと思います。
この概念が分かれば、問題が起きた時に、どこを見れば良いかがいち早くわかるかと。
ではまず、全体の構成を見てみましょう。
全体の構成
全体の構成を図解するとこんな感じです。
高度なスキルはこの限りではないケースもありますが、説明しやすいよう最低限の構成にしています。
ここから、各ブロックごとの説明をしていきます。
フロントエンド:Alexa developer console
ユーザが発話した内容を解析し、起動するインテントを判断するための部分。
要するに、発話内容をデータに落とし込む部分ですね。
データに落とし込んだものをJSONに変換してLambdaに送ります。
発話内容に関する設定はこの部分を変更します。
バックエンド:AWS Lambda
バックエンドというと色々面倒な処理をするイメージがありますが、実はLambda側はルールに沿ってJSONフォーマットのコマンドを作ってるだけ。
それだけの役割なので、フロントエンドからインテントとして受け取った情報をどう料理するかを考えれば良いことになります。
そのため、ある程度言語に自由度があります。私なんかはPythonを勉強の一環で使ってます。
ただ、Alexa スキル関係の技術情報はJSを例にとることが多いので、特段理由が無ければJSが良いと思います。
デバッグログ:AWS Cloudwatch logs
優秀なロギングサービスです。
JSONでやり取りしているフロントエンドとバックエンド間の通信ログを自動で取っておいてくれるスグレモノ。
意図しないインテントが呼び出されているなんてのはこれが無いとデバッグが難しいでしょう。
また、Lambdaでprint文を書いたりするとここに記録されるので、実行順や変数の中身を見るのにも使えます。
フィールドテストのときなどにも使えますね。
まとめ
シンプルを目指すために、非常にざっくりとした説明にはなりましたが、ある程度構成の全貌が分かってもらえば幸いです。
これを理解しているかどうかでは、開発速度は格段に違うと思います。
まだまだ駆け出しのテクノロジですが、Amazonが公式で公開しているドキュメントの類が結構分かりやすくて優秀なので、ハードルを下げてくれています。
コード量もそれほど多くなくて始められるので、プログラミングの練習に使っても良いかもしれませんね。
エンジョイスキルライフ!