3


プロジェクトの使用

前章では、MIDP の開発サイクルで Sun JavaTM Wireless Toolkit for CLDC がどのように役立つかについて説明しました。この章では、プロジェクトの使用法について、より詳細に説明します。次のような内容が含まれます。


3.1 API の選択

各プロジェクトは、API セットに基づいてビルドされます。Sun JavaTM Wireless Toolkit for CLDC では、多数の API がサポートされています。完全なリストは 1.6, サポートされている技術に示しています。ツールキットでは、アプリケーションを開発するときに、アプリケーションが実行されるターゲットデバイスの種類に応じて API のサブセットを選択できます。

たとえば、ツールキットは JSR 184 「Mobile 3D Graphics API」に対応していますが、開発するアプリケーションでその API を使用しない場合もあります。プロジェクトの「API の選択」にある設定を使って、使用する API だけを選択できます。

この機能について確認するには、ツールキットを起動し、プロジェクトを開きます。「属性設定」をクリックすると、図 3-1 に示すウィンドウが表示されます。

図 3-1 「プロジェクトの設定」ウィンドウ


Project settings window for API Selection. The target platform is MSA.

「API の選択」区画では、「ターゲットプラットフォーム」の設定に応じて、この区画の残り部分に表示される内容が変わります。適切なターゲットプラットフォームを選択し、下にあるコントロールを使って選択内容を微調整します。たとえば、「Java Technology for the Wireless Industry」の JSR に準拠するデバイス向けのアプリケーションを開発する場合は、コンボボックスで「JTWI」を選択します。次に、下にあるコントロールを使用して、CLDC のバージョンを指定し、オプションの API を選択します。

選択した内容は、ツールキットでソースコードをコンパイルする際に適用されます。



注 - API の選択は、エミュレータには適用されません。エミュレータは利用可能なすべての API を常にサポートしています。プロジェクト設定での API の選択は、プロジェクトのビルドだけに適用されます。基本的に、API の選択に応じて、ツールキットでソースファイルのコンパイルと実行前検証に使用されるクラスパスが選択されます。




3.2 MIDlet スイートの属性の変更

「プロジェクトの設定」ウィンドウでは、MIDlet スイートの属性も制御できます。これらは、MIDlet スイートの JAR ファイルのマニフェストファイルと記述子に保存されます。

属性を確認するには、プロジェクトを開き、「属性設定」ボタンをクリックします。設定ウィンドウの左にあるアイコンバーには、「必須項目」、「オプション項目」、および「ユーザー定義」の 3 つの属性アイコンが表示されます。

必須属性とオプション属性の定義については、MIDP 2.0 仕様の最終リリース 2 (MIDP 2.1) を参照してください。詳細の大部分は Sun JavaTM Wireless Toolkit for CLDC で適切に処理されます。開発の初期段階では、属性について気にする必要はありません。アプリケーションが安定して動作するようになり、実際のデバイスへの配備や市場投入を検討し始めた段階で、属性値を調整します。

「必須項目」または「オプション項目」区画で値を調整するには、変更する属性キーの横にあるセルをクリックします。新しい値を入力します。

図 3-2 MIDlet スイートの属性の編集


Midlet Suite attributes for "Tiny" project

新しいユーザー定義属性を作成するには、「ユーザー定義」アイコンをクリックします。「追加」ボタンをクリックしてプロパティーの名前と値を入力し、「了解」をクリックします。

ユーザー定義のプロパティー値を編集するには、必須属性やオプション属性の場合と同様に、キーの横にある値の列をクリックします。

属性を削除するには、属性を選択して「削除」をクリックします。


3.3 MIDlet の操作

プロジェクト設定では、現在の MIDlet スイートプロジェクトに含まれる MIDlet の追加や変更を行うこともできます。この機能について確認するには、ツールキットを起動し、既存のプロジェクトを開きます。「属性設定」をクリックし、「MIDlets」アイコンを選択します。プロジェクト内の MIDlet のリストが表示されます。新しいプロジェクトを作成した直後は、ツールキットによって自動的に最初の MIDlet エントリが入力されています。

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


