はじめに
NTT ドコモは 903i シリーズを11機種も発表しました。この 903i シリーズに搭載される Java によるアプリ仕様 DoJa-5.0 の仕様も公開されたので、従来仕様からの拡張を中心に見ていきたいと思います。
iアプリのサイズ
既に大きくアナウンスされていることからよく知られているとは思いますが、iアプリのサイズが従来の JAR ファイル 100KB + ScratchPad 400KB から、JAR ファイルと ScratchaPad の合計で 1024KB に拡大されました。サイズの拡大は表現力や自由度の大幅な向上を約束するものであり、従来以上に綺麗だったり複雑だったり、機能性の高いiアプリが提供される下地となるでしょう。
主な追加機能
もちろん、サイズ以外の強化も行われています。ここでは主な追加機能について説明したいと思います。
トルカ連携が強化され、拡張されたトルカに対応した機種では、トルカによって供給された HTML からiアプリのダウンロードを開始することができるようになりました。
3Dポリゴンモデルの衝突判定を従来以上に高速で行うためのパッケージ com.nttdocomo.ui.graphics3d.collision
が追加されました。
従来の java.lang.System
クラスによる、1つの指針としてのヒープメモリ取得ではなく、分断を意識した上で実際に使用できるヒープメモリの取得が行えるようになりました。
com.nttdocomo.ui.Image
オブジェクトのメモリ管理を柔軟に行えるようになりました。オリジナルデータ領域と内部データ領域という2つのデータ領域を定義しており、オリジナルデータ領域には JPEG や GIF などのイメージの元となるオリジナルデータを格納し、内部データ領域にはオリジナルデータから得た展開済みのデータを格納します。これらを個別に開放できるようになったため、アプリケーションの方針に沿ってメモリを効率的に管理することができます。また、Image
オブジェクトに対して一括した use
の実行が可能になりました。
従来の抽象的な SIZE_TINY
、 SIZE_SMALL
、 SIZE_MEDIUM
、 SIZE_LARGE
によるフォントサイズの管理以外に、直接ドットでサイズを指定して com.nttdocomo.ui.Font
オブジェクトを得ることができるようになりました。これに伴ってサポートするドット単位でのサイズを取得するメソッドも追加されています。
低レベルイベントにメーカー独自のイベントタイプを定義できるようになりました。これらの新しいイベントはオプションAPIであり、com.nttdocomo.opt.ui.Display2
クラスにイベントタイプの定義が行われています。
イメージとして従来使用可能であったフォーマット JPEG および GIF にくわえて BMP を使用可能になりました。使用可能な BMP ファイルは、無圧縮でビット長が 1
、 4
、 8
、 16
、 24
のいずれかです。なお、ビット長が 16
の場合に限り、 BI_BITFIELDS
形式の BMP が使用可能です(なお、公式ドキュメント「iアプリコンテンツ開発ガイド for DoJa-5.x/5.x LE 〜 詳細編 〜 第 1.0 版 平成 18 年 10 月 12日」では BI_BITSFIELD
となっていますが、私がここに書いたように BI_BITFIELDS
が正しい綴りです)。
com.nttdocomo.ui.AudioPresenter
クラスにループ演奏の指定を行うメソッドとループに伴う演奏イベントが追加されました。また、iモーションのオーディオトラックを演奏するためのプレゼンタに関するメソッドと曲全体の演奏時間を取得するためのメソッドも追加されました。ただし、この3つはオプションであり、機種によっては提供されない可能性もあります。
com.nttdocomo.ui.VisualPresenter
クラスに、ネイティブプレイヤーによる再生を行う際に、全画面を使用するためのプレイヤーモードが追加されました。この機能の提供はオプションです。
com.nttdocomo.device.CodeReader
クラスにフォーカスモードを取得するためのメソッドが追加されました。この機能の提供はオプションです。
ICアプリ以外でもiアプリメニューで表示するアイコンを指定可能になりました。
OpenGL ES に対応するためのパッケージ com.nttdocomo.ui.ogl
が追加されました。一部機種においてこの OpenGL ES 機能はサポートされます。
FeliCa OS Version 2.0 による端末同士の近接通信(アドホック通信)を行うことが可能になりました。この機能による通信では OBEX プロトコルを用います。なお、この機能の提供はオプションです。
主な仕様変更
ここでは、追加ではなく仕様の位置づけや定義が変更されたものについて説明したいと思います。
従来オプションであった、イメージに対する透過色指定と半透明描画指定が基本扱いに変更されました。
iアプリからブラウザを起動する際に、iアプリを終了するのではなくサスペンドを指定することができるようになりました。ただし、この機能はオプションです。
ADF(JAM ファイル)の DrawArea
キーでサイズを指定することにより、デフォルトで使用可能な表示領域よりも広い表示領域を得ることができる機種が追加されています。この機能に対応した機種ではソフトキーの表示・非表示を切り替えることも可能です。これらの機能は com.nttdocomo.ui.Canvas
クラスでの使用を前提としています。
透明度の指定(アルファ値の指定)によって描画に影響を与えるメソッドが、fillRect()
メソッドのみから、fillRect()
、 fillArc()
、 fillPolygon()
メソッドの3つに拡大されました。これにより、アルファ値を設定して描画を行うコードにおいて、アルファ値を設定してから fillRect()
を実行したあとに、アルファ値を戻さずに fillArc()
あるいは fillPolygon()
メソッドを使用するような記述では従来と異なる描画結果をもたらす点に注意が必要です。
iアプリで扱うことができるiモーションのサイズが 300KB から 500KB に拡大されました。
まとめ
このように、メジャーバージョンが 4 から 5 に上がった割には従来と比較して小幅な改良にとどまっています。しかし、追加された API の一部はとても強力なものもありますし、とにかくサイズの拡大によるパワーアップも顕著なものが期待できるでしょう。
このメモで私が主なものとして取り上げた以外にも色々な機能が追加されています。興味がある方はぜひ公式資料を参照して見て下さい。