Slide 1

Slide 1 text

Alexa×obnizで VUI IoTをはじめよう! 田中 みそ (田中 大樹)

Slide 2

Slide 2 text

自己紹介 田中 みそ (田中 大樹) Qiita: miso_develop Twitter: miso_develop Facebook: 田中みそ スマートスピーカー購入を機にITに目覚めた 初心者非エンジニア。 好きな食べ物はRaspberry Piとバナナ。 Facebook

Slide 3

Slide 3 text

No content

Slide 4

Slide 4 text

スマートホーム構成図

Slide 5

Slide 5 text

音声アシスタント搭載 バナナパンツ

Slide 6

Slide 6 text

Tello Controller Tello Controller

Slide 7

Slide 7 text

No content

Slide 8

Slide 8 text

リリースしたスキル  クロマチックチューナー(Alexa/Google Assistant)  指定の音程の正弦波を流す楽器のチューニングアプリ  相対音感クイズ(Alexa/Google Assistant)  Cコードの次に鳴るコードが何のコードか当てる音感クイズアプリ  ギタースケール辞典(Alexa)  知りたいギタースケールをキーと一緒に話しかけると スケール構成音を教えてくれるスキル  ギターコード辞典(Alexa)  知りたいギターコードをルート音と一緒に話しかけると コード構成音を教えてくれるスキル

Slide 9

Slide 9 text

スキル移植ツール(対話モデル)  Dialogflow2AlexaSkillJson  Dialogflowの対話モデル(zip)をAlexaの対話モデル(json)へ 変換するツール  https://github.com/miso-develop/dialogflow2alexa-skill-json  Alexa2Clova  Alexaの対話モデル(json) とClovaの対話モデル(tsv)を 相互に変換するツール  https://github.com/miso-develop/alexa2clova

Slide 10

Slide 10 text

心 の 音 心 の 音

Slide 11

Slide 11 text

DEMO

Slide 12

Slide 12 text

システム構成図 Alexa Skills Kit Alexa

Slide 13

Slide 13 text

ESP32

Slide 14

Slide 14 text

ESP32とは 簡単に言えばWi-Fi付きArduino  Arduino IDEやVSCodeで開発できる  安価に入手できる (海外通販で500円、国内だと1500円ほど)  Wi-Fiに繋がる何かを作って みたいならまずこれ

Slide 15

Slide 15 text

ESP32とは  スマートスピーカーに話しかけて お湯はりボタンをプッシュしたり  ハンドスピナーを回したり

Slide 16

Slide 16 text

つまりは…?

Slide 17

Slide 17 text

No content

Slide 18

Slide 18 text

M5Stackとかとの違い 最大の違いはプログラムの置き場所 Cっぽい低レイヤー言語で書いた プログラムをマイコンに書き込む マイコンにプログラムを書き込めない(!?) クラウドでプログラムを動かす!! (Node.jsで書ける!!!)

Slide 19

Slide 19 text

No content

Slide 20

Slide 20 text

No content

Slide 21

Slide 21 text

ユーザーの利用フロー

Slide 22

Slide 22 text

ユーザーの利用フロー ①obnizをポチる(パーツも一緒に)

Slide 23

Slide 23 text

ユーザーの利用フロー ②パーツをつなげる

Slide 24

Slide 24 text

ユーザーの利用フロー ③Wi-Fiにつなげる(obniz単体で可能)

Slide 25

Slide 25 text

ユーザーの利用フロー ④スキルにobniz IDを伝える 1234-5678

Slide 26

Slide 26 text

ユーザーの利用フロー これだけ。たったの4ステップ…!! ①買う ②組み立てる ③繋げる ④登録する

Slide 27

Slide 27 text

ユーザーの利用フロー  ネックになるのはパーツの接続ぐらい  パーツのセット売り、購入先リンクをまとめる  基盤にはんだ付けしといてobnizに挿すだけにする  obnizごとオリジナルのケースに詰めて販売  それ以外のフローはスマートスピーカーの セットアップと変わらない

Slide 28

Slide 28 text

マネタイズの可能性  スキル開発なかなかお金にならない><  Alexaはリワードプログラムあるけど…  Tシャツはそろそろ一週間ローテいける  スマートスピーカー対応ハードウェアは…?  赤外線学習リモコンは年度末ぐらいまで ほぼ売り切れ状態だった

Slide 29

Slide 29 text

obniz ID登録の実装

Slide 30

Slide 30 text

obniz IDの登録の実装  obnizは8桁の数字で構成されるIDを持つ  これさえあればobnizがどこにあろうと オンライン状態であれば操作可能

Slide 31

Slide 31 text

obniz IDの登録の実装  スキルの初回起動時に音声で登録を行う  8桁を1度に発話してもらう?  4桁を2回に分けて発話してもらう?

Slide 32

Slide 32 text

obniz IDの登録の実装  4桁を2回に分けて発話してもらう!  ID登録は基本的に初回のみ  利便性より確実性を重視  8桁数字はユーザーも発話に詰まる恐れあり  スマートスピーカー自体も聞き間違えが発生しや すくなる

Slide 33

Slide 33 text

obniz IDの登録の実装  「AMAZON.FOUR_DIGIT_NUMBER」 というビルトインスロットがある…!  けど特に4桁で縛ってるわけじゃない

