Rails で絵文字を扱いやすくする gem rumojinize をリリースした.

絵文字のエンコード/デコードの自動化

ActiveRecord でモデルのフィールドを指定するコードを1行記述すると,DB保存前に ‘🐶’ → ‘:dog:’ のように絵文字を変換してくれる. そして,モデルのインスタンスにロードしたときに,逆の変換が自動でなされるので,変換のことを意識せずに開発が可能になる.

変換自体は rumoji に任せている.

命名

この gem の名前は rumoji からとって rumojinize としている.

Rails の ActiveRecord 系の gem では, “acts_as_xxxxx” という命名をするのが流行っている(?要出展)ようなのだが, acts_as_emojiacts_as_rumoji はしっくりこず, rumojinize に落ち着いた.

MySQLの文字コード

MySQLは文字セットによって,絵文字が保存できるできないが変わってくる.絵文字は4バイト文字として扱われる.一般的なデフォルトの utf-8 だと扱えず,絵文字を保存しようとするとエラーになる.MySQL5.5 以上では,文字セットを utf8mb4 と変更することで,4バイト文字も扱えるようになるらしいのだが,正直どこに影響がでるか完全に理解できておらず断念した.絵文字を扱いたかったサービスが既に運用中のサービスで,迅速な対応が求められていたのもある.このあたりちゃんと理解してから導入してみたい.

参考