アットマーク・アイティ @IT@IT情報マネジメント@IT自分戦略研究所QA@ITイベントカレンダー  
 @IT > Master of IP Network > Mobile Connection > 実機で動作するiアプリの作成
 

DoJaによるiアプリの開発入門(2)

実機で動作するiアプリの作成

服部隆志
http://www.sinsen.org/
http://www.ngy1.1st.ne.jp/~takashi/sinsen_index.html
2001/5/12


Smart&Social」フォーラム
スマートでソーシャルなアプリ開発のための総合技術情報フォーラム

本稿は2001年に執筆されたものです。携帯アプリ開発の最新情報はこちらへ、どうぞ

/fjava/index/index_eclipsejava.html 携帯アプリを作って学ぶJava文法の基礎
Java文法の基礎を楽しみながら学ぶために、携帯電話のJavaアプリを作ってみましょう。携帯電話のJavaだけにとどまらないJava全般の文法の基礎が理解できる初心者向け入門連載です
Smart&Social」フォーラム

今回のおもな内容
iアプリの制限
ソースの作成
JAMファイルの編集
ビルドとエミュレータでの実行
ダウンロード用HTMLの作成
実機での動作確認

 前回「NTTドコモの公式開発ツールを使おう」では、NTTドコモ公式のiアプリ作成ツール「J2ME Wireless SDK for the DoJa」のインストール、サンプルのエミュレータ実行までを紹介しました。今回は、503iシリーズの実機で動作するiアプリの作成、実機での動作確認を行ってみます。

 

  iアプリの制限

 実際のプログラムに入る前に、iアプリ作成上の基本となる制限について紹介します。iアプリには、ユーザーに安全で快適な環境を提供するために以下のような制限があります。

  • クラスファイルとリソースファイルをJAR圧縮で10Kbytesまで
  • 永続データ保存(スクラッチパッド)は5Kbytes
  • ネットワーク接続できるのはiアプリをダウンロードしたサーバのみ
  • 利用できるネットワークプロトコルはHTTP・HTTPSのみ
  • 数値IPアドレスのサーバとは接続できない
  • ほかのアプリケーションとの交信はできない
  • 電話機に保存されているほかのデータとの交信はできない
  • 浮動小数点(float、double)、ファイナライズが使えない

 これらの制限により、高いセキュリティ能力があるiアプリが作成できますが、当然やれることが限られてきます。その制限の中で、何をどうやって実現させるかはプログラマの腕の見せどころとなります。

  ソースの作成

 iアプリは、大きく以下の2種類に分けられます。

  • ボタン、テキストボックスなどを使うPanel型アプリ
  • 低レベルインターフェイスが使えるCanvas型アプリ

 Panel型はリッチなGUIを利用したツールに、Canvas型はゲームなどに利用されることが多いようです。

 iアプリでは、IApplicationクラスのstartメソッドでPanel、あるいはCanvasをDisplayに関連付けることで携帯画面にiアプリが表示されます。

 では、お約束の「HelloWorld」プログラムをPanel型とCanvas型の両方で作ってみましょう。

 ソースの記述をする前に新規プロジェクトを作成します。J2ME Wireless SDK for the DoJa(以下DoJaと略記)を起動し、メニューバーの「新規ボタン」あるいはファイルメニューの「新規作成」で新規プロジェクトとして「PanelHelloWorld」と「CanvasHelloWorld」をそれぞれ作成します。

図1 新規プロジェクトの作成

 プロジェクトが作成されると、DoJaのappsフォルダ以下にプロジェクト用のフォルダが作成されます(例えばC:\J2MEWSDK4DOJA\apps\PanelHelloWorldなど)。そのフォルダ内には「作成されたiアプリが入れられるbinフォルダ」「iアプリで使用するリソースファイル(GIFイメージやMLDファイル)を入れるresフォルダ」「ビルドするソースファイル(*.java)を入れるsrcフォルダ」が作成されます。

 環境が整ったところで、実際のソース記述に入ります。DoJaには、ビルドするソースファイルを作成するエディタの機能がないため、メモ帳もしくは普段使っているテキストエディタを使い、以下のプログラムを入力してください。それぞれ名前を付けて保存し、作成したプロジェクトのsrcフォルダ内に移します。

import com.nttdocomo.ui.*;

public class PanelHelloWorld extends IApplication implements SoftKeyListener
{
  Panel panel;
  Label label;

  public void start()
  {
    panel = new Panel();
    panel.setSoftLabel(Frame.SOFT_KEY_1,"終了");
    panel.setSoftKeyListener(this);

    label = new Label("HelloWorld");
    panel.add(label);

    Display.setCurrent(panel);
  }

  public void softKeyPressed(int softKey)
  {
    if(softKey==Frame.SOFT_KEY_1)
    {
      terminate();
    }
  }
  public void softKeyReleased(int softKey)
  {
  }
}
リスト1 Panel版HelloWorld

import com.nttdocomo.ui.*;

public class CanvasHelloWorld extends IApplication
{
  public void start()
  {
    Display.setCurrent(new HelloCanvas());
  }
}
class HelloCanvas extends Canvas
{
  
public HelloCanvas()
  {
    setSoftLabel(Frame.SOFT_KEY_1,"終了");
  }

