オープンアプリ・ゲームコンテスト
コンテスト概要 応募方法 応募作で遊ぼう アプリ開発講座 Special Special

アプリ開発講座

講座スケジュール
第1回 オープンアプリ(Java)とJava実行環境
line
第2回 はじめてのオープンアプリ(Java)の作成
line
第3回 イメージの描画
line
第4回 キー入力の処理
line
第5回 オープンアプリ(Java)への移植
line
第6回 ゲームの作成
line
第7回 端末へのデータ保存
line
第8回 サウンドの再生
line
第9回 バイブレーションとブラウザ起動
line 最終回 HTTPによる通信
line

開発講座TOPへ



講師プロフィール
株式会社ユビキタスエンターテインメント 布留川英一

1999年のJavaMEの仕様公開を期に「JAVA PRESS(技術評論社)」にてライターとしての活動をはじめ、2000年の503iシリーズの発売を期にドワンゴへ移り、携帯アプリの研究開発を行う。2005年に独立し、ユビキタスエンターテインメントにて次世代コンテンツを作成中。
【著書】
MIDP 2.0 携帯Javaアプリ開発ハンドブック
iアプリゲーム開発テキストブック
ActionScript 3.0 ゲームプログラミングブック
他6冊

 

 

第2回 
はじめてのオープンアプリ(Java)の作成


第2回の今回は、"Hello World"という文字を表示するだけのオープンアプリ(Java)を作成します。
[サンプルプログラムのダウンロード]

開発ツールの準備

オープンアプリ(Java)の作成に必要な開発ツールは次の3つです。

  • JDK 1.5
  • J2ME Wireless Toolkit 2.2
  • テキストエディタ

◎JDK 5.0
「JDK 5.0」は、パソコン上で動くJavaアプリケーションを作るための開発キットです。Sun Microsystems社のJDK 5.0のサイトから無償でダウンロードできます。次に説明する「J2ME Wireless Toolkit」の利用に必要なので、先にインストールしてください。

◎J2ME Wireless Toolkit 2.2
「J2ME Wireless Toolkit 2.2」は、MIDP 2.0仕様のアプリを作成するための開発キットです。Sun Microsystems社のJ2ME Wireless Toolkitのサイトから無償でダウンロードできます。ただし会員登録が必要です。

◎テキストエディタ
「テキストエディタ」は、テキストを編集するためのアプリケーションです。Windows標準のメモ帳でもできますが、使いにくいので自分にあったテキストエディタを使うと良いでしょう。有名なフリーのテキストエディタにはTeraPadなどがあります。

プロジェクトの作成

「プロジェクト」は、アプリの開発に必要なファイルを管理するための単位です。
Windowsのスタートメニュー「プログラム⇒J2ME Wireless Toolkit 2.2⇒KToolbar」で「KToolbar」を起動後、「新規作成」ボタンを押して下さい。「新規作成ダイアログ」が開くので、プロジェクト名とクラス名に"HelloWorld"と入力します。




次に「プロジェクトの設定ダイアログ」が開きます。ここでは使用するAPIを選択します。ターゲットプラットフォームでは「JTWI」を選択します。「JTWI」は携帯電話機でJavaを利用するためのガイドラインで、主要なAPIをまとめたものです。「CLDC1.1」を選択し、オプションやその他のAPIは使わないのでチェックをはずして下さい。



[プロジェクトの作成]ボタンを押すと「J2ME Wireless Toolkit」のインストール先(C:\WTK22\)の「app」フォルダ内に、新しく「HelloWorld」フォルダが生成され(C:\WTK22\apps\HelloWorld)、この中にはさらに、次の4つのフォルダが生成されます。



フォルダ 中身
bin JARファイルとJADファイル
lib ライブラリファイル
res 画像ファイルやサウンドファイル
src ソースコード

ソースコードの記述

テキストエディタを使って次に示すプログラムを入力し、プロジェクトのsrcフォルダ(C:\WTK22\apps\HelloWorld\src)に保存します。ファイル名は"HelloWorld.java"と"HelloCanvas.java"にしてください。

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

//HelloWorld(本体)
public class HelloWorld extends MIDlet {

