Alexa Skill Kit SDK を始めようとして挫折しかけた2つの失敗

この記事は約 7 分で読めます。

Amazon Echo を購入して、Alexa スキル開発を始めて、約2ヶ月が経ちました。

この間に作ったものといえば、会社の諸事情で作ったスキル、Alexa for mastodon (ベータ版)の2つだけ。しかも、どちらもまだ公開に踏み切っていない雑魚なので、Alexa スキル開発者として未だスタートに立ってない気持ちでいるわけです。

岡本 秀高さんやするめごはんさんが Advent Calendar に並んでるのを見ながら、我ながらホントに雑魚すぎて申し訳ない気持ちになります。しかも、危うく更新日間違えて遅れるとこだったし。。。

そんなわけで、こちらはAlexa Skills Kit SDK Advent Calendar 2018 の22日目の記事となります。

Alexa Skills Kit SDK Advent Calendar 2018 - Adventar
Alexa Skill開発に使うSDKについて書くカレンダーです。 コードの書き方に関するTipsから自作ライブラリや作ったスキルの自慢話まで、いろいろ書いていきましょう## SDK - Node: - Python: - Java:

しかしながら、雑魚は雑魚なりに考えました。これからスキル開発をされる方のために少しでもなるような知見を残したいと。

そこで、この記事では Alexa Skill Kit SDK を使い始めるにあたって、匠がハマった所を紹介していきます。

これから Alexa サスキル開発者がどんどん増え、業界が盛り上がっていくことを願ってやみません。

以降では、Ask Skill Kit を略して ASK と表記します。公式ドキュメントでもそのように記載されているので、知らない方は覚えましょう。
スポンサーリンク

失敗0. ASK SDK インストール元が不明問題

そもそもな問題です。失敗以前って話。

問題・事象

ASK SDK については情報があるものの、どこからインストールして良いか分かりません。色々あるし、Qiita記事は検索でたくさん引っかかるし、岡本 秀高さんの上級者向けの記事はガンガン仕えられるんですが。

解決

下記は、自分向けのまとめも兼ねたリンク集です。

公式ドキュメント集

何を開発できるか知る | Alexa Skills Kit | アレクサ
Alexa Skills Kit を使ってどんな音声サービスが開発できるか、学びましょう。コーディングの知識は必要ありません。
オンラインセミナー「Alexa道場」 | Amazon Alexa | アレクサ
Alexa公式オンラインセミナー「Alexa道場」を開催しています。スキル開発初心者の方から、上級者向けの内容まで、幅広いテーマをお届けしますので、ぜひご参加ください。
Alexa Skills Kitによるスキルの作成 | ASK
Alexa Skills Kitによるスキルの作成Alexaにはスキルと呼ばれる一連のビルトイン機能が備わってい...

ソースコード&サンプル集

セットアップは全部ココから。

alexa/alexa-skills-kit-sdk-for-nodejs
The Alexa Skills Kit SDK for Node.js helps you get a skill up and running quickly, letting you focus on skill logic instead of boilerplate code. - alexa/alexa-s...
alexa/alexa-skills-kit-sdk-for-nodejs
The Alexa Skills Kit SDK for Node.js helps you get a skill up and running quickly, letting you focus on skill logic instead of boilerplate code. - alexa/alexa-s...
alexa/alexa-skills-kit-sdk-for-python
The Alexa Skills Kit SDK for Python helps you get a skill up and running quickly, letting you focus on skill logic instead of boilerplate code. - alexa/alexa-s...
ASK SDK for Python(ベータ版) — Alexa Skills Kit SDK for Python-JA beta ドキュメント
Alexa
Alexa has 30 repositories available. Follow their code on GitHub.

テスト環境

個人的には、alexa developer Console で事足りてますが、下記もあります。

Alexa Skill Testing Tool - Echosim.io
Echosim.io is an online community tool for developers that simulates the look and feel of an Amazon Echo.

