プロダクトマネージャーのKSKです。

日常の業務では優先度などを考えるとなかなかコードを書いたりする機会が作れていないのですが、空いた時間を使ってメンバーが「ちょっとワクワクするようなこと」を開発・分析することを楽しみたいと思っています。今回は(エンジニアとしては完全にヒヨッコの)自分がちょっとした開発プロジェクトに奮闘している様子を描きたいと思います。このブログを通して非エンジニアにとってコーディングや数値分析のハードルが少しでも下がれば良いですし、エンジニアの方は微笑ましく暖かく見守りつつ、ツッコミどころは「お問い合わせ」から突っ込んでいただき、そのまま弊社に遊びに来ていただければと思います。

さて、弊社では社内コミュニケーションツールとしてSlackを使っています。(TECH BLOGを読みに来るような方は既にご存知とは思いますが)Slackは用途ごとに「チャンネル」を作成してチャットをしたり、Google Drive や JIRA、Github などさまざまなツールと連携したり、毎日・毎週のルーティンワークになり得ることを Bot を作成して業務効率化を図ったり、柔軟に使えて重宝しています。中でも社内コミュニケーションを活性化させる要因の一つが「絵文字」です。全ての投稿に対して絵文字でリアクションをとることができるので、誰でも手間なく気軽に反応でき、投稿者は反応がもらえることで心理的安全性を高めることができます。

(下記は約1年前、入社初日における私のSlack初投稿です。当時は従業員10人程度、少し緊張して書いた初投稿にこれだけ反応してもらえて嬉しかった記憶があります。)

Slackではデフォルトでも1,500以上の絵文字が使えるのですが、メンバーであれば誰でもカスタム絵文字を追加できることもあり、現在フライウィールではそれに加えて575個のカスタム絵文字が登録されており、合計2,000以上の絵文字を使うことができます(2019年11月現在 KSKざっくり調べ)。最近では様々なメンバーが新規の絵文字を登録しており、GIFスタイルの絵文字なども出てきて、頻繁に新しい絵文字と出会うワクワクを感じることができます。下記に弊社が利用しているカスタム絵文字の一例を挙げます。


どういう状況で使うんだと思われる方も多いとは思いますが、そこは会社文化の不思議とも言えるもので、これらの絵文字も実際に結構使われていたりします。

 

ここからが本題です。メンバー全員が気軽に使える絵文字ですが、実際にどの絵文字がどのくらい使われているのかが知りたくなりました。他のメンバーもきっと知りたいはずです。年末だしせっかくなので、今年2019年にSlack上で(リアクションとして)使われた絵文字について調べてみようと思います。

今回はSlack上のパブリックチャンネルにおけるコミュニケーションの情報を全部引っ張ってきて、リアクションの情報を引っこ抜いて、絵文字がリアクションに使われた回数に関する統計値を出したり、メンバーそれぞれにとって「特徴的な絵文字」をピックアップすることを目指してみようと思います。その中で第一回の今回は、情報を取得する方法を調査し、スキーマを決めるところまでを扱います。

まずはSlack上のパブリックチャンネルにおけるコミュニケーションの情報を引っ張ってきます。今回は公式ヘルプセンターの「ワークスペースのデータをエクスポートする」に書いてある方法に従うことにしました。

 

 

※上記に書いてあるとおり、この方法は「ワークスペースのオーナー」もしくは「管理者」である必要があるので注意してください。

ステップは上記ページに書いてあるとおり。今年の情報なので「日付範囲を指定する」で 2019年1月1日を開始日に指定して「エクスポート開始」をクリックします。その後しばらく待つと(今回の場合はだいたい10分くらい)、エクスポートの完了を Slackbot くんがお知らせしてくれました。

指示に従ってダウンロードしたzipファイルを解凍して中身を見てみると、ざっくり下記のようなファイル構成になっていました。

– channels.json
– users.json
– integration_logs.json
– Channel_A
  └ 2019-01-01.json
  └ 2019-01-02.json
  └ …
– Channel_B
  └ 2019-01-01.json
  └ 2019-01-02.json
  └ …

それぞれのチャットログは yyyy-mm-dd.json の形のファイルに収まっています。
試しに #random チャンネル中の下記のコメントがどのような形式のファイルになっているのかを見てみます。

このチャットの情報は、random フォルダ中の 2019-11-20.json ファイルの中で見つかり、以下のような形になっていました(一部情報を改変しています。)

さて、今回の目的は「絵文字事情を調査する」ことです。
そのため、あとで色々いじって遊ぶことも考えて、下記のような情報を今年のすべてのチャットに対して取得してテーブル形式で保存しようと考えました。

 

①いつ②どのチャンネルで③誰が④誰の投稿に⑤何の絵文字をリアクションしたか。

 

上記の投稿だと、下記のようなテーブルが作られることを想定しています。

 

Date Channel Who reacts Who’s reacted Emoji
2019-11-20 random USER B USER A clap
2019-11-20 random USER C USER A clap
2019-11-20 random USER B USER A sugoi
2019-11-20 random USER D USER A sugoi
2019-11-20 random USER E USER A +1

それぞれの情報は、下記から取得できそうです。

  • Date : ファイル名 (yyyy-mm-dd.json) から取得
  • Channel : フォルダ名 (=チャンネル名) から取得
  • Who reacts : 各投稿の reactions > users から取得
  • Who’s reacted : 各投稿の user から取得
  • Emoji : 各投稿の reactions > name から取得

絵文字には肌の色 (skin-tone) など同じ絵文字でもバリエーションを付けることができるのですが(下記例参照)、これはバラつきを避けたいので同じ絵文字として扱いたいです。データとして取得する際に注意したいと思います。


ここまででようやくやることのイメージがつきました。簡単そうだとたかをくくっていましたが、ヒヨッコにとってはなかなかやり甲斐がある課題のようです。次回(10日投稿予定)は実際に取得したデータから上記フォーマットに従ってデータをパースする部分を進めていきたいと思います。どうぞ温かい目で見守ってください!