本ページはプロモーションが含まれています

Java入門

Java命名規則で迷わない!基本ルールを徹底解説

トム

・SaaS勤務/javaのバックエンドエンジニア
/java歴10年以上 ・首都圏在住30代
・資格:基本情報技術者/応用情報技術者/Java Silver/Python3エンジニア認定基礎

「Javaの勉強を始めたけど、クラスや変数の名前ってどうやって付ければいいの?」

「自己流で名前を付けているけど、これで本当に合っているのか不安…」

現役でJavaエンジニアとして働いている私が、Javaを学び始めた頃に同じような悩みを抱えていました。メソッドの書き方はわかっても、その「名前」をどう付けるかで手が止まってしまうのです。

当時は、レビューで先輩から「この変数名だと、何が入っているかわからないよ」と何度も指摘を受けました。また、他の方が書いたコードで、命名がバラバラなために処理を追うのに苦労した経験もあります。

この記事は、過去の私と同じように「Javaの命名規則がよくわからない」と悩んでいる方に向けて書いています。

この記事を読めば、Javaにおける基本的な命名規則がわかり、自信を持ってコードを書けるようになります。読みやすく、保守性の高いコードを書くための第一歩を、ここから踏み出しましょう。

Javaの命名規則とは?

命名規則は、コードを誰が読んでも分かりやすく、意味が伝わりやすくするための「書き方のルール」です。

たとえば、道路に「止まれ」の標識や信号機がなければ、あちこちで混乱や事故が起きてしまいますよね。

プログラミングにおける命名規則も、それと同じ役割を果たします。ルールがあることで、複数人で開発する際にもコードに一貫性が生まれ、スムーズなコミュニケーションが可能になるのです。これは、Javaの命名規則に限った話ではありません。

命名規則を守るメリット

命名規則を守ることには、大きく分けて3つのメリットがあります。

メリット

  1. コードの可読性が上がる適切な名前が付いていると、そのクラスが何なのか、そのメソッドが何をするのかが一目でわかります。よって、コードを読むスピードが格段に上がり、プログラム全体の構造を理解しやすくなります。
  2. 保守性が向上するプログラムは一度作ったら終わりではなく、機能の追加や修正が繰り返し行われます。命名規則に従ったわかりやすいコードは、後から見返した自分や他の開発者が修正を加える際に、バグを埋め込まずに安全に変更しやすくなるのです。
  3. チーム開発が円滑に進むチーム全員が同じルールに従ってコードを書くことで、お互いのコードをレビューしやすくなります。認識のズレも少なくなり、結果として開発全体の生産性が向上します。

命名規則を守らないデメリット

逆に、Javaの命名規則を守らないとどうなるでしょうか。

たとえば、以下のようなコードがあったとします。

public class a {
    public void b(int c, int d) {
        int e = c + d;
        System.out.println(e);
    }
}

このコードが何をしているかは、処理を一行ずつ追えばわかります。

しかし、abcといった名前からは、その役割をまったく推測できません。これが数千、数万行の大規模なプログラムの一部だとしたら、解読するだけで膨大な時間がかかってしまうでしょう。

このように、命名規則を無視するとコードの解読に時間がかかり、バグの温床になりやすいというデメリットがあります。

クラス名・インターフェース名の命名規則

ここからは、具体的なJavaの命名規則を見ていきましょう。まずは、プログラムの設計図ともいえるクラスとインターフェースの命名規則です。

クラス名の基本ルール(パスカルケース)

クラス名は、各単語の先頭の文字を大文字にする「パスカルケース」(アッパーキャメルケースとも呼ばれます)で記述します。

また、クラスはその役割を表す「名詞」で命名するのが基本です。

// 良い例
public class Car {
    // ...
}

public class CustomerService {
    // ...
}

// 悪い例
public class car { // 先頭が小文字
    // ...
}

public class customerservice { // すべて小文字
    // ...
}

public class Run { // 動詞になっている
    // ...
}

CarCustomerServiceのように名前を見るだけで、それが「車」に関するクラスであることや、「顧客サービス」に関するクラスであることが直感的に理解できます。

インターフェース名の付け方と注意点

