アットマーク・アイティ @IT@IT情報マネジメント@IT自分戦略研究所QA@ITイベントカレンダー  
 @IT > Master of IP Network > Mobile Connection > ezplusアプリを作ってみよう
 



ezplusアプリを作ってみよう


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

おもな内容
KJX作成ツールの環境整備
インストール
KJX作成ツールの実行
KJX作成ツールの初期設定
ezplusアプリのサンプルプログラムを作る
新規プロジェクトの作成
ソースの記述
ビルド
ezplusアプリをダウンロードさせるには
KJXファイルにチェックサムを付加する
ダウンロード用CGIの用意
HDMLによるダウンロードサイトの作成
ダウンロードして実行してみよう
こんなときにはどうする?
フリーのアプリに期待

 8月の初めにKDDIの運営するサイト「EZweb on the street」の技術情報のページで、「KJX作成ツール」が公開されました。このKJX(Kddi Java eXtension)は、KDDI向け携帯Java実行環境「ezplus」の実行ファイル形式です。ezplus対応端末は、HDML(Handheld Device Markup Language)で書かれたサイトからこのKJXファイルをダウンロードして、実行することができます。

 EZweb on the streetでは、すでにKDDI独自のプロファイル(KDDIP)の仕様が公開されていますが、このKJXのファイル形式が不明であったため、一般の開発者がezplus対応アプリケーションを作成することはできませんでした。しかし、KJX作成ツールが公開されたことにより、一般の開発者でもezplus向けのアプリケーションを作成できるようになります。

編集局注:KDDIPの仕様が書かれているezplusプログラミングガイドは、8/1付けでRev 1.01が公開されています。

 ここでは、KJX作成ツールを使っての開発、実機でのHelloWorldプログラム実行までをご紹介します。

ezplus概要
仕様 MIDP+KDDIP(KDDI Profile)
ファイルサイズ KJXファイルで50Kbytesまで
ネットワーク通信 Cメール通信のみ(次期バージョンからHTTP通信に対応)
データ保存 データストレージ10Kbytesまで(MIDPのRecordStore)
そのほか バイブレータ・LEDの操作、各種音楽ファイルの再生、位置情報の入手、電話帳データの入手が可能

 

   KJX作成ツールの環境整備

 現在ezplusアプリを開発・公開するには以下のような環境が必要となります。

ツール
Java 2 Standard Edition
Java 2 Micro Edition Wireless Toolkit
KJX作成ツール
ダウンロードCGI サンプルプログラム(Perl)
CRCチェックサム付加プログラム
サーバ
HDMLファイルが使えるサーバ
CGIが使えるサーバ
表1 ezplusアプリ作成に必要な環境

 Java 2 Standard Edition(JDK 1.3)とJava 2 Micro Edition Wireless Toolkit(J2MEWTK)はあらかじめインストールしておいてください。

 また、HDMLファイルが使えるサーバとCGIが使えるサーバは同じサーバでなくても構いません。お使いのサーバでHDMLファイルが利用可能かどうかは、サーバを提供しているプロバイダのWebページを探すか、サーバー管理者にお尋ねください。MIME設定の知識がある人は.htaccessファイルを使い設定することもできます。

 KDDIが採用しているMIDP(Mobile Information Device Profile)では、アプリケーションの情報を記録したJAD(Java Application Descriptor)ファイルと実行クラスやリソースファイルをまとめたJARファイルが必要となります。また、ezplusでは、これら2つのファイルに独自のヘッダを追加したKJXというファイルに変換しなければなりません。KJX作成ツールには、簡単なMIDP開発環境と、この変換を行うツールが含まれています。

●インストール

 EZweb on the streetのezplusに関するページからKJX作成ツール(KJX_tool_Ver1_0.exe:214Kbytes)をダウンロードします。実行すると「KJX_tool_kit_Ver1_0」というフォルダが作成され、実行ファイルなどが展開されています。

 以下、KJX_tool_kit_Ver1_0フォルダを「ezplus」と名前を変え、Cドライブのルートに置いた(c:\ezplus)と想定して解説していきます。

●KJX作成ツールの実行

 c:\ezplus\Tools\Dir2にCmdTool.jarというファイルがありますが、これがKJX作成ツールの本体です。JDK 1.3がインストールされている環境では、このファイルをダブルクリックして実行すると図1のようなウィンドウが立ち上がります。立ち上がらない場合は、同フォルダにある「CmdTool.bat」を実行するか、JDK 1.3が正常にインストールされていることを確認してください。

図1 KJX作成ツール実行画面画像をクリックすると拡大表示します

●KJX作成ツールの初期設定

 メニューの「tool > default env」を実行すると、図2のようなウィンドウが開きます。すべてのプロジェクトで共通の環境を設定してください。

 KJX作成ツールを「c:\ezplus」へコピーし、JDK1.3が「c:\jdk1.3」へ、J2ME Wireless Toolkitが「c:\J2MEWTK」にインストールされている場合は、以下のように設定します。

