名前空間 wikipedia|無料辞書
前のページ 1/1 次のページ
名前空間(なまえくうかん)はNamespaceの訳語で、名前の集合を分割することで衝突の可能性を低減しつつ参照を容易にする概念である。
ここでいう
空間は
物理的な空間ではなく、元の全ての組み合わせ可能なものからなる
集合全体を指す。つまり
英字・
数字・
記号などを組みあわせて作られる
名前全てを含む集合である。名前に結び付けられる実体(
型や
変数)は、名前がそれぞれどの集合(空間)に属するか指定されることで一意に定まる。名前空間が異なれば同じ名前でも別の実体に対応付けられる。
◆身近な類似例
たとえば「一郎」という人名は
日本中に何人もいるため、ひとりの人間に特定することはできない。このように、同一の名前のものが複数存在し、その区別がつかない状態を名前の衝突(名前の競合)と呼ぶ。しかし、「鈴木一郎」とフルネームで呼ぶことにより他の「佐藤一郎」や「山本一郎」といった人とは区別でき、名前の衝突を避けることができる。このとき「一郎」を単純名、「鈴木一郎」を完全限定名と呼ぶ。人名「一郎」は名前空間「鈴木」に属していると捉えることができる。また、同じ「鈴木」という
姓である鈴木家の
家族間では、「一郎」は暗黙的に「鈴木一郎」のことであると解釈されるため、わざわざ完全限定名の「鈴木一郎」で呼ぶ必要がない。また、予め「『一郎』とは『鈴木一郎』のことである」と宣言しておけば、その後単純名で「一郎」と呼んでも暗黙的に「鈴木一郎」だと解釈されるため、シンプルな「一郎」のみで呼ぶことができる。必要なら、「日本国東京都世田谷区○丁目○○鈴木一郎」と呼ぶことで、同姓同名の人間とも区別することができる。これらの考え方は名前空間の概念に近いものである(これは分かりやすく説明するための方便であり、名前空間とは厳密にはイコールではない)。
◆プログラミング
ここでは、名前空間は
ソースコード上で冗長な
命名規則を用いなくても名前の衝突が起こらないようにし、しかもそれを容易に記述できるようにするためだけの概念であり、普通はそれ以上の意味は持っていない(上記の地名のたとえは行政上の管轄としての意味合いがあるが、プログラム言語の名前空間には一意な名前という以上の意味合いはない)。
Javaの機能、「パッケージ」では名前空間とアクセス制限、ソースファイルのディレクトリ構造の表現の機能を統合しているが、
C++や
C#の「純粋な」名前空間はクラスやそのメンバのアクセス制限とは無関係である。
Cには名前空間を複数に分割する機能が無く、名前の衝突を避けるためにはなんらかの命名規則を用いる必要がある。
通常は文脈によって定まる名前空間が暗黙に指定される。指定したい実体に対応する名前が他の名前空間にある場合は、名前空間と名前を明示的に組み合わせることで一意に特定できる。たとえば名前bazは集合Aの中ではデータ型を表し、集合Bでは変数を表すというように指定する。
次はC++/Java/C#様の
擬似コードによる例である。
void baz()
int baz;
void Main()
この例では同じbazという名前を持つ
関数と変数が宣言されているが、関数と変数の名前空間は暗黙的に分けられているので名前の衝突は起こらない。関数Main内に記述された名前bazには=演算子によって数の代入がされており、処理系はそれが変数名であると推定できる。ただし、Cや
Schemeなど関数名と変数名の名前空間が分けられていない言語もあり、そのような言語では値が
束縛された名前で関数を呼び出そうとするとエラーになる。上の例の変数名と関数名のように、文脈によって暗黙に名前空間が区別できるならば(それが望ましいかどうかは別として)同じ名前を使用することができる。しかし、一つの名前空間の中で同名の関数を定義すると問題が発生する。次のように同じ名前の関数、Hogeを2つ定義したとする。
void Hoge()
void Hoge()
void Main()
この場合、関数Main内のHogeという名前の関数の呼び出しはどちらの関数なのか区別できず、処理系は名前が曖昧だとしてエラーを出す。特に複数のチームで開発を行っていると名前の衝突が起きやすい。次の例は、別々のチームで書かれた二つの関数Hoge()の名前の衝突を避けるため、関数名の先頭に「チーム名_」とつけるように取り決めた場合のものである。
void TeamA_Hoge()
void TeamB_Hoge()
void Main()
これでも名前の衝突は避けられるが、呼び出しでは常にチーム名まで含めた名称で記述しなければならないため、記述も面倒でソースコードや読みにくくなってしまう。また、両方の関数をincludeしないような時には名前の衝突は起こらず、せっかくの命名規則も取り越し苦労に終わってしまう。このような場合は、2つのクラスHogeを別々の名前空間に入れる。
namespace TeamA
-->
namespace TeamB
-->
void Main()
こうすると、上の関数Hogeの名前はTeamA.Hoge、下の関数Hogeの名前はTeamB.Hogeとなり、両者を区別できるようになる。複数のチームで開発を行う場合は、チームごとに使用する名前空間を決めておけば名前の衝突は起こらないので、それぞれのチームが自由に名前を付けることができる。しかし、ひとつのソースコード中でTeamA.HogeとTeamB.Hogeの片方だけを使う場合は、完全限定名での記述は冗長な表現となってしまう。そのような場合は、C++やC#ではusingキーワードを使うことで、単純名のみの記述が使える。
using TeamA;
void Main()
処理系はusing
ディレクティブから単純名Hogeの完全限定名がTeamA.Hogeであることを推定し、単純名Hogeは完全限定名TeamA.Hogeに補完されてコンパイルが成功する。また、同一の名前空間内からの呼び出しでは単純名は自動的に補完されるため、常に単純名で記述することができる。下の例では、関数Hogeと関数Mainは同一の名前空間TeamAに属しているため、関数Mainからは単純名での記述で関数Hogeを呼び出すことができる。
namespace TeamA
void Main()
-->
◆プログラミング以外の名前空間
これら名前空間およびそれに付随する概念は、プログラミング言語に限らず活用されている。例えば、E
メールアドレスや
URLも名前空間と同等の論理で組み立てられていることはよく知られており、このような命名の仕組みによって名前を区別、分類するようなものを、広く名前空間と呼ぶこともある。
#
URIの? 名前空間は
IANAという組織が管理しており、
URNの? 名前空間は、2001年11月現在で10種が登録されている(
DTD用の公開識別子空間や書籍用の
ISBN空間などがある)。
#
XMLの名前空間は、要素名などが重複することのないように整理された空間。xmlns属性などで名前空間を宣言する。例えば、「
」と記述されたタグでは、「html」が名前空間接頭辞で「p」が要素名を表す。
#* namespaceで明示的に定義した名前空間
#
ウィキペディアにおいては、に、ウィキペディアが持つ名前空間の一覧がある。「Help:名前空間」という項目名においては、「Help」が名前空間、「名前空間」が名前である。この記事自体が、同名の項目でも、名前空間により書かれている内容が異なるものの一例として挙げることができる。
◆関連項目
前のページ 1/1 次のページ
・名前空間 page1
■名前空間を他のサイトで調べる
@[名前空間]暇つぶしマスター
A[名前空間]性病マスター
B[名前空間]ダイエットNAVI
C[名前空間]価格比較マスター
D[名前空間]肛門科マスター
E[名前空間]産婦人科科マスター
F[名前空間]結婚情報マスター
■先物関連検索
■先物Wikipedia情報
おすすめサイト
■ダイエット
美容・ダイエットならオマカセ!ダイエットNAVI
■性病
性病?お悩み・病院検索は性病マスター
■暇つぶし
いま、ヒマ?暇つぶしマスターで暇つぶし★
■価格比較
気になる商品の価格を比較!価格比較マスター
■懸賞
カンタン応募で豪華商品が当たる!アタックchance!
■バイト
駅チカバイトなら楽ラクバイト.com
■求人
地域を選んでバイト、仕事を探せる!!バリバリ仕事!.com
■アルバイト
バイトをこだわり条件で探す!こだわりキャリア.com
■求人情報
自分に合ったバイト探し★Myピッタリ仕事.com
■バイト
"資格"でバイト探し!天職さがそ!.com
■バイト
いいバイト、あるある!aruアルバイト.com
■懸賞
アタックchanceで懸賞チャレンジ!
■産婦人科
病院探し!病気相談なら産婦人科マスター
■出産
妊娠!出産!育児!赤ちゃんマスターでお悩み解決!
■外為
外為・為替レートをチェック!外為マスター
■結婚
結婚マスター!結納・両親・マリッジブルーノお悩みに…
■先物
先物・取引!詳しくなる!先物マスター
■資格
資格!キャリアアップ!資格GETマスター★
■小説
小説・書籍ならオマカセ!小説マスター
■スポーツ
スポーツ!健康!デトックス!スポーツマスターにオマカセ!
■葬儀
お葬式・葬祭のことなら・・・葬儀マスター
■痩身
ダイエット・デトックス・痩身!スリムGETマスター
■脱毛
パーフェクトBODY目指せ!脱毛マスター
■着うた
最新!人気!定番!うたマスターで着うたCHECK!
■デコメ
キラ系かわいいデコメCHECK!デコメマスター
■転職
履歴書・マナー・転職テク!就職情報なら転職マスター
■バイク
ハーレー!改造!バイクマスターにオマカセ!
■派遣
派遣!転職!キャリアアップ!転職マスター
■ペット
カワイイ犬・猫を飼いたい!ペットマスター
■豊胸
薄着の季節…お悩み解決!豊胸マスター
■包茎
包茎のお悩みなら…包茎マスター
■レシピ
今晩のおかず…料理・レシピならレシピマスター
■モバグラMIXの人気キーワード
モバグラMIXの人気キーワード一覧
■外為
外為情報をいち早く!外為LINK
■求人
転職・就活なら求人LINKにオマカセ!
■金融
金融業界の勉強するなら!金融LINK
■車
TOYOTA!HONDA!BMW!車のコトなら車LINK
■モバグラMIXの人気キーワード2
モバグラmixの人気キーワード2
■モバグラMXIの人気キーワード3
モバグラMIXの人気キーワード3
■モバグラMIXの人気キーワード4
モバグラMIXの人気キーワード4
■モバグラMIXの人気キーワード5
モバグラMIXの人気キーワード5
■モバグラMIXの人気キーワード6
モバグラMIXの人気キーワード6
■モバグラMIXの人気キーワード7
モバグラMIXの人気キーワード7
■モバグラMIXの人気キーワード8
モバグラMIXの人気キーワード8
■モバグラMIXの人気キーワード9
モバグラMIXの人気キーワード9
■モバグラMIXの人気キーワード10
モバグラMIXの人気キーワード10
■モバグラMIXの人気キーワード11
モバグラMIXの人気キーワード11
■モバグラMIXの人気キーワード12
モバグラMIXの人気キーワード12
■モバグラMIXの人気キーワード13
モバグラMIXの人気キーワード13
■モバグラMIXの人気キーワード14
モバグラMIXの人気キーワード14
■モバグラMIXの人気キーワード15
モバグラMIXの人気キーワード15
■モバグラMIXの人気キーワード16
モバグラMIXの人気キーワード16
■モバグラMIXの人気キーワード17
モバグラMIXの人気キーワード17
■車査定
車査定.com
■献立レシピ1
レシピが月額99円
■献立レシピ2
レシピが月額99円
~先物-master.com 【05/25update】 トップへ
(C)先物-master.com