MIDlet list for project "Tiny"

新しい MIDlet を追加するには、「追加」をクリックします。名前、アイコンファイル名、およびクラス名を入力します。アイコンファイル名は空白のままでもかまいません。MIDlet エントリの値を変更したり、エントリを削除したりするには、「編集」ボタンまたは「削除」ボタンを使用します。

MIDlet の名前は、MIDlet スイートが起動された順に表示されます。順序を変更するには、MIDlet を選択し、「上へ」または「下へ」をクリックします。


3.4 転送レジストリの使用

プロジェクト設定を使用して、MIDlet スイートの転送レジストリの設定を操作することもできます。「属性設定」をクリックし、「転送レジストリ」アイコンを選択します。

図 3-4 プロジェクトの転送レジストリの設定


This figure displays the push registry settings for the WMADemo project

転送レジストリにエントリを追加するには、「追加」をクリックし、接続 URL、MIDlet クラス、および許可された送信者の値を入力して、「了解」をクリックします。エントリを編集するには、エントリを選択し、「編集」ボタンをクリックします。転送レジストリのエントリを削除するには、エントリを選択し、「削除」をクリックします。

アプリケーション用に転送レジストリのエントリを作成する場合は、適切なアクセス権も必ず入力してください。詳細は、第 6 章を参照してください。


3.5 コンテンツハンドラの設定

Sun JavaTM Wireless Toolkit for CLDC では、JSR 211 で定義されている「Content Handler API」(CHAPI) をサポートします。CHAPI の基本的な概念は、コンテンツ
(ファイル) の着信に応じて MIDlet を起動できるということです。最近の携帯電話は、SMS、赤外線、Bluetooth、電子メール、およびその他の方法を使用してコンテンツを受信できます。ほとんどのコンテンツには、コンテンツ形式が対応付けられます。CHAPI は、特定のコンテンツの種類に応じて MIDlet を起動できるシステムを指定します。

プロジェクトでのコンテンツハンドラの設定を変更するには、「属性設定」をクリックして、「コンテンツハンドラ」区画を選択します。

図 3-5 コンテンツハンドラの設定


Project Settings window for CHAPIDemo with Content Handlers icon selected on left

リストの各行は、コンテンツハンドラの設定を示しています。この例では、2 つのコンテンツハンドラが設定されています。1 つは TextViewer 用、もう 1 つは ImageViewer 用です。新しいコンテンツハンドラを作成する場合は「追加」をクリックし、既存のコンテンツハンドラを編集する場合は「編集」をクリックします。コンテンツハンドラの順序を調整するには、コンテンツハンドラを選択して「上へ」および「下へ」ボタンを使用します。コンテンツハンドラをリストから削除するには、「削除」をクリックします。

コンテンツハンドラを追加または編集するときには、詳細ウィンドウが表示されます。

図 3-6 コンテンツハンドラの詳細設定


Content Handler details window with Content Handler tab selected

「クラス」フィールドに、MIDlet の名前を入力します。「ID」には、コンテンツハンドラの呼び出しやアクセスの制御に使用できる識別文字列を入力します。

「コンテンツ形式」は、このコンテンツハンドラで処理するコンテンツ形式のリストです。「追加」および「削除」ボタンを使用して、リストを管理します。「接尾辞文字列」は、明示的なコンテンツ形式の代用となる URL 接尾辞のリストです。「アクセス許可」は、このコンテンツハンドラにアクセスできるほかのコンテンツハンドラを示す、コンテンツハンドラ ID のリストです。リストが空の場合、すべてのコンテンツハンドラがこのコンテンツハンドラにアクセスできます。

コンテンツハンドラにはアクションが関連付けられ、これにより呼び出しアプリケーションはコンテンツの処理方法を選択できます。たとえば、イメージビューアコンテンツハンドラには、画像を元のサイズで表示するためのアクションや、画像を表示可能な画面領域に拡大縮小するアクションなどが含まれます。「コンテンツハンドラの詳細を入力」ウィンドウで「アクション」タブをクリックして、コンテンツハンドラのアクションを編集します。

