Java超|クラス名とファイル名の関係

クラスは、Javaコードを収める最初の大きな箱。名前の付け方まで意識すると、プログラム全体の形がぐっと見えやすくなる。

Javaのコードを読み始めたとき、最初に目が向きやすいのは System.out.println のような画面表示の命令かもしれません。

けれども、Javaのプログラム全体をよく見ると、それらの命令は何もない場所にそのまま並んでいるわけではありません。Javaでは、命令や処理を クラス という大きなまとまりの中に書きます。

つまり、Javaのコードは、クラスを土台として組み立てられています。このクラスの形が分かると、mainメソッドや文がどこに入っているのかが見えやすくなり、Javaコード全体の構造をつかみやすくなります。

また、クラスには名前を付けます。今回のサンプルでは Sample1 という名前が付けられています。クラス名は自由に決められますが、Javaでは先頭を大文字にすることが一般的で、ファイル名との対応も大切です。この記事では、Sample1.java(変更後)を使いながら、クラス名とファイル名の関係をドラゴンボール風のたとえで整理していきます。

ドラゴンボール風にたとえるなら、クラスは 技の型を収める巻物の表紙と本体 のようなものです。

Javaの要素ドラゴンボール風のたとえ
classこれから技の巻物を作る合図
Sample1巻物につけた名前
クラスの { }巻物全体を囲む大きな枠
mainメソッド技を実際に始める場所
技の中の1つ1つの動き
ファイル名巻物の表紙に書かれた名前

Javaでは、まずクラスという大きな枠を作り、その中にmainメソッドや処理を書いていきます。

この形を理解することが、Javaコードを読むための大切な第一歩になります。

まずはSample1.java全体を見てみよう

クラスの基本を理解するために、まずは今回使う変更後の Sample1.java を確認します。

ファイル名:Sample1.java(変更後)

// Java修行の開始メッセージを表示するプログラム
class Sample1
{
    public static void main(String[] args)
    {
        System.out.println("Java修行を始めます。");
        System.out.println("一歩ずつコードの型を覚えます。");
    }
}

このコードでは、次の部分がクラスです。

class Sample1
{
    public static void main(String[] args)
    {
        System.out.println("Java修行を始めます。");
        System.out.println("一歩ずつコードの型を覚えます。");
    }
}

class Sample1 から始まり、最後の } までの大きなまとまりがクラスです。

この中に、mainメソッドがあります。

さらにそのmainメソッドの中に、2つの System.out.println の文があります。

構造を整理すると、次のようになります。

外側から見た構造内容
class Sample1Javaプログラム全体を包むクラス
public static void main(String[] args)プログラムの開始地点
System.out.println(...)実際に画面へ表示する文

このように、Javaコードは 外側にクラス、その中にmainメソッド、その中に文 という形になっています。

ドラゴンボール風に言えば、Sample1.java は Sample1という巻物 です。

その巻物の中に、修行開始の合図であるmainメソッドがあり、その中に実際の動きである表示文が入っています。

クラスとは何か

Javaでは、class という言葉が付いた大きなブロックを クラス と呼びます。

Sample1.javaでは、次の部分です。

class Sample1
{
    ...
}

クラスは、Javaのコードを入れておくための大きな箱のようなものです。

mainメソッドも、その中に書かれている System.out.println の文も、すべてこのクラスの中に入っています。

見方内容
クラスJavaコードをまとめる大きな枠
classクラスを作るためのキーワード
Sample1クラスの名前
{ }クラスの範囲を表す

学習の最初の段階では、クラスを Javaの処理を入れる大きな入れ物 と考えると分かりやすいです。

今後、学習が進むと、クラスにはオブジェクト指向のもっと深い意味があることを学びます。

ただし、今の段階では、まず Javaのコードはクラスの中に書く という基本を押さえることが大切です。

ドラゴンボール風にたとえるなら、クラスは技の型をまとめる巻物です。

巻物の外側に名前があり、その中に技の開始地点や細かい動きが書かれているようなイメージです。

図:クラスとmainメソッドの関係

この図が示していること

この図は、Javaコードがクラスという大きな箱の中にまとまっていることを表しています。

System.out.println のような文だけが単独で置かれているのではなく、外側に class Sample1 という大きなまとまりがあります。

また、mainメソッドもクラスの中にあり、実際に実行される文はmainメソッドの中に書くことが分かります。

Javaコードを読むときは、まず外側のクラスを見て、その中に何が入っているのかを確認すると理解しやすくなります。

