15,000個のカスタム絵文字を支える、Slack絵文字登録術

本記事は[Sansan Advent Calendar 2018](https://adventar.org/calendars/3423)の14日の記事です。


# はじめに

Sansanでは複数の社内SNSを利用していますが、エンジニア同士のコミュニケーションは他社の例に漏れず、Slack[^1]がメインとなっています。
[^1]: Sansanでは事業部ごとにSlackのワークスペースが分かれており、本記事は[DSOC(Data Strategy & Operation Center)](https://jp.corp-sansan.com/dsoc/)のワークスペースでのお話です。
そんな中、Slackでの効率的なコミュニケーションを追求するあまり、カスタム絵文字[^2]の登録数が15,000個を超えるほどになったので、それまでの軌跡をまとめておこうと思います。
[^2]: 自由に追加削除できる自作絵文字

![image.png](https://qiita-image-store.s3.amazonaws.com/0/134618/137918eb-7415-0cea-882d-592c87d3eb0e.png)
*現在15,282個です。やりすぎですね。*


# なんでそんなに増えたの？？

正直にいうと、私[^5]が**調子に乗ってツールを利用したりやボットを作ったりして、絵文字を追加しまくった**からです...
結果論ですが、絵文字が多いことでFacebookやTwitter、メールではできないような不思議で心地よいコミュニケーションができるようになりました。

[^5]: 普段はSansanでデータエンジニアをしています。たまに絵文字職人としても振る舞います。

# 絵文字登録を民主化する、絵文字登録の手法

Slackの画面から愚直に登録するのも良いですが、とても効率的とはいえません。
効率的なコミュニケーションを実現するために、まずは効率的に絵文字を登録しましょう。

# バルクインポート
![image.png](https://qiita-image-store.s3.amazonaws.com/0/134618/dea702fc-783f-851d-46b0-74728438a293.png)

Google Chromeの拡張機能の[Bulk Emoji Uploader](https://chrome.google.com/webstore/detail/neutral-face-emoji-tools/anchoacphlfbdomdlomnbbfhcmcdmjej)を使うと、ドラッグ・アンド・ドロップで一括登録ができるようになります。
私は以下のサイト等から拝借して追加してます。
- [Slackmojis](https://slackmojis.com/)
- [Cult of the Party Parrot](https://cultofthepartyparrot.com/)

# 絵文字職人Bot
絵文字の中でも、文字の絵文字(文字絵文字と呼びます)をChatOpsで作成してくれるBotを作成しました。
これで会話のシチュエーションに合った絵文字をその場で作成できます。

## 構成

チャットボットの構成はAWSでAPI Gatewey + Lambdaです。

圧倒的によくある基本的な構成です。
作り方は以下記事などを参考にすると良さそうです。
- [AWS Lambda を使って Slack ボット (命名: Lambot [ランボー]) を低予算で作ろうじゃないか](https://qiita.com/exabugs/items/e868df55333d0805acb2)

## 言語とモジュール
Pythonで書いてます。コードは省略。
以下モジュールを利用させていただいております。

- [Slack Emojinator](https://github.com/smashwilson/slack-emojinator)
    - 絵文字登録・リスト取得
- [emojilib](https://github.com/emoji-gen/emojilib)
    - 指定した文字列から絵文字を生成
    - 初期の頃は[絵文字ジェネレーター](https://emoji-gen.ninja/#!/)にパラメータを指定して作成させていただいておりました。

## 実装機能
### 文字絵文字作成と登録機能
※アイコンとアカウント名は伏せました。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/134618/156b76bc-ba4d-947b-d42e-3f4305a171a7.png)

以下の形式でメンションすると妙なAA[^3]とともにリプライで絵文字を返してくれます。

[^3]: ランダム表示で10種類くらいいます。

```
@emoji_bot set [オプション:文字色] [オプション:背景色]
[絵文字にしたい文字列]
[オプション:名称]
```
このほか、`set`のかわりに`bulk_set`を指定すると一度に大量の文字絵文字を作成する機能もあります。

## 画像絵文字の登録機能
![image.png](https://qiita-image-store.s3.amazonaws.com/0/134618/58647a5f-0059-f0b9-a3ba-e6e352b96396.png)

以下の形式でメンションすると、同じく妙なAAがURL先の画像を絵文字によしなに変換して登録してくれます。

```
@emoji_bot p [height/width]
[URL]
[名称]
```

画像のURL付きでPostすると絵文字化してくれます。まだテスト中の機能だったりします。

## 新着・削除絵文字の集計
![image.png](https://qiita-image-store.s3.amazonaws.com/0/134618/3b71de4e-d3b9-df4d-9644-3c0627229270.png)
*大量のコマンドー語録[^4]を作成した翌日の集計結果です。*

前日からの絵文字の増減を日次で通知してくれます。
これによって新着絵文字をキャッチアップし、絵文字を利用するモチベーションを上げてくれます。

[^4]: 映画「コマンドー」での名言集。作中のセリフのほぼすべてが名言なので、これを追うだけでストーリーがわかる。https://www7.atwiki.jp/commando-matome/pages/11.html

# 絵文字が増えたことによる良い効果
絵文字の多いワークスペースならではの効果がありました。

## 良い効果 1：「ガヤ」的なリアクションができる
![image.png](https://qiita-image-store.s3.amazonaws.com/0/134618/ffed77f1-876f-00b1-8df7-bcad695d629d.png)
*羨ましい雰囲気を醸し出せます*

絵文字によるリアクションは、自分の存在を前面に出さずにやんわり意思や気持ちを伝えられます。
例えば、多人数での会話のコミュニケーションにおける、まわりの「ガヤガヤ」とした空気感を醸し出すことも可能です。

## 良い効果 2：リアクションのためのコストが低いのでコミュニケーションが活発になる
![image.png](https://qiita-image-store.s3.amazonaws.com/0/134618/f419224b-1097-231f-7761-db124af92f3f.png)
*眠くてどうしようもないときにこうつぶやくと、自然と賛同の声が集まります。*

メッセージをポストするほど主張したくないけど、相づち的反応がしたいときにも、たくさん絵文字があると自分の気持ちにあったやり取りが可能です。

## 良い効果 3：通常コメントよりも強調・装飾ができる
![image.png](https://qiita-image-store.s3.amazonaws.com/0/134618/51bac9d7-bd5f-b31f-9c99-691b5e11371b.png)
*謎の* **ポチ勢** *なるものを煽るときにも効果的です。*

絵文字だけでメッセージを作ることによって、通常のメッセージでは表現できない、ユニークな文字表現が可能となります。
ちなみにDSOCでは「ひらがな」「カタカナ」「アルファベット(大文字・小文字)」「数字」の一文字絵文字が用意されています。

## 良い効果 4：突発的に絵文字大喜利が起きて謎のグルーヴ感が生まれる
![image.png](https://qiita-image-store.s3.amazonaws.com/0/134618/ffcedd2a-b701-62d7-c33b-a91d904f7624.png)
*突然の飯テロ的流れ*

何かの拍子に如何に絵文字だけで自分の意思を伝えられるか、面白いことを表現できるか、という大喜利が起こります。
さながら祭りのようで、参加者全員で一種のグルーヴ感が生まれます。

---

一方で、絵文字が多すぎて探しづらい、絵文字ペインのロードが遅い等の弊害もあります...

![mov_01.mov.gif](https://qiita-image-store.s3.amazonaws.com/0/134618/fe2cbfd2-c212-0858-c48a-a6d05cfeb9cd.gif)
*カスタム絵文字のリストは長すぎて最下端まで行くのは至難の業です。*

# まとめ

Slackにおける絵文字を使ったコミュニケーションやそれらを支える絵文字インフラの話をざっくり紹介しました。

Slackにおける、絵文字やそれらのリアクションを使ったコミュニケーションは、日本人特有の場の空気を読んだコミュニケーションや非言語のコミュニケーションと上手くマッチしていると考えており、結果的にコミュニケーションを活発にして、程よく居心地の良い雰囲気、文化を醸成していると思います。

また、今回紹介したSlackの会話例では雑談メインで紹介しましたが、むしろ通常業務の会話にこそ、絵文字の圧倒的多様性によるスムーズなコミュニケーションが実現できるので、ある意味、**絵文字を自由に登録できる絵文字の民主化は働き方改革**だと思っています。

みなさんもぜひ、絵文字の可能性を再認識して、絵文字職人としてご活躍することを願っています。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/134618/e5b523c8-762b-3724-5210-5f033d6da932.png)
*至言確定です。*