Perlで :innocent: を 😇 に変換する 〜Slackの絵文字対応〜

  • 3
    いいね
  • 0
    コメント

はじめに

最近, Slackが大流行していますね.
社内のコミュニケーションのためのチャットツールとしてはもちろん, それ以外の趣味やOSSなどのコミュニティでも活用されるパターンが増えてきていて, 何かしらの形でSlackを使ったことがある! という方は多いのではないでしょうか?

...さて, Slackはチャットという文章によるコミュニケーションを活発にするために, 様々な機能を提供していますが, その1つが「絵文字」です.
例えば, :innocent:を含むテキストを送信すると, Slackは自動的に😇に変換して表示してくれます:

slack.gif

非常に便利ですね.

さて, Slackの流行に伴って, Slackが提供する「キーワードと絵文字の対応」(:innocent:と😇, :+1:と👍など)が定着してくると, 開発しているサービスに, この変換機能を搭載したいと思う事もあるのではないでしょうか? 私は思いました.

そういう時に便利なPerlのCPANモジュールが, 今回ご紹介するText::SlackEmojiです.

使い方

SYNOPSISに書いてあるとおりです. Text::SlackEmoji->emoji_mapで, 「キーワード」をkey, 「絵文字」をvalueにしたハッシュリファレンスを取得することができるので, 後は正規表現で「キーワード」を取得して, 「絵文字」に置き換えていくだけです:

use strict;
use warnings;

use Text::SlackEmoji;

my $message = 'Hello! :innocent: :+1: :bow:';
my $emoji_map = Text::SlackEmoji->emoji_map;

$message =~ s!:([-+a-z0-9_]+):!$emoji_map->{$1} // ":$1:"!ge;

print "$message\n"; # => Hello! 😇 👍 🙇

まとめ

Perlで, Slackのメッセージにおける:innocent: -> 😇 のような変換を実現する, Text::SlackEmojiを紹介しました.
かなりニッチなモジュールではありますが, Slackが流行している昨今, 覚えておくとふとしたタイミングで使えそうなモジュールだと思います. 是非ご活用下さい.