読者です 読者をやめる 読者になる 読者になる

Slackに気を取られすぎる問題とその解決

この記事は「さくらインターネット Advent Calendar 2015」の20日目の記事です。

Slackは非常に気の利いたチャットツールで、とても便利に使っています。

問題

しかし、このツールにも問題があります。
ジョインしているチャンネルが多くなると未読のメッセージがつぎつぎに溜まり、未読を消化したい欲と仕事に集中したい欲を常に戦わせる状態となります。
(そして、だいたい未読を消化したい欲が勝ちます)

解決

仕事の効率を高めるはずのツールで仕事の集中力を欠いてしまっては仕方がないので、この問題を2つのツールを使って解消します。

Slack Silencer

github.com

まず、Slack Silencerというツールを使います。
このツールは指定したチャンネルをミュートにしてくれます。ミュート状態のチャンネルはリスト上に薄く表示され、メッセージの未読を伝える白文字の表示になりません。また、メンションされた場合にはバッジが付きますが、通知は飛ばなくなります。

f:id:hogesuke_1:20151219213501p:plain

ジョインしておきたいけどリアルタイムでウォッチする必要がないチャンネルをミュートすることで、未読を消化したい欲に振り回されることがぐっと少なくなります。

使い方

1. SlackのAPI tokenを作成
Slack Web API | Slackより作成可能です。

2. tokenを環境変数に設定

export SLACK_API_TOKEN=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

3. Slack Silencerをgit clone

git clone git@github.com:dopin/slack-silencer.git

4. コマンドラインよりプログラムを実行

# foo, barのチャンネルがミュートされる
/path/to/slack-silencer/mute.rb foo bar

ちなみに自分は、就業時間の09:30-18:30の間だけミュートするため、以下のようにcrontabに設定しています。

# 9:30からミュート
30 9 * * * /path/to/slack-silencer/mute.rb foo bar
# 18:30にミュート解除
30 18 * * * /path/to/slack-silencer/mute.rb

Slack Reporter

github.com

Slack Silencerを使うことで未読により集中力を削がれることはなくなりました。
しかし、ミュートにしている間に投稿されたメッセージは既読扱いにされてしまうため、就業後にゆっくりメッセージを読もうとすると探しだすのが大変という新たな問題が発生します。

そこで、この問題を解決するため、Slack Reporterというツールを作成しました。 このツールは指定の期間に投稿されたメッセージをレポートにまとめてくれるツールです。

f:id:hogesuke_1:20151219221858p:plain レポートのサンプル

使い方

1. SlackのAPI tokenを作成 (※ Slack Silencerで実施済みの場合スキップ)
Slack Web API | Slackより作成可能です。

2. tokenを環境変数に設定 (※ Slack Silencerで実施済みの場合スキップ)

export SLACK_API_TOKEN=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

3. Slackのユーザ名を環境変数に設定(オプション)
設定するとSlackのダイレクトメッセージでレポートのパスをお知らせします。

export SLACK_USER=xxxxxxxxxx

4. Slack Reporterをgit clone

git clone git@github.com:hogesuke/slack-reporter.git

5. コマンドラインよりプログラムを実行

# 9:30から18:30のメッセージを対象にする場合
/path/to/slack-reporter/reporter.rb 0930 1830
# 現時刻から1時間前までのメッセージを対象にする場合
/path/to/slack-reporter/reporter.rb 60

これもcrontabに設定し、自動実行させると便利でしょう。

# 18:30にレポート作成
30 18 * * * /path/to/slack-reporter/reporter.rb 0930 1830

レポートファイルは/path/to/slack-reporter/contents/ディレクトリにhtmlファイルとして生成されます。

一件落着(?)

Slack Reporterについては、このAdventCalendarを書いている直前までコーディングしていたため、まだ運用できていません…

追記

ブクマコメントにて、最近Slackに実装されたdo not disturbで良いのでは?というご意見を複数いただいたので、ちょっと追記します。

do not disturbを設定すると、メンションされた際の通知は飛ばなくなりますが、未読の状態は分かってしまいます。具体的には、チャンネルリストに白太文字で表示され、Slackアプリのアイコンに赤丸で未読が存在することが分かる表示になります。

インボックスゼロ派の自分としては、この状態が目に入ると未読を消化せずにはいられないので、上で紹介しているツールでサイレントな環境を作っています。

追記2

ブコメで使ってみるって書いてくださってる方、ありがとうございます!
ただ、実のところSlack Reporterに関しては、メンションやリンク、Botによる投稿などの表示が不完全で一部見づらいものになっています。これについては、使いながら徐々に改善していく予定です。

また、PullRequestも歓迎してます。よかったらPR送ってください。

Slack入門 [ChatOpsによるチーム開発の効率化]

Slack入門 [ChatOpsによるチーム開発の効率化]