2


MIDlet スイートの開発

この章では、Sun JavaTM Wireless Toolkit for CLDC を使用してアプリケーションを作成する方法について説明します。まずツールキットのプロジェクトについて説明してから、開発手順の説明に進みます。

MIDlet スイートアプリケーションの作成には、2 つの基本的な開発サイクルをよく使用します。1 つは、すばやく簡単に開発を行うことができるサイクルです。この方法は初期の開発で役立ちます。もう 1 つの開発サイクルでは、時間はかかりますが、より実際に近い総合的なテストを行うことができます。

章の終わりの方では、Sun JavaTM Wireless Toolkit for CLDC で難読化ツールやデバッガなどの拡張開発ツールを使用する方法について説明します。最後の節では、Web サーバーを設定して MIDP アプリケーションを提供する方法について説明します。


2.1 プロジェクトについて

Sun JavaTM Wireless Toolkit for CLDC では、MIDlet スイートは「プロジェクト」に分けて整理され、1 つのプロジェクトから最終的に 1 つの MIDlet スイートがビルドされます。プロジェクトには、Java ソースファイルやリソースファイルなど、MIDlet スイートのビルドに使用されるすべてのファイルと、MIDlet 記述子が含まれています。

Sun JavaTM Wireless Toolkit for CLDC で一度に操作できるプロジェクトは 1 つだけです。新しいプロジェクトを作成するか、または既存のプロジェクトを開くことができます。

この章では、単純なサンプルプロジェクトを使用します。開発サイクルの各手順について読みながら、ツールキットで実際に作業します。

新しいプロジェクトを作成するには、まずユーザーインタフェースを起動します。Microsoft Windows で、「スタート」->「プログラム」->「Sun Java Wireless Toolkit 2.5.2 for CLDC」->「Wireless Toolkit 2.5.2」を選択します。[1]図 2-1 に示すように、ユーザーインタフェースが表示されます。

図 2-1 ツールキットのユーザーインタフェース


Default toolkit UI at startup.

「新規プロジェクト」をクリックします。プロジェクトの名前と作成する MIDlet クラスの名前を入力するように求められます。名前を入力し、「プロジェクトの作成」をクリックします。

図 2-2 新しいプロジェクトの作成


UI window with New Project dialog. Project Name is Tiny and MIDlet class Name is TinyMIDlet.

「設定」ウィンドウが表示されます。選択する内容は、プロジェクトのビルド環境に影響を与えます。このサンプルではデフォルトのオプションをそのまま使用するので、「了解」をクリックしてこのウィンドウを閉じます。コンソールに、このプロジェクトのソースコードとリソースファイルの保存先を示すメッセージが表示されます。

図 2-3 コンソールで指定されるファイルの場所


KToolbar console displays locations of project files.


2.2 単純な開発サイクル

単純な開発サイクルは次のようなものです。

ソースコードの編集 -> ビルド -> 実行

1. ソースコードの編集

この手順では、アプリケーションで使用する Java ソースファイルおよびリソースファイルを作成します。

2. ビルド (構築)

ツールキットにより、Java ソースファイルのコンパイルと事前検証が行われます。

3. 実行

コンパイル済みの Java クラスファイルをエミュレータ上で実行します。

ツールキットでソースファイルをコンパイルしようとしてエラーが発生した場合は、ソースファイルを編集し直します。エミュレータでアプリケーションをテストしているときにバグが見つかった場合は、ソースファイルを編集してバグを修正します。

ここまでで、ハイレベルでの単純な開発サイクルについて把握しました。この節の残りの部分では、Sun JavaTM Wireless Toolkit for CLDC を使用して各手順を実施する方法について説明します。

2.2.1 ソースコードの編集

開発手順のうち、ソースコードの編集だけは、Sun JavaTM Wireless Toolkit for CLDC で行えません。任意のテキストエディタを使用して、ソースコードファイルを作成および編集します。使いたいテキストエディタがない場合は、http://jedit.org/ にある jEdit を試してみてください。

サンプルプロジェクトに従って作業している場合は、新しい Java テクノロジソースファイル TinyMIDlet.java を作成します。作成したファイルを、プロジェクトのソースディレクトリに保存します。たとえば、Windows の場合は workdir¥apps¥Tiny¥src¥TinyMIDlet.java に保存します。このファイルには、次のような簡単な MIDlet が含まれています。


import javax.microedition.lcdui.*;
import javax.microedition.midlet.MIDlet;
 