classの次に書かれる名前がクラス名

クラスには名前があります。

その名前を クラス名 といいます。

Sample1.javaでは、次の部分に注目します。

class Sample1

ここでは、class の次に Sample1 と書かれています。

この Sample1 がクラス名です。

記述意味
classクラスを定義することを表すキーワード
Sample1このクラスの名前
{ }クラスの範囲を表すブロック

つまり、class Sample1 は、Sample1という名前のクラスを作ります という意味になります。

Javaコードを読むときは、まず class の行を見て、クラス名が何かを確認すると全体をつかみやすくなります。

ドラゴンボール風に言えば、class は「これから巻物を作る」という合図です。

Sample1 は、その巻物につけられた名前です。

巻物に名前があるから、あとで「どの型の巻物なのか」を区別できます。

Javaでも、クラス名があることで、そのプログラムのまとまりを識別できます。

Sample1.javaには1つのクラスがある

Sample1.javaをよく見ると、classで始まる大きなブロックは1つだけです。

class Sample1
{
    public static void main(String[] args)
    {
        System.out.println("Java修行を始めます。");
        System.out.println("一歩ずつコードの型を覚えます。");
    }
}

つまり、このファイルには Sample1 という名前のクラスが1つあります。

Javaのプログラムには、基本的にクラスが必要です。

少なくとも、Javaのコードはクラスなしでいきなり文だけを書く形にはなりません。

ファイル含まれているクラス
Sample1.javaSample1

今回のサンプルは短いですが、Javaの基本的な形をしっかり持っています。

クラス
  └ mainメソッド
       └ 文
       └ 文

このように、Javaコードは階層を持っています。

外側にクラスがあり、その中にmainメソッドがあり、その中に実行される文があります。

Javaのコードはクラスで囲まれている

Sample1.java全体を見ると、mainメソッドや表示の文は、クラスの外に直接置かれているわけではありません。

すべて class Sample1 のブロックの中にあります。

class Sample1
{
    public static void main(String[] args)
    {
        System.out.println("Java修行を始めます。");
        System.out.println("一歩ずつコードの型を覚えます。");
    }
}

この形を見ると、いちばん外側にクラスがあり、その中にmainメソッドがあり、さらにその中に文があることが分かります。

階層Sample1.javaでの内容
いちばん外側class Sample1
その内側mainメソッド
さらに内側System.out.println の文

Javaコードは、箱の中にさらに箱があるような入れ子構造になっています。

ドラゴンボール風にたとえるなら、外側のクラスは修行道場全体です。

その中に、実際に技を始めるmainメソッドの修行場があります。

そして、その修行場の中に、1つ1つの技の動きである文が並んでいます。

この構造を意識できるようになると、Javaコードを読んだときに、どこが大きなまとまりで、どこが中身なのかが見えやすくなります。

クラスの中にmainメソッドがある

Sample1.javaでは、クラスの中にmainメソッドが書かれています。

class Sample1
{
    public static void main(String[] args)
    {
        System.out.println("Java修行を始めます。");
        System.out.println("一歩ずつコードの型を覚えます。");
    }
}

ここで大切なのは、mainメソッドは単独で置かれているのではなく、クラスの中にあるということです。

Javaでは、処理を書く場所にも構造があります。

mainメソッドはプログラムの開始地点ですが、そのmainメソッド自体も、クラスという大きな枠の中に入っています。

まとまりSample1.javaでの役割
クラスプログラム全体を包む大きな枠
mainメソッド処理の開始地点
実際に実行される小さな命令

この階層を理解しておくと、コード全体を読みやすくなります。

ドラゴンボール風に言えば、mainメソッドは技が始まる場所です。

ただし、その技の開始地点は、Sample1という巻物の中に書かれています。

巻物の外にいきなり技が置かれているわけではありません。

クラス名は自由につけられるが分かりやすさが大切

クラス名は、基本的には自分で決められます。

今回のサンプルでは、クラス名は Sample1 です。

class Sample1

学習用のサンプルでは、Sample1、Sample2 のような名前がよく使われます。

これは、順番に例を増やしていくときに分かりやすいからです。

ただし、実際のプログラムでは、そのクラスが何をするものなのかが伝わる名前にすることが大切です。

クラス名の例印象
Sample1学習用のサンプルとして分かりやすい
MessagePrinterメッセージを表示する役割が伝わりやすい
A何をするクラスか分かりにくい
Test一時的な確認用にはよいが、本格的な名前としては曖昧なことがある

