連載
» 2008年03月12日 00時00分 公開

携帯アプリを作って学ぶJava文法の基礎(3):“たい焼き”であま〜く理解するJava文法と言語仕様 (1/2)

[緒方聡,エスマテック株式会社]

ケータイJavaアプリ作成の必須知識を覚えよう

 前回「キャリアとプロファイルを覚えて「Hello Javaアプリ!」」では、ケータイ(本連載では、携帯電話/PHS/スマートフォンなどの端末をまとめて「ケータイ」と表記します)Javaアプリの開発環境で、初めてのプログラムを動かしてみました。

 今回はプログラムを作るうえで必須の知識であるJavaの文法と言語仕様について説明します。最初に、“たい焼き”を例としてJavaの言語使用の概念的な説明をし、次に、実際にJavaで書かれたプログラムのソースコードを見ながら文法を具体的に理解しましょう。

実際に見るソースコード

 ソースコードは、連載第1回「あなたの携帯電話でJavaアプリは動きますか?」でデモしたテトリスみたいなゲーム「Trimis」のアプレット版のものです。まずは、「Trimisアプレット版」のソースコードをこちらよりダウンロードしてください。

 ダウンロードできたら、ソースコードをテキストエディタWebブラウザの傍らに開いておいてください。ソースコードの説明は行番号で場所を指定するので、行番号が表示できるテキストエディタをぜひ使用してください。

コラム 「武士の刀、画家の筆、サッカー選手のスパイク、そして……」

プログラマーが最もこだわるツールの1つがテキストエディタです。もちろん、筆者もこだわりを持っていて、あるテキストエディタを10年以上使用しています。皆さんもこだわりが持てる気に入ったテキストエディタをぜひ見つけてください。


編集部注テキストエディタでの開発を補助するツールについて詳しく知りたい読者は、「テキストエディタでWebサイト構築をガンバル人へ」をご覧ください。

鋳型”にはめて「クラス」と「インスタンス」の概念を学ぶ

 Javaは「オブジェクト指向言語」です。そして、オブジェクト指向言語は「クラス」という概念があります。クラスからはインスタンスを生成します。

図1 たい焼きで例えたクラスとインスタンスの概念図 図1 たい焼きで例えたクラスとインスタンスの概念図

 図1はクラスとインスタンスの概念を“たい焼き機”と“たい焼き”に例えたものです。「クラス」とは、インスタンスを作るための鋳型で、実際にプログラムとして動作するのは、「インスタンス」というものです。クラスからはインスタンスがいくつでも生成でき、生成するインスタンスはクラスで用意した方法を使って内容を変えることが可能です。

 例えると、たい焼き機からはたい焼きをいくつでも作成することが可能です。そして、たい焼きの中に入れる具は“あんこ”以外に選ぶことができます。“チーズ”や“クリーム”、“お好み焼き”などを入れれば、たい焼きはたい焼きに違いないのですが、特性(この場合、味)の異なるたい焼きが出来上がります。

 たい焼きのインスタンスは誰かに食べられるか、海に逃げ込むようにプログラムされています。どちらになるかは、ここではインスタンスの状態に依存する、としておきます。

 このようにJavaは、クラスを定義してインスタンスを生成し、そのインスタンスを動作させるプログラミング言語である、ということができます。

コラム 「森羅万象の“モノ”をオブジェクト指向で例えてみよう」

Javaはオブジェクト指向言語だと説明しましたが、「オブジェクト指向」とは何でしょうか? オブジェクト指向とはプログラムの構成要素を「モノ(オブジェクト)」に例える考え方です。


Javaでは、実際にこの世界に存在するモノや、または架空のモノをプログラムで表現することがよくありますが、それらがどういうモノなのか、ということを考えられるようになれば、オブジェクト指向をマスターするのは遠くないでしょう。


編集部注オブジェクト指向について詳しく知りたい読者は、「連載「ここから始めるオブジェクト指向」」をご覧ください。

