slackは名前が出るから本音で書きにくい
と思っている人も少ないはず。
自分の発言に責任を持たないと行けないなんて、生きづらい世の中です。
こんなことを考えたことのある人も少なくないはず。
「ああ、Slackに匿名で投稿し(て、上司の悪口を書き)たい」
残念なことに、slackには匿名で投稿できる機能はありません。
仕方ないので作ります。
完成したもの
誰がつぶやいたのかはわからない、匿名投稿部屋が slack にできました。
【図1】この部屋では、自分以外の人の投稿はすべて anonymous の発言になり、誰が部屋に参加しているのか、誰がつぶやいたのかはわからず匿名性が保たれます。(自分の投稿も、他の人から見るとanonymous が発言したことになっている)
【図2】"長田さん"を名乗る大量の anonymous の出現により、カオス状態が訪れる様子。他の人の発言はすべて anonymous 一人がつぶやいたように見える。
実現方法
slack の room では、つぶやいた瞬間に部屋の参加者に誰がつぶやいたかどうかがバレてしまいます。
匿名投稿できる room を作る、ということは不可能なわけです。
そこで、他の人に会話の内容がばれない DirectMessage (以下DM)を使うことにしました。
slack では hubot と DM のやり取りを行うことができます。今回はそれを利用しました。
今回作成した hubot(以下 anonymous bot)に対して DM を送ると、それが匿名チャットの参加者全員に anonymous からのメッセージとして(つぶやいた人の名前を隠した状態で)ブロードキャストされます。
図で説明するとこんな感じです。
【図3】自分がつぶやいた際には anonymous bot を介して参加者に配信される。
あくまでも参加者は anonymous bot と DM を経由することで他の参加者と会話するので、誰がつぶやいたものなのかはバレることはありません。
主な機能
- 匿名つぶやき
- 匿名チャットへの参加/離脱
- 現在の参加人数の確認
- 匿名チャットへの招待
github
ご自由にお使いください。
pull req お待ちしております。
(あとでリンクをはる)
苦労した点
- hubot 作るの初めて
- coffeescript初めて
- hubot の slack アダプター hubot-slack で DM の送信ができない...
動かす手順
そのうちまとめます。