![見出し画像](https://assets.st-note.com/production/uploads/images/66996935/rectangle_large_type_2_dfcf846b498794b45e942a7ac14cc4d4.png?width=1200)
ZapierでSlackの社内timesチャンネルの トレンドを集計・投稿する仕組みをつくってみた話
はじめに
本記事は、ストックマーク Advent Calendar 2021の3日目の記事です。
こんにちは、ストックマークのプロダクトマネージャーの中尾です。2日目の記事にあったとおり、ストックマークでは、責任ある自由な働き方が推奨されています。自分は2020年9月に入社して、1年ほどが経ちましたが、この1年間のうち、たぶん90%くらいがリモートでの勤務でした。
社内のコミュニケーションにSlackを使用していますが、リモートでの円滑なコミュニケーションに貢献しているのが、Slackのtimesチャンネルです。
timesチャンネルのいいところ
ストックマークでは、各メンバーが自分のtimesチャンネルを持っていて、そこでは、今取り組んでいる仕事に関わるメモやちょっとした気づき、趣味など日常的な情報が投稿されています。
*timesチャンネルのイメージ
![](https://assets.st-note.com/img/1638432393456-ul7vPWQ9pv.png?width=1200)
リモートが多いと、所属チーム以外のメンバーとコミュニケーションをとる機会が少ないですが、timesを見ることで、どんなことをやっているかが、なんとなくわかったりします。また、気軽な投稿から
中尾:「このサービス面白い。https://hirameki.app/」
小林さん:「それに似たサービスを以前作っていましたよ。今度説明しましょうか?」
中尾:「おお、ぜひ聴かせて下さい!」
田中さん:「自分も聴きたいです!」
など、偶発的な知見の共有につながったりします。あるtimesチャンネルでは、KPOP情報が定期的に配信されており、それをフォローするだけで最新のエンタメトレンドを把握することが可能です。
timesチャンネルの課題
一方で、timesにもデメリットがあります。こちらのnoteでも整理されていますが、一番のデメリットは、スケールしないことです。
社員が増えたら全員をフォローするのが大変になり、その結果、「フォローするtimesが固定化して、偶発的な気づきがなくなった」や「timesを巡回していたらいつの間にか時間が過ぎてしまった」、「CEOがtimesで重要そうなことを言っていたが誰も気が付かなかった」などの状態が発生する可能性があります。
Zapierでtimesトレンドをつくってみた
timesトレンドの機能
この課題を解決するために、簡易的にtimesトレンドをつくってみました。まずは、timesでの重要なやりとり(=トレンド)を見逃さないようにすることを目的として、要件を以下のとおり設定しました。
トレンド性が高いtimesチャンネルの投稿を「返信したユニークユーザーの数+スタンプでリアクションしたユニークユーザーの数が多いメッセージ」と定義する
SlackのAPIで"times"からはじまるチャンネルのメッセージを前1週間分取得する
各メッセージについて、メッセージに返信したユニークユーザー数と、スタンプでリアクションしたユニークユーザー数を算出する
トレンド性が高い(返信したユニークユーザー数+スタンプでリアクションしたユニークユーザー数が多い)メッセージ上位3つのリンクを出力して、毎週月曜日に特定のSlackチャンネルに配信する
2021年11月15日週に配信されたトレンドはこちらです。有馬さんの投稿など、トレンド性が高いものがランクインしていますね!
![](https://assets.st-note.com/img/1638428077065-TxKZjMtpPL.png?width=1200)
Zapierでの構築の手順
Zapierは、異なるアプリやWebサービス同士を連携させてタスクを自動化するツールです。
*ツールの使い方、できることについてはこちらの記事が参考になります。
ノンプログラマーでも業務自動化ができるツールですが、一部の処理はノーコードでは構築できなかったため、ZapierのPythonモジュールを使いました。
![](https://assets.st-note.com/img/1638427927531-uHayLrEqWd.png?width=1200)
毎週定期でトレンドを投稿する処理をノーコードのTriggerとActionで構築して、Slack APIでデータを取得して、メッセージに返信したユニークユーザー数とスタンプでリアクションしたユニークユーザー数を算出する処理をPythonモジュールで構築しています。
Pythonのコードはこちらです。
https://gist.github.com/yushinna/8b966b1bd32cfc36761ee81528ffc795
Slack APIの使い方はこちらを参考にしました。
Slack APIのTokenのスコープは、以下を指定しています。
channels:history
channels:read
groups:history
usergroups:read
users.profile:read
users:read
最後に
昨年末からtimesトレンドを1年ほど運用してみましたが、現状のtimesトレンドは、ロジック上、たくさんのメンバーからフォローされている人の投稿がトレンドになりやすいです。
ストックマークは、この1年間で15名以上のメンバーが新たに加わりました。顧客価値を創造していくためにも、メンバー間の知と知の「新結合」がますます重要になってきています。
このため、今後は、最近新しくtimesチャンネルをつくった人の投稿に重みを付けるなど、ランキングに多様性を持たせる工夫をしていきたいと思っています。
***
ストックマークでは多様なバックグラウンドを持ったメンバーが活躍しています。
ちょっと話を聞いてみたい、もう少し詳しく知りたいなど感じたことがありましたら、是非ご連絡ください!
この記事が気に入ったらサポートをしてみませんか?