最終更新日:

Chapter3
初めて作るJavaアプリケーション
Turbo JBuilder 2007編

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

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

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

1スタートメニューの「すべてのプログラム」に「Turbo JBuilder 2007」という項目があります。そこにある「Turbo JBuilder 2007」を選択します。(この項目は代表的なインストール場所です。他の場所にアイコンを設置した場合は他の方法でも起動できます。)

2最初にスプラッシュスクリーンが表示されます。これが表示されている間は待ちます。

3初めて起動したときには「ワークスペース・ランチャー」というウインドウが表示されます。これは、JBuilderで作ったさまざまなファイルの置き場所を指定するダイアログボックスです。「ワークスペース」のところに、データの保存場所のパスを入力しますが、デフォルトではJBuilder 2007のフォルダの中に、ワークスペースのフォルダを作ります。(大学の講義の場合には、ここは講師の指示に従って指定をしてください。)通常は毎回これが出るのは面倒なので、「この選択をデフォルトとして使用し、今後この質問を表示しない」のチェックを入れておいて、OKをクリックします。

4さらにスプラッシュスクリーンが表示され、しばらく待ちます。

5JBuilderが起動しました。最初は「Code Gear JBuilder 2007へようこそ」という画面が出ています。いろいろな情報がありますが、ここでは、右上の家の形をしたアイコン(「ホーム」とヒントが出る)をクリックしてください。

6さらに説明の画面が出ます。ここでは右上の「ワークベンチに移動」とチップヒントが出るひねった矢印のアイコンをクリックしてください。

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

プロジェクトを用意する

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

1ツールバーのいちばん左にある「新規」ボタンの▼部分をクリックしてメニューを表示します。ここから「プロジェクト」を選択します。

2新しくプロジェクトを作る場合のテンプレートを選択するダイアログボックスが表示されます。本書ではここでの選択肢は「Javaプロジェクト」のものしか利用しません。「Javaプロジェクト」を選択して、「次へ」をクリックします。

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

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

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

次にJBuilderに付属しているサンプルプログラムをプロジェクトに追加してみます。次のように作業します。

1プロジェクトの名前を選択している状態で、ツールバーのいちばん左にある「新規」ボタンの▼部分をクリックして表示されるメニューから「サンプル」を選択します。

2サンプルを選択するウィザードが表示されます。「サンプル・ビジュアル・クラス」というカテゴリの「Swing」のカテゴリの左にある部分「+」の部分をクリックして、階層表示を展開します。

3展開された中にある「BasicSwingComponents」を選択して、「次へ」ボタンをクリックします。

4次の画面で、「ソース・フォルダー」にプロジェクト名が自動的に入力されているのを確認してください。なお、「パッケージ」はここでは空欄のままでかまいません。「推奨されません」とメッセージが出ますが、試すだけなので、空欄のまま「終了」ボタンをクリックします。

5ウインドウにさまざまなものが表示されますが、しばらくはウインドウ下部のステータスバーでさまざまな処理が進んでいる事を確認してください。それが終わると図のようになります。プロジェクトにプログラムが追加された状態になりました。

ウインドウの中央の部分に上下に分割して、上側にはボタンなどが並んだウインドウが見えています。下側にはテキストが見えています。この下側のテキストが、Javaで作成されたプログラムです。それなりに複雑なプログラムなのですが、このプログラムを実行すると、上部に見えるようなウインドウが表示されるものと思ってください。この画面ではウインドウに表示する内容を現実に見える状態で表示して仕上がりを確認しながら、同じ者を作成できるプログラムを生成するという高度な機能を持った画面です。しかしながら、ここでは、ともかく、テキストで書いたプログラムによってウインドウが作られて、その中にボタンなどが配置するといったことができるということを理解してください。

プログラムを実行する

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

1ツールバーにある「…を実行」ボタン(緑色の円の中に▷が見えているボタン)の右にある▼をクリックしてメニューを表示します。そして、「実行」から「3 Java Beans」を選択します。(実際には最初の項目「1 BasicSwingComponents」は見えていません。2回目からはこのメニューが追加され、これを選択して実行が可能です。)

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

