KDDI が Java アプリを再びサポート

KDDIは10月10日、来春以降に発表するau携帯電話に、Javaで作成されたアプリケーションの再生機能である「オープンアプリプレイヤー」を搭載すると発表した。

ITmedia Mobile - au端末でJavaアプリが動く――来春発表の端末から

いまだに W11K を使っている僕にとっては、かなり「おおっ! ついに!?」と思わせられるニュースだ。


KDDIアプリックスから、それぞれプレスリリースが出ている。

KDDI - プレスリリース - au携帯電話においてJava™で作成されたオープンアプリがご利用可能に
http://www.kddi.com/corporate/news_release/2006/1010/index.html
アプリックス - プレスリリース - KDDIが「オープンアプリプレイヤー」として、JBlend™の採用を決定
http://www.aplix.co.jp/jp/release/2006/pr061010.html

仕様も公開されている。ただし、実際に対応端末が出るのは 2007 年春ということもあり、確定したものではないようだ。

EZfactory - オープンアプリ (Java™)
http://www.au.kddi.com/ezfactory/tec/spec/openappli.html

どんな仕様?

ITmedia の記事にもある通り、KDDI では以前にも "ezplus" あるいは "ez アプリ (Java)" という名称で、Java アプリ対応端末を出していた。そこで、当時の最新仕様である "ez アプリ (Java) Phase 3" を、今回発表されたオープンアプリの仕様と並べてみる。

項目 オープンアプリ ez アプリ Phase 3
標準 API MIDP 2.0+CLDC 1.1 MIDP 1.0+CLDC 1.0
KDDI 独自 API なし あり (KDDI Profile)
配布形式 jad+jar kjx
jarサイズ上限 300KB 150KB
レコードストア容量 32KB 10KB
拡張領域 なし 200KB
通信制 プレイヤー全体で 3MB/日 アプリごとに 3MB/日

KDDI 独自仕様だった部分はバッサリ削られている。というか、JBlend を買ってきて端末に入れただけ、という感じだ。JBlend は各種の J2ME 拡張 API もサポートしているし、ez アプリ (Java) 対応端末でも JBlend に KDDI プロファイルを追加して使っていたりした。しかし、今回発表された仕様では「その他の拡張APIには対応していません」と明記されており、もうとにかく手をかけずにやってみました、という印象が強い。仕様としてもスタンスとしても、ez アプリ時代のものとは直接の関係はない、と思った方がよさそうだ。
とはいうものの、「auJava アプリ復活!」という見方もされるだろうから、以前の仕様といくつか比べてみたい。

削除された API

MIDP+CLDC の機能不足を補っていた KDDI Profile が、オープンアプリにはない。ここに含まれていた主な機能は、下記の通り。

  • ハードウェアの制御 (バイブレーション、バックライト、LED、カメラ、バーコード、位置情報など)
  • 標準搭載されているソフトとの連携 (ブラウザ起動、メーラ起動、音声通話発信など)
  • 追加のグラフィック機能 (2D スプライト、3D ポリゴン、JPEG エンコードなど)
  • 追加のサウンド機能 (SMAF Phrase 再生、SMAF Humanoid Voice 再生など)
  • 端末内データへのアクセス (アドレス帳、データフォルダなど。ただし公式メニュー内のアプリのみ)

オープンアプリでは、素の MIDP 2.0+CLDC 1.0 のみとなるため、上記の機能のほとんどは使えないことになる。
ただし、ブラウザ起動や 2D スプライトなどについては、MIDP が 1.0 から 2.0 へバージョンアップした際に同等の機能が追加されているので、それほど悲観する必要はないかもしれない。

変更された配布形態

ez アプリでは、jad ファイルと jar ファイルを結合し、kjx という専用の形式にまとめる必要があった。また、ダウンロード時の挙動も独特で、最終版の Phase 3.0 を除き、CGI を設置しないとアプリの配布ができなかった。これに対してオープンアプリでは、一般の MIDP アプリ同様に jad と jar をセットで置いておけばいいようになっている。
ただし、ダウンロードページを作るときには注意が必要で、単純に jad ファイルへリンクを張るだけでは処理されない。正しい形式はこんな感じ。

<a href="device:jam?http://example.com/example.jad">ダウンロード</a>