図 3-7 コンテンツハンドラのアクション


Content Handler details window with Actions tab selected

「アクション」リストには、このコンテンツハンドラのアクションの内部名が表示されます。「ロケール」は、人間が判読できるアクション名を指定するすべてのロケールのリストです。「ローカライズされたアクション」は、人間が判読できるさまざまなロケールのアクション名を含むグリッドです。各ロケールが行で指定され、アクションは列で示されます。特定のロケールの、人間が判読できるすべてのアクション名を、1 つの行で確認することができます。


3.6 プロジェクトのディレクトリ構造

プロジェクトには、標準のディレクトリ構造があります。プロジェクト自体は、apps サブディレクトリ内のディレクトリとして表されます。たとえば、Windows では demos プロジェクトは、workdir¥apps¥demos に格納されます。次の表で、プロジェクトのディレクトリ構造を説明します。


表 3-1 プロジェクトのディレクトリ構造

ディレクトリ

説明

bin

プロジェクトをパッケージ化すると、MIDlet スイートの記述子と JAR ファイルがこのディレクトリに置かれます。このディレクトリには、パッケージ化されていないマニフェスト情報も格納されます。「OTA 経由で実行」を使用する場合は、内部的に使用される HTML ファイルが置かれる場合もあります。

classes

このディレクトリは、コンパイル済みのクラスファイルを保存するために使用されます。

lib

このディレクトリには、このプロジェクトに組み込むサードパーティ製のライブラリを置きます。

res

このディレクトリには、画像、サウンド、およびその他のリソースファイルを置きます。これらはパッケージ化されて、MIDlet スイートの JAR ファイルのルートに置かれます。

src

このディレクトリには、ソースファイルを置きます。

tmpclasses

このディレクトリは、ツールキットで使用されます。

tmplib

このディレクトリは、ツールキットで使用されます。


 

このほかに、プロジェクトディレクトリには、プロジェクトに関する情報を含む project.properties ファイルもあります。

一時ディレクトリや一時ファイルをプロジェクトから削除するには、「プロジェクト」->「消去」を選択します。


3.7 サードパーティ製ライブラリの使用

Sun JavaTM Wireless Toolkit for CLDC では、サードパーティ製のライブラリをアプリケーションに組み込むことができます。サードパーティ製のライブラリを使用すると、自分で機能を構築する必要がなくなるので、開発時間を短縮できます。ただし、MIDlet スイートの JAR ファイルのサイズに注意してください。

アプリケーションにサードパーティ製のライブラリを使用すると、そのライブラリのサイズだけ JAR ファイルのサイズが増加します。難読化ツールを使用すると、コードサイズを縮小できます。優れた難読化ツールでは、ライブラリの中で使用されていない部分をすべて除去することも可能です。ただし、難読化ツールを使用しても、多くの場合は、サードパーティ製のライブラリの方がユーザーが自分で作成したカスタムコードよりも大きくなります。開発時間の短縮と MIDlet スイートの JAR ファイルのサイズの兼ね合いを見極める必要があります。

Sun JavaTM Wireless Toolkit for CLDC には、サードパーティ製のライブラリを組み込むための方法が 2 つ用意されています。プロジェクト設定の「外部 API」区画を使用すると、プロジェクトにライブラリを組み込んだり、解除したりすることが簡単にできます。また、ライブラリを特定の場所に配置して、1 つまたはすべてのプロジェクトで利用するようにできます。

3.7.1 外部 API の使用

組み込む API を指定するには、「属性設定」をクリックし、「外部 API」アイコンをクリックします。利用可能な外部 API のリストが表示されます (リストが空の場合もあります)。

ビルドの際に API をクラスパスに追加するには、「使用」の列のボックスにチェックマークを付けます (図 3-8 を参照)。API をアプリケーションにバンドルする場合は、「バンドル」ボックスにもチェックマークを付けます。アプリケーションを配備するデバイスに選択した外部 API が存在しないことがわかっている場合は、アプリケーションに API をバンドルする必要があります。

