複数のデバイス向けモバイルアプリケーションの開発
このチュートリアルは、開発者を対象とした MIDP と CDC 向け開発入門シリーズの第 2 部です。このチュートリアルを開始する前に「NetBeans CLDC/MIDP 開発のクイックスタートガイド」を終了することをお勧めします。このチュートリアルでは、そのチュートリアルで使用した "MyHello" プロジェクトを引き続き使用し、プロジェクトを異なるエミュレータに配備し、特定のデバイス環境向けにコードをカスタマイズする方法を示します。このチュートリアルで示す概念や方法は、IDE で作成した CDC アプリケーションにも適用できます。
目次
必要なソフトウェア
Java ME MIDP/CLDC 向けの開発を始める前に、JDK 5 以降と NetBeans IDE の Mobility 版または完全版をインストールする必要があります (ダウンロード)。システム設定については、インストール手順を参照してください。
エミュレータプラットフォームの追加
エミュレータプラットフォームは、開発者が特定のモバイルデバイスの動作のシミュレーションを行い、作成するアプリケーションをデバッグできるように、携帯電話のメーカーによって提供されています。NetBeans IDE Mobility には Sun Java Wireless Toolkit が含まれています。また、Nokia、Sony Ericsson、Motorola などのベンダーのサイトからダウンロードできる、ほかの多数のソフトウェア開発キット (SDK) をサポートしています。NetBeans Mobility の FAQ にサポートされている MIDP エミュレータの一覧があります。
新しいエミュレータプラットフォームの追加
- メインツールバーから「ツール」>「Java プラットフォーム」を選択します。
- 「Java プラットフォームマネージャー」ダイアログで「プラットフォームを追加」ボタンをクリックします。
- 「プラットフォームの種類を選択」ページで、「Java ME MIDP Edition プラットフォームエミュレータ」を選択します。「次へ」をクリックします。
- 「プラットフォームのフォルダ」ページで、使用可能なすべての Java ME プラットフォームが IDE によって検索され、ウィンドウ内に一覧表示されます。UEI (Unified Emulator Interface) 標準に準拠しているプラットフォームは、準拠していることが確認されると、プラットフォーム名の横にあるチェックボックスが選択された状態で表示されます。UEI に準拠していないプラットフォーム、またはそれ以外の理由でインストールできない可能性のあるプラットフォームは、赤色で示されます。このウィザードでは、すでにインストールされているプラットフォームも識別されます。注: UEI に準拠していないプラットフォームをインストールするには、「戻る」ボタンをクリックし、「カスタムの Java Micro Edition プラットフォームエミュレータ」を選択します。
- 「プラットフォームのフォルダ」ページで、インストールするプラットフォームエミュレータの横のチェックボックスを選択します。プラットフォームが検出され、インストールされます。「完了」をクリックします。「閉じる」をクリックします。
- 「ファイル」>「"MyHello" プロパティー」を選択します。
- 「プラットフォーム」ノードを選択し、「エミュレータプラットフォーム」ドロップダウンメニューから新しいエミュレータの名前 (Sun Java Wireless Toolkit 2.5.2 など) を選択します。「閉じる」をクリックします。
デフォルトのエミュレータデバイスの変更
- MyHelloMIDlet プロジェクトのノードを右クリックし、「プロパティー」を選択します。「プロパティー」ダイアログのカテゴリにある「プラットフォーム」ノードを選択します。デフォルト構成のデバイスを変更できます。
- 「デバイス」ドロップダウンリストをクリックして、「QwertyDevice」を選択します。「閉じる」をクリックします。
- 再びアプリケーションを実行すると、アプリケーションは
QwertyDevice エミュレータで実行されます。
構成の使用
構成を使用して、1 つのプロジェクトに複数組の配布用 JAR および JAD (Java アプリケーション記述子) ファイルを作成することができます。これにより、1 つのソースコードを作成し、それをプログラミング対象の各モバイルデバイスに合わせてカスタマイズすることができます。
構成の追加
- MyHelloMIDlet プロジェクトのノードを右クリックし、「プロパティー」を選択します。「プロパティー」ダイアログにある「プロジェクト構成」ドロップダウンリストから「構成を追加」を選択します。「プロジェクト構成の追加」ダイアログが開きます。
- 「新規構成名」フィールドに、追加する構成の名前を入力します。この構成用に作成する JAR/JAD の配備先のプラットフォームが分かる名前の使用を推奨します。たとえば
BlackWhiteDisplay を入力して、「了解」をクリックします。これで、新しい構成が作成されます。
- 構成は、「プロパティー」ダイアログにある「構成を管理」ボタンを使用して追加することもできます。このボタンをクリックすると、構成を追加、削除、および複製するためのオプションを含む、「プロジェクト構成マネージャー」ダイアログが開きます。
プロジェクト構成の変更
「新規プロジェクト」ウィザードのテンプレートを使用して、さまざまなプロジェクト構成を作成できます。メインツールバーにある構成のドロップダウンメニューを使用して、プロジェクト構成を簡単に変更することもできます。
構成のカスタマイズ
プロジェクトには、いくつでも構成を追加できます。追加した個々の構成の設定は、「プロジェクトプロパティー」ダイアログで変更できます。
- MyHelloMIDlet プロジェクトのノードを右クリックし、「プロパティー」を選択します。「プロパティー」ダイアログのカテゴリにある「プラットフォーム」ノードを選択します。
- 「プロパティー」ダイアログの一番上の「プロジェクト構成」コンボボックスから「
BlackWhiteDisplay 」構成を選択します。
- 「プラットフォーム」ダイアログのコンポーネントはすべて無効になっています。これは、現在のところ、この構成が、このパネル用のデフォルト構成の使用する値を採用しているためです。パネル上部にある「"DefaultConfiguration" の値を使用」オプションの選択を解除します。これで、このパネルのすべてのコンポーネントが編集可能になります。
- 「デバイス」オプションを「DefaultGrayPhone」に変更します。
- 「プロパティー」ダイアログの一番上にある「プロジェクト構成」を切り替え、現在選択されている構成に基づいて「デバイス」オプションが変わることを確認します。この構成のカスタマイズ方法は、ダイアログのすべてのパネル (「一般」パネルを除く) で機能します。「了解」をクリックして、構成の変更を保存し、「プロパティー」ダイアログを閉じます。
アビリティーの作成
アビリティーは、プロジェクト構成の特定の属性です。画面サイズなどの物理的な属性である場合も、構成でサポートされている API や JSR である場合もあります。新しいアビリティーを作成して、1 つまたは複数のプロジェクト構成に関連付けることができます。その後プリプロセッサのコードブロックを使用して、そのアビリティーに特定のコードを関連付けることができます。あとで構成の追加または削除が必要になった場合に、すべてのコードを調べてその構成を各コードブロックに関連付ける必要はありません。このアビリティーを構成に追加するだけです。それにより、構成は、アビリティーに関連付けられているすべてのコードブロックに自動的に関連付けられます。
- MyHelloMIDlet プロジェクトのノードを右クリックし、「プロパティー」を選択します。
- 「カテゴリ」メニューツリーから「アビリティー」ページを選択します。
- 「プロジェクト構成」ドロップダウンメニューから構成を選択します。これでアビリティーが構成に関連付けられます。
- 必要に応じて、「"DefaultConfiguration" の値を使用」チェックボックスを選択解除します。
- 「追加」ボタンをクリックします。「アビリティーの追加」ダイアログが開きます。
- 「アビリティーの追加」ダイアログで、アビリティーの名前を入力するか、ドロップダウンメニューからアビリティーを選択します。必要に応じて、アビリティーの値を入力します。「了解」をクリックして、「アビリティーの追加」ダイアログを閉じます。これで、アビリティーが選択したプロジェクト構成に関連付けられました。
アビリティーをほかの構成に関連付けるには、「プロジェクト構成」メニューから別の構成を選択し、「追加」ボタンをクリックします。
特定の構成用プロセッサコードの追加
プリプロセッサブロックを使用して、1 つ以上のプロジェクト構成またはアビリティーに固有のコードを作成、管理、および追跡できます。コードは、指定した構成またはアビリティーに関してのみ有効 (または無効) になります。
- HelloMIDlet.java のエディタウィンドウで、TextBox がインスタンス化されているソースコード行 (
helloTextBox = new javax.microedition.lcdui.TextBox(null, "Make my day", 120, 0x0); ) を右クリックします。
- 行を右クリックし、「プリプロセッサブロック」>「If / Else ブロックを作成」を選択します。最初のピンクのセクションの「Make my day」文字列のあとに「Color」という単語を追加します。2 つ目のグレーのセクションで「Make my day」文字列のあとに「Gray」という単語を追加します。
//#if プリプロセッサ指示でマークされたコードは、有効な構成が指示の値 (この場合は DefaultConfiguration) に一致するときに有効になります。//#else プリプロセッサ指示で囲まれたコードは、有効な構成がプリプロセッサの値に一致しないときに使用されます。言い替えると、エミュレータは、有効なプラットフォームが「DefaultConfiguration」の場合は「Make my day Color」と表示し、有効なプラットフォームがほかのエミュレータプラットフォームの場合は「Make my day Gray」と表示します。//#endif プリプロセッサ指示がプリプロセッサブロックの終わりです。
プリプロセッサコードをテストするには、 エミュレータプラットフォームの変更 で説明されているように、さまざまなエミュレータデバイスを使用して MIDlet を実行します。
構成の実行
構成は個別に構築、実行することも、まとめて構築、実行することもできます。
- MyHelloMIDlet プロジェクトのノードを右クリックし、「プロジェクトを実行」を選択します。
- ツールバーにある構成のコンボボックスを使用して、構成を BlackWhiteDisplay に変更します。再度「実行」を選択します。
- Color と Gray の 2 つのエミュレータが表示されます。グレーのエミュレータに「Make my day Gray」と表示され、カラーのエミュレータに「Make my day Color」と表示されます。
関連項目
ここまでで、簡単なアプリケーションを作成し、複数のエミュレータで起動し、アプリケーションが複数のデバイスに正しく配備されるようにコードのカスタマイズを追加しました。MIDP と CLDC 向け開発入門の次の手順では、デバイス断片化の問題を解決する方法を学びます。