Javaプログラムの構成
初めに、基礎としてJavaプログラムの構成・作りについて学んでいきましょう。
一般的な書類にも「タイトル」「日付」「作成者」などを書いたりするように、Javaファイルに書く内容にもパターン/決まりがあります。
Javaファイルでは、下図のように、大きく分けて「パッケージ」「インポート」「クラス」があり、クラスの中には更に「フィールド」「コンストラクタ」「メソッド」といった要素があります。ここでは「*」印のついていないものについて簡単に触れていきます。
「*」印のものについてはまた別のページで紹介しますので、その時に理解していきましょう。

「Javaプロジェクトの作成」で作成したHelloWorld.javaで示すと、以下のようになります。

パッケージ
パッケージはクラスをグループ化するものです。グループが異なれば同名のファイルを作ることもできます。
こういった所属を示すものをプログラミングでは「名前空間」と言います。所属を表すようなものです。
クラスは必ずいずれかのパッケージに所属することになっているので、クラス(Javaファイル)にはパッケージ文が必須です。
(例)HelloWorld.javaは、パッケージcom.cmps.helloworld には1つしか作れない。 →異なるパッケージcom.cmps.helloworld2には作成可能
クラス
クラスとはプログラムを構成する最小単位で、設定や働きを持つ設計図のようなものです。1つのJavaファイルに対し、クラスを1つ書くのが基本のスタイルです。
「public class クラス名」と記述した後の「 { 」から「 } 」までがクラスの範囲となります。
Javaでは、クラスをいくつも連携させることでアプリケーションを組み上げていきます。
計算や文字列の画面表示、また、それらに必要な数値の記述など、プログラムで行う処理に関するものは全てクラスの中に記述します。
メソッド
メソッドはプログラムに行わせる処理の手順をひとまとめにしたものです。
部品としてまとめているイメージで、メソッドからメソッドを呼び出すこともできます。Javaの処理はメソッドの中に記述していきます。
メソッドもクラスと同様に、「 { 」から「 } 」までがメソッドの範囲となります。
mainメソッド
「Javaプロジェクトの作成」の単元でクラスを作成する際、「public static void main(String[] args)」にチェックを付けてJavaのクラスを作成したかと思います。

