記事内にはプロモーションが含まれています

【Java】パッケージ名の命名規則まとめ!ドメイン逆順やアンダースコアの扱い

【Java】パッケージ名の命名規則まとめ!ドメイン逆順やアンダースコアの扱い Java

Javaで大規模なアプリケーションを開発したり、ライブラリを公開したりする際、クラスの衝突を防ぐために欠かせないのが「パッケージ(package)」です。

しかし、いざパッケージ名を決めようとすると「ドメインを持っていない場合はどうする?」「単語の区切りにハイフンは使えるの?」といった疑問にぶつかることがあります。

パッケージ名は、Javaの世界全体でユニーク(一意)であることが求められるため、世界標準の厳しい命名規則が存在します。

適当な名前をつけてしまうと、他のライブラリと衝突したり、Javaの規約違反でコンパイルエラーになったりする可能性があります。

この記事では、Javaにおけるパッケージ名の基本的な命名規則から、アンダースコアやハイフンの扱い、ドメインを持たない個人の場合の対処法まで、現在の開発トレンドに合わせて徹底解説します。

【本記事の信頼性】
プロフィール
執筆者:マヒロ
  • 執筆者は元エンジニア
  • SES⇒大手の社内SE⇒独立
  • 現在はこじんまりとしたプログラミングスクールを運営
  • モットーは「利他の精神」

パッケージ名の基本ルール:すべて小文字でドメインを逆順にする

Javaのパッケージ名には、世界中で名前が被らないようにするための「鉄の掟」があります。

それが 「インターネットドメイン名を逆順にしたものをプレフィックス(接頭辞)にする」 というルールです。

基本フォーマット

jp.co.example.projectname.modulename
  1. トップレベルドメイン(TLD): jp, com, org, net など
  2. 組織名: example, google, oracle など
  3. プロジェクト名: アプリケーションやライブラリの名前
  4. モジュール名: 機能ごとの分類(util, service, model など)

すべて 「小文字」 で記述し、単語の区切りには 「ドット(.)」 を使用します。これが大原則です。

良い例と悪い例

  • OK: com.google.common.collect
  • OK: jp.co.mycompany.app.utils
  • NG: Com.Google.Common (大文字が含まれている)
  • NG: jp.co.my_company (アンダースコアは非推奨な場合がある)
  • NG: jp.co.my-company (ハイフンは使用不可)

アンダースコア(_)やハイフン(-)の扱いは?

パッケージ名を決める際、特に迷うのが「単語の区切り」です。

クラス名や変数名ではキャメルケース(myPackage)やスネークケース(my_package)が使われますが、パッケージ名には独自のルールがあります。

ハイフン(-)は絶対に使用禁止

Javaのパッケージ名にハイフン - を使うことはできません。
これは、Javaの文法上でハイフンが「引き算(減算演算子)」として解釈されてしまうためです。

もしドメイン名にハイフンが含まれている場合(例: my-company.com)は、アンダースコアに置換するのが公式の推奨ルールです。

// ドメインが "my-company.com" の場合
package com.my_company.project; 

アンダースコア(_)は「必要な場合のみ」使う

アンダースコア _ は文法的には使用可能ですが、Javaの命名慣習としては 「パッケージ名はできるだけ英数字のみの小文字にする」 ことが推奨されています。

ただし、以下のようなケースではアンダースコアの使用が認められています。

  1. ドメイン名にハイフンが含まれる場合
    • example-project.orgorg.example_project
  2. ドメイン名がJavaの予約語と被る場合
    • int.comcom.int_
    • native.jpjp.native_
  3. 数字で始まる場合
    • 123.comcom._123

単語を区切りたいだけであれば、区切らずに繋げる(imageprocessing)か、階層を掘り下げる(image.processing)のが一般的です。

大文字は使ってはいけないのか?

Javaのパッケージ名では、大文字の使用は強く非推奨とされています。
これは、クラス名(先頭大文字のキャメルケース)と明確に区別するためです。

// 非常に紛らわしい例
import Com.Example.User; // クラスに見えてしまう

WindowsやmacOSなど、ファイルシステムによっては大文字と小文字を区別しない環境もあり、トラブルの原因にもなります。

パッケージ名は必ず 「すべて小文字」 で統一しましょう。

ドメインを持っていない場合(個人開発)はどうする?

「会社のプロジェクトではなく、個人の勉強用で作りたい」「自分のドメインを持っていない」という場合でも、パッケージ名は必要です。

そのような場合は、以下のいずれかの方法でユニークな名前を付けます。

1. メールアドレスを活用する

自分のメールアドレスを逆順にして使う方法です。個人開発では伝統的に使われてきた手法です。

  • メール: taro@example.ne.jp
  • パッケージ: jp.ne.example.taro.project

2. GitHubのアカウント名を使う

現代の開発では、GitHubのリポジトリURLをベースにするのが最も一般的でスマートです。
GitHubのURLは github.com/ユーザー名 なので、これを逆順にします。

  • GitHub: https://github.com/username
  • パッケージ: com.github.username.project
  • または: io.github.username.project

これならドメインを取得していなくても、世界中でユニークであることが保証されます。

3. 「me」や「my」などの個人的なプレフィックスを使う

完全にローカルな学習用であれば、厳密なルールに従う必要はありません。

me.username.projectlocal.study.project といった、わかりやすい名前で始めても問題ありません(公開しない場合に限ります)。

Javaのスキルを活かして年収を上げる方法

以上、Javaのパッケージ名の命名規則について解説してきました。

なお、Javaのスキルがある場合には、「転職して年収をアップさせる」「副業で稼ぐ」といった方法を検討するのがおすすめです。

Javaエンジニアの需要は非常に高いため、転職によって数十万円の年収アップはザラで、100万円以上年収が上がることも珍しくありません。

なお、転職によって年収を上げたい場合は、エンジニア専門の転職エージェントサービスを利用するのが最適です。

今すぐ転職する気がなくとも、とりあえず転職エージェントに無料登録しておくだけで、スカウトが届いたり、思わぬ好待遇の求人情報が送られてきたりするというメリットがあります。

併せて、副業案件を獲得できるエージェントにも登録しておくと、空いている時間を活かして稼げるようなJavaの案件を探しやすくなります。

転職エージェントも副業エージェントも、登録・利用は完全無料なので、どんな求人や副業案件があるのか気になる方は、気軽に利用してみるとよいでしょう。