機種によっても差

 NTTドコモの場合,携帯電話は機器メーカーが開発し,販売する。チップセットなどのハードウエア仕様は機種ごとに異なる。表示できる色数やフォント・サイズ,画面の大きさなども当然違うので,関係するドライバも機種に依存したものを使うことになる。Java仮想マシンであるKVM(K Virtual Machine)の実装もメーカーに任されており,同じJavaの仕様に準拠したKVMであっても,解釈の違いにより動作が異なる場合がある。

 例えば,Javaアプリケーションをサーバーからダウンロードする際のHTMLの記述やJAM(Javaアプリケーション・マネージャ)ファイルの拡張子が,「仕様通りに指定されていなくても動作する機種がある」(コネクト代表取締役社長の加来 徹也氏)という。また,「リストボックスを選択した際の動きが,ほかの機種と異なるものもある」(スカイアーツ代表取締役社長の米川 英樹氏)。

 処理速度にもばらつきがある。スピードが影響するゲームなどのアプリケーションでは,これを考慮した実装をする必要がある。

 このような仕様の範疇外の動きは,アプリケーション内の処理でうまく吸収するか,もしくは機種ごとにチューニングを施したアプリケーションを用意する必要がある。

 これに対し,J-フォンとKDDIの2社は,機種ごとの互換性がないという問題は発生しない。両社ともKVMとしてアプリックス(本社:東京)の「microJBlend」を使うため,仕様解釈の違いや処理速度の差は生じない。それぞれのサービス向けのJavaアプリケーションであれば,機種に依存せず,ほぼ同じ速度で動作する。

10Kバイトも工夫次第

図2●サーバーに実装していたアプリケーションを携帯電話に実装し,通信回数やデータ量を減らす
 
写真1●部品を回転する処理をクライアントで行う
 
図3●iアプリはセキュリティを考慮して機能を制限
Javaアプリケーションは携帯電話の機能にアクセスできない。通信できる相手も制限する。玉石混交のiアプリへの対策である
 Javaアプリケーションのサイズには,iアプリで最大10Kバイト,J-フォンで最大30Kバイトという制限がある。特に,iアプリの10Kバイトという制限は開発者にとっては厳しい。ただ,機能をサーバーと携帯電話にうまく配置することで,実用的なアプリケーションを開発することは可能である(図2[拡大表示])。J-フォンでは30Kバイトと,3倍のサイズのアプリケーションを利用できるが,画像を増やしたり,少し機能を追加すればすぐ一杯になってしまう容量。アプリケーションのサイズを減らす工夫は,やはり必要である。

 ケイ・ラボラトリー(本社:東京)は,ゼンリンのiモード向け地図アプリケーションを,独自の描画エンジンを組み込んで開発した。パソコンのブラウザで利用する場合は,操作するたびに地図の画像ファイルをダウンロードする必要があった。携帯電話では,地図を表示するのに必要な座標の数値だけをサーバーから受け取り,その座標を使って端末側で地図を描画するようにした。地図の拡大や検索なども数値をやり取りするだけで済む。写真1のようなアニメーションの場合でも,パーツと動きのデータだけをサーバーから取得し,携帯電話側の描画エンジンがアニメーションとして表示する。描画エンジンは3Kバイト程度で実装できる。

セキュリティを考慮

 セキュリティを考慮するために,iアプリには機能制限が設けてある。通信できるサーバーを1台に制限しているのである。また,iアプリから携帯電話の電話機能やメール機能などを呼び出すことはできない(図3[拡大表示])。

 iアプリを実行するまでの流れは次のようになる。まず,WebサーバーからADF(アプリケーション記述ファイル)をダウンロードする。ADFには,Javaアプリケーションのサイズや,ダウンロード先のURLなどが記述してある。その内容を確認し,iアプリ本体であるJARファイルをダウンロードして実行する。iアプリは,このADFに記述してあるダウンロード先URLとしか通信できない。サーバーはIPアドレスではなくURLで指定する。

 iアプリは,携帯電話の機能からは隔離されている。これは「サンド・ボックス」とよばれるJavaの仕組みである。iアプリはKVM上で動作するが,他の機能へのアクセス手段はない。サンド・ボックスによってiアプリに不具合が生じた場合でも被害を最小限に抑えることが可能になる。

 一方,J-フォン・グループのJavaアプリケーションは,携帯電話のさまざまな機能と連携できる。メールの受信や電話の着信から,バイブレータの制御,バッテリ残量の確認といったことまで可能である(電話の発信,メールの送信は次仕様で対応する計画)。このため,アプリケーションの幅は広がるが,安全なアプリケーションしか使わないといった運用面での工夫が必要になる。