public class TinyMIDlet
    extends MIDlet
    implements CommandListener {
  public void startApp() {
    Display display = Display.getDisplay(this);
    
    Form mainForm = new Form("TinyMIDlet");
    mainForm.append("Welcome to the world of MIDlets!");
    
    Command exitCommand = new Command("Exit", Command.EXIT, 0);
    mainForm.addCommand(exitCommand);
    mainForm.setCommandListener(this);
    
    display.setCurrent(mainForm);
  }
  public void pauseApp () {}
  
  public void destroyApp(boolean unconditional) {}
  
  public void commandAction(Command c, Displayable s) {
    if (c.getCommandType() == Command.EXIT)
      notifyDestroyed();
  }
}

 

作業が完了したら、ファイルを保存します。

2.2.2 ビルド

次の手順では、ソースコードをビルドします。ツールキットを使用すると、この手順は非常に簡単です。

ユーザーインタフェースで、「ビルド」ボタンをクリックします。ソースファイルが正しい場所に保存されていれば、ツールキットがそのファイルを見つけてコンパイルします。コンパイルエラーはコンソールに表示されます。図 2-4 のようなエラーが表示された場合は、ソースコードを編集して、エラーを修正します。エラーがなくなると、コンソールにビルドが成功したことを示すメッセージが表示されます。

図 2-4 ビルドに関するメッセージ


Console displays build messages for Tiny file with error. The caret ^ indicates the error.

表面には現れませんが、ツールキットではコンパイル済みクラスファイルの事前検証も行われます。MIDlet クラスファイルを MIDP デバイスやエミュレータで実行するには、その前に検証する必要があります。この処理はツールキットによって実行され、メッセージは表示されません。事前検証の詳細は、CLDC 仕様を参照してください。

2.2.3 実行

プロジェクトが正常にビルドされたら、エミュレータで実行してみることができます。「実行」ボタンをクリックします。エミュレータに、プロジェクト内のすべての MIDlet のリストが表示されます。

図 2-5 プロジェクトの MIDlet のリスト


List of project MIDlets displays the Tiny MIDlet

実行する MIDlet を選び、「起動」を選択します。TinyMIDlet の例に従って作業している場合、結果は図 2-6 のようになります。

図 2-6 動作中の TinyMIDlet


TinyMIDlet output is "Welcome to the world of MIDlets!"


2.3 完全な開発サイクル

2 つ目の開発サイクルは少し複雑です。次のようなハイレベルの手順で構成されます。

ソースコードの編集 -> パッケージ化 -> インストール -> 実行

1. ソースコードの編集

これは、単純な開発サイクルの場合と同じです。

2. パッケージ化

この手順では、Sun JavaTM Wireless Toolkit for CLDC によってソースファイルのコンパイルと事前検証が行われます (前述したビルドの手順と本質的に同じ)。続いて、Java クラスファイルとリソースファイルがバンドルされて、MIDlet スイートの Java Archive (JAR) ファイルと MIDlet スイート記述子が作成されます。

3. インストール

MIDlet スイートを実行するには、その前にインストールする必要があります。MIDlet スイートは、Sun JavaTM Wireless Toolkit for CLDC のエミュレータまたは実際のデバイスにインストールできます。

4. 実行

単純な開発サイクルの場合と同様に、アプリケーションを実行して、バグがないかどうかをテストします。

完全な開発サイクルでも、最初の手順は単純な開発サイクルの場合と同じです。ソースコードの編集も通常どおりです。ビルドの手順は、パッケージ化の手順に組み込まれています。

完全な開発サイクルには、パッケージ化とインストールという 2 つの新しい手順が含まれています。アプリケーションをインストールしてから実行する方法と単純な開発サイクルでのアプリケーションの実行方法は大きく異なります。

2.3.1 パッケージ化

Sun JavaTM Wireless Toolkit for CLDC では、MIDlet スイートをパッケージ化するタスクが自動化されます。パッケージ化の結果として、MIDlet 記述子と MIDlet スイートの JAR ファイルが作成されます。記述子は、MIDlet スイートに関する情報を含んでいる小さなテキストファイルです。JAR ファイルには、MIDlet スイートを構成するクラスファイルとリソースファイルが含まれています。デバイスで JAR ファイル全体をダウンロードする前に、記述子からアプリケーションの情報を取得できます。メモリーや帯域幅の少ないワイヤレス環境では、これは重要な考慮事項です。

ツールキットで MIDlet スイートをパッケージ化するには、「プロジェクト」->「パッケージ」->「パッケージを作成」を選択します。MIDlet スイートの記述子と JAR ファイルが生成され、プロジェクトの bin ディレクトリに置かれます。

パッケージ化には、ほかの手順が追加されることもあります。コード難読化ツールを使用すると、MIDlet スイートの JAR ファイルのサイズを縮小できます。この手法については、この章で後述します。さらに、ツールキットには、MIDlet スイートに暗号で署名できるようにするツールが用意されています。詳細は、第 6 章を参照してください。

2.3.2 インストール