    //コンストラクタ
    public HelloWorld() {
        Display.getDisplay(this).setCurrent(
            new HelloCanvas());
    }

    //アプリの開始
    public void startApp() {
    }

    //アプリの一時停止
    public void pauseApp() {
    }

    //アプリの終了
    public void destroyApp(boolean flag) {
    }
}

HelloCanvas.java
import javax.microedition.lcdui.*;

//HelloWorld(キャンバス)
public class HelloCanvas extends Canvas {

    //描画
    public void paint(Graphics g) {
        g.setColor(255,255,255);
        g.fillRect(0,0,getWidth(),getHeight());
        g.setColor(0,0,0);
        g.drawString("Hello World!",0,0,
            Graphics.LEFT|Graphics.TOP);
    }
}


HelloWorldクラスのソースコード解説

HelloWorldクラスは、プログラムの本体となるクラスです。

◎MIDletクラス 「javax.microedition.midletMIDlet」クラスは、アプリの土台となるクラスで、全てのアプリはこのクラスを継承して、アプリ本体となるクラスを作ります。MIDletクラスを継承したクラスは、次の3つのメソッドをオーバーライドする必要があります。



[MIDletクラス]
void startApp()
アプリの開始時によばれる。

[MIDletクラス]
void pauseApp()
アプリの一時停止時に呼ばれる。

[MIDletクラス]
void destroyApp(flag)

flag 全リソースを解放すべき時はtrue:boolean型
アプリの終了時に呼ばれる。

◎Displayクラス
「javax.microedition.lcdui.Display」クラスのgetDisplay()メソッドでDisplayオブジェクトを取得し、そのオブジェクトのsetCurrent()メソッドで、描画処理を行う「キャンバス」を指定します。

[Displayクラス]
static Display getDisplay(midlet)

midlet MIDletオブジェクト:MIDlet型
戻り値 Displayオブジェクト:Display型
Displayオブジェクトを取得する。

[Displayクラス]
void setCurrent(displayable)

displayable キャンバスまたはフォーム:Displayable型
キャンバスまたはフォームを指定する。

HelloCanvasクラスのソースコード解説

HelloCanvasクラスは、キャンバスとなるクラスです。

◎CanvasクラスとGraphicsクラス
「javax.microedition.lcdui.Canvas」クラスはキャンバスの土台となるクラスで、キャンバスとなるクラスはこのクラスを継承します。Canvasを継承したクラスは、paint()メソッドをオーバーライドする必要があります。



[Canvasクラス]
void paint(g)

g グラフィックス:Graphics型
描画処理を行う。

paint()メソッドは、アプリ起動時や再描画が必要な時に呼ばれます。このメソッドに引数として渡されるGraphicsオブジェクトを操作することにより、文字列や絵の描画処理を行います。
「javax.microedition.lcdui.Graphics」クラスは、文字列や絵の描画処理を行うためのメソッドを持つクラスです。


◎色の指定
色を指定するには、GraphicsクラスのsetColor()メソッドを使います。指定した色はグラフィックスの描画関連メソッドが呼ばれるたびに使われます。

[Graphicsクラス]
void setColor(red,green,blue)

red 赤(0〜255):int型
green 緑(0〜255):int型
blue 青(0〜255):int型
R値とG値とB値で色を指定する。

[Graphicsクラス]
void setColor(rgb)

rgb RGB値 :int型
RGB値で色を指定する。
RGB値=(R値<<16)+(G値<<8)+B値)

◎矩形の塗り潰し

塗り潰し四角形を描画するには、GraphicsクラスのfillRect()メソッドを使います。

[Graphicsクラス]
void fillRect(x,y,width,height)

x X座標:int型
y Y座標:int型
width 幅 :int型
height 高さ :int型
塗り潰し四角形を描画する。

画面の幅と高さを取得するには、CanvasクラスのgetWidth()メソッドとgetHeight()メソッドを使います。

[Canvasクラス]
int getWidth()

戻り値 幅:int型
キャンバスの幅を取得する。

[Canvasクラス]
int getHeight()

戻り値 高さ:int型
キャンバスの高さを取得する。



◎文字列の表示

文字列を表示するには、GraphicsクラスのdrawString()メソッドを使います。

[Graphicsクラス]
void drawString(str,x,y,anchor)

