よこやま日記・技術/ガジェット編

@hiroyky IT系エンジニアのまったりブログ

Slackリアクション(スタンプ)集計ランキングボットを作った

Slackのリアクションを軸に社内交流できないか?

こんにちは。在宅勤務が続くこの頃です。

職場などのコミュニケーションは、専らSlackなどのチャットツールやZOOMなどのビデオ会議ばかりになって来ました。

ここで気になるのは職場などで何気ない雑談に出会えないことです。通路を歩いていたら何気なく聞こえてきた興味ありげな話題に参加して盛り上がったり、新しいアイデアが生まれたり、新しい友人ができたりです。

例えば、違う部署のSlackチャンネルを見る機会は少ないので、固定のメンバーでの会話ばかりになっていそうです。

今、他の部署ではどんな会話が話題になっているのか、オフィスの通路で何気なく耳にするように覗けたらいいなぁ。。そんな風に思いました。

そこでSlackボットを作ってみました。(ボットと言うよりバッチ処理っぽいですが。)

Slackの注目発言をランキング形式で集計するボット

Slackではリアクション(もしくはスタンプとも呼ばれる?)で返信を行うことができます。1クリックでいろんな回答ができて簡単だけど円滑なコミュニケーションを促してくれます。

f:id:hiroyky:20200513013300p:plain
Slackのリアクション

リアクションがたくさん付いた発言 = 話題になっていること

と仮定して、リアクションがたくさん付いた発言をチャンネルを横断して集計してランキングにして紹介するボットを作ってみました。指定した期間(過去1日前から8日前など)でリアクションの付いた発言上位何十件かを探してきてボットが報告します。

対象となるのは次のもの

  • 公開チャンネルの発言(DM/プライベートチャンネルは含まない)
  • ボットの発言は除く(人が発信した物に限る)

それがこちら。 github.com

現時点ではSlackのAppディレクトリ(アプリストア)に登録申請を行っていないため、開発用に登録して実行する必要があります。(登録申請するかどうかは未定)

設定ファイルに記載した範囲の日数・件数でリアクションの多い発言をチャンネル横断して探してきて、指定されたチャンネルに報告します。

これで、普段は見ない他部署チャンネルで話題になっていることとかなどが交流できたら良いなぁ。。

流れ

  1. 公開チャンネル一覧の取得
  2. 本ボットが参加していないチャンネルがあれば参加
  3. 指定された期間の発言を全件走査しながらリアクション数集計
  4. 結果を特定のチャンネルに投稿

(Appディレクトリ(アプリストア)に申請してない理由)

SlackのAppStoreにごめんなさい、まず面倒くさいというのがあります。 趣味開発から始まったため、加えてインフラの維持コストを払いたくないというのがあります。

特に、集計には時間がかかるためAWS Lambdaのようなサービスが使えないという理由もあります。情報取得のためのAPIリクエストでリクエスト上限に達しないようにするため遅延を設けてあり時間がかかるためです。。