build
javac path c:\jdk1.3\bin\javac
jar path c:\jdk1.3\bin\jar
preverify path c:\J2MEWTK\bin\preverify
other after process path java -jar c:\ezplus\Tools\Dir1\KJXArchiver.jar -c %PROJDIR%\bin\%PROJ%.jad %PROJDIR%\bin\%PROJ%.jar %PROJDIR%\bin\%PROJ%.kjx
class path c:\J2MEWTK\lib\midp.zip;c:\ezplus\Tools\Dir1\kddip.jar
MIDlet
MicroEdition-Profile KDDIP-1.0
表2 KJX作成ツールの環境設定(表中の%PROJDIR%、%PROJ%はツールによりプロジェクトディレクトリパス、プロジェクト名に変換されます)

 executeは一切設定する必要がなく、MIDletはJADファイルのデフォルト内容を、commonはプロジェクト作成のルートを設定するものです。MIDlet、commonについては任意で設定してください。

図2 KJX作成ツールの環境設定画像をクリックすると拡大表示します

 

   ezplusアプリのサンプルプログラムを作る

 KJX作成ツールの設定が終了したら、早速サンプルプログラムを作成してみましょう。作成するのは、お決まりの「HelloWorld」です。

●新規プロジェクトの作成

 メニューの「file > new project」を選択すると、Project NameとProject Detailを入力するウィンドウが開きます。Project NameをHelloWorldに、Project Detailはプロジェクトの説明なので任意に(TESTなど)設定します。

 OKを押すと、先ほど設定した初期設定のウィンドウと同じようなウィンドウが出てきます。これはプロジェクト単位の設定で、必要であれば設定します。今回のHelloWorldの場合は、特に設定の必要はありません。

 なお、プロジェクト単位の設定は「project > edit env」でいつでも編集することができます。

●ソースの記述

 プロジェクト「HelloWorld」を作成すると、デフォルトでc:\ezplus\Tools\Dir2\project以下にプロジェクト名のフォルダが作成されます。さらにその中を開くと「bin、classes、res、src、tempclasses」というフォルダが作成されていますので、srcフォルダにJavaファイル(*.java)、resフォルダにリソースファイルを入れます。

 今回は、リスト1のHelloWorld.javaをメモ帳などを使って作成し、srcフォルダへ入れます。

import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;

public class HelloWorld extends MIDlet implements CommandListener
{
  Command exitCommand;
  Display display;

  public HelloWorld()
  {
    display = Display.getDisplay(this);
    exitCommand = new Command("Exit",Command.SCREEN,2);
  }

  public void startApp()
  {
    TextBox textbox = new TextBox("HelloWorld","Hello World!",256,0);
    textbox.addCommand(exitCommand);
    textbox.setCommandListener(this);
    display.setCurrent(textbox);
  }

  public void pauseApp()
  {
  }

  public void destroyApp(boolean unconditional)
  {
  }

  public void commandAction(Command command,Displayable screen)
  {
    if(command==exitCommand)
    {
      destroyApp(false);
      notifyDestroyed();
    }
  }
}
リスト1 HelloWorld.java

●ビルド

 ソースの記述・配置が終わったらCmdToolへ戻り、メニューバーの下にある[build](ビルド)ボタンを押してビルドします。ビルドでは、以下のことを自動でやってくれます。

  1. コンパイル
     JDK 1.3のjavac.exeを使い、srcフォルダにあるJavaファイルをコンパイルします。コンパイルしたクラスファイルはtempclassesへ出力されます。
  2. 事前検証
     J2MEWTKのpreverify.exeを使い、tempclassesにあるクラスファイルを検証し、検証済みのクラスファイルをclassesへ出力します。
  3. マニフェストファイル作成
     JARのマニフェストファイル(内容はJADとほぼ同じ)を作成します。
  4. JAR化
     JDK 1.3のjar.exeを使いclassesのクラスファイルとresフォルダにあるリソースファイルをJAR化し、binフォルダへ出力します。
  5. JADファイル作成
     アプリケーションの情報を記録したJADファイルを作成します。
  6. KJX変換
     KJX作成ツールのKJXArchiver.jarを使い、JADファイル、JARファイルと独自のヘッダを追加したKJXファイルがbinフォルダに作成されます。

 これでKJXファイルを手に入れることができました。しかし、実際にダウンロードさせるためには、EZwebの仕様からダウンロードさせるための用意が必要となります。

   ezplusアプリをダウンロードさせるには

 KJX作成ツールを使い、KJX形式のアプリケーションが作成できたら、それをダウンロードさせるための準備をします。

 EZweb on the streetの技術情報に、ダウンロードCGIのページがありますので、そこにある「サンプルプログラム(Perl)」をダウンロードします。

●KJXファイルにチェックサムを付加する

 ダウンロードするファイルの正当性をチェックするため、作成したKJXファイルにチェックサムを付加します。チェックサムを付加するツールをお持ちでない場合は、以下のJavaアプリケーションをダウンロードして使ってください。チェックサムを付加しないと、アプリケーションを実行できないので注意してください。なお、チェックサムの仕様については、ダウンロードCGIのページに詳細が書かれていますので参照してください。

