Microsoft は OneApp で 1up?

ニュースサイトで見てびっくりしたんだけど、Microsoft が OneApp という新しいアプリケーションプラットフォームを発表したらしい。

マイクロソフト、携帯電話向けアプリケーション実行ソフト「OneApp」を発表 - CNET Japan
http://japan.cnet.com/mobile/story/0,3800078151,20398802,00.htm
Microsoft OneApp
http://www.microsoft.com/oneapp/

CNET の記事を見て「あぁやっぱり」と思ったのは、これでますます Java ME の終焉が近づいたということ。

new Future()

僕の知る限りで、「携帯電話で動くアプリ」として最も古いのは、i モード端末 (試作機) 上で動作するテトリスだ。当時 Java の勉強中だった僕は、雑誌で写真を見てちょっとしたカルチャーショックを受けた。こんな小さい "ケータイ" で自作のアプリが動かせるなんて!
いま検索してみると、試作機の発表が 1999 年、503i シリーズとして製品化されたのが 2001 年のことらしい。10 年前か〜。そりゃーおじちゃん歳を取るわけだわー。

503i最終チェック──生い立ちから「210i」まで - ITmedia
http://plusd.itmedia.co.jp/mobile/0101/24/503i.html

国内各キャリアが Java ME ベースのアプリ実行環境をサポートし、海外でもノキアソニー・エリクソンから Java ME 対応の機種が発売された。Java ME の標準である MIDP/CLDC に対してドコモでは独自の DoJa/CLDC を採用していたけれど、2005 年の JavaOne で * Project (スタープロジェクト) の立ち上げを電撃発表。Sun と共同で新しい仕様を策定すると説明した。

Star Project (NTT DoCoMo-Sun Alliance) - [東京発] Naoki Ishihara's Blog : Crying over spilt java milk (chats)
http://blogs.sun.com/chats/entry/star_project_ntt_docomo_sun1

もちろん既存の MIDP/CLDC も足踏みになるわけではなく、モバイル端末の高度化に追随すべく、様々な追加プロファイルを策定していった。今後も Java ME は進化し続けていく。
……はずだった。

catch (FutureNotFoundException e)

Java ME 関連の動向を追っていた人は、もしかしたらこの頃にはすでに気づいていたかもしれない。進化が止まっていることに。
策定された追加プロファイルのほとんどは、海外のハイエンド向け端末で細々と実装されるだけだった。国内だと、DDI ポケットの一部端末で FileConnection API が使えたくらいしか僕は知らない。土台になる MIDP も、次版の 3.0 が仕様策定中のまま数年を経過。ドコモと Sun の * Project も次元の彼方へ消え去ってしまい、DoJa 後継の Star Profile として名前は残っているものの、機能面ではほとんど変わらず、いま Star Profile の API 仕様を見ても、2005 年の発表当時に彼らが何を目指していたのかはさっぱり読み取れない。
そうこうしているうちに、ハイエンドの携帯電話は次の世代を迎えてしまった。AppleiPhone はネイティブアプリのみをサポートし、Sun からはラブコールを送るものの「Javaは構築する価値はない。もはや誰も使っていない」と追い返されてしまった。続く GoogleAndroidプログラミング言語としては Java を使うものの、APIJava SE の独自サブセット、VM も独自の Dalvik を採用した。Sun が Java SE と Java EE で四苦八苦している間に、Java ME は最新のモバイル機器が要求するレベルから離れすぎてしまったのだと思う。

SunによるJavaiPhoneへの移植で問題に直面 - InfoQ
http://www.infoq.com/jp/news/2008/04/jme_iphone
Java LiteとApache Harmonyを支持するGoogleAndroid SDK Bypasses Java ME*1 - InfoQ
http://www.infoq.com/jp/news/2007/11/android-java

throw e;

Sun が Oracle に買収されることが決まった今、Java ME に今後の進化は期待できないように思う。今回 Microsoft が OneApp を発表したことで、「ローエンドのモバイル機器で細く長く使われ続ける」という道もあやしくなってきた。OneApp について書かれているメモリフットプリントの要件は、MIDP の仕様に書かれているものとほとんど同じだ。もちろん、Java ME の方が作りやすいアプリだっていくらでもあるだろうけど、同じ端末に Java ME と OneApp の両方を載せることは普通しないだろうし。
ちょっと悲しい。Sun のやりようによっては、「最近のモバイル機器にも最適化された新しい Java ME」がありえたんじゃないかと思っているので。iPhone アプリは開発者の負担が重いらしいし、AndroidAPI はあまりきれいじゃない気がするし。もっとも、実際にそうなってない以上、何かしらの事情があったんだろうけど。

*1:InfoQって校正はしない主義なんだろうか?