MIDlet スイートを正しくテストするには、MIDlet スイートをツールキットのエミュレータまたは実際のデバイスにインストールします。ユーザーインタフェースの「実行」ボタンをクリックすると、MIDlet スイートはエミュレータにインストールされません。代わりに、MIDlet クラスがエミュレータで直接実行されます。

また、エミュレータは、実際のデバイスにアプリケーションを無線 (OTA) で転送してインストールするときと同様の手順で、アプリケーションをメモリーにインストールできます。Sun JavaTM Wireless Toolkit for CLDC のエミュレータにアプリケーションをインストールするには、「プロジェクト」->「OTA 経由で実行」を選択します。

MIDlet クラスが直接実行されるのではなく、エミュレータのウィンドウが開き、アプリケーション管理ソフトウェア (Application Management Software、AMS) の開始画面が表示されます。エミュレータのソフトウェアは、MIDlet スイートを管理するために実際のデバイスで必要となるソフトウェアの種類の一例です。

図 2-7 エミュレータの AMS の開始画面


This figure shows the screen portion of the emulator with the initial welcome message

「アプリ」を選択して、インストール済みアプリケーションのメインリストに移動します。「アプリケーションのインストール」を選択し、エミュレータの「SELECT」ボタンを押します。インストールするアプリケーションの URL を入力するように求められます。URL はあらかじめ入力されています。

図 2-8 URL のプロンプト


In the sample, the URL of the program to install from is http://localhost:2455/Tiny/bin/Tiny.html

メニューから「進む」を選択して、インストールを開始します。URL で見つかったアプリケーションのリストがエミュレータに表示されます。1 つだけ選択し、メニューから「インストール」を選択します。最後にもう一度、インストールしてもよいかどうかを確認するメッセージが表示されます。

図 2-9 インストールの確認


When prompted "Are you sure..." select Install on the lower right to complete the installation

もう一度「インストール」を選択して、インストールを完了します。エミュレータのインストール済みアプリケーションのリストに戻ります。インストールしたばかりのアプリケーションもそのリストに表示されています。

図 2-10 アプリケーションメニュー


Use the select button to select an application

「OTA 経由で実行」を使用すると、ツールキットのエミュレータに MIDlet スイートを簡単にインストールでき、非常に便利です。転送レジストリ機能や、署名付き MIDlet スイートのインストール機能など、一部の機能はこの手法を使ってテストする必要があります。

実際のデバイスで MIDlet スイートをテストするには、最初にインストールする必要があります。その方法は、使用しているデバイスに大きく依存します。次の 2 つの方法が一般的に使用されます。

2.3.3 実行

アプリケーションをインストールしたら、リストからアプリケーションを選択し、メニューから「起動」を選択します。

図 2-11 インストール済みアプリケーションの起動


Use soft keys to open the menu and select 1 (Launch)

実際のデバイスでアプリケーションを実行する方法は、デバイス自体に大きく依存します。詳細については、デバイスのマニュアルを参照してください。


2.4 MIDlet スイートからのプロジェクトの作成

MIDlet スイートアーカイブ (.jar ファイル) と記述子 (.jad ファイル) から、Sun JavaTM Wireless Toolkit for CLDC プロジェクトを作成することもできます。この方法は、ソースコードを利用できない場合でさえも、ツールキットのユーザーインタフェースから MIDlet スイートを実行するのに役立ちます。ツールキットを使用して、記述子で属性を簡単に操作したり、プロジェクトを実行し、ツールキットの監視ツール (第 5 章で説明) を使用してその動作を調査したりすることができます。

MIDlet スイートに基づいてプロジェクトを作成するには、「ファイル」->「JAD/JAR ファイルからプロジェクトを作成」を選択します。使用する記述子を選択し、「開く」をクリックします。記述子と JAR ファイルは、同じディレクトリに存在する必要があります。


2.5 難読化ツールの使用

「難読化ツール」は、クラスファイルのサイズを小さくするツールです。ダウンロード時間を最小限に抑え、製造元や通信事業者から指定される厳しい JAR ファイルのサイズ制限に従うために、MIDlet スイートはコンパクトである必要があります。難読化ツールの使用は、MIDlet スイートの JAR ファイルのサイズを小さく維持できる方法の 1 つ (唯一ではない) です。

開発サイクルのパッケージ化の手順で難読化ツールを使用できます。Sun JavaTM Wireless Toolkit for CLDC に難読化ツールは含まれていませんが、ProGuard 難読化ツールを使用できるように設定されています。必要な作業は、ProGuard をダウンロードし、ツールキットで検索可能な場所に置くことだけです。

ProGuard は、GNU 一般公衆利用許諾契約書 (GPL) の条件に従って公開されています。利用許諾契約書の条件に同意する場合は、ProGuard を無償でダウンロードして使用できます。

