メニュー
このサイトの運営者
\ Amazonタイムセール祭!最大12%ポイント還元 /

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

アイキャッチ:Alexa Skill Kit SDK を始めようとして挫折しかけた2つの失敗

この記事は最終更新日から3年以上が経過しています。

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

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

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

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

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

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

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

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

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

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

問題・事象

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

解決

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

公式ドキュメント集

Amazon (Alexa)
Alexa Developer Tutorials & Code Samples - Alexa Skills Kit Official Site Learn how to develop Alexa skills with our tutorials and code samples tailored to your skill level, whether you’re a beginner or advanced Alexa skill developer.
Amazon (Alexa)
Alexa Skills Kit: Webinars Alexa道場 - Watch our on-demand webinars and learn to design and build for voice with Alexa.
Amazon (Alexa)
リダイレクト | Alexa Skills Kit This page moved to ../ask-overviews/what-is-the-alexa-ski...

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

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

GitHub
GitHub - alexa/alexa-skills-kit-sdk-for-nodejs: The Alexa Skills Kit SDK for Node.js helps you get a... 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. - GitHub - alex...
GitHub
alexa-skills-kit-sdk-for-nodejs/README.ja.md at 2.0.x · 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-skills-...
GitHub
GitHub - alexa/alexa-skills-kit-sdk-for-python: The Alexa Skills Kit SDK for Python helps you get a ... 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. - GitHub - alex...
GitHub
Alexa Alexa has 57 repositories available. Follow their code on GitHub.

テスト環境

個人的にはAlexa developer Console で事足りてます。ただ、そもそも持ってない人、買いましょう。一番安い 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 コマンドで指定する方法も用意されてないです。

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

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

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

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

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

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

この記事の著者はこちら