最終更新日:

Chapter3
初めて作るJavaアプリケーション
Eclipse(Indigo)編

3-1 サンプルプログラムで使い方を覚えよう

Eclipseには、サンプルのプログラムがいくつか付属しています。それらを実際に呼び出して、実行してみることにします。では、実行させて…と言いたいところですが、この実行ということが言葉では説明しづらく、結果的に見ても理解しづらいものです。ここでは具体例をあげて説明しましょう。

JBuilderにはサンプルプログラムがあり、それを使えばとりあえずは、JBuilderの一通りの作業を経験できるでしょう。テキストエディタというシンプルなものですが、実際に使ってみます。

1Eclipseを起動します。前の章で示したような作業を行い、すでにデスクトップにショートカットを作っている場合は、それをダブルクリックします。

2最初に次のようなワークスペースを確認するダイアログボックスが表示されます。ワークスペースとは、作業用のファイルなどを置いておく場所です。特に理由がなければ、そのままOKを押すことでかまいません。(大学の講義の場合には、ここは講師の指示に従って指定をしてください。)なお、このダイアログボックスはそのままだと起動するたびに出てきます。それが煩わしい場合には起動時に表示しないようにするチェックボックスがありますので、オンにしておきます。

慶応大学の応用情報処理Vの受講生は、大学の教室で利用する場合「H:¥workspace」を指定してください。手入力する必要があります。自宅で利用する場合などでは、既定値のままでもおそらくだいじょうぶです。

3Eclipseが起動しました。最初は「Welcome to the Eclipse IDE for Java Developers」という画面が出ています。ここでは、右上の曲がった矢印のアイコンをクリックしてください。

Pleiades版を利用している場合は、右上の「ワークベンチ」をクリックします。

4Eclipseの作業画面になりました。メニューバーやツールバーが上部にあり、ウインドウの中はいくつかの領域に分割されています。この中身はカスタマイズできますが、この状態で使うことを基本として以後説明します。ウインドウの大きさなどは、使用しているコンピュータに応じて適当に大きくしたり小さくしたりして使ってください。

プロジェクトを用意する

「プロジェクト」とはさまざまなものをまとめて管理する1つの単位です。画面の上では、いろいろなものが所属可能な1つの項目として見えていますが、プログラムを作るときの大枠として考えれば良いでしょう。「いろいろなもの」のうち代表的なものはファイルです。作成したプログラムはファイルに保存し、いくつかのファイルをプロジェクトで管理します。ここからは既に作られているプログラムを動かしますが、そのためのプロジェクトが必要になります。プロジェクトをまずは作ります。

1ツールバーのいちばん左にある「New/新規」ボタンの▼部分をクリックしてメニューを表示します。ここから「Java Project/Javaプロジェクト」を選択します。(Eclipseは英語版、日本語版などのローカライズ版があります。可能な限り、メニュー項目名などをスラッシュで区切って併記します。)

2プロジェクトの名前などを決めます。ここでは「Project name/プロジェクト名」として「MyFirstProject」と入力をしてください。他の選択肢は、そのままの設定で「Finish/終了」をクリックします。

3プロジェクト「MyFirstProject」が作成されて、パッケージ・エクスプローラに項目が見えました。この段階では、プロジェクトつまりファイルなどの置き場所がまず確保されただけであることを示しています。

サンプルプログラムを追加する

サンプルプログラムをダウンロードしてプロジェクトに追加してみます。次のように作業します。

1サンプルプログラムを「http://msyk.net/keio/JavaBook/BasicSwingComponents.java」に用意しました。リンクをクリックしてダウンロードするか、あるいはWebブラウザのウインドウに表示されます。ファイルとして利用できる状態にしておきます。ファイル名はBasicSwingComponents.javaです。以下の作業は「ダウンロード」フォルダにダウンロードしたものとして解説をします。別のフォルダにダウンロードした場合は、その場所でかまいません。

