社内Slackでどんなリアクション絵文字が使われているか

この記事は Classi Advent Calendar 2018 の25日目です。

会社ではSlackを使っていろんなやりとりをしているのですが、気軽にコミュニケーションが取れるので投稿にはリアクション絵文字を付けることも多いです。「そう言えばどんな絵文字がよく使われているのかな?」と気になったので調べてみました。

↓ いろいろな絵文字が付けられますよね。こういうやつです。
(しんぺいさんの週刊DeveloperSuccess通信が読めるよ!)

週刊デブサク通信

Conversations APIを使おう


slack APIを使って調べていきます。

提供されているAPIの中には、public channelやprivate channel、DMなどをそれぞれ個別に取得できるAPIもあるんですが、いちいち使い分けるのは面倒です。これらをまとめてダックタイピングできるConversations APIというものがあって、これを使うと便利でした。
https://api.slack.com/docs/conversations-api

ダックタイピング

例えばpublic channelの一覧を取得するAPIのページには、こんな記載もあるので従いましょう。

> Don't use this method. Use conversations.list instead.

Rubyで実装


Rubyだったら slack-ruby-client というgemがあるので、これを使ってみます。
こんな流れで、使われている絵文字のランキングを調べます。

  1. conversations.listでチャンネルの一覧を取得する

  2. 特定のチャンネルに対して、conversations.historyでチャンネルのメッセージ一覧を取得する

  3. そのメッセージにスレッドがあれば、conversations.repliesでスレッド情報も取得する

  4. それぞれのメッセージに付けられた絵文字の回数をカウントする

  5. ランキング上位の絵文字を表示する

チャンネルのメッセージは直近のものを1000件取得しています。コードはこちら。
slack-emoji-checker
require 'slack-ruby-client'
require 'pry'

Slack.configure do |config|
  config.token = ENV['SLACK_API_TOKEN']
end

reaction_counts = Hash.new { |h,k| h[k] = 0 }

client = Slack::Web::Client.new

client.conversations_list(types: 'public_channel,private_channel', exclude_archived: true,  limit: 1000).channels.each do |channel|
  next unless channel.name == ENV['TARGET_CHANNEL']
  p channel.name

  history = client.conversations_history(channel: channel.id, count: 1000)
  history.messages.each do |message|
    #p message.text

    # メッセージにリアクションがあればカウントする
    if message.reactions
      message.reactions.each do |reaction|
        reaction.name.sub!(/::skin-tone-\d/, '')
        reaction_counts[reaction.name] += 1
      end
    end

    # メッセージがスレッドであれば、スレッドを取得する
    # スレッド内のメッセージににリアクションがあればカウントする
    if message.reply_count
      thread = client.conversations_replies(channel: channel.id, ts: message.ts, limit: 20)
      thread.messages.each do |message|
        next if message.ts == message.thread_ts

        if message.reactions
          message.reactions.each do |reaction|
            reaction.name.sub!(/::skin-tone-\d/, '')
            reaction_counts[reaction.name] += 1
          end
        end
      end
    end
  end
end

reaction_counts.sort { |(k1,v1),(k2,v2)| v2 <=> v1 }.each_with_index do |(k,v), i|
  exit if i >= 10
  puts "#{i+1}位 :#{k}:"
end

結果発表


結果はどうなったでしょうか!?

まず、全メンバーが参加しているチャンネルの結果です。🎉や👍など、ポジティブなものが多かったです。8位の "めっちゃええやん" は使い勝手もすごく良いので重宝してます。関西の人がそんなに多いわけではないと思いますが。。松岡修造はガッツポーズのような意味合いと思われます。

絵文字ランキング(全メンバーチャンネル)

次に、エンジニアチャンネルの結果です。お願いする系が多いからか、🙇‍♂️が1位でした。10位の "感謝" もよく使います。大事ですね。そしてよく見ると先ほどのランキングにもこちらのランキングにも "神" が登場しています。たしかによく使う…。

絵文字ランキング(エンジニアチャンネル)

まとめ


ということで、社内Slackでどんなリアクション絵文字が使われているかを見てきました。よく使う絵文字ってその会社の雰囲気を表しますよね。

ちなみに、同じ絵文字でもいろんなバリエーションがありますw

絵文字バリエーション