クラスの宣言の仕方

 Javaでは、クラスの宣言は以下のように記述します。

class クラス名 {
 
   クラスの内容
}

 クラス宣言は「class」というキーワードで開始し、クラス名に任意の名前を付け、クラスの内容を“{”と“}”で囲みます。

クラス宣言をソースコードで見る

 実際に、ソースコードで見てみましょう。テキストエディタで開いているソースコードの10行目が、TrimisAppletのクラス宣言を行っている部分です。クラスは“{”から開始し、対応する“}”までです。このソースコードでは対応する“}”は371行目です。最もシンプルなクラスは以下のように書くことができます。

class Simple {}

 このSimpleというクラスは、クラス宣言だけを行って、フィールドメソッドといった特性は宣言されていないので、何もすることができませんが、これでも「何もできない」という特性を持つ立派なクラスです。

“具”から「フィールド」や「変数」を理解する

 クラスとインスタンスが多少なりとも理解できたところで、同じクラスから異なるインスタンスが生成できる仕組みを説明します。

 クラスは、「フィールド」という変数を持つことができます。変数というのは値を入れる場所のことです。

図2 たい焼き機ではあんこを入れる場所が用意されている 図2 たい焼き機ではあんこを入れる場所が用意されている

 たい焼きでは、具を入れる場所があらかじめ用意されています。このクラスに用意されている変更可能な場所がフィールドです。このフィールドは、中身はあんこやチーズ、クリーム、お好み焼きだったりするわけです(場合によっては具がない、ということもあり得ますが、それはまた後ほど説明します)。

 フィールドの内容が異なると、同じクラスから生成されたインスタンスでも特性が異なる、というのは理解できたかと思います。

変数には2種類ある

 前述したようにフィールドというのは変数の一種ですが、変数にはフィールドのほかに「ローカル変数」というものも存在します。このローカル変数というのは、後述するメソッド中で一時的に使用する変数です。

変数を使用するには、2つうちどちらかの「型」を宣言する

 変数を使用する場合は、フィールドであってもローカル変数であっても「」を宣言しなければなりません。Javaの型は、「プリミティブ型」と「参照型」に大別できます。プリミティブ型の一覧は以下のとおりです。

表1 プリミティブ型一覧
説明 値の範囲
boolean 真偽を表す truefalse のみ
byte 最も小さな整数を表す −128 〜 127
short 小さな整数を表す −32768 〜 32767
int 整数を表す −2147483648 〜 2147483647
long 大きな整数を表す −9223372036854775808 〜 9223372036854775807
char 文字を表す 2つの「'」(シングルクオーテーション)で囲んだものすべて(例、'A' や 'あ')
float 実数(小数点数)を表す 1.4e−45 〜 3.4028235e+38
double 大きな実数を表す 4.9e−324 〜 1.7976931348623157e+308

 floatとdoubleには指数が使用されていますが、これを使用しないと数値が表せないので、そのようになっています。分からない人は、「e−45」は、小数点が左に45個、「e+38」は小数点が右に38個移動するという意味で覚えといてください。

 プリミティブ型は上記の8種類です。クラスのインスタンスなど、プリミティブ型以外の変数はすべて参照型です。

変数の宣言の仕方

 Javaでは、変数宣言は以下のように記述します。

型名 変数名;

 型名には、プリミティブ型のいずれか、またはクラス名を指定し、変数名に任意の名前を付け、最後に“;”(セミコロン)を付けます。

フィールド宣言をソースコードで見る

 TrimisAppletのフィールドは、12〜34行目で宣言されています。プリミティブ型がどれで、参照型がどれだか分かりますか? 例えば、以下のような記述になります。

int totalLines = 0;
Thread thread;
Random random = new Random();

 このように、宣言時に「=」の式で値を入れたりもできます。また「new」は簡単にいうと、クラスのインスタンスを作るときなどに使われるキーワードです。「new」や「」については次回以降解説します。

 次ページでは、さらに配列やメソッドについて説明します。

       1|2 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

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

メールマガジン登録

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