当方の海外購入版 SIMフリー HTC DesireではROOT化とMMSアプリの書き換えで Softbankが公式に非対応としている S!メール に対応することができました。
公式にはSoftbankは近々アップデートで対応するといっているのですが、果たしてどういった対応をしてくるのでしょうか。対処しなければならない問題箇所を予測してみました。
MMSの送受信でDocomoのユーザーの被害(?)が少ないのは多くはこれによっていたと思われます。SoftbankのMMSセンターを通じて送られるMMSデータの中にSoftbank(Vodafone?)が独自に拡張したプロトコルが含まれており、これを正しく扱えなかった Android OS のライブラリが例外を起こして落ちるために受信に失敗していました。解決法には、Android OS側のプログラムをそういったイレギュラープロトコルを正しく無視するか取り扱うように補強する方法と、SoftbankのMMSセンター側で、Androidに対しては拡張されたデータ部分を送信しないようにするという道があります。しかしながら、MMSセンターは、アクセスの拒否の判断を User-Agent を使って行っているようですが、User-Agentによって送信するデータを変えるというのははたして簡単なのか。すでに、User-Agentの偽装は多くの方ができるようになっており、将来の問題追跡の煩雑化を考えると技術者目線ではやりたくない方法です。もっとも、Vodafoneなんちゃらという標準を逸脱するヘッダーを拡張仕様として乗っけた時点で技術側負けだったのだと思いますが。
上記のSoftbank固有のプロトコル意外にも、MMSのプロトコルの取り扱いに関しては framework.jar という共有のライブラリに格納された部分にマルチパートのメールを正常に扱えないなどの問題を含んでおり、これはいずれにしてもアップデートして解消しなければなりません。Mms.apkというパッケージ自身もシステム上でロックされて上書きできないようにされているわけですから、framework.jar という共有ライブラリの更新はさらに大変そうです。結局はROMの更新しかないと思われるわけです。
2010年7月現在ソフトバンクからは単独アプリとしてマーケットからMMSアプリを提供するとアナウンスされています。Mms.apkを上書きインストールする形になるのか、別アプリとしてインストるするかのいずれかになるのでしょうか…。もっともMms.apkをrootを取らなくても上書きインストールすべがあるのなら多くの人がRootを取ったり、ADBを使用したりこんなに苦労しなくても済むのです。
もともとAndroidに含まれている Mms.apk は /system/app というディレクトリに格納されており、一方で通常後からインストールされるアプリは /data/app というディレクトリに配置されます。/system/appディレクトリは文字通りシステムによって保護されており、ここに入っているアプリは「root」を取らずして削除したり、上書きしたりすることができません。
AndroidのアプリはIDによって識別されています。(たとえば mms.apk は com.android.mms など)このIDを違うものを指定することで、原理的には2つ目のMms.apkをインストールすることができます。そこで2つ目のMms.apkを使用するようにすればいいとなるかといえばそう簡単ではありません。Mms.apkアプリはメッセージ関連のイベントを処理するためのバックグランドプロセスとしても登録されています。また、アプリ間の連携のため電話番号やEメールアドレスをキャッチするための登録もされています。これらを別のアプリから横取りすることはある意味「安全」な方法でやるのは無理です。(と思います)
そういう点で「別アプリ」提供の場合、Mms.apkの改良や延長という対応ではなく、iPhone が i.softbank.ne.jp でやったようなSMS/MMSとは完全に別体系のアプリとなるのではないかと思います。
いずれにしても、今後の展開が楽しみです。