2009-03-28
■ [misc] ケータイの絵文字がどのように変換されるかを巨大な図にまとめてみた
ケータイの絵文字は他社の端末に送信する際に、「似ている絵文字」に変換されるため、例えば au端末で「熱がある」という表情の絵文字を含んだメールを作り、それをSoftBank→Docomoと順に転送していくと、 「熱がある」だったはずの絵文字が巡り巡って「ほっとした顔」になってしまうらしい。
上記の例は「適当に拾った例」とのことだけれど、せっかくなら全部まとめて見てみたいと思わないだろうか?
よろしい、ならばGraphvizだ。
注意点としては:
- 枠の色は、赤がDocomo、グレーがSoftBank、オレンジがau、緑がE-MOBILE、青がWILLCOM。
- 画像もこちらのページのものをそのままお借りした。ありがとうございます。
- pngなのでアニメーションgifは動かない。
- Graphvizで日本語(というかUTF-8の一部の文字)が通らなかったので、「[ペン]」など文字列に落ちるものは数値に変換してある。
Graphvizは「AからB, BからC」みたいな辺の情報を書いたファイル(*.dot)を読み込み、そのグラフ構造を描いた画像を出力するソフトウェアだ。 dotファイルはただのテキストなので、今回はこちらのページの変換表をRubyでスクレイピングし、 dotファイルを作った。
ふつう、Graphvizでこういうノードが切れ切れになっているものを変換しようとすると、小さなグラフの全てを横に並べようとして ものすごい横長になり、「width too big」というエラーで落ちてしまう。 だが調べたところ、-Kでレイアウトエンジンを切り替えられるらしい。 今回は「neato」というエンジンを使ってみると上図のようにうまく行った。
一応、ソース。
extract.rbでhtmlをdata/*.csvに→render.rbでdotファイル出力→ dot -Kneato -Tpng x.dot -o x.png という感じ。
(4/16追記:たんぶられてるのを見て、縮小したものを載せてみた。その発想がなかった自分に反省。 こうして見ると色といい形といい、なんとなく遊園地っぽい。)