2プロジェクトの名前を選択している状態で、「File/ファイル」メニューから「Import/インポート」を選択します。

3最初のダイアログボックスでは、一覧にある「General」のさらに下位項目にある「File System」を選択して、「Next」ボタンをクリックします。

4ファイルの取り込みを行うダイアログボックスが表示されます。「From directory」の右の「Browse」ボタンをクリックします。

5「Import from directory」というダイアログボックスで、BasicSwingComponents.javaファイルをダウンロードしたフォルダを指定します。そして、OKボタンをクリックします。

62列のリストの右側にフォルダの一覧が表示されます。ここで、「BasicSwingComponents.java」の左のチェックボックスにチェックを入れておきます。そして、「Finish」ボタンをクリックします。

7左側のパッケージ・エクスプローラに、「BasicSwingComponents.java」の項目が増えました。下位の項目が見えていない場合は、「MyFirstProject」の項目の左側の三角ボタンをクリックします。「BasicSwingComponents.java」を「src」の下にドラッグ&ドロップして、「src」の下に「BasicSwingComponents.java」があるようにします。

8「src」の下位項目にある「BasicSwingComponents.java」をダブルクリックすると、中央のエリアにプログラムが見えています。これがこのファイルに含まれているプログラムです。

ウインドウの中央の部分に見えているテキストがJavaで作成されたプログラムです。プログラムとして処理すべきことが1行1行書かれています。内容はともかく、テキストで書いたプログラムによって、この後に実行して確認するようなウインドウが作られて、その中にボタンなどが配置するといったことができるということを理解してください。

プログラムを実行する

いよいよこのプログラムを実行してみます。このプロジェクトでいえば、「実際にアプリケーションとして機能させるようにする」ことを実行といいます。

1ツールバーにある「Run/…を実行」ボタン(緑色の円の中に▷が見えているボタン)をクリックします。

2実行するプログラムのタイプを選択するダイアログボックスが表示されます。このプログラムは「Java Application」を選択します。選択後、OKボタンをクリックします。

3少し待つと、小さなウインドウが表示されます。真っ白な部分が多いウインドウが見えています。独立したウインドウの中で、ボタンをクリックしたり、スライダーを動かしたりすることができることを確認してください。そして、Windowsのタスクバーをみると、「BasicSwingComponents」と書かれたボタンが増えていて、1つのアプリケーションとして稼働していることがわかります。

4「BasicSwingComponents」と書かれたウインドウの右上の閉じるボタンをクリックすればウインドウは閉じます。同時にアプリケーションも終了します。

5左側のエクスプローラ以外のボックスは、ボックスの右上にある最小化ボタンをクリックすることで、周囲に小さなアイコンとして残るだけで画面領域は使わなくなります。当面はファイルとプログラムしか参照しなくても大丈夫ですので、他のボックスは最小化しておきます。

プログラムとコンパイル

サンプルにあるBasicSwingComponents.javaは、人間が読めるテキスト形式のプログラムですが、これをコンパイラを利用して、Java VMが理解できるプログラムに変換します。コンパイラはJBuilderに組み込まれていると考えれば良いでしょう。人間が読めるプログラムは「ソース」という言い方をしますが、これに対してCPUなど機械が理解できる形式のプログラムは「バイナリ」とか「オブジェクトコード」という言い方をします。

バイナリというのは、ソースがテキストであるのに対して、コンパイル結果はテキストではないところから来ているのですが、画像データのように「バイナリ」データだからと言って必ずしもプログラムとは限りません。ただ、そういう言い方をすることは知っておくとよいでしょう。「オブジェクトコード」というのが適切な表現なのですが、他に「オブジェクト」という用語もあとから出てきます。「オブジェクト」はまったく異なる概念を指し示す用語で、しかもJavaの根幹にかかわるものなので、さらに面倒です。だから、あえて、コンパイル結果は「オブジェクトコード」と“コード”を付けることにします。人間の読めるほうを「ソースコード」と言うこともよくあります。

