"分散ハッシュテーブルプロトコルに参加する各ノードを特定する識別子の所定の識別子領域毎に、隣接ノードに関する情報を受信ノードで記憶し、送信ノードに関する情報が含まれたメッセージを前記受信ノードで受信し、前記送信ノードに関する前記情報に基づいて、前記送信ノードと前記受信ノードとの間の第1の通信環境を前記受信ノードで導出し、前記隣接ノードに関する前記情報および前記送信ノードに関する前記情報に基づいて、前記送信ノードに対応する識別子領域について現在隣接ノードとして選択されている現隣接ノードと前記受信ノードとの間の第2の通信環境を前記受信ノードで導出し、前記第1の通信環境と前記第2の通信環境とを前記受信ノードで比較し、前記第1の通信環境が前記第2の通信環境より良好である場合に、前記送信ノードに対応する前記識別子領域について現在隣接ノードとして選択されている前記現隣接ノードを前記送信ノードで置き換える隣接ノード選択方法。前記分散ハッシュテーブルプロトコルに参加する前記各ノードには、前記各ノードのネットワーク内の位置を表す座標が割り当てられ、前記第1の通信環境および前記第2の通信環境は、座標間の距離であり、前記隣接ノードに関する前記情報は、前記隣接ノードに割り当てられた座標と前記隣接ノードを特定する識別子を含み、前記メッセージは、前記送信ノードに関する前記情報として、前記送信ノードに割り当てられた第1の座標と前記送信ノードを特定する第1の識別子を含み、前記受信ノードは、前記メッセージから前記第1の座標および前記第1の識別子を抽出し、前記受信ノードに割り当てられた第2の座標と前記第1の座標との間の第1の距離を計算し、前記受信ノードは、前記現隣接ノードに割り当てられた第3の座標と前記第2の座標との間の第2の距離を計算し、前記受信ノードは、前記第1の距離と前記第2の距離とを比較し、前記第1の距離が前記第2の距離より小さい場合に、前記送信ノードに対応する前記識別子領域について現在隣接ノードとして記憶されている前記現隣接ノードの第2の識別子を前記第1の識別子で置き換える請求項1に記載の隣接ノード選択方法。前記受信ノードは、前記第2の座標を保持し、ノード間の遅延と座標間の距離との差を最小化するように、前記第2の座標を更新する請求項2に記載の隣接ノード選択方法。前記受信ノードは、前記各ノード間の遅延に基づいて、前記受信ノードの前記ネットワーク内の位置を予め決められた座標空間内の座標にマッピングして、前記第2の座標を求める請求項2または3に記載の隣接ノード選択方法。前記第1の通信環境および前記第2の通信環境は、ノード間の遅延時間であり、前記分散ハッシュテーブルプロトコルに参加する前記各ノードのうち、同一管理ドメイン内に存在するノードで構成されるグループであるサイトに対して、前記サイトを識別するためのサイト識別子が割り当てられ、前記隣接ノードに関する前記情報は、前記隣接ノードが属するサイトに割り当てられたサイト識別子と前記隣接ノードを特定する識別子を含み、前記各ノードには、前記各ノードが属するサイトから他の各サイトまでの遅延時間が保持され、前記メッセージは、前記送信ノードに関する前記情報として、前記送信ノードが属する第1のサイトに割り当てられた第1のサイト識別子と前記送信ノードを特定する第1の識別子を含み、前記受信ノードは、前記メッセージから前記第1のサイト識別子および前記第1の識別子を抽出し、保持された前記遅延時間に基づいて、第2のサイト識別子が割り当てられた前記受信ノードが属する第2のサイトと前記第1のサイトとの間の第1の遅延時間を求め、前記受信ノードは、保持された前記遅延時間に基づいて、前記現隣接ノードが属する第3のサイトと前記第2のサイトとの間の第2の遅延時間を求め、前記受信ノードは、前記第1の遅延時間と前記第2の遅延時間とを比較し、前記第1の遅延時間が前記第2の遅延時間より小さい場合に、前記送信ノードに対応する前記識別子領域について現在隣接ノードとして記憶されている前記現隣接ノードの第2の識別子を前記第1の識別子で置き換える請求項1に記載の隣接ノード選択方法。分散ハッシュテーブルプロトコルに参加する各ノードを特定する識別子の所定の識別子領域毎に、隣接ノードに関する情報を記憶する記憶部と、送信ノードに関する情報が含まれたメッセージを受信するメッセージ受信部と、前記送信ノードに関する前記情報に基づいて、前記メッセージの送信元である前記送信ノードと自ノードとの間の第1の通信環境を導出する第1の通信環境導出部と、前記隣接ノードに関する前記情報および前記送信ノードに関する前記情報に基づいて、前記送信ノードに対応する識別子領域について現在隣接ノードとして選択されている現隣接ノードと自ノードとの間の第2の通信環境を導出する第2の通信環境導出部と、前記第1の通信環境と前記第2の通信環境とを比較し、前記第1の通信環境が前記第2の通信環境より良好である場合に、前記送信ノードに対応する前記識別子領域について現在隣接ノードとして選択されている前記現隣接ノードを前記送信ノードで置き換える隣接ノード選択部とを備えるノード。分散ハッシュテーブルプロトコルに参加する各ノードを特定する識別子の所定の識別子領域毎に、隣接ノードに関する情報を記憶するステップと、送信ノードに関する情報が含まれたメッセージを受信するステップと、前記送信ノードに関する前記情報に基づいて、前記メッセージの送信元である前記送信ノードと自ノードとの間の第1の通信環境を導出するステップと、前記隣接ノードに関する前記情報および前記送信ノードに関する前記情報に基づいて、前記送信ノードに対応する識別子領域について現在隣接ノードとして選択されている現隣接ノードと自ノードとの間の第2の通信環境を導出するステップと、前記第1の通信環境と前記第2の通信環境とを比較するステップと、前記第1の通信環境が前記第2の通信環境より良好である場合に、前記送信ノードに対応する前記識別子領域について現在隣接ノードとして選択されている前記現隣接ノードを前記送信ノードで置き換えるステップとをコンピュータに実行させるプログラム。上述のように、ChordやTapestryのような、リング構造やPlaxton構造をとるDHTプロトコルにおいて、データ検索時のエンド-エンドの遅延を小さくするためには、PNSが有効な方法である。しかしながら、理想的なPNSを実現するためには、式1に示す領域に存在する全ノードを知ることが必要である。また、各ノードへの遅延計測を行う必要がある。このため、オーバーヘッドがかかる。したがって、理想的なPNSを実現することは困難とされている。本発明は、上記の課題を解決することが可能な隣接ノード選択方法、ノード、及びプログラムを提供することを目的としている。本発明は、分散ハッシュテーブルプロトコルに参加する各ノードを特定する識別子の所定の識別子領域毎に、隣接ノードに関する情報を受信ノードで記憶し、送信ノードに関する情報が含まれたメッセージを前記受信ノードで受信し、前記送信ノードに関する前記情報に基づいて、前記送信ノードと前記受信ノードとの間の第1の通信環境を前記受信ノードで導出し、前記隣接ノードに関する前記情報および前記送信ノードに関する前記情報に基づいて、前記送信ノードに対応する識別子領域について現在隣接ノードとして選択されている現隣接ノードと前記受信ノードとの間の第2の通信環境を前記受信ノードで導出し、前記第1の通信環境と前記第2の通信環境とを前記受信ノードで比較し、前記第1の通信環境が前記第2の通信環境より良好である場合に、前記送信ノードに対応する前記識別子領域について現在隣接ノードとして選択されている前記現隣接ノードを前記送信ノードで置き換える隣接ノード選択方法である。また、本発明は、分散ハッシュテーブルプロトコルに参加する各ノードを特定する識別子の所定の識別子領域毎に、隣接ノードに関する情報を記憶する記憶部と、送信ノードに関する情報が含まれたメッセージを受信するメッセージ受信部と、前記送信ノードに関する前記情報に基づいて、前記メッセージの送信元である前記送信ノードと自ノードとの間の第1の通信環境を導出する第1の通信環境導出部と、前記隣接ノードに関する前記情報および前記送信ノードに関する前記情報に基づいて、前記送信ノードに対応する識別子領域について現在隣接ノードとして選択されている現隣接ノードと自ノードとの間の第2の通信環境を導出する第2の通信環境導出部と、前記第1の通信環境と前記第2の通信環境とを比較し、前記第1の通信環境が前記第2の通信環境より良好である場合に、前記送信ノードに対応する前記識別子領域について現在隣接ノードとして選択されている前記現隣接ノードを前記送信ノードで置き換える隣接ノード選択部とを備えるノードである。また、本発明は、分散ハッシュテーブルプロトコルに参加する各ノードを特定する識別子の所定の識別子領域毎に、隣接ノードに関する情報を記憶するステップと、送信ノードに関する情報が含まれたメッセージを受信するステップと、前記送信ノードに関する前記情報に基づいて、前記メッセージの送信元である前記送信ノードと自ノードとの間の第1の通信環境を導出するステップと、前記隣接ノードに関する前記情報および前記送信ノードに関する前記情報に基づいて、前記送信ノードに対応する識別子領域について現在隣接ノードとして選択されている現隣接ノードと自ノードとの間の第2の通信環境を導出するステップと、前記第1の通信環境と前記第2の通信環境とを比較するステップと、前記第1の通信環境が前記第2の通信環境より良好である場合に、前記送信ノードに対応する前記識別子領域について現在隣接ノードとして選択されている前記現隣接ノードを前記送信ノードで置き換えるステップとをコンピュータに実行させるプログラムである。本発明では、ノードは、他のノードからのメッセージを受信し、メッセージの送信元のノードと自ノードとの間の通信環境を導出する。そして、送信元のノードと自ノードとの間の通信環境が、現在隣接ノードとして選択されている現隣接ノードと自ノードとの間の通信環境よりも良好であれば、現隣接ノードを送信ノードで置き換えている。このように、他のノードからメッセージを受信し、自ノードとの通信環境がより良いノードを隣接ノードとして更新するので、少ないオーバーヘッドで隣接ノードを選択することができ、理想的なPNSの状況に近づけることができる。以下、本発明の実施形態について図面を参照しながら説明する。<第1の実施形態>図1は、本発明の第1の実施形態に係るシステムの全体構成を示すブロック図である。図1を参照すると、本発明の第1の実施形態に係るシステムは、ノードA1と、ノードA2と、ベースネットワークB1とを備えている。ノードA1およびノードA2は、ベースネットワークB1に接続されている。なお、ノードA1とノードA2は同様に構成されている。以下、原則としてノードA1についてだけ説明する。また、実際にはノードA1およびノードA2の他に複数のノードが存在する構成が一般的である。しかし、ここでは簡単のためにノードA1の他のノードを代表してノードA2が存在するものとして説明する。なお、本実施形態では、ノードA1およびノードA2が用いるDHTプロトコルとしてChordを用いる場合を例として説明する。ノードA1は、DHTプロトコル部11と、TCP/IPTransmissionControlProtocol/InternetProtocol通信部12とを備える。なお、ノードA2は、同様に、DHTプロトコル部21とTCP/IP通信部22とを備える。DHTプロトコル部11は、座標計算部111と、メッセージ送信部112と、メッセージ受信部113と、DHTプロトコル処理部114と、距離計算部115と、隣接ノード選択部116と、隣接ノード座標記憶部117とから構成される。座標計算部111は、DHTプロトコルに参加するノード間の遅延に基づいて、ノードA1のネットワーク内の位置を、予め決められた座標空間内の座標にマッピングする。すなわち、座標計算部111は、ノード間遅延のマトリクスから、ノードA1のネットワーク内での近似された位置の座標を計算する。このように各ノードを近似された座標にマッピングすると、任意の2ノード間の遅延は、これらノードの座標間の距離を用いて推定することが可能となる。また、座標計算部111は、計算したノードA1の座標を保持し、適宜更新を行う。このような近似された座標へのマッピング方法の一例として、下記の参考文献Vivaldiで開示されている座標計算を用いる方法が挙げられる。[参考文献]F.Dabek,R.Cox,F.Kaashoek,R.Morris,Vivaldi:ADecentralizedNetworkCoordinateSystem,InProceedingsofthe2004SIGCOMM,August2004.Vivaldiでは、ノードiおよびノードjの現座標をそれぞれpioldおよびpjoldとし、計測されたノードiおよびノードj間の遅延をrttとしたとき、ノードiの座標pinewを式2に従い更新する。ここで、δは定数であり、uは単位ベクトルである。すなわち、Vivaldiは、ノード間遅延と座標間距離との差が最小化されるように、各ノードが自律分散的に座標を更新していくアルゴリズムを採用している。また、Vivaldiでは、座標系としては、ユークリッド空間や球面座標などを用いることが想定されている。メッセージ送信部112は、DHTプロトコルにおけるメッセージを送信する機能を備える。送信されるメッセージは、TCP/IP通信部12を介して他のノードへ転送される。メッセージの種類の例として、Chordの場合、あるハッシュ値を管理するノードを返すfind_successorメッセージや、検索要求クエリメッセージが挙げられる。また、メッセージ送信部112は、メッセージの送信時に、座標計算部111が計算したノードA1の座標およびノードA1のノードIDを該メッセージ内に含める。ここで、該メッセージ内にノードA1の座標およびノードIDを含めるか否かはメッセージの種類に応じて変えてもよい。メッセージ受信部113は、DHTプロトコルにおけるメッセージを受信する機能を備える。受信されるメッセージは、TCP/IP通信部12を介して受け渡される。メッセージ受信部113は、受信したメッセージ内に座標に関する情報以下、座標情報というが含まれる場合に、含まれる座標情報と該座標情報が示す座標に対応するノードの情報を受信したメッセージから抽出し、距離計算部115へ抽出した情報を渡す。また、メッセージ受信部113は、受信したメッセージにおける座標情報およびノードID以外の部分をDHTプロトコル処理部114へ渡す。DHTプロトコル処理部114は、受信したDHTメッセージに対してメッセージの種類に従ったプロトコル処理を行う機能を備える。例えば、Chordプロトコルにおいて、find_successorメッセージキーとして含められるIDのsuccessorのノードのIDを見つけるメッセージを受信した場合、DHTプロトコル処理部114は、キーとして含められるIDに基づき、該メッセージを適切な隣接ノードfingerに転送するか、replyメッセージを返す処理を行う。座標情報を含むメッセージを転送する際には、DHTプロトコル処理部114は、該座標情報も含めてそのままメッセージを転送する。また、Chordプロトコル以外のプロトコルが用いられる場合、DHTプロトコル処理部114は、用いられるプロトコルに応じた処理を行う。距離計算部115は、メッセージ受信部113において抽出した座標情報に基づいて、自ノードとメッセージを最初に送信したノードとの間の距離を計算する。座標情報を含むメッセージをノードA2が送信したとすると、距離計算部115は、距離の計算においては、ノードA2の座標と、座標計算部111に保持されているノードA1の座標とから、これらノード間の距離を割り出す。座標系が2次元ユークリッド空間であり、ノードA1およびノードA2の座標がそれぞれxi,yiおよびxj,yjであったとすると、距離dは、式3に従って求められる。距離計算部115は、計算した距離を、ノードA2のIDすなわち座標情報を含むメッセージを送信したノードのIDとともに、隣接ノード選択部116へ渡す。隣接ノード選択部116は、距離計算部115から渡された、座標情報を含むメッセージを送信したノード以下、送信ノードというのIDと、該送信ノードと自ノードとの間の距離に基づいて、該送信ノードを隣接ノードとして選択するかを判断する。ここで、該送信ノードを隣接ノードとして選択するかどうかの判断は、例えば、以下のように行う。まず、隣接ノード選択部116は、隣接ノード座標記憶部117に保持されている現在の隣接ノードリストを参照して、該送信ノードのIDに対応する領域における現在の隣接ノードの情報を得る。そして、隣接ノード選択部116は、対応する領域における現在の隣接ノードと自ノードとの間の距離を計算し、この計算された距離と、該送信ノードと自ノードとの間の距離とを比較する。隣接ノード選択部116は、該送信ノードと自ノードとの距離の方が小さければ、該送信ノードを隣接ノードとして選択すると判断し、対応する領域における現在の隣接ノードを該送信ノードで置き換える。現在の隣接ノードを該送信ノードで置き換える場合、隣接ノード選択部116は、隣接ノード座標記憶部117における隣接ノードの情報を該送信ノードの情報に書き換える。反対に、該送信ノードと自ノードとの距離の方が小さくない場合、隣接ノード選択部116は、該送信ノードを隣接ノードとして選択しないと判断し、隣接ノードは現在のままとする。隣接ノード座標記憶部117は、ノードA1における現在の隣接ノードをリスト形式で保持する。隣接ノード座標記憶部117に保持された情報の例を図2に示す。図2は、隣接ノード座標記憶部117に保持される隣接ノード座標テーブル101を示している。図2の隣接ノード座標テーブル101を参照すると、Chordにおいて隣接ノードを選ぶ領域図中のID領域ごとに、現在選ばれている隣接ノードfingerの情報が示されている。隣接ノード座標テーブル101の例では、座標系として2次元ユークリッド空間が用いられ、ノードA1のIDがnであるとしている。図2から、1番目の隣接ノードは、対応するID領域が式4に示すとおりであり、ID=n1であり、その座標はx1,y1であることがわかる。同様に2~4番目の隣接ノード情報および対応する座標が示されている。隣接ノード座標テーブル101のエントリは、IDの最大ビット長をmとするとm個作成される。ここでは、DHTプロトコルとしてChordを例にしたため、隣接ノードは予め定められたID領域ごとに選ばれる。これに対して、TapestryやPastryなどのPlaxton構造をとるDHTプロトコルの場合は、IDのプレフィクス又はサフィクスが同一であるノードの中から隣接ノードが選ばれる。ここで、隣接ノードは同一のプレフィクス又はサフィクスの長さごとに選ばれる。したがって、Plaxton構造をとるDHTプロトコルの場合、ID領域は、同一のプレフィクス又はサフィクスを持つID群から構成される。TCP/IP通信部12は、TCP/IPプロトコルを用いて他のノードとの通信を行う機能を備える。ノードA1のOSOperatingSystemが備えるTCP/IPスタックがTCP/IP通信部12に相当する。ベースネットワークB1は、ノードA1およびノードA2が接続されるネットワークであり、任意の2ノード間で通信を行うことを可能とする。次に、図3を参照して、本発明の第1の実施形態においてノードA1が他のノードA2からメッセージを受信した際の動作について詳細に説明する。図3は、本発明の第1の実施形態においてノードA1が他のノードであるノードA2からメッセージを受信した際の動作を示すフローチャートである。この動作例では、各ノードが持つ座標の座標系として2次元ユークリッド空間が用いられるものとする。まず、ノードA1のメッセージ受信部113がノードA2からメッセージを受信するステップS101。次に、メッセージ受信部113は、ステップS101で受信したメッセージに座標情報が含まれているかどうかをチェックするステップS102。ステップS102において、座標情報がメッセージに含まれていると判断された場合ステップS102:YES、メッセージ受信部113は、含まれる座標情報と該座標に対応するノードの情報すなわちノードA2のノードIDを受信したメッセージから抽出し、距離計算部115へ抽出した情報を渡すステップS103。また、ステップS102において、座標情報がメッセージに含まれていないと判断された場合ステップS102:NO、ノードA1の処理は後述するステップS107へ移る。ステップS103の後、距離計算部115は、ステップS103で抽出した座標情報に基づいて、式3に従って自ノードとノードA2との間の距離を計算し、計算した結果をノードA2のIDとともに隣接ノード選択部116へ渡すステップS104。次に、隣接ノード選択部116は、隣接ノード座標記憶部117を参照し、ノードA2に対応するID領域において、現在隣接ノードとして選択しているノードと自ノードとの間の距離と、ステップS104で計算した自ノードとノードA2との間の距離とを比較するステップS105。ステップS105において、ステップS104で計算したノードA2と自ノードとの間の距離が現在の隣接ノードと自ノードとの間の距離より小さい場合ステップS105:YES、隣接ノード選択部116は、ノードA2に対応するID領域において現在選択している隣接ノードを、ノードA2に置き換えるステップS106。他方、ステップS105においてノードA2と自ノードとの間の距離が現在の隣接ノードと自ノードとの間の距離以上である場合、隣接ノード選択部116は、隣接ノードは現在のままとする。そして、ノードA1の処理はステップS107へ移る。ステップS106の後、メッセージ受信部113は、受信したメッセージにおける座標情報およびノードID以外の部分をDHTプロトコル処理部114へ渡す。DHTプロトコル処理部114は、メッセージの種類に従ったプロトコル処理を行うステップS107。上述した例では、受信したメッセージに座標情報が含まれる場合、該座標に対応するノードは、該メッセージをノードA1へ送信したノードA2であった。しかしながら、ノードA2以外のノードの座標情報がメッセージに含まれる場合もありうる。例えば、ノードA2以外のノード以下、ノードXとするがメッセージを最初に送信し、該メッセージをノードA2がノードA1に対して転送した場合、該メッセージ内には、ノードXの座標情報が含まれている。したがって、このような場合は、メッセージ受信部113は、座標情報に対応するノードのIDとして、ノードXのノードIDを抽出する。次に本発明の第1の実施形態の効果について説明する。本発明の第1の実施形態では、各ノードがノード間の遅延に基づいて自ノードの座標を計算し、該座標および自ノードのノードIDをDHTプロトコルにおけるメッセージ内に含めて送信する。そして、送信ノードの座標が含まれたメッセージを受信したノードは、該送信ノードと自ノードとの間の距離をこれらノードの座標から計算し、計算した距離が、該送信ノードのIDに対応するID領域において現在隣接している隣接ノードと自ノードとの間の距離よりも小さければ、隣接ノードを該送信ノードに置き換える。上述した処理の結果、他のノードからのメッセージ受信を、自ノードにより近いノードを隣接ノードとして更新する機会とすることができる。したがって、より多くのノードからメッセージを受信するほど理想的なPNSの状況に近づけることが期待できる。<第2の実施形態>次に、本発明の第2の実施形態について図面を参照して詳細に説明する。図4は、本発明の第2の実施形態に係るシステムの全体構成を示すブロック図である。本発明の第2の実施形態に係るシステムは、図1に示した本発明の第1の実施形態と同様に、ベースネットワークB1と、このベースネットワークB1に接続されたノードA3およびノードA4とを備えている。なお、本実施形態においても、ノードA3およびノードA4の用いるDHTプロトコルがChordである場合を例として説明する。また、ノードA3およびノードA4は同じ構成を有する。以下、原則としてノードA3についてだけ説明する。図4を参照すると、ノードA3は、DHTプロトコル部31と、TCP/IP通信部32とから構成される。なお、ノードA4は、同様に、DHTプロトコル部41とTCP/IP通信部42とから構成される。TCP/IP通信部32は、第1の実施形態で示したTCP/IP通信部12と同様の機能を備えており、TCP/IP通信部12と同様の動作を行うため、詳細な説明は省略する。DHTプロトコル部31は、サイト間遅延記憶部311と、メッセージ送信部312と、メッセージ受信部313と、DHTプロトコル処理部314と、遅延計算部315と、隣接ノード選択部316と、隣接ノードサイトID記憶部317とから構成される。DHTプロトコル処理部314は、第1の実施形態で示したDHTプロトコル処理部114と同様の機能を備えており、DHTプロトコル処理部114と同様の動作を行うため、詳細な説明は省略する。サイト間遅延記憶部311は、自ノードが属するサイトから他のサイトまでの遅延を記憶している。ここで、サイトとは、互いに近傍に存在するノード例えば、同一管理ドメイン内に存在するノードで構成されるグループである。具体的には、IPネットワークにおけるASAutonomousSystemや、VPNVirtualPrivateNetworkにおける拠点などがサイトの単位として用いられ、各ノードは1つのサイトに属する。例えば、ASがサイトの単位として用いられる場合、同一AS内に属するノードは、同一サイトに属するものとして扱われる。また、各サイトにはユニークなIDサイトIDが割り当てられる。また、自ノードが属するサイトから他のサイトまでの遅延を知る方法として、事前又は定期的に自ノードの代表ノードから各サイト内の代表ノードまでの遅延を計測する方法などが挙げられる。サイト間遅延記憶部311に記憶されるサイト間遅延テーブルの例を図5に示す。図5を参照すると、サイト間遅延テーブル102が示されており、自ノードノードA3が属するサイトから、他のサイトへの遅延が示されている。例えば、ノードA3はサイト3に属し、サイト1に属するノードへは100msecの遅延があり、サイト2に属するノードへは20msecの遅延があり、自サイトサイト3に属するノードへは1msecの遅延があり、サイト4に属するノードへは50msecの遅延があることがわかる。メッセージ送信部312は、第1の実施形態におけるメッセージ送信部112と同様、DHTプロトコルにおけるメッセージを送信する機能を備える。ただし、メッセージの送信時に該メッセージに座標およびノードIDを含めるのではなく、ノードA3が属するサイトのサイトIDおよびノードA3のノードIDを含める点が異なる。また、該メッセージ内にノードA3のサイトIDおよびノードIDを含めるか否かはメッセージの種類に応じて変えてもよい。メッセージ受信部313は、第1の実施形態におけるメッセージ受信部113と同様、DHTプロトコルにおけるメッセージを受信する機能を備える。ただし、メッセージの受信時に受信したメッセージから座標情報を抽出するのではなく、受信したメッセージ内にサイトIDが含まれている場合に、含まれるサイトIDと該サイトIDに対応するノードの情報を受信したメッセージから抽出し、遅延計算部315へ抽出した情報を渡す点が異なる。遅延計算部315は、メッセージ受信部313において抽出したサイトIDに基づいて、該サイトIDを含むメッセージを送信したノードと自ノードとの間の遅延を計算する。例えば、サイトIDを含むメッセージをノードA3がノードA4から受信し、該メッセージにノードA4の属するサイトのIDであるサイト4が含まれていたとする。ノードA3の遅延計算部315は、サイト間遅延記憶部311を参照し、サイトA4と自ノードA3が属するサイトとの間の遅延を調べる。サイト間遅延が、図5に示すサイト間遅延テーブル102の通りであったとすると、ノードA3とノードA4との間の遅延は、50msecであると求められる。遅延計算部315は、求めた遅延を、ノードA4のIDすなわちサイトIDを含むメッセージを送信したノードのIDとともに、隣接ノード選択部316へ渡す。隣接ノード選択部316は、遅延計算部315から渡された、サイトIDを含むメッセージを送信したノード以下、送信ノードというのIDと、該送信ノードと自ノードとの間の遅延に基づいて、該送信ノードを隣接ノードとして選択するかを判断する。該送信ノードを隣接ノードとして選択するかどうかの判断において、隣接ノード選択部316は、まず、隣接ノードサイトID記憶部317に保持されている現在の隣接ノードリストから、該送信ノードのIDに対応する領域における現在の隣接ノードの情報を参照する。そして、隣接ノード選択部316は、対応する領域における現在の隣接ノードと自ノードとの間の遅延と、該送信ノードと自ノードとの間の遅延とを比較する。該送信ノードと自ノードとの間の遅延の方が小さければ、隣接ノード選択部316は、対応する領域における現在の隣接ノードを該送信ノードで置き換える。現在の隣接ノードを該送信ノードで置き換える場合、隣接ノード選択部316は、隣接ノードサイトID記憶部317における隣接ノードの情報を該送信ノードの情報に書き換える。反対に、該送信ノードと自ノードとの間の遅延の方が小さくない場合、隣接ノード選択部316は、隣接ノードを現在のままとする。隣接ノードサイトID記憶部317は、第1の実施形態における隣接ノード座標記憶部117と同様、ノードA3における現在の隣接ノードをリスト形式で保持する。ただし、隣接ノードサイトID記憶部317は、隣接ノードの座標の代わりに、隣接ノードの属するサイトIDを保持する点が、隣接ノード座標記憶部117と異なる。隣接ノードサイトID記憶部317に保持された情報の例を図6に示す。図6の隣接ノードサイトIDテーブル103を参照すると、1番目の隣接ノードは、対応するID領域が式4に示すとおりであり、ID=n5であり、該ノードが属するサイトIDはサイト4であることがわかる。同様に2~4番目の隣接ノード情報および対応するサイトIDが示されている。次に、図7を参照して、本発明の第2の形態においてノードA3が他のノードであるノードA4からメッセージを受信した際の動作について詳細に説明する。図7は、本発明の第2の形態においてノードA3が他のノードであるノードA4からメッセージを受信した際の処理を示すフローチャートである。まず、ノードA3のメッセージ受信部313がノードA4からメッセージを受信するステップS201。次に、メッセージ受信部313は、ステップS201で受信したメッセージにサイトIDが含まれているかどうかをチェックするステップS202。ステップS202において、サイトIDがメッセージに含まれていると判断された場合ステップS202:YES、メッセージ受信部313は、含まれるサイトIDと該サイトIDを含むメッセージを送信したノードの情報すなわちノードA4のノードIDをメッセージから抽出し、遅延計算部315へ抽出した情報を渡すステップS203。また、ステップS202において、サイトIDがメッセージに含まれていないと判断された場合ステップS202:NO、ノードA3の処理は後述するステップS207へ移る。ステップS203の後、遅延計算部315は、ステップS203で抽出したサイトIDに基づいて自ノードとノードA4との間の遅延を計算し、計算した結果をノードA4のIDとともに隣接ノード選択部316へ渡すステップS204。次に、隣接ノード選択部316は、隣接ノードサイトID記憶部317を参照し、ノードA4に対応するID領域において、現在隣接ノードとして選択しているノードと自ノードとの間の遅延と、ステップS204で計算した自ノードとノードA4との間の遅延とを比較するステップS205。ステップS205において、ステップS204で計算したノードA4と自ノードとの間の遅延が現在の隣接ノードと自ノードとの間の遅延より小さい場合ステップS205:YES、隣接ノード選択部316は、ノードA4に対応するID領域において現在選択している隣接ノードを、ノードA4に置き換えるステップS206。ステップS205において、ステップS204で計算したノードA4と自ノードとの間の遅延が現在の隣接ノードと自ノードとの間の遅延以上である場合ステップS205:NO、隣接ノード選択部316は、隣接ノードを現在のままとする。そして、ノードA3の処理はステップS207へ移る。ステップS206の後、メッセージ受信部313は、メッセージにおけるサイトIDおよびノードID以外の部分をDHTプロトコル処理部314へ渡す。DHTプロトコル処理部314は、メッセージの種類に従ったプロトコル処理を行うステップS207。上述した例では、受信したメッセージにサイトIDが含まれる場合、該サイトIDに対応するノードは、該メッセージをノードA3へ送信したノードA4であった。しかしながら、ノードA4以外のノードが属するサイトのサイトIDがメッセージに含まれる場合もありうる。例えば、ノードA4以外のノード以下、ノードYとするがメッセージを最初に送信し、該メッセージをノードA4がノードA3に対して転送した場合、該メッセージ内には、ノードYの属するサイトのサイトIDが含まれている。したがって、このような場合は、メッセージ受信部313は、メッセージに含まれるサイトIDに対応するノードのIDとして、ノードYのIDを抽出する必要がある。次に本発明の第2の実施形態の効果について説明する。本発明の第2の実施形態では、互いに近傍に存在するノード同士が同一のサイトに属するようにし、各ノードは自ノードが属するサイトのサイトIDおよび自ノードのノードIDをDHTプロトコルにおけるメッセージ内に含めて送信する。そして、送信ノードが属するサイトのサイトIDが含まれたメッセージを受信したノードは、該送信ノードと自ノードとの間の遅延を、事前あるいは定期的に計測されたサイト間遅延に基づいて求め、求められた遅延が、該送信ノードのIDに対応するID領域において現在隣接している隣接ノードと自ノードとの間の遅延よりも小さければ、隣接ノードを該送信ノードに置き換える。このようにすることで、他のノードからのメッセージ受信を、自ノードにより近いノードを隣接ノードとして更新する機会とすることができる。したがって、より多くのノードからメッセージを受信するほど理想的なPNSの状況に近づけることが期待できる。以上、実施形態を参照して本発明を説明したが、本発明は、上述した実施形態に限定されるものではない。本発明の構成や詳細には、本発明の範囲内で当業者が理解し得る様々な変更を加えることができる。上述のノードは、内部にコンピュータシステムを有していても良い。この場合、上述した各処理部の動作は、プログラムの形式でコンピュータ読み取り可能な記録媒体に記憶されている。そして、このプログラムをコンピュータが読み出し、読み出されたプログラムをコンピュータが実行して、上記処理が行われる。ここで、コンピュータ読み取り可能な記録媒体とは、磁気ディスク、光磁気ディスク、CD-ROMCompactDisc-ReadOnlyMemory、DVDDigitalVersatileDisc-ROM、半導体メモリ等をいう。また、このコンピュータプログラムを通信回線経由でコンピュータに配信し、この配信を受けたコンピュータが当該プログラムを実行するようにしても良い。また、上記プログラムは、前述した機能の一部を実現するためのものであっても良い。さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル差分プログラムであっても良い。この出願は、2010年3月10日に出願された日本出願特願2010-053653号を基礎とする優先権を主張し、その開示の全てをここに取り込む。"