なまえ‐かいけつ〔なまへ‐〕【名前解決】
名前解決
【英】name resolution
名前解決とは、「testserver」や「www.yahoo.com」などといったホスト名やドメイン名が、どのようなIPアドレスに対応しているのか、を取得したり参照したりすることである。
名前解決
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2023/11/24 02:32 UTC 版)
![]() | この記事は検証可能な参考文献や出典が全く示されていないか、不十分です。(2023年11月) |
名前解決(英: name resolution)は、名前と実体の関係を明らかにすることであり、情報技術関連で以下のような意味を持つ。
プログラミング言語における名前解決
プログラミング言語の式には、識別子が含まれる。式の意味は、その識別子が指す実体が何であるかに依存する。識別子がその文脈において何を指すのかを決定するアルゴリズムは、その言語の定義の一部である。
そのアルゴリズムの計算量は、その言語の洗練度合いによって変わってくる。例えば、アセンブリ言語での名前解決は単純な連想配列の参照だが、C++の名前解決には以下のような事柄が関係し、遥かに複雑である。
- 名前空間により、ある識別子はどの名前空間に属しているかで意味が変わってくる。
- スコープにより、スコープのレベルによって識別子の意味が異なる場合がある。また、スコープはオーバーライドされたり、隠蔽されたりする。基本的には最も近いスコープでの束縛を見つけることで名前解決でき、局所変数は大域変数に取って代わることになる。
- 「可視性規則 (visibility rules)」により、特定の名前空間やスコープの識別子が現在のコンテキストから見えるかどうかが決定される。
- 多重定義により、名前空間やスコープが同じであっても、識別子の使い方によって異なる意味を持たせることができる。
- 「アクセス可能性 (accessibility)」により、通常なら可視のスコープにある識別子を名前解決の際に考慮するか否かが変更できる。
- 「実引数依存の名前探索」により、実引数の型に関係する名前空間から解決の候補となる名前を探す場合がある。
静的と動的
プログラミング言語では、名前解決をコンパイル時に行うものと実行時に行うものがある。前者を「静的名前解決」、後者を「動的名前解決」と呼ぶ。
静的名前解決をするプログラミング言語としては、C言語、C++、Pascal などがある。動的名前解決をするプログラミング言語としては、LISP、Perl、Python、Tcl、PHP、REBOL などがある。
ネットワークにおける名前解決
コンピュータネットワークにおける名前解決とは、抽象度の高いアドレス(ホスト名など)に対応する抽象度の低いアドレス(例えばIPアドレス)を見つけることである。名前解決を行うコマンドとして nslookup や host がある。詳しくは Domain Name System、OSI参照モデルを参照のこと。
他に、WindowsネットワークのWindows Internet Naming Service (WINS)、AppleTalkのName Binding Protocol (NBP)等がある。
テキストマイニングにおける名前解決
テキストマイニングソフトウェアでの名前解決とは、自然言語のテキストを参照して、名詞が参照している人物や事物を具体的に特定することである。
単純なテキストでの名前解決
例えば、次のような文章を解釈する場合を考える。
ジョンはエドワードにその本をあげた。そして彼は立ち上がり、ジョンに部屋に戻るよう呼びかけた。
この文章をソフトウェアが解釈する際、「彼」が「ジョン」なのか「エドワード」なのかを決定する必要がある。また、2つ目の文にある「ジョン」が1つ目の文の「ジョン」と同じ人物かどうかを決定しなければならない。これは自然言語処理全般に必要なことであり、日本語や英語に限った話ではない。
複数文書間の名前解決
実際には、名前解決は複数文書間に適用されることが多い。例えば、長期間にわたる新聞記事を見てみると、「ジョージ・ブッシュ」という人名は第41代アメリカ大統領のジョージ・H・W・ブッシュを意味する場合と、第43代大統領のジョージ・W・ブッシュを意味する場合がある。このような同姓同名の人は無数にいるため、ある文章に出てくる人名が特定の「この人」だということを確定するには、人名以外の情報を必要とする。
実際には、明確に特定できるだけの情報がないことが多く、このような名前解決は(特にソフトウェアにとっては)非常に困難な問題である。文脈上の特定の手掛かりを利用する手法がいくつもあるが、万能の解決策は知られていない。
関連項目
名前解決
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/10/03 22:10 UTC 版)
2000年、Bill Manning と Bill Woodcock が Multicast Domain Name Service を発表し、そこからAppleとマイクロソフトの実装が生まれた。両社の実装はよく似ている。AppleのマルチキャストDNS (mDNS) はIETFの RFC 6762 として、マイクロソフトのLLMNR(Link-Local Multicast Name Resolution(英語版))は RFC 4795 として公開されている。 この2つのプロトコルは名前解決の方法に若干の差異がある。mDNSでは、ネットワークデバイスが local 名前空間にあるドメイン名を選ぶことができ、それを特別なマルチキャストIPアドレスを使って告知する。これは local ドメインに特別な意味論を導入するため、IETFの何人かのメンバーが問題視している。現在のLLMNRのドラフトでは任意のドメイン名を選択できるが、IETFの一部メンバーはセキュリティ上の危険を指摘している。mDNSは後述するように DNS-SD と互換性があるが、LLMNR はそうではない。
※この「名前解決」の解説は、「Zeroconf」の解説の一部です。
「名前解決」を含む「Zeroconf」の記事については、「Zeroconf」の概要を参照ください。
固有名詞の分類
- 名前解決のページへのリンク