Emf(Servlet絵文字フィルター)

Emfは諸事情により、2009/08/10をもちましてプロジェクトを終了させていただくことになりました。ご利用ありがとうございました。

Emfは携帯からの絵文字入出力を簡略化する Servlet Filter です。概要は以下の通りです。

  • 各キャリア端末から入力された絵文字をUnicodeの私用領域(Private Use Area)に格納します。Servletでは絵文字を意識することなく request.getParameter で取得可能になります。
  • 私用領域に絵文字を含んだレスポンスを各キャリア毎に変換して出力します。デフォルトでは他キャリアの絵文字は類似絵文字への変換が行われ、類似絵文字が存在しない場合にはimgタグを利用して対応絵文字のイメージを表示します。
  • PCからのアクセスではデフォルトでは全てimgタグに変換されます。
  • EZweb拡張絵文字やSoftBank3Gからの絵文字入力にも対応しています。
  • 絵文字を含んだメール送信及び受信(EZwebのみ)のための静的メソッドが提供されます。

Javaによる絵文字の扱い

JavaのShift_JISコンバーターでは私用領域(0xF040 ~ 0xF9FF)を扱うことはできません。そのため、Servletで絵文字を扱うためには、Windows-31Jを利用する必要があります。DoCoMoの利用している絵文字領域ではWindows-31Jを使用するだけで(多少問題はありますが)絵文字の入出力が可能になります。従って、ターゲットがDoCoMoだけの場合にEmfを使用する利点はあまり無いかも知れません。

EZwebの絵文字コードをWindows-31Jコンバーターで変換を行うと、一部の絵文字がEZFactory絵文字一覧と同じように変換できます。しかし、このUnicodeは EZアプリで使用されるコードであり、EZwebが使用している絵文字のUnicodeとは異なります。また、TypeD追加分については変換できない上、SoftBankの絵文字コードと同じ領域にマッピングされてしまいます。

SoftBankの絵文字はShift_JISの場合 0x1b 0x47 0x21 0x0f のようなエスケープシーケンスを用いた形式になります。これをWindows-31JコンバーターでSoftBankのUnicode絵文字に変換することはできません。また、いくつかの3G端末では絵文字をエスケープシーケンスを用いた方法ではなく、Shift_JIS私用領域(一部私用領域外)に割り付けて送信します。これらもWindows-31Jでは変換することはできません。更に、一部の3G端末はUTF-8でなければ全ての絵文字が削除される問題があります。

Emfでは上記のような動作を開発者が意識する必要を無くし、各キャリア絵文字が適切にUnicode私用領域に割り当てられたリクエストパラメーターを取得できるようになります。

絵文字私用領域

Unicode私用領域(U+E000~U+F8FF)の範囲において、SoftBank(U+E001~U+E53e)、DoCoMo(U+E63E~U+E757)、EZweb(U+EC40~U+F0FC)が割り当てられます。(注意:各範囲には未使用領域があります)。これらは各キャリアが採用しているコードですので、携帯向けにUTF-8のコンテンツを配信する場合、入出力に直接このコードが利用できます。

キャラクタセットの切り替え

前述の通り、SoftBank3G端末ではUTF-8でなければ絵文字を送信できない端末が存在します。その他の端末ではSfhit_JIS以外に対応しないものもあります。Emfを利用するとこれらを意識することなく自動的にキャラクタセットを切り替えます。

Emfを利用したWebアプリケーション

EmfはServlet Filterとして実装されているため、状況によっては既存Webアプリケーションのコードにほとんど修正を加えず携帯絵文字に対応可能となる場合があります。また、Servlet上に実装されているフレームワーク(Strutsなど)を利用している場合も、Filterによる処理を意識する必要は無いかも知れません。

Webアプリケーションのデータストア(データベースやファイル)にUnicodeを採用していれば、入力された文字列を格納したり読み出しする場合に絵文字が含まれていることを意識する必要が無くなります。

ライセンス

Emfは非営利目的であれば無料でご利用いただけます。再配布は禁止とさせていただきます。

免責事項

このソフトウェアの利用または利用不可によって生じた全ての損害に対して当方は一切の責任を負わないものとさせていただきます。