Kawanet Blog II

アクセスカウンタ

zoom RSS Unicode 6.0絵文字対応Encode::JP::Emoji 0.60をリリース(Perl)

<<   作成日時 : 2010/10/24 19:56   >>

なるほど(納得、参考になった、ヘー) ブログ気持玉 7 / トラックバック 0 / コメント 0

今月10月11日Unicode Version 6.0 がリリースされたのに対応して、
川崎がメンテしている Perl モジュール Encode::JP::Emoji もバージョンアップして、
Unicode 6.0 で追加された絵文字を正式サポートしました。

エンコーディング名は x-utf8-e4u-unicode です。

Unicode 6.0 の絵文字 UTF-8 octets(UTF8フラグ無文字列)と、
Google 内部の絵文字 UTF-8 string(UTF8フラグ有文字列)間の相互変換に対応しています。
(絵文字以外の UTF-8 の他の文字については、変換せずにスルーします)

Encode::JP::Emoji のx-utf8-e4u-***x-sjis-e4u-*** 系のエンコーディングは、
decode後(encode前)の内部の UTF-8 flagged string のエンコーディングとして、
Gmail など Google 内部で使われる絵文字コードを利用しています(Google 絵文字コード)。
この「Google 絵文字コード」をピボットにして、ドコモ・KDDI・ソフトバンクの絵文字と
Unicode 6.0 の絵文字を相互に変換することができます。
(2010.10.24 追記:こちらに解説記事を書きました)

● 携帯キャリア絵文字と、Unicode 6.0 絵文字の相互変換


以下のように使います。

use Encode;
use Encode::JP::Emoji;

my $sun = "\xF8\x9F";
Encode::from_to($sun, 'x-sjis-e4u-docomo', 'x-utf8-e4u-unicode'); # U+2600

my $watch = encode_utf8 "\x{231A}";
Encode::from_to($watch, 'x-utf8-e4u-unicode', 'x-utf8-e4u-kddiapp'); # U+E57A

1つ目は、ドコモ絵文字コードの F89F(Shift_JIS)を、Unicode 6.0 の 2600 に、
2つ目は、Unicode 6.0 の 231A を、KDDI 絵文字コードの E57A(UTF-8)に変換します。

なお、Unicode 6.0 の絵文字コードは、アプリ内部や DB の文字コードとしては、
下記の理由により、少なくとも現時点ではオススメできません(ほぼ使えません)。
また、PC・Mac のフォントの対応も広い環境で使えるようになるには時間がかかりそう。

アプリ内部コードとしては使えなくても、当面、変換マッピングを実装される際の確認や、
Unicode 6.0 の絵文字コードを試したい場合には、この x-utf8-e4u-unicode をご利用ください。

● 注意点(1)一部の絵文字は合成文字で表現される


四角で囲んだ数字や国旗マークの絵文字は、単一の文字としては承認されませんでした。
Unicode 6.0 では2文字を組み合わせた合成文字として、表現する必要があります。

Unicode U+0031 U+20E3 (KEYCAP 1)
Google U+FE82E | DoCoMo U+E6E2 | KDDI U+E522 | SoftBank U+E21C

Unicode U+1F1EF U+1F1F5 (REGIONAL INDICATOR SYMBOL LETTERS JP)
Google U+FE4E5 | DoCoMo (N/A) | KDDI U+E4CC | SoftBank U+E50B

Encode::JP::Emoji は、これらの合成文字の往復変換に対応しているので、
動作としては問題ありません。
でも、例えば、アプリ側で文字数カウントとかやりにくくて、面倒ですねー。

● 注意点(2)一部の絵文字の削除


一方、こちらはもう少しクリティカルな問題です。

ドコモのiモードの「i」の字の絵文字 &#E6D1; などの一部の絵文字は、
以前は『EMOJI COMPATIBILITY SYMBOL』として提案されていましたが、
今回リリースされた Unicode 6.0 では企業文字扱いと判断されたのか
削除されてしまいました。以下のような絵文字が利用できません。

Unicode (N/A) (EMOJI COMPATIBILITY SYMBOL-1)
Google U+FEE10 | DoCoMo U+E6D1 | KDDI (N/A) | SoftBank (N/A)

Unicode (N/A) (EMOJI COMPATIBILITY SYMBOL-37)
 Google U+FEE40 | DoCoMo (N/A) | KDDI U+E577 | SoftBank (N/A)