Slide 34

Slide 34 text

obniz IDの登録の実装  obniz IDがわかればどこからでも操作できる  悪い人にバレると危険 ☠ ☠ ☠  アクセストークンがあるけどこれを有効化すると…  IDはDB格納時に暗号化、利用時は複合しよう  プライバシーポリシーを用意しておく

Slide 35

Slide 35 text

タイムアウトの壁

Slide 36

Slide 36 text

タイムアウトの壁  センサーからのデータ取得に時間がかかる ケースがある  基本的にはほとんどのセンサーは一瞬で値を 返してくれるはず  今回スキルで使った心拍センサーは 値取得に6~7秒かかる…  エンドポイントからの応答が8秒超えると タイムアウト!

Slide 37

Slide 37 text

タイムアウトの壁  対策  スキル起動インテントのLambdaから 心拍取得用に別スレッドのLambdaをキック  ユーザーが次のインテントを呼び出すまでの 間に心拍数をDBに格納する  基本的に3秒以内のレスポンスを目指す

Slide 38

Slide 38 text

センサーの処理→ 「心の音へようこそ…」 センサーから心拍数取得 「心に響く曲教えて」 「現在の心拍数は…」 「心の音を開いて」

Slide 39

Slide 39 text

ここが 長い…→ 「心の音へようこそ…」 センサーから心拍数取得 「心に響く曲教えて」 「現在の心拍数は…」 「心の音を開いて」 タイムアウト!!!!

Slide 40

Slide 40 text

「心の音を開いて」 「心の音へようこそ…」 裏Lambdaキック! ← センサーから 心拍数取得…! (Lambda自体の タイムアウト長め) DBから心拍数取得 DBに心拍数格納! 「心に響く曲教えて」 「現在の心拍数は…」 ここが 長い…→

Slide 41

Slide 41 text

タイムアウトの壁  対策(時間稼ぎ)  setTimeoutでwaitする  長くても500msecぐらい  応答メッセージを沢山しゃべる  SSMLで発話スピードを遅くする  起動時にオープニングSEを入れる

Slide 42

Slide 42 text

タイムアウトの壁  UXの悪化とトレードオフ  起動時SEはスキルのタイプによる  SSML: 個人的にはユーザーが発話スピードを 自由に設定できるような実装が理想  複数のインテントに少しづつ色んな アプローチをすることでUXの悪化を軽減!

Slide 43

Slide 43 text

obnizからのアウトプット

Slide 44

Slide 44 text

obnizからのアウトプット  センサーによるインプット以外にも 様々なアウトプットが行える  モーター  ディスプレイ  LED  赤外線送信  スピーカー

Slide 45

Slide 45 text

obnizからのアウトプット  しかしアウトプットをコントロールできる のはobnizのプロセス実行中のみ  例えばスキルの起動から終了までの間 ディスプレイに何か表示したいけど…  Lambdaが終了する(エンドポイントの処理が 終了する)たびに表示が消える  インテントを跨いで動作してくれない…

Slide 46

Slide 46 text

「xxxを開いて」 「(応答)」 ← Lambdaの処理が終わると 画面も消えちゃう… (本当はずっと表示してて ほしい) 「(次のインテント)」 「(応答)」

Slide 47

Slide 47 text

obnizからのアウトプット  obnizに対しアウトプットを行う場合、 どこかでobnizのプロセスが実行され 続けてないとダメ!  Lambdaは処理を終えたら落ちちゃう > <  対策としてはEC2とかにobnizのプロセスを 常駐させておく

Slide 48

Slide 48 text

「xxxを開いて」 「(応答)」 「(次のインテント)」 「(応答)」 表示を変えたり ずっと見える!→

Slide 49

Slide 49 text

「終了」 「(応答)」 obniz.close()  スキル終了時はobnizをちゃんと落とす  `obniz.close()`で接続解除 ・ ・ ・

Slide 50

Slide 50 text

さいごに

Slide 51

Slide 51 text

様々なAlexaデバイス  echo buttons  アメリカでは発売済み(国内未発売)  echo buttons向けスキルコンテスト開催中

Slide 52

Slide 52 text

様々なAlexaデバイス  9/20には電子レンジ、時計、スマートプラグ等、 様々なAlexaデバイスが発表された  Alexa Connect Kit (Alexa対応家電開発キット)

Slide 53

Slide 53 text

 スマートスピーカーはIoTデバイス  obnizはその機能を拡張する可能性を秘めている…!  何よりスキル開発の楽しさが格段にアップ!!  興味がでてきた方は  まずは公式ページをチェック(https://obniz.io/)  サンプルやドキュメントがすごく充実! さいごに

Slide 54

Slide 54 text

11/23にMA VUI部門決勝戦!

Slide 55

Slide 55 text

12/17にスマスピイベントやります!

Slide 56

Slide 56 text

スマートスピーカーを遊びたおす本  価格: ¥ 2,000  とらのあな  COMIC ZIN  BOOTH  とらのあな、COMIC ZINにて購入頂くと ちょまどさんイラストのポストカード付き!

Slide 57

Slide 57 text

スマートスピーカー Advent Calendar

Slide 58

Slide 58 text

おわり ご清聴ありがとうございました