サービスを運営する上で、利用状況をチャットに適切に通知することで、開発効率やモチベーションを向上させることができます。 ここでは、通知する項目の設計と、RailsアプリケーションでSlackに通知するための実装方法について解説します。
前提
この記事では、アプリケーション本体に実装する通知について言及します。
プルリクエスト作成時やCIに失敗した際、またデプロイ時にSlackに通知する方法もよく行なわれますが、これらは外部サービスに関するテーマのため、ここでは省略します。
項目設計
チームで利用するチャットに通知する項目として、おおまかに次のようなものが考えられます。
1. 統計情報
前日のPVやUU、新規ユーザ数などを通知します。
サービスのKPIをもとに、改善すべき数値を日々通知することで、KPIの重要性をチームに浸透させることができます。
2. エラー情報
アプリケーションにエラーが生じた際にSlackに通知することで、いち早く対応することができます。
Railsアプリケーションの場合、exception_notificationというGemを導入することでこれを簡単に実現できます。
3. 問い合わせ状況
ユーザからの問い合わせや意見を通知することで、対応する担当の決定や返信内容に関する議論をスムーズに行なうことができます。
4. セキュリティ関連
これは自動テストでも安全性を十分に担保すべきですが、たとえば(意図的であったとしても)権限が大きなユーザレコードが作成された場合に通知することで、開発者全体にこれを周知することができます。
他にも、重要な処理がなされた際に通知することで、緊急時の対応を速やかにとることができます。
5. モチベーションが上がるもの
たとえばメディアならRSSの購読者数、コミュニティならユーザがコアなアクションをとった数など、サービスを運営していく上でモチベーションが上がる項目を通知すると、単純に楽しいです。
サービスを運営する上で、開発のモチベーションというのは非常に重要なテーマだと思うので、ぜひ適切に設計したい項目のひとつといえます。
備考
以上のように、運営に役立つ通知ですが、通知しすぎるのも問題です。
ただでさえSlackは情報過多に陥りやすいツールです。 必要最低限の項目に絞ったり、定期的に項目を見直すなど工夫してみましょう。
導入方法
次に、RailsアプリケーションからSlackに通知する方法について解説します。 これはslack-notifierというGemで実現できます。
1. インストールする
まずはGemfileにこれを追記し、bundle installします。
Gemfile:
gem 'slack-notifier'
2. 通知処理を実装する
あとは、Slackへの通知を行なうメソッドをコントローラ層から参照できるどこかに実装し、通知したいところから呼び出せばよいです。 以下に例を示します。
def notify_to_slack(message)
notifier = Slack::Notifier.new(
ENV['SLACK_WEBHOOK_URL'],
channel: '#general',
username: 'notifier'
)
notifier.ping(message)
rescue => e
logger.error(e)
end
あるいは、Mailerと同じようにapp/notifiers下にNotifierという新しい責務をつくるのもよいかもしれません(例:ContactNotifierクラス)。
おわりに
開発者には、サービスの利用状況は見えづらいことと思います。 開発を楽しく行なうためにも、チャットの活用を工夫してみてはいかがでしょうか。