CRCチェックサム付加プログラム
使用例
>java.exe CRC HelloWorld.kjx

●ダウンロード用CGIの用意

 先にダウンロードしたダウンロードCGIをそのまま使います。ただし、Perlへのパスは、お使いのサーバに合わせて設定してください。また、CGIの配置場所によっては、HDMLなどで使用するURLに変更が必要となることに注意してください。

●HDMLによるダウンロードサイトの作成

 ここではHDMLについての説明は省略します。詳しい情報を知りたい方は、EZwebのサイトや、「連載 HDMLでEZweb対応のページを作る」をご覧ください。

 使用するサーバーがHDMLに対応していない場合は.htaccessファイルによるMIME設定をすることで対応できますが、設定が複雑で危険をともなう場合もありますので、サーバに関する知識のない方は他の方法を取ることをお勧めします。

 今回のHelloWorldをダウンロードさせるには、リスト2のようなHDMLが必要となります。

<hdml version="3.0" markable="true">
<choice key="url" title="ezplus">
<action type="accept" task="gosub" dest="device:data/dnld?url=$url" label="OK">
<br>
<center>ezplus download
<ce value="http://server/download.cgi&name=HelloWorld.kjx
&size=1411&disposition=devkdjx&title=HelloWorld"
>HelloWorld
</choice>
</hdml>
リスト2 HelloWorldをダウンロードさせるHDML

 EZwebのサイトでダウンロードしたHDMLファイルとほぼ同じですが、ceタグのvalue属性を以下のように指定してください。

http://server/download.cgi download.cgiまでの絶対URL
name=xxxx.kjx KJXファイルのファイル名
size=xxxxx KJXファイルのファイルサイズ(チェックサム付加後のサイズ)(bytes数)
disposition=devkdjx ezplus用の属性値「devkdjx」
title=xxxx 端末で表示される名前

 

   ダウンロードして実行してみよう

 これで「チェックサム付加済みのKJXファイル」「ダウンロード用HDMLファイル」「ダウンロードCGI」が用意できました。あとは、これをHDML対応サーバへアップするだけです。KJXファイルはバイナリ、HDMLとCGIはアスキーモードでアップロードしてください。

 どうでしょう。ダウンロードしたものは動きましたでしょうか?

 なお、HDMLファイルを更新したはずなのに実機では内容が更新されていない場合があります。これはキャッシュを読みに行っているためで、端末側の履歴をクリアすることで問題は解決できます。

   こんなときにはどうする?

●HDMLファイルが開けない場合

 使用しているサーバがHDMLに対応しているか確認してください。対応していない場合は.htaccessファイルを編集するか、対応しているサーバで試してください。

●ダウンロードできない場合

 HDMLのceタグに間違いがないか確認してください。また、チェックサムが付加してあることを確認してください。

●一部の機能が使えない

 ezplusでは、ダウンロード元のサーバによってセキュリティレベルが設定されており、通常のWebサーバを利用する場合には使用できない機能があります(Cメールの連続送受信モード、データフォルダにあるファイルの読み込み、個人情報の入手など)。

●データストレージ(RecordStore)が使えない

 JADに「MIDlet-Data-Size : 1024」のように使用するデータサイズを指定する必要があります。KJX作成ツールに含まれる開発環境を使っている場合は、「project > edit env..」のMIDlet-Data-Sizeを編集します。

●PC上で実行できるエミュレータはない?

 残念ながらezplusに対応したエミュレータは現在のところありません。しかし、KDDIPのAPIを使用していないプログラムであれば、MIDP対応のエミュレータである程度動作させることができます。また、KJX作成ツールに含まれる開発環境にはエミュレータの設定らしき部分がありますので、今後KDDIから公式のエミュレータが公開される可能性もあります。

●C452CAでCanvas#getHeight()の値が実際とは異なる。

 C452CAでのCanvas#getHeight()の値は120ですが、標準の状態では120×108までしか表示されていません。しかし、アプリケーション起動中にezplusキーを押すことで画面の構成を変え、120×120まで使うことができるようになります。ezplusキーを押すことで変化する画面構成は以下の3種類です。

  • 上:電源と電波の表示、下:コマンドの表示(標準)
  • 上:なし、下:コマンドの表示
  • 上:電源と電波の表示、下:なし

 

   フリーのアプリに期待

 今回紹介した開発・公開方法は、KDDIの公式ツールを使ってはいるものの、少々複雑な部分があり、Java初心者が開発するには適しているとはいえません。しかし、世界標準規格であるMIDPを使った開発にいち早く取り組めることは、十分に魅力的で有益なことだと思います。もちろんezplusにしかできないこともいくつかあり、それらをうまく使ったアプリケーションを作成することもとても面白そうです。

 また、現在ezplus対応の公式コンテンツはまだ数が少なく、iアプリからの移植が大半を占めています。しかし、一般の開発者が開発可能となったことで、今後フリーのアプリケーションが増え、Web上での情報交換が活発になり、より高度な新しいアプリケーションが作成されることに期待したいと思います。

 



 


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

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