セミナー

勝手サイトプログラマー必見

iモード対応Javaのすべて

木寺祥友
YKidera@aol.com

1月18日、NTTドコモは待望のJava環境を搭載したiモード端末503iシリーズを発表した。iモード上で動くJavaプログラムは「iアプリ」と呼ばれ、ウェブサイトからダウンロードして利用する。このiアプリは、勝手サイトのように誰でも作って公開できるものなのだろうか。iアプリでできること、できないことをさっそく調べてみよう。

Java for i mode

ついに公開されたiモードJava
携帯電話でJavaが本領を発揮のJavaだ。しかし、パソコンの世界でのJavaる。A4で234ページにもなるもので、読むのには、前評判ほどにはなかなか認知されなかった。

根気がいるが、この文書がiアプリを開発する

Javaは米国サン・マイクロシステムズ社がウィンドウズがクライアント環境のほとんどをうえで欠かせないものなので、開発者は必読だ。

ケーブルテレビ端末向けに開発し、1995年に占めてしまっていたからだ。Javaは開発言語発表した言語だ。一度作成したJavaプログラの1つとしか考えられなくなってしまった。

ムは、Javaバーチャルマシンという仮想的な環

しかし、1700万人以上のiモードユーザーを境があれば、どんなコンピュータ上でも動作す抱えるドコモがJavaを採用したのだから注目るようにできている。また、インターネットなだ。今までにもJava端末、インターネット端どネットワーク接続を前提とした環境での利用末として話題を集めた製品はあるが、一般に普が可能だ。ブラウザーを通してJavaアプレット及するまでには至っていない。ドコモのJava採をダウンロードし、ウェブページ上でアニメー用によって、auやJ-Phoneなど他の携帯電話ションを動かしたりサウンドを鳴らしたりでき事業者にもJava旋風が巻き起こり、パソコンるのはその一例だ。開発キットが無料で手に入から携帯電話へとクライアント環境が移ることれられるというのも魅力の1つだ。

が期待できる。

本来Javaはクライアント端末でこそ威力をドコモのホームページには、iモード用Java発揮する。最近ではサーブレットというサーバの詳しい仕様が掲載されているので参考にしてー上で動くJavaに注目が集まっているが、一ほしい度書けばどのマシンでも動くというコンセプト

開発ガイド〜詳細編〜」と同「〜APIリファが最大限に効力を発揮するのはクライアント上レンス編〜」がPDFファイルで提供されてい230 INTERNET magazine 2001/3

Jump 01

Jump 01

www.nttdocomo.co.jp/i/java.html。
「iモード対応Javaコンテンツ

インターネットマガジン／株式会社インプレスR&D

新発売のF503iで動作しているiアプリ

Javaバーチャルマシン：ウィンドウズやマッキントッシュなどのOS上で、JavaOSを動かすための仮想的なマシンのこと。実際にはソフトウェアでエミュレートするかたちとなる。さまざまなOS上でバーチャルマシンが稼動するため、Javaの「WriteOnce,Run Anywhere」が実現する©1994-2007
Impress
R&DiモードJavaの疑問に答える
Q1 どんなアプリケーションが作れる？

iモード用Javaでは、2つのタイプのアプリケ

1.0クラスライブラリー、iモードJava拡張API

用Javaにとって負担も大きいが、ドコモの公クラスライブラリー、iモードJava文字コンバ

認サイトにならなくてもクレジットカード決済ーターが含まれなくてはならない。J2SE SDKなどを安全に行えることは、勝手サイトを作っーションを作ることができる。1つは、携帯電などはサンのサイトている人にとって朗報だ。

話にダウンロードして使うスタンドアローン型

iモード用ライブラリーは追ってドコモから公開アプリケーション。これはゲームなどネットにされる予定だ（1月20日現在）。

Jump 02

から入手できるが、「Run Anywhere」

Q6 なのか？

つながっていなくても遊ぶことができるもの。もちろんパケット料金はダウンロードしたときにJump 02

java.sun.com

iモード用JavaはJ2SE（Java 2 StandardEdition）をベースに作られている（J2SEをベしかかからない。ゲームボーイが携帯電話になアプリケーションにったと考えるとわかりやすいだろう。
もう1つは、携帯電話にダウンロードしたアースにしたCLDCのライブラリーの一部というQ4 制限はある？

ことだ）。さらにiモード独自のAPIや機種依存プリケーションがサーバーにアクセスすることiアプリを保存するときのサイズには、1つにするAPIが追加されている。つまり、J2SEので機能するネットワーク接続型アプリケーショつき10キロバイトの制限がもうけられている。