str 表示する文字列:String型
x X座標 :int型
y Y座標 :int型
anchor アンカー :int型
文字列を表示する。

「アンカー」はXY座標として指定する位置が、文字列全体のどの位置を示すかを指定するものです。左上なら「Graphics.LEFT|Graphics.TOP」、右下なら「Graphics.RIGHT|Graphics.BASELINE」というように、縦方向と横方向のアンカー定数を|で繋げて指定します。

Graphics.TOP
Graphics.BOTTOM
Graphics.LEFT
Graphics.RIGHT
Graphics.HCENTER 水平中央
Graphics.BASELINE ベースライン

JARファイルの生成

「KToolbar」の「ビルド」ボタンを押してください。メッセージ領域に「ビルドは完了しました」と表示されれば成功です。HelloWorldプロジェクトのclassesフォルダ(C:\WTK22\apps\HelloWorld\classes)にクラスファイル(HelloWorld.classとHelloCanvas.class)が生成されています。

次にメニュー「プロジェクト⇒パッケージ⇒パッケージを作成」を選択してくださいHelloWorldプロジェクトのbinフォルダ(C:\WTK22\apps\HelloWorld\bin)にJARファイル(HelloWorld.jar)を生成します。

JADファイルの生成

JARファイルが完成したら、「KToolbar」の「属性設定」ボタンを押して「JADファイル」を編集します。今回は編集する必要はないですが、オープンアプリ(Java)で設定可能な項目について一通り紹介します。

◎必須項目



MIDlet-Jar-Size Jarファイルのサイズ(バイト単位)
MIDlet-Jar-URL Jarファイルのダウンロード先URL(5〜256バイト)
MIDlet-Name アプリ名(3〜32バイトでエンコードはUTF8)
MIDlet-Vendor 開発元名(3〜32バイト)
MIDlet-Version バージョン(数値3桁でn.n.n)
MIDletEdition-Configuration CLDC1.1
MIDletEdition-Profile MIDP2.0



◎オプション項目

MIDlet-Icon アイコンファイル名
MIDlet-Data-Size レコードストアのサイズ(記載なしの場合は32KB)
MIDlet-Info-URL オープンアプリの情報サイトのURL(256バイト以下)



◎MIDlets



MIDlet-1の後にアプリ名、アイコンファイル名、最初に起動するクラスの名前を指定します。実際にはアプリ名はMIDlet-Name、アイコンのファイル名はMIDlet-Iconが利用されます。これは、1つのJARファイルに複数アプリを含めた時に利用する設定ですが、オープンアプリ(Java)では複数のアプリを含めることができないためです。

エミュレータでの実行

「エミュレータ」とは、パソコン上でアプリを実行して動作確認を行うためのツールです。「KToolbar」の「実行」ボタンを押した後、「HelloWorld」を選択して下さい。エミュレータを終了するには、ウィンドウ左上の[×]ボタンを押します。

実機での実行

実機で実行するには、パソコン用のHTMLのページを公開するのと同じように、ネット上に「JARファイル(最大300KB)」「JADファイル(最大6KB)」「ダウンロード用XHTMLファイル」をアップロードする必要があります。

XHTMLファイルでオープンアプリ(Java)をダウンロードするように指定するには、Aタグのhref属性で「device:jam?JADファイルのURL」の書式で記述します。



download.html
<html><body>
オープンアプリゲーム</br>
以下のリンクをクリックしてください。
<a href="device:jam?http://npaka.net/hoge.jad">ダウンロード</a>
</body></html>

また、サーバの設定で、Content-Lengthのヘッダと、Content-Typeの以下のMIMEタイプの対応するように設定しておく必要があります。詳しくはサーバ管理者の人に聞いてください。

拡張子 MIMEタイプ
.jad text/vnd.sun.j2me.app-descriptor
.jar application/Java-archive

実機でダウンロード用XHTMLファイルにアクセスし、ダウンロード用のリンクをクリックすれば、アプリをダウンロードすることができます。

おわりに

今回はこれでおしまいです。次回は「イメージの描画」を行うオープンアプリ(Java)を作成します。


ページ先頭へ


  Copyright(C) Spicysoft Corporation All rights reserved.
 
アプリゲット