Alexaスキルの利用データ可視化

「データサイエンティスト（見習いレベル）」の いけうちです。

以前は、
仕事で 音声UIのアプリケーション開発をやってまして、
趣味でも スマートスピーカーのアプリ開発をしていたのですが、
最近は、
仕事の担当が（音声UIに限らない）データ収集・分析になりまして、
データサイエンティスト検定（見習いレベル）を受けたりして勉強中です（無事に合格しました）。

身近なところでデータを可視化して、データを眺める習慣をつけようと思い、
リリース済みのAlexaスキルの利用データを可視化してみました。


![whiteboard_memo.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/239549/cab44084-08b8-eff3-a52d-afa2c7a629ac.png)


# Alexaスキル 「カスタマイズ天気予報」
まず、データ可視化をする対象のAlexaスキルの説明です（と言いつつ、スキルの宣伝です）。

Amazonのページはこちら：　[Alexaスキル カスタマイズ天気予報](https://www.amazon.co.jp/Ryota-Ikeuchi-%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%9E%E3%82%A4%E3%82%BA%E5%A4%A9%E6%B0%97%E4%BA%88%E5%A0%B1/dp/B099X8SQB8)

![スクリーンショット 2021-12-11 22.39.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/239549/52afcc0d-91ae-5aa4-e154-acdb6c68e53b.png)


>このスキルでは あなた好みに天気予報をお伝えします

>Alexaに天気予報をおしえてもらうときに「もっと こうだったらいいのに」と思うことはありませんか？
>・６時間ごとの降水確率を知りたい
>・傘が必要かどうかだけ教えてほしい、降水確率の値はいらない
>・読み上げが終わるまで時間がかかるので もっと短く簡潔に教えてほしい
>などなど 理想は人それぞれですよね
>このスキルは すべての理想をかなえます！

![スクリーンショット 2021-12-11 23.03.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/239549/9aa5cd25-1fb5-a401-91d6-9f29234ea7eb.png)


ポイントは、ユーザーが自分好みにカスタマイズできることです。
スマートスピーカーのスキルで ユーザー設定を設けているものはあまりないと思うのですが、このスキルではいろいろと設定できるようにしました。

たとえば、私のカスタマイズ設定は、こちらの動画の通りです。

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">Alexaスキル「カスタマイズ天気予報」 <br>私のカスタマイズ設定値は次の通り<br>・傘が必要か：　読み上げあり、30%以上なら「必要」<br>・降水確率：　　読み上げあり、6時間ごと、6〜24時<br>・最高気温・最低気温：　読み上げあり<br>・読み上げスピード：　とても速い<br>・文章の短縮：　有効（「です」等を省略 <a href="https://t.co/CltAbntsEa">pic.twitter.com/CltAbntsEa</a></p>&mdash; ikeuchi (@IkeuchiRyota) <a href="https://twitter.com/IkeuchiRyota/status/1469668363555467264?ref_src=twsrc%5Etfw">December 11, 2021</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

Alexaの「定型アクション」に設定して、毎朝7時にスマートディスプレイから自動で読み上げさせて使っています。
とても便利です！
ぜひ使ってみてください。


# スキルのデータ可視化
このスキルのデータを可視化することを考えてみます。
データといっても色々ありますが、
**ここでは、カスタマイズ設定値のデータを対象とします。**

このスキルのアーキテクチャは下図の通りで、
カスタマイズ設定値はDynamoDBに保存されています。
スキルの実装としては、ASK SDKの[永続アトリビュート（PersistentAttributes）](https://ask-sdk-for-nodejs.readthedocs.io/ja/latest/Managing-Attributes.html#persistenceadapter)の機能を使っています。
このDBの中身をダッシュボード化したい。
![スクリーンショット 2021-12-11 23.04.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/239549/c7dc30f6-d19e-49b1-0b69-10c422603428.png)

ダッシュボード（BIツール）は世の中にいろんな種類がありますが、今回はGoogleのデータポータルを使います。
無料なのが嬉しい！（AWSで統一させるのが楽そうだったが、AWSのは有料でしたので見送りました）
下図のようなアーキテクチャで、
Lambdaを1日1回定期実行して、Cloud Storageにデータを転送し、それをデータポータルが再読み込みして、ダッシュボードが更新されます。
なお、データポータルの機能を使って、週に一度、自分宛てにメール配信もしています。
（メール配信しないと、ダッシュボードを見るきっかけがないので、放置していまう！）

![スクリーンショット 2021-12-11 23.05.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/239549/ccdb4039-2b01-77fa-4afd-778735ce4173.png)


こんなダッシュボードをつくりました（抜粋）：
![スクリーンショット 2021-12-11 23.29.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/239549/507674af-7333-90cf-04c7-f706e92f922a.png)



図の上側：　何%以上のときに「傘が必要です」と言うか という設定値
図の下側：　読み上げスピード
これらは特に人によって好みが分かれる項目だと思います。
空欄は何も設定していない人という意味です。残念ながら、一度起動したが、何もカスタマイズ設定をせずに二度と使わない人がほとんどです。（設定が面倒だからだと思います、これはスキル自体の課題だと認識はしているのですが・・・）


# 課題と今後
- まだ とりあえず適当に可視化しただけの状態なので、このデータをもとにスキルの改善まで実施したい。
- ユーザー数やセッション数のような利用数を直接的に確認する場合には、Alexaのdeveloper consoleの方で見ているのですが、いろいろとアレンジしたいので、このようなデータもデータポータルに取り込みたい。

# おわりに
- スマートスピーカーと直接関係のある話でなくて、期待はずれだったらスミマセンでした^^;
- スキルのデータを可視化・分析してみたいと思っても、
データがないと始まりませんので、それなりのユーザー利用数がないとやる気にならないという問題があります。
今回のスキルでは、ありがたいことにそれなりにユーザーさんに使っていただけていて、ラッキーでした。
（私のつくった他のスマートスピーカーアプリやLINEボットはほぼ利用数ゼロですが）
- （再度宣伝）みなさんぜひ[Alexaスキル カスタマイズ天気予報](https://www.amazon.co.jp/Ryota-Ikeuchi-%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%9E%E3%82%A4%E3%82%BA%E5%A4%A9%E6%B0%97%E4%BA%88%E5%A0%B1/dp/B099X8SQB8)を使ってみてください！