プロジェクトと作成されるファイルについて

まずはサンプルとして用意されているものを使ってみましたが、JBuilderではこのように、プログラムの作成から実行、その他さまざまな作業を1つのアプリケーションの中でできるようになっています。そのため、とにかく、JBuidlerを呼び出して作業をするだけでいいという意味で、「統合開発環境」といった言い方もされています。だから、JBuilderの使い方をある程度マスターした上でプログラムを行なうという必要があります。JBuilderにはたくさんの機能があり、本書ではその全ては残念ながら紹介はできませんが、ポイントになる作業は折に触れて説明することにしましょう。

改めて「プロジェクト」というものを説明しておきましょう。この書籍で説明するようなプログラムは短いもので、1つのファイルに収まっていますが、本格的なアプリケーションソフトだと、プログラムを記述したファイルを大量に用意することになります。また、プログラムのファイル以外に、ソフトウエアの作成では画像ファイルや、データのファイルなどたくさんのファイルが必要になります。それらを効率的に管理する必要がありそれが開発ツールの大きな仕事の1つと言っていいでしょう。たくさんのファイルが必要だとして、それらを1つ1つ呼び出すのは大変です。そこで、それらさまざまなファイルを統合して扱えるように「プロジェクト」という1つの文書ファイルを利用します。そこの中に、作成しているソフトウエアに必要なファイルを登録しておき、手軽に呼び出せるようにするのです。プログラマは、作業を始めるにはプロジェクトファイルを1つ呼び出すだけでいいということになります。

プロジェクトは、それに加えて、実際に作り上げるソフトウエアに関するさまざまな設定も行ないます。たとえば、アプリケーションなのさらに別の形態なのか、実行形式のファイルはどこにどんな名前で作るのかなど、ソフトウエアの最終的な形を整えるのに必要な情報も含まれます。また、その他の情報も記録されるのですが、開発ツールを使う上ではここまでに説明してきた内容が含まれているということを意識してもらえればいいでしょう。

3-2 自分でプログラムを作成する

サンプルプログラムを動かしても、自分でプログラムを作っているという実感は薄いかもしれません。さっそく、自分でプログラムを作成してみましょう。前の手順で作ったプロジェクトをそのまま使います。アプリケーションをプロジェクトに追加して、実行するプログラムを作成します。前の手順で作ったMyFirstProjectというプロジェクトを選択している状態で、以下のように作業を行ないましょう。

1ツールバーにある「New/新規」ボタンの▼部分をクリックしてメニューを表示し、「Class/クラス」をクリックします。(クラスについては後の章で説明をします。ここでは、一連の一塊のJavaで作られたプログラムをまとめておくものと理解してください。)

2新たにクラスを作成するための設定を行います。「Source folder/ソース・フォルダー」には、プロジェクト名が自動的に入っています。「Package/パッケージ」は今回のプログラムではあまり意味はありませんが設定を促されるので「javabook」と入力しておきましょう(本来は正しい命名のルールなどがありますが、練習用のプログラムでは任意に設定していいでしょう)。そして、「Name/名前」に「MyWindow」とキータイプします。そして下の方の「public static void main(String[] args)」のチェックを入れておきます。他はそのままにして、「終了」ボタンをクリックします。

3プロジェクトにクラス「MyWindow.java」が追加されました。パッケージの名前がさらに上位項目となっていますが、このパッケージ名はクラスを分類するためのものです。そして、中央には、クラス「MyWindow.java」の内容が表示されていますが、その中身はテキストで記述するプログラムとなります。プログラムの一部がすでに入力されています。

4MyWindow.javaの内容を変更します。「// TODO …」と書かれた行の次の行に、プログラムを追加します。行内の適当な場所をクリックしてTabキーを押して、インデントを揃えた位置にカーソルを移動させてください。

5ここからは、キータイプしながら、キーワードの候補を表示する機能の動作を見ながら入力をして行く事にしましょう。まず「System.」とキータイプしてください。すると、その後に記述可能なキーワードがポップアップしたメニューに表示されます。

