アイコン イチから始める,
iモードJava
プログラミング
 [第18回]

読者からの質問コーナー〜3

読者からの質問がたまってきたので,今回はいくつかの質問にまとめてお答えしたい。具体的な症状が書かれておらず回答しづらいものもあったが,できる限り答えてみる。

【国内記事】 2001年6月18日更新

Q: KToolBarが起動しません

 どのようなエラーが出るといった情報がない質問だったので,答えづらいものがあるのだが,ここでは一般的に起こしやすいミスだけに絞っておく。

 まず,もっとも基本的なミスとしてWindowsにJava環境(JDK)がインストールされていないというケースが考えられなくはない。JDKがないとKToolBarをインストールしても,動作しないし利用できない。

 また,JDKのバージョンが古いというケースも考えられる。iアプリは「JDK1.3.x」として配布されているバージョンのJDKが必要なので,事前にjavasoftから最新のJDKをダウンロード,インストールしておこう。

 JDKに問題がないのなら,たいていは動くはずだが,それでも動かないときは無効な環境変数CLASSPATHが設定されていないか調べてみるといいかもしれない。CLASSPATHの設定の仕方によっては,KToolBarが動作しない可能性が考えられるためだ。KToolBarは通常,特別なCLASSPATHなどを設定しなくても動作するようになっているので,Windowsに環境変数CLASSPATHの設定があったら削除してみてほしい。

Q: JBuilderで「i-JADE」を使用してWebサーバ上にあるMFiファイルを読み込みたいのですが,以下の記述だとエラーになります。

MediaSound ms = MediaManager.getSound("http://xxxx/xxxxx/xxx.mld");

 セキュリティ例外が出ているのだろうと思う。前に連載内でも説明しているように(連載第15回参照),iアプリは,iアプリ自身をダウンロードした先のサーバにあるファイルしか参照できない制限がある。i-JadeやNTTドコモ標準のエミュレーターも,そのような動作をするようになっている。

 そのため,ローカルPCから起動した場合,ネットワークの先にあるファイルは「取得先が異なる」ためにセキュリティ例外が出てしまう。

 NTTドコモのエミュレータは以前に紹介したように,見かけ上のダウンロード先が設定できる。また,質問にあるi-Jadeでは,デバッグ中のJarファイルとJamファイルをサーバ上に置き,次のようにURLを指定して起動すればサーバ上にあるファイルにアクセスできる。

java -jar i-jade-x.jar http://xxx/xxxxx/xxx.jam

Q: Webサーバからテキストファイルをダウンロードするには,どうしたらいい?

 連載ではイメージデータをWebサーバからダウンロードする方法をしているが(連載第6回参照),方法は,それとほぼ同じ。文章で説明するよりはコードを示したほうがいいだろう。リスト1に掲載しておくので参考にしてほしい。

 リスト1では,Byte配列にテキストファイルを読み取り,その配列から文字列Stringを生成している。読み取れるテキストファイルの長さは,あらかじめ確保したByte配列の長さまで(リストでは256)だ。

 ダウンロードするファイルの大きさが決まっている場合,リストのように固定長のバッファを使ったほうがメモリやJava VMの負担が軽くなる。しかし,ダウンロードするファイルの大きさが不定の場合,リスト1のような方法は使えない。そのようなときは固定長のByte配列の変わりに,Javaに用意されている不定長の文字バッファクラスStringBufferを利用するといい。

 ところで,同じ読者からiアプリのAPIを解説する参考書を紹介してほしいという要望をいただいた。APIの解説は,たいていのiアプリ参考書に出ているが,実際の動作を交えて解説している本としては「iアプリの作り方」(山崎由喜憲著/ソフトバンクパブリッシング)が分かりやすいのではないかと思う。

 またiアプリを作る際にも,このリストに示した例のようにJava標準のクラスライブラリ(API)のお世話にならざるを得ないので,JDKのドキュメントをダウンロードして,いつでも使えるようにしておくと便利だ。JDKのドキュメントはjavasoftからHTML形式などでダウンロードできる(完全日本語版も用意されている)。