したがって、海外や WILLCOM の端末用にアプリを配布しているサイトがあっても、オープンアプリプレイヤーでダウンロードすることはできない。
ちなみに、ez アプリの Phase 3.0 でも同様にリンクだけでダウンロードが行えたが、kjx がサポートされなくなったことと、リンクの形式も微妙に変更されているため、当時のアプリ配布サイトを見つけても、やはりダウンロードできない。

変更されたサイズ制限

jar のファイルサイズ上限は 300KB になっており、「勝手アプリ」の水準としては十分と言っていい。むしろ、画像などのデータを初回にダウンロードする必要がなくなり、小ぶりなゲームなどでは ez アプリよりも作りやすくなっている。
ただし、レコードストアはわずか 22KB の増加にとどまり、ez アプリ Phase 3.0 で導入されていた 200KB の「拡張領域」はなくなってしまった。これが何を意味するかと言うと、実行時に読み書きするデータ量が多いアプリは、実現が難しくなる。例えば、フルブラウザ系のアプリでキャッシュを確保しづらくなる。また、ネット対応の RPG では「必要なエリアのデータのみダウンロードする」という手法で広大なマップを表現することが多いが、32KB のレコードストアだけではこれも無理。

のしかかる通信制

ez アプリ Phase 3.0 端末の W11KW11H では、アプリが 1 日に通信できるのは 3MB までという制限があった。これは Java だけではなく、BREW にも同様の制限がある。そして、オープンアプリを実行するオープンアプリプレイヤーは、BREW 上のアプリケーションである。したがって、プレイヤー上にインストールしたアプリ全体で 1 日に 3MB までしか通信できない。jad や jar をダウンロードする際の通信も、プレイヤーに課せられた 3MB 制限の中で行われる。
正直に言って、これはかなり厳しい。ゲームのネットランキングくらいなら問題ないだろうが、ちょっと通信料の多いアプリを作ればすぐにひっかかる可能性がある。前項で挙げたレコードストアの少なさと合わせて考えると、フルブラウザ系のアプリを意図的に避けてるんじゃないかと思えるくらいだ。
ちなみに、1 回の通信で取得できるデータサイズはヘッダも含めて 32KB まで。ez アプリの仕様で保証されていたのは 9KB までなので、仕様上は増えている。ただし、Phase 3.0 の W11KW11H では 97280 バイト程度まで OK だったらしいので、実効性能としては低下している。

KDDI の意図は?

ITmedia の記事によると、オープンアプリの意図はゲームコンテンツの普及にあるという。実際に仕様を見ても、個人製作アプリの主なターゲットとなる小規模なゲームアプリを作るのには十分だろうと思える。アプリックスBREW 版の JBlend を出したのが 2005 年の 11 月。MNP の様子を見ながら、最低限の費用で「au でも勝手アプリできますよ」と言えるようにした、という意味では、うまいなぁと思う。

ケータイ Watch - アプリックス、「JBlend」をBREW対応に
http://k-tai.impress.co.jp/cda/article/news_toppage/26356.html
アプリックス - プレスリリース - アプリックスクアルコムBREW®ソリューションに対応した高機能Java™テクノロジーを発表
http://www.aplix.co.jp/jp/release/2005/pr051101.html

一方で、これまで確立してきた BREW ビジネスを破壊しないように、という部分にも注意が払われている。お金の取れる大規模なアプリを作るんだったら BREW でやってね、というわけだ。いかにも au らしい。
W11KJava アプリに期待して au に加入し、今でも実際に使っている僕としては、KDDIオープンアプリに本腰入れてくれたらいいな、という願いがある。個人的には、携帯電話は社会的インフラのひとつなのだから、勝手アプリの制限はもっと緩めるべきだと思う。音声通話で「有料の番組は無制限に聞けますが、家族や友達との通話は 1 日 15 分までです」とか普通言わないじゃないですか。
ただ、今回の仕様を見るとオープンアプリプレイヤーのバージョンは 1.0 らしいので、今後に期待したい。「2.0 の新機能は VGA 対応のみです」ってのは、なしで。

(この記事の更新履歴)

2006-10-24: WILLCOMWX310SA が JBlend を使っていると書いていましたが、WX310SA で使われているのは ACCESS の JV-Lite2 でした。該当箇所を修正しました。コメント欄でご指摘くださった hoge さん、ありがとうございました。あと、1 ヶ所だけ「ez プラス」って書いてたところがあったので、「ez アプリ」に直しました。