TL;DR
- SlackのAPIから2018年の発言データを取得、可視化をしました
- 一番発言されたChannelや使われたリアクション 💪 、Channel数の増加などを調べました
- Doc2Vec、t-SNEを使って類似Channelの探索をしました
- 使ったコードは記事の最後にあります
はじめに
アプリケーションエンジニアの池田@つくば (@ikedaosushi Follow me! )です。
2018年もいよいよ終わりですね。皆さんにとってどんな年だったでしょうか。僕は人生初の転職とリモートワークワークを経験し、かなり刺激的な一年になりました。
年の瀬ということで、SlackデータをPythonを使って可視化することによってKaizen Platformにとって2018年がどんな1年だったか振り返ってみたいと思います。ちなみに以前、弊社ではQiita:Teamの解析を行っていたので今回はSlackの解析です。
ちなみに、HR Techの分野では、ONA(Organizational Network Analysis)など、コミュニケーションツールの分析が注目されているようです。
EmailやSlackのようなコミュニケーションツールの分析はもちろん、フォーマル・インフォーマル問わず様々な関係を、チームや全社など異なる組織レベルで可視化して分析するもので
使用するデータ
- 期間
- 2018/01/01 ~ 2018/12/16
- ※データ取得日が2018-12-16
- 使用API
- channel.history
- channel.list
- ※ APIはそれぞれ上限があるので取得する際は上限に達しないようにアクセスするのがポイントです
- 備考
- botの投稿は全て除外しています。
- 時系列のデータに関しては土日祝日はカウントしていません。
- 土日祝日の判定はこちらのライブラリを使わせていただきました。 GitHub - Lalcs/jpholiday: 日本の祝日を取得するライブラリ
全発言数は?
まず全発言数など基本的な情報を見てみます。
Kaizen Platformでの2018の全発言は376096(!)で1時間につき189回の発言が平均でされていたことになります。 Kaizen Platformには業務委託含めて107名(2018/12/1時点)いるので1人あたり35149回の発言があったことということになります。リモートワークを推進していることもあって、かなり多い印象でした。
ワードクラウド
2018年はどんな発言が多かったのでしょうか。#generalと#randomでの発言に対してワードクラウドを見てみます。
#general
#random
#generalではアナウンス系が多く、#randomではお土産系の話が多いのが反映されていますね。
時系列の変動
次に今年1年の時系列の変動を見てみます。
4月辺りで大きく減り、その後は増加傾向にあるように見えます。 ただ、これはどちらかというと、1~3月が顧客の年度末で契約更新などでバタバタして増えた季節要因が影響しているかもしれません。
日付/曜日/時間帯による発言数の分布
次に、日付(月の中で何日か)/曜日/時間帯で傾向があったのか見てみます。
日付は月末になるに連れて発言数が多くなっていることがわかります。 曜日は水曜日が一番活発だったようです。時間帯を見ると、10時から19時までの活動が活発だったようです。ホワイト企業ですね 😃
1番活発だったChannelは?
1番活発だったChannelを見てみたいと思います。#ad-*系はKaizen Platformが力を入れている Kaizen Ad に関連するChannelでその盛り上がりが伝わってきます。
特に1番多かった #ad-cs (Kaizen AdのCustomer Success Channel)は今年作られたChannelだったので、細かく時系列でも見てみました。
1日辺り100~200発言ほどされていて、アクティブな様子が垣間見えます。
1番発言した人は誰?1番@された人は誰?
1番発言した人と@された人も出してみました。本人OKが出たCTOのwatabe以外はプライバシーの観点から名前は伏せています。CTOのwatabeは1日平均157回発言していて凄まじいエネルギーだなと思いました。笑
また発言数と@された回数の散布図でプロットして関係性を見てみましょう。
大きな傾向として発言数が多くなるごとに@される回数も増える傾向がありますが、発言数の方が早く増えていくパターンと@される回数の方が早く増えていくグループに分かれていくようです。
1番使われたリアクションは?
次は、1年間で最も使われたリアクションです。
何かと便利な 🙇♂️ がダントツでトップでした。1万回以上も 🙇♂️ されているのは興味深いですね。日本特有な文化な気もするので国別でも見てみたいと思いました。
Channelごとの発言数
「Channelごとに発言数に偏りがありそう」という仮説があったので、発言数ごとにヒストグラムを書いてみました。
ヒストグラムを見て分かる通り、発言数が0回周辺のChannelが大量にあることがわかります。 パレートの法則(いわゆる2/8の法則)が当てはまりそうだと思ったので確かめてみました。
予想以上にキレイにパレートの法則が可視化されてびっくりしました。(正直ちょっとテンション上がりました。笑) パレートの法則通り、上位100Channelで全体の会話の約80%が行われています。 法則通りとはいえ、不要なChannelはアーカイブしていく必要性を感じる結果になりました。
Channelの増減数
上記の結果を見て、「Slack利用開始以来どのくらいChannelが増えているのか」が気になったので見てみました。作成数とアーカイブ数も一緒に出しています。
恐ろしいことに利用開始以来、線形に(というか若干指数的に)Channel数が増えています。 このままでは社内でシンギュラリティが起こってしまいそうなので対策を打っていかないといけませんね…
Doc2Vecを使った類似Channelの調査
Doc2Vecを使うとDeepLearningを使って「文章をベクトル化」することができ、それによって「文章間の類似度」などを簡単に計算することができます。これを使って似ているChannelを探してみます。 類似するChannelを見つけることで「このChannelはMergeできそう」と考えることができます。 下は発言数の上位5Channelと、それに類似しているChannelです。
対象Channel | 類似度1位 | 類似度2位 | 類似度3位 |
---|---|---|---|
ad-cs | ad-sales-asst(0.36) | ad-operation(0.33) | ad-sales-jp(0.33) |
ad-dev | ad-dev-qa(0.38) | prd-prj-ams(0.34) | ad-pointsystem(0.34) |
ad-dev-qa | prd-qa(0.41) | prd-team-qa(0.40) | ad-dev-api(0.40) |
cs-engineering | support-tech(0.36) | support-code-review(0.36) | ****(0.34) |
prd-qa | prd-team-qa(0.43) | hubot(0.43) | ad-dev-qa(0.41) |
support-tech | support-check(0.36) | cs-engineering(0.36) | live-ops(0.35) |
Doc2Vecでベクトル化した情報をt-SNEを使って可視化
Doc2Vecを使ってChannelをベクトル化できたのでこれを可視化してみたいと思います。 100次元のベクトルになっていますが、100次元空間を人間は見ることができないので次元圧縮を行い、2次元空間に落とし込みます。次元圧縮には t-SNEアルゴリズムを用います。実際に発言数上位20のChannelについて次元圧縮&可視化してみた結果が下です。
距離が近いChannelのグループを可視化することができました。
(おまけ)自分のtimes Channelは?
ちなみに自分のtimes Channelについての見てみました。
※分報Channelについてご存じない方はこちらなどを参照
自分は今年4月にKaizen Platformに入社したのですが、徐々に活発になってきていて、会社に馴染んできたんだな〜と思いました。(最初の時期は詰まったところが多かったのが原因かと思います。)
ついでに自分のtimesのワードクラウドです。
「〜〜〜な感じ」「〜〜〜みたいな」が口癖なのでそのまま現れてしまって恥ずかしい結果になりました。笑 来年はもう少しはっきりとした意見を持って発言していきたいなと思いました。
最後に
- Slackデータを使ってKaizen Platformの2018年を可視化してみました。
- 実感と合っている結果、逆に予想外な結果など様々でとても楽しかったですし、一部のChannelに利用が偏ってしまい、使われていないChannelがたくさんあるなど’、問題を可視化することもできました。
- 皆さんも是非ご自身の会社や組織のSlackで可視化してみてください!(解析に使ったコードは下のGistにあります。)