【”できない” ことで辛くなっているエンジニアへ】Alexa スキル開発のすすめ

この記事は アイスタイル Advent Calender 2019 の17日目です。

◾️はじめに

どうも、普段は @cosmeサロン の開発・運用に携わっている urabes です。

いきなりですが、日常で “できないこと” が発生した時に頭を悩ませて自己嫌悪に陥る、そんな経験はありますか?筆者は根がめっちゃネガティブなのでしょっちゅう自分を嫌いになってます。

しかし、“できないこと” の壁を乗り越える為にはモチベーションが必要ですよね。そしてそのモチベーションを生む為には小さな達成感や成功体験の積み重ねが必要不可欠です。

kasane

ということで私から、何か “できない” ことにぶつかって自分を嫌いになりかけてしまっている方々へ 「処方箋として私がAlexa スキル開発を選んだ理由」「公式資料の充実さ」「基本知識の概要」 をご紹介して、前向きな開発ライフを送れるきっかけになって頂けたら書いたかいがあります。

◾️目次

  1. エンジニアもといサラリーマンが何より一番辛い時って?
  2. Alexa スキル開発を選んだ理由
  3. 公式資料だけでここまでできる
  4. まとめ
  5. 参考資料

1. エンジニアもといサラリーマンが何より一番辛い時って?

それは、自己肯定が極端に低くなってしまう時です。
死ぬほど忙しい時よりもミスや劣等感から、身を守る最後の砦である自分自身でさえも信じられなくなってしまう状態が危険…。

エンジニアは自分でさえも疑う生き物ですが、今回は仕事の上での「疑う」ではなく、自信を失って自分の可能性を疑ってしまう状態のことを指します。

何より私も、自分の仕様の理解不足やタスク管理ミスでチームメンバーにリカバリをがっつりさせてしまい、自分のミスで「他人の時間を奪ってしまう」。これが死ぬほど苦しかったし申し訳なかった…。

そのような積み重ねで劣等感を感じ、「チームに貢献しようとしていることがむしろ負荷にさせてしまっている」事実から自己肯定感を極端に無くしていきました。

ですが、 自己肯定を無くすことで自信も無くし「諦めて”できない”理由をつくってしまったら成長も何もねぇ!」 と完璧持論ですがそう思っています。凹むのも大事ですがある程度凹んだら切り替えてポジティブな気持ちでモノをつくっていく勢いって大事だと思うのです。

ということで、今回その勢いを生む為の仕組みに私が Alexa スキル開発を選んだ理由について説明していきます。

2. Alexa スキル開発を選んだ理由

外部ツールと連携することで業務のライフハックに繋げられる

Trello や slack など身の回りのツールと連携することで急ぎの場面や 移動時などで、わざわざブラウザやアプリを開いて書いて…の手間が省くことができ、ハンズフリーで物事を並行して進められます。

すぐ書け、すぐ試せる

ask
Alexa スキルの開発環境が既に標準装備として Alexa Skills Kit(以下ASK) がブラウザ上で存在する為、わざわざ環境構築をする必要がありません。以下のURLから「スキル開発をはじめる」をポチるだけです。これだけ!
▼ Alexa Skills Kit
https://developer.amazon.com/ja-JP/alexa/alexa-skills-kit

test_screen
また、 Amazon Echo 実機が今手元になくても ASK にテスト機能がついている為、実機の代わりとしてテキスト記入や音声で話しかけてテストをすることができる為手っ取り早いです。

スキル開発の感動値は思った以上に高い

完璧個人的な感想なのですが、自分が設計して書いてつくったものはこれまで画面上での表現に限られたアウトプットでしたが、加えて音声を用いた成果物になることで情報量も必然と多くなり、UX的に感動値は更に高いです。

3. 公式資料だけでここまでできる

0 からという方ならば、 Alexa 道場という公式の How to 動画を無料で視聴できますのでそれを軸にするとやりやすいかもです。基本的な学び方のスタイルとしては動画を参考にしながら ASK を開き、公式リポジトリも用いて実装、たまにドキュメントを参考にして…という手を動かしながらのかたちになるんじゃないかと思います。

音声版「Hello World 」から基礎用語の説明、基礎機能を活かしたスキルの作成をし、応用でより人間らしく話せるようにするにするテクニックの会話パターン実装についてまで網羅できます。これ無料かすごい…。

▼ Alexa 公式動画シリーズ 「Alexa 道場」
https://developer.amazon.com/ja-JP/alexa/alexa-skills-kit/webinars

▼ Alexa Ask Sdk for Node.js [リポジトリ]
https://github.com/alexa/alexa-skills-kit-sdk-for-nodejs

▼ Alexa Ask Sdk for Node.js [公式ドキュメント]
https://ask-sdk-for-nodejs.readthedocs.io/ja/latest/?badge=latest

以下、概要として学べる項目を簡単にまとめてみました。
※ 飲み物の注文に対して店員の役割を Alexa が担う「コーヒーショップスキル」で例えます。

カスタムインテントを作成し、リクエスト処理

slot
インテント(定義された反応するべき文言)に対し、「スキルを開く」だったり、「ヘルプ・ストップさせる」いわゆる標準処理以外のスキル内での、自由に編集できる発話者の呼びかけ方のケースを「カスタムインテント」として定義できます。

Alexa が発話者の文言に対して json で返してくるので、その json の受け取り方について学べます。

スロット

slot
一言で言う関数の引数のようなものです。スロットを用いて発話者毎の要望を受け取ります。

シノニム(同義語)識別

シノニム
今回のコーヒーショップの場合、発話者の同じ「コーヒー」という言葉をとっても、同じ意味合いの同義語が存在します。これをよしなに解釈して、「あったかいかいコーヒー」という注文に対しても、正規のインテントである「コーヒー」を注文扱いにしてくれるようにできます。

人間の会話に近づけるテクニック例

セッションアトリビュート
session
Lambda のコード上で、発話者の質問への答えから アトリビュートで前のリクエストのスロットから引用して次回のレスポンスに加えて返してくれます。前の会話のやり取りを記憶したような内容で返してくれます。
しかし、データをサーバ等で保持しているわけではなく、リクエスト時のアトリビュートに渡している為、1セッション中しかアトリビュートを保持できません。
次回スキルを新たに開いた時にまた同じことを聞かれるオチになります。

永続アトリビュート
eizoku
こちらの方は名前の通り、セッションが終わってもアトリビュートを保持し続けるものです。SDK によるホストサービスは、AWS S3 をサポートしているから保存が可能になっているからです。これで、スキルを開くたび、同じ質問を答える必要が無くなります。
永続アトリビュート、自分にも搭載したい。

4. まとめ

少しずつ前に進んで自己肯定感を満たしていこう

日常をハックして便利にしていく姿勢が、”できない” の払拭になり成長に繋がります。
また、そのつくったもので日常のその先の課題を便利にし、次の “できない” の払拭へと繋げていくと、”できること” が拡がっていく最高のサイクルになりますよね。

Alexa スキル開発はその為の手段として、成果物のイメージも湧きやすく開発モチベーションを維持しやすい楽しいものだということがお伝えできていれば幸いです!

弊社では Alexa スキルはやっておりませんが、日々共に楽しんで「目指しどころ」な開発をしていく仲間を募集中です!サーバーサイドエンドエンジニアのそこの方、こちらからを押して、一緒にやっていきましょう。

5. 参考文献

最初の乾杯から〆の一杯までいけるくらいこよなく日本酒を愛す系エンジニア。おでんのダシ割りは七味入れる派。