CLIだけでSlackで使える日本語Reaction emojiをつくる

More than 1 year has passed since last update.

絵文字 / Emoji Advent Calendar 2016 - Qiita 13日目の記事です。

emojiというよりはSlackのReactionにこじ付けたテーマでやらせて貰いました。日本語リアクションなのでemojiですらない可能性もあるのでご了承ください🙇


日本語リアクションで爆速コミュニケーションの実現「コミュ障でも大丈夫👍」

皆さん、Slackのreaction(以下emoji)使っていますか?自分はめっちゃ使ってます。

emojiがあると文字では表現出来ないニュアンスも伝えられます。しかし、使いやすいemojiってなかなかないですよね。

スクリーンショット 2016-12-13 0.45.44.png

使いやすいemojiはあるにはありますが、emojiを少し工夫すると使いやすく、文字で表現出来るニュアンスも伝えることが出来るんです。

それは日本語emojiです!(下のemojiは oti/slack-reaction-decomoji のCustom emojiです)

スクリーンショット 2016-12-13 0.38.28.png

Slackにはcustom reactionといって、team毎に独自のemojiを導入することが出来ます。その機能を使って日本語emojiを導入することが出来ます。

参考スライド

日本語Reactionサイコー!! | oti


日本語emojiの導入「やらない人は損してる👓」

GitHub - oti/slack-reaction-decomoji: Custom icon collection for slack reaction

上のリポジトリの導入手順に則ると 2016/12/22 現在、109個のいい感じの日本語emojiを導入することが出来ます。めっちゃ便利です。

スクリーンショット 2016-12-13 0.53.52.png


作るのがめんどくさくなった結果「CLIで作るぞ🔥」

いい感じなemojiは上記の方法でなんとかなりますが、自分たちで新しいemojiを作ろうとすると少し面倒くさくなってきます。

リポジトリにはPhotoshop用の編集テンプレートが入っていますが、Photoshopは起動が遅く面倒に感じます。

また、Web上には 絵文字ジェネレーター の様なWeb上でemojiを作れるようなツールもあるにはあるのですが、自分で色をいい感じにしないといけないので少々面倒です。

そこで、CLI上でemojiを作れれば便利じゃないか!と思ってしまって、CLI上で作れるようにしました。

https://github.com/mottox2/emoji-generator

Group 3.png

emoji作成からSlackへのemoji登録を2つのRubyファイルで実現しています。


  • Rmagicを使って画像を生成する部分

  • mechanizeを使って無理やりSlackに画像をアップロードする部分


使い方

画像を取り扱うために使ったRMagickがImageMagickに依存しているのでImageMagickをインストールする必要があります。

homebrewをインストールしていればbrew install imagemagickでインストール出来ます。WindowsやLinuxの人は頑張ってインストールしてください。

rubyの実行環境は整っている前提です。

まだ5文字以上の文字の入力に対応してません…

git clone https://github.com/mottox2/emoji-generator.git

cd emoji-generator
bundle install
bundle exec emoji_image.rb [生成したい文字]
bundle exec import.rb [Slackに登録したい画像のパス]
(SlackTeam, Username, Password, emojiの名前の入力を求められます)

( ´-`).。oO(作ってみたけど、作る方が圧倒的に面倒くさかったです。既存の方法の方が楽なのでは?)

しかも、作ったけどargs要求する感じで無作法な感じだった


Rmagicで画像生成

Rmagicは画像をいい感じに扱うことの出来るImageMagickをRubyから扱うことの出来るGemです。

require 'RMagick'

image = Magick::Image.new(64, 64)
draw = Magick::Draw.new
d.annotate(image, 0, 0, 20, 20, 'sample text')
image.write('dest.png')

だけで画像を作って、保存することが出来ます。

今回は64x64の画像を作って、入力された文字を画像上に配置して出力するようにしています。

文字色はGoogleのMaterial Designのカラーパレットからランダムで1色選ぶようにしました。考える事が少なくなっていい気分です。


mechanizeでemojiをアップロード

SlackでCustomReactionを使うにはemojiを登録する必要があります。APIを使ってあげたいところですが、登録するためのAPIはないので、スクレイピングが出来るGem 「mechanize」 を使ってブラウザの操作を再現してアップロードします。

例えばログインフォームであれば以下のコードを使ってログインが出来ます。

require 'mechanize'

page = agent.get(sign_in_url)
page.form.email = your_email
page.form.password = your_password
page.form.submit

今回はoti/slack-reaction-decomojiでやってる処理を少しだけ書き換えて、指定したpathの画像をアップロードする様にしました。

先人に感謝の気持ちしか湧いてきませんね


感想「emoji以外の知見が凄い貯まる、日本語emojiで俺たちの戦いはこれからだ🔥🔥🔥」

手作業でやってたことをプログラム書いて代わりにやらせようとするとおもったより大変で出来ることが一気に増えます。

emojiを使うために努力したことでemoji以外の知見がすごく貯まりました。自動化の手法はわかったので自動化のコスパを考えることが次の目標です。

日本語emojiはビジネスの人がemojiを使うきっかけになるので、Slackの文化を広めるのに向いているので、導入を考えてみてください!