広報な私が初めて触ったPythonでslack絵文字ランキング作ってみた話

f:id:estie:20211201002212p:plain

estie Advent Calendar 2021 1日目の記事です。
会社の雰囲気を知ってもらうため、部門を跨いでクリスマスまで盛り上げていきます!

はじめに

こんにちは、estieで広報を担当していますりりこ(@ririkot2)です。 今年もこの季節がやってまいりましたね!
2019年12月11日に創業したestieでは、3度目のAdvent calendarです。

▼ 過去の記事はこちら
2020年 estie アドベントカレンダー 2020まとめ - estie inside blog

2019年 estie Advent Calendar 2019 - Qiita

この1年でありがたいことに導入企業もメンバーも増え、新規サービス作りや、データ分析、開発合宿などいろんなことが行われてきました。

今年個人的に起こった出来事で言うと、今まではメンバーが少なかったこともあり様々な業務を兼任していましたが、ついに広報を専任で担当させていただけるようになりました!

勉強会も盛んに開催されていて、商業用不動産のドメイン知識やSQL勉強会が毎週開催されています!

しかし、隣の芝生は青く見えるものでして、チームでの開発って楽しそう。特にペア/モブプロって憧れる。そもそもコードを書けるってかっこいいなっという想いがふつふつと沸き起こり、この機会にプログラミングに触れてみることにしました!

ということで、ずっとやってみたかったslackの絵文字ランキングを作ってみることにします!

2回つまずきました

1. Pythonってどこに書いたらいいの?

「slack スタンプ ランキング」で検索したところ、Pythonで書いている方が多いことがわかりました。

Qiitaの記事を読んだところSlack App経由でslackの全履歴を取得できることもわかり、まずはコピペしてみようと思ったのですが、Pythonってそもそもどこに書くの?という初歩的な迷子に陥りました。

解決方法:

  1. Pythonのバージョンアップをした 社内のメンバーに相談したところ、現在使っているM1 Macであれば標準で入っているとのこと。ただし、最新のものではなかったようなので変更してもらう。 (私はやってもらってしまいましたが、Progateに親切に書かれていたので貼っておきます。)

Pythonの開発環境を用意しよう!(Mac) | プログラミングの入門なら基礎から学べるProgate[プロゲート]

  1. テキストエディタであるVisual Studio Codeを入れた 通称VS Codeというやつですね!色々な言語に対応している、見やすいノートと理解しました

2. Slackのアプリがアップデートされていた

さて、環境も整ったところで実際に書くところまで来ましたが、そもそも分析するデータがありませんでした。事前に調べておいたQiitaの記事に沿ってやってみようと思っていたのですが、Slack Appが更新されているようで、手順が違い沼にハマってしまいました。

▼ この手順でやろうと思っていた
Slack API | Web API から Slack App 経由で チャンネル履歴を取得する - Qiita

▼ 開いてみると画面が違った
https://app.slack.com/app-settings/TD3SM3NDB/A02N5NCMRDW/app-manifest

解決方法:
困り果てうなっていたところ、「slackの設定画面のところでエクスポートできるよ」っとビジネスのメンバーが教えてくれました。初心者でslackの管理者権限を持っている方はこっちの方が簡単にできそうです。

全てのチャンネルには日毎のデータが入っています。jsonファイルの中には、メッセージや発言者のID、スタンプ、メンバーなど色々なデータが入っています。

今回はやりませんが、チャンネル毎に使われているもの、特定スタンプをよく使っている人など色々なことができそうですね!

f:id:estie:20211130184004p:plain

Pythonを触ってみる

さて、やっと本題です。

p-man(@pman817)先生に隣についてもらって進めていきます。

▼ 最初に課題記事を読む
- PythonでJSON 読み込み - Qiita
- Pythonのglobモジュールを利用して指定パス内のjsonファイル一覧を取得する方法を現役エンジニアが解説【初心者向け】 | TechAcademyマガジン

なんとなく雰囲気を知った上で、先生に聞きながら書いていきます。何度も躓きましたが、それを表現できるほど理解できていないので、最終成果物だけ貼っておきます!

