Gunosyデータ分析ブログ

Gunosyで働くデータエンジニアが知見を共有するブログです。

【Slack×Re:dash】リアルタイムKPI通知をコード0行で実現する

f:id:cou_z:20160825095013p:plain

データ分析部で部長をしている@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 にします。 f:id:cou_z:20160821150129p:plain

2. Re:dashのSlack連携で、グラフをSlackで展開可能にする

Re:dashのSlack連携をすると、Re:dashに登録しているSQLを検索してグラフを投稿してくれる /redash コマンドが追加されます。(下の図では、 /redash https://demo.redash.io/queries/2448#3265 と打っています。) f:id:cou_z:20160825095541p:plain

@redash アカウントを部屋に招待するとURLをつぶやくだけでもグラフに展開してくれます。 f:id:cou_z:20160825095555p:plain

3. Slackのreminder機能で、クエリ結果をSlackに定期通知させる

Slackには、指定の時間に登録した文言を投稿をしてくれるreminder機能があります。 /remind コマンドに、定期通知させたいSQLのURLを登録することによって、グラフを指定の時間に通知してくれるようになります。 f:id:cou_z:20160825095603p:plain

あとは、定期通知させたいKPIがあれば、SQLを登録し、refreshとremindのタイミングを揃えていけば、色んなKPI通知を追加できます。

色んなグラフ

Re:dashは色んなグラフ形式に対応しています。よく使うものを紹介します。

サマリ数値を通知する f:id:cou_z:20160825100328p:plain

ざっと合計値や前日比、先週比、予算比などを確認したい場合に適しています。

先週比を時間別のグラフで通知する f:id:cou_z:20160825094852p:plain

時間別のアクティブユーザ数やアクション数など、トレンドの変化を見るのに適しています。

時間別の数値をテーブルで通知する f:id:cou_z:20160825094807p:plain

直近1時間の人気記事などのランキングや、詳細の値を確認したい場合に適しています。

最後に

SlackとRe:dashを使ったリアルタイムKPI通知を紹介しました。数値を可視化するまでのハードルはどんどん低くなっていきますね。普段使っているツール(Slack、Re:dash)のみで実現できたため、非常に楽でした。

reminderとrefreshのタイミングが合わないと最新の結果からずれてしまいますが、Re:dashにはクエリ更新のAPIもあるので、これを使えば(コードを書く必要がありますが)クエリを更新した後に、Slackに通知するbotも作成可能です。