最終更新日:

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

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

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

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

(応用情報処理Vの講義では、この通りの手順では作業できません。使用しているJBuilderのバージョンが古いことと、学校でのシステムにある制限があるからです。そのため、JBuilder 7のフォルダの、Samples¥Swingというフォルダを、自分のホームフォルダにマイドキュメント内にあらかじめしておいてください。講義では、一緒に作業をしましょう。)

1スタートメニューの「すべてのプログラム」に「Borland JBuilder 2005 Foundation」という項目があります。そこにある「Borland JBuilder 2005 Foundation」を選択します。(応用情報処理Vの講義では、JBuilder 7 Personalを起動して下さい。)

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

3「ファイル」メニューから「プロジェクトを開く」を選択します。“プロジェクト”とは、あるソフトウエアを作るのに必要なさまざまな素材全体を指す言葉ですが、それらの素材はたくさんのファイルとしてフォルダにまとめられて管理されています。その素材全体を管理するファイルとして“プロジェクトファイル”があり、そのプロジェクトファイルを開くことで、プログラム作成作業に必要なものが呼び出されて、JBuilderは作業可能な状態にセットアップされます。

4プロジェクトを選択するウインドウが表示されました。最初はWelcomeという項目が選択されています。

5最初はWelcomeという項目が選択されていますが、その1つ前にTextEditorという項目があります。左側のリストをスクロールしてその項目を選択します。すると、右側にTextEditor.jpxという項目が表示され選択されています。この状態を確認してOKボタンをクリックします。TextEditor.jpxがプロジェクトファイルであり、.jpxがプロジェクトファイルの拡張子です。(応用情報処理Vの講義では、マイドキュメントにコピーしたSwingフォルダの内容を開きます。)

6プロジェクトが開かれました。左側の「プロジェクト」ペインにプロジェクト名が見えますが、ここではプロジェクトの中のさまざまなものをリストアップします。右側では、プロジェクトの中にあるファイルの内容などを参照したり編集するためのペインになっています。

7「プロジェクト」ペインに「<プロジェクトソース>」という項目があり、階層構造を示すコントロール(アイコンの左の+マークのボックス)が見えます。+マークをクリックすると、下位の項目のcomが出てきます。同様にして、com、borland、samples、texteditorと順々に階層を下るといくつかの項目がリストアップされるようになります。ここにあるTextEditClass.javaをダブルクリックしてみてください。すると、右側に、TextEditClass.javaのファイルの内容が表示されます。これが「プログラム」の一部です。このような命令群を自分が意図するような動作になるように作るのがプログラミング作業です。

プログラムを実行する

いよいよこのプログラムを実行してみます。このプロジェクトでいえば、「実際にテキストエディタとして機能させるようにする」ことを実行といいます。

1ツールバーにある「プロジェクトの実行」ボタンをクリックします。

2 「ビルド状況」というダイアログボックスが出た後、少し待つと、小さなウインドウが表示されます。真っ白な部分が多いウインドウが見えていますが、メニューバーやツールバーも見えています。JBuilderのウインドウには「メッセージペイン」が見えていますが、実行したときにはこのペインが表示されて、状況を報告するということもできるようになっています。また、Windowsのタスクバーをみると、「Text Editor」と書かれたボタンが増えていて、Text Editorが1つのアプリケーションとして稼働していることがわかります。

3Text Editorウインドウにキータイプしてみましょう。日本語も入力できるはずです。非常にシンプルですが、テキストエディタの機能は確かにあります。FileメニューのExitから終了できますが、ウインドウの右上の閉じるボタンをクリックしても終了することができます。

プログラムとコンパイル

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

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

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

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

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

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

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

サンプルプログラムを動かしても、自分でプログラムを作っているという実感は薄いかもしれません。さっそく、自分でプログラムを作成してみましょう。まずは、自分で作るプログラムのプロジェクトを用意します。次のように操作してみましょう。(応用情報処理Vの講義で使うJBuilder 7は、画面がいくらか違いますが、設定する項目は同一なので、読み替えてください。)

1JBuilderのツールバーにある「新規」ボタンをクリックします。

2 「オブジェクトギャラリ」というダイアログボックスが表示されます。左側のリストで「プロジェクト」を選択します。