Unicode (N/A) (EMOJI COMPATIBILITY SYMBOL-57)
 Google U+FEE77 | DoCoMo (N/A) | KDDI (N/A) | SoftBank U+E254

これらは、FB_EMOJI_TEXT を併用して、日本語表記に変換できますが、
いったん日本語表記に fallback すると元の絵文字に戻す方法はありませので、
つまり、Unicode 6.0 では、各キャリアの全ての絵文字を表現できません。

● 注意点(3)Unicode絵文字〜Google絵文字間の相互変換問題


上記の『EMOJI COMPATIBILITY SYMBOL』の問題はあるものの、
それ以外のドコモ・KDDI・ソフトバンクの絵文字については、
『ソース分離ルール』(source separation rule)により、
各キャリアの Shift_JIS の絵文字コードと Unicode 6.0 の絵文字コード間の
相互変換(ラウンドトリップ)が保証されています。

しかし、Google 絵文字と Unicode 6.0 の絵文字コード間のラウンドトリップは、
残念ながら考慮されませんでした。今回の追加対象が、あくまで日本の携帯を
対象としていて、Google 絵文字が対象でないためと思われます。

1文字(U+FEB64)だけ、ラウンドトリップできない文字が発生しています。

Unicode U+1F535 (LARGE BLUE CIRCLE)
Google U+FEB64 | DoCoMo U+E69C | KDDI U+E54B | SoftBank U+E21A

Unicode U+1F532 (BLACK SQUARE BUTTON)
Google U+FEB64 | DoCoMo U+E69C | KDDI U+E54B | SoftBank U+E21A

なお、下線 は互換コードで、キャリア間の絵文字変換マッピングに利用されます。

U+1F532 側の U+FEB64 が互換コードのため、Encode::JP::Emoji 0.60 では、
Google 絵文字コード U+FEB64 を利用する場合、往復変換の動作が保証されません。
Google 側が変換マッピングを修正してくれれば解決するので、そのうち直るでしょう。
マッピングテーブルが更新されたら、Encode::JP::Emoji も追随アップデートします。


● 関連資料


emoji4unicode プロジェクト側のマッピングテーブル(XML)
http://emoji4unicode.googlecode.com/svn/trunk/data/emoji4unicode.xml
Unicode 6.0 の Unicode〜Shift_JIS 変換マッピングテーブル(テキスト)
http://unicode.org/Public/UNIDATA/EmojiSources.txt
Encode::JP::Emoji のレポジトリ
http://code.google.com/p/emoji4unicode-ll/


● 関連資料


emoji4unicode プロジェクト側のマッピングテーブル(XML)
http://emoji4unicode.googlecode.com/svn/trunk/data/emoji4unicode.xml
Unicode 6.0 の Unicode〜Shift_JIS 変換マッピングテーブル(テキスト)
http://unicode.org/Public/UNIDATA/EmojiSources.txt
Encode::JP::Emoji のレポジトリ
http://code.google.com/p/emoji4unicode-ll/
Unicode 6.0絵文字対応Encode::JP::Emoji 0.60をリリース(Perl)
http://kawa.at.webry.info/201010/article_1.html
Encode::JP::Emoji の携帯絵文字コード変換マッピングまとめ
http://kawa.at.webry.info/201010/article_2.html
 
 

日経ソフトウエア 2010年 12月号 [雑誌]
日経BP社
2010-10-23

amazon.co.jpで買う
Amazonアソシエイト by 日経ソフトウエア 2010年 12月号 [雑誌] の詳しい情報を見る / ウェブリブログ商品ポータル

《川崎も寄稿してます!》


テーマ

関連テーマ 一覧


月別リンク

ブログ気持玉

クリックして気持ちを伝えよう!
ログインしてクリックすれば、自分のブログへのリンクが付きます。
→ログインへ
気持玉数 : 7
なるほど(納得、参考になった、ヘー) なるほど(納得、参考になった、ヘー)
驚いた
面白い
ナイス
ガッツ(がんばれ!)
かわいい

トラックバック(0件)

タイトル (本文) ブログ名/日時

トラックバック用URL help


自分のブログにトラックバック記事作成(会員用) help

タイトル
本 文

コメント(0件)

内 容 ニックネーム/日時

コメントする help

ニックネーム
本 文
Unicode 6.0絵文字対応Encode::JP::Emoji 0.60をリリース(Perl) Kawanet Blog II/BIGLOBEウェブリブログ
文字サイズ:       閉じる