はじめてのスキル開発「賢者の言葉」を作って学んだこと
右も左も分からなかった 2018年7月7日。
七夕の願いに乗せるように(嘘です)Alexa スキル開発を始めました。
そして…
ついにリリースされました!
2018年8月1日。1ヶ月弱でした。
Alexa スキルストアで実際に検索して引っかかると、実感がわいてきます。
どんなスキル?
迷った時、決意した時、諦めそうな時、怠けそうになった時…
達成したい何かを叶える為に役に立つ、そんな偉人の名言を集めたスキルです。
元々は「成功者の習慣シリーズ」として3段階でリリースしようとしてたのですが、実現性の低いアイデアもあり、結局単発リリースとなったもの。
習慣を変えるには、思考から変える必要がある。
思考が変われば、行動が変わる
行動が変われば、習慣が変わる
習慣が変われば、性格が変わる
性格が変われば、人格が変わる
人格が変われば、人生が変わる
そんな「あり方改革」をサポートしてくれるツールとして、「じゃぁ成功者たちの言葉を聞く習慣を作ればいいではないか!」と思いました。
大変だったことは?
なんせ初リリース。
スキル開発が初めてというどころか、Lambdaすら使ったことがなく、DynamoDBも初対面。そんな初めてばかりの中で特に大変だったものは何か?というと…
慣れないDynamoDB
たぶん一番苦労したのは、ココです。
SQLを考えるのが好きだった私には、DynamoDB のお作法がお口に合わず…
慣れるまでに時間かかりました。
DB読み込みだけで数日かかった疑惑。そこにあるのに、届かない…!そんなもどかしい感情。
あとは、データインポートとかエクスポートとかね、あまり便利ではない。
スキルのお作法
できたと思ってリリース申請をしても、リジェクトされること3回ほど。1週間くらいかかりました。
といっても指摘はそんな重いものではなかった。(今回は)
Alexa スキル開発のお作法と言いますか、「こういう時はこうしないとダメよ!」というのが守れていない箇所をことごとく指摘されました。(ちゃんとガイドを見ろって話)
それは設定だとか、対話の構造だとか。
例えば、ヘルプを呼び出した後は必ず問いかけで終わること(:tell じゃなく :ask で終わること、つまりセッションを切らないこと)など。
対話の構造
普段なかなか考えないこと。
「どうすれば、ユーザーが不自然に感じない対話を作れるか」といった、ユーザー体験の検討が大切なVUI設計。
言葉の曖昧さ(ゆらぎ)を考慮したり、脱線しない対話フローを考えたり。
Alexa が「わかりません」と言わなくて済む、ユーザーがストレスを感じなくて済む、自然な対話。
こう聞かれたらどう答える?というのを、様々なバリエーションで検討する。
大変ですが、これが醍醐味でもあります。
非同期処理
私が選択した言語は "Node.js"。なぜならリファレンスが多いからw(Lambda を使うと、Python や Java など、言語を選ぶことができるのです)
だけど、Node.js は初心者だった私。
いろいろ関数を作って、呼び出し呼び出ししていると、なんだか順番がおかしいなぁという時があった。
ムムム!
単純に関数作って呼び出すだけだと、時間のかかる処理(DB検索とか)が後回しになっちゃって、結果が返って来てないのに終了しちゃったりするんですね。
今回、DBに登録されている数を数えて、その数の中でランダム値を生成し、ランダム値に該当するIDを持つ情報をひっぱってきて発話するという処理を書いていたのですが、そこで処理が前後してしまい、出力が undefined になってしまっていました(笑)
今まで非同期処理とは縁がなかった私。旦那先生に家で非同期処理の講義をしてもらってやっと理解しました。
まずは作ってみる!それが大事
最初は1ヶ月かかった開発も、今では2日で作ってリリースまで出来てしまうようになりました。
まずやってみて、困難を乗り越えることができたら、次からそれは困難じゃなくなります。
少しでもココでそんなハードルを下げるお手伝いができれば!と。
最新情報をお届けします
Twitter でaoxaをフォローしよう!
Follow @a093_jp