バリュー(行動指針)絵文字も作られていて、日々使われているのでほっこり。その会社独自のカスタム絵文字って面白いな〜!これからもどんどん追加していきたいと思っています。

一緒に絵文字を追加したいよ!という方はこちらから是非。
Classi株式会社の採用/求人一覧 - Wantedly

正解なんて誰にもわからない、そんなときどうするのか

この記事は Classi Advent Calendar 2017 の25日目の記事です。

最終日なのでどうしようかと思いましたが、特にこれと言ってネタがあるわけではないのでポエムを書きました!ギリギリ間に合って良かった。。

謙虚

さて、普段仕事をしていても、いろんな決断があると思います。正解が何なのか明らかな場合もあれば、どうなんだろうと迷う場合もあります。前者であれば迷わないので楽ですが(そもそも決断していることを意識しないかもしれません)、後者の場合には「うーんどうしよう…」となることもあるでしょう。

そんなとき、どちらかを決断するのはとても怖いことですが、以下の記事を読んで少し気が楽になりました。

大切なことは「その意思決定は正しいか?」ではなく「意思決定したことを正しいものにしていく覚悟はあるか」と言うことになるのだと思います。


これは本当にその通りだなと思っていて、AかBかで迷うときって「確実に100%こっちが正しい」なんてことはあり得ません。実際は49対51とかそういう微妙な差だったりすると思います。最終的には「こっちだ!」と決断し、自分の選択を正解にしていくしかないと思いますが、そこに至るまでの考え方や行動は日々改善できるかなと思います。

『Team Geek〜Googleのギークたちはいかにしてチームを作るのか』

言わずと知れた名著です。HRTが大事だよね、というアレですね。あらゆる人間関係の衝突は、HRTの欠如によるものだと書かれています。

Team Geek ―Googleのギークたちはいかにしてチームを作るのか

謙虚(Humility)
世界の中心は君ではない。君は全知全能ではないし、絶対に正しいわけでもない。常に自分を改善していこう。

尊敬(Respect)
一緒に働く人のことを心から思いやろう。相手を1人の人間として扱い、その能力や功績を高く評価しよう。

信頼(Trust)
自分以外の人は有能であり、正しいことをすると信じよう。そうすれば、仕事を任せることができる。

HRTについては弊社のエンジニア行動指針にも入れています。

謙虚・尊敬・信頼、どれも大切ですが、まずは何よりも謙虚がポイントだと感じています。「謙虚な姿勢で」尊敬、信頼している周りの意見をしっかりと聞く。そしてそれらの意見を考慮した上で最終的には判断する。そしてそれが正解になるように進めていく。そんな風に思っている今日この頃です。(やれているとは言っていない)

もうちょっと整理したいけど時間が無い…!メリークリスマス!

Real Tech Night というイベントで話しました #realtech

この記事は Classi Advent Calendar 2017 の12日目の記事です。

『リアルxIT』という切り口で、トレタさん、JapanTaxiさん、Classiでイベントを行いました。

Real Tech Night 〜ITの力でリアルな世界に革新を起こす企業〜
Real Tech Night

そのときのClassiの会社紹介の資料がこちらです。

資料の最後の方に載せてますが、僕としては「何をやりたいの?」という聞かれたら「これをやりたい!」と答えます。

> 教育のド真ん中である学校をより良い場所に



最近はEdTechな会社が増えてきていますが、どうしても塾や家庭教師といった周辺領域に関わるサービスが多いです。そんな中、教育の "ド真ん中" である学校を変えようとしていることはとても面白いなぁと思っています。

自治体や学校によっていろいろな制約もありなかなか簡単にはいかないですが、一歩一歩、子供たちが必ず多くの時間を過ごす学校を、今よりも少しでも良い場所に。そんな想いで日々泥臭くやっています。

日本の高校の4割に導入されるようになり、とてもとても有難いです。でも、8割9割ともっと導入を進めていかないといけないなと感じています。そうじゃないと自分の子供が通う学校で使ってない、なんて事態になっちゃいますからね。><

Classiには三者面談等で使える機能もあるんですが、いつか、自分の子供の三者面談で先生が使っている場面に遭遇したいなと妄想してます。

先生「○○くんは最近はこうなんです。部活はこうですね」
ささたつ「先生、それはこっちのボタンです」
先生「えっ、ど、どうしてそんなに詳しいんですか!?」
ささたつ「実は作ってまして///」
息子氏「!!!」

