バナー画像

Javaのプログラム開発では、パッケージの構成を予め決定した上で、膨大な数になるクラスファイルを管理する方法が一般的です。

本記事では、パッケージの基本的な概要からJavaで実際に利用する方法までご紹介していきます。

Javaのパッケージって何?


Javaでアプリケーション開発を行う際、パッケージと呼ばれるグルーピングを行った上でクラスファイルを格納し、パッケージを組み合わせてシステムを稼働させます。

デフォルトパッケージ

Javaではクラスファイルを配備する際、必ずどこかのパッケージに格納されている必要があります。

デフォルトパッケージは、名前の通りパッケージ宣言をしなかった場合に自動的に割り振られるパッケージです。

これまでJava開発をされたことのある方で、特にパッケージの指定などせずにJavaアプリケーションを動かすことが出来ていた場合、このデフォルトパッケージが利用されている可能性が高いです。

パッケージとディレクトリ

Javaではパッケージとディレクトリが少し混同してしまいがちですが、基本的にはパッケージとディレクトリは同一名と考えて問題ありません。

厳密には定義自体は異なりますが、ファイル名とクラス名を同じにするように、パッケージ名とディレクトリ名は同じ名前で作成するのが一般的です。

命名規則

パッケージ名の命名規則としては、まずインターネットのドメインを反対にした方式が一般的です。

当サイトのドメインを例にすると「style.potepan.com」がインターネットのドメイン名ですので、パッケージ名は「com.potepan.style」となります。

また基本的に数字かアルファベットの小文字で構成され、ハイフンは使わずアンダースコアを利用します。

Javaパッケージの利用方法


Javaでパッケージを利用するには、「宣言」と「import」が必要となってきます。

ポテパンダの一言メモ

import文は記述しなくても、パッケージからのフルパスを記述することで利用出来ますが、import文を記述することでコーディング量を減らす方法が一般的です。

前提

パッケージを利用する際、宣言するパッケージ(ディレクトリ)構成でファイルが格納されている必要があります。

プログラムファイルが宣言した場所にない場合、コンパイルエラーとなるため注意が必要です。

宣言

宣言方法はJavaファイルの先頭に下記の形式で記述します。

package パッケージ名;

ちなみにパッケージは階層化させることが可能で、「.」で繋げてパッケージを記述します。

package パッケージ1.パッケージ2[.パッケージ3・・・];

パッケージ名指定

パッケージ名を指定してクラスにアクセスすることで、後述するimport文を利用しなくても別パッケージのクラスを利用することが出来ます。

パッケージ名.クラス名[.メソッド名];

ちなみに呼び出し元のクラスと同一パッケージにアクセスしたいクラスファイルが格納されている場合、クラス名指定だけで利用出来ます。

クラス名[.メソッド名];

import

他パッケージのクラスにアクセスする際、パッケージ名をいちいち記述するのは面倒なのでimport文を記述する方法が一般的です。

import文を記述しておけば、指定したパッケージのクラスファイルにはクラス名だけでアクセス出来るようになります。

import パッケージ名.クラス名;
import パッケージ名.*;

クラス名まで指定した場合は明示したクラスにのみアクセス可能で、「*」で指定した場合はパッケージ配下の全てのクラスにアクセスすることが出来るようになります。

パッケージを使ったJavaサンプル


では実際にJavaのサンプルコードで、パッケージの使い方をもう少し詳しく確認していきましょう。

パッケージ構成

ルートから「tree」コマンドを実行してパッケージ構成を確認しておきます。

$ tree
.
├── Main.java
├── Test.java
└── app1
    ├── Sample1.java
    └── app2
        ├── Sample2.java
        └── Test.java

サンプルコード

パッケージ構成に記載されたそれぞれのJavaファイルには下記のコードを記述しました。

Main.java

import app1.Sample1;
import app1.app2.Sample2;

public class Main {
	
