2008年3月03日の投稿

2008-03-03
晴れ

Ktai Style に携帯絵文字の入力機能を付ける

ゆりこ による 03:43:53 の投稿
カテゴリー: WordPressハック
タグ: ,

この土日は、寝過して日帰り旅行ができなかったので、Ktai Style に携帯絵文字の入力機能を実装すべくコーディングしていました (というか、それで夜更しして寝過したような;-)

携帯の絵文字入力機能は、技術的には絵文字の文字コードを探索して、Ktai Style 用の絵文字コード (<img localsrc="XXXX" />) に置き換えるだけで、そんなに難しいものではありません。大変なのは、各社の絵文字コードをスクリプトに入れ込む作業です。EZweb が 641 文字、SoftBank が 485 文字 (Vodafone 時代の文字を含む)、i-mode が 252 文字、WILLCOM が i-mode 絵文字と独自絵文字 162 文字 (計 414文字)、イー・モバイルが、i-mode 絵文字と独自絵文字 26 文字 (計 278 文字) あります。合計で 1566 文字になります。最低でも 1566 行必要なわけです。

しかも、他社絵文字への変換テーブルがありますから、1566 文字×4キャリアで6264行の変換コードが必要です (イー・モバイルはドコモ用スクリプトを流用可能)。各社の絵文字番号と Shift_JIS コードを関連させるスクリプトは比較的簡単に作れました (i-mode, SoftBank は絵文字番号と Shift_JIS コードがほぼ連続に対応しているため)。しかし、他社絵文字への変換テーブルが大変です。1文字1文字手作業で対応づけないといけませんから、膨大な作業になります。

そこで、キャリアごとの絵文字番号で保存するのではなく、できるだけ EZweb の絵文字に正規化させることを検討しました。数字・トランプマーク・お天気など、どのキャリアにもある絵文字は、EZweb の絵文字番号を使うわけです。Ktai Style のテンプレートでは EZweb の絵文字番号を使っているので、ごく自然な実装に思えます。この方法だと、絵文字番号と Shift_JIS コードの比較表さえ作れば、他社絵文字への変換テーブルが不要になるため、コーディングが楽になります。その電話会社しかない独自絵文字だけ、変換テーブルを作ればいいのです。

しかし、WILLCOM 絵文字で問題が出ました。WILLCOM は、ドコモ絵文字が丸々使える上に、独自絵文字も使えます。しかも、WILLCOM 独自絵文字にも、数字・トランプマーク・お天気アイコンがあります。そう、正規化できないのです!! ドコモ絵文字の「晴れ」と、WILLCOM 絵文字の「晴れ」を同じ「44番」としてしまっては、それぞれの使い分けできず、不便かつ動作が分かりにくくなります。

さらに、Shift_JIS コードを読み取る時点で正規化するということは、その変換テーブルにバグがあったとき、間違った変換のままデータベースに記録されるという問題も出ます。各社の絵文字番号と Shift_JIS コードの対応は、比較的連続しているのでバグは出にくいですが、他社絵文字の変換テーブルは数値が非連続なので、ミスが出やすくなります。

結局、最初に実装通り、各社の絵文字番号をそのまま記録して、出力時に閲覧端末に応じて絵文字変換させることにしました。コードは大きくなりますが、検証はこちらの方がやりやすいため、品質も高くなるでしょう。

とはいえ、土日を使っても、i-mode, WILLCOM, イー・モバイル と EZweb の対応を書くだけで終ってしまいました (i-mode 表示用スクリプト)。残りはソフトバンク絵文字ですが、他4社と相違点が多いためなかなか手強く、時間がかかりそうです。

なお、巷には携帯絵文字変換ライブラリーの類いは転がっているのですが、Ktai Style という GPL プログラムに組み込めないライセンスだったり、多機能すぎたりするので、スクラッチから書いています。