名前は自由に付けられます。

しかし、自由だからといって、意味の分かりにくい名前にすると、あとでコードを読むときに困ります。

ドラゴンボール風にたとえるなら、技の巻物に「A」や「何か」とだけ書いてあると、どんな技なのか分かりません。

「気弾修行の型」「メッセージ表示の型」のように役割が分かる名前があると、読み手は中身を想像しやすくなります。

Javaのクラス名も同じです。

学習用では Sample1 のような名前で十分ですが、実際の開発では役割が伝わる名前を意識していきましょう。

図:クラス名は巻物の名前

この図が示していること

この図では、class の次に書く Sample1 がクラス名であり、Sample1.java というファイルの中に Sample1 というクラスが入っていることを表しています。

クラス名は、Javaコードのまとまりを識別するための名前です。

学習用では Sample1 のような名前で十分ですが、実際の開発では MessagePrinter のように役割が分かる名前を付けると、コードの目的が伝わりやすくなります。

クラス名の先頭は大文字にするのが一般的

Javaでは、クラス名の先頭を大文字にするのが一般的です。

今回の Sample1 も、最初の S が大文字になっています。

class Sample1

これは、Javaの文法として必ず大文字でなければならないという意味ではありません。

しかし、Javaの開発では広く使われている習慣です。

名前の例一般的かどうか理由
Sample1一般的先頭が大文字でクラス名らしい
sample1あまり一般的ではないクラス名と分かりにくくなる
MessagePrinter一般的単語の先頭を大文字にして読みやすい
messagePrinterクラス名としては一般的ではない変数名やメソッド名のように見える

クラス名の先頭を大文字にすると、コードを読んだときに「これはクラス名だな」と判断しやすくなります。

このような書き方の習慣は、コードを読みやすくするためにとても大切です。

複数の単語をつなげるときの書き方

クラス名に複数の単語を使う場合は、それぞれの単語の先頭を大文字にする書き方がよく使われます。

たとえば、メッセージを表示するクラスなら、次のような名前が考えられます。

class MessagePrinter
{
}

Message と Printer の先頭が、それぞれ大文字になっています。

クラス名読みやすさ
MessagePrinterMessage と Printer が分かれて見える
messageprinter単語の区切りが分かりにくい
message_printerJavaのクラス名としては一般的ではない

このように、Javaではクラス名を見やすくするために、単語ごとの先頭を大文字にする習慣があります。

学習の最初は Sample1 で十分です。

ただ、将来もう少し本格的なコードを書くときには、MessagePrinter のように役割が分かる名前を付けることも意識していきましょう。

ドラゴンボール風にたとえるなら、技の名前に複数の言葉を使うとき、区切りが分かりやすいように整える感覚です。

名前が読みやすいと、その技の役割も伝わりやすくなります。

ファイル名とクラス名の対応にも注目しよう

今回のファイル名は Sample1.java です。

そして、クラス名は Sample1 です。

class Sample1

このように、ファイル名とクラス名が対応していることにも注目しましょう。

ファイル名クラス名
Sample1.javaSample1

学習の初期段階では、ファイル名とクラス名をそろえて考える習慣をつけておくと混乱しにくくなります。

たとえば、次のように対応させると分かりやすいです。

ファイル名クラス名
Sample1.javaSample1
Sample2.javaSample2
MessagePrinter.javaMessagePrinter

Javaでは、特に public class を使う場合、ファイル名とクラス名の対応が非常に重要になります。

今の段階では、まず Sample1.java の中には Sample1 というクラスがある という関係をしっかり押さえておきましょう。

ドラゴンボール風に言えば、巻物の表紙に Sample1.java と書かれていて、中に Sample1 という型が収められているようなものです。

表紙と中身の名前がそろっていると、どの巻物なのかすぐに分かります。

開発の場では文法以外の決まりも大切になる

Javaは、個人学習だけでなく、大勢の人と協力して大きなシステムを作る場面でもよく使われます。

そのため、実際の開発では、文法に合っているだけでなく、チームで決めた書き方のルールを守ることも大切になります。

たとえば、次のような決まりが使われることがあります。

項目よく使われる決まり
クラス名先頭を大文字にする
複数単語のクラス名単語ごとの先頭を大文字にする
コメント開発元、作成日、バージョンなどを書くことがある
ファイル名クラス名と対応させる
インデントチームで統一する

Sample1.javaのような短い学習用コードでは、そこまで細かな管理情報は必要ありません。

