% cat

SlackのリアクションをGASを使ってかき集めて、弊社開発部の空気を掴む

どうも、初めまして

はじめまして、2018年にベーシックへ入社しました水田と申します。

最近、急に寒くなってきましたね。
室内で作業するエンジニアにとって風邪対策は重要です。

弊社では定期的にアレクサさんが、
「換気のための窓開けタイム。リマインダー↑です↓。」
とキュートなボイスで換気のタイミングをお知らせしてくれるので、助かっています。
(開け閉めはせっせと人間が行います)

人間が機械に従う姿はベーシック冬の風物詩になりそうですね。

Slackのリアクション、最高ですよね

さて、弊社ではコミュニケーションツールとしてSlackを採用しております。
個人的に一番特徴的だと思う機能が リアクション です。


↑こんな感じ(無作為に画像を選出しておりますことを宣言します)

2クリックでメッセージに対する反応ができるので、気軽に実行できる点と、
特に意味はないけど何となく何かを伝えたいときに便利な機能ですね。
自作できる点も👌

みんなでポチポチ押すことで、殺伐とした社会の中で、ある種のインフォーマルコミュニケーション的な側面の強化も見込めるのではないでしょうか。

リアクションのランキングを見たいんだ

そんな便利なリアクションですが、私はふと思いました。

🤔「色んなリアクションがあるけど、結局何が一番使われてるんだろう」

そう、所謂ただの好奇心です。

早速、Slackのリアクションランキングの出し方について調べてみました。
やはり先人たちは居たようで、いくつかの実装方法(JS,Goなど)が紹介されていましたが、
今回は、実装までのスピードとSlack連携のしやすさから、GAS(Google Apps Script) を使ってみました。

また、実装後のランキングを見て、
弊社開発部の雰囲気や各チャンネルの使われ方について、ついでに伝えられたらいいなと思います。

GASを使ってリアクションランキングを作ってみる

さっくり概要だけ紹介します。

SlackAPIを使って各メッセージのリアクションを取得する

SlackAPIには、channels.historyというメソッドがあり、これを使うことで特定のチャンネルから履歴を引っ張ってくることができます。

具体的には、以下のようなURLを作成して用いることで情報が得られます。

https://slack.com/api/channels.history?count=1000&token=hogehoge&channel=devmas&oldest=123456&latest=1234567;

各パラメータは以下を参考に調整するといいと思います。
一度に1000件までしか取得できないので、それ以上欲しい場合は期間を指定してページネーションしてください。

token: Authentication tokenを入力してください。(必須)
channel: チャンネルの指定。(必須)
count: 一度に取得できるメッセージの数(1~1000)。何も指定しないと100になります。
oldest: 期間の指定、ここから。(timestamp形式)
latest: 期間の指定、ここまで。(timestamp形式)

例えば、こんな感じに書くと data に各メッセージが格納されます。

    var url = "https://slack.com/api/channels.history?count=" + count_massages + "&token=" + token + "&channel=" + channel_id + "" + "&oldest=" + start_ts + "&latest=" + end_ts;
    var response = UrlFetchApp.fetch(url);
    var json = response.getContentText();
    var data = JSON.parse(json);

data.messages.reactions で、該当メッセージにリアクションがある場合は各リアクションの情報が得られます。複数ある場合はもちろん複数得られます。
各リアクションには、name counts users というパラメータがあり、それぞれリアクションの名前、リアクション数、リアクションしたユーザ(複数もあり)が記述されています。

スプレッドシートに貼り付ける

最終的に以下のような [[:リアクション名:,カウント数]..] という感じの二次元配列を作りました。

setValues メソッドを使ってスプレッドシートに貼り付けると以下のようになります。
今回の実装では、1行目のチャンネル名のとこでチャンネルを指定して、GASを実行すると3行目以降に反映されるようにしました。

後は手動でSlackに貼り付けるなり、自動で投稿するなりすればランキングの出来上がりです。

ランキングの発表です

弊社にはエンジニアのためのSlackチャンネルがいくつかありますが、
その中でもよく使う3つのチャンネルに焦点を当ててみます。

devmas

技術職の技術職による技術職のための部屋
一番よく使うチャンネルです、エンジニア間での共有やアナウンス、ちょっとした雑談など基本的にはここでコミュニケーションが行われています。
ではランキングを見てみましょう。

