携帯アプリ開発のツボ@蝦名

開発チームの蝦名です。

今週末は弊社の毛鉤釣り部の研修会があります。
場所は、札幌からはるばる行くぜ、遠軽でございます。
 6/1 23:00PM 札幌発
 6/2 AM04:00 現地着
という強行(?)スケジュールでの開催です。
しかしながら、私は諸般の都合により欠席なのです (T_T)
一人札幌でタイイング(毛鉤造り)でもしながら留守番なのでございます。
次回こそは参加するぞ!


■携帯アプリ開発のツボ 〜その1.ツールのセットアップ〜
今回から「携帯アプリ開発のツボ」と題して、数回に渡って携帯アプリ開発にまつわるお話をさせていただきます。
(麻雀エンジンの話をしようとしたが、結構、ここには書けない話題が多くて……、というのは内緒です)
携帯アプリはJavaBrewで作成することになりますが、この記事ではJavaを採用したNTTドコモ社のiアプリの作成について説明します。


●基本中の基本
まずは、Javaの基本から。

JavaSun Microsystems社が開発したプログラム言語で非常に広い適用分野を誇っています。
その中でも、J2ME(Java 2 Platform, Micro Edition)は携帯電話等に最適化されたJava実行環境を提供します。
J2MEは更にサポートする機能によって、CDC(Connected Device Configuration)とCLDC(Connected Limited Device Configuration)というコンフィギュレーションに大別され、それぞれがサポートする基本的な機能が定義されています。
携帯電話は主にCLDCをサポートしています。
更にプロファイルと呼ばれる、実際の実行環境であるデバイスがサポートするAPIセットが定義されています。
DoJaやMIDPというのはプロファイルの種類をさしていて、それぞれのバージョン毎に使用できる機能やAPIが決められています。
詳しくはこちらで。
http://sdc.sun.co.jp/java/j2me/index.html


この記事ではNTTドコモ社のiアプリをターゲットにしていますが、その理由は次の3つです。
・開発ツールがフリーで入手可能であること
・開発情報の入手に、ほぼ制限が無いこと
・実機での検証もそれなりに容易であること


NTTドコモ社のiアプリの解説ページはこちら。
http://www.nttdocomo.co.jp/service/imode/make/content/iappli/


まずは、ツールを集めましょう。
必要なのは次の3つです。

J2SE SDK(これが無いと始まりません。1.3が推奨されていますが1.4でも大丈夫です)
 http://java.sun.com/j2se/1.4.2/ja/download.html

Eclipse(今時は統合開発環境がデフォルトでしょう?)
 http://www.eclipse.org/

 が基本ですが、日本語化したり色々と手間がかかるので、
 http://www.vector.co.jp/soft/winnt/prog/se383159.html

 こういうのも、とても便利です。

・DoJa3.5プロファイル向け開発ツール(Foma 90xの主要機種がサポートされます)
 http://www.nttdocomo.co.jp/service/imode/make/content/iappli/about/index.html#005


ファイルを集めたら、
 1.J2SE SDK
 2.Eclipse
 3.DoJa3.5プロファイル向け開発ツール(Eclipse x.x.xプラグインも忘れずに)
の順番でインストールします。


インストールが完了したら、軽く動かして見ましょう。


1.Eclipseを起動します。


2.プロジェクトを作成します。
  ・Eclipseのメニューから[ファイル]→[新規]→[プロジェクト]と選択し、
   ウィザードのツリーコントロールで[Java]→[DoJa3.5 プロジェクト]を選び、
   [次へ]ボタンをクリックします。
  ・プロジェクト名に好きな名前を入力して、[終了]ボタンをクリックします。
   普通は「Hello」と入力するのが王道でしょう。
  ・Eclipseのメニューから[ウィンドウ]→[パースペクティブのカスタマイズ]を選択し、
   [コマンド]タブを選択して[その他]→[DoJa-3.5設定]にチェックを付けて
   [OK]ボタンをクリックします。
   これでJavaパースペクティブでDoJa3.5の設定を行うことが出来るようになります。
  ・メニューから[ウィンドウ]→[設定]を選択し、[Java]→[コンパイラー]で
   [コンパイラー準拠レベル]を「1.3」に設定します。


