Twitter 上の絵文字の日本語名称対応表を作った話

プログラム,レビューTwitter,Unicode,ウェブアプリ,絵文字

以前から Twitter の投稿をコピペすると、絵文字が全て日本語名称になってしまい、困ったなという問題がありました。

そこで「日本語名称」から対応する絵文字に変換するウェブアプリ「Twitter 絵文字変換さん」を作成して設置しています。

このウェブアプリの作成にあたり、Twitter のみならず、絵文字の日本語表現について色々気づいたことがあるので記録しておきます。

Twitter から絵文字コピペできない問題

ウェブブラウザで開く Twitter から絵文字を含む投稿をコピーペーストしようとすると、絵文字が絵文字としてではなく、文字列としてコピーされてしまいます

ふえぇ❣️😳💦もうすぐクリスマス🎄🦇🕸なのに彼氏💏💑💕いないってマジ!?!?😱💦💦😢⤵️これじゃ令和初の🆕クリスマス🎄🍭🍬ひとりぼっち😢💔⤵️うぇ〜〜ん😭💔💦実は🙊💭フォロワーさんの中に🌝❇好きな人😘💕がいるんだけどDM💌で告白💐💌💖してくれたらOK🙆‍♂️❇するのになぁ😳🙌💓

Twitter 上の表示

ふえぇハートのビックリマーク赤くなった顔汗マークもうすぐクリスマスクリスマスツリーコウモリ🕸なのに彼氏キスハートのカップル2つのハートいないってマジ!?!?絶叫した顔汗マーク汗マーク泣き顔右下へカーブする矢印これじゃ令和初の四角囲みnewクリスマスクリスマスツリーペロペロキャンディーアメひとりぼっち泣き顔割れたハート右下へカーブする矢印うぇ〜〜ん号泣割れたハート汗マーク実は言わざる考え吹き出しフォロワーさんの中に顔つき満月キラキラ好きな人投げキッス2つのハートがいるんだけどDMラブレターで告白花束ラブレターきらめくハートしてくれたらOKOKサインの男性キラキラするのになぁ赤くなった顔両手を上げる鼓動するハート

コピペした結果

正直これは期待した挙動ではないです。

この状態を何とかするためには、日本語文字列化された部分を「絵文字」に置き換えてやればよいので、まずは絵文字に対応する日本語文字列の対応表を作ろうと試みました。

絵文字日本語対応表がない

適当に「Unicode 絵文字 名称」などで適当にググれば対応表が出ると思い、実際見つかりました。いくつか見つかる中で、一番いいかなと思ったのがこの「📙UNICODE絵文字の日本語読み/キーワード/分類辞書📙 – Out-of-the-box」です。

emoji_jaは、Unicodeに登録されている絵文字に対して、日本語の読みやキーワード、分類を付与したデータセットです。Unicodeで定められている名称やアノテーションを元に構築しています。

📙UNICODE絵文字の日本語読み/キーワード/分類辞書📙

絵文字と日本語名称がセットになった json ファイルが用意されているので。これを元に日本語を絵文字に変換すればめでたしめでたし……、と思いきやそうは行きませんでした。

Twitter 独自に日本語名称をつけている

いざ、Javascript で読み込ませて変換を試みるとほとんどうまくいきません。よくよく確認すると、どうやら日本語名称が違うようなのです。下にいくつか例をあげます。「Unicode」は Unicode CLDR[1]CLDR は “Common Locale Data Repository" … Continue reading によって規格されている CLDR short name です。

絵文字emoji_jaTwitterUnicode
😀にっこり笑うにやにやした顔grinning face
🤔考える顔考えている顔thinking face
🍎赤リンゴ赤いリンゴred apple
🍏青リンゴ青りんごgreen apple
🚧工事中工事中construction
🚸児童横断交差点を渡る子供たちchildren crossing

「工事中」など同じものもありますが、ほとんどのものが微妙に違います。「リンゴ」か「りんご」なんて本当に微妙な違いもあります。

よく調べると、Unicode の絵文字は英語名は規格が決まっているようなのですが、日本語名は特に規格化されておらず、利用者で勝手につけているようなのです。

Twitter Web Apps で絵文字を入力するときに出てくるウィンドウ。下に出てくる日本語文字列が Twitter が定義した絵文字の名称。

そのため Twitter では独自に日本語名をつけており、さらにその内容がコピペしたときに露出するため、非常に扱いにくくなっています。上記の「赤いリンゴ」「青りんご」などのように表記揺れもかなり見られ、あまり気を遣っていない様子が見てとれます。

自分で対応表をつくる

Twitter 社もこの情報を公開していないようだし、ネットを探しても対応表がないので自分で作ることにしました。GitHub リポジトリ mkuriki1990/emoji_conv においてあります。

こんな感じで 2,000 個ほど並べています。

本体は json ファイルで twitter_emoji.json です。"short_name" として日本語名称、"emoji" として実際の絵文字を登録しています。いくつか “short_name" の中身も絵文字になっている場合がありますが、これは Twitter からコピペしても日本語に変換されなかったものは(対応するのをサボって)そのままにしています。

Twitter 絵文字変換さん

対応表を使って実際に変換器をつくったウェブアプリが「Twitter 絵文字変換さん」です。

上のテキストボックスにいれると、該当する文字列を絵文字に変換します。フォントが 2 種類から選べるようになっており、少しテイストの違った表示を試すことができます。

絵文字フォント

Twitter 絵文字変換さん」では 2 種類のフォントを用意しています。「Twitter Color Emoji SVGinOT Font」と「twemoji-colr」です。どちらも CC-BY ライセンスと Apache, MIT などのクロスライセンスになっているので比較的自由に使うことができます。2 種類用意しているのは、ブラウザ環境によって表示できる文字とできない文字があったためです。Chrome 系統と FireFox 系統でちょっと対応が異なるため、選択できるようにしています。

このフォントは自由に使えるため、北海道を絵文字で表現したイラストグッズを売っています。詳しくは記事「北海道を Unicode 絵文字で表現してみた話」を見てください。

twitter_emoji.json

本記事内にも対応表の全文を載せます。1,900 行ほどあるので注意してください。

2021/12 追記:
1,900 行はあまりにも多くて動作が不安定になるので載せるのを止めました。GitHub ページで確認してください。

脚注

脚注
1CLDR は “Common Locale Data Repository" の頭文字で、自然言語間の対応をとるためのコンテンツを規格化しているユニコードコンソーシアムの仕組みらしい。