はじめに
hubotの動かし方を覚えたら、いろいろな通知を飛ばしたくなりますよね。
というわけで みんなに喜んでもらえるものを作るにはどうしたらいいか を思いつくフレームワークっぽいものについてちょっと考えてみました1。
分類してみる
問題点の洗い出しの手がかりとして、まずはチャットに飛ばしたい通知を分類してみたいと思います。
だいたいこんな感じでしょうか。
警報
ある一定の閾値に達したときに飛ばす通知
例)サーバーのアラート
言及
特定のユーザーに対してのアクションが行われたときに飛ばす通知
例)Githubでのメンション / Redmineのチケット割り当て
結果
特定のアクションに対しての成功・失敗などの結果を飛ばす通知
例)Jenkinsのデプロイ結果 / バッチ処理の結果
日課
定期的に確認したい事象へ飛ばす通知
例)GithubのPullRequest確認 / GoogleAnalyticsのデイリーサマリー / お昼休憩
喚起
予定に対してのリマインドとして飛ばす通知
例)スケジュールの期限
連想してみる
次に分類されたものから現状の開発で不便な点、不満な点を連想していきます。
例えば…
【結果】
毎日実行されているバッチ処理の結果がメールで届くけど、いちいち見ないとわからないのが不便だなー。
【日課】
会社としてお昼休憩の時間が決まっているのにみんなだらだら過ごしてるのはいや!
これらを解決するための通知を考えたらOKなわけです。
つまり、「バッチ終了後にその結果をチャットに飛ばす」という機能を作れば、みんなが喜んでくれそうな気がしてきました。
精査してみる
作りたい通知機能を考えたとして、それが 「誰に」「いつ」「何を」伝えたいか という観点でもう一度精査してみると、気づかなかったところに気づいたりします。
例えば、さっきのバッチ処理の結果をチャットに流すという機能は、「担当者」に「バッチが終了した時」に「結果」を
伝えるということになります。
ですが、毎日来るものだとそれ自体に慣れてしまって、失敗した時も見過ごしてしまいがちです。
観点を変えてみて、「担当者」に「バッチが失敗した時」に「警告」を
に伝えたいという風にしてみるといいかもしれません。
つまり、バッチが失敗した場合に(もしくは一定時間内に完了しなかった場合に)チャットに流す、という形にすると、失敗した時だけ通知が飛ぶようになり、見逃すこともなくなるという具合です。