6続いて「out.println(」までキータイプします(選択して入力する事もできます)。

7図のように「System.out.println("私の名前は新居雅行です。");」と1行に入力されているようにしてください。なお、「新居雅行」の部分は自分の名前にしてください。

package javabook;

public class MyWindow {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO 自動生成されたメソッド・スタブ
		System.out.println("私の名前は新居雅行です。");
	}

}

8ナビゲーションに見えている「MyWindow.java」の項目を右ボタンでクリックして、メニューを表示します。「Run As/実行」から「1 Java アプリケーション」を選択します。

9次のようなダイアログボックスが出ます。「Always save resources before launching/常に起動前にリソースを保存する」のチェックボックスをオンにして、OKボタンをクリックします。プログラムのテキストを変更した後には必ず保存をする必要があるのですが、このチェックにより、自動的に保存をしてくれるようになります。

10実行した結果、ウインドウ下部の「コンソール」に文字列が表示されているのが実行結果です。このプログラムは単に文字列を出力するだけのものです。

11さらに図のようにプログラムを付け加えてください。

package javabook;

public class MyWindow {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO 自動生成されたメソッド・スタブ
		System.out.println("私の名前は新居雅行です。");
		System.out.println("一生懸命Javaを勉強します。");
	}

}

12実行した結果、ウインドウ下部の「コンソール」に文字列が出力されています。

前のプログラムで追加した部分だけに注目をしてください。ここでのキーワード1つ1つが、ある種の命令だと思ってください。「System.out.println」とややこしそうな感じがするかもしれませんが、今の段階では、これによって、後の()の中の文字列をそのまま「コンソール」に出力すると考えてもらってOKです。細かく説明するといろいろあるのですが、「System.out.println」が「コンソールに文字を出力する」というJavaの機能を利用していると思ってください。

ウインドウを表示するプログラム

ここまでに作ったMyWindow.javaにさらにプログラムを追加して、ウインドウに文字が表示されるようにしてみましょう。いろいろな機能を使う必要がありますが、ともかく入力をしてみて、結果からプログラムで行っていることを類推しましょう。

これまでに入力してきたさらに続きの部分にプログラムを追加します。入力した結果を示しますが、MyWindow.javaの最終的な全内容についてもその後に記述しますので、そちらも参考にしながら入力をしてみてください。もちろん、名前は自分の名前に置き換えて入力してください。日付は今日の日付に置き換えましょう。特にプログラムの最初の方に追加があるのを忘れないでください。

package javabook;

import java.awt.*;
import javax.swing.*;

public class MyWindow extends JFrame {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO 自動生成されたメソッド・スタブ
		System.out.println("私の名前は新居雅行です。");
		System.out.println("一生懸命Javaを勉強します。");
		
		MyWindow my = new MyWindow();
		my.setBounds(100,50,300,200);
		my.setTitle("私のウインドウ");
		
		JLabel myText1 = new JLabel("これを作ったのは新居雅行です。");
		JLabel myText2 = new JLabel("今日は2008年8月6日です。");
		
		JPanel myPanel = new JPanel();
		myPanel.add(myText1);
		myPanel.add(myText2);
		
		my.getContentPane().add(myPanel);
		my.setVisible(true);
	}

}
修正後のMyWindow.javaの内容

プログラムを実行してみましょう。ツールバーにある「Run/…を実行」ボタン(緑色の円の中に▷が見えているボタン)の右にある▼をクリックすると「2 MyWindow」と項目が増えているはずです。この項目を実行します。あるいは連続して実行する場合はツールボタンをクリックすることでも実行できます。実行についてはさまざまな方法があります。ともかくボタンでうまく動かないときは、プログラムのファイルを右ボタンでクリックする方法(前に実際にやっている)でも試してみます。

