名前空間
日本語 | 名前空間 |
英語 | namespace |
ふりがな | なまえくうかん |
フリガナ | ナマエクウカン |
「苗字」という閉じた空間。
あるものの「名前」を付ける際に、その名前が別のものの「名前」と同じ場合、名前だけでは「どちらなのか」が分からないため、このような場合には名前を付けることができない。
そこで、名前に「苗字」を付けることで、同じ名前でも苗字が違うようにして、フルネームでは区別できるようにする。
この、「苗字を付けられた名前のグループ」を「名前空間」と言う。
人間の名前で例えるなら、単に「太郎」という名前であればどこの太郎かを識別することはできないが、「佐藤太郎」「山田太郎」という「苗字」を付けることでどこの太郎か識別できるようになる。この苗字が付けられたグループ、家族のことを「名前空間」と呼ぶ。
さらに一意に識別したい場合には「日本の○○県○○市○○町○○番地の佐藤太郎」と表現すればよい。この「○○」全てが「名前空間」となる場合もある。
通常、名前空間の中では「苗字」を省略できる。
佐藤家の中では「太郎」という名前は一意であり、「太郎」という名前から人物を特定することができる。そのため、この場合には「佐藤太郎」というフルネームにする必要はない。
「空間」という概念は分かりづらいが、この「省略できる」という例をイメージすれば分かりやすいだろう。
「佐藤家」という空間において、「太郎」という名前は一意である。また同時に「山田家」という空間においても、「太郎」という名前は一意である。
つまり、苗字ごとに「有効となる空間」が存在し、それぞれが独立している、ということである。これが「名前空間」という意味である。
Javaにおいては、「名前空間」という機能は存在しない。専用の機能は存在しないし、そのための予約語も存在しない。
代わりに、Javaには「パッケージ」が存在する。パッケージはクラスの「苗字」となり、クラスを区別する。
パッケージ名はドメイン名を元に付けられることが決められているため、公開されたクラスは一意となる。
XMLには「名前空間」が存在する。
XMLには、他のXMLを取り込むことも多いため、タグの名前が被ることも多い。
その場合、たとえば「<myozi:namae>」という形で「myozi」という名前空間を指定することができる。
このように「名前空間」とは現在のプログラミングではよく使われる概念である。
だが逆に、一昔前には存在しない概念でもあった。
なぜなら、名前空間など使用せず「myozi_namae」といった名前を使用すればそれで事足りたからである。
だが、プログラムの規模が大きくなるとそれだけでは管理しきれず、バグの原因ともなったため、その代替として名前空間が導入されるようになった。
名前空間は絶対に必要なものではないが、プログラムを安全に作るための道具として積極的に利用することが望ましい。
あるものの「名前」を付ける際に、その名前が別のものの「名前」と同じ場合、名前だけでは「どちらなのか」が分からないため、このような場合には名前を付けることができない。
そこで、名前に「苗字」を付けることで、同じ名前でも苗字が違うようにして、フルネームでは区別できるようにする。
この、「苗字を付けられた名前のグループ」を「名前空間」と言う。
人間の名前で例えるなら、単に「太郎」という名前であればどこの太郎かを識別することはできないが、「佐藤太郎」「山田太郎」という「苗字」を付けることでどこの太郎か識別できるようになる。この苗字が付けられたグループ、家族のことを「名前空間」と呼ぶ。
さらに一意に識別したい場合には「日本の○○県○○市○○町○○番地の佐藤太郎」と表現すればよい。この「○○」全てが「名前空間」となる場合もある。
通常、名前空間の中では「苗字」を省略できる。
佐藤家の中では「太郎」という名前は一意であり、「太郎」という名前から人物を特定することができる。そのため、この場合には「佐藤太郎」というフルネームにする必要はない。
「空間」という概念は分かりづらいが、この「省略できる」という例をイメージすれば分かりやすいだろう。
「佐藤家」という空間において、「太郎」という名前は一意である。また同時に「山田家」という空間においても、「太郎」という名前は一意である。
つまり、苗字ごとに「有効となる空間」が存在し、それぞれが独立している、ということである。これが「名前空間」という意味である。
Javaにおいては、「名前空間」という機能は存在しない。専用の機能は存在しないし、そのための予約語も存在しない。
代わりに、Javaには「パッケージ」が存在する。パッケージはクラスの「苗字」となり、クラスを区別する。
パッケージ名はドメイン名を元に付けられることが決められているため、公開されたクラスは一意となる。
XMLには「名前空間」が存在する。
XMLには、他のXMLを取り込むことも多いため、タグの名前が被ることも多い。
その場合、たとえば「<myozi:namae>」という形で「myozi」という名前空間を指定することができる。
このように「名前空間」とは現在のプログラミングではよく使われる概念である。
だが逆に、一昔前には存在しない概念でもあった。
なぜなら、名前空間など使用せず「myozi_namae」といった名前を使用すればそれで事足りたからである。
だが、プログラムの規模が大きくなるとそれだけでは管理しきれず、バグの原因ともなったため、その代替として名前空間が導入されるようになった。
名前空間は絶対に必要なものではないが、プログラムを安全に作るための道具として積極的に利用することが望ましい。
参考サイト
- (参考サイトはありません)
// Sample.java
import java.util.*;
public class Sample
{
public static void main( String[] args )
{
// たとえば、ArrayListクラスは、「javaパッケージ」と
// 「utilパッケージ」が苗字として付けられています。
java.util.ArrayList arylst;
// このパッケージ名は、importを使用することで省略できます。
Iterator iter;
// この場合、「java.util」という名前空間が省略された、と言えます。
// 「java.util家の中に入った」とでも考えればいいでしょう。
}
}
import java.util.*;
public class Sample
{
public static void main( String[] args )
{
// たとえば、ArrayListクラスは、「javaパッケージ」と
// 「utilパッケージ」が苗字として付けられています。
java.util.ArrayList arylst;
// このパッケージ名は、importを使用することで省略できます。
Iterator iter;
// この場合、「java.util」という名前空間が省略された、と言えます。
// 「java.util家の中に入った」とでも考えればいいでしょう。
}
}
// Sample.java import java.util.*; public class Sample { public static void main( String[] args ) { // たとえば、ArrayListクラスは、「javaパッケージ」と // 「utilパッケージ」が苗字として付けられています。 java.util.ArrayList arylst; // このパッケージ名は、importを使用することで省略できます。 Iterator iter; // この場合、「java.util」という名前空間が省略された、と言えます。 // 「java.util家の中に入った」とでも考えればいいでしょう。 } }