import json
import glob

# 読み込む日毎で別れたjsonファイル一覧をリストにする
json_files = glob.glob("/Users/ririko.t/Desktop/slack/*/*.json")

emojis = {}

# jsonファイルリストに対してループを回して各ファイルに処理を行う
for file in json_files:
    
    json_open = open(file, 'r')
    json_load = json.load(json_open)

    for message in json_load:
        if "reactions" in message:
            for reaction in message["reactions"]:
                # 集計リストに追加
                if reaction["name"] in emojis:
                    emojis[reaction["name"]] += reaction["count"]
                else:
                    emojis[reaction["name"]] = reaction["count"]

# 集計リストをカウント数で並び替え、上位100位を取得する
emojis_sorted = sorted(emojis.items(), key=lambda x:x[1], reverse=True)[:100]

print(emojis_sorted)

すごい!でました!わーい!

f:id:estie:20211130235356p:plain

これがestieのランキングだ!

Best 10

f:id:estie:20211130235459p:plainf:id:estie:20211130235510p:plain

全期間:2018年9月29日 – 2021年11月16日

直近1年:2020年11月17日 – 2021年11月16日

期間の違いで順位変動はあるものの、10位以外のスタンプはほぼ変わりなしという結果でした!

よくみるとこの1年間で押されたスタンプが多いことが見えますね。メンバーも増え、slackの流れも早くなっているので納得です!

:yosasou:については、LGTM(Looks Good To Me)という説もある押しやすいスタンプです。

f:id:estie:20211130235650p:plain

:muscle:がランク外になったことは、初期の「パワーで何でも解決していこう」というフェーズから、次のステップに移った感じがして何だか感慨深いですね。

11位~20位

10位以内はなんだかんだよくありそうな感じだったので、もう少しみてみましょう。
f:id:estie:20211130235802p:plainf:id:estie:20211130235812p:plain
ここまでくると、カスタム絵文字が増えたからか結構estieの色が出てきた感じがしますね。

直近1年に出てくる、16位ジブンドリブン、17位バクソクアウトプットは4つのValues(estieが大切にしている美意識)の中のものです。Valuesを身近にしたいという思いもあり、スタンプを押すとValuesが集約されるslackチャンネルがあります。それを毎月全社定例で眺めながら今月起こったことや、良い振る舞いを讃えあう会を行っています。(Values Award) 一緒に仕事をしたメンバーの陰ながらの努力などをみんなに伝える意味でもこのスタンプを押しておくと、みんなに伝わるので便利なんです。

f:id:estie:20211130235843p:plain

あと面白いなと思ったのは、:odaijini:がこの順位に入ったことですね。お腹が弱いメンバーが多いからかな。

当たり前のことにも感謝を忘れない感じがして、「いつもありがと」は個人的にも好きなスタンプです。

さいごに

皆さんの会社と比べて、いかがでしたか?

他社と比較すると黒いスタンプが少なくカラフルだなということと、カスタム絵文字が多めなこと、フランクな絵文字が好まれて使われていそうです。使われる絵文字は今いるメンバーの性格だったりを表していると思うので、メンバーが増えることによって、なんとなく会社の雰囲気が伝わることが面白いですよね。また、来年には違ったランキングになると思うとワクワクしますね!

ずっと見てみたいと思っていたランキングが作れて、今年も思い残すことはありません。 やってみたいんだけど誰か助けて!という状況で、色々なチームメンバーが率先して手助けをしてくれました。いつも助けてくれてありがとう!

さて、このように親切なメンバーが在籍しているestieでは全職種でメンバーを募集しています!

まだまだ創業期のestieを作っていきたいという方、我こそは面白スタンプの創造主であるという方、スタンプでこんな分析もできるよって教えてくれる方は、ぜひカジュアルにお話しさせてください。

jobs.estie.jp

最後まで見てくださってありがとうございました!

明日はbizdevのfuminが不動産業界の基礎について語る「不動産は一物三四五価」です!お楽しみに。

© 2019- estie, inc.