リアクションランキング(1年分)

1位の :tada: (日本語で言う「ジャジャーン!」の意味)は、Good job的な意味もあり、汎用性もあることからよく使われてますね。

2位はお寿司🍣。エンジニア=寿司好き という公式があるみたいです。「お疲れ様」的な意味があると勝手に思っています。3位の :thank-so-much: も含め、弊社エンジニアは互いを労い尊重することによって日々研鑽しているということですね。

業務的な挨拶や返事用のものより、修飾的な意味をもつリアクションが多いですね。
なんとなく見渡してみると、なんだか明るいポジティブな印象を受けませんか?(誘導)

ちなみに、

輝かしい笑顔の人物が9位にランクインしていますが、中東の武◯商人とかではなく弊社VPoEのmochizukikotaroです。
(ちなみに、CTOは技術にもっとも強い存在という感じですが、VPoEは主にチームビルディングや組織課題の解決など幅広くエンジニア全体のマネジメントを行うポジションで、弊社でも最近導入されました。)

devmas_output

こちらはエンジニアのアウトプット用のチャンネルです。日々の気づきや学びを各々がひたすら投稿しています。
mmusasabiがいつも当ブログに投稿している記事もこちらから抜粋されています。

リアクションランキング(1年分)

devmas とはまた違う結果になりました。面白いです。

1位の :eyes: や3,4位の :god: :kami: などによる反応が多いことから、自身だけでなく他の誰かの知見にもなっているということが伺えますね。

「自分では知見だと思ったけど、多分これ知らなかったの自分だけだろうなぁ。アウトプットするまでもないかなぁ。」 と思ってしまうことも多いですが、
この結果を見ると、どんな情報もきっと誰かの役に立つと思えますね。どんどんアウトプットしよう。

devmas_helpme

個人的に一番好きなチャンネル。
お助けチャンネルやヘルプデスク的な立ち位置で、みんながボールを拾って何かしらを返してくれます。「もうダメぽ」と思ったら書き込んでみよう。3秒で解決するかもしれません。

行き詰まった時や悩んだ時にこういったチャンネルがあると、仕事をしていく中で発生する不安や孤独感も大分解消されると思います。

リアクションランキング(1年分)

1位は堂々の :thank-so-much: でした。
助かった人がリアクションの数だけいるということでしょう、最高ですね。

5位にはあの :thinking_face: が登場しています。
一緒に悩んでくれる仲間がいる、それって素敵やん?

個人的には20位の :wakannai: も好きです。
他の人もわからないということで、逆に自信を失わずに済むこともありますからね笑

おわりに

長くなってしまいましたが、ただリアクションの数を調べるだけでも意外と様々な見解を得られて楽しかったです。

それぞれのチャンネルの目的に応じてランキングの内容も変化しているのが非常に興味深く、各チャンネルはそれぞれの目的をある程度果たしていることもわかりました。

また、弊社開発部の雰囲気もほんのちょっとなんとなく伝わったかなと思います笑

皆さんも、自分の参加しているチャンネルのリアクションランキングを調べてみてはいかがでしょうか!

(本当なら、各個人のランキングやもっと突っ込んだ調査もしたいですが、それはまた今度。)

最新記事

大量アクセスに耐え得る在庫管理システムの構成を考え実装してみた

皆さん「在庫管理」ってどうしてます?itemsテーブルに、stockカラム作ってdecrementしてますか? まぁ正直、それでも良い感じしますよね。楽だし何やってるかわかりやすい。 しかし! **超人気商品に超ア...

mmusasabi
2019年03月13日

kubernetes で Ruby on Rails を動かして kubern...

巷で話題の kubernetes ですが、とってもとってもとっつきにくいですよね そんな kubernetes ですが手元で動かすことができたので解説してみます (情報が間違ってたらごめんなさい! 🙇) 目標はこちら ...

tkhr0
2019年03月07日

初めて社内ISUCONを開催したらめっちゃ盛り上がった

みなさん ISUCON というものをご存知でしょうか? ISUCON とは... > 「お題となる Webサービスを決められたレギュレーションの中で限界まで高速化を図るチューニングバトル、それが ISUCON です。」 ...

ykyk1218
2019年02月26日