インターフェース名も、クラス名と同様にパスカルケースで記述します。

インターフェースは、クラスが持つべきメソッドの仕様を決めるものです。そのため、「何かができる」ことを示す形容詞や、「〇〇の一覧」といった集合を表す名詞で命名されることが多くあります。

// 「実行可能」であることを示す
public interface Runnable {
    // ...
}

// 「直列化可能」であることを示す
public interface Serializable {
    // ...
}

// 「リスト」であることを示す
public interface List {
    // ...
}

昔の慣習で、インターフェースであることを示すために名前の先頭にIを付ける(例: ICustomerRepository)スタイルもあります。しかし、Javaの標準ライブラリではこの方法は採用されていないため、現在では特別な理由がない限り使わないのが一般的です。

メソッド名の命名規則

メソッドは、具体的な処理を行う部品です。メソッド名には、その処理内容が明確にわかる名前を付けましょう。

メソッド名は動詞から始める

メソッド名は、そのメソッドが何をするのかを表す「動詞」から始めるのが基本です。

// 良い例
public void run() { // 走る
    // ...
}

public String getUserName() { // ユーザー名を取得する
    // ...
}

public void calculateScore() { // スコアを計算する
    // ...
}

特に、以下のような決まったパターンの動詞を使うと、より分かりやすくなります。

  • get〇〇(): 〇〇を取得する(ゲッター)
  • set〇〇(): 〇〇を設定する(セッター)
  • is〇〇() / has〇〇(): 〇〇かどうかを判定する(boolean値を返す)
  • create〇〇(): 〇〇を新しく作成する

キャメルケースで書くルール

メソッド名は、先頭の単語を小文字にし、続く単語の先頭を大文字にする「キャメルケース」で記述します。

ラクダのこぶ(camel hump)のように見えることから、この名前が付きました。

// 良い例
public void sendMessage() {
    // ...
}

public void createPdfFile() {
    // ...
}

// 悪い例
public void SendMessage() { // パスカルケースになっている
    // ...
}

public void send_message() { // アンダースコア区切りになっている
    // ...
}

クラス名のパスカルケースと、メソッド名のキャメルケース。この違いをきちんと意識することが、Javaの命名規則をマスターする上で非常に重要です。

変数名・フィールド名の命名規則

変数やフィールドは、データを入れておく箱のようなものです。箱には、何が入っているかがわかるようにラベルを貼りますよね。変数名もそれと同じで、何のためのデータなのかが一目でわかる名前を付ける必要があります。

変数名・フィールド名も、メソッド名と同様にキャメルケースで書きます。

意味のある名前をつける

変数名は、その変数が何を格納しているのかが一目でわかる、具体的な名前にします。

astrnumber1のような抽象的な名前は避けましょう。

// 悪い例
int i = 20;
String s = "Yamada";
boolean f = true;

// 良い例
int userAge = 20;
String lastName = "Yamada";
boolean isEditable = true;

悪い例では、それぞれの変数が何を表しているのか推測できません。良い例のようにuserAge(ユーザーの年齢)やlastName(姓)といった具体的な名前を付けることで、コードの可読性が大きく向上します。

定数はすべて大文字+アンダースコア

プログラムの中で一度値を決めたら変更しない値、つまり定数(final修飾子を付けた変数)は、特別なルールで命名します。

定数は、すべての文字を大文字にし、単語と単語の間をアンダースコア(_)でつなぎます。この記法は「スネークケース」の一種です。

// 消費税率(10%)
final double TAX_RATE = 0.1;

// 最大接続数
final int MAX_CONNECTIONS = 100;

// システムで利用するデフォルトのユーザー名
final String DEFAULT_USER_NAME = "guest";

このように命名することで、他の変数と区別しやすくなり、「この値は変更してはいけない」ということがコード上で明確に伝わります。

パッケージ名の命名規則

パッケージは、関連するクラスやインターフェースをまとめるためのフォルダのようなものです。適切にパッケージを分けることで、大規模なプログラムでも整理整頓された状態を保てます。

すべて小文字で書く理由

パッケージ名は、すべて小文字で記述するのがルールです。