3プロジェクトに関連するいくつかあるアイコンの中から「プロジェクト」をダブルクリックするか、クリックして選択して、OKボタンをクリックします。

4作成するプロジェクトに関する設定を行うウィザードが出てきます。ここでは「名前」として「FirstJava」とキー入力してください。他の部分は変更しなくても基本的には大丈夫です。「ディレクトリ」として指定されたパスに「FirstJava」というフォルダが作成されてそれがプロジェクトフォルダになります。ディレクトリには、ホームディレクトリ内のjbprojectフォルダが指定されていますが、必要ならそのフォルダについても変更してください。「次へ」ボタンをクリックします。

5さまざまな設定ができますが、ここでは、そのまま「次へ」をクリックしてかまいません。(応用情報処理Vの講義では、出力パス〜作業ディレクトリを、マイドキュメント内(H:¥jbuilder¥*)に確保します。)

6プロジェクト情報を記載するダイアログボックスになります。これらは、プログラムの実行には関係ありませんが、ファイルの中に残るものです。ここはそのままにして、「次へ」ボタンをクリックします。

7新たに作成されたプロジェクトが開きました。初期状態はプロジェクトのペインが見えているだけです。

こうしてプロジェクトのファイルが作成されますが、上記の手順だと、そのフォルダは手順4で記述されているディレクトリに作成されます。以上のような流れでは、起動ディスク(ここではC)のホームフォルダ(ここでは、「C:¥Documents and Settings¥msyk」でmsykはログインユーザ名)にjbprojectというフォルダが作られ、そこにFirstJavaフォルダが作られています。ファイルのありかは確認しておくと良いでしょう。

アプリケーションをプロジェクトに追加する

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

1ツールバーの「新規」ボタンをクリックします。 「オブジェクトギャラリ」が開くので、左側で「一般」が選択されているのを確認し、右側のアイコンの中にある「アプリケーション」をダブルクリックするか、クリックして選択してOKボタンをクリックします。

2 「アプリケーションウィザード」が起動します。最初のダイアログボックスでは、「クラス」として、「DisplayMyName」をキータイプします。その他の設定については、変更しないで「次へ」ボタンをクリックしてください。(ここで「終了」ボタンをクリックして、以下の手順を飛ばしてもかまいません。)

3ウィザードの2番目のダイアログボックスが出てきます。ここでの「クラス」が後で重要な名前になります。とりあえず既定値の「Frame1」のままにし、ここでは何もせずに「次へ」をクリックします。

4ウィザードの3番目のダイアログボックスが表示されます。ここでも設定は変更する必要はありません。「終了」ボタンをクリックします。

5プロジェクトにアプリケーションが追加されやや変化はありますが、一見するとわかりづらいところでしょう。まず、右側の広いペインに、「Frame1」というタブが見えていますが、これがアプリケーションウィザードの2つ目のダイアログボックスで示した「クラス名」と同じものです。このFrame1は、プログラムの固まりを意味する名前として、このプロジェクトの中では使われます。左側の「構造」ペインでも、最上位の項目としてFrame1が見えています。

6Frame1の内容を変更します。最初の方に、importというキーワードで始まっているいくつかの行がありますが、その最後あたりに、図のように「import javax.swing.*;」という行を追加します。

7スクロールしていちばん最後の部分に図のようにテキストを加えます。{ から } までの間にプログラムを追加します。「フレームタイトル」と書かれている行以下に、新たにプログラムを追加することになります。プログラムの入力の方法については、手順の後の本文も参照してください。なお、追加する部分に、名前と日付がありますが、ここはこのページに見えているその通りではなく、自分の名前と今日の日付で入力しましょう。

修正前の状態
/**
  * コンポーネントの初期化。
 *
 * @throws java.lang.Exception
 */
private void jbInit() throws Exception {
	contentPane = (JPanel) getContentPane();
	contentPane.setLayout(borderLayout1);
	setSize(new Dimension(400, 300));
	setTitle("フレーム タイトル");
}
修正後の状態
/**
  * コンポーネントの初期化。
 *
 * @throws java.lang.Exception
 */
private void jbInit() throws Exception {
	contentPane = (JPanel) getContentPane();
	contentPane.setLayout(borderLayout1);
	setSize(new Dimension(400, 300));
	setTitle("フレーム タイトル");

	JLabel text1 = new JLabel("これを作ったのは新居雅行です。");
	JLabel text2 = new JLabel("今日は2005年8月14日です。");
	JPanel jp =new JPanel();
	jp.add(text1);
	jp.add(text2);
	getContentPane().add(jp);
}