   public void paint(Graphics g)
  {
    g.setColor(g.getColorOfName(g.BLACK));
    g.drawString("HelloWorld",0,getHeight()/2);
  }

   public void processEvent(int type,int param)
  {
    if(type==Display.KEY_PRESSED_EVENT)
    {
      if(param==Display.KEY_SOFT1)
      {
        (IApplication.getCurrentApp()).terminate();
      }
    }
  }
}
リスト2 Canvas版HelloWorld

 このiアプリでは、ソフトキーと呼ばれるボタンでiアプリが終了するようになっていますが、Panel版とCanvas版とではソフトキーの設定方法は同じでも、状態の入手方法が違うことに注意してください。Panel版ではSoftKeyListenerのsoftKeyPressed()、softKeyReleased()メソッドを利用しているのに対し、Canvas版ではCanvasクラスに備わっているprocessEvent()メソッドにより低レベルイベントDisplay.KEY_PRESSED_EVENTを入手し、変数paramの値がDisplay.KEY_SOFT1であるかの判定をして初めてソフトキーが押されたという情報が入手できます。

  JAMファイルの編集

 ソースの記述が終わったら、iアプリの情報を設定するJAMファイルを作成します。JAMファイルとは「Java Application Manager」の略で、ADF(Application Descriptor File)とも呼ばれます。iアプリ対応携帯電話は、iモードでこのJAMファイルを参照し、iアプリの情報を収得・ダウンロードします。

 DoJaを利用する場合、JAMファイルの作成は「アプリケーションの属性設定」で行います。

 最低限必要な項目とその意味を表1に記します。

AppName 携帯電話からiアプリを選ぶときに表示される名前
AppSize JAR化されたファイルのファイルサイズ。ビルドすると自動的に代入される
PackageURL JARファイルのURL。絶対URLと相対URLが使える
AppClass 実行されるIApplicationクラスの名前
LastModified JARの最終更新情報。ビルドすると自動的に代入される*1
SPsize スクラッチパッドを使用する場合に、最大何バイト使用するかを指定する。使わない場合は必要ない
UseNetwork

ネットワーク通信を使用する場合にhttpを指定する。使わない場合は必要ない

表1 JAMファイルの属性設定

*1:P503iの4月問題について
 前回の記事にも編集局から注釈がありましたが、P503iにはJAMファイルのLastModified解釈部分にバグがあり、4月「Apr」とJAMに書かれた場合にエラーが発生し正常にダウンロードすることができません。対処法としてはJAMファイルをメモ帳などで編集し「Apr」と書かれている部分を3月「Mar」や5月「May」などに変更することです。4月を過ぎた現在では必要ないかもしれませんが、来年の4月に開発する場合は注意が必要です。

図2 すでに入力されているPackageURLのほか、AppName、AppClassを入力しておけばよい

図3 AppSize、LastModifiedは自動的に設定してくれる

 

  ビルドとエミュレータでの実行

 ソースとJAMファイルの用意ができたら、ビルドしてみましょう。エラーがある場合は、DoJaのテキストエリアにエラーの詳細が表示されます。

 ビルドが正常に終了すると、プロジェクトのbinフォルダ内にJAMファイルとJARファイルが作成されます。このJARファイルが携帯電話にダウンロード・実行されることになります。

 実行ボタンを押し、前回サンプルを実行したエミュレータで正常に動作するか確かめてみましょう。

図4 エミュレータでの実行画面。左がPanel版、右がCanvas版

 

  ダウンロード用HTMLの作成

 JAMファイル、JARファイルの準備ができたら、iアプリをダウンロードするためのHTMLファイルを作成します。

 ObjectタグでJAMファイルを指定し、Aタグのijam属性でJAMファイルが指定されたObjectタグを指定します。

<html>
<head>
<title>HelloWorld</title>

<object declare id="application1" data="PanelHelloWorld.jam" type="application/x-jam"></object>
<object declare id="application2" data="CanvasHelloWorld.jam" type="application/x-jam"></object>

</head>
<body>

HelloWorld
<hr>

<a ijam="#application1" href="temp.html">PanelHelloWorld</a><br>
<a ijam="#application2" href="temp.html">CanvasHelloWorld</a><br>

</body>
</html>
リスト3 iアプリをダウンロードするためのHTMLファイル

 

.
  実機での動作確認

 これで用意するものはすべて準備できました。あとは用意できたファイルをFTPソフトを使いサーバにアップし、iモードでアクセスするだけです。ただしJAMファイル、HTMLファイルはアスキーモード、JARファイルはバイナリモードで転送することに注意してください。

 それでは、転送したHTMLファイルにアクセスして、サンプルのiアプリをダウンロードしてみましょう。どうでしょうか。iアプリは実行できたでしょうか?

図5 P503iでの実行画面。左がPanel版、右がCanvas版

■次回の予告

 今回は、文字を表示するだけの非常に地味なiアプリの作成を行いました。次回は、絵、音、バックライト、バイブレータを使ったiアプリの作成を行います。

「連載 DoJaによるiアプリの開発入門」


 


 
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

   
@ITトップMobile Connectionフォーラム トップ会議室利用規約プライバシーポリシーサイトマップ