3.ADFの設定を行ないます。
  ・パッケージエクスプローラでプロジェクトを選択し、
   メニューから[プロジェクト]→[DoJa3.5設定]を選択します。
  ・表示されたウィンドウの[ADF設定]タブを選択して、
   次の様に入力します。
    AppNameにはアプリケーションの名前を設定します。
    ここでは「HelloApp」と入力します。
    AppClassは実行するクラス名を設定します。
    ここでは「HelloClass」と入力します。
    PackageURLにはJARファイル名を入力します。
    ここでは「Hello.jar」と入力します。
    (Eclipseのデフォルトでは「プロジェクト名 + ".jar"」という名前で
     JARファイルが作られます)


4.アプリケーションクラスを作成します。
  ・パッケージエクスプローラでプロジェクトを右クリックして、
   [新規]→[クラス]を選択します。
  ・[新規Javaクラス]ウィンドウで次の様に入力します。
    ・[名前]に「HelloClass」と入力します。
    ・[スーパークラス]の横の[参照]ボタンをクリックし、
     [スーパークラスの選択]ウィンドウを表示します。
      [型を選択してください]に「IApplication」と入力し、
      [一致する型]に「IApplication - com.nttdocomo.ui」と
      表示されたら[OK]ボタンをクリックします。
    ・[public static void main(〜〜〜)]のチェックを消し、
     [終了]ボタンをクリックします。


5.パネルクラスを作成します。
  ・パッケージエクスプローラでプロジェクトを右クリックして、
   [新規]→[クラス]を選択します。
  ・[新規Javaクラス]ウィンドウで次の様に入力します。
    ・[名前]に「HelloPanel」と入力します。
    ・[スーパークラス]の横の[参照]ボタンをクリックし、
     [スーパークラスの選択]ウィンドウを表示します。
      [型を選択してください]に「Panel」と入力します。
      [一致する型]に「Panel - com.nttdocomo.ui」と表示されたら、
      それを選択して[OK]ボタンをクリックします。
    ・[public static void main(〜〜〜)]のチェックを消し、[終了]ボタンをクリックします。


6.HelloClass#startメソッドでパネルを作成します。
  パッケージエクスプローラでHelloClass.javaをダブルクリックして
  ソースコードを表示します。

public void start() {
    // TODO 自動生成されたメソッド・スタブ
    Display.setCurrent(new HelloPanel()); //この行を追加します
}

  また、インポートするクラスを調整します。

import com.nttdocomo.ui.*; //この行を変更「com.nttdocomo.ui.Panel」→「com.nttdocomo.ui.*」


7.HelloPanelクラスをインプリメントします。
  コンストラクタでLabelオブジェクトを作成して「Hello World!」と表示します。
  パッケージエクスプローラでHelloPanel.javaをダブルクリックして
  ソースコードを表示します。

import com.nttdocomo.ui.*; //この行を変更「com.nttdocomo.ui.Panel」→「com.nttdocomo.ui.*」

public class HelloPanel extends Panel {
    public HelloPanel() {
        add(new Label("Hello World!"));
    }
}


8.実行します。
  メニューから[実行]→[構成および実行]を選択します。
  [構成]リストで[DoJa3.5アプリケーション]を選択して[新規]ボタンをクリックします。
  [名前]には適当な名前を入力します。
  それ以外の項目はデフォルトで大丈夫です。


9.[実行]ボタンをクリックします。
  上手くいくとエミュレータが起動して、画面に「Hello World!」と表示されます。
  失敗した場合には、コンソールウィンドウに失敗の原因が表示されます。
  原因を手がかりに、上記の手順を見直してみてください。