[レポート]スキル内でどうやってデータを管理するか #ALX401 #reinvent

せーのでございます。

2019年12月02日〜2019年12月07日にかけてアメリカはラスベガスにてAWS最大のカンファレンス、AWS re:Invent 2019が開催されております。
クラメソチームは今年は80名という常軌を逸した人数で現地に乗り込んでおります。

このブログは下記セッションについてのレポートです。

Learn how to handle data in your Alexa skills Presented by Azi Farjad / Amit Jotwani

{セッション概要}

レポート

  • 「どのようなデータをスキルがアクセスするか」は皆アイデアがある
  • 「データをどこに保存するか」「データをどのように出し入れするか」「大人と子供でアクセスできるデータの違い」について知見をもってもらえればと思う
  • あなたが「良いスキルだな」と思ったものの要因は何か
  • スキルエンゲージメントを高めるのはそのコンテンツ自体
  • 質の高いコンテンツにはどの情報をどこで使うか、というタイミングが重要
  • そのために大切な情報はなるべく覚えておきたい

  • 旅行予約のスキルを考える

  • 少しパーソナライズするためにはどのような情報を覚えておくべきか
    • 名前
    • 住所
    • ユーザーID
  • これらは毎回応答するものではなく、一度呼び出したら覚えておきたい

  • これらのデータをどのように管理するか

  • NoSQL
  • RDBMS
  • S3
    • 必要なデータには往々にして画像なども含まれる
  • SDKと深く連携していると良い

  • マーケティングチームやコンテンツチームと連携する場合

  • 彼らはデータベースアカウントにアクセスしたくない場合も多い
  • 音声にてデータをコントロールできるとよい
  • プライバシーポリシーとして個人情報を管理する場合にはユーザーが情報を預ける旨を理解していなければならない
  • API Gatewayを使ってAPI経由で呼び出す

  • 実装方法

  • グローバル変数を使う
  • Session Attributeを使う

  • セッションの間にスキルが会話を覚えておいた方が良いこと

  • 好みの情報
  • ユーザの名前
  • 短期記憶か長期記憶か
  • 2回聞き直したくないような事はセッション終了後にデータベースに保存する
  • ゲームスキル
  • 回答を正しく使えているときにポイントを加算しリーダーボードに表示
  • 8ポイント溜まっていたら残り質問を2つし、スコアを与えたら全て忘れる

  • Session Attributeは会話が終了するまで記憶されている

  • Persistent Attributeは初回(session.new = true)のときに呼び出してSession Attributeに移す
  • データベースのキーにUser IDを使い、パーソナライズされる情報をためていく
  • (会場から)User IDはスキルがOFF/ONされると変更される?
  • 多分今は同じだと思うが私は試していない。デバイスIDは変更される
  • オーストラリア人に対してのパーソナライズの手段の一つとしてシノニムやSSMLを使ってオーストラリア独特の言い回しをする
  • 次回このスキルを開いたときに「おかえりなさい。9日前にアクセスがありました」と言う
  • Intercepterを利用してCloudWatchにログを吐く

まとめ

Session AttributeとPersistent Attributeの使い分けやDB,APIとの連携についてのお話でしたが、日本ではそこそこもう議論しつくされた話題かな、と感じました。
スキルのOFF/ONでUser IDは変わる、というのが私の認識です。これももう2年近く前に議論していた話題かと思います。

[日本語Alexa] スキルで利用可能な各種IDの一意性調査

つまり、日本の開発者のAlexaに関するフィードバックはアメリカチームにはなかなか届きにくい、ということなのかもしれません。
もっと英語で発信しなければいけない、と色々な意味で勉強した1時間でした。