8ツールバーの「プロジェクトの実行」ボタンをクリックします。プログラムに間違いがなければ、プログラムが別のウインドウで実行します。ウインドウ上に手順6と7で自分で打ち込んだ文字列が実際に表示されているのを確認してください。プログラムを終了するには「終了」ボタンをクリックします。

プログラムの内容をすべて理解する必要はありません。ここでは、自分の手で打ち込んだ文字列が、実際に新たに起動するアプリケーションの中で見えているということに注目して下さい。つまり、自分でアプリケーションを作ることができるというのがポイントになります。

左側の「プロジェクト」ペインでは、firstjavaの下に項目が加わっていますが、ここで、2つのファイルがあります。ここでは、Frame1.javaだけを修正しました。なぜ2つのファイルがあるのかということなどは追々説明しますが、ウインドウを表示するのがFrame1、アプリケーション全体の管理をするのがここでのDisplayMyName.javaと考えておけばよいでしょう。

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

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

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

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

せっかくですから、4行目は私の名前ではなく、読者の方のご自分の名前を入力してください。5行目の日付も今日の日付にしましょう。ピリオドとカンマ、セミコロンとコロンは間違いやすいので注意してください。()だけでなく{}があるのもおわかりでしょうか。しつこいようですが、いずれも半角です。カッコ類はきちんと対応がとれるようにプログラムを組みます。

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

実際に、プロジェクトの中身を見てみましょう。ソフトウエアを作るにはたくさんのファイルを作ることになることは説明しましたが、そうしたファイルを効率的に管理するには、当然ながらフォルダに入れるというのが基本的な方針になります。JBuilderでも、プロジェクトとそれにかかわるファイルなどを、1つのフォルダにまとめるというのが基本的な方針です。ここで作ったFirstJavaフォルダをエクスプローラで見てみます。ユーザのホーム以下、jbprojectフォルダにあるFirstJavaフォルダがその「プロジェクトフォルダ」に相当するものですが、そのプロジェクトフォルダのいちばん上位の階層に、プロジェクトファイルの「FirstJava.jpx」があります。プロジェクトファイルの拡張子は.jpxです。

プロジェクトフォルダのいちばん上位の階層

そして、プロジェクトフォルダ内のsrcフォルダに、Javaで書かれたプログラムのソースファイルが入れられます。ここでは、firstjavaフォルダがあって、DisplayMyName.javaと、Frame1.javaというプログラムファイルがあります。プログラムファイルは、.javaという拡張子を持ち、内容はテキストです。この2つのファイルは、前の手順で、JBuilderの中で参照できました。中身は実は単なるテキストファイルです。

ソースファイルが入れられているフォルダ

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

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

コンパイルした結果が入っているフォルダ

プロジェクトの切り替えと呼び出し

別の機会にJBuilderを起動した場合、通常は終了時に開いていたプロジェクトが再度開かれますので、そのままプログラム作業の続きに取りかかれます。今後、たくさんのプロジェクトを切り替えて使うという状況になった場合には、ツールバーの2段目にあるプロジェクトファイル名の見えている部分がドロップダウンリストになりますので、過去に開いたことがあるプロジェクトはここにリストとして項目が出てきます。

「プロジェクト」ペインのツールバーにあるドロップダウンリストから選択して別のプロジェクトを開く

また、1段目のツールバーの「開き直す」ボタンをクリックすると、以前に開いたプロジェクトやファイルが一覧されます。区切り線の上側にプロジェクトが並んでいるので、それを選択してもかまいません。

それでも項目が見当たらない場合には、サンプルのプロジェクトを呼び出した時のように、「ファイル」メニューの「プロジェクトを開く」を利用します。

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

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

この章のまとめ

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

練習問題

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

3-2:「FirstJava」を実行したときのウインドウ名は「フレーム タイトル」になっています。今回追加したプログラムのすぐ上に、同様な文字列が見えていますが、プログラムのここの部分を別の文字列(なんでもいい)に書き換えて、ウインドウのタイトルが変わるかどうかを確認してみましょう。

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