CINXE.COM
SlackのリアクションをGASを使ってかき集めて、弊社開発部の空気を掴む | Basicinc Enjoy Hacking!
<!DOCTYPE html><html lang="ja" data-scope-path="layouts/application"><head prefix="og: http://ogp.me/ns# article: http://ogp.me/ns/article#"><link crossorigin="" href="https://www.google-analytics.com/analytics.js" rel="preconnect" /><link rel="preload" href="/fonts/noto-sans-jp-v24-japanese-regular.woff2" as="font" type="font/woff2" crossorigin="anonymous"><link rel="preload" href="/fonts/noto-sans-jp-v24-japanese-700.woff2" as="font" type="font/woff2" crossorigin="anonymous"><!-- Global site tag (gtag.js) - Google Analytics --> <script async src="https://www.googletagmanager.com/gtag/js?id=UA-25666851-3"></script> <script> window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'UA-25666851-3'); </script> <link rel="stylesheet" media="all" href="/assets/ress-d1ba3a251927ab1f2bcc841c9a810109355bcb4260a522a0f76452fdc2fe6095.css" /><link rel="stylesheet" media="all" href="/assets/scopes/layouts/application-dda4ec688c139c8f29c39a2a795bcf4af04c4326643549a37f5d8843fffaebab.css" /><link rel="stylesheet" media="all" href="/assets/scopes/articles/show-37905516c06229c8fde10714e660fc48bc7b6ce7881755707db8b0327ceb5bf1.css" /><link rel="stylesheet" media="all" href="/assets/scopes/partials/_viewer-3a78a10250bb498047a06b71271b62ea949e304d25b9781c4450cf998aa2640c.css" /><link rel="stylesheet" media="all" href="/assets/scopes/layouts/_header-db87b54171cc020758ab7d1494677f8f6c2e9c93b453e896af82e4814eaacc7c.css" /><link rel="stylesheet" media="all" href="/assets/scopes/layouts/_breadcrumbs-744a099ab0b9eb5c4bd45215617e267c7d7c404ddddce8810eead5335512e637.css" /><link rel="stylesheet" media="all" href="/assets/scopes/layouts/_footer-a06961717440c6d0183c582c7f21768011f334d368f51b614eabc87bb17b3bbf.css" /><script src="/packs/application-02365dbc4dc28919eee1.js" defer="defer"></script><link href="/icon.png" rel="icon" type="image/png" /><link href="/apple-touch-icon.png" rel="apple-touch-icon" type="image/png" /><link href="/feed" rel="alternate" title="RSS2.0" type="application/rss+xml" /><title>SlackのリアクションをGASを使ってかき集めて、弊社開発部の空気を掴む | Basicinc Enjoy Hacking!</title><meta name="csrf-param" content="authenticity_token" /> <meta name="csrf-token" content="5BNLmHHMlbHKzMMi+ouaTS1Xd9Q9KXYn9Er6DD7S8UP9ckDzlVKF/nRNuZtEyP2ajd841kV62YpElCIgP8ClWg==" /><meta content="width=device-width,initial-scale=1" name="viewport" /><meta content="SlackのリアクションをGASを使ってかき集めて、弊社開発部の空気を掴む | Basicinc Enjoy Hacking!" property="og:title" /><meta content="article" property="og:type" /><meta content="2019-02-20T11:37:07+09:00" property="article:published_time" /><meta content="mizutanian" property="article:author" /><meta content="Technology" property="article:section" /><meta content="https://tech.basicinc.jp/articles/152" property="og:url" /><meta content="https://tech.basicinc.jp/uploads/20cf1da214abaed8c24bc85ac1eb0d0b.png" property="og:image" /><meta content="image/png" property="og:image:type" /><meta content="1200" property="og:image:width" /><meta content="630" property="og:image:height" /><meta content="どうも、初めまして はじめまして、2018年にベーシックへ入社しました水田と申します。 最近、急に寒くなってきましたね。 室内で作業するエンジニアにとって風邪対策は重要です。 弊社では定期的にアレクサさんが、 「換気のための窓開けタイム。リマインダー↑です↓。」 とキュート..." property="og:description" /><meta content="ja_JP" property="og:locale" /><meta content="summary_large_image" name="twitter:card" /></head><body><header data-scope-path="layouts/_header"><div class="header-contents"><a class="root-link" href="/"><svg class="site-logo"><use xlink:href="/assets/icons-5bbe775037b55281ef0bc50d30a51f69c7c3914d399c7107e37f0702d98ae8a2.svg#logo"></use></svg><div class="site-title">Enjoy Hacking!</div></a><div class="site-desc">Basicinc エンジニアブログ</div></div></header><nav data-scope-path="layouts/_breadcrumbs"><ul class="breadcrumbs" itemscope="itemscope" itemtype="https://schema.org/BreadcrumbList"><span class="pretext">% cat </span> <li itemprop="itemListElement" itemscope="itemscope" itemtype="https://schema.org/ListItem"><a itemprop="item" href="/"><span itemprop="name">~</span></a><meta itemprop="position" content="1" /></li>/<li class="current" itemprop="itemListElement" itemscope="itemscope" itemtype="https://schema.org/ListItem"><span itemprop="name">SlackのリアクションをGASを使ってかき集めて、弊社開発部の空気を掴む.md</span><meta itemprop="item" content="https://tech.basicinc.jp/articles/152" /><meta itemprop="position" content="2" /></li></ul></nav><div data-scope-path="articles/show"><article class="article"><h1 class="article-title">SlackのリアクションをGASを使ってかき集めて、弊社開発部の空気を掴む</h1><div class="article-desc"><a class="article-author" href="/authors/16"><img class="article-author-avatar" src="https://tech.basicinc.jp/uploads/2ef21b4102ea666c0d31f8f23c564563.png" /><span class="article-author-name">mizutanian</span></a><div class="article-date-info"><time class="article-posted-date">Posted 2019-02-20</time></div></div><div class="article-body"><div data-scope-path="partials/_viewer"><h2>どうも、初めまして</h2> <p>はじめまして、2018年にベーシックへ入社しました水田と申します。</p> <p>最近、急に寒くなってきましたね。<br> 室内で作業するエンジニアにとって風邪対策は重要です。</p> <p>弊社では定期的にアレクサさんが、<br> <strong>「換気のための窓開けタイム。リマインダー↑です↓。」</strong><br> とキュートなボイスで換気のタイミングをお知らせしてくれるので、助かっています。<br> <small>(開け閉めはせっせと人間が行います)</small></p> <p>人間が機械に従う姿はベーシック冬の風物詩になりそうですね。</p> <h2>Slackのリアクション、最高ですよね</h2> <p>さて、弊社ではコミュニケーションツールとしてSlackを採用しております。<br> 個人的に一番特徴的だと思う機能が <code>リアクション</code> です。</p> <p><img src="https://tech.basicinc.jp/uploads/3f4321ab72971b54cc6311893a337289.png" alt=""><br> ↑こんな感じ<small>(無作為に画像を選出しておりますことを宣言します)</small></p> <p>2クリックでメッセージに対する反応ができるので、気軽に実行できる点と、<br> 特に意味はないけど何となく何かを伝えたいときに便利な機能ですね。<br> 自作できる点も<img draggable="false" title=":ok_hand:" alt="👌" src="https://twemoji.maxcdn.com/2/svg/1f44c.svg" class="emoji" loading="lazy"></p> <p>みんなでポチポチ押すことで、殺伐とした社会の中で、ある種のインフォーマルコミュニケーション的な側面の強化も見込めるのではないでしょうか。</p> <h2>リアクションのランキングを見たいんだ</h2> <p>そんな便利なリアクションですが、私はふと思いました。</p> <p><big><img draggable="false" title=":thinking_face:" alt="🤔" src="https://twemoji.maxcdn.com/2/svg/1f914.svg" class="emoji" loading="lazy">「色んなリアクションがあるけど、結局何が一番使われてるんだろう」</big></p> <p>そう、所謂ただの好奇心です。</p> <p>早速、Slackのリアクションランキングの出し方について調べてみました。<br> やはり先人たちは居たようで、いくつかの実装方法(JS,Goなど)が紹介されていましたが、<br> 今回は、実装までのスピードとSlack連携のしやすさから、<code>GAS(Google Apps Script)</code> を使ってみました。</p> <p>また、実装後のランキングを見て、<br> 弊社開発部の雰囲気や各チャンネルの使われ方について、ついでに伝えられたらいいなと思います。</p> <h2>GASを使ってリアクションランキングを作ってみる</h2> さっくり概要だけ紹介します。 <h3>SlackAPIを使って各メッセージのリアクションを取得する</h3> <p>SlackAPIには、<a href="https://api.slack.com/methods/channels.history">channels.history</a>というメソッドがあり、これを使うことで特定のチャンネルから履歴を引っ張ってくることができます。</p> <p>具体的には、以下のようなURLを作成して用いることで情報が得られます。</p> <pre><code>https://slack.com/api/channels.history?count=1000&token=hogehoge&channel=devmas&oldest=123456&latest=1234567; </code></pre> <p>各パラメータは以下を参考に調整するといいと思います。<br> 一度に1000件までしか取得できないので、それ以上欲しい場合は期間を指定してページネーションしてください。</p> <pre><code>token: Authentication tokenを入力してください。(必須) channel: チャンネルの指定。(必須) count: 一度に取得できるメッセージの数(1~1000)。何も指定しないと100になります。 oldest: 期間の指定、ここから。(timestamp形式) latest: 期間の指定、ここまで。(timestamp形式) </code></pre> <p>例えば、こんな感じに書くと <code>data</code> に各メッセージが格納されます。</p> <pre><code> 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); </code></pre> <p><code>data.messages.reactions</code> で、該当メッセージにリアクションがある場合は各リアクションの情報が得られます。複数ある場合はもちろん複数得られます。<br> 各リアクションには、<code>name</code> <code>counts</code> <code>users</code> というパラメータがあり、それぞれリアクションの名前、リアクション数、リアクションしたユーザ(複数もあり)が記述されています。</p> <h3>スプレッドシートに貼り付ける</h3> <p>最終的に以下のような <code>[[:リアクション名:,カウント数]..]</code> という感じの二次元配列を作りました。<br> <img src="https://tech.basicinc.jp/uploads/23ceff69d149654aed6e4a202d099940.png" alt=""></p> <p><code>setValues</code> メソッドを使ってスプレッドシートに貼り付けると以下のようになります。<br> 今回の実装では、1行目のチャンネル名のとこでチャンネルを指定して、GASを実行すると3行目以降に反映されるようにしました。</p> <p><img src="https://tech.basicinc.jp/uploads/6bf9769b2d013904a6829d3aeb277878.png" alt=""></p> <p>後は手動でSlackに貼り付けるなり、自動で投稿するなりすればランキングの出来上がりです。</p> <h2>ランキングの発表です</h2> <p>弊社にはエンジニアのためのSlackチャンネルがいくつかありますが、<br> その中でもよく使う3つのチャンネルに焦点を当ててみます。</p> <h3>devmas</h3> <p><code>技術職の技術職による技術職のための部屋</code><br> 一番よく使うチャンネルです、エンジニア間での共有やアナウンス、ちょっとした雑談など基本的にはここでコミュニケーションが行われています。<br> ではランキングを見てみましょう。</p> <p><strong>リアクションランキング(1年分)</strong></p> <p><img src="https://tech.basicinc.jp/uploads/b083e8eb84f32f7d14f70d1d318639ee.png" alt=""></p> <p>1位の <code>:tada:</code> (日本語で言う「ジャジャーン!」の意味)は、Good job的な意味もあり、汎用性もあることからよく使われてますね。</p> <p>2位はお寿司<img draggable="false" title=":sushi:" alt="🍣" src="https://twemoji.maxcdn.com/2/svg/1f363.svg" class="emoji" loading="lazy">。<code>エンジニア=寿司好き</code> という公式があるみたいです。「お疲れ様」的な意味があると勝手に思っています。3位の <code>:thank-so-much:</code> も含め、弊社エンジニアは互いを労い尊重することによって日々研鑽しているということですね。</p> <p>業務的な挨拶や返事用のものより、修飾的な意味をもつリアクションが多いですね。<br> なんとなく見渡してみると、なんだか明るいポジティブな印象を受けませんか?(誘導)</p> <p>ちなみに、<br> <img src="https://tech.basicinc.jp/uploads/48ac0e312207849cc9be78f7d2214da9.png" alt=""></p> <p>輝かしい笑顔の人物が9位にランクインしていますが、中東の武◯商人とかではなく弊社VPoEの<a href="https://tech.basicinc.jp/accounts/mochizukikotaro">mochizukikotaro</a>です。<br> (ちなみに、CTOは技術にもっとも強い存在という感じですが、VPoEは主にチームビルディングや組織課題の解決など幅広くエンジニア全体のマネジメントを行うポジションで、弊社でも最近導入されました。)</p> <h3>devmas_output</h3> <p>こちらはエンジニアのアウトプット用のチャンネルです。日々の気づきや学びを各々がひたすら投稿しています。<br> <a href="https://tech.basicinc.jp/accounts/mmusasabi">mmusasabi</a>がいつも当ブログに投稿している<a href="https://tech.basicinc.jp/articles/141">記事</a>もこちらから抜粋されています。</p> <p><strong>リアクションランキング(1年分)</strong><br> <img src="https://tech.basicinc.jp/uploads/cfd4b28b7553ef58d5bd5c567d3d67cc.png" alt=""></p> <p><code>devmas</code> とはまた違う結果になりました。面白いです。</p> <p>1位の <code>:eyes:</code> や3,4位の <code>:god:</code> <code>:kami:</code> などによる反応が多いことから、自身だけでなく他の誰かの知見にもなっているということが伺えますね。</p> <p><strong>「自分では知見だと思ったけど、多分これ知らなかったの自分だけだろうなぁ。アウトプットするまでもないかなぁ。」</strong> と思ってしまうことも多いですが、<br> この結果を見ると、どんな情報もきっと誰かの役に立つと思えますね。どんどんアウトプットしよう。</p> <h3>devmas_helpme</h3> <p>個人的に一番好きなチャンネル。<br> お助けチャンネルやヘルプデスク的な立ち位置で、みんながボールを拾って何かしらを返してくれます。「もうダメぽ」と思ったら書き込んでみよう。3秒で解決するかもしれません。</p> <p>行き詰まった時や悩んだ時にこういったチャンネルがあると、仕事をしていく中で発生する不安や孤独感も大分解消されると思います。</p> <p><strong>リアクションランキング(1年分)</strong><br> <img src="https://tech.basicinc.jp/uploads/cfb8fef8418ea91c6b4d8a7a915d61bc.png" alt=""></p> <p>1位は堂々の <code>:thank-so-much:</code> でした。<br> 助かった人がリアクションの数だけいるということでしょう、最高ですね。</p> <p>5位にはあの <code>:thinking_face:</code> が登場しています。<br> 一緒に悩んでくれる仲間がいる、それって素敵やん?</p> <p>個人的には20位の <code>:wakannai:</code> も好きです。<br> 他の人もわからないということで、逆に自信を失わずに済むこともありますからね笑</p> <h2>おわりに</h2> <p>長くなってしまいましたが、ただリアクションの数を調べるだけでも意外と様々な見解を得られて楽しかったです。</p> <p>それぞれのチャンネルの目的に応じてランキングの内容も変化しているのが非常に興味深く、各チャンネルはそれぞれの目的をある程度果たしていることもわかりました。</p> <p>また、弊社開発部の雰囲気もほんのちょっとなんとなく伝わったかなと思います笑</p> <p>皆さんも、自分の参加しているチャンネルのリアクションランキングを調べてみてはいかがでしょうか!</p> <p><small>(本当なら、各個人のランキングやもっと突っ込んだ調査もしたいですが、それはまた今度。)</small></p></div></div><div class="article-sns-share-buttons"><a rel="nofollow" target="_blank" class="pocket-share sns-share-button" href="http://getpocket.com/edit?title=Slack%E3%81%AE%E3%83%AA%E3%82%A2%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%92GAS%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%81%8B%E3%81%8D%E9%9B%86%E3%82%81%E3%81%A6%E3%80%81%E5%BC%8A%E7%A4%BE%E9%96%8B%E7%99%BA%E9%83%A8%E3%81%AE%E7%A9%BA%E6%B0%97%E3%82%92%E6%8E%B4%E3%82%80+by+mizutanian+%7C+Basicinc+Enjoy+Hacking%21&url=https%3A%2F%2Ftech.basicinc.jp%2Farticles%2F152"><svg class="sns-icon pocket-icon"><use xlink:href="/assets/icons-5bbe775037b55281ef0bc50d30a51f69c7c3914d399c7107e37f0702d98ae8a2.svg#pocket"></use></svg></a><a rel="nofollow" target="_blank" class="hatena-share sns-share-button" href="http://b.hatena.ne.jp/add?mode=confirm&title=Slack%E3%81%AE%E3%83%AA%E3%82%A2%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%92GAS%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%81%8B%E3%81%8D%E9%9B%86%E3%82%81%E3%81%A6%E3%80%81%E5%BC%8A%E7%A4%BE%E9%96%8B%E7%99%BA%E9%83%A8%E3%81%AE%E7%A9%BA%E6%B0%97%E3%82%92%E6%8E%B4%E3%82%80+by+mizutanian+%7C+Basicinc+Enjoy+Hacking%21&url=https%3A%2F%2Ftech.basicinc.jp%2Farticles%2F152"><svg class="sns-icon hatena-icon"><use xlink:href="/assets/icons-5bbe775037b55281ef0bc50d30a51f69c7c3914d399c7107e37f0702d98ae8a2.svg#hatena"></use></svg></a><a rel="nofollow" target="_blank" class="twitter-share sns-share-button" href="https://twitter.com/share?text=Slack%E3%81%AE%E3%83%AA%E3%82%A2%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%92GAS%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%81%8B%E3%81%8D%E9%9B%86%E3%82%81%E3%81%A6%E3%80%81%E5%BC%8A%E7%A4%BE%E9%96%8B%E7%99%BA%E9%83%A8%E3%81%AE%E7%A9%BA%E6%B0%97%E3%82%92%E6%8E%B4%E3%82%80+by+mizutanian+%7C+Basicinc+Enjoy+Hacking%21&url=https%3A%2F%2Ftech.basicinc.jp%2Farticles%2F152"><svg class="sns-icon twitter-icon"><use xlink:href="/assets/icons-5bbe775037b55281ef0bc50d30a51f69c7c3914d399c7107e37f0702d98ae8a2.svg#twitter"></use></svg></a><a rel="nofollow" target="_blank" class="facebook-share sns-share-button" href="http://www.facebook.com/share.php?u=https%3A%2F%2Ftech.basicinc.jp%2Farticles%2F152"><svg class="sns-icon facebook-icon"><use xlink:href="/assets/icons-5bbe775037b55281ef0bc50d30a51f69c7c3914d399c7107e37f0702d98ae8a2.svg#facebook"></use></svg></a></div></article></div><footer data-scope-path="layouts/_footer"><div class="footer-contents"><a class="root-link" href="/"><svg class="site-logo"><use xlink:href="/assets/icons-5bbe775037b55281ef0bc50d30a51f69c7c3914d399c7107e37f0702d98ae8a2.svg#logo"></use></svg><div class="site-title">Enjoy Hacking!</div></a><ul class="link-list"><li class="link-list-item"><a class="link" href="https://basicinc.jp/" rel="noopener" target="_blank">株式会社ベーシック</a></li><li class="link-list-item"><a class="link" href="https://basicinc.jp/enjoy-hacking" rel="noopener" target="_blank">エンジニア募集</a></li><li class="link-list-item"><a class="link" href="https://qiita.com/organizations/basicinc" rel="noopener" target="_blank">Qiita</a></li><li class="link-list-item"><a class="link" href="https://www.wantedly.com/companies/basicinc/projects" rel="noopener" target="_blank">Wantedly</a></li></ul></div></footer></body></html>