これは、Windowsのようにファイル名の大文字と小文字を区別しないOSと、Linuxのように区別するOSの両方で、プログラムが正しく動作するようにするためです。すべて小文字に統一しておけば、環境の違いによる予期せぬトラブルを防げます。

ドメイン名を逆にして使う慣習

パッケージ名は、世界中で公開されている他のプログラムと名前が重複しないように、一意な名前を付ける必要があります。

そのための慣習として、自身が所有しているドメイン名を逆の順番にして使うのが一般的です。

たとえば、example.comというドメインを所有している企業が開発する場合、パッケージ名は以下のようになります。

com.example.プロジェクト名.機能名

個人で開発していてドメインを持っていない場合は、com.github.ユーザー名.プロジェクト名のように、GitHubのアカウントなどを利用する形式もよく使われます。このルールに従うことで、他の人が作ったパッケージと自分のパッケージが衝突するのを防げます。

Javaの命名規則のベストプラクティス

これまでに紹介した基本的なルールに加えて、より良いコードを書くための実践的なテクニック(ベストプラクティス)を3つ紹介します。

長すぎず短すぎない名前をつける

名前は、意味がわかる範囲でできるだけ簡潔にするのが理想です。

短すぎる名前は意味がわからず、長すぎる名前はコードを読みにくくします。

// 悪い例:短すぎる
int n; // 何の数かわからない
List<String> l; // 何のリストかわからない

// 悪い例:長すぎる
int theTotalNumberOfUsersWhoHaveRegisteredInThisApplication;

// 良い例:適度な長さ
int userCount;
List<String> userNames;
int totalRegisteredUserCount;

ループ処理で使うカウンタ変数にijを使うのは慣習として許容されていますが、それ以外の場合は意味のある名前を心がけましょう。

英語で統一する重要性

プロジェクト内の命名は、すべて英語で統一するべきです。

ローマ字(例: syainBango(社員番号))や、英語と日本語のチャンポン(例: getShainList)は絶対に避けましょう。

英語で統一する理由は3つあります。

ポイント

  1. Javaのキーワード(class, publicなど)や標準ライブラリがすべて英語なので、統一感が生まれる
  2. ローマ字は日本人以外には読めず、将来的に海外のエンジニアがプロジェクトに参加する際の障壁になる
  3. 読み方が複数ある(例: sato→さとう?さと?)ため、誤解を生みやすい

翻訳ツールを使いながらでもよいので、適切な英単語で命名する癖をつけましょう。

チームでルールを統一する方法

個人開発なら自分の中でルールを決めればよいですが、チーム開発では全員が同じルールに従う必要があります。

そのために有効なのが、コーディング規約の作成です。プロジェクトで守るべき命名規則やコーディングスタイルを文書化し、チーム全員で共有します。

さらに、CheckstyleSpotBugsのような静的解析ツールを導入するのも効果的です。これらのツールは、規約に反したコードを自動で検出してくれるため、レビューの負担を減らし、コードの品質を一定に保つのに役立ちます。

まとめ

最後に、この記事の要点を振り返りましょう。

命名規則は「読みやすさ」と「保守性」のためにある

Javaの命名規則は、単に見た目を整えるためのものではありません。コードの「読みやすさ」と「保守性」を高めるために存在します。

良い命名は、未来の自分やチームメンバーへの「思いやり」です。誰が見ても理解できるコードを書くことが、優れたエンジニアへの第一歩といえるでしょう。

初心者のうちから徹底して守ることが大切

一度、自己流の書き方が癖になってしまうと、後から修正するのは大変です。Javaを学び始めたばかりの初心者のうちから、正しい命名規則を意識してコーディングすることが、成長への一番の近道です。

今回紹介したJava命名規則は、基本中の基本です。まずはこの記事の内容をマスターし、日々のコーディングで実践してみてください。あなたの書くコードが、きっと変わっていくはずです。

  • この記事を書いた人
  • 最新記事

トム

・SaaS勤務/javaのバックエンドエンジニア
/java歴10年以上 ・首都圏在住30代
・資格:基本情報技術者/応用情報技術者/Java Silver/Python3エンジニア認定基礎

-Java入門