まずは全体を眺める
プログラミングの世界には、新しい言語を学ぶとき最初に「Hello, World!」と画面に表示するプログラムを書く、という伝統があります。Javaでは次のようになります。
// 画面に Hello と表示するだけのプログラム
public class Hello {
public static void main(String[] args) {
System.out.println("Hello");
}
}
読み方のコツ:最初は全部を理解しようとせず、「{ と } で囲まれた箱が入れ子になっている」ことと、「真ん中あたりに命令が1行ある」ことだけ見てください。
この5行を、外側から内側に向かって分解していきます。
外側の箱:クラス
public class Hello {
... ここに中身が入る ...
}
Javaのプログラムは、必ずクラス(class)という箱の中に書きます。クラスは「プログラムの部品を1つにまとめる単位」で、ここでは Hello という名前の箱を作っています。
public:この箱は「どこからでも使ってよい」という公開範囲の指定(第6章で詳しく)class:「ここからクラスの定義が始まります」という合図Hello:クラスの名前。エンジニアが自由に付ける。慣例として先頭は大文字{〜}:箱の始まりと終わり。この範囲をブロックと呼ぶ
Javaでは、1つのファイルに1つの公開クラスを書き、ファイル名とクラス名を一致させるルールがあります。つまりこのプログラムは Hello.java というファイルに保存されます。業務システムのコードを見ると、Invoice.java(請求書)、JournalEntry.java(仕訳)のように、業務上の「もの」の名前がクラス名になっていることがよくあります。
内側の箱:メソッド
public static void main(String[] args) {
... ここに処理が入る ...
}
クラスの中には、メソッド(method)という「処理のかたまり」を書きます。メソッドは「ある仕事をするための手順書」で、名前を付けて呼び出せるようにしたものです。ここでは main という名前のメソッドを定義しています。
この main メソッドは特別で、JVMがプログラムを起動するとき、最初に探して実行する場所と決まっています。本の「はじめに」のようなもので、Javaのプログラムを読むときは、まず main を探せば入口が見つかります。
publicどこからでも呼べる(JVMから呼ばれるので公開が必要)staticクラスの「設計図」から直接呼べる、という指定。第6章で意味がはっきりします。今は「mainにはこれを付けるお約束」で十分voidこの処理は「結果の値を返さない」という意味。計算して答えを返すメソッドなら、ここがint(整数)などになるmainメソッドの名前。入口の目印(String[] args)外から受け取る情報の入れ物(引数)。「文字列の一覧をargsという名前で受け取る」の意味。使わなくても書く決まり
5つも修飾語が並んでいて面食らいますが、public static void main(String[] args) は決まり文句です。Javaエンジニアもこの一行は半ば呪文として覚えています。意味は後からついてきます。
いちばん内側:文(命令)
System.out.println("Hello");
ようやく「実際に何かをする」行にたどり着きました。この1行を文(statement)と呼び、Javaでは文の終わりに必ずセミコロン ; を付けます。日本語の「。」に相当します。
System標準ライブラリに入っている「システム全般」を扱うクラス.outその中の「標準出力」(ふつうは画面)を表すもの。.は「〜の中の」と読む.println(...)「カッコの中身を表示して改行する」というメソッド。print line の略"Hello"表示したい文字列。文字列は必ずダブルクォート"で囲む;文の終わり
つまりこの行は「システムの、標準出力の、1行表示メソッドに、"Hello" という文字列を渡して実行せよ」と読めます。英語の語順と同じで、左から右へ「大きなもの → その中の小さなもの → 動作」と絞り込んでいきます。
全体をもう一度:4つの構成要素
class Hello { ... }部品をまとめる箱。ファイル1つに対応
main(...) { ... }処理のかたまり。名前を付けて呼び出せる
System.out.println("Hello");実際の命令。末尾に ;{ })が入れ子になっていて、外側がクラス、中がメソッド、いちばん内側に文が並ぶ。業務システムのコードが何千行あっても、構造はこの入れ子の繰り返しです。コメント:人間のためのメモ
// 1行だけのコメント。この行はプログラムの動きに影響しない
/*
複数行にわたるコメント。
処理の意図や、注意点を書く
*/
// から行末まで、または /* と */ の間に書かれた文章はコメントと呼ばれ、コンパイラは完全に無視します。人間が読むためのメモです。
非エンジニアがコードを読むとき、コメントは最大の味方です。良いコードには「なぜこうしているか」がコメントで書かれています。逆に、コメントがほとんどないコードは、エンジニア同士でも読み解きに時間がかかります。レビューや引き継ぎの場面で「コメントが少なくて困る」という話が出るのはこのためです。
ちょっとだけ大きくしてみる
Hello Worldの形が分かったところで、もう少し業務っぽい例を読んでみましょう。文が3つに増えただけで、構造は同じです。
public class InvoiceReport {
public static void main(String[] args) {
System.out.println("=== 請求書一覧 ===");
System.out.println("2026年9月分:3件");
System.out.println("合計金額:330,000円");
}
}
読んでみる:InvoiceReport(請求書レポート)というクラスの main が、3行の文字列を順番に表示している。上から下へ、書かれた順に実行されます。
ただし、このプログラムは「3件」「330,000円」という数字を人が直接書き込んでいます。本物のシステムでは、これらの数字はデータベースから取ってきて計算します。そのためには「値を一時的に入れておく箱」と「計算のルール」が必要です。それが次の第4章「変数と型」のテーマです。
打合せで役立つ視点
エンジニアが画面にコードを映して「このクラスの、このメソッドで処理しています」と言ったら、「箱(クラス)の中の、手順書(メソッド)の話をしている」と分かれば十分です。「このメソッドは何を受け取って、何を返すのですか?」と聞くと、処理の入口と出口が明確になり、会話がかみ合いやすくなります。
この章のまとめ
- Javaのプログラムは「クラス(箱)> メソッド(手順書)> 文(命令)」の入れ子構造。
{ }がブロックの範囲 public static void main(String[] args)はプログラムの入口を示す決まり文句。コードを読むときはまず main を探す- 文は
;で終わる。System.out.println("...")は「画面に1行表示」 - ファイル名とクラス名は一致させる。
//や/* */はコメントで、人間のためのメモ
確認クイズ
この章の内容を3問で確かめましょう。選ぶとすぐに解説が表示されます。
Q1. Javaのプログラムを読み始めるとき、最初に探すとよい「入口」はどれですか?
main メソッドを探して実行します。本でいう「はじめに」にあたる入口です。Q2. System.out.println("Hello"); の末尾の ;(セミコロン)は何を表していますか?
; を付けます。日本語の「。」に相当します。クラスやメソッドの終わりは } です。Q3. // で始まる行についての説明として正しいものはどれですか?