2.5.1 ProGuard のインストール

ProGuard をインストールするには、次の手順を実行します。

1. ProGuard の Web サイト http://proguard.sourceforge.net/ にアクセスします。

2. 最新バージョンをダウンロードします。

3. ProGuard のインストールディレクトリの lib ディレクトリにある proguard.jar ファイルを、toolkit¥bin ディレクトリに圧縮解除して入れます。

2.5.2 ProGuard の使用

ProGuard のインストール後に、「プロジェクト」->「パッケージ」->「難読化パッケージを作成」を選択すると、ProGuard を使用できます。

場合によっては、難読化ツールの動作を制御するスクリプトファイルを用意する必要があります。たとえば、Class.forName() を使用してクラスをロードする場合は、クラス名を変更しないように ProGuard に指示する必要があります。

スクリプトファイルを呼び出すには、ktools.properties ファイルのコピーを変更できるようにしてください。

single-step bullettoolkit/wtklib/os/ktools.propertiesworkdir/wtklib/os/ktools.properties にコピーします。

テキストエディタでスクリプトファイルを作成し、プロジェクトのメインディレクトリに保存します。スクリプトファイルの詳細については、ProGuard のマニュアルを参照してください。次に、このファイルの見つけ方をツールキットに指示します。workdir/wtklib にコピーした ktools.properties ファイルを編集します。次のような行を追加します。

obfuscate.script.name: scriptfile

scriptfile は、スクリプトファイルに使用した名前で置き換えてください。このファイルの編集内容を有効にするには、ツールキットをいったん終了して再起動する必要があります。


2.6 デバッガの使用

アプリケーションの実行手順では、アプリケーションをデバッガで実行することもできます。デバッガを使用すると、実行中のアプリケーションをより詳細に監視したり、ブレークポイントを設定したり、変数を調べたりできます。

デバッガはユーザー自身で用意する必要があります。Java SE プラットフォームの jdb デバッガなど、任意のデバッガを使用できます。デバッガを使用する場合、一般的には Sun JavaTM Wireless Toolkit for CLDC に対応した Sun Java Studio Mobility ソフトウェアなどの統合開発環境 (IDE) を使用できます。詳細は、http://www.sun.com/software/products/jsmobility/ を参照してください。

最初に、「プロジェクト」->「デバッグ」を選択します。デバッガでエミュレータに接続するために使用する TCP/IP ポート番号を入力します。「デバッグ」をクリックします。エミュレータが起動し、デバッガからの接続待ちの状態になります。

デバッガを起動し、指定したポートに接続します。リモートデバッガを設定し、このデバッガを TCP/IP を使用してリモートモードで動作させる必要があります。詳細については、デバッガのマニュアルを参照してください。

Debugging MIDlets に、Sun JavaTM Wireless Toolkit for CLDC で jdb を使用する場合の情報が記載されています。これは http://developers.sun.com/techtopics/mobility/midp/questions/jdb/ で入手できます。


2.7 Web サーバーへのアプリケーションの配備

MIDP 2.0 の仕様には、Over The Air User Initiated Provisioning Specification という仕様が含まれています。この仕様には、MIDlet スイートをデバイスに無線 (OTA) で転送する方法が記載されています。Sun JavaTM Wireless Toolkit for CLDC のエミュレータを使用して、このようなシナリオをテストできます。

パッケージ化した MIDP アプリケーションを Web サーバーにリモートで配備するには、Java Application Descriptor (JAD) ファイルの MIDlet-Jar-URL プロパティーを JAR ファイルの URL に変更します。この URL は絶対パスで指定する必要があります。たとえば、次のようになります。

MIDlet-Jar-URL: http://your.server.com/midlets/example.jar

次に、Web サーバーが JAD ファイルと JAR ファイルの正しい MIME タイプを使用できるようにします。

Web サーバーの設定方法は、使用するソフトウェアによって異なります。

エミュレータは、OTA 配信中のデバイスの動作を実装します。エミュレータを使用して、サーバーからデバイスへ MIDlet スイートを配信する完全なプロセスをテストおよびデモできます。必要な作業は、エミュレータの AMS を起動することだけです。「OTA 経由で実行」オプションを使用したことがあるユーザーは、すでに AMS の操作に慣れているかもしれません。

エミュレータの AMS を起動する方法は 2 つあります。

 

AMS のプロンプトに従って、アプリケーションをインストールします。この手順は、この章で説明した「OTA 経由で実行」オプションの場合とほぼ同じですが、アプリケーションをインストールするサーバーの URL を入力する必要があります。


1 (脚注) Microsoft Windows の設定によっては、「スタート」->「プログラム」の代わりに、「スタート」->「すべてのプログラム」を選択する必要があります。