部分のみ互換性があるということだ。サンが提ン。携帯電話の特性を考えると、こちらのほう

さらにアプリケーション用 の記 憶 エリア

唱している「 Write Once, Run Anywhere」が今後主流になると考えられる。容量を気にす「ScratchPad」が5キロバイトに制限されてい（一度書いたらどこでも動く）という特性からることなくデータをサーバーに置けるので、携る。機種によってScratchPadは3個という制は一歩はずれているが、機種依存の部分を少な帯電話のメモリー制限を超えた使い方ができ限を越えて保存できる機種が出てくるもようだ。

くするという観点でのJava採用は、開発者にる。さらに、対戦型ゲームや株価のリアルタイ携帯電話に保存してあるアプリケーションを呼とって負担が少なくて済むことは確かだ。

ム表示など、サーバーと連携するアプリケーシび出して使う場合も、10キロバイトの中で実行ョンが作成できる。しかし、頻繁にサーバーとしなければならないので、新たにサーバーから接続されるのでサーバーの信頼性が必要だろう。

データを取ってくるときには追加データが5キQ7 auやJ-Phoneでも動く？
auはドコモの拡張性をふまえたうえでiモーロバイト以上にならないようにする必要がある。

Q2 勝手サイト作者にもド用Javaとの互換性を持たせると発表してい作れる？

iアプリは、iメニュー（オフィシャルサイト）

本当にセキュリティーはQ5高くなる？

るが、J-Phoneは携帯機器向けプラットフォームJ2ME（Java 2 Platform Micro Edition）

以外のいわゆる勝手サイトのページに置いてダ503iシリーズはSSLをサポートしたので、いの携帯電話向けプロファイルMIDP（Mobileウンロードさせることもできる。ただし、今まわゆる「鍵のかかる」サイトを構築してiアプリ

Information Device Profile）をベースに開発でのHTMLベースのコンテンツではテキストのからアクセスすることも可能だ。SSLでは通信する方針だ。Javaを採用するといっても、同記述が主体だったが、Javaは簡単とはいえプ時間が余計にかかるなど、制限の多いiモードじアプリケーションが動くわけではない。

ログラム言語だ。プログラムの基礎くらいは知っておいたほうがいい。ほかの言語を一から習うのだったらパソコンやサーバーにも応用の効くJavaを覚えるのはいい機会かもしれない。
ダウンロードQ3 作るには何が必要？

サーバー

まずJavaコンパイラー（サン配布している1スタンドアローン型

2ネットワーク接続型

J2SE SDKバージョン1.3に含まれるjavacコマンド）が必要。特殊なコンパイラーは必要ない。次に事前検証ツール（同じくサンのCLDCバージョン1.0に含まれるpreverifyコマンド）サーバーとJavaアーカイバー（J2SE SDKバージョン1.3に含まれるjarコマンド）が必要になる。ア
プリケーションをコンパイルするためにCLDC●2つのタイプのiアプリ

インターネットマガジン／株式会社インプレスR&D

SSL（エス・エス・エル／Secure Socket Layer）：ブラウザーやサーバー間で安全にデータをやり取りするためのプロトコル。米ネットスケープ社が開発し、マイクロソフトなどが採用している。認証と暗号の機能を持ち、ブラウザーとサーバーの間でお互いを確認したり、やり取りするデータを暗号化したりする機能を持つ。
©1994-2007 Impress R&D

INTERNET magazine 2001/3

231

iアプリの設計と開発に必要なもの
開発に必要なのはツール類と知識だ。残念ながら現在のマッキントッシュでは作れない。アップルはMac OS XでのJava 2の採開発者はJ2SE のソフトウェア開発キット（J2SE SDKバージョン1.3）を利用したことが用を表明しているが、3月に出る正式版を待つしかない。

あり、SDKに含まれるツールやドキュメントの開発に必要なソフトウェアは、前ページで紹知識があるものとドコモは想定している。ドコ

介したとおり、Javaコンパイラー、事前検証

モが発表した仕様書を正しく理解して、それにツール、ファイルを圧縮するためのJavaアーカもとづいて開発できることが開発者の条件だとイバーだ。さらにアプリケーションをコンパイ言える。しかし勝手サイトを作っている人には、ルするためにCLDC 1.0クラスライブラリー、iこれからJavaを学ぼうという人のほうが多いだ

モードJava拡張APIクラスライブラリー、iモ

ろう。簡単にiアプリを作成できるツールや解説

ードJava文字コンバーターが必要になる。

本が発売されることを望む。