実行すると、ウインドウが表示されます。ウインドウの中の文字列と、プログラムの中の文字列を比べてみてください。こうしてプログラムで指定した文字が、作ったアプリケーションのどこかに表示されます。また、ウインドウのサイズや位置と、プログラム中に打ち込んだ数字を見比べて、その数字が位置や大きさに対応しているかも想像してみましょう。

実行した結果、ウインドウが新たに表示された

プログラムの内容をすべて理解する必要はありません。ここでは、自分の手で打ち込んだ文字列が、実際に新たに起動するアプリケーションの中で見えているということに注目して下さい。つまり、自分でアプリケーションを作ることができるというのがポイントになります。また、「私のウインドウ」という項目がタスクバーに追加されている点も見逃さないでください。これは新たにアプリケーションが起動したということに他なりません。

プログラムを入力するときの注意

プログラムの文字を入力するときには、半角と全角の違いを明確に意識してください。同じスペースでも、半角ならよいのですが、全角のスペースだと間違ったプログラムと判断されることがあります。また、不等号などの記号も、半角と全角ではまったく意味が違ってきます。なお、この書籍で説明するJavaのプログラムでは、” ”で囲われた文字列(次の章で説明をします)の中身と、//よりあとや、/*〜*/で囲まれたコメントという部分以外では、全角文字はまずほとんど出てこないと思ってかまいません。上記のプログラムでも、” ”で囲まれた部分以外は全部半角です。とにかく細心の注意をしてください。

同様に、大文字と小文字も明確に区別をしてください。Windowsを使っていると、ファイル名は大文字と小文字の区別をしないだけに、使う側もあまり意識しません。大文字か小文字かをしっかり指定することはありませんし、ほとんどはその必要がありません。しかし、Javaのソースプログラム中では、大文字と小文字は明確に区別されます。DisplayMyNameと、displayMyNameは別のものだと区別するのがJavaの世界なのです。

1行1行の区切り、つまり改行をEnterキーで入力するのは、普通にワープロなどの作業を行っているときと同様です。Javaのプログラムでは、1つのプログラムのまとまりを、パッと見てわかりやすくするために、インデントをかけます。このプログラムだと、3〜6行目が1つの固まりで、4、5行目がさらにその固まりの中の1つの固まりであるというようなことが目で見て判別しやすくなります。プログラムに独特の記述方法ですが、追々慣れていってください。このインデントはTabないしはスペースを使います。ただし、全角のスペースはダメです。改行すると、前の行と同じだけのインデントが必ず設定されるようになっているので、必ずしもすべての行でTabキーでインデントを設定する必要はありません。場合によってはTabやスペースを削除して、インデントを少なくする必要もあるかもしれません。いずれにしても、表示される結果を見ながら、プログラムを入力していってください。

ピリオドとカンマ、セミコロンとコロンは間違いやすいので注意してください。()だけでなく{}があるのもおわかりでしょうか。しつこいようですが、いずれも半角です。カッコ類はきちんと対応がとれるようにプログラムを組みます。

3-3 プロジェクトの中身をみてみる

実際に、プロジェクトの中身を見てみましょう。ソフトウエアを作るにはたくさんのファイルを作ることになることは説明しましたが、そうしたファイルを効率的に管理するには、当然ながらフォルダに入れるというのが基本的な方針になります。JBuilderでも、プロジェクトとそれにかかわるファイルなどを、1つのフォルダにまとめるというのが基本的な方針です。ここで作ったMyFirstProjectフォルダをエクスプローラで見てみます。ワークスペースに対応する「Workspace」フォルダ(状況によってはこのフォルダは異なるパスにあります)にあるMyFirstProjectフォルダがその「プロジェクトフォルダ」に相当するものです。

プロジェクトフォルダの中を見てみましょう。.classpathや.projectというフォルダと、javabookというフォルダがあります。ドットで始まるファイルは、たとえばプロジェクトの中身にどんなファイルがあるのかなどのさまざまな情報が込められているようです。

プロジェクトのフォルダのルート

