Eclipse + DoJa で iアプリ制作環境をつくる

ドコモの携帯電話にのっている、iアプリと呼ばれるプラットフォームの制作環境をつくるメモです。
iアプリも、でてから結構たつのでなかなかのものに育っていますね。 自分の携帯電話で自分のアプリケーションが動くのは結構快感です。
とりあえず、概要から下調べ。 iアプリとは。
- Sun Microsystems Java 2 Platform, Micro Edition (J2ME) の CLDC 1.0 / 1.1 に準拠したアプリケーション実行環境。
- CLDC でドコモの携帯電話を動かすためのクラスライブラリがドコモから提供されていて、これが DoJa。
っていう感じのようです。
てなわけで、とりあえずドコモから DoJa の SDK をダウンロード。 機種別にプロファイルがいろいろありますが、最近の機種なら DoJa 5.0 / 5.1 です。
この SDK の中に、Eclipse のプラグインが入っています。 3.0 / 3.1 用となっていますが、ぼくは 3.3 にいれてみる。。 どこかではうまく動かないとありましたが、とりあえず hello, world くらいは動くようです。(深く使うとダメなのかも)
DoJa のセットアップは流れに身を任せる。 ルートにはいっちゃいますが、むかしルート以外で動かしてなにかうまくいかなかったので、ここはルートで。
で、Eclipse から、新規プロジェクトで Java -> DoJa します。
Java プログラムには何はなくとも javadoc。 DoJa 側はドコモにあります。 J2ME CLDC の日本語ドキュメントは以下にあります。 (maq さんありがとうございました!)
CLDC 1.0 のものですが(いまは CLDC 1.1)、ほぼかわらないので問題ないと思います。
で、javadoc ロケーションをライブラリ .zip に割り当てると、Eclipse 上でホバーしたり F2 でひけるようになります。 とくに、CLDC は J2SE にくらべて使える標準クラスがすくないので、普段普通の Java やっているかたは javadoc 要チェックです。
DOJA_CLASS_ZIP には、CLDC の javadoc を、DOJA_DOJACLASS_ZIP には、DoJa の javadoc を割り当てます。 それぞれ、右クリックしてプロパティから javadoc location のパス (index.html のありか) を指定すれば OK です。
それから、Java の実行準拠を 1.3 相当にします。 プロジェクト右クリック、プロパティから、Java コンパイラ設定。
互換レベルを 1.3 に変更。
次に、実行環境を整えるためにプロジェクト名に必ずカーソルをおいてから、プロジェクト -> DoJa -> AFD/トラステッド設定。
AppName (任意の名前)と、AppClass を入力。 AppClass は start() メソッドをもつクラスで、パッケージ使っているのならパッケージ名もいれます。
net.maple4ever.doja.djrasen.DjRasen
とかです。
あとは、実行メニューから DoJa の実行プロファイルをつくって、
Run で動くはずです。(もちろん事前にソースはかいてください(笑))
端末エミュレーションもいろいろ設定できます。 上のスクリーンショットの解像度は最新機種 905 系の VGA 解像度(赤丸のところがエミュレートされている画面)。 PC でみてもかなりのインパクトがありますね。 いいわぁ。
昔は 10K とかの jar しか動きませんでしたが、最近は 1M くらいまで OK みたいでかなりいろいろできそうです。
ためしに、オープンソースの J2ME 準拠の XML パーサコンパイルしてみたら、ちょっと修正するだけでうまくいったじゃありませんか!。(これで jar のサイズが 65K くらいです)
kXML is a small XML pull parser, specially designed for constrained environments such as Applets, Personal Java or MIDP devices. In contrast to kXML 1, kXML 2 is based on the common XML pull API.
ほんとは、XML じゃなくて YAML 使おうとおもったんですが、簡単に J2ME で動きそうなのがなくて困っていたら、Java のミニパーサ系は XML のほうがいけてました。いまはパケット定額のひとも多いし、ドコモはハイスピードつかえるしだから、XML でいいかもしれないですね。
これで、Web サーバと XML で通信させあえば結構面白いことができそうです。 携帯電話ローカルに保存するデータも、大容量 miniSD とかにおけるので自由度は高いです。
iアプリって、なんだか closed ソースが多くて、なかなか参考にするものも少ないのですが、クラスライブラリはなかなか使いやすいと思いますので、知恵と勇気でがんばりましょう。