データ分析部で部長をしている@cou_zです。最近はLIBROのマイクロフォンコントローラーをよく聴いています。
Gunosyにおけるプロダクト改善は、データ可視化による現状把握から始まると考えています。
ログを収集して、ダッシュボードでKPI(重要業績指標)を可視化することは、今では当たり前のことになっていると思います。深夜バッチでKPIを集計して、翌朝に確認することは重要ですが、KPIをリアルタイムに知ることによって、現状把握がさらに進むことがあります。
しかし、リアルタイムにKPIを集計できたとしても、実際にそれらを確認するとは限りません。頻繁にダッシュボードを見るのはとても億劫で、次第に見なくなってしまいがちです。そこで、日常的に開いているチャットにKPIがリアルタイムに通知されると、確認の際の負担を軽減することができます。
Gunosyでは、チャットツールにSlackをダッシュボードにRe:dashを使用しています。そこで今日は、SlackとRe:dashを使って、コード0行でリアルタイムKPI通知を実現する方法を紹介します。
Re:dashとは
Re:dashは、オープンソースのダッシュボードです。 SQLを登録すると、データソースからデータを取得し、グラフで結果を可視化することができます。 複数のグラフをまとめたダッシュボードも作成可能です。 redash.io
Re:dashは昨年法人化され、ホスティングサービスも開始されました。これにより、自前でRe:dash環境を構築することが不要になり、DBの接続設定をするだけで、すぐにデータの可視化を始められるようになりました。 価格も、ユーザ数の制限が無く、登録可能なSQL数が100個のStartupプランで月99ドル、2000個のBusinessプランで月450ドルと、とてもお求めやすくなっています。(SQLが2000個を突破した後も、1SQLあたり0.08ドルで登録可能です。)
Slackのreminder機能 × Re:dashのrefresh機能 → リアルタイムKPI通知
指定した間隔でSQLを実行してくれるRe:dashのrefresh機能と、指定文言を指定した日時に投稿してくれるSlackのreminder機能を合わせることにより、コード0行でリアルタイムKPI通知を実現出来ます。
1. Re:dashのrefresh機能で、クエリを定期実行させる
SQL結果のTableの上にある Refresh Schedule
を押すと、下のように更新頻度を選択できます。1時間ごとに通知する場合は、ここを Every 1h
にします。
2. Re:dashのSlack連携で、グラフをSlackで展開可能にする
Re:dashのSlack連携をすると、Re:dashに登録しているSQLを検索してグラフを投稿してくれる /redash
コマンドが追加されます。(下の図では、 /redash https://demo.redash.io/queries/2448#3265
と打っています。)
@redash
アカウントを部屋に招待するとURLをつぶやくだけでもグラフに展開してくれます。
3. Slackのreminder機能で、クエリ結果をSlackに定期通知させる
Slackには、指定の時間に登録した文言を投稿をしてくれるreminder機能があります。
/remind
コマンドに、定期通知させたいSQLのURLを登録することによって、グラフを指定の時間に通知してくれるようになります。
あとは、定期通知させたいKPIがあれば、SQLを登録し、refreshとremindのタイミングを揃えていけば、色んなKPI通知を追加できます。
色んなグラフ
Re:dashは色んなグラフ形式に対応しています。よく使うものを紹介します。
サマリ数値を通知する
ざっと合計値や前日比、先週比、予算比などを確認したい場合に適しています。
先週比を時間別のグラフで通知する
時間別のアクティブユーザ数やアクション数など、トレンドの変化を見るのに適しています。
時間別の数値をテーブルで通知する
直近1時間の人気記事などのランキングや、詳細の値を確認したい場合に適しています。
最後に
SlackとRe:dashを使ったリアルタイムKPI通知を紹介しました。数値を可視化するまでのハードルはどんどん低くなっていきますね。普段使っているツール(Slack、Re:dash)のみで実現できたため、非常に楽でした。
reminderとrefreshのタイミングが合わないと最新の結果からずれてしまいますが、Re:dashにはクエリ更新のAPIもあるので、これを使えば(コードを書く必要がありますが)クエリを更新した後に、Slackに通知するbotも作成可能です。