はじめに
最近, Slackが大流行していますね.
社内のコミュニケーションのためのチャットツールとしてはもちろん, それ以外の趣味やOSSなどのコミュニティでも活用されるパターンが増えてきていて, 何かしらの形でSlackを使ったことがある! という方は多いのではないでしょうか?
...さて, Slackはチャットという文章によるコミュニケーションを活発にするために, 様々な機能を提供していますが, その1つが「絵文字」です.
例えば, :innocent:
を含むテキストを送信すると, Slackは自動的に😇に変換して表示してくれます:
非常に便利ですね.
さて, 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が流行している昨今, 覚えておくとふとしたタイミングで使えそうなモジュールだと思います. 是非ご活用下さい.