Q: 私のマシンでiアプリの開発はできますか?

 本当の質問は「Macintoshでiアプリの開発はできますか?」というものだったのだが,少し幅を広げるために変えさせていただいた。

 まず本来の質問のほうだが,以前に質問コーナーで取り上げたときはMacOSで動くPreverifyコマンドがないために,開発ができない状態だった。筆者は熱心なmacintoshユーザーではないので,詳しくチェックしているわけではないが,MacOS 9.xや,それ以前のMacOSに関しては今でも状況は変わっていないようだ。

 しかし,UNIXベースのMacOS Xではpreverifyコマンドが利用でき,iアプリの開発ができるという情報がある。詳しくは「The WEB of Java」を見てほしい。

 Windows以外で,となるとほかにLinuxでiアプリが開発できないか気になる人も多いと思う。Linuxなら,iアプリの開発も不可能ではない。

 iアプリを開発するにはJDKとエミュレーター,そしてCLDC(用語)に付属するPreverifyが最低でも必要になる。このうちJDKは公式ページからLinux用がダウロードできる。JDKさえあれば,少なくともi-JadeはLinux上で動作させられる(KToolBarも動くかもしれないが筆者は未確認)。問題はPreverifyだが,これもLinux用のJava2 MicroEdition CLDCに収録されているものが使える。「Micro Java Network」からダウンロードできるので試してほしい。

リスト1 テキストファイルをサーバからダウンロードするコード例

-----------------
String str;

try {
HttpConnection htcon
= (HttpConnection)Connector.open(
"http://xxxxx/xxxx.txt",
Connector.READ, true );

htcon.connect();
InputStream in
= htcon.openInputStream();
if( in != null ) {
byte[] buff = new byte[256];
int size = 0;

int d = in.read();
while ( d != -1 ) {
buff[size++] = d & 0xFF;
if(size > 255)
break;
d = in.read();
}
str = new String(buff);
in.close();
htcon.close();
}
}
catch( Exception e ) {
}

-------------------

[米田聡,ITmedia]

関連記事
▼ 非公式の携帯Javaに課金──ニフティが課金システムを提供
▼ iアプリ開発であなたもアプリ成金になれる?
▼ SO503iの“iアプリバグ”の正体は?
▼ 携帯向けJava,3社の違いは?
▼ 一般向け「iアプリ」市場は立ち上がるのか?
▼ iモード対応Javaを作るのに必要なものは?──NTTドコモ,仕様をついに公開


連載バックナンバー

▼ 付録 iモードJava開発関連リンク集

▼ 第1回 プログラム作成への準備

▼ 第2回 iアプリ製作の流れ

▼ 第3回 ファーストiアプリケーション

▼ 第4回 i-JADEを使おう

▼ 第5回 preverifyの環境作り

▼ 第6回 iアプリでミニゲーム〜グラフィックの取り扱い

▼ 第7回 読者からの質問コーナー

▼ 第8回 キーボードに合わせてグラフィックを動かす

▼ 第9回 クラスって何だろう?

▼ 番外編 ドコモ,公式iアプリ作成ツールを公開

▼ 第10回 NTTドコモの開発ツールを使ってみよう

▼ 第11回 サウンドを使ってみる

▼ 第12回 読者からの質問コーナー〜2

▼ 第13回 スクラッチパッドへの書き込み

▼ 第14回 ネットからデータをダウンロードする

▼ 第15回 アニメーションGIFを使ってみる

▼ 番外編2 iアプリのセキュリティは破られていない

▼ 第16回 もぐら叩きを作る〜1

▼ 第17回 モグラクラスの動作検証

▼ 第18回 読者からの質問コーナー〜3

▼ 第19回 サウンドを鳴らす

▼ 第20回 iアプリの割り込み〜再開処理を実装する

▼ 第21回 サーバと通信を行ってみる

▼ 第22回 iアプリプログラマのためのezplus入門

▼ 第23回 J-フォンのJava仕様

▼ 第24回 iアプリの達人になるには?

Copyright © ITmedia, Inc. All Rights Reserved.



モバイルショップ

最新スペック搭載ゲームパソコン
高性能でゲームが快適なのは
ドスパラゲームパソコンガレリア!

最新CPU搭載パソコンはドスパラで!!
第3世代インテルCoreプロセッサー搭載PC ドスパラはスピード出荷でお届けします!!