ただ、そもそも持ってない人、買いましょう。一番安い Dot は年末年始狙い目です。匠的には Show や Spot 買うのが絶対楽しい。APLは、これからPOCしますが、絶対面白い。

スポンサーリンク

失敗1.ask 初期化コマンドのフリーズ

ここから本番。まず躓いたのはこちらで、たぶんあるあるです。

問題・事象

ASK SDK を導入する際、インストール後にまず初期化処理をします。

この時次のコマンドを打ちます.

ask init

この後、プロファイルを選んだり、なんだかんだ選択肢を選んだりした後、Amazon.comのアカウントでログイン認証を行います。無事に認証が終わり、安堵したところで下記の状態になるわけです。

ask 初期化コマンドのフリーズ

Call list-vendors error.
Error code: 401
{
"message": "You are not authorized to access this operation."
}

なぜに?

最初、これがなぜ起こっているのかよくわからなくて、何度も何度も繰り返しました。

ググってもググっても情報が無くて、–no-browswer オプションをつけてみたりもしましたが、一向に解決せず困って、なかなか進められませんでした。ASK辞めようかと。。。

解決

原因は下記でした。

Node.js は 8.10にしなくてはならない

この記事執筆時点での最新は Node.js 11.5.0 でして、これをぶち込んだのがマズかった。

アンインストールして、こちらから Node.js 8.10 をインストールし直したらアッサリ解決。

ASKの Node.js 対応について、上位互換がないってことみたいです。

そういえば、AWS Lambda が対応する Node.js も最新は 8.10 だったような。。。この辺は Node.js ユーザでないので、事情はよくわかりませんが…

スポンサーリンク

失敗2. デプロイした Lambda 関数がない

なんじゃこら、って思います。ちょっと ASK SDK 恨みたくなります。最初だけ。

問題・事象

先程のトラブルを乗り越え、たくさん用意されたサンプルスキルをデプロイしてみたくなったりします。そう全員、最初はサンプルからスタート。

例えば、次のようにコマンド打ってみてください

> ask new
? Please select the runtime Python3
? List of templates you can choose Hello World (using Classes)
? Please type in your skill name: skill-sample-python-helloworld-classes
(以下略)

こうしてサンプルスキルをダウンロードした後、そのフォルダで下記のコマンドを実行してスキルをデプロイ(展開)します。

ask deploy -t all

こうして少し時間を経過した後、alexa developer console にスキルがデプロイされてることを確認できます、しかし、AWS Lambda の画面を見に行くとデプロイされているはずの関数がどこにも見当たりません。あれ?

ask コマンドの実行結果では、特にエラーが発生しているわけでもなく、何が起こってるのかよくわかりませんでした。エラーもないなんんて、作りが荒いのか、、、と途方に暮れておりました。

解決

実は、ask コマンドでデプロイした Lambda 関数は「バージニア北部」のリージョンにデプロイされます。

ASKからLambda関数がバージニア北部リージョンにデプロイされた状態

え、なんで?ってなりますよね。

匠はメインで使っているリージョンは東京リージョンだったし、aws-cli でも東京リージョンを指定していますが、勝手に異なるリージョンにデプロイされます。ask deploy コマンドで指定する方法も用意されてないです。

これを解決する方法は、まだ残念ながら把握できていません。

もしご存知の方がいらっしゃったら、是非お聞かせ下さい。

https://pawoo.net/@itsumonotakumi
スポンサーリンク

それでも Alexaスキル開発は楽しい

記事にもならないような細かいトラブルや、AWS Lambda 関連のトラブルはまだまだいくつもありますか、総じてアレクサスキル開発は楽しいです。(重要)

やはり作ったものが、物理デバイスに機能実装されるのを目の当たりにするのは楽しいですね。

そして、それが生活の役にたっていくことこそ技術者の本懐かな、と感じます。

この面白さが、1人でも多くの皆様に早く伝わることを祈っております。


あと繰り返しですが、年末年始は安くなってるので狙い目!次はセール待ちになるはず。

旧機種もアリだと思いますが、サポートやEOL考えるとやはり新機種を。。。