Java 速習チュートリアル

Java パッケージと API

1. Java パッケージ & API

Javaにおけるパッケージ(Package)は、関連するクラスをグループ化するために使用されます。ファイルシステムの「フォルダ」のようなものだと考えてください。パッケージを使用することで、クラス名の名前衝突(ネーミングコンフリクト)を回避し、よりメンテナンス性の高いコードを書くことが可能になります。

パッケージは大きく2つのカテゴリに分けられます:

  • ビルトインパッケージ(Java API由来のパッケージ)
  • ユーザー定義パッケージ(開発者が自身で作成するパッケージ)

2. ビルトインパッケージ(Java API)

Java APIは、Java開発環境に最初から含まれている、自由に使用できる既成クラスのライブラリです。

このライブラリには、入力管理やデータベースプログラミングなど、多種多様なコンポーネントが含まれています。完全なリストはOracleの公式サイト( https://docs.oracle.com/javase/8/docs/api/ )で確認できます。

ライブラリはパッケージクラスに階層化されています。特定のクラス(およびそのメソッドや属性)のみをインポートすることも、指定したパッケージに属するすべてのクラスをまとめてインポートすることも可能です。

ライブラリのクラスやパッケージを使用するには、import キーワードを使用します。

2.1 基本構文

import package.name.Class;   // 単一のクラスをインポートする場合
import package.name.*;       // パッケージ全体をインポートする場合

3. クラスのインポート

使用したい特定のクラス、例えばユーザー入力を取得するための Scanner クラスを使用する場合は、以下のように記述します。

例:

import java.util.Scanner;

上記の例では、java.util がパッケージ名であり、Scanner がそのパッケージに属するクラス名です。

Scanner クラスを使用するには、そのオブジェクトを作成し、ドット記法でメソッドを呼び出します。以下の例では、行全体を読み取る nextLine() メソッドを使用しています。

例:Scanner クラスを使用してユーザー入力を取得する:

import java.util.Scanner;

class Main {
  public static void main(String[] args) {
    Scanner myObj = new Scanner(System.in);
    System.out.println("ユーザー名を入力してください");

    String userName = myObj.nextLine();
    System.out.println("ユーザー名は: " + userName);
  }
}

4. パッケージ全体のインポート

Javaには多くのパッケージが用意されています。先程の例で使用した java.util パッケージには、Scanner 以外にも日付や時刻の管理、乱数ジェネレータ、その他のユーティリティクラスが含まれています。

パッケージ内のすべてのクラスを一括でインポートするには、アスタリスク記号(*)を使用します。

例:java.util パッケージ内のすべてのクラスをインポートします。

import java.util.*;

5. ユーザー定義パッケージ

独自のパッケージを作成する場合、Javaはファイルシステムのディレクトリ構造を利用してこれらを管理します。これはコンピュータ上のフォルダ構成と同じ仕組みです。

例:

└── root
  └── mypack
    └── MyPackageClass.java

パッケージを定義するには、package キーワードをファイルの先頭に使用します。

MyPackageClass.java

package mypack;

class MyPackageClass {
  public static void main(String[] args) {
    System.out.println("これは自作のパッケージです!");
  }
}

ファイルを MyPackageClass.java として保存し、コンパイルします:

C:\Users\Your Name>javac MyPackageClass.java

次に、パッケージとしてコンパイルを実行します:

C:\Users\Your Name>javac -d . MyPackageClass.java

これにより、コンパイラは強制的に mypack というフォルダ(パッケージ)を作成します。

-d フラグは、クラスファイルを保存するデスティネーション(出力先)を指定するものです。c:/user のような任意のディレクトリ名を指定することもできますし、現在のディレクトリ内にパッケージを保持したい場合は、上記の例のようにドット . を使用します。

注記: クラス名との混乱を避けるため、パッケージ名は通常すべて小文字で記述します。

パッケージのコンパイルが完了すると、新しく mypack というフォルダが生成されます。
MyPackageClass.java を実行するには、以下のコマンドを入力します。

C:\Users\Your Name>java mypack.MyPackageClass

出力結果:

これは自作のパッケージです!