ただし、実際の仕事では、コメントの書き方や名前の付け方をチーム全体でそろえることがよくあります。

こうした決まりがあると、誰が読んでも分かりやすいコードになり、複数人での開発がスムーズになります。

ドラゴンボール風に言えば、同じ流派の戦士たちが、巻物の書き方や型の名前の付け方をそろえておくようなものです。

書き方が統一されていれば、別の人が読んでもすぐに理解できます。

Sample1.javaから学べる命名ルールの第一歩

Sample1.javaでは、クラス名が Sample1 になっています。

class Sample1

このサンプルから学べる命名ルールの第一歩を整理すると、次のようになります。

ポイントSample1.javaでの例
クラス名を付けるSample1
先頭を大文字にするS が大文字
クラス名は class の次に書くclass Sample1
ファイル名と対応させるSample1.java と Sample1

これらは基本的なことですが、Javaコードを書くうえでの土台になります。

クラス名は、コード全体の入口であり、プログラムのまとまりを表す大切な名前です。

学習の早い段階で、class の次にクラス名を書くこと、クラス名の先頭を大文字にすること、ファイル名と対応させることを意識しておくと、あとで本格的なJavaコードを書くときにも役立ちます。

図:クラス名とファイル名の関係

この図が示していること

この図は、Sample1.java というファイル名と、class Sample1 のクラス名が対応していることを表しています。

Javaでは、ファイル名とクラス名の関係を意識してコードを書くことが大切です。

また、クラス名の先頭を大文字にすること、役割が分かる名前を付けることも、読みやすいJavaコードを書くための大切な習慣です。

ファイル名は巻物の表紙、クラス名は中に収められた型の名前、と考えると分かりやすくなります。

クラス名を付けるときに意識したいこと

クラス名を付けるときは、次のような点を意識すると分かりやすくなります。

意識したいこと理由
役割が分かる名前にする何のためのクラスか伝わりやすい
先頭を大文字にするクラス名として見分けやすい
複数単語は単語ごとに大文字にする読みやすくなる
意味のない短すぎる名前を避けるあとで読みにくくなる
ファイル名との対応を意識する管理しやすくなる

学習用であれば Sample1 のような名前でも問題ありません。

ただし、実際の開発では、役割が分かる名前を付けることが大切です。

たとえば、メッセージを表示するクラスなら MessagePrinter のような名前にすると、何をするクラスなのかが伝わりやすくなります。

名前伝わりやすさ
Sample1学習用サンプルとして分かりやすい
MessagePrinterメッセージ表示の役割が伝わる
DataLoaderデータを読み込む役割が伝わる
UserManagerユーザー管理の役割が伝わる

Javaでは、名前を見ただけで役割がある程度分かることが、読みやすいコードにつながります。

ドラゴンボール風にたとえるなら、技の名前や巻物の名前を見ただけで「どんな技なのか」が想像できる状態です。

名前が分かりやすいほど、あとから読み返すときも、仲間に説明するときも迷いにくくなります。

Sample1.javaを見ながら全体像を整理しよう

最後に、Sample1.javaをもう一度見ながら、クラスの基本と命名ルールを整理します。

ファイル名:Sample1.java

// Java修行の開始メッセージを表示するプログラム
class Sample1
{
    public static void main(String[] args)
    {
        System.out.println("Java修行を始めます。");
        System.out.println("一歩ずつコードの型を覚えます。");
    }
}

このコードから分かることは、次の通りです。

確認ポイント内容
Javaのコードはクラスで囲まれているclass Sample1 のブロックが全体を包んでいる
class の次にクラス名を書くSample1 がクラス名
クラスの中にmainメソッドがある処理の開始地点はクラス内にある
mainメソッドの中に文がある2つのSystem.out.printlnが順番に実行される
クラス名の先頭は大文字が一般的Sample1 の S が大文字
ファイル名とクラス名が対応しているSample1.java と Sample1

Sample1.javaは短いコードですが、Javaのクラスの基本を学ぶための大切な要素をしっかり含んでいます。

コードの中の細かな命令だけを見るのではなく、それらを包んでいるクラスという大きな枠にも目を向けることで、Javaコード全体の見え方が変わります。

ドラゴンボール風に言えば、技の一動作だけを見るのではなく、その技がどの巻物に収められているのかまで見るようなものです。

クラスの形と名前の付け方を理解すると、Javaのプログラム構造がぐっと分かりやすくなります。