3ウインドウの右上の閉じるボタンをクリックすれば終了して、ウインドウが閉じます。

プログラムとコンパイル

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

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

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

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

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

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

3-2 自分でプロジェクトを作成する

サンプルプログラムを動かしても、自分でプログラムを作っているという実感は薄いかもしれません。さっそく、自分でプログラムを作成してみましょう。まずは、自分で作るプログラムのプロジェクトを用意します。次のように操作してみましょう。

1JBuilderのツールバーにある「新規」ボタンの▼部分をクリックしてメニューを表示し、「プロジェクト」をクリックします。

2新規プロジェクトのテンプレートを選択するダイアログボックスが表示されます。ここでは「Javaプロジェクト」を選択して、「次へ」をクリックしてください。

3プロジェクトの名称として「MyFirstProgram」を「プロジェクト名」のテキストフィールドに入力します。他の設定はそのままにして、「終了」ボタンをクリックします。

4新たにプロジェクトが作成されました。パッケージ・エクスプローラーに、「MyFirstProgram」という項目が増えています。その下位の項目は自動的に付けられた「JREシステム・ライブラリー」だけですが、これはそのままにしておいてください。これによってJavaのさまざまな機能がプログラムから利用できるようになります。

こうしてプロジェクトのファイルが作成されますが、上記の手順だと、そのフォルダはワークスペースのディレクトリに作成されます。以上のような流れでは、起動ディスク(ここではC)のJBuilder2007フォルダにWorkspaceフォルダが作られ、そこにMyFirstProgramフォルダが作られています。ファイルのありかは後で確認しましょう。

アプリケーションをプロジェクトに追加して実行

作成したプロジェクトには、実行するプログラムは何も入っていません。ここで、アプリケーションをプロジェクトに追加して、実行するプログラムを作成します。アプリケーションを1から作ってもかまわないのですが、JBuilderではアプリケーションのひな形を作成する機能がありますので、こうした機能を利用すると少しでも作業は楽になります。前の手順で作ったMyFirstProgramというプロジェクトを選択している状態で、以下のように作業を行ないましょう。

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

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

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

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

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

6続いて「out.println(」までキータイプします。候補のメニューの中のキーワードも選択されていて、このprintlnのキーワードが正しい事が分かります。(キーワードの正しさを判定するだけでなく、選択して入力する事もできます。)

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

package javabook;

public class MyWindow {

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

}

8ツールバーにある「…を実行」ボタン(緑色の円の中に▷が見えているボタン)の右にある▼をクリックしてメニューを表示します。そして、「実行」から「3 Java アプリケーション」を選択します。

9次のようなダイアログボックスが出ます。毎回これが表示されるので「常に起動前にリソースを保存する」のチェックボックスをオンにして、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の最終的な全内容についてもその後に記述しますので、そちらも参考にしながら入力をしてみてください。もちろん、名前は自分の名前に置き換えて入力してください。日付は今日の日付に置き換えましょう。

修正後の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);
	}

}

プログラムを実行してみましょう。ツールバーにある「…を実行」ボタン(緑色の円の中に▷が見えているボタン)の右にある▼をクリックすると「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つのフォルダにまとめるというのが基本的な方針です。ここで作ったMyFirstProgramフォルダをエクスプローラで見てみます。ワークスペースに対応するC:¥JBuilder2007¥Workspaceフォルダ(状況によってはこのフォルダは異なるパスにあります)にあるMyFirstProgramフォルダがその「プロジェクトフォルダ」に相当するものです。

ワークスペースの階層

プロジェクトフォルダの中を見てみましょう。.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は自動的に保存を行なうので、ソースプログラムを書き換えて保存する作業は、ほとんどする必要はないと言って良いでしょう。プロジェクトの内容に変更が発生したときも保存は必要ですが、JBuilderを終了する時に保存するかどうかをたずねるので、そのときに保存を指定しておけばかまいません。本来はファイルへの保存に細心の注意が必要なのですが、こうした面倒なことはJBuilder側で自動的にやってくれると思っておいてもおおむね問題はないでしょう。

この章のまとめ

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

練習問題

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

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

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