名前空間 【namespace】 ネームスペース / NS
概要
名前空間(namespace)とは、各要素に一意の異なる名前をつけなければ識別できない範囲のこと。また、名前の集合全体を小さな空間に区切り、それぞれに異なる識別名を与えることで、その空間内では他の空間に含まれる名前の競合・衝突を意識しなくて良いようにしたもの。例えば、「中央区」という行政区名は全国のいくつかの自治体に存在し、それだけではどこを指すのか分からないが、「東京都中央区」「大阪市中央区」と表記すればそれぞれを識別することができる。この「東京都」や「大阪市」が「中央区」に対する名前空間の役割を果たしている。
自治体や住所のように階層的な名前空間によって全体が区切られていれば、大阪市に文脈が限られている場合は「大阪府大阪市中央区」とすべて書き下さなくても「中央区」のみでこれを指し示すことができ、東京の中央区を示したければ「東京都中央区」と名前空間を指定して対象を表すこともできる。
コンピュータ言語の名前空間
プログラミング言語やマークアップ言語などでも、要素の名前が衝突しても識別できるように、名前の集合に識別名を与えて外部から仕切ったものを名前空間という。
例えば、複数のクラスやモジュール、ライブラリなどで、ほとんど同じような機能や作用、役割だが、効果を及ぼす範囲や対象が異なるような要素(変数や関数、メソッドなど)が登場することがよくある。
その際、要素自体の名前としていちいち対象や範囲などまで含めた命名を行い、全体に対して一意に識別できるようするのは非効率であり、また、互いに無関係な複数の開発主体のコードが混在するような場合では競合を避けることはほとんど不可能である。
このような場合に名前空間を導入すれば、同じ集団に属する要素は短い名前で互いを識別でき、かつ、外部からは名前空間の識別名によって要素全体を他と区別することができる。個々の要素名が他の空間の似た要素と衝突していても容易に識別・指名することができる。
(2020.3.11更新)