(Translated by https://www.hiragana.jp/)
テンプレートで学ぶJavaアプリのグラフィックの基本:携帯アプリを作って学ぶJava文法の基礎(6)(1/3 ページ) - @IT

テンプレートでまなぶJavaアプリのグラフィックの基本きほん携帯けいたいアプリをつくってまなぶJava文法ぶんぽう基礎きそ(6)(1/3 ページ)

» 2008ねん06がつ16にち 0000ふん 公開こうかい
[緒方おがたさとしエスマテック株式会社かぶしきがいしゃ]

 前回ぜんかいの「プログラムのライフサイクルやイベント駆動くどう」までで、あしですがJavaプログラミング基本きほんちゅう基本きほんやどのようにしてプログラム全体ぜんたいてるかをまなんできました。

 今回こんかいからすうかいは、iアプリMIDletMIDPアプリ)を作成さくせいするうえでのテンプレート紹介しょうかいし、そこに機能きのう肉付にくづけしながらケータイJava(ほん連載れんさいでは、携帯けいたい電話でんわPHSスマートフォンなどの端末たんまつをまとめて「ケータイ」と表記ひょうきします)のプログラミングのポイントをさえていきます。

 あらかじめ理解りかいしておいてもらいたいのは「目的もくてきおなじプログラムはおなじようなつくかたになるものの、それ以外いがい方法ほうほう実現じつげんできることもある」ということです。今回こんかい紹介しょうかいするテンプレートは、ケータイJavaアプリをつくるためのもっともシンプルな方法ほうほうの1つではありますが、かならずしもそのつくかただけではない、ということに注意ちゅういしてください。

Javaアプリ作成さくせい役立やくだつテンプレート

MIDPのテンプレートアプリが動作している様子 MIDPのテンプレートアプリが動作どうさしている様子ようす(Flash動画どうが表示ひょうじは、こちら) 

 今回こんかいのテンプレートは、ごく簡単かんたんなアプリとして用意よういしました。まずは、動作どうさてみることにしましょう。以下いかのそれぞれの動画どうがのスタートボタンをしてください。再生さいせいするとかりますが、このテンプレートはとても簡単かんたんなデジタル時計とけいになっています。そして任意にんいのキーをすと、ボタンがされたことを通知つうちしています。

DoJaのテンプレートアプリが動作している様子 DoJaのテンプレートアプリが動作どうさしている様子ようす(Flash動画どうが表示ひょうじは、こちら
左下ひだりしたのボタンで再生さいせい停止ていしができます。Flash動画どうがるには、Flash Playerが必要ひつようになります。Flash Playerのダウンロードページは、こちら

 

 うえFlash動画どうがDoJaの「iアプリ開発かいはつキット以下いか、「iDK」)」と「MIDPアプリ開発かいはつツー以下いか、「WTK」)」で、それぞれテンプレートアプリを動作どうささせたものです。まだiDKとWTKをセットアップしていないならば、それぞれ連載れんさいだい2かいiアプリ開発かいはつキットのセットアップMIDPアプリ開発かいはつツールのセットアップ参照さんしょうしてセットアップしてください。

 テンプレートアプリのプロジェクトはそれぞれ以下いかからダウンロードできます。

 上記じょうき展開てんかいすると、作成さくせいされるフォルダを、iDKなら「C:\Java\iDK\apps」のしたに、WTKなら「C:\Java\WTK\apps」のしたにコピーしてください。なお、iDKとWTKのインストールさきは、ほん連載れんさいではデフォルトの位置いちから変更へんこうしているので、注意ちゅういしてください。

 ソースファイルはそれぞれ「src」というフォルダにふくまれています。れいによってテキストエディタでひらいておくとよいでしょう。

注意ちゅうい! 「WTKのプロジェクトの保存ほぞんさき仕様しよう変更へんこうについて」

WTKの2.5.2では、プロジェクトの保存ほぞんさき変更へんこうされています。リリースノートには、以下いかのように記載きさいされています。


「マルチユーザー機能きのうにより、おなじマシンじょう複数ふくすうのユーザーがインストールされている1つのWireless Toolkitを使用しようできます。インストーラは製品せいひんをインストールしたのち、ユーザーアカウントごとに、インストールファイルのサブセットをインストールディレクトリから個別こべつ作業さぎょうようディレクトリ(j2mewtk)にコピーします。作業さぎょうようディレクトリのデフォルトの場所ばしょ(workdir)は、一般いっぱんてきつぎのいずれかの場所ばしょになります。

Windows: C:\Documents and Settings\User\j2mewtk\2.5.2 (User はユーザーのアカウントめい)
Linux: ~/j2mewtk/2.5.2 (~ はユーザーのホームディレクトリ)

一般いっぱんてきに、作業さぎょうようディレクトリは、ユーザーがアプリケーションを作成さくせいしたり、カスタマイズをおこなったりするために使用しようします。この機能きのう詳細しょうさいは、『ユーザーズガイド』を参照さんしょうしてください。」


Windows Vistaの場合ばあいは「C:\User\\j2mewtk\2.5.2」となります(はユーザーのアカウントめい)。


WTKのインストールさきの「apps」フォルダにTemplateMIDletをコピーすると、初回しょかいのプロジェクトをひらくダイアログでは、以下いかのように表示ひょうじされます。

図1 プロジェクトを開くダイアログの初回表示 1 プロジェクトをひらくダイアログの初回しょかい表示ひょうじ

