技術でつくるモバイルの未来

HOME > 技術情報 > J/byteEngineが拓く

J/byteEngineが拓く

Javaアプリ開発の可能性

※こちらのページは「Software Design 2005年12月号」に掲載された内容になります。

ケータイJavaアプリの制約

ケータイJavaアプリが生まれた背景

さて、ここからはケータイアプリの中でも特にケータイJavaについて詳しく見ていきます。 ケータイ向けのJavaVM(Java 仮想マシン)は、当初はKVMと呼ばれていました。KVMのKは、「小型/軽量/キロバイト」といったことを表していると言われており、Javaの基本を守りつつも、携帯電話やPDA に搭載するためにとにかく小さく小さく、という方針で作られたものです。そのため、デスクトップやサーバのJava と比べるとかなり制約の厳しいものになっています。もちろん、その制約を補っても余りある利点があるのでここまで普及してきたのだと言えると思います。しかし、「この機能があれば便利なのに…でも、なければないで何とかなる…」というようなものは削ぎ落とされて、Javaとして本当に最低限の機能だけを持ったものになっています。ケータイJavaが登場してから5年以上も経過しているのですが、Java アプリが普及するにつれてそれらの制約がまたあらためて意識されるようになってきているように思います。

 

CLDCの制約〜クラスローダがない

ケータイJavaアプリの制約

日本のケータイに搭載されているJavaVMはCLDCに準拠しています。CLDCというのはConnected、,Limited Device Configurationの略で、Limited とあることからも分かるように、携帯電話やPDA などリソースの限られたデバイス向けのJava 仕様です。デスクトップ向けのJ2SEと比較すると、削られている部分が多々あるのですが、そのなかでもアプリ開発の際に大きく効いてくるのは、ユーザ定義のクラスローダがサポートされていないという点です。ユーザ定義のクラスローダがサポートされていれば、アプリをダウンロードした後にサーバからあらたなクラスファイルをダウンロードして実行することができます。そうすると、アプリに機能を追加したり、あるいは、アプリの不具合を修正したりといったことをユーザの手を煩わせることなく行うことができます。しかし、現状ではユーザ操作によってアプリを丸ごとバージョンアップしないと機能追加や不具合の修正を行うことはできません。

 

携帯電話の制約〜デバッガの口がない

デスクトップ向けのJ2SE では、Java VM にJVMDI (Java VM Debug Interface )というデバッグのための口がありますので、eclipse などの開発環境やデバッガの上でソースコードレベルのデバッグを行うことが可能です。しかし、ケータイ上のJava にはそのような口が用意されていないので、デバッグのためには原始的な方法に頼らざるを得ません。たとえば、画面にテキストやピクセルを描画してアプリの動きを見る、あるいは、NTTDoCoMoの端末であればSystem.out.println()の出力をアプリ終了後に確認する、といった方法です。 開発者の視点からすると、たとえばPCとケータイとをケーブルをつないでアプリをデバッグできれば便利なことこの上ありません。しかし一方で、ユーザが悪意を持ってアプリを「デバッグ」し、コードやデータを解析することができてしまうようでは、安心してビジネスを行うことができません。結果として現状ではビジネスが優先されているわけですが、一方でアプリの大規模化にともなって開発コストが増加してくると、いずれはもとが取れなくなり、ビジネスにならなくなってしまいますから、そのあたりのジレンマは悩ましいところです。

 

キャリアの制約〜アプリサイズが限られている

アプリのサイズも以前に比べれば大きくなったとはいえ、たとえばユーザがメモリカードを買ってきて挿せばより大きなアプリが使える、というわけではなく、依然としてキャリアさんが決めたサイズに縛られています。したがって、そのサイズのなかでやりくりしないといけない現実は変わっていません。 たとえば、ドラゴンクエストIIは前編と後編の二つのアプリにわかれています。ユーザに魅力あるコンテンツを提供しようとするとサイズが大きくなってしまうため、そうせざるを得なかったということなのでしょう。ゲームにしてもツールにしても、他のコンテンツプロバイダとの競争があることを考えると、現状のサイズはまだまだ制約になっている部分があると言えると思います。


ページの先頭へ