Javaのソースコード（.javaファイル）は、同じく、iアプリに特化して簡単にコードが書けるツールが発売されると思われる。筆者の経験では、Javaのアルファ版時代にはまったくツールが存在していなかったが、オブジェクト指向を活かしたツールがその後発売され、開発がとても楽になったことを覚えている。新しい技術のために簡単に使えるツールが発売されるのは世の常だ。

アプリケーションの設計を考える
開発の際に、はじめに考慮しなければならなiアプリ作成に必要なものについて簡単に説

テキストエディターや各社から発売されていのは、スタンドアローン型とネットワーク接明しよう。まずパソコンとOSだが、ウィンドいるJava開発ツールで書く。503iシリーズ

続型（クライアントサーバー型）では、iアプリウズやLinux、またはUNIX系のマシンならOK発売直後はたいへんだが、HTMLの場合との開発方法が若干異なることだ。スタンドアローン型の場合は、ScratchPadに収まる5キロバイトというデータの制限の中だけで完結したものを作らなければならない。ネットワーク接iモード対応Javaのすべて続型ならサーバー上のデータを利用できるので、実質的に5キロバイトの壁がないことになる。i
アプリを動かすたびに通信することになるので通信速度とパケット料金の問題があるが、データ容量を無限に増やせることになる。どちらの●開発の流れiアプリを作るかによって最初から設計が変わっアプリケーション情報ADF（.jamファイル）
ダウンロードページ（.htmlファイル）リソース（画像、サウンド）
Javaソース（.javaファイル）

Javaクラス（.classファイル）

コンパイル

Javaクラス（.classファイル）

事前検証てくることを覚えておいてほしい。
ネットワーク接続型のiアプリを作る際には、まず必 要 なデータをサーバーに置 くかScratchPadに置くかを見極めなければならな

アプリケーション（.jarファイル）い。ユーザーが選択して使うデータはサーバー
ウェブサイトパッケージ化に置 いて、 常 時 使 うものについてはScratchPadに置くという方法がいいだろう。
たとえば、天気予報のi アプリを作る場合は、●iアプリからアクセスできるもの

お天気マークはScratchPadに置いて、ユーザダウンロード元のHTTPサーバー

ScratchPadーが選択した地方のデータはサーバーに置くといった使い方だ。株価のリアルタイム速報などもこの類だ。
また、ネットワーク接続型では、iアプリの通ダウンロード元以外のHTTPサーバー

信相手となるサーバー側アプリケーションを作成する必要がある。Javaを使ったサーブレッ

他のiアプリ○山×男
090XXXXトなども考えられるが、サーバー側アプリケー

iアプリ

ションは、クライアントアプリケーション（iアプリ）とHTTPプロトコルで通信するものであ

携帯の電話帳など

232 INTERNET magazine 2001/3

HTTP以外のサーバー（FTP、POP3、……）れば、どのような技術を使用したものでもかまわない。

インターネットマガジン／株式会社インプレスR&D

HTTP（エイチ・ティー・ティー・ピー／HyperText Transfer Protocol）：WWWサーバーとWWWブラウザーが、HTMLファイルや画像ファイルなどさまざまなデータをやり取りするためのプロトコル。WWWブラウザーからのリクエストによって、WWWサーバーが該当するファイルを送信する。
©1994-2007 Impress R&D

Java for i mode

ウェブサイトに載せて公開しよう
公開にはJARファイルとADFが必要●iアプリ用Javaソースコードの例

