と , preverify 後のクラスファイル用のフォ ルダを作っておくと便利です。ここではそ れぞれ「 unverified 」「 preverified 」としました が , フォルダ名は何でもかまいません。 ・手順 2 「 c:Yi-jadeYsamplesYJvmine 」以下の次のフ ァイルを「 c:YworkYjvmine 」にコピーします。 ・ JVMine. java(Java ソースファイル ) ・ JVMine. jam(JAM ファイル ) ・手順 3 「 c:}i-jadeYsampIesYjvmine}pics 」フォノレ ダを「 c:YworkYjvmineYpreverified 」にコビー します。 pics フォルダには jvmine が使う画像ファ イルの一式が入っています。コビー後のフ ァイル構成は Fig. 13 のようになります。 コンバイルと p 「 eve 「 ify それでは実際にコンパイルと preverify を 行ってみましよう。 ・手順 1 「 c:YworkYJvmine 」に移動します。 ・手順 2 コンノヾイルします。コンパイルのコマン jO. gif-vj12. gif ドは , Fig. 13 コピー後のファイル構成 unve 「 ified p ℃ S p 「 everified JVMine. jam JVMine. java c:%wo 「 k%jvmine フルキー ( テンキーではなく ) の囹から 9 PC のキー TabIe 2 ト JADE におけるキーの対応 javac —g :none -bootc ー asspath c :*i -jade*i- jade-p. jar;c:*j2me—cldc *bin*common*api*c lasses -d unverl fied * . java です。 javac のオプションの意味は次のとお りです。 ・「 - g : none 」は「テパッグ情報を付けない」 という意味 ・「 -bootclasspath 」はブートストラップク ラス ( Java プログラムの起動時に読み 込まれるクラス ) のパスを指定する ・「 -d unverified 」はクラスファイルの出 カティレクトリを「 unverified 」にする コンパイルが終わると , 「 c:YworkYjvmine Yunverified 」に「 JVMine. class 」と「 JVMineC anvas. class 」が作成されます ・手順 3 preverify します。コマンドは , preverify —c ー asspath c :*i-jade; c : j2me—c ldc*bin*common*api*c lasses -d preverified unverified です。 preverify のオプションの意味は次の とおりです。 ・「 -classpath 」は preverify に用いるクラ スのパスを指定する ・「 -d preverified 」は preverify 済みクラス ファイルの出力ティレクトリを「 preveri fied 」にする 工ミュレータを使った実行 工ミュレータを起動します。コマンドは , java -jar c:*i-jade*i-jade-p. jar c: *work*jvmine*preverified*JVMine. c lass です。あるいは , java -jar c:*i-jade*i-jade-p. コ a て でエミュレータだけ起動して , 「 i-JADE 携 対応する i アプリ端末のキー i アプリ端末の 0 から 9 の数字キー i アプリ端末のソフトキー 1 とソフトキー 2 i アプリ端末の選択キー i アプリ端末の方向キー 帯電話工ミュレータコントロールバネル」 (Fig. 14- ( a ) ) の [ ファイルはアプリのオープ ン ] からクラスファイル (c:}work}jvmine}pr everified}JVMine. class) を選択するか , 「 i アプリ (ADF/main class) の指定 ( U Ⅲノファ イル ) 」のテキストフィールドに「 c : \ work v mineYpreverifiedYJVMine. class 」を入力して もかまいません。 起動に成功すると , Fig. 14- ( b ) のように Fig. 14 i - JADE 携帯電話工ミュレータ ファイルヘルプ gt-JADE 携帯電話工ミュレータコントロールバネル ( a ) コントロールバネル CftworRjvmine\preverifiedlJVMine. class アゴリ、第 OF ⅱれ山い指定 0 いフャイル厂 P5J3i ぎメッセトジ ( b ) 工ミュレーション画面 ( P503i ) ExiE PC のカーソルキー PC の [ 亟 ] キー PC の匠新キーと幻キー 38 C MAGAZINE 2001 5
レン、、 i アフリフログラミング ・画面の書き換えが遅い ・液晶の応答が遅い機種もある ・ボタンの操作性が必ずしもよくない ・通信機能を使うとバケット料金が発生 プログラマの目で見た する i アプリの動向研究 とくに悩みどころなのは処理速度の遅さ と i アプリサイズの上限の低さです。処理速 度が端末の種類によって違うことにも注意 どのような i アプリが作れるのかは , すでに配布 が必要です。実際に , P503i や F503i に続い されている i アプリを見るのがいちばんです。本 て発売された N503i では処理速度が向上し 章では i アプリを作るときの参考となるようにさ たために , 一部の i アプリの表示速度が速く まざまな既存の i アプリを検証してみます。 なってしまったそうです。端末の速度が違 はたん っても破綻しないように気を配って , プロ グラムを設計しなければなりません。 キャラクタの大きさに見る i アプリの現状と入手方法 i アプリではハードウェアの制限が厳しい i アプリ ぶん , Java アプレット以上にプログラマの 創意工夫が要求されます。しかし携帯電話 i アプリ端末は 2001 年 2 月末に発売された 現行の i アプリ端末は画面の書き換え速度 ならではの特色を生かせば , 従来になかっ ばかりですが , 2001 年 3 月中旬現在で約 600 が遅く , 機種によっては液品の応答速度も たスタイルのアプリケーションを生み出せ 本もの i アプリを紹介しているサイトもあり 遅いため , 動きの派手なゲームは苦手です。 るかもしれません。 ます。あっという間に大増殖したこれらの まして , ゲーム専用機のように大きなキャ i アプリを概観して , プログラマとしての観 ラクタを表示したり滑らかなアニメーショ i アプリ開発のための資料 点から技術的な分析を加えてみます。 ンを行うのは困難です。 i アプリを入手するには , i アプリ登録サ 軽快に動かすためにはある程度キャラク i アプリを開発するうえで参考となる資料 イトを訪ねるのが簡単です。「ギガアプリ タを小さくせざるをえませんが , この場合 は , NIT ドコモによる開発ガイドと , API (http://g-叩pli.net/i/) 」や「アプリ☆ゲット には操作性や視認性のよさをいかに保つか リファレンスです。これらは , (http://appget.com/) 」には , それぞれ 500 が重要になります。逆に , キャラクタを大 本以上の i アプリが登録されており , 望みの http://www nttdocomo. co. jp/i/java/ きくするときには処理速度の遅さをいかに で , それぞれ PDF ファイルとして入手でき i アプリをカテゴリから探すことができます。 目立たなくするかが大事です。 ます。同ページには i アプリの仕組みや , FA Google (http://www.google.com/) などの i こでは , 各社の i アプリゲームを , 登場 Q なども掲載されています。なお , TabIe 1 モード対応の検索エンジンを活用するのも するキャラクタの大きさ別に見てみましょ に i モード Java 拡張 API の主なクラスの機能 よいでしよう。もちろん , 携帯電話のメニ をあげました。 ューリストから , 「ゲーム / 占い」など i アプ 数ドットの小さなキャラクタ i アプリを ( i モードの ) web で公開するに リがありそうなジャンルのサイトを探す方 は , i アプリのダウンロードベージも作らな 法もあります。 画面や液品の遅さに対処するには , キャ ければなりません。 Web"<—ジは i モード対 現行の i アプリ端末は , PC に比べると処 ラクタを小さめに作り , 120X 130 ピクセル 応 HTML で記述します。 i モード対応 HTML 理速度は信じられないほど遅く , i アプリの の解像度を生かして広いフィールド画面を で使用できるタグに関しては , サイズにも 10K バイトという厳しい制限が 構成する , というのも有効な解です。小さ あります。このような状況下ですが , ゲー http://www.nttdocomo.co.jp/i/tag.html なキャラクタを使っている i アプリの代表と にリファレンスマニュアルがあります ムメーカーを中心とした各社は早くも i アプ しては , おなじみの「パックマン」 (Fig. 2- リ開発競争に乗り出しています。各社とも (a) , 「ナムコステーション」内の「アプリキ 編集部注 : 本稿作業中に ( 株 ) N T ドコモからエミ ュレータやツール , コンポーネントライプラリ に限られた性能の中でいかに魅力的なコン ャロット」 ) や「スペースインべーダー」 (Fi を集めた「 J2ME W1reIess SDK for the DoJa rele ase2.2 」が発表されました (http://www.n面0C0 テンツを作ろうかと工夫を凝らしているの g. 2-(b), 「げ ~ むタイトー」内の「 G@meパ mo. co.jp/i/java/tool. html) 。これについて詳し で , i アプリを自分で作成する際にも何かと ーク」 ) があります。 くは次号にて解説します。なお , 本特集の内容 だけで i アプリを作ることはもちろん可能です。 ヒントになることが多いかと思います しかし , これらの i アプリで使っている数 特集 2 チャレンジ ! i アプリプログラミング 31
たとえば「サムライロマネスク」はバック ライトの On / O Ⅱを繰り返すことによって画 面全体をフラッシュさせる演出を , 非常に 効果的に使っています。後述しますが , パ ックライトは簡単な API で点灯 / 消灯できる ので , フラッシュの演出をプログラムに組 み込むのは比較的容易です。あとはいかに うまく使いどころを選ぶかです。 機能別に見る i アプリ 今までは主に画面表示に着目して i アプリ を見てきましたが , i アプリには表示以外に も魅力的な機能があります。たとえばサー バとの通信機能や , スクラッチパッドと呼 ばれる記憶領域 , 時間 / 日付の取得機能が その例です。 そこで今度は , 各種の機能別に i アプリを 紹介します。 i アプリでどんなことができる のか参考にしてください。 通信機能活用で情報を リアルタイムにキャッチ 株式市場や外貨市場の状況をリアルタイ ムに通知する i アプリが , 「カード / 証券 / 保 険」や「モバイルバンキング」のカテゴリの 下に数多く登録されています ( Fig. 3- ( a ) ) 。 これらの多くは登録銘柄が指定価格になる と通知してくれる仕掛けになっています。 通信機能を利用して他ユーザと交流 先に紹介した「サムライロマネスク」では Fig. 3 機能に特徴を持つ i アプリ ( a ) 登録銘柄の株価を自動更新で表示する 「 kabu.com 」 品△貿易 0437 / 東京 1 2 : 40 llllllllld 12 / 26 01 / 12 01 / 26 △△銀行 514 ( 10 : 12 ) 株価 Okabu ℃ om ( b ) 時計 , タイマ , 電卓などの i アプリが公 開されている「からくりキャラつば ! 」 0 0 APPROVAL No. SI OI 1 203 ◎ 1 976-2001 SANRIO CO. , LTD. i アプリ開発環境の セットアップ 章では i アプリを作るために必要な準備 して , 必要なファイルの入手方法とそ のセットアップ , そしてコンバイルと実 ラの手順を解説します。 i アフリフログラミング 他ューザとチャットや「合戦」を体験するこ とができます。また , 「対戦 ! がんこ盤」 ( 「ドワンゴかもね」 ) では , 他ユーザと対戦 できるチェスやリバーシなどのゲームが充 実しています。 ダウンロードしたデータを表示 占いや天気予報などの i アプリの中には , ダウンロードしたデータを表示するだけで , 一見 cgi のみで実現できそうなものもありま す。しかし , 一度ダウンロードしたデータ を端末に保存して通信を削減したり , 表示 にアニメーションを利用して表現力の向上 を図るなど , i アプリの機能を活用しようと いう試みが見受けられます。 時間取得機能を利用した 待ち受け i アプリ 時間 / 日付取得機能を中心に据えた i アプ リとしては , 待ち受け時計 ( 「着信メロディ / カラオケ」→「 Disne ⅵ」 ) やタイマ ( 「ゲー ム / 占い」→「バンダイ・チャンネル」→「か らくりキャラつば ! 」 ) があります (Fig. 3- (b) ) 。 i アプリとしては非常にシンプルなも のですが , 自作する観点から見ると簡単に 作れるのが魅力です。あんがい , お気に入 りのキャラクタの時計やアクセサリを作る のが , 自作 i アプリの主流になるかもしれま せん。 必要なソフトウェアの入手 i アプリのプログラミングを楽しむため に , まずは開発環境を整備することにしま しよう。本章では , i アプリ開発に必要なソ フトウェアの入手 , インストール方法 , そ して開発環境の試運転までを詳しく説明し ます。 i アプリ開発には次の 3 つのソフトウェア が必要です。まずは本誌の付録 CD - ROM と Web を活用して , 必要なソフトウェアをそ 特集 2 チャレンジ ! i アプリプログラミング 33
携帯電話を模したしゃれた画面で , i アプリ がエミュレートされます。これは P503i の工 ミュレーションですが java -jar c:*i-jade*i-jade-f. jar c : *work*jvmine*preverified*JVMine. c lass のように「 i-jade-f. jar 」を指定すると F503i の 工ミュレーションが可能です。 工ミュレータはマウスまたはキーポード で操作できます。マウスの場合は i アプリ端 末の画像上のボタンをクリックします。キ ーボードの場合は PC のキーと i アプリ端末の キーが TabIe2 のように対応します。 方向キー , 選択キーというのは i アプリ端 4 はじめての i アプリ制作 開発環境のセットアップを終えたので , さづ そく i アプリの制作に取りかかります。本章で ま , ごく簡単な i アプリの制作を通じて , i ア プリの基本構造と , 作成した i アプリを Web 、、公開するまでの手順を解説します。 最初の i アプリ 初めてということで , シンプルなアニメ ーションを行う i アプリ「 FirstApp 」を作りま す (Fig. 15- (a) ) 。 これは i モード Java 拡張 API の Canvas クラ Fig. 15 制作する i アプリの動作画面 ーロ団ⅱ 0 リ r ls を i-APPLI スを用いて , 画面の中央に文字列を表示す るアプリケーションです。ただ表示するだ けではなく , スレッドを使って一定時間お きに文字列と背景の色を変更します ( Fig. 15- (b) ) 。また , この i アプリは「ソフトキー 2 を押すと終了する」というごく簡単なイベ ント処理も含んでいます。 0 リ r 1 i-APPLI 一定時間おきに文字列と背景の色が変わる 簡単なア二メーションを行う i アプリ レン、、 i アフリフログラミング 末の画面の下の中央にあるキーです。 P503i では方向キーと選択キーが一体化していま す。 F503i では 4 つの方向キーと , 中央に「 i 」 と刻印された選択キーがあります。 また , ソフトキーというのは i アプリ端末 の画面の左下と右下にあるキーです。左下 がソフトキー 1 , 右下がソフトキー 2 です。 Java ソースプログラム の解説 FirstApp アプリケーションの Java ソース プログラムは List 1 です。 i アプリは「アプリ ケーション」と呼ばれてはいますが , プロ グラムとしては「 Java アプレット」に近い構 成です。 以下 , この List 1 の内容に関して詳しく 説明します。 i アプリの基本は pp ⅱ cation クラス List 1- ( 1 ) は i モード Java 拡張 API の import です。 i モード Java 拡張 API には , 主にユー ザインタフェイスを構築したり , 画像や音 を扱うために必要な各種のクラスが用意さ れています。 List 1- ( 2 ) はアプリケーションの本体とな るクラスです。ここではクラス名を「 FirstA pp 」としましたが , クラス名は任意です。 ただし , 以下の 2 つのルールがあります ・ public クラスにして , ファイル名とク ラス名を同一にすること ・ pp ⅱ cation クラスのサブクラスにする こと (extendslApplication) i アプリは sta ( ) メソッドから 起動する List1- ( 3 ) はアプリケーションの起動時に 呼び出される sta れ ( ) メソッドです。起動時 に呼び出されるという点で , アプレットの sta れ ( ) メソッドに似ています。 List 1- ( 3 ) の sta れ ( ) メソッドの内部では , 描画領域となる AppCanvas クラスを初期化 特集 2 チャレンジ ! i アプリプログラミング 39
開しています。 なお , 残念ながら無償で手に入る開発環 境だけではメーカー拡張ライプラリは利用 できません。しかしすべての機種で動く i ア プリを作るのが本筋のように思えますし , 今は特定機種だけの機能でも将来的には標 準機能となる可能性もあるので , プログラ マの立場としてはとりあえずあまり気にす る必要はないでしよう。 JAR ストレージ i アプリを i アプリ端末にダウンロードさ せるには , i アプリのプログラムと関連ファ イルー式を 1 つの JAR(Java ARchive) ファイ ルにまとめる必要があります。 i アプリ 1 っ に相当する JAR ファイルのサイズの上限は わずか 10K バイト ( 10240 ノヾイト ) です。これ は i モード端末の 9600bPS のダウンロード速 度との兼ね合いから定められたサイズだそ うです。 実際に i アプリを作ってみると , たった 10 K バイトの壁などはすぐに越えてしまいま す。とくに画像や音などのデータはほとん ど入りません。画像や音を豊富に使う市販 の i アプリの多くは , i アプリの実行時に Web に接続して , データをダウンロードしてい るようです。しかしダウンロードにはバケ ット料金がかかるので , これらを考えると 設計が難しいところです データストレージ ( スクラッチバッド ) スクラッチパッドというのは , i アプリか ら利用可能な記憶領域です。スクラッチパ ッドはファイルシステムのようなもので , i アプリを終了してもスクラッチパッドに書 き込んだ内容は消えません。次回 i アプリを 起動したときには , 前回書き込んだ内容を 読み出せます。 したがって , たとえばゲームならばゲー ムの進捗状況やハイスコアを , ツールなら ば作業中のデータやダウンロードした情報 を , スクラッチパッドに保存しておけます。 スクラッチパッドの標準的な容量は 5K バイ トとされていますが , それ以上の容量を持 30 C MAGAZINE 2001 5 つ機種もあるようです。 i アプリ本体のサイ ズは 10K バイトに制限されているので , 入 りきらないデータは i アプリの実行時に Web からスクラッチパッドにダウンロードする , というのも 1 つの方法です。 Java AppIication Manager (JAM) JAM は i アプリ端末上の i アプリの管理を 行います。 JAM の機能は , i アプリの一覧表 示 , i アプリの実行や強制終了 , そして i ア プリのインストール / 更新 / 削除などです。 i アプリを Web にアップロードする際には 「 JAM ファイル」というファイルも一緒にア ップロードしなければなりません。 JAM フ ァイルには i アプリのサイズやバージョンな i モード Java 拡張 A 曰の主なクラス TabIe 1 ど , JAM が使用するための管理情報を記述 します。 i アプリの制限事項 ここで i アプリの制作で注意しなければな らない制限事項をまとめておきます。 ・浮動小数型 (float 型 , double 型 ) が使え ・処理速度が PC に比べると非常に遅い ・端末の機種によって処理速度が違う ・ i アプリのサイズの上限は , プログラム と関連ファイルを収録した JAR ファイ ルのサイズで 1 OK バイトまで ・画面の解像度は 120X130 ピクセル程度 AudioP 「 esenter Button Canvas Component Dialog Display Font F 「 ame G 「 aphics IApplication lmage lmageLabel Label ListBox MediaManager Panel PhoneSystem ShortTime 「 Text B ox Ticke 「 VisualPresenter Timer URLEncode 「 URLDecode 「 com.nttdocomo.uiJk0 ッケージ 音声 ( メロディ ) を扱うクラス ブッシュボタンのコンボーネント 低レベル A 曰の基本となる表示面 コンボーネントのスーバークラス ユーザに対してメッセージを提示し , 確認を求めるための表示面 携帯電話の画面とキーバッドを扱うクラス フォントを扱うクラス アプリケーションの表示面 ( Canvas , Dialog, グラフィックの描画機能を提供するクラス i アプリの基盤となるクラス 画像を扱うクラス 画像を表示するコンボーネント テキストを表示する U ロンポーネント Panel) のスーバークラス 項目を一覧表示して選択させる U ロンポーネント 画像や音などのリソースを管理するクラス 高レベル A 曰の基本となる表示面 携帯電話のネイティブリソースにアクセスするための手段 低レベル A 曰で使うタイマ テキスト入力用の U ロンポーネント ティッカーテープ表示 ( 流れるテキスト ) を実現する IJ ロンポーネント 画面メディアデータを再生するための U ロンボーネント com.nttdocomo.util)k ッケージ 高レベル A 曰で使うタイマ com.nttdocomo.net)! ッケージ 文字列を URL 工ンコード形式に変換するクラス U 日 L 工ンコード形式の文字列を通常の文字列に変換するクラス
レし、、 i アフリフログラミング 集 2 また , 工ミュレータは実機の速度まで再 5.5 をインストールすると , デフォルトでは ・「 make runp 」または「 make runf 」 現しているわけではないので , 実機で動か 「 c:}BorIandYBcc55YBin 」に make コマンド 工ミュレータで i アプリを起動します。 ru してみると思ったよりもずっと遅いことに (make. exe) があるので , 同フォルダを環境 np は P503i , runf は F503i です。 驚きます。 PC で i アプリをアップロードし , 変数 PATH に追加しておきます。 ・「 make emup 」または「 make emuf 」 i アプリ端末でダウンロードして確認 , とい Borland C + + CompiIer 5.5 に付属の make i アプリを読み込ませずにエミュレータの うのはめんどうですが , i アプリの完成度を コマンドの場合 , 「 makefile. mak 」というフ みを起動します。 emup は P503i , emuf は F5 上げるには欠かせない作業です。 ァイル名の make ファイルを「 c:YworkYfirsta 03i です。 pp 」に用意します。 List4 は FirstApp アプリ ・「 make clean 」 make を利用した ケーション向けに作成した make ファイルの JAR ファイルおよび unverified フォルダと 開発作業の自動化 例です。 List 4 の make ファイルの使い方を preverified フォルダ以下の全クラスファイ i アプリの開発作業は , 「 Java ソースプロ 以下にまとめます。 ルを消去します。 グラムの修正」→「コンパイル」→「 preveri&J ・「 make 」 ・「 make aIIJ →「エミュレータでの実行」という手順の繰 Java ソースプログラムをコンパイルして , 「 make clean 」と「 make jar を行います。 り返しになります。通常の Java アプリケー unve ⅱⅱ ed フォルダにクラスファイルを出力 ・ make ファイルの転用 ションや Java アプレットに比べると , i アプ します。続いて preverify を行い , preverified この make ファイルは , ファイルの先頭に リには preveri が必要ですし , コンパイル フォルダにクラスファイルを出力します。 ある「 APP 」や「 DIR 」の値を書き換えれば , F や実行のコマンドも classpath などの設定を irs pp アプリケーション以外の i アプリにも なお unverified フォルダや preverified フォル 伴っていて複雑です。そこで , 開発作業を ダがない場合には自動的に作成します。 転用できます。また , J2ME CLDC や i-JAD 少しでも楽にするために make コマンドの ・「 make jar 」 ELite のインストールフォルダは「 J2ME 」や 利用をお勧めします。 prever ⅲ ed フォルダ以下をサプフォルダ 「 JADE 」の値で指定します。 を含めて JAR ファイル化します。画像ファ make コマンドとしてはどんなものを使っ awk などの文字列処理コマンドを併用す てもかまわないのですが , 本誌の付録 CD - イルなども JAR ファイルに含めたいときに れば , JAM ファイルを make コマンドで自動 ROM にも収録されている Borland C + + Com は preverified フォルダ以下に置いておきま 生成することも可能でしよう。こうすれば , piler 5.5 に付属の make コマンドを利用する す。 JAR ファイルは makefile. mak と同じフ JAR ファイルのサイズと JAM ファイルの Ap のが便利でしよう。 Borland C + + Compiler ォルダに作成されます。 pSize を一致させる手間が省けます。 いる 6 個の巣穴から出てくる「ひぐま」をハ ンマーでたたくと得点が入ります。 1 ゲー ムにつき 50 頭のひぐまが出現するので , 50 頭たたけばパーフェクトです。ときどき出 てくる「ペンギン」は人畜無害なのでたたい てはいけません。間違えてたたくと得点が 減ってしまいます。 i アプリ端末で遊ぶにはダウンロードが必 要です。 i ひぐべんたたきは「 http://cmaga・ z dnet. co. jp/i/Hyrataki. html 」で公開中なの で , この U Ⅲ」こ i アプリ端末でアクセスして , i アプリで使うさまざまな i モード Java 拡張 A 「ダウンロード」を選択してください。 i ひぐべんたたき PI や , ゲーム i アプリプログラミングの要点 i アプリ端末の場合 , ソフトキー 1 でゲー を解説します。 ム開始 , ソフトキー 2 で i アプリの終了です。 本章ではゲーム i アプリ「 i ひぐべんたたき」 「 i ひぐべんたたき」はもぐらたたきふうの ハンマーの操作に関しては , 国 ~ 囹の数字 を制作します。制作を通じて , 主にゲーム ゲームです ( Fig. 16 ) 。画面上に表示されて キーがそれぞれの巣穴に対応しています。 特集 2 チャレンジ ! i アプリプログラミング 45 i アプリでのゲーム制作 最後に i アプリの応用例としてゲームを制作 し , 実際に i アプリを作るときの問題点やその 決方法を紹します。
0 i アフリフグラミング 特 ひぐべん工房 10 年前と今とを比べてもっとも変わった街の風景は「携帯を持 ち歩いている人の姿」だと言われています。今では持っていな い人がめすらしいほど普及した携帯電話機が , Java が動作する プラットホームの 1 っとなりました。 NTT ドコモが発表した携 帯電話機「 503i 」シリーズでは Java で作られたプログラム「 i アプ リ」を動作させることができます。本特集では , この i アプリに ついて , 開発に必要なファイルの入手 , これらを用いた環境の 構築から具体的なアプリケーションの作成 , そして応用として ゲームの作成を解説します。また , 一部のファイルを除き , JDK や動作チェックに必要な各種工ミュレータ , 開発用ツール などを付録 CD - ROM に収録しました。本特集を参考に i アプリに よるホピープログラミングをせひ楽しんでみてくたさい。 1 i アプリとは アプリとはいったいどのようなものなのでし ようか ? 。本章では i アプリに使われている技 ーをハにその全本像を説します。 ンツは目覚ましい速度で充実してきました。 そしてついに 2001 年 2 月には , 携帯電話 上で動く Java アプリケーションである「 i ア プリ」に対応した 503i シリーズの携帯電話 ( 以後「 i アプリ端末」と呼ぶ ) が発売されま した。 i アプリは , かって Java 黎明期に一世 を風靡し , Java 普及の牽引役となった「 'Java アプレット」が再来したかのように , 早く も大ブームのきざしを見せています。 i アプリはとくにホビープログラマにとっ て魅力的です。何といっても使いやすい Jav a でプログラミングできますし , i アプリ専 スです。 i モード対応の携帯電話端末 ( 以後 はじめに 「 i モード端末」と呼ぶ ) は Web プラウザを内 用の API も公開されています。それに加え 蔵しており , さまざまな i モード向けの web て , PC 上で i アプリをコンパイルし , 工ミ ュレーションを実行するための開発環境ま i モードは , 今や 2000 万人近いユーザを獲 コンテンツを楽しむことができます。数多 でも無償で利用できます。 PC と , 通信環境 得した , NTP ドコモによる携帯電話サービ くのユーザに支えられて , i モードのコンテ 28 C MAGAZINE 2001 5
に書きます。ほかの i アプリの HTML ファイ のように操作します。 i アプリのアップロー ドが終了すると , 取得した i アプリを今すぐ ルを用意するときには , <object> タグの data 使うかどうか質問されるので , 「使う」を選 ドの際にはⅲ dex. html も用意しておくと , パラメータにその i アプリの JAM ファイル名 U Ⅲ . 入力の手間が少し省けます。 択します。 を記述します。 ・アプリが起動する ・手順 2 これで i アプリが起動します。 i-JADE の工 く a > タグの href パラメータには , i アプリに 「ダウンロード」を選択します。 対応していない端末のための U 糺を記述し ・手順 3 ミュレータはなかなか優秀で , 開発効率を ます。「このコンテンツは i アプリ対応端末 おおいに引き上げてくれますが , 実機で動 ダウンロード画面になります。 FirstApp 専用です」などと書いた HTML ファイルを かしてみると今まで気がつかなかった問題 アプリケーションの概要が表示されるので , 用意しておけばよいでしよう。ここでは「ⅲ 点がいくつか見えてきます。たとえばバッ 「ダウンロードする」を選択します。 dex. html 」を指定しておきました。 ・手順 4 クライトの動作確認は実機でなければ不可 Java のロゴが表示されます。ダウンロー 能です。 Web へのアップロード Fi 「 stApp アプリケーションの make ファイル (makefile. mak) これらの作業で必要なファイルはすべて そろったので , Web にアップロードします。 # # # # # # # # # # # # # # # # # # # # # 土アプリ用メイクファイル Web へのファイル転送はご利用のプロバイ アプリケーションのメインクラス名 FirstApp APP ダで定められた手順に従ってください。ア ー作業フォルダ ップロードするのは , c:*work%firstapp ヨ ツールフォルダ ・ JAR ファイル = c:*j2me—cIdc = c:*i-jade ・ JAM ファイル ・ HTML ファイル の 3 つです。 FirstApp アプリケ ーションの場 クラスファイル、 JAR ファイル = preverified*$(APP) . class CLASS 合には = preverified%$(APP) . jar JAR ー preve て ify 済みクラスファイルの作成 ( デフォルト ) $(CLASS) *. java if not exist unverified mkdir unverified if not exist preverified mkdir preverified javac -g:none -bootclasspath $(JADE)*i-jade-p. jar;$(J2ME)%bin*common*api%classes -d unverified * . java preverify -classpath $(JADE) ;$(J2ME)*bin%common%api*classes -d preverified unverified ーこファイルの作成 jar : $ に駅 ) $ に ) : $(CLASS) cd $(DIR)*preverified jar cvfM .. %$(APP) . jar cd $(DIR) ー全てを作成 make clean make jar ー作成したファイルの消去 if i 虻 $ に駅 ) del $ に駅 ) if exist preverified**. class del preverified**. class if exist unverified** . class del unverified** . class ー P503i でエミュレート て p : $(CLASS) java -jar $(JADE)*i-jade-p. jar $(DIR)*preverified%$(APP) . class ー F503i でエミュレート て聞 f : $(CLASS) -jar $(JADE)*i-jade-f. $(DIR)*preverified*$(APP) . class ー P503 土でエミュレータのみ起動 叩 : $(CLASS) java -jar 引 JADE ) - 扣 de ー p ・ゴ矼 ー F503 土でエミュレータのみ起動 emuf : $(CLASS) java -jar $(JADE)*i-jade-f. jar 4 DIR ご 2 JADE ・ FirstApp. jar ・ FirstApp. jam ・ FirstApp. html です。 i アプリ端末では Shi れ JIS コードによるテ キストが表示できるので , 文字コードの変 換は不要です。今回は文字コードの変換な し , のモードはバイナリ (binary) でアッ プロードしました。 i アプリ端末でのダウンロードと実行 ようやく実機の i アプリ端末で i アプリを 実行するための準備が整いました。以下 , i アプリ端末で i アプリを実行する手順を説明 します。実行には F503i を使用しました。ほ かの端末でも基本的な手順は同じですが , 多少の違いはあるかもしれません。 ・手順 1 i アプリ端末で U 糺を入力して , アップロ ードした「 FirstApp. html 」を開きます。 F503i の場合 , U Ⅲを入力するには「メニ ュー」 ( ソフトキー 1 ) →「 i モード」 →「 lnternet 」 44 C MAGAZINE 2001 5
レン、、 i アフリフログラミング ァイルの最大サイズは 10K バイト ( 10240 バ 張子「 .jam 」を持つテキストファイルで , プリが i アプリ端末上で使用できるファイ ル ) のサイズを指定します。 イト ) です。 こに i アプリの JAR ファイルのサイズやバー JAR ファイルを作成するには , JDK の jar ジョンを書き込みます。また , JAM ファイ ・ AppCIass ルは ADF (Application Descriptor File) とも コマンドを使います。 FirstApp アプリケー i アプリのメインクラス名を指定します。 ションの場合には , 「 c:YworkYfirstappYprev 呼ばれます。 ・ LastModified er ⅲ ed 」フォルダに移動して , Firs は pp アプリケーションの JAM ファイ i アプリの最終更新日を指定します。 App ルは List 2 です。 List 2 に記述された各項目 Ver と同様に , i アプリ端末がダウンロード jar cvfM .. *FirstApp. jar * . class とするか , もしくは , の意味を以下で説明します。 の必要性を判定するために使います。 ・注意すべきポイント ・ AppName jar cvfM .. *FirstApp. jar i アプリの名称です。 i アプリのダウンロ とします。後者は preverified フォルダ以下 JAM ファイルでとくに注意しなければな のサプフォルダも丸ごと JAR ファイル化し ード画面で表示されます。 らないのは AppSize です。これは JAR ファイ てくれるので便利です。もし「 c:Yi-jadeYima ルのサイズにびったり一致させなければい ・ AppVer ges 」フォルダをコヒ。ーした場合には一緒に i アプリのバージョンです。同じプログラ けません。プログラムや関連ファイルを修 JAR ファイル化してしまわないよう , 前者 ムを過去にダウンロードした場合 , i アプリ 正すると JAR ファイルの大きさも変化する のように JAR ファイル化するファイルを個 端末はバージョンの比較を行い , ダウンロ ので , Web にアップロードする際には AppS 別に指定する必要があります。 ードの必要性を判定します。 ize も修正する必要があります。 なお , jar コマンドのオプション ( 「 cv 1 」 ) また , JAM ファイルの最後の行の末端には ・ PackageURL の意味は次のとおりです。 JAR ファイルの U 糺を指定します。 JAM 改行コードが必要です。これがないと , i ア ・「 c 」はアーカイブを新規作成する ファイルと JAR ファイルを同じフォルダに プリ端末での実行時にエラーが発生してし ・「 v 」は詳細なレポートを表示する 置くならば , 単に JAR ファイル名を記述す まいます。 ・「 f 」はアーカイプファイル名を指定する れば大丈夫です。 HTML ファイルの準備 ・「 M 」はマニフェストファイル (JAR ファ ・ AppSize JAR ファイルのサイズをバイト単位で指 イルに関する情報を収録したファイル ) 続いて , JAM ファイルへのリンクを表示 するための HTML ファイルを用意します。 を作成しないようにする 定します。 JAR ファイルのサイズはコマン ドプロンプトで「 dir 」コマンドを実行すれば こではごく簡単なものですが , List3 のよ なお , JAR ファイルの内容一覧を表示す 確認できます。 うな HTML ファイルを用意しました。 i モー るには , ドで使用できる HTML タグの全般的な詳細 ・ KvmVer jar tvf FirstApp. jar i アプリの実行に用いる KVM のバージョ は前述の文献を参照してください。 とし , JAR ファイルの内容を取り出すには , は i アプリに関連する部分だけを解説します。 ンです。 jar xvf FirstApp. jar JAM ファイルへのリンクを表示するには とします。詳しくは jar コマンドのヘルプ ( ja ・ SPsize く objec レタグとく a > タグを用いてⅱ st3 のよう i アプリが使用するスクラッチパッド (i ア r コマンドを引数なしで実行すると表示され る ) を参照してください。 Fi 「 stApp アプリケーションの HTML ファイル ()i 「 stApp. html) JAM ファイルの準備 次に , JAM (Java AppIication Manager) ファイルを用意します。 JAM ファイルは拡 FirstApp アプリケーションの JAM ファ イル ()i 「 stApp. jam) 3 <html> く head> く凵 e > 最初の i アプリく / 凵 e> </head> <bodY> 最初の i アプリく br> <0bject dec ねて e id="FirstApp" data="FirstApp ・ type="application/x-jam" く /object> く a ijam="#FirstApp" href=". /index. html"> ダウンロードく / a > く b て > </bodY> </html> 1St AppName = 最初の土アプリ AppVer = 1.0 PackageURL = FirstApp. jar AppSize = 1518 KvmVer = 1.0 SPsize = 0 = FirstApp LastModified = sun, 18 Mar 2001 00 : 00 : 00 i アプリプログラミング 43 特集 2 チャレンジ !
イベント処理と i アプリの終了 List 1- ( 14 ) はイベント処理のための proce ssEvent() メソッドです。 i アプリ端末のキ ーを押したときや , タイマで設定した時間 が経過したとき , processEvent() メソッド が呼び出されます。 processEvent ( ) メソッドには 2 つの int 型 の引数がありますにこでは引数名を pe と param とします )。呼 pe にはイベントの種類 , param にはイベントの種類に応じてさまざ まなパラメータが入ります。 こでは「ソフトキー 2 を押したら i アフリ を終了する」という処理をします。 List 1- ( 15 ) のように , 「キーを押した」というイベ ントの種類を表す定数は「 DispIay. KEY_PR ESSED_EVENT 」 , 「ソフトキー 2 」というパ ラメータに該当する定数は「 DispIay. KEY ー S O 2 」です。 i アプリを終了するには List 1- ( 16 ) のように「 IApplication. getCurrentApp () . terminate(); 」とします。 FirstApp アプリケーションのフログラム の構造を説明しました。 i アプリの基本構造 がおわかりいただけたでしようか。 コンバイル / 実行方法 作成したソースコードを実際にコンパイ ルしてエミュレータで実行してみましよう。 Fi 「 s pp アプリケーションを 実行するまで FirstApp アプリケーションをコンパイル して , i - JADE のエミュレータで実行するま での手順を解説します。これは前章で説明 したように C ドライプに開発環境をセット アップした場合の手順です。ほかの場所に 開発環境をセットアップした場合は , コマ ンドを適宜変更してください。 ・手順 1 作業用に「 c:YworkYfirstapp 」というフォル ダを作ります。さらに このフォルダの中 に「 c:YworkYfirstappYunverified 」と「 c:Ywork YfirstappYpreverified 」という 2 つのフォルダ 42 C MAGAZINE 2001 5 を作ります。 ・手順 2 *j2me—c ー dc*bin*common*api*c ー asses preverify -c lasspath c : *i-jade ー c : preverify します。コマンドは , ・手順 5 pCanvas. class 」が作成されます。 stapp}unverified 」に「 FirstApp. class 」と「 Ap です。コンパイルが終わると , 「 c:}workYfir ed * . java in*common*api*c lasses —d unverifi -jade*i-jade—p. jar;c:*j2me—cldc*b javac -g : none ー b00 セ c ー asspath c : 土 ドは , コンノヾイルします。コンノヾイルのコマン ・手順 4 Yfirstapp に移動します。 開き , 「 cd c:YworkYfirstapp 」として c:Ywork コマンドプロンプト (DOS プロンプト ) を ・手順 3 ビーしていただければけっこうです。 付録 CD - ROM に収録されていますので , コ va 」という名前で保存します。ファイルは 「 c:YworkYfirstapp 」に List 1 を「 FirstApp.ja Java —jar c:*i-jade*i-jade を使うときのコマンドは , 工ミュレータを使って実行します。 P503i ・手順 6 です。 -d preverified unverified -P ・コ a て いうエラーメッセージが出るかと思います ンプトに「リソースをロードできません」と すと i アプリが終了しますが , コマンドプロ フトキー 2 ( 工ミュレータでは [ ] キー ) を押 工ミュレータを使って実行したとき , ソ 工ラーメッセージ となります。 pp. class c : *work*jvmine*preverified*FirstA java -jar c:*i-jade*i-jade-f. jar です。 F503i を使うならば , pp. class c : *work*jvmine*preverified*FirstA しかし実行に支障はないので , 放っておい てかまいません。 もし工ラーメッセージがうっとうしけれ ば , 「 c:Yi-jadeYimages 」フォルダを「 c:Ywork YfirstappYpreverified 」フォルダ以下にコヒ。 ーすれば , メッセージは出なくなります。 ただし , 後ほど Web で公開するのに先立っ て i アプリを JAR ファイルに圧縮する際に コピーした images フォルダが少々作業のじ やまになってしまいます。 Web での公開方法 次に , 完成した Firs pp アプリケーショ ンを Web ( i アプリ端末のメニューでは「イン ターネット」と表記されています ) で公開す る方法を解説します。 Web で公開するには次のような準備が必 要です。 ・ i アプリのクラスファイルや画像ファイ ルの一式を JAR ファイルにまとめる ・ i アプリの JAR ファイルのサイズやバー ションを記した JAM (Java Application Manager ) ファイルを用意する ・ JAM ファイルへのリンクを表示するた めの HTML ファイルを用意する ・ JAR ファイル , JAM ファイル , HTML ファイルを Web にアップロードする ・ i アプリ端末で HTML ファイルを開き , i アプリをダウンロードして実行する それでは , おのおのの項目に関して詳し く説明します。 i アプリの JAR ファイル化 作成した i アプリを i アプリ端末でダウン ロードするためには , クラスファイルや画 像ファイルの一式を JAR(Java ARchive:Java 標準のファイル圧縮 , アーカイプの形式 ) ファイルにまとめる必要があります。 JAR ファイル化することによってプログラムに 必要な複数のファイルが 1 つのファイルに まとまり , また圧縮によってサイズが減少 するのでダウンロード時間の短縮も図れま す。なお現行の i アプリで許容される JAR フ