バナー画像

PHPやJavaScriptを触ったことのある方は、恐らくJavaで最も不便に感じるものとして”import”を挙げるのではないでしょうか?

私自身もPHPから入っているため、Javaの学習時に最も煩わしく感じていました。

そこで今回はJavaの基本ルールでもあるクラスライブラリのインポートについて解説してみたいと思います。

これを読んでインポートについて理解してもらえたら非常に嬉しく思いますので最後までお付き合いください。

Javaでプログラムを組む時に知っておくべき事

冒頭でも触れましたが、PHPなどと比べJavaは宣言やルールが細かく設定されています。

これが他の言語(C言語等、更に難しい言語もありますが…)に比べJavaがとっつきにくい原因でもあります。

まず、Javaでクラスを使う際には必ずと言っていいほど”import”作業が発生します。

このクラスライブラリには様々なものがありますが、ざっと思いつくものをいくつか以下に挙げてみます。

Javaのパッケージ

基本クラス:java.lang
アクセス:java.io, java.nio, java.net
演算:java.math
グラフィックス:java.awt, javax.swing
テキスト:java.text
イメージ:java.awt.image, javax.imageio
セキュリティ:java.security, javax.crypto
データベース:java.sql
スクリプト:java.script
アプレット:java.applet
JavaBeans:java.beans

パッケージの使用

これらのパッケージを使用する為にはファイルの先頭で以下の構文を使って記述します。

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

パッケージ宣言と呼ばれるもので、他のサイトのサンプルコードでもよく見かけると思います。

Javaには大きく分けて”Java.lang”、”java.util”、”java.net”、”java.io”、”java.awt”の5つがあり、上記でリストとして記載したものもこのどれかに属します。

例外

全てのパッケージは宣言する必要が有るわけではなく、中には宣言無しで利用できるものもあります。

それが”java.lang”パッケージです。

これに属しているものは宣言無し(importする必要がない)で使用することが出来るため、”String”や”int”といったクラスは「クラス名 変数 = new クラス名();」のように記述すれば利用できるわけです。

importのルール

importにはファイル先頭で宣言するだけでなく、他にもいくつかのルールが存在します。

重複させない

まず一つ目のルールは「同じようなパッケージクラス名は重複させない」ということです。

次のコードを見てください。

import makeA.PackageSample;
import makeB.PackageSample;

public class Sample{
    public static void main(String[] args) {
    }
}

このコードでは、”makeA”というパッケージと”makeB”というパッケージ内にそれぞれ”PackageSample”というクラスがあり、そのクラスを使用する為にそれぞれのパッケージをインポートしています。

しかしこの記述はエラーが返されます。

ファイル先頭で宣言する

これは先ほども説明しましたが、パッケージ宣言はファイル先頭で宣言するようにしてください。

またわかりやすく記述することを心掛けてください。

例えば自作パッケージ”makepack”内のクラス”A”、”B”、”C”をimportする場合、次のように記述した方が他の開発者が見た場合にどのパッケージを使っているかが分かりやすくなります。

-- 良い例 --
import java.util.Calender;
import java.util.List;
import java.util.ArrayList;
import java.util.LinkedList;
import make.A;
import make.B;
import make.C;

public class Sample{
    public static void main(String[] args) {
    }
}

-- 悪い例 --
import java.util.Calender;
import make.A;
import java.util.List;
import java.util.ArrayList;
import make.B;
import java.util.LinkedList;
import make.C;

public class Sample{
    public static void main(String[] args) {
    }
}

悪い例でもエラーとはなりませんが、他の開発者が見た時に非常にわかり難いため、同じパッケージは揃えて記述することが望ましいです。

オンデマンドインポート

アスタリスクを使用することで、クラス名を記述することなくパッケージ全体をimport出来ます。

またこの方法を使用してパッケージ全体をインポートしたとしても、これが原因で要領が肥大化するといったことはありません。

しかし、近年ではコード内で利用しているクラスを明確にすることが慣例となってきていますので、できるだけオンデマンドインポートは利用しない方が良いとされています。

Javaを学習中の方はロジックを知る為にも出来る限りアスタリスクは使わず、全て記述するように心がけましょう。

因みに、アスタリスクを使った記述方法は以下の通りです。

import java.util.*;

public class Sample{
    public static void main(String[] args) {
    }
}

importの概念を捨てる

今までの解説では既存のパッケージとクラスについて説明してきましたが、クラスを自作するために、もう少しimportについての説明をします。

Javaでは”import”とは”読み込ませるという行為”といて捉えるのではなく”パッケージを含む冗長なクラス名を省略して記述する行為”と捉えた方が良いかもしれません。

例えば、先ほど使用するクラスを予めファイルの先頭でimportしないとエラーとなると説明しましたが、厳密にはエラーを回避させて記述する方法もあります。

次のコードを見てください。

package sample;

public class TrimSample {
	
	public static void main(String[] args) {
		java.util.Calendar cl = java.util.Calendar.getInstance();
		System.out.println("YEAR:" + cl.get(java.util.Calendar.YEAR));
    }

}

実行結果

YEAR:2019

このコードではimportでパッケージ宣言を敢えて行わずにコードを記述していますが、特にエラーが返されることなく動作しています。

クラス名を「完全限定名」で指定し記述すれば、実は特にimportする必要はないというわけです。

しかし、これを毎回記述するのは面倒すぎるため、ファイル先頭で一度「このパッケージのこのクラスを使用します!」と宣言することで、プログラムに理解させているのです。

これは変数の初期化などと一緒で、Javaの基本ルールに則った方法と言えます。

このように考えるとその他のロジックも意外と簡単に理解できるかも知れません。

まとめ

いかがでしたか?

今回は”import”についてわかりやすく解説してみました。

“import”という単語だけで理解しようとするとどうしてもその意味から、読み込みということを前提に考えてしまうと思いますが、プログラムというのは他の角度から見るとわかりやすいこともあったりします。

この記事を読んで様々な角度から考えられるように訓練してもらえると非常に嬉しいです。

 

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

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

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

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

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

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

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

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

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

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

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