ソースコードを書いてからウェブに載せるまでの手順を見てみよう。まず、Javaソースコードをコンパイルして Java クラス（.classファイル）にする。さらにJavaクラスの事前検証をして、追加の属性情報をクラスに書き込む。このことでアプリケーション実行時に無駄なものが省かれ、CPUやメモリーの負担が軽減される。そして、画像やサウンドとともに事前検証されたクラスをJavaの圧縮形式であるJARファイルに変換してアプリケーションにする。
iアプリをダウンロードさせるには、ADF（Application Descriptor File、.jamファイル）が別に必要だ。このファイルの目的は、import java.io.*;import javax.microedition.io.*;import com.nttdocomo.io.*;private String[] getScoreList(int score) {try {// 接続を設定する
HttpConnection conn = (HttpConnection)Connector.open("http://backflip.sfbay:8080/scores",Connector.READ_WRITE, true);// 要求メソッドとコンテンツタイプを設定する。
conn.setRequestMethod(HttpConnection.POST);
conn.setRequestProperty("Content-Type","text/plain");// 出力ストリームを取り出す。
OutputStream out = conn.openOutputStream();// データを書き込む（実際の接続がまだ確立// されていないため、バッファに入れられる）。
out.write("Highscore-Game: Space Invaders¥n".getBytes());
out.write(("Highscore-Name: " + SpaceInvaders.USER.getName() +"¥n").getBytes());
out.write(("Highscore-Value: " + score + "¥n").getBytes());// 出力ストリームをクローズする。
out.close();アプリケーションを携帯電話に正しくダウ// リモート資源に実際に接続する。
conn.connect();
String[] result = new String[HighScoreScreen.MAX_ENTRIES];// 入力ストリームを取り出す。
InputStream in = conn.openInputStream();if (in == null)
throw new IOException("high score servlet unreachable");// データを読み取る。
for (int i=0; i<HighScoreScreen.MAX_ENTRIES; i++) {result[i] = readLine(in); }// 入力ストリームをクローズする。
in.close();// http 接続をクローズする。
conn.close();ンロードできるかどうかを i モードの JAM（Java Application Manager）が判定できるようにすることだ。ADFは100から300バイト程度と小さく、iアプリ全体をダウンロードする前に ADF だけをダウンロードして、保存に必要な記憶容量や互換性をチェックすれば、通信コストの点から有利となる。
サーバーからADFをダウンロードさせるには、HTMLの<OBJECT>タグでADFを参照する。これで、iモードの画面からiアプリ

return result;} catch (Exception x) {return new String[] {"Scores", "currently", "unavailable."};}をダウンロードさせることができる。

難関を乗り越える開発者の工夫に期待}●アプリケーションの情報を記述するADF
以上で簡単にiアプリの開発方法を説明したが、一番の難関は10キロバイトのアプリ
ケーションサイズと5キロバイトのScratchPadという制限との戦いだ。この制約の中でどれだけよいものが作れるかということ

AppName = サンプルゲーム
KvmVer = CLDC-1.0
AppClass = sampgame.GameDemo
AppVer = 1.0
PackageURL = http://www.example.ne.jp/java/game.jar
AppSize = 17556
LastModified = Fri, 25 Feb 2000, 12: 04:25

が問題だ。iモードが出たときには「あんな画面で何が見れるか」と言われたものだが、●ADFを参照するHTML

今では「よくこの小さな画面を利用してこ<OBJECT declare id="application.declaration"
data="http://www.example.ne.jp/java/game.jam" type="application/x-jam">
サンプルアプリケーション</OBJECT>
ダウンロードするには<A ijam="#application.declaration" href="xxx.html">ここ</A>をクリック。

こまでやるな」と言われるようなサイトまでできている。Javaは無限の可能性をもった言語だ。この難関を切り抜けてあっと言わせるものが出てくることを期待したい。

インターネットマガジン／株式会社インプレスR&D

JAR（ジェイ・エイ・アール／Java ARchive）：：Javaにおいて、複数のクラスファイルやデータファイルを1つに圧縮してまとめて配布するためのファイル形式。

©1994-2007 Impress R&D

INTERNET magazine 2001/3233

［インターネットマガジン バックナンバーアーカイブ］ ご利用上の注意
この PDF ファイルは、株式会社インプレス R&D（株式会社インプレスから分割）が 1994 年～2006 年まで発行した月刊誌『インターネットマガジン』の誌面を PDF 化し、「インターネットマガジン バックナンバーアーカイブ」として以下のウェブサイト「All-in-One INTERNET magazine 2.0」で公開しているものです。

http://i.impressRD.jp/bn
このファイルをご利用いただくにあたり、下記の注意事項を必ずお読みください。
z 記載されている内容（技術解説、URL、団体・企業名、商品名、価格、プレゼント募集、アンケートなど）は発行当時のものです。
z 収録されている内容は著作権法上の保護を受けています。著作権はそれぞれの記事の著作者（執筆者、写真の撮影者、イラストの作成者、編集部など）が保持しています。
z 著作者から許諾が得られなかった著作物は収録されていない場合があります。
z このファイルやその内容を改変したり、商用を目的として再利用することはできません。あくまで個人や企業の非商用利用での閲覧、複製、送信に限られます。
z 収録されている内容を何らかの媒体に引用としてご利用する際は、出典として媒体名および月号、該当ページ番号、発行元（株式会社インプレス R&D）、コピーライトなどの情報をご明記ください。
z オリジナルの雑誌の発行時点では、株式会社インプレス R&D（当時は株式会社インプレス）と著作権者は内容が正確なものであるように最大限に努めましたが、すべての情報が完全に正確であることは保証できません。このファイルの内容に起因する直接的および間接的な損害に対して、一切の責任を負いません。お客様個人の責任においてご利用ください。

このファイルに関するお問い合わせ先
All-in-One INTERNET magazine 編集部
im-info@impress.co.jp
Copyright © 1994-2007 Impress R&D, an Impress Group company. All rights reserved.