はてなの金次郎

Pythonエンジニアの奮闘記。Python, Django, GitLab, Docker, AWS, k8s, etc...

Alexa Salon #1 に参加してきました

感想

dev.classmethod.jp

Alexa Salonに参加してきました。スキル開発をするにあたって色々勉強させていただきました。じゃんけん大会負けてしまいましたが、本も読んでみたいです。

はじめてのAlexaスキル開発 [音声認識アプリ開発の基礎知識を身に付ける! ]

はじめてのAlexaスキル開発 [音声認識アプリ開発の基礎知識を身に付ける! ]

SINさんのブログとてもわかりやすかったのでおすすめです。

dev.classmethod.jp

基礎から学ぶVUIの勘所

自己紹介

VUIとは

会話における法則

  • Voice Communication
  • メラビアンの法則(視覚情報:58%、聴覚情報:38%、言語情報:7%)
    • 言語情報は10%未満
    • Echoは20~30%で戦う必要がある

VUI設計で気をつけること

  • NUDGE
    • 行動経済学用語
    • ユーザーが相手の自然かつ無意識に意図通りの行動を起こすように環境を整え促すこと

留意点

  • 選択肢を例示する
  • はい/いいえで答えられるように促す
  • 一息で言い切れる長さ
    • ユーザーが鬱陶しいと思わないように
    • 書き言葉をそのまま使っては行けない
    • 録音して長いと思ったところは切る
  • 「〜ですか?」:は等価、「〜ですね?」は強調
    • はいと言ってほしい時など

GRAPH BASE UI vs FRAME BASE UI

  • VUIではFRAME UIが良い

MULTI-TERN

  • ユーザーがたくさん話しすぎるのはだめ
  • ピンポンの会話にする

VUI設計の作り方

  • 目的を決める  - なにをしたいか  - そのためにUX的に音声でどう体験してほしいか。  - どこまでVUIにするか。  - VUI以外との連携は。  - ユースケースを想像する。毎日使うのか、必要な時に使うのか。
  • キャラクター設定
    • ペルソナを作り、発話に一貫性を持たせる
    • ユーザーとの距離感
    • Alexaの立ち位置
  • ハッピーパス
    • ストレートな対話を作り、これを軸に
  • INTENT/SLOTの設計
    • State-Intent-Slotのスコープを決める
    • Intentはなるべくシンプルにまとめる
  • UI図
    • ハッピーパスを肉付けする
    • 重要なSlotと必須ではないSlotを区別しておく
    • Slotの最中に別Intentに飛ぶケースを想像しておく
    • 結構修正するので具体的な発話を書かない
  • UTTERANCE表の作成
    • 規模によっては以外と重要
    • 被ってないか確認
  • シノニム/バリエーション
    • ひたすら想像力
    • 5種類をランダムに
    • 頻度によってメッセージを帰る
  • エラーハンドリング
    • キャラクラー設定を元に判断する
    • 謝りすぎない
    • 疑問形で終わる
    • エラー回数によって選択肢を明示する
    • ストップへの誘導

まとめ

  • VUIはAlexa開発のキモ
  • 図を書くまえの準備がクオリティを上げる

Alexa-SDKについて

www.slideshare.net

自己紹介

  • 平内真一さん
  • アプリケーションエンジニア
  • ブログを業務時間に書いていい

Alexa SDK

  • 煩わしい作業をSDKに押し付けて、開発者はロジックに集中できてウハウハ
  • リクエスト・レスポンスJSONの抽象化
  • データの保存
  • 処理のルーティング(ハンドラ登録)
  • ステート(状態)

バージョン1と2

  • 4/18以前
  • はじめてのAlexaスキル開発
  • Lambdaのテンプレート

バージョン2

  • ハンドラの実装法穂が変わった
  • データ永続化の記述が明確になった
  • コア機能のみの利用可能
  • Node8対応(async/await)
  • DynamoDB以外も利用可能
  • AlexaサービスAPIのラッパー提供
  • Java + Node.js

https://dev.classmethod.jp/cloud/alexa-sdk

変更点

  • tell, askの廃止 --> ResponseBuilder
  • ステートの廃止
  • ハンドラのインターフェース canHandle
  • データ永続化の要領
  • 例外時の処理

最後に

  • Ver1の方が簡単に描ける
  • Ver1に未来はあるのか・・・?
  • これから取り掛かるならVer2でいいかも
  • 個人的には、Ver2押し
    • データ永続化が明確
    • canHandleも慣れると悪くない
    • Alexa APIへのアクセスが超簡単
    • async / await 最高
    • TypeScriptで書ける

大質問大会

Q.対話モデル・対話フロー設計時のオススメの方法があれば教えてください。

Q.開発方法、事例、活用ポイントについて

  • Cloud9
  • alexa-conversation テスト

Q.ニーズが高いスキルはどのようなスキルか

  • Amazon的には子供向けスキル
  • USでもキッズ向けが人気
  • キャラクターの声がなんかしてくれる

Q.広告ポリシー

  • 子供向けは広告だめ

Q.勝手に喋り出す機能はないのか?

  • プッシュ通知機能はある

Q.バックエンドに機械学習を絡めることはできるか

  • あったら面白そう