where was "ゆ〜すけの日記" in the old days…
RSS icon Email icon Home icon
  • Emoji2HTML – GmailのIMAPで絵文字 (iPhone)

    iPhoneやXperia、PCならOutlookやThunderbird、Apple Mailなど、HTMLメールを表示できる能力があるすべての端末は、Emoji2HTMLを使う事でオリジナル(携帯キャリア固有)の絵文字を見ることができます。また同時に、iPhoneでGmailプッシュ(Exchange方式)を使った際に、携帯電話からのメールが文字化けする現象を解消します。(追記: 2011年4月25日現在、Gmail側が対処したことにより文字化けしなくなりました。)

    この件に関するお問い合わせは yskhashi@key2.jp または http://twitter.com/yskhashi まで。

    絵文字についての背景

    携帯電話の絵文字は、各キャリアの機種依存文字であり、異なる環境(キャリアやPC)で見れば文字化けが起こることは必然である。そこで各携帯電話キャリアは2005年から2006年にかけて、絵文字の相互変換サービスを始めた。これは各キャリアのメールサーバがメールを送信する際に、それが他社キャリアの場合には、他社の該当する絵文字コードに変換して送出するというものである。この手法は5年経った現在も使われているが、いったいなんの絵文字に置き換わったのか、また、相手から来たメールの絵文字がもともとなんだったのかを利用者は知らない(相互変換表が頭にあっても、多:1の変換が行われている絵文字も多いので完全に特定は不可能)。

    2008年にGoogleは、Gmailのブラウザ上のインターフェースにおいて、docomo、KDDI、Softbank、Willcom、Disneyにおいて、絵文字送受信を可能とした。しかも送られてきた絵文字のイメージは、各キャリア毎の絵柄である。これは完全に1:1での変換であり、しかもまさにそのイメージが表れているということで、送信側とまったく同じ絵文字が見えているという安心感がある。しかしながら、これはWebという表現力の高さを使って実現したものであり、旧来からのメールプロトコル(POP3/IMAP)を使用している場合、もともとのオリジナルデータで文字化けすることに変わりはなかった。この点もGoogleは知ってのことか、その後Unicodeに絵文字を収録させることを提案した。(追記: Unicodeコンソーシアムは2010年10月11日、Unicode Version 6.0を策定した。)

    絵文字のUnicode収録は前途多難であり(詳しくは「絵文字が開いてしまった「パンドラの箱」第1回–日本の携帯電話キャリアが選んだ道:コラム – CNET Japan」参照)、実装となるとまだまだ時間がかかるだろう。そんな中、iPhoneなどに代表するスマートフォンの登場で、携帯電話メールとPCメールが一気に近づいた。それまでのスマートフォンは一般的にビジネスユースとされており、「PCと同じだから、絵文字は使えなくて当然」という考えの人が大半だった。しかし、iPhoneはそういうわけにはいかない。その後のファームウェアのアップデートで、SMSとi.softbank.jpの場合はいわゆる絵文字相互変換の対象とはなったが、前述の「もともとの絵文字がなんだったのか」という問題には対応できていない。

    こういった問題に対応するためには、やはりメールを標準的な環境で見れるようにする処置が必要なのではないかと思った。少なくとも、受信に関しては、GmailのWebインターフェースから見れるくらいのものにしたいというのが今回の試みである。

    概要図

    1. 各携帯電話キャリアからのメールはGmail宛のアドレスに送ってもらいます。
    2. メールをEmoji2HTMLというプログラムで処理をさせるため、転送させます。
    3. Emoji2HTMLはメールを適切に再構築し、転送してきたGmailアドレスに返します。
    4. 再構築されたメールはiPhoneやPCなどで文字化けせずに見る事ができます。

    ※注意※ 一見Gmailじゃなくてもできそうですが、docomoとSoftbankは一般のメールサーバに対してメールを送出する際、絵文字コードを一律で〓(U+3013)に置き換えてしまい復元ができません。また、文字コードが変更されるので文字化けが発生します。Gmailは絵文字をサポートするために特別扱いとなっています。

    実装(ダウンロード)

    Perlによる実装です。Encode::JP::Emoji Encode::JP::Mobile などを使わせてもらっています。自分で設定させる場合は処理させるサーバが必要となるため、ある程度のUNIX、perl、MTA、procmailなどの知識が必要です。
    単純に使ってみたい場合は、この後の「設定方法」をそのまま行えばできます。

    • Emoji2HTML (1.1.5) (ソースコード)
      ソースコード内の変数($path_to_emoji)を絵文字画像のディレクトリの絶対パスに書き換えます。直下に docomo_ne_jp, ezweb_ne_jp, softbank_ne_jp のディレクトリがあるように配置します。
    • 絵文字画像リンクURL
      絵文字の画像ファイルへのリンクです。ダウンロード支援ソフト等で全てダウンロードしてください。
    機能
    • 各キャリアの絵文字をインライン画像で表現 (デコメや添付ファイル付きメールもサポート)
    • 件名の最適化(‘Re: Re: ‘などの連続の削除、docomoの’Re>’や’Re2: ‘などを’Re: ‘に修正)
    • 件名の絵文字はSoftbankの絵文字コードに置き換え(for iPhone)
    • Gmailプッシュ(Exchange方式)で携帯電話からのメールが文字化けするのを防止(for iPhone)
      (追記: 2011年4月25日現在、Gmail側が対処したことにより文字化けしなくなりました)
    • auのデコメ画像が添付ファイルと見なされてしまうのを防止(for iPhone)
    バージョン履歴
    • 1.0(2010/04/05)
      • 最初のリリース
    • 1.0.1 (2010/04/09)
      • 件名の ‘RE:’ も返信と見なすよう調整
    • 1.0.2(2010/04/22)
      • docomoで添付ファイル付きのメールを正しく処理できなかった問題を修正
    • 1.1(2010/05/05)
      • インライン絵文字をサポート
      • 件名が’Re: ‘だけの場合は削除
      • X-Orig-Subjectヘッダに元々の件名をそのまま追加
      • X-Emoji2htmlヘッダにバージョン情報を追加
    • 1.1.1(2010/05/26)
      • auのいくつかの絵文字(64種)においてSoftbankの絵文字が表示されていた問題を修正(絵文字画像リンクURLも更新
    • 1.1.2(2010/07/15)
      • @直前に”-“があるアドレスからのメールを返送しなかった問題に対処
    • 1.1.3(2011/05/05)
      • docomo SPモードから送られるHTMLイメージを含むテキストが壊れる問題を修正
      • 件名の ‘Re2:’ と ‘Re^2:’ も返信と見なすよう調整
    • 1.1.4(2011/06/26)
      • Softbankから送られる、イメージファイルがないHTMLメールが壊れる問題を修正
      • 件名の ‘Re :’も返信と見なすよう調整
    • 1.1.5(2011/07/03)
      • Softbankから送られる、添付ファイルがあるテキストメールが正常に変換できない問題を修正
      • iPhoneアプリ「decoMailer」で一部のインラインイメージがロードされない問題を回避
      • Softbankから送られてくるShift_JISエンコードの日本語添付ファイル名をURLエンコードするサポートを削除

    設定方法

    転送先のメールアドレスを登録します。「メール転送とPOP/IMAP」タブの「新しいメールアドレスを追加」をクリックします。

    メールアドレスを入力します。下記のメールアドレスは自由に使用してください。

    ※画像中のメールアドレスについて

    • このサーバで管理しているもので、誰でも使用できるよう公開しています。
    • サーバのメンテナンス・輪番停電時などには処理が遅延する可能性があります。
    • 絵文字変換処理が正常に完了した場合、サーバにメールのコピーは残りません。

    許可を確認するための確認コードが送信されます。上記のメールアドレスへの許可は自動的に行われます。

    しばらくしたら許可されるので、いったんログアウトして、再度ログインし直してください。
    (2010/10/31追記: 許可されない場合は、Gmailの言語を日本語にして、[設定] – [全般] – [送信メールのエンコード]をデフォルトにして、確認コードを送ってみてください。)

    許可されたら下記のようにメールアドレスが選べるようになります。ここでは携帯電話からだけのメールを転送したいため、「フィルタを作成」をクリックします。(※全てのメールを転送する事はやめてください。

    携帯電話からのメールを対象とするため、下記のように入力してください。

    From: @docomo.ne.jp OR @ezweb.ne.jp OR @softbank.ne.jp OR @?.vodafone.ne.jp OR @disney.ne.jp
    含めないキーワード: Emoji2HTML-MailFilter

    「次のアドレスに転送する」にチェックをつけて、先ほどの転送先メールアドレスを選びます。このメールは必要ないので「削除する」を選びます。削除すると言ってもゴミ箱に移動するだけなので30日間は残ります。

    次に転送先から再構築されて戻ってきたメールに対するフィルタです。

    再構築されて戻ってきたメールには、Emoji2HTML-MailFilterという文字列が入っています(この文字列はテキストパートに含まれていますが、普通のメーラーはHTMLパートを優先するので目に見える事はないと思います。注意点は、本当にこういう文字列がメール本文中にあった場合は転送されないということです。)。

    From: @docomo.ne.jp OR @ezweb.ne.jp OR @softbank.ne.jp OR @?.vodafone.ne.jp OR @disney.ne.jp
    キーワード: Emoji2HTML-MailFilter

    ラベルをつけましょう。「迷惑メールにしない」にもチェックしておきます。

    これは自分の分かりやすい名前にします。ラベルはIMAPで接続したときに、そういう名前のフォルダとなります。

    これでできあがりです。

    Gmail上から見ても、いつもと同じように見えます。iPhoneからIMAPで接続してみましょう!