Javaでクラスを分ける理由とは?mainメソッドと役割分担を初心者向けに解説

本記事は、Schooの「Java入門 初級【2026年版】」第1回「Javaプログラムの書き方と開発環境構築」を学んだあとに、さらに理解を深めたい方向けのステップアップ学習記事です。
ただし、Schooを受講していない方でも、Javaの基本を学び始めたばかりであれば読み進められる内容にしています。
Schoo コースページ:Java入門 初級【2026年版】
「mainに全部書けばいいのでは?」と感じた人へ
Javaを学び始めたばかりの段階では、mainメソッドの中に処理を全部書いた方が分かりやすく見えます。実際、短いプログラムならそれでも動きます。
ただし、表示する内容が増えたり、入力や計算が増えたりすると、mainメソッドだけでは読みづらくなります。そこで出てくるのが「クラスを分ける」という考え方です。
この記事では、「なぜクラスを分けるのか」を、mainメソッドとHelloPrinterの例で確認します。
まずはmainに直接書く形
最初は、1つのクラスだけで表示する形を見てみます。Javaプログラムの入口であるmainメソッドに、表示処理を直接書いています。
ファイル名:FirstProgram.java
package lesson01;
public class FirstProgram {
public static void main(String[] args) {
System.out.println("はじめてのJava!");
}
}
実行結果
はじめてのJava!
この形はシンプルです。第1回の最初の確認としては、この書き方で問題ありません。
では、表示が増えたらどうなるか
表示する行が増えると、mainメソッドの中が少しずつ長くなります。
package lesson01;
public class FirstProgram {
public static void main(String[] args) {
System.out.println("はじめてのJava!");
System.out.println("Javaのプログラムを動かしています");
System.out.println("mainメソッドの中に表示処理を書いています");
}
}
実行結果
はじめてのJava! Javaのプログラムを動かしています mainメソッドの中に表示処理を書いています
まだ短いので問題なく読めます。しかし、今後ここに入力、条件分岐、繰り返し、計算、エラー対応などが増えると、mainメソッドの役割が多くなりすぎます。
クラスを分けるとは「仕事を分ける」こと
クラスを分ける目的は、難しい書き方をすることではありません。プログラムの中の仕事を分けて、読みやすくすることです。
FirstProgram2:プログラムの入口として、最初に何を動かすかを決めるHelloPrinter:画面に表示する処理を担当する
最初は「入口の係」と「表示の係」に分ける、と考えると理解しやすいです。
表示担当のクラスを作る
次のコードでは、mainメソッドからHelloPrinter.print();を呼び出しています。表示処理そのものはHelloPrinter側に移しました。
ファイル名:FirstProgram2.java
package lesson01;
public class FirstProgram2 {
public static void main(String[] args) {
HelloPrinter.print();
}
}
ファイル名:HelloPrinter.java
package lesson01;
public class HelloPrinter {
public static void print() {
System.out.println("はじめてのJava!");
System.out.println("mainとprintを分離");
}
}
実行結果
はじめてのJava! mainとprintを分離
どの順番で動いているのか
FirstProgram2を実行する- Javaが
mainメソッドを見つける HelloPrinter.print();が実行されるHelloPrinterクラスのprintメソッドに処理が移るprintメソッドの中の表示処理が実行される
ポイントは、mainメソッドが表示処理を自分で全部持たず、表示担当のHelloPrinterに任せていることです。
分けると何がうれしいのか
クラスを分けると、変更したい場所を探しやすくなります。表示内容を変えたいなら、HelloPrinterを見ればよいからです。
package lesson01;
public class HelloPrinter {
public static void print() {
System.out.println("はじめてのJava!");
System.out.println("mainとprintを分離");
System.out.println("表示処理はHelloPrinterにまとめています");
}
}
実行結果
はじめてのJava! mainとprintを分離 表示処理はHelloPrinterにまとめています
この変更では、FirstProgram2を変更していません。表示担当であるHelloPrinterだけを変更しています。
よくあるつまずき1:クラス名を間違える
呼び出すクラス名を少しでも間違えると、Javaはそのクラスを見つけられません。
package lesson01;
public class FirstProgram2 {
public static void main(String[] args) {
HelloPrint.print();
}
}
エラーメッセージ例
HelloPrint cannot be resolved
HelloPrinterと書くべきところを、HelloPrintと書いています。Javaは大文字小文字も含めて名前を区別します。
よくあるつまずき2:メソッド名を間違える
HelloPrinter.Print();
エラーメッセージ例
The method Print() is undefined for the type HelloPrinter
printとPrintは別の名前です。定義したメソッド名と、呼び出しているメソッド名が一致しているかを確認します。
よくあるつまずき3:かっこを忘れる
HelloPrinter.print;
エラーメッセージ例
Syntax error, insert "AssignmentOperator Expression" to complete Assignment
メソッドを呼び出すときは、引数がなくても()を書きます。正しくは次の形です。
HelloPrinter.print();
この段階で覚えておきたいこと
mainメソッドはプログラムの入口- 短いプログラムなら
mainに直接書いても動く - 処理が増えると、役割ごとに分けた方が読みやすい
- クラスを分けるとは、プログラムの仕事を分けること
- クラス名・メソッド名・かっこ・セミコロンは正確に書く
確認問題
FirstProgramを作成し、mainメソッドに直接表示処理を書いて実行してください。FirstProgram2とHelloPrinterを作成し、HelloPrinter.print();で表示処理を呼び出してください。HelloPrinterの表示文を1行追加し、FirstProgram2を変更せずに実行結果が変わることを確認してください。- わざと
HelloPrinter.Print();と書いて、エラーを確認してから修正してください。
演習後の確認:こちらのページを使って、自分で書いた内容を見直せます。先に手を動かしてから確認することをおすすめします。
あわせて読みたい関連記事
まとめ
クラスを分ける理由は、難しい書き方をするためではありません。プログラムの仕事を分けて、読みやすく、直しやすくするためです。
第1回の段階では、mainメソッドは入口、HelloPrinterは表示担当という理解で十分です。この感覚が、後のメソッド分割やクラス設計の理解につながります。