	public static void main(String[] args) {
		Test.run();
		Sample1.run();
		Sample2.run();
		app1.app2.Test.run();
	}
}

サンプルでは3種類のパターンでクラスにアクセスしています。

7行目は同一パッケージ内のためクラス名の記述のみ、8,9行目に関してはimport文でパッケージの指定を予めおこなっています。

10行目に関しては、同一クラス名のファイルが存在するため、パッケージを明示した上でクラスにアクセスする方法です。

Test.java(同一パッケージ)

public class Test {
	public static void run() {
		System.out.println("同一パッケージ内のTestクラスにアクセスしています。");
	}
}

こちらのTest.javaはデフォルトパッケージを利用するため、パッケージの宣言は行っていません。

Sample1.java

package app1;

public class Sample1 {
	public static void run() {
		System.out.println("app1のSample1クラスにアクセスしています。");
	}
}

Sample1.javaは、app1パッケージ配下に格納しているため、1行目でパッケージの宣言を行っています。

Sample2.java

package app1.app2;

public class Sample2 {
	public static void run() {
		System.out.println("app1.app2のSample2クラスにアクセスしています。");
	}
}

Sample2.javaは、階層化されたapp2のパッケージに属することを宣言しています。

Test.java(app2のパッケージ)

package app1.app2;

public class Test {
	public static void run() {
		System.out.println("app1.app2のTestクラスにアクセスしています。");
	}
}

Javaではこのようにパッケージが異なれば、同一クラス名を利用することも可能です。

実行結果

サンプルのプログラムを実行すると下記の結果が表示されます。

同一パッケージ内のTestクラスにアクセスしています。
app1のSample1クラスにアクセスしています。
app1.app2のSample2クラスにアクセスしています。
app1.app2のTestクラスにアクセスしています。

パッケージが異なるクラスにもアクセス出来ていることがご確認頂けます。

さいごに: パッケージ名を分かりやすく設定しJavaファイルを管理しよう


本記事では、Javaのパッケージに関して命名規則から宣言方法まで、初心者向けに使い方をご紹介してきました。

パッケージ名の設定には今回簡単にご紹介した一般的な命名規則から、プロジェクト固有の命名規則まで様々です。

パッケージ名を分かりやすく設定して、読みやすく管理されたJavaのパッケージ構成になるようプロジェクトに活用してみてください。

エンジニアになりたい人に選ばれるプログラミングスクール「ポテパンキャンプ 」

ポテパンキャンプは卒業生の多くがWebエンジニアとして活躍している実践型プログラミングスクールです。 1000名以上が受講しており、その多くが上場企業、ベンチャー企業のWebエンジニアとして活躍しています。

基礎的な学習だけで満足せず、実際にプログラミングを覚えて実践で使えるレベルまで学習したいという方に人気です。 プログラミングを学習し実践で使うには様々な要素が必要です。

それがマルっと詰まっているポテパンキャンプでプログラミングを学習してみませんか?

卒業生の多くがWebエンジニアとして活躍

卒業生の多くがWeb企業で活躍しております。
実践的なカリキュラムをこなしているからこそ現場でも戦力となっております。
活躍する卒業生のインタビューもございますので是非御覧ください。

経験豊富なエンジニア陣が直接指導

実践的なカリキュラムと経験豊富なエンジニアが直接指導にあたります。
有名企業のエンジニアも多数在籍し品質高いWebアプリケーションを作れるようサポートします。

満足度高くコスパの高いプログラミングスクール「ポテパンキャンプ」

運営する株式会社ポテパンは10,000人以上のエンジニアのキャリアサポートを行ってきております。
そのノウハウを活かして実践的なカリキュラムを随時アップデートしております。

代表の宮崎もプログラミングを覚えサイトを作りポテパンを創業しました。
本気でプログラミングを身につけたいという方にコスパ良く受講していただきたいと思っておりますので、気になる方はぜひスクール詳細をのぞいてくださいませ。