ここでTemplateMIDletを選択せんたくすると、そのプロジェクトが作業さぎょうようディレクトリにコピーされます。Vistaの場合ばあいは、以下いか場所ばしょになります。

図2 作業用ディレクトリにコピーされた 2 作業さぎょうようディレクトリにコピーされた

次回じかいからは、この作業さぎょうようディレクトリからまれます。作業さぎょうようディレクトリにプロジェクトがある場合ばあいは、以下いかのようにプロジェクトめい太字ふとじになり、うえにソートされてきます。

図3 作業用ディレクトリにプロジェクトがある場合は太字表示 3 作業さぎょうようディレクトリにプロジェクトがある場合ばあい太字ふとじ表示ひょうじ

けなければならないのは、この状態じょうたいでいくらインストールフォルダのソースファイルを変更へんこうしても、作業さぎょうようディレクトリのソースファイルには反映はんえいされないということです。筆者ひっしゃはリリースノートをまずに作業さぎょうしてすこしだけハマりました。みなさんはおけください。


手続てつづきを簡略かんりゃくできる「匿名とくめいクラス」とは?

 さて読者どくしゃ環境かんきょうでは、前章ぜんしょう説明せつめいしたテンプレートは動作どうさしているでしょうか。このテンプレートは、ほん連載れんさい前回ぜんかいまでに解説かいせつしたJavaの文法ぶんぽうでほとんどカバーできていますが、まだ解説かいせつしていないあたらしい技術ぎじゅつ使つかわれています。

わがはいはクラスである、名前なまえはずっとない

 ほん連載れんさいだい3かいの「鋳型いがた”にはめて『クラス』と『インスタンス』の概念がいねんまな」では、クラス宣言せんげん以下いかのように説明せつめいしましたが、クラスめい省略しょうりゃくして、一気いっきインスタンスまで作成さくせいする方法ほうほうがあります。それが今回こんかい説明せつめいする「匿名とくめいクラス」です。

class クラスめい {
 
   クラスの内容ないよう
}

 TemplateAppli.javaでは、以下いか個所かしょです。

17 canvas = new Canvas() {
18
    public void paint(Graphics g) {
19
        // このメソッドは利用りようしないので実装じっそうする必要ひつようはない
20
    }
21
22
    public void processEvent(int type, int param) {

……【中略ちゅうりゃく】……

30
    }
31 };
    

 TemplateMIDlet.javaでは、以下いか個所かしょです。

22 canvas = new Canvas() {
23
    public void paint(Graphics g) {
24
        g.drawImage(offi, 0, 0, Graphics.TOP | Graphics.LEFT);
25
    }
26
27
    protected void keyPressed(int keyCode) {

……【中略ちゅうりゃく】……

31
    }
32 };

 DoJaにもMIDPにも「Canvas」というクラスがあって、上記じょうき抜粋ばっすいしたコードは、両方りょうほうとも最初さいしょくだりでCanvasクラスからcanvasインスタンスを生成せいせいしています。しかし、通常つうじょうならば「canvas = new Canvas();」とセミコロンでわるはずのインスタンス生成せいせいが、ブロック開始かいし括弧かっこなんぎょうつづいています。

インスタンス生成せいせい通常つうじょうのクラスとちが理由りゆう

 まず、なぜ「canvas = new Canvas();」ではいけないのか、という説明せつめいをしましょう。ちょっとながくなりますが、大切たいせつなことなのでばさないでくださいね。

 Canvasクラスは、DoJaでもMIDPでも、「public abstract class Canvas」と宣言せんげんされています。つまり、Canvasクラスは抽象ちゅうしょうクラスなのです。クラスなのでインスタンスを生成せいせいできるのですが、そのままではりていない部分ぶぶんがあって、そこはプログラマーにりていない部分ぶぶん補完ほかんしてもらわなければならない、ということを「abstract」というキーワードであらわしています。

 プログラマーがどこを補完ほかんしなければならないのかは、それぞれのクラスのJavadocをればかります。

図4 DoJaのCanvasクラスのpaintメソッド 4 DoJaのCanvasクラスのpaintメソッド
図5 MIDPのCanvasクラスのpaintメソッド 5 MIDPのCanvasクラスのpaintメソッド

 

 上記じょうきはCanvasクラスのpaintメソッドあたりのJavadocです。それぞれのCanvasクラスのpaintメソッドだけに「abstract」というキーワードがあるのがれます。プログラマーは、このabstractがいたメソッドを実装じっそうしなければなりません。インターフェイス定義ていぎされているメソッドをすべて実装じっそうしなければならないのと同様どうよう抽象ちゅうしょうクラスでabstract宣言せんげんされているメソッドもすべて実装じっそうする必要ひつようがあるのです。

 ページでは、匿名とくめいクラスの宣言せんげん仕方しかたについて説明せつめいし、今回こんかいのテンプレートについてDoJaとMIDPにけて詳細しょうさい解説かいせつしていきます。

コラム 「Javadocはどこにある?」

Javadocは最初さいしょのうちはかならなければならないドキュメント、ということでしたね。DoJaならiDKインストールフォルダの「doc\index.html」を、MIDPならWTKインストールフォルダの「docs\api\midp\index.html」がすべてのJavadocのインデックスです。今後こんご頻繁ひんぱんにアクセスすることになるので、おりにれておきましょう。


       1|2|3 つぎのページへ

Copyright © ITmedia, Inc. All Rights Reserved.

アイティメディアIDについて

メールマガジン登録とうろく

@ITのメールマガジンは、 もちろん、すべて無料むりょうです。ぜひメールマガジンをご購読こうどくください。