この「public static void main(String[] args)」はmainメソッドと呼ばれており、
プログラムを実行する際に最初に呼び出されるもので、Javaのプログラムは原則として必ずmainメソッドの一文から処理が開始します。
Javaの動きの特徴として、「最初の処理を明示しなければならない。」という特徴があります。
この「main(String[] args)」が無いと、Java側では、「どの処理から始めたらいいかわからない」ということになってしまうため、はっきりとこのJavaプログラムはここから起動しますよ、を指定するために必要なのが「public static void main(String[] args)」です。
public class Main {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
こちらのソースですが、Mainクラスの中に「mainメソッド」、その中に「printlnメソッド」がいるという状態です。
プログラムの実行時に行いたい処理は、mainメソッドの範囲である「 { 」から「 } 」までの間に記述します。
プログラムが実行されると、JVM(仮想マシン)によってmainメソッドが呼び出され、mainメソッド内に記述されている処理が実行されます。本プログラムではprintlnメソッドが呼び出され、「Hello World!」という文字列が出力されます。
メソッドについては、後ほど別の単元でまた詳しく説明します。
コーディングのルール
プログラミングをしていると、自分で書いた内容でも、後で見返したときに、何の処理をしているかがわからなくなることがあります。
また、複数のプログラマがチームになって 1 つのプログラムを作ったり、以前に作成されたプログラムを修正することがあります。このとき、他の人が書いたプログラムを読んで内容を正しく理解する必要があります。こういう場合に重要なのは、あらかじめ見やすいプログラムを書いておくことです。
ブロック文とインデント
文はプログラムの最小単位です。1つの処理を記述したもので、文の最後には「;(セミコロン)」を必ず記述します。ないとコンパイルエラーとなります。
1つの命令文がセミコロンで終わった後、改行を入れずに続けて次の命令文を記述することも可能ですが、通常はソースコードの見た目を分かりやすくするために「;」の後ろで改行します。

ブロックとは、文または複数の文を「{}」で囲んで1つにまとめたもので、単一の文が書ける場所ならどこでもブロックを書くことができます。
上記の画像の場合、「public class Main」の後ろに「{」がありますが、この括弧に囲まれた範囲をブロックと呼びます。
インデント(字下げ)とは、左側の余白のことです。Tabキーを使い入力します。
上記の画像の赤線部分を見てもらうと、階層が深くなるごとに右にずれていることが分かると思います。
インデントは、ソースコードの見た目を分かりやすくするためのもので、プログラムの動作には影響を与えません。
またインデントは、メソッドやステートメントといったブロックの深さに応じて、1単位分のインデントを入れます。このようにすることで、どこまでがクラスで、どこまでがメソッドなのかがパッと見でわかりやすくなります。
なおこのように、ブロックの中にブロックを記述し、ブロックが入れ子構造になることを「ネストする」という言い方をします。
プログラミングの世界、特に複数のプログラマがチームになってプログラムを作るような開発では、このようなインデントや改行のルールをきちんと守ることがとても重要なことです。
コメント
コメントとは、プログラムの中に書き残すことのできる、メモ書きのようなものです。
コメントは、プログラムの動作には全く影響を与えませんが、コメントを残すことによって何の処理をしているか、なぜその処理が必要か、ということを理解するのが簡単になります。
javaにおけるコメント
複数行にわたるコメント
/*
* 複数行のコメント
*/
「/*」と「*/」で囲まれた範囲がコメントとなります。この場合、複数行にまたがってコメントを書くことができます。
1行のみのコメント
// 1行のみのコメント
文頭に「//」につけることで、「//」から行末までがコメントとして扱われます。
Ctrl+「/」で記述できます。
Javadoc
/**
* @author user-sample
* @version 0.0.1
*/
Javadocはプログラムの説明書のようなドキュメントを作成するためのもので、「/**」で始まり、「*/」で終わります。「@」をつけて説明を記載していきます。
上記の例でいうと「@author」はプログラムの作成者、「@version」は開発物のバージョンを記載する際に用います。
他にも、「@param」や「@since」、「@see」「@return」といったJavadocがあります。
Javadocについては以下の参照サイトをご確認ください。
参照サイト:Javadocの記述
コンパイルエラー
Javaはコンパイラ言語であると学びました。Eclipseでは、コンパイルエラー(Javaプログラムの文法としての問題、コンパイルの土俵に立てていない状態)を赤い波線を引いて示してくれる機能があります。これは特に設定したり手動で指示する必要はなく、コードを記述中に自動で表示されます。
注意点として、コンパイルエラーが出ている状態ではファイルを保存しないようにしましょう。
というのも、Eclipseではファイルを保存すると同時にコンパイル(ビルド)を行ってくれますが、コンパイルエラーが出ている状態でファイルを保存すると、そのコンパイルに失敗したまま処理を完了できず、Eclipseがエラーを検出し続けて処理が重くなってしまい、過度な場合には処理落ちしてしまう可能性があるからです。
ですから、コンパイルエラーが出ているときはそのエラーを解消してから、またはエラーの原因行や関係する行をコメントアウトしてエラーが表示されなくなってから、ファイルを保存するようにしましょう。
具体的な例を見ていきましょう。
全角文字の使用
下図ではブロック「{」に全角文字を使ったことでエラーになってしまっています。
ちなみに右画像のように、左端のアイコンにマウスカーソルを合わせると、詳細を確認できます。


ことコンパイルエラーに限らない話ですが、プログラムの記述では全角文字は基本的に使用しません。
全角文字を使用できるのは、「コメント」の中か、””(ダブルクォーテーション)で囲まれた文字列(文字列については今後学習します)の中のみです。
また、基本的にITに関連する業務全般において全角文字と半角文字は区別するのが通例ですので、この点も覚えておきましょう。
セミコロンのつけ忘れ
こちらもよくある例です。Javaの命令文では、文末には必ずセミコロンを付ける必要があります。

閉じかっこの書き忘れ
ブロック{}も、丸かっこ()も、閉じかっこの書き忘れはコンパイルエラーになります。開始と終了でペアになっていることが必須です。
ダブルクォーテーション””なども同様です。

ファイル名とクラス名の不一致
ファイル名とクラス名が一致しないこともエラーになります。

その他、スペルミス
次の単元以降で学習しますが、宣言/定義していない「変数名」や「メソッド名」を用いることなどもエラーになります。
今後の学習の中でまた改めて細かいルールが出てきますので、その都度覚えていきましょう。
基本の出力処理
コンソール出力
これまで何度も登場してきた System.out.println()ですが、こちらは「()内の文字をコンソール上に出力する。」というプログラムになります。
出力する内容は「””」で囲うようにして記載することで様々な文字を出力できます。
また、printlnメソッドの他にprintメソッドというものもあります。
これらには
- printメソッドは「改行せずに出力する」
- printlnメソッドは「改行して出力する」
といった違いがあります。実際に見てみましょう。
以下のソースコードを、「Javaプロジェクトの作成」で作成した「HelloWorld.java」のmainメソッドに記入してみましょう。
System.out.println("print()メソッド");
System.out.print("あいうえお");
System.out.print("かきくけこ");
System.out.print("さしすせそ");
System.out.println("\n"); // 改行
System.out.println("println()メソッド");
System.out.println("あいうえお");
System.out.println("かきくけこ");
System.out.println("さしすせそ");
System.out.println("\n");
出力結果としては以下のようになるかと思われます。

printメソッドで出力した文字列は繋がって出力され、printlnメソッドでは改行されて出力されていることが分かると思います。
また、この処理を見たいただくと分かる通り、上から下に向かって実行されています。
このように、「プログラムは上に書いた処理から順に実行される」という基本ルールがあります。覚えておきましょう!
これから学習に入っていくにあたって
以下のEclipseの操作方法を知っているかいないかで大きく作業性が変わりますので、必ず確認しましょう!
Eclipseのショートカットキー
Gitへのプッシュを忘れずに実施しましょう!
「Git」の単元の最後「今後の学習でのGit管理について」でも案内しましたが、1単元終わるごとにGitへプッシュしてください。
(今回のようにページの一番下まで実施し終わったら、ページ名の「基礎」をコミットメッセージに入れてプッシュします。練習問題がある場合は、練習問題が終わってからプッシュします。)
プッシュ手順は、Git単元の「Git Bashによる操作(CUI)とEclipseによる操作(GUI)」を参照のこと