図 3-8 外部 API の選択


External APIs for CHAPIDemo project.

3.7.2 1 つのプロジェクトに使用するサードパーティ製ライブラリ

プロジェクトの lib ディレクトリに置かれているライブラリファイルはすべて、プロジェクトのビルドおよびパッケージ化で組み込まれます。ライブラリは、Java テクノロジクラスの JAR ファイルまたは ZIP ファイルでなければなりません。

したがって、Windows でインストールを行い、Tiny という名前のアプリケーションの場合、クラスライブラリは workdir¥apps¥Tiny¥lib になります。プロジェクトをビルド、実行、デバッグ、およびパッケージ化する場合には、その lib ディレクトリのクラスファイルが使用されます。

3.7.3 すべてのプロジェクトに使用するサードパーティ製ライブラリ

デバイスによっては、インストールされるすべての MIDlet スイートにそのデバイスのライブラリを使用できることがあります。たとえば、製造元が自社製のすべてのデバイスに追加の API を用意している場合などです。このような場合は、アプリケーションのビルドやテストを行うときに、これらのライブラリを使用できるとよいでしょう。ただし、ライブラリはあらかじめデバイス上に用意されているので、そこにインストールする MIDlet スイートのパッケージにはライブラリを組み込まないようにします。

このようにするには、ライブラリを workdir¥apps¥lib ディレクトリに置きます。このディレクトリにあるライブラリは、すべてのプロジェクトで使用できます。


3.8 Wireless Toolkit の設定

ツールキットには上級者向けの設定オプションがあります。ktools.properties ファイルのコピーを編集することで、これらのオプションを使用できます。このファイルは、次の場所にあります。


Windows:

toolkit¥wtklib¥Windows¥ktools.properties

Linux:

toolkit/wtklib/Linux/ktools.properties

 

ktools.propertiesworkdir/os/wtklib にコピーし、この節で説明するように変更します。

ktools.properies に対する変更は、ツールキットを次に起動したときに有効になります。

3.8.1 コンソールのフォントの変更

2 つのプロパティーを編集することで、コンソール (およびその他のテキスト領域) で使用されるフォントを変更できます。ここでは、フォントを 20 ポイントの Times New Roman に変更する例を示します。

font.JTextArea=Times New Roman
font.size.JTextArea=20

デフォルトのフォントおよびサイズに戻すには、これらのプロパティーを削除します。

3.8.2 アプリケーションディレクトリの設定

Sun JavaTM Wireless Toolkit for CLDC のデフォルト設定では、アプリケーションは作業用ディレクトリの apps サブディレクトリに格納されます。ktools.properties ファイルに次の行を追加すると、アプリケーションの格納先のディレクトリを変更することができます。

kvem.apps.dir: application-directory

Windows の場合、ディレクトリパスのすべての円記号 (¥) の前に、円記号をもう 1 つ追加する必要があります。また、空白文字を含むディレクトリのパスは指定できません。

たとえば、アプリケーションディレクトリを D:¥dev¥midlets に設定するには、次の行を追加します。

kvem.apps.dir: D:¥¥dev¥¥midlets

Linux のパスは、通常どおりに指定できます。

3.8.3 javac のエンコーディングプロパティーの設定

デフォルト設定では、javac は実行中の Java SE プラットフォームのエンコーディングセットを使用します。デフォルトのソースファイルエンコーディングを上書きする方法については、付録 C を参照してください。

3.8.4 リビジョン制御システムの使用

filterRevisionControl プロパティーを使用すると、SCCS、RCS、CVS の各リビジョン制御システムで作成された補助ファイルをツールキットに認識させたり、無視させたりすることができます。

補助ファイルを認識させたり、無視させたりするには、ktools.properties に次の行を追加します。

kvem.filterRevisionControl: true

これにより、ツールキットではリビジョン制御ファイルがソースファイルまたはリソースファイルとして扱われなくなります。たとえば、src¥SCCS¥s.MyClass.java というファイルは、SCCS リビジョン制御ファイルとみなされ、Java テクノロジソースファイルとしては扱われなくなります。