みたいなw 引き続き頑張ります!

redashで遊べるAWS環境をたった5分で構築する

この記事は Classi Advent Calendar 2017 の6日目の記事です。連投です。

redashというのは、OSSで提供されているデータの可視化ツールです。

・いろいろなデータソース(MySQL, Spreadsheet, etc..)からデータを取得できる
・取得したデータの可視化ができる

といった特徴があります。

データの可視化ってみんな好きで永遠のテーマですよね。エンジニアに限らず、ディレクターも。三度の飯より可視化が好きだ、という方もいると思います。

僕もいろいろなデータを可視化したい気持ちは溢れるくらいあります。ただ、redashやTableau(タブロー)など名前はもちろん知っているのですが、実際に触ったことはあまりなく、、今回はredashを手元で触ってみようと思って調べてみました。

この記事では、redashを触る環境をどうやって準備するのか?を書きます。

redash

ステップ

有難いことに、すぐにredashが動く状態のAMIが用意されているのでそれを使います。

リージョンごとにAMIが用意されているので、自分の使っているリージョンを選択して、インスタンスを起動しましょう。インスタンスタイプはt2.small以上が推奨のようです。

自分が使っているリージョンがわからない場合には、この辺を見てみると良いかと思います。
http://docs.aws.amazon.com/ja_jp/general/latest/gr/rande.html

ステップ

起動したら、HTTP(80)とHTTPS(443)のポートを開けてください。その状態で以下のURLにアクセスすれば管理者アカウントの登録が行えます。

http://ec2-xx-xxx-xxx-xxx.ap-northeast-1.compute.amazonaws.com/setup

管理者アカウントを登録すると・・あら簡単!これだけでいつもの見慣れた画面になりますね!

redashが使える状態に

ということで、想像以上に簡単でビックリしました。なんて良い時代なんだ。。
気が向いたら、この環境を使って実際にデータの可視化をしてみた話も書きたいなと思います〜

Google Analyticsからスプレッドシートにデータを自動反映する

この記事は Classi Advent Calendar 2017 の5日目の記事です。

日々サービスの改善を行なっているみなさま、いかがお過ごしでしょうか。
改善を行うためには現状の数字を把握しておくことが大切ですよね。

ただ、例えばGoogleアナリティクスを見ればわかるとは言っても、面倒でなかなか見れていない、そして習慣になっていないからいつの間にか見なくなっている(!)方も多いのではないでしょうか。(僕もそうです…)

・いちいちGoogleアナリティクス開くのめんどくさい!
・見たい部分だけスプレッドシートに反映されているようになれば良いのに…
・でもそういう風にするのって大変なんでしょう??

やりたい気持ちはありつつ面倒なのかなぁと思っていたのですが、アドベントカレンダーに何か書かなきゃ、ということで重い腰を上げてブログを書いています。12月に入りましたが今年初の記事です!時間が経つのが早い!><

やりたいことはシンプルにこんな感じです。

g:aとspreadsheet連携のイメージ

というわけで、早速やってみま、、と思ったけど、このページにすごくわかりやすく説明されていたので、改めて説明する必要はなさそうです。では、良いお年を。

ただ、一つだけ、少しハマったことがあったので書いておきます。

僕の場合は Metrics に 7dayUsers を指定して試していたんですが、複数のホスト名から成るサービスだったので、特定のホスト名に絞って値を取得しようとしていました。

Filter に ga:hostname == xxxx.com みたいに指定していたんですが、エラーが出て動かず。。
最終的に、Segments に users::condition::ga:hostname==xxx.com と指定することで、やりたかったことが出来ました。良かった良かった。

数字が反映されたので、グラフを描画すれば推移も見れるようになりました。

31

どんなクエリが指定できるのかは、これなんかを使って試してみると良さそうです。
Query Explorer

さーて、こういう仕組みで毎日数字を見るようにしなきゃですね!💪💪💪
karaage299 at gmail.com




寄稿した記事

Ruby Freaks Lounge (28,30)
NoSQLを試してみる

作ったもの

カープ戦速報ボット
まとめったー
YouTube Oricon Ranking
NicoNicoブックマーク
ねたばれ見る?


ブックマーク数



購読者数



RSS登録
Subscribe with livedoor Reader