プロジェクトフォルダ内でパッケージ名のフォルダ以下に、Javaで書かれたプログラムのソースファイルが入れられます。ここでは、javabookフォルダがあって、MyWindow.javaというプログラムファイルがあります。プログラムファイルは、.javaという拡張子を持ち、内容はテキストです。加えて、MyWindow.classというファイルもあります。これは、MyWindow.javaプログラムをコンパイルしてできたファイルで、内容はバイナリです。アプリケーションとして実行するときには、MyWindow.classのファイルの内容が読み込まれて実行されます。

わざわざフォルダに分けないといけないのかと疑問に思うかもしれませんが、ここではこれはあまり気にしないでください。こうした階層化によって、ソースファイルの中の記述の有効範囲などを規定できるのですが、本書で作成するくらいのプログラムだと、そこまで気にする必要はありません。また、フォルダの階層は自分で作る必要はまずないので、とにかくこうなっているのだと思っておくだけで支障はないでしょう。

プログラムとして作るのが.javaファイルで、それをコンパイルしてできあがるのが.classファイルです。こちらがJava VMで実行可能な形式のオブジェクトコードが入ったファイルです。つまり、これがプログラムの本体です。Windowsだと、.exeというファイルに決められた形式で、Intel系CPU(Core 2 Duoなど)で実行可能なものが入れられていて、Windowsから呼び出すことで、ワープロやペイントソフトが稼動します。それと同じようなもので、Javaの世界では、Java VMという仮想コンピュータで実行できる形式のファイルを、.classファイルに入れて実行するというのが基本です(異なる形式もあります)。この、.classファイルは、JBuilderが、.javaファイルからコンパイルすることによって自動的に生成されます。ソースプログラムから実行可能なものを生成することを「コンパイル」と呼びますが、実行する前に自動的にコンパイルを行ないます。コンパイルと実行は別々にできるのですが、それはコンパイルに時間がかかるような大規模なソフトウエアの場合に使われる手法です。少々のサイズのものなら、いきなり実行しても、さほど待たされることはありません。

ファイルへの保存はおおむね自動的に行なわれる

入力したプログラムは、もちろん独立したファイルに記録されているので、保存の必要があります。しかしながら、プログラムの実行を行なった時にJBuilderは自動的に保存を行なうので、ソースプログラムを書き換えて保存する作業は、ほとんどする必要はないと言って良いでしょう。プロジェクトの内容に変更が発生したときも保存は必要ですが、Eclipseを終了する時に保存するかどうかをたずねるので、そのときに保存を指定しておけばかまいません。本来はファイルへの保存に細心の注意が必要なのですが、こうした面倒なことはEclipse側で自動的にやってくれると思っておいてもおおむね問題はないでしょう。

この章のまとめ

非常に簡単ではありますが、ともかく1からプログラムを作成して、それをコンパイルして実行してみました。また、Webブラウザ上でも実行してみました。文字数をもっと長く入れた方は、もしかすると見え方が違ってくるかもしれませんが、ともかく、自分でタイプした文字がプログラムとして実行されて画面に表示されました。来週から、少しずつプログラムが複雑にはなりますが、ソースファイルにプログラムを作成し、コンパイルして実行するという手順は変わりません。今週だけでプログラミングの作業は、ひととおりやったわけです。

練習問題

3-1: 自分で作ったプロジェクト「MyWindow.java」のプログラムにおいて、自分の名前と日付ではなく、自分の所属する大学名と、自分の所属する学科学部名を表示するように、プログラムを修正してみてください。

3-2:「MyWindow.java」を実行したときのウインドウ名を別の文字列(なんでもいい)に書き換えて、ウインドウのタイトルが変わるかどうかを確認してみましょう。

3-3:プログラムの中に「my.setBounds(100,50,300,200);」という部分がある。この、400や300の数字を適当に変えてプログラムを実行するとどうなるかを調べてみましょう。この部分の数字にどんな意味があるか、実行結果から推測してみましょう。