(57)【要約】【課題】効率的にファイルを復元するための新たな技術的手段を提供する。【解決手段】ファイル共有ネットワークシステムにおいて、共有されるオリジナルファイルＦから、消失訂正可能に符号化された複数のメタデータｍ１，ｍ２，ｍ３，ｍ４を生成するメタデータ生成部１２と、オリジナルファイル取得のために前記メタデータを取得して復号化し前記オリジナルファイルを復元するメタデータ復号部５３と、を備えている。【選択図】図３
2008176615.tif 000002
【特許請求の範囲】
【請求項１】
ファイル共有ネットワークシステムにおいて、
共有されるオリジナルファイルから、消失訂正可能に符号化された複数のメタデータを生成するメタデータ生成部と、
オリジナルファイル取得のために前記メタデータを取得して復号化し前記オリジナルファイルを復元するメタデータ復号部と、
を備えていることを特徴とするファイル共有ネットワークシステム。
【請求項２】
前記メタデータ生成部は、消失訂正型レートレス符号によってメタデータを生成することを特徴とする請求項１記載のファイル共有ネットワークシステム。
【請求項３】
前記メタデータ生成部は、前記オリジナルファイルを分割した複数のブロックに対して、消失訂正符号による符号化を行って、復元に非必須なメタデータを生成するものであり、
前記メタデータ復号部は、復元に非必須なメタデータを、復元に必要な数ほど取得して前記オリジナルファイルを復元することを特徴とする請求項１又は２記載のファイル共有ネットワークシステム。
【請求項４】
ファイル共有ネットワークシステムにおけるファイル転送のために用いられるデータ構造であって、
共有されるオリジナルファイルを消失訂正可能に符号化したメタデータ本体と、
当該メタデータ本体を生成するのに用いられた符号化用の演算式情報と、
を有していることを特徴とするデータ構造。
【請求項５】
メタデータが存在するネットワーク上の位置情報を更に含むことを特徴とする請求項４記載のデータ構造
【請求項６】
前記メタデータは、当該メタデータ生成の基になったオリジナルファイルに関するファイル情報を更に含むことを特徴とする請求項４又は５記載のデータ構造
【請求項７】
ファイル共有ネットワークシステムにおけるファイル転送方法であって、
共有されるオリジナルファイルから、消失訂正可能に符号化された複数のメタデータを生成してネットワークへ送信可能とするステップと、
ファイル取得コンピュータが、ネットワークから前記メタデータを取得して、オリジナルファイルを復元するステップと、
を含むことを特徴とするファイル共有ネットワークシステムにおけるファイル転送方法。
【請求項８】
ファイル共有ネットワークシステムにおけるファイル転送方法であって、
共有されるオリジナルファイルから、消失訂正可能に符号化された複数のメタデータを生成するステップと、
ネットワーク上の複数のキャッシュコンピュータがメタデータを分散して保有するステップと、
ファイル取得コンピュータが、キャッシュコンピュータから前記メタデータを取得して、オリジナルファイルを復元するステップと、
を含み、
ネットワーク上の複数のキャッシュコンピュータが保有するメタデータの種類数が、オリジナルファイルを復元するのに必要なメタデータの種類数よりも多くなるようにメタデータを生成することを特徴とするファイル転送方法。
【請求項９】
前記キャッシュコンピュータが、自己が保有するメタデータの種類を、他のキャッシュコンピュータへ通知することを特徴とする請求項８記載のファイル転送方法。
【請求項１０】
オリジナルファイルからメタデータが生成される度に、異なる符号化用演算式が用いられることを特徴とする請求項７〜９のいずれかに記載のファイル転送方法。
【請求項１１】
ファイル共有のためにファイルをネットワーク上に公開するファイル公開コンピュータであって、
共有されるオリジナルファイルから、消失訂正可能に符号化されたメタデータを生成するメタデータ生成部と、
生成したメタデータをネットワークへ送信する送信部と、
を備えていることを特徴とするファイル公開コンピュータ。
【請求項１２】
前記メタデータ生成部は、
メタデータを生成するための演算式をランダムに決定する演算式発生部と、
前記演算式決定手段によってランダムに決定された演算式を用いてメタデータ生成のための演算を行うメタデータ演算部と、
を備えていることを特徴とする請求項１１記載のファイル公開コンピュータ。
【請求項１３】
前記演算式発生部は、オリジナルファイルのファイルサイズに応じて、発生する演算式数を決定することを特徴とする請求項１２記載のファイル公開コンピュータ。
【請求項１４】
前記メタデータ生成部は、前記オリジナルファイルを分割した複数のブロックに対して、消失訂正符号による符号化を行って、復元に非必須なメタデータを複数個生成することを特徴とする請求項１１〜１３のいずれかに記載のファイル公開コンピュータ。
【請求項１５】
前記メタデータ生成部は、ネットワーク上の他のコンピュータからオリジナルファイル送信要求又はメタデータ送信要求がある度に、オリジナルファイルからメタデータを生成することを特徴とする請求項１１〜１４のいずれかに記載のファイル公開コンピュータ。
【請求項１６】
前記メタデータ生成部は、ネットワーク上の他のコンピュータからオリジナルファイル送信要求又はメタデータ送信要求がある度に、オリジナルファイルから異なるメタデータを生成することを特徴とする請求項１５記載のファイル公開コンピュータ。
【請求項１７】
共有されるオリジナルファイルの存在を示す情報をネットワーク上の他のコンピュータに送信する手段を備えていることを特徴とする請求項１１〜１６のいずれかに記載のファイル公開コンピュータ。
【請求項１８】
コンピュータを、請求項１１〜１７のいずれかに記載のファイル公開コンピュータとして機能させるためのコンピュータプログラム。
【請求項１９】
ネットワークでのファイル共有のために、キャッシュブロックを保有可能なキャッシュコンピュータであって、
ファイル共有されるオリジナルファイルを消失訂正可能に符号化したメタデータをキャッシュブロックとして記憶するメタデータ記憶部と、
メタデータ記憶部に記憶されているメタデータをネットワークへ送信する送信部と、
を備えていることを特徴とするキャッシュコンピュータ。
【請求項２０】
前記メタデータ記憶部は、オリジナルファイルを復元するために必要な数よりも少ない数のメタデータを記憶することを特徴とする請求項１９記載のキャッシュコンピュータ。
【請求項２１】
ネットワーク上のあるコンピュータから送信されてきた１個又は複数個のメタデータをネットワーク上の他のコンピュータへ中継する中継手段を備え、
前記メタデータ記憶部は、中継のために受信した１個又は複数個のメタデータのうちの一部又は全部を記憶することを特徴とする請求項１９又は２０記載のキャッシュコンピュータ。
【請求項２２】
中継のために受信した１個又は複数個のメタデータの中からメタデータ記憶部に記憶すべきメタデータを選択するとともに、既にメタデータ記憶部に記憶されているメタデータのうち破棄すべきメタデータを選択する手段を備えていることを特徴とする請求項２１記載のキャッシュコンピュータ。
【請求項２３】
ネットワーク上の他のキャッシュコンピュータが保有するメタデータの種類を取得する手段を備えていることを特徴とする請求項１９〜２２のいずれかに記載のキャッシュコンピュータ。
【請求項２４】
ネットワーク上の他のキャッシュコンピュータへ、自己が保有するメタデータの種類を通知する手段を備えていることを特徴とする請求項１９〜２３のいずれかに記載のキャッシュコンピュータ。
【請求項２５】
隣接する他のキャッシュコンピュータが保有するメタデータとは種類が異なるメタデータが自己のメタデータ記憶部中に少なくとも１つ含まれるように、メタデータ記憶部に記憶すべきメタデータが選択されることを特徴とする請求項１９〜２４のいずれかに記載のキャッシュコンピュータ。
【請求項２６】
前記送信部がネットワークへ送信するメタデータは、メタデータ記憶部に記憶されているメタデータのうち、他のコンピュータが要求する種類のメタデータであることを特徴とする請求項１９〜２５のいずれかに記載のキャッシュコンピュータ。
【請求項２７】
ネットワーク上の他のコンピュータから、送信不要なメタデータの種類を示す不要メタデータ情報を受信して、前記不要メタデータ情報が示すメタデータの種類に該当しないメタデータをネットワーク上へ送信することを特徴とする請求項１９〜２６記載のキャッシュコンピュータ。
【請求項２８】
コンピュータを、請求項１９〜２８のいずれかに記載のキャッシュコンピュータとして機能させるためのコンピュータプログラム。
【請求項２９】
ネットワークから共有ファイルを取得するファイル取得するファイル取得コンピュータであって、
ファイル共有されるオリジナルファイルを消失訂正可能に符号化したメタデータをネットワークから取得するメタデータ受信部と、
取得したメタデータを復号化して前記オリジナルファイルを復元する復号部と、
を備えていることを特徴とするファイル取得コンピュータ。
【請求項３０】
ネットワーク上に存在するメタデータを探索する手段を備えていることを特徴とする請求項２９記載のファイル取得コンピュータ。
【請求項３１】
前記メタデータ受信部は、オリジナルファイルを復元するのに必要なメタデータの種類数以上の種類数のメタデータをネットワークから取得することを特徴とする請求項２９又は３０記載のファイル取得コンピュータ。
【請求項３２】
オリジナルファイルを復元するのに必要なメタデータの種類数を算出するために必要な情報をネットワークから取得することを特徴とする請求項２９〜３１のいずれかに記載のファイル取得コンピュータ。
【請求項３３】
取得したメタデータを用いて復号化してもオリジナルファイル復元に失敗した場合には、既に取得しているメタデータとは別の種類のメタデータを追加的にネットワークから取得することを特徴とする請求項２９〜３２のいずれかに記載のファイル取得コンピュータ。
【請求項３４】
メタデータ化していないオリジナルファイルを有するファイル公開コンピュータよりも、メタデータをキャッシュブロックとして保有するキャッシュコンピュータから優先的にメタデータを取得することを特徴とする請求項２９〜３３のいずれかに記載のファイル取得コンピュータ。
【請求項３５】
より少ない数の論理パスで接続されている他のコンピュータから優先的にメタデータを取得することを特徴とする請求項２９〜３４のいずれかに記載のファイル取得コンピュータ。
【請求項３６】
前記復号部によって復元されたオリジナルファイルからメタデータを再生成するメタデータ生成部を有し、
生成したメタデータをネットワークに公開することを特徴とする請求項２９〜３５のいずれかに記載のファイル取得コンピュータ。
【請求項３７】
前記メタデータ生成部は、オリジナルファイル復元に用いたメタデータとは種類が異なるメタデータを生成可能であることを特徴とする請求項３６記載のファイル取得コンピュータ。
【請求項３８】
コンピュータを、請求項２９〜３７のいずれかに記載のファイル取得コンピュータとして機能させるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ファイル共有ネットワークシステム等に関するものである。
【背景技術】
【０００２】
ファイル共有ネットワークシステムは、各コンピュータが保有するファイルを、インターネット等のネットワーク上で共有するためのものである。
ファイル共有ネットワークシステムでは、ユーザがネットワークに公開したファイルは共有ファイルとなる。別のユーザは、ネットワーク上の共有ファイルを検索し、そのファイルをダウンロードすることにより、他者が公開したファイルをネットワーク経由で取得することができる。
【０００３】
このようなファイル共有ネットワークシステムとしては、「Ｗｉｎｎｙ」、「Ｆｒｅｅｎｅｔ」などのＰ２Ｐ（ピア・ツー・ピア）ファイル共有ネットワークシステムが知られている。Ｗｉｎｎｙについては、非特許文献１に開示されている。
【０００４】
Ｗｉｎｎｙでは、共有ファイルを必要とするコンピュータ（検索ノード）が共有ファイルをネットワーク経由で取得する際、ファイルを公開したコンピュータ（オリジナルノード）から取得するだけではなく、共有ファイル（オリジナルファイル）の複製を持つコンピュータ（キャッシュノード）から取得することも可能である。
【０００５】
キャッシュノードが保有するキャッシュファイルは、共有ファイルを所定サイズ（例えば、６４Ｋバイト）ごとのキャッシュブロックに分割したものである。
検索ノードが共有ファイルを取得する場合、オリジナルノードとキャッシュノードとから多重ダウンロードすることにより、ファイル転送効率を向上させることができる。
【０００６】
また、キャッシュノードがあることで、オリジナルノードがネットワークから離脱しても、キャッシュノードから共有ファイルを取得できる。したがって、キャッシュノードがあると、検索ノードが必要なファイルを入手できる可能性が高くなり、ネットワークにおけるファイル共有効率をある程度、高くすることができる。
【非特許文献１】金子勇著、「Ｗｉｎｎｙの技術」、第１版、株式会社アスキー、２００５年１０月２０日、ｐ．７３−７７
【発明の開示】
【発明が解決しようとする課題】
【０００７】
ある共有ファイルについて、より多くのキャッシュノードがそのキャッシュファイルを有するほど、各検索ノードが必要なファイルを入手できる可能性が高くなる。
しかし、キャッシュノードを構成するコンピュータの記憶領域（具体的にはＨＤＤ）には限りがあるため、多くのキャッシュノードが同じキャッシュファイルを保有するには限界が生じる。
【０００８】
そこで、一つのキャッシュファイルを構成する複数のキャッシュブロック（断片ブロック）のうち一部のブロックをキャッシュノードが保有することが考えられる。この場合、ネットワーク上の多くのキャッシュノードに、一つのキャッシュファイルを構成するキャッシュブロックを分散的に保有させることになる。
一つのキャッシュノードは、共有ファイルの断片ブロックであるキャッシュブロックしか有しないわけであるが、検索ノードは、複数のキャッシュノードから別々の断片ブロックを集めることで、共有ファイル全体を入手することができる。
【０００９】
しかし、共有ファイルを単に断片化するだけでは、検索ノードがファイルを入手できない可能性が大きいままである。
例えば、一つの共有ファイルが５つのキャッシュブロックに断片化され、一つのキャッシュノードがランダムで２個のキャッシュブロックを保有し、キャッシュブロックを保有するキャッシュノードが５つである場合を想定する。
【００１０】
この場合、最も理想的な場合は、３つのノードからキャッシュブロックを取得することで元の共有ファイルを復元できる。しかし、最悪の場合、５つ全てのキャッシュノードのキャッシュブロックを集めても元のファイルを復元できない可能性がある。
つまり、上記の例で、１つの共有ファイルを復元するには、５種類のキャッシュブロックが必要であるが、２ブロック×５ノード＝１０ブロックのキャッシュブロックを集めても、１０個のキャッシュブロックに４種類以下のキャッシュブロックしか含まれていなければ、復元に必要な５種類のキャッシュブロックが得られず、元のファイルを復元することはできない。
【００１１】
一方、多くのノードが、ある共有ファイルについてのキャッシュブロックを保有するほど、ネットワークからファイルを入手できる可能性は高くなる。しかし、多くのノードにキャッシュブロックを保有させると、ファイル復元に必要なキャッシュブロック種類数に比べて、ノードに保有されるキャッシュブロック数が不必要に多くなる。つまり、同じ種類のキャッシュブロックが重複してネットワーク上に多数存在することになり、ファイルの共有効率が低下する。
【００１２】
そこで、本発明は、効率的にファイルを復元するための新たな技術的手段を提供することを目的とする。
【課題を解決するための手段】
【００１３】
［ファイル共有ネットワークシステム］
本発明のファイル共有ネットワークシステムは、共有されるオリジナルファイルから、消失訂正可能に符号化された複数のメタデータを生成するメタデータ生成部と、オリジナルファイル取得のために前記メタデータを取得して復号化し前記オリジナルファイルを復元するメタデータ復号部と、を備えている。
上記構成によれば、オリジナルファイルが消失訂正可能に符号化されることで、メタデータの一部が消失してもオリジナルファイルを復元することができる。
【００１４】
前記メタデータ生成部は、消失訂正型レートレス符号によってメタデータを生成するのが好ましい。消失訂正型レートレス符号を用いることで、無数の種類のメタデータを生成することができ、メタデータを多様化することができる。
【００１５】
前記メタデータ生成部は、前記オリジナルファイルを分割した複数のブロックに対して、消失訂正符号による符号化を行って、復元に非必須なメタデータを生成するものであり、前記メタデータ復号部は、復元に非必須なメタデータを、復元に必要な数ほど取得して前記オリジナルファイルを復元するのが好ましい。
上記構成によれば、メタデータは復元に非必須なデータとなり、メタデータ復号部では、復元に必要な数を取得できれば、オリジナルファイルを復元することができる。
【００１６】
［データ構造］
メタデータは、オリジナルファイルを消失訂正可能に符号化したメタデータ本体と、当該メタデータ本体を生成するのに用いられた符号化用の演算式情報と、を有しているのが好ましい。この場合、メタデータを受け取った側は、メタデータ自体から符号化用演算式情報を把握することができる。
【００１７】
前記メタデータは、メタデータが存在するネットワーク上の位置情報を含むのが好ましい。この場合、メタデータを参照することで、メタデータの位置を取得できる。
【００１８】
前記メタデータは、当該メタデータ生成の基になったオリジナルファイルに関するファイル情報を含むのが好ましい。この場合、メタデータを参照することで、オリジナルファイルに関する情報を取得できる。
【００１９】
［ファイル転送方法］
本発明のファイル共有ネットワークシステムにおけるファイル転送方法は、共有されるオリジナルファイルから、消失訂正可能に符号化されたメタデータを生成してネットワークへ送信可能とするステップと、ファイル取得コンピュータが、ネットワークから前記メタデータを取得して、オリジナルファイルを復元するステップと、を含む。
【００２０】
上記方法によれば、オリジナルファイルが消失訂正可能に符号化され、メタデータの一部が消失してもオリジナルファイルを復元することができる。
【００２１】
他の観点からみたファイル転送方法は、共有されるオリジナルファイルから、消失訂正可能に符号化されたメタデータを生成するステップと、ネットワーク上の複数のキャッシュコンピュータがメタデータを分散して保有するステップと、ファイル取得コンピュータが、キャッシュコンピュータから前記メタデータを取得して、オリジナルファイルを復元するステップと、を含み、ネットワーク上の複数のキャッシュコンピュータが保有するメタデータの種類数が、オリジナルファイルを復元するのに必要なメタデータの種類数よりも多くなるようにメタデータを生成する。
【００２２】
上記方法によれば、キャッシュコンピュータが保有するメタデータの種類数が、オリジナルファイルを復元するのに必要なメタデータの種類数よりも多いので、ファイル復元のためのメタデータ取得が容易に行える。
【００２３】
上記方法においては、前記キャッシュコンピュータが、自己が保有するメタデータの種類を、他のキャッシュコンピュータへ通知するのが好ましい。この場合、各キャッシュコンピュータが、他のキャッシュコンピュータの有するメタデータの種類を把握でき、周囲のノードのメタデータ保有状況を考慮して、キャッシュの仕方を決めることができる。
【００２４】
上記方法においては、オリジナルファイルからメタデータが生成される度に、異なる符号化用演算式が用いられるのが好ましい。このようにすることで、多くの種類のメタデータが生成され、ファイル復元に有利である。
【００２５】
［ファイル公開コンピュータ］
本発明のファイル公開コンピュータは、共有されるオリジナルファイルから、消失訂正可能に符号化されたメタデータを生成するメタデータ生成部と、生成したメタデータをネットワークへ送信する送信部と、を備えている。
上記構成によれば、オリジナルファイルが消失訂正可能に符号化されることで、メタデータの一部が消失してもオリジナルファイルを復元することができる状態で、ネットワークへのデータ送信が可能である。
【００２６】
前記メタデータ生成部は、メタデータを生成するための演算式をランダムに決定する演算式発生部と、前記演算式決定手段によってランダムに決定された演算式を用いてメタデータ生成のための演算を行うメタデータ演算部と、を備えているのが好ましい。メタデータを生成するための演算式をランダムに決定する演算式発生部を備えていることで、同一のオリジナルファイルからでも様々な種類のメタデータを生成することができる。
【００２７】
前記演算式発生部は、オリジナルファイルのファイルサイズに応じて、発生する演算式数を決定するのが好ましい。この場合、オリジナルファイルのファイルサイズに応じた数のメタデータを生成することができる。
【００２８】
前記メタデータ生成部は、前記オリジナルファイルを分割した複数のブロックに対して、消失訂正符号による符号化を行って、復元に非必須なメタデータを複数個生成するのが好ましい。オリジナルファイルを分割したブロックは、ファイル復元に必須的なものであるが、そのブロックに喪失訂正符号による符号化を行うと、復元に非必須なメタデータを生成することができる。
【００２９】
前記メタデータ生成部は、ネットワーク上の他のコンピュータからオリジナルファイル送信要求又はメタデータ送信要求がある度に、オリジナルファイルからメタデータを生成するのが好ましい。この場合、オリジナルファイル送信要求又はメタデータ送信要求がある度に、メタデータが生成される。
【００３０】
前記メタデータ生成部は、ネットワーク上の他のコンピュータからオリジナルファイル送信要求又はメタデータ送信要求がある度に、オリジナルファイルから異なるメタデータを生成するのが好ましい。この場合、オリジナルファイル送信要求又はメタデータ送信要求がある度に、メタデータの種類が増える。
【００３１】
ファイル公開コンピュータは、共有されるオリジナルファイルの存在を示す情報をネットワーク上の他のコンピュータに送信する手段を備えているのが好ましい。この場合、他のコンピュータが、オリジナルファイルがどこにあるかを把握することができる。
【００３２】
［ファイル公開コンピュータプログラム］
本発明のファイル公開コンピュータプログラムは、コンピュータを、前記ファイル公開コンピュータとして機能させるためのコンピュータプログラムである。
【００３３】
［キャッシュコンピュータ］
本発明のキャッシュコンピュータは、ファイル共有されるオリジナルファイルを消失訂正可能に符号化したメタデータをキャッシュブロックとして記憶するメタデータ記憶部と、メタデータ記憶部に記憶されているメタデータをネットワークへ送信する送信部と、を備えている。
上記構成によれば、キャッシュコンピュータは、オリジナルファイルを消失訂正可能に符号化したメタデータをキャッシュブロックとして保有でき、ネットワーク上の他のコンピュータがメタデータをキャッシュブロックとして取得可能である。
【００３４】
前記メタデータ記憶部は、オリジナルファイルを復元するために必要な数よりも少ない数のメタデータを記憶するのが好ましい。この場合、一つのキャッシュコンピュータには、復元にメタデータの一部が保存されることになり、多くのメタデータを保有する必要がない。
【００３５】
キャッシュコンピュータは、ネットワーク上のあるコンピュータから送信されてきた１個又は複数個のメタデータをネットワーク上の他のコンピュータへ中継する中継手段を備え、前記メタデータ記憶部は、中継のために受信した１個又は複数個のメタデータのうちの一部又は全部を記憶するのが好ましい。この場合、中継したメタデータをキャッシュブロックとして保存することができる。
【００３６】
キャッシュコンピュータは、中継のために受信した１個又は複数個のメタデータの中からメタデータ記憶部に記憶すべきメタデータを選択するとともに、既にメタデータ記憶部に記憶されているメタデータのうち破棄すべきメタデータを選択する手段を備えているのが好ましい。記憶すべきメタデータと破棄すべきメタデータを選択する手段を備えていることで、適切なメタデータの保有が可能となる。
【００３７】
キャッシュコンピュータは、ネットワーク上の他のキャッシュコンピュータが保有するメタデータの種類を取得する手段を備えているのが好ましい。この場合、他のキャッシュコンピュータが保有するメタデータの種類を考慮して、キャッシュブロックの保有の仕方を決めることができる。
【００３８】
キャッシュコンピュータは、ネットワーク上の他のキャッシュコンピュータへ、自己が保有するメタデータの種類を通知する手段を備えているのが好ましい。この場合、他のキャッシュに自己が保有するメタデータの種類を通知することができる。
【００３９】
キャッシュコンピュータは、隣接する他のキャッシュコンピュータが保有するメタデータとは種類が異なるメタデータが自己のメタデータ記憶部中に少なくとも１つ含まれるように、メタデータ記憶部に記憶すべきメタデータを選択するのが好ましい。この場合、隣接する他のキャッシュコンピュータとは異なるメタデータを保有でき、ネットワーク上のメタデータの多様性を得ることができる。
【００４０】
前記送信部がネットワークへ送信するメタデータは、メタデータ記憶部に記憶されているメタデータのうち、他のコンピュータが要求する種類のメタデータであるのが好ましい。この場合、他のコンピュータが要求するメタデータだけを効率的に送信することができる。
【００４１】
キャッシュコンピュータは、ネットワーク上の他のコンピュータから、送信不要なメタデータの種類を示す不要メタデータ情報を受信して、前記不要メタデータ情報が示すメタデータの種類に該当しないメタデータをネットワーク上へ送信するのが好ましい。この場合、他のコンピュータが既に持っているメタデータを重複して送信してしまうことを防止できる。
【００４２】
［キャッシュコンピュータプログラム］
本発明のキャッシュコンピュータプログラムは、コンピュータを、前記キャッシュコンピュータとして機能させるためのコンピュータプログラムである。
【００４３】
［ファイル取得コンピュータ］
本発明のファイル取得コンピュータは、ファイル共有されるオリジナルファイルを消失訂正可能に符号化したメタデータをネットワークから取得するメタデータ受信部と、取得したメタデータを復号化して前記オリジナルファイルを復元する復号部と、を備えている。上記構成によれば、メタデータは、オリジナルファイルを消失訂正可能に符号化されたものであるから、メタデータの一部が消失していても、オリジナルファイルを復元することができる。
【００４４】
ファイル取得コンピュータは、ネットワーク上に存在するメタデータを探索する手段を備えているのが好ましい。この場合、ファイル取得コンピュータは、ネットワーク上のメタデータの存在を把握することができる。
【００４５】
前記メタデータ受信部は、オリジナルファイルを復元するのに必要なメタデータの種類数以上の種類数のメタデータをネットワークから取得するのが好ましい。この場合、確実にオリジナルファイルを復元することができる。
【００４６】
ファイル取得コンピュータは、オリジナルファイルを復元するのに必要なメタデータの種類数を算出するために必要な情報をネットワークから取得するのが好ましい。この場合、ファイル取得コンピュータは、必要なメタデータの種類数を容易に把握することができる。
【００４７】
ファイル取得コンピュータは、取得したメタデータを用いて復号化してもオリジナルファイル復元に失敗した場合には、既に取得しているメタデータとは別の種類のメタデータを追加的にネットワークから取得するのが好ましい。この場合、一旦オリジナルファイル復元に失敗しても、オリジナルファイルを復元することができる。
【００４８】
ファイル取得コンピュータは、メタデータ化していないオリジナルファイルを有するファイル公開コンピュータよりも、メタデータをキャッシュブロックとして保有するキャッシュコンピュータから優先的にメタデータを取得するのが好ましい。この場合、ファイル公開コンピュータへアクセスが集中して負荷が増大するのを避けることができる。
【００４９】
ファイル取得コンピュータは、より少ない数の論理パスで接続されている他のコンピュータから優先的にメタデータを取得するのが好ましい。この場合、近くのコンピュータから効率的にメタデータを取得することができる。
【００５０】
ファイル取得部は、前記復号部によって復元されたオリジナルファイルからメタデータを再生成するメタデータ生成部を有し、生成したメタデータをネットワークに公開するのが好ましい。この場合、ファイルを取得したコンピュータもメタデータを公開するため、ネットワーク上のメタデータが増加する。
【００５１】
前記メタデータ生成部は、オリジナルファイル復元に用いたメタデータとは種類が異なるメタデータを生成可能であるのが好ましい。この場合、異なるメタデータが生成されるため、ネットワークにおけるメタデータの多様性が得られる。
【００５２】
［ファイル取得コンピュータプログラム］
本発明のファイル取得コンピュータプログラムは、コンピュータを、前記ファイル取得コンピュータとして機能させるためのコンピュータプログラムである。
【発明の効果】
【００５３】
本発明によれば、効率的にファイルを復元することができる。
【発明を実施するための最良の形態】
【００５４】
以下、本発明の実施形態を図面に基づいて説明する。
図１は、Ｐ２Ｐ（ピア・ツー・ピア）ファイル共有ネットワークシステムの例を示している。なお、以下では、ファイル共有ネットワークシステムを、「ファイル共有ネットワーク」又は単に「ネットワーク」という。
このファイル共有ネットワークは、Ｐ２Ｐ型であるため、ファイル転送を中央集権的に管理するサーバを有していないが、必要であればサーバが存在してもよい。
ネットワーク上には、複数のノード（ピア）Ｎｉ（ｉ：自然数）が存在する。ノードＮｉは、ネットワークに参加するコンピュータ（ノードコンピュータ）によって構成されている。ノードは、他のノードとの間に論理的なパスＰを張り、Ｐ２Ｐネットワークを構成する。なお、ノードコンピュータ間の通信は、例えば、インターネットを利用して行われる。
【００５５】
ファイル転送は、論理パスＰに沿って行われ、例えば、図１のノードＮ１からＮ３へのファイル転送は、中間のノードＮ２を介して行われる。なお、ノードＮｉはコンピュータユーザの意思で、ネットワークから抜けることがある。
【００５６】
［ノードコンピュータの構成］
ノードは、ファイル共有プログラム１００がインストールされたコンピュータ１０１によって構成されている。より具体的には、図２に示すように、コンピュータ１０１は、処理装置１０３及びＨＤＤ等によって構成された記憶装置１０４を有しており、記憶装置１０４にファイル共有プログラム１００がコンピュータ実行可能に保存されている。
【００５７】
［ノードの機能］
ノードは、オリジナルノード、中継ノード、検索ノード、キャッシュノードのいずれかのノードとして機能することができる。つまり、前記ファイル共有プログラム（ノードコンピュータプログラム）は、上記４つのノードのいずれの機能もコンピュータ１０１に実行させることができるように構成されている。
【００５８】
ここで、前記オリジナルノードは、あるファイルを（最初に）公開（ネットワーク上で共有）するノードである。
前記中継ノードは、ノード間のファイル転送を中継するノードである。
前記検索ノードは、ファイルを必要としている（探している）ノードである。
前記キャッシュノードは、あるファイルについてのキャッシュブロックを保有するノードである。本実施形態では、あるファイルの転送に関わったノード（オリジナルノード、中継ノード、検索ノード）はどれでもキャッシュノードとして機能する可能性を有する。
【００５９】
［オリジナルノード（ファイル公開コンピュータ）の構成］
図３は、ノードが、ファイルを公開するオリジナルノードとして機能する場合の、機能ブロックを示している。このオリジナルノードは、ファイル共有のために公開しようとするオリジナルファイルを記憶するオリジナルファイル記憶部１１、オリジナルファイルから符号化を行ってメタデータ（「メタブロック」又は「メタデータブロック」ともいう）を生成するメタデータ生成部１２、及び、メタデータをネットワークへ送信するメタデータ送信部１３を備えている。また、オリジナルノードは、各部１１，１２，１３の制御を行う制御部２０及びＰ２Ｐネットワークの通信に必要な処理を行うＰ２Ｐネットワーク通信処理部２１を備えている。
なお、オリジナルファイル記憶部１１には、公開したいファイルを１又は複数個保存することができる。
【００６０】
また、前記メタデータ生成部１２は、メタデータを生成するための演算式を生成する演算式発生部（演算式決定手段）１２ａと、生成した演算式を用いてメタデータを生成のための演算を行うメタデータ演算部１２ｂと、を備えている。
【００６１】
［中継ノード（中継コンピュータ；中継手段）の構成］
図４は、ノードが、ファイル転送を中継する中継ノードとして機能する場合の、機能ブロックを示している。この中継ノードは、他のノードから送出されたメタデータを受信するメタデータ受信部３１、受信したメタデータを記憶するメタデータ記憶部３２、及びメタデータを転送のために他のノードへ送信するメタデータ送信部３３を備えている。また、中継ノードは、各部３１，３２，３３の制御を行う制御部２０及びＰ２Ｐネットワークの通信に必要な処理するＰ２Ｐネットワーク通信処理部２１を備えている。
【００６２】
［キャッシュノード（キャッシュコンピュータ）の構成］
図５は、ノードが、キャッシュノードとして機能する場合の、機能ブロックを示している。
このキャッシュノードは、他のノードから送出されたメタデータを受信するメタデータ受信部４１、受信したメタデータを記憶するメタデータ記憶部４２、及びメタデータを他のノードへ送信するメタデータ送信部４３を備えている。また、中継ノードは、各部４１，４２，４３の制御を行う制御部２０及びＰ２Ｐネットワークの通信に必要な処理するＰ２Ｐネットワーク通信処理部２１を備えている。
【００６３】
［検索ノード（ファイル取得コンピュータ）の構成］
図６は、ノードが、検索ノードとして機能する場合の、機能ブロックを示している。
この検索ノードは、他のノードからメタデータを取得するためのメタデータ受信部５１、受信したメタデータを記憶するメタデータ記憶部５２、取得したメタデータを復号化してオリジナルファイルを復元するメタデータ復号部５３、復元したオリジナルファイルを記憶するオリジナルファイル記憶部５４を備えている。
また、メタデータ復号部５３は、復号に用いる演算式を生成する演算式発生部（演算式決定手段）５３ａと、生成した演算式を用いてメタデータの復号のための演算を行うメタデータ復号演算部５３ｂと、を備えている。
【００６４】
さらに検索ノードは、復元したオリジナルファイルからメタデータを生成するメタデータ生成部５５、生成したメタデータをキャッシュブロックとして記憶するメタデータ記憶部５６、及びメタデータをネットワークへ送信するメタデータ送信部５７を備えている。
また、メタデータ生成部５５は、メタデータを生成するための演算式を生成する演算式発生部（演算式決定手段）５５ａと、生成した演算式を用いてメタデータを生成のための演算を行うメタデータ演算部５５ｂと、を備えている。
【００６５】
なお、図３〜図６においては、説明の便宜のため、各図間で共通する機能について異なる参照符号を付している場合があるが、名称が共通する機能ブロックについては、特に説明がない限り、共通した機能を有する。
また、本実施形態において、オリジナルノード、中継ノード、キャッシュノード、検索ノードにおける上記各機能は、コンピュータプログラムにより実現されている。
【００６６】
［メタデータについて］
オリジナルノード等が有するメタデータ生成部１２は、オリジナルファイルを消失訂正型レートレス符号によってメタデータ化するものである。消失訂正符号とは、データの一部が消失しても消失を訂正することができる符号をいう。また、消失訂正型レートレス符号は、一のオリジナルデータに対して符号化データを無限に生成可能であるという特徴を持つ。消失訂正型レートレス符号には、Ｄｉｇｉｔａｌ  Ｆｏｕｎｔａｉｎ社のＲａｐｔｏｒやＬＴ符号などがある。
【００６７】
消失訂正型レートレス符号では、オリジナルのファイル（オリジナルデータ）を一定サイズ（例えば、６４Ｋバイト）のブロックに分割して、複数のブロック同士の演算を行ったメタデータ（メタブロック）を生成する。
具体的には、図７に示すように、メタデータ生成部１２は、公開されるオリジナルファイルＦを３つのオリジナルブロックｂ１〜ｂ３に分割する。オリジナルブロックは一定サイズのため、分割数はオリジナルファイルＦの大きさによって決まる。
なお、分割前のオリジナルファイルには、暗号化が施されていてもよいし、分割後のオリジナルブロックに暗号化が施されていてもよい。
【００６８】
また、メタデータ生成部１２の演算式発生部１２ａは、メタデータを生成するための演算式を得るためのライブラリを有しており、必要な数のメタデータを生成するに必要な数の演算式（主にビット演算のＸＯＲ（排他的論理和）を用いた式）をランダムに生成する。なお、図７では、４個の演算式が生成されている。
ここでの演算式は、複数のオリジナルブロック同士を所定の演算子（ＸＯＲ等）によって演算し、個々のメタデータをオリジナルファイル復元のために非必須的なデータにするためのものである。
また、演算式は、ｍ２＝ｂ２のように、１個のオリジナルブロックをそのままメタデータとするものであってもよい。
【００６９】
メタデータ生成部のメタデータ演算部１２ｂは、生成された演算式に従って、複数のオリジナルブロックｂ１，ｂ２，ｂ３同士の演算を行う。図７では、メタデータｍ１＝（ｂ１  ｘｏｒ  ｂ３）、メタデータｍ２＝ｂ２、メタデータｍ３＝（ｂ２  ｘｏｒ  ｂ３）、メタデータｍ４＝（ｂ１  ｘｏｒ  ｂ２  ｘｏｒ  ｂ３）の演算が行われ、４個のメタデータｍ１〜ｍ４が生成される。
【００７０】
メタデータは、演算を行うオリジナルブロックの種類、演算対象のオリジナルブロック個数、演算子の種類等により無数に生成可能である。
復号側（検索ノード）では、所定数のメタデータを取得することにより、複数の演算式からなる連立方程式を解くことで元のオリジナルブロックが得られ、オリジナルファイルを復元することができる。
つまり、メタデータ復号部５３は、いくつからのメタデータと、それらのメタデータ生成に用いられた演算式とを用いて、当該演算式の連立方程式を解いて、オリジナルブロックを得る。
【００７１】
オリジナルファイルは連立方程式を解くことによって復元されるため、必要数（例えば、図７であれば４個）以上の演算式があれば、オリジナルファイル復元可能性は高い確率で保証される。すなわち、個々のメタデータは、オリジナルファイル復元に必須的なものではなく、復元側（検索ノード）は、メタデータとそのメタデータを生成した演算式の組み合わせが必要数以上あればよい。
【００７２】
復元に必要なメタデータ数は、一般には、元のオリジナルブロック数よりもわずかに多い程度であり、図７では、３個のオリジナルブロックｂ１〜ｂ３から４個のメタデータｍ１〜ｍ３が生成されている。なお、メタデータを生成するポリシーの詳細については後述する。
【００７３】
［ファイル転送の例］
以下、本実施形態におけるファイル転送の簡単な例について図８〜図１２に基づいて説明する。ここでは、ノードＮ１〜Ｎ１４が存在するＰ２Ｐファイル共有ネットワークシステムを想定する。本例でのファイル転送のルールは、下記の通りとする。
【００７４】
［ファイル転送のルール］
転送対象のオリジナルファイルは、５個のオリジナルブロックから構成されるものとする。また、検索ノードでは、６個（６種類）の異なるメタデータブロックを取得すればオリジナルファイルを復元できるものとする。
オリジナルノードは、消失訂正型レートレス符号で符号化したメタデータブロックを演算式情報とともに他のノードへ送信する。メタデータ生成のための演算式は、乱数を用いてランダムに決定される。
【００７５】
中継ノードは、メタデータブロックを中継すると、キャッシュノードとなり、一つのオリジナルファイルについて、ランダムで最大２つのメタデータブロックを保存し、キャッシュブロックとして、他のノードに対し公開する。キャッシュノードは、同一のオリジナルファイルのメタブロックについて複数回中継を行った場合は、古いキャッシュブロックを破棄して新しく転送したブロックで上書きするものとする。
【００７６】
検索ノードは、オリジナルファイル復元後、乱数を用いて新たな演算式を決定し、消失訂正型レートレス符号で符号化したメタデータブロックを２個キャッシュブロックとして、保存公開する。すなわち、検索ノードは、オリジナルファイル取得後、キャッシュノードとして機能する。検索ノードがキャッシュノードとしてキャッシュブロックを生成・公開する際、乱数を用いて演算式を新たに生成するため、演算式（演算方程式）は、極めて低い確率でしか、オリジナルノードが生成した演算式とは一致しない。
【００７７】
オリジナルノードへのアクセスの集中を避けるために、新たにファイルを検索するノードは、オリジナルノードよりもキャッシュノードを優先してメタデータブロック（キャッシュブロック）を取得しようと試みるものとする。また、複数のキャッシュのうち、自己の検索ノードにできるだけ近いキャッシュノードからメタデータブロック（キャッシュブロック９を取得しようと試みるものとする。
【００７８】
［１回目のファイル転送］
図８は、１回目のファイル転送を示している。ノードＮ１は、ブロックｂ１〜ｂ５に分割されるオリジナルファイルを公開しており、オリジナルノードＯ１となっている。ファイルを取得しようとするノードＮ９は検索ノードＳ９となり、ネットワークに対してファイル要求をする。このとき、検索ノード９が要求するファイルについてのキャッシュノードが存在しないので、オリジナルノードＯ１にファイルを要求する。
【００７９】
オリジナルノードＯ１は、メタデータブロックｍ１〜ｍ６を生成し、送信する。このとき、ノードＮ４が中継ノードとなり、オリジナルノードＯ１からのデータを検索ノードＳ９へ転送する。
転送後の中継ノードＮ４は、中継した６個のメタデータブロックｍ１〜ｍ６のうち、任意に選択される２つのメタデータブロックｍ１，ｍ５をキャッシュブロックとして保存し、キャッシュノードＣ４となる。
【００８０】
検索ノードＳ９は、６個（６種類）のメタデータブロックｍ１〜ｍ６を受信後、これらのメタデータブロックｍ１〜ｍ６とそれらの演算式とから、連立方程式を解く演算を行って、オリジナルファイルを復元する。検索ノードＳ９は、復元により取得したオリジナルファイルを、ランダムに決定される演算式により、再符号化し、キャッシュすべき２つのメタデータブロックｍ７，ｍ８を生成し、保存する。すなわち、検索ノードＳ９がキャッシュノードＣ９となる。なお、メタデータブロックｍ７，ｍ８を生成した演算式と、メタデータブロックｍ１〜ｍ６を生成した演算式は異なるものとなる。
【００８１】
以上の１回目のファイル転送が終了すると、ネットワーク上には、４個（４種類）のメタデータブロックがキャッシュブロックとして存在することになる（図９参照）。
【００８２】
［２回目のファイル転送］
図９は、２回目のファイル転送を示している。ファイルを取得しようとするノードＮ１１は検索ノードＳ１１となり、ネットワークにファイルを要求する。ここでは、キャッシュノードＣ４，Ｃ９が存在するので、まず、検索ノードＳ１１は、これらのノードＣ４，Ｃ９からメタデータブロックを取得する。
【００８３】
具体的には、キャッシュノードＣ４から、検索ノードＳ１１にキャッシュブロックであるメタデータブロックｍ１，ｍ５を送信する。このとき、ノードＮ５が中継ノードとなり、検索ノードＳ１１へ転送する。同時に、中継ノードＮ５は、中継したメタデータブロックｍ１，ｍ５をキャッシュブロックとして保存し、キャッシュノードＣ１５となる。
【００８４】
また、キャッシュノードＣ９から、検索ノードＳ１１にキャッシュブロックであるメタデータブロックｍ７，ｍ８を送信する。このとき、ノードＮ１０が中継ノードとなり、検索ノードＳ１１へ転送する。同時に、中継ノードＮ１０は、中継したメタデータブロックｍ７，ｍ８をキャッシュブロックとして保存し、キャッシュノードＣ１０となる。
【００８５】
また、以上により、検索ノードＳ１１は、４種類のメタデータブロックｍ１，ｍ５，ｍ７，ｍ８をキャッシュノードから取得するが、オリジナルファイル復元には６種類必要である。そこで、検索ノードＳ１１は、残り２種類（２個）（又はそれ以上）のメタデータブロックをオリジナルノードＯ１へ要求する。
【００８６】
オリジナルノードＯ１は、ランダムに決定される演算式により、２つの新たなメタデータブロックｍ９，ｍ１０を生成し、その演算式とともに、検索ノードＮ１１へ転送する。このとき、ノードＮ５が中継ノードとなり、検索ノードＳ１１へ転送する。同時に、中継ノードＮ５は、今まで保持していたメタデータブロックｍ１，ｍ５のうち、いずれか一方（ここでは、ｍ１）を破棄して、今回中継したメタデータブロックｍ９，ｍ１０のうちいずれか一方（ここでは、ｍ９）を保存する。なお、ブロックｍ１の記憶領域にブロックｍ９が上書きされることで、ブロックｍ９が破棄される。中継したブロックのうちどれを保存するかはランダムに決定してもよいし、所定のポリシー（保存ルール）に従って、決定してもよい。また、破棄（上書き）されるブロックもランダムに決定してもよいし、所定のポリシー（破棄ルール）に従ってもよい。
【００８７】
検索ノードＳ１１は、６個（６種類）のメタデータブロックｍ１，ｍ５，ｍ７，ｍ８，ｍ９，ｍ１０を受信後、これらのメタデータブロックｍ１，ｍ５，ｍ７，ｍ８，ｍ９，ｍ１０とそれらの演算式とから、連立方程式を解く演算を行って、オリジナルファイルを復元する。検索ノードＳ１１は、復元により取得したオリジナルファイルを、ランダムに決定される演算式により、再符号化し、キャッシュすべき新たな２つのメタデータブロックｍ１１，ｍ１２を生成し、保存する。すなわち、検索ノードＳ１１がキャッシュノードＣ１１となる。
【００８８】
以上の２回目のファイル転送が終了すると、ネットワーク上には、１０個（７種類）のメタデータブロックがキャッシュブロックとして存在することになる（図１０参照）。このように、オリジナルファイル復元に必要なメタデータブロック種類数（＝６種類）よりも多い種類のメタデータブロックがネットワーク上に存在する状態が得られる。この状態になった以降は、キャッシュノードからキャッシュブロックを取得するだけでオリジナルファイルが復元できるようになる。
つまり、オリジナルファイルそのものを有するノードＯ１がネットワーク上に存在しなくても、オリジナルファイルの復号化に十分な数（種類）のメタデータブロックを獲得することが可能な状態にある。
【００８９】
以上説明したように、新規にファイルを取得する検索ノードが復号時とは別の演算式（演算方程式）で演算したメタデータブロックを生成するため、ファイル取得が行われる度に、メタデータブロックの種類は増加していく。
また、オリジナルファイルＯ１も、ファイル要求ないしメタブロック要求がある度に、新たな演算式（演算方程式）で演算したメタデータブロックを生成するため、ファイル要求ないしメタブロック要求が行われる度に、メタデータブロックの種類は増加していく。
【００９０】
［ファイル転送Ｎ回後のネットワーク］
上記のようなファイル転送をＮ回行うと、図１１に示すように、ネットワーク上には、オリジナルファイル以外に、１２個８種類のメタデータブロックがキャッシュファイルとして存在するものとする。
【００９１】
［ファイル転送Ｎ回後に一部のノードが離脱したケース］
図１２は、ファイル転送Ｎ回後に、オリジナルノードＯ１とキャッシュノードＣ６とかネットワークから離脱した場合を示している。なお、ノード離脱は、コンピュータの電源ＯＦＦや本プログラムのアンインストール等によって発生する。
ノードＯ１，Ｃ６の離脱後であっても、ネットワーク上には、１０個６種類のメタデータブロックｍ７，ｍ８，ｍ１４，ｍ１５，ｍ１６，ｍ１７がキャッシュブロックとして存在する。
【００９２】
図１２の状態でも、オリジナルファイル復元（復号）に必要なメタデータブロック種類数（６種類）は足りているので、新たにファイルを取得しようとするノード（検索ノードＳ９）が現れても、ファイル取得可能である。
つまり、本実施形態では、オリジナルファイルが、メタデータ化されており、任意の６個（６種類）のメタデータブロックを取得できれば、オリジナルファイルを復元でき、ネットワークのファイル保有効率が高まっている。
【００９３】
［比較例］
以下、本実施形態のネットワークにおけるファイル保有効率が高いことを、図１３〜図１７に示す比較例との対比において説明する。比較例では、オリジナルファイルをメタデータ化せずにファイル転送を行う。つまり、この比較例では、メタデータブロックではなく、オリジナルファイルを分割した５個のオリジナルブロックｂ１〜ｂ５が転送されるものとする。
また、キャッシュノードにキャッシュブロックとして保存されるのは、オリジナルブロックである。
【００９４】
比較例では、ファイルが必要な検索ノードは、上記ブロックｂ１〜ｂ５の５個全てのブロックを揃える必要がある。すなわち、ブロックｂ１〜ｂ５は、オリジナルファイルを復元する上で、すべて必須のブロックである。
なお、比較例において、転送ルール等、その他の点については、本実施形態のネットワークと同様である。
【００９５】
［比較例における１回目のファイル転送］
図１３は、１回目のファイル転送を示している。ノードＮ１は、ブロックｂ１〜ｂ５に分割されるオリジナルファイルを公開しており、オリジナルノードＯ１となっている。ファイルを取得しようとするノードＮ９は検索ノードＳ９となり、ネットワークに対してファイル要求をする。このとき、検索ノード９が要求するファイルについてのキャッシュノードが存在しないので、オリジナルノードＯ１にファイルを要求する。
【００９６】
オリジナルノードＯ１は、オリジナルブロックｂ１〜ｂ５を送信する。このとき、ノードＮ４が中継ノードとなり、オリジナルノードＯ１からのデータを検索ノードＳ９へ転送する。
転送後の中継ノードＮ４は、中継した６個のオリジナルブロックｍ１〜ｍ６のうち、２つのブロックｂ１，ｂ５をキャッシュブロックとして保存し、キャッシュノードＣ４となる。
【００９７】
検索ノードＳ９は、５個のブロックｂ１〜ｂ５を受信することでオリジナルファイルを取得する。また、検索ノードＳ９は、ブロックｂ２，ｂ４をキャッシュブロックとして保存し、キャッシュノードＣ９となる。
【００９８】
［比較例における２回目のファイル転送］
図１４は、２回目のファイル転送を示している。ファイルを取得しようとするノードＮ１１は検索ノードＳ１１となり、ネットワークにファイルを要求する。ここでは、キャッシュノードＣ４，Ｃ９が存在するので、まず、検索ノードＳ１１は、これらのノードＣ４，Ｃ９から４個のブロックｂ１，ｂ２，ｂ４，ｂ５を取得する。
【００９９】
具体的には、キャッシュノードＣ４から、検索ノードＳ１１にキャッシュブロックであるブロックｂ１，ｂ５を送信する。このとき、ノードＮ５が中継ノードとなり、検索ノードＳ１１へ転送する。同時に、中継ノードＮ５は、中継したブロックｂ１，ｂ５をキャッシュブロックとして保存し、キャッシュノードＣ１５となる。
【０１００】
また、キャッシュノードＣ９から、検索ノードＳ１１にキャッシュブロックであるブロックｍ２，ｍ４を送信する。このとき、ノードＮ１０が中継ノードとなり、検索ノードＳ１１へ転送する。同時に、中継ノードＮ１０は、中継したメタデータブロックｂ２，ｂ４をキャッシュブロックとして保存し、キャッシュノードＣ１０となる。
【０１０１】
また、オリジナルノードＯ１は、足りないブロックｂ３を検索ノード１１へ転送する。このとき、ノードＮ５が中継ノードとなり、検索ノードＳ１１へ転送する。同時に、中継ノードＮ５は、今まで保持していたキャッシュブロックｂ１を破棄して、中継したブロックｂ３を保存する。
検索ノードＳ１１は、ｂ１〜ｂ５を全て受信した後、ブロックｂ１，ｂ３をキャッシュブロックとして保存し、キャッシュノード１１となる。
【０１０２】
図１５に示すように、比較例において、以上の２回目のファイル転送が終了すると、ネットワーク上には、１０個のキャッシュブロックが存在し、ｂ１〜ｂ５それぞれのブロックがいずれかのキャッシュノードに存在している。したがって、これ以降は、キャッシュノードからキャッシュブロックを取得するだけでオリジナルファイルが取得できるようになる。
【０１０３】
［比較例におけるファイル転送Ｎ回後のネットワーク］
比較例において上記のようなファイル転送をＮ回行うと、図１６に示すように、ネットワーク上には、オリジナルノードＯ１のオリジナルファイル以外に、１２個（５種類）のキャッシュファイルが存在するものとする。
【０１０４】
［比較例においてファイル転送Ｎ回後に一部のノードが離脱したケース］
図１７は、ファイル転送Ｎ回後に、オリジナルノードＯ１とキャッシュノードＣ６とかネットワークから離脱した場合を示している。
しかし、キャッシュノードＣ６しか保有していなかったブロックｂ５がネットワーク上に存在しない。つまり、ネットワーク上には、１０個ものキャッシュブロックがあっても、４種類のブロックｂ１〜ｂ４しかなく、検索ノードＳ９は、必要なブロックｂ１〜ｂ５全てを揃えることができない。したがって、このＰ２Ｐネットワークではもとのファイルを復元できない。
このように、比較例では、ブロックｂ１〜ｂ５全てが、ファイル復元に必須であり、キャッシュブロックが幾ら多く存在しても、１種類のキャッシュブロックが欠けるだけでファイル復元ができなくなる。
【０１０５】
比較例の図１７と本実施形態の図１２では、それぞれ計１０個のキャッシュブロックが存在するわけであるが、図１７ではオリジナルファイルを復元できず、図１２ではオリジナルファイルを復元できている。すなわち、本実施形態の図１２では、比較的少ない数のキャッシュブロックでファイルを復元でき、ネットワークにおけるファイル共有効率が高いといえる。
【０１０６】
また、比較例では、ネットワーク上に存在し得るキャッシュブロックの種類の最大数は、オリジナルファイルを分割して得られるオリジナルブロックの数（＝５個）に等しい。換言すると、オリジナルファイルを復元するのに必要な数よりも、ネットワーク上のキャッシュブロックの種類の方が多くなることはない。
これに対し、本実施形態では、メタデータブロックを生成する演算式を無数に生成可能であるため、ネットワーク上に存在し得るメタデータブロックの種類も無数となる。したがって、オリジナルファイルを復元するのに必要な数（種類）以上に、ネットワーク上のキャッシュブロックの種類が多くなる。また、個々のメタデータは、ファイル復元に必須的なものではなく任意的なものである。この結果、オリジナルノード又はキャッシュノードの一部がネットワークから離脱しても、オリジナルファイルを復元できる確率が非常に高くなる。
【０１０７】
また、比較例では、あるオリジナルファイルについてのオリジナルブロックの種類は限られており、上記例では５種類（＝分割数）しかない。したがって、多くのキャッシュノードが、キャッシュブロックを保持していたとしても、重複したブロックを保持するノードが多くなるだけである。
一方、本実施形態では、メタデータ化されているため、ブロックの種類は、事実上、無数となり、重複したブロックを保持する可能性が低くなる。本実施形態では、この点からもファイル共有効率が高い。
【０１０８】
以下、ノードにおける各機能について、さらに詳細に説明する。
【０１０９】
［オリジナルノードの処理の詳細］
以下、オリジナルノードの処理を図１８及び図３に基づいて説明する。
【０１１０】
［ステップＳ１１：オリジナルファイルの公開］
ユーザが公開しようとするファイルがオリジナルノードのオリジナルファイル記憶部１１（アップロードフォルダ）に置かれると、当該ファイル（オリジナルファイル）はネットワークに公開される（ステップＳ１１）。ファイルが公開されると、オリジナルノードは、そのファイルのファイル情報（キー情報）を作成する。ファイル情報は、ファイル名、ファイル識別子（ファイルのハッシュ値）、ファイルサイズ、オリジナルファイル位置情報（オリジナルノードのＩＰアドレスとポート番号）などが含まれる。
【０１１１】
なお、以下では、オリジナルファイルそのものを「ファイル本体」といい、ファイル本体と当該ファイル本体のファイル情報とをあわせて「オリジナルファイル」という。図１９（ａ）は、ファイル本体にファイル情報が付加されたオリジナルファイルを示している。オリジナルファイルがファイル情報を含んでいることで、ファイル転送のためのノード間の情報共有が容易となる。
【０１１２】
［ステップＳ１２，Ｓ１３，Ｓ１４：ファイル要求の待機とメタデータ生成］
オリジナルノードは、他のノード（検索ノード）から、ファイル（又はメタデータ）の要求を受信するまで待機し、ファイル要求を受け取ると（ステップＳ１２，Ｓ１３）、メタデータ生成処理を行う。
具体的には、ファイル要求は、Ｐ２Ｐネットワーク通信処理部（ファイル要求受信手段）２１によって受信され、ファイル要求を受けると、制御部２０によってメタデータ生成処理が開始される。
【０１１３】
なお、以下では、オリジナルファイルから生成されたメタデータそのものを「メタデータ本体」といい、メタデータ本体と、ファイル情報と、演算式情報とをあわせて「メタデータ」という。
【０１１４】
図１９（ｂ）は、ファイル情報及び演算式情報を含んだメタデータを示している。本実施形態のメタデータ生成部１２は、図１９（ａ）のオリジナルファイルから図１９（ｂ）のメタデータを生成する（ステップＳ１４）。
【０１１５】
本実施形態におけるメタデータ生成部１２におけるメタデータ生成ポリシーは次の通りである。まず、メタデータを生成するための演算式は、最低でも復元に必要な数（種類数）のメタデータ数に対応した数が必要とされる。復元に必要なメタデータ数は、［オリジナルブロック数×冗長度（例えば、オリジナルブロック数の１０５％程度）］以上として算出される。例えば、オリジナルブロック数が３個であれば、メタデータ生成部１２の演算式発生部１２ａは、４個（４種類）のメタデータを生成するために４個の演算式をランダムに決定する。
なお、冗長度は、複数の演算式からなる連立方程式を解いて、オリジナルブロックを復元できる値として適宜設定される。
【０１１６】
演算式発生部１２ａは、例えば、図２０に示す演算式ライブラリによって構成される。演算式ライブラリは、オリジナルファイルのファイルサイズと乱数の組みが引数として与えられると、必要な数の演算式をランダムに決定する。
例えば、オリジナルブロックのサイズが６４ＫＢとして設定されているときに、オリジナルファイルサイズとして１８０ＫＢが演算式ライブラリに与えられた場合を想定する。この場合、オリジナルブロック数は３個であり、これに冗長度（１０５％）を乗じて小数点以下を切り上げた整数値は４である。演算式ライブラリは、４個の演算式を引数である乱数に基づきランダムに決定する。生成される演算式は、例えば、図７に示すように、１又は複数のオリジナルブロック同士をＸＯＲ演算子で演算するものが好ましい。
【０１１７】
なお、演算式の数を決定するのに、上記では、オリジナルファイルサイズをライブラリに与えたが、オリジナルブロック数や必要な演算式数そのものを与えてもよく、演算式の数を決定することができる情報であれば特に限定されない。
また、ライブラリ自身が乱数を発生できる場合には、乱数はライブラリに対して与えられなくてもよい。
【０１１８】
メタデータ生成部１２のメタデータ演算部１２ｂは、ランダムに決定された演算式に従って、オリジナルブロック同士の演算を行って、メタデータ本体を算出する。
また、メタデータ生成部１２は、各メタデータ本体に、オリジナルファイルのファイル情報及び当該メタデータ本体生成に用いた演算式を示す演算式情報を、それぞれ付加して、メタデータｍ１〜ｍ４とする。
【０１１９】
前記演算式情報は、演算式そのものであってもよいし、演算式を特定するための識別子であってもよい。ここでは、演算式ライブラリでは、演算式とともに当該演算式を特定する識別子が生成されるため、その識別子が演算式情報としてメタデータに付加される。
なお、各ノードは、共通の演算式ライブラリを有しており、各ノードは、識別子を演算式ライブラリに与えることで、その識別子が特定する演算式を得ることができる（図２０参照）。
【０１２０】
［ステップＳ１５，Ｓ１６：メタデータ送出］
メタデータｍ１〜ｍ４が生成されると、メタデータ送信部１３は、個々のメタデータ（メタブロック）単位で、ファイル要求をした検索ノードに対して、ファイル送信を行う。
【０１２１】
［メタデータ数が指定された場合のメタデータ送出］
上記のようなファイル全体の要求ではなく、図９に示すメタデータブロックｍ９，ｍ１０の生成・転送のように、メタデータ数（種類数）の指定を伴うメタデータ要求を、オリジナルノードが検索ノードから受けた場合、メタデータ生成部１２は、指定数（２個）の演算式を生成し、２個のメタデータｍ９，ｍ１０を検索ノードに送信する。この場合、演算式ライブラリには、オリジナルファイルサイズではなく、指定数が与えられ、指定数に応じた数の演算式が生成される。
なお、メタデータ数の指定を伴うメタデータ要求はＰ２Ｐネットワーク通信処理部２１によって受信される。
【０１２２】
［メタデータのランダム性］
演算式ライブラリからなる演算式発生部１２ａは、ファイル要求又は数の指定を伴うメタデータ要求を受ける度に、乱数を用いて演算式を決定するため、ファイル要求又は数の指定を伴うメタデータ要求を受ける度に、実質的に異なるメタデータを生成することができる。したがって、同じオリジナルファイルから様々なメタデータが生成・送信されることになるため、ネットワーク上のメタデータの種類が無数に増える。
つまり、複数回のファイル転送が行われると、オリジナルファイル復元に必要な種類数以上の数（種類数）のメタデータがネットワーク上に存在する状態が容易に得られる。
【０１２３】
なお、オリジナルノードは、あるオリジナルファイルについてのメタデータ生成が２回目以上である場合については、過去に生成したメタデータの種類及び／又は当該オリジナルファイルのメタデータであってネットワーク上に現在存在するものの種類を確認するのが好ましい。万が一、新たに生成したメタデータの種類と、過去に生成したメタデータの種類及び／又は当該オリジナルファイルのメタデータであってネットワーク上に現在存在するものの種類が重複した場合には、重複するメタデータは送信せず、重複しないメタデータを再生成することによりメタデータを所定数確保して送信することができる。
また、メタデータ数を伴うメタデータ要求の場合には、オリジナルノードが、検索ノードが既に取得したメタデータの種類を示す情報を検索ノードから受け取り、検索ノードが有しているメタデータの種類と重複しないメタデータを必要数送信する。
【０１２４】
［中継ノードの処理の詳細］
以下、中継ノードの処理を、図２１及び図４に基づいて説明する。
【０１２５】
［ステップＳ２１〜Ｓ２３：中継ファイルの受信］
中継ノードは、メタデータを中継して、その後、キャッシュノードとして機能するものである。
まず、他のノードから別の他のノードへのファイル転送のためにメタデータ転送中継の必要があることがＰ２Ｐネットワーク通信処理部によって判明すると（ステップＳ２１，Ｓ２２）、中継ノードのメタデータ受信部３１（メタデータ受信部４１）は、メタデータを、ブロック単位で受信する（ステップＳ２３）。
【０１２６】
［ステップＳ２４：キャッシュブロックの保存］
中継ノードのメタデータ記憶部３２（メタデータ記憶部４２）は、一定数のブロックをキャッシュブロックとして記憶可能である。ここでは、メタデータ記憶部３２は、１つのオリジナルファイルにつき、２個（ファイル復元に必要なメタデータ数より少ない数）のメタデータブロックを記憶可能であるものとする。
中継ノードは、中継のために受信したメタデータブロックのうち、ランダムに決定される数（最大でメタデータ記憶部３２において記憶可能な数）のメタデータブロックをメタデータ記憶部３２に保存する。
【０１２７】
［ステップＳ２５，Ｓ２６：メタデータの送信］
また、中継ノードのメタデータ送信部３３は、中継のために受信したメタデータをすべて、他のノードに送信する。
【０１２８】
［ステップＳ２７：中継ノードのキャッシュノード化］
中継が終了すると、中継ノードは、メタデータ記憶部３２（メタデータ記憶部４２：キャッシュフォルダ）に保存されているメタデータをキャッシュブロックとしてネットワーク上に公開する。
例えば、中継ノードが、４個のメタデータ（メタデータブロック）ｍ１〜ｍ４を受信し、それらのブロックｍ１〜ｍ４のうち、制御部２０によってランダムに選択される２個のブロックｍ１，ｍ４がメタデータ記憶部３２（メタデータ記憶部４２）に保存されている状態を図２２に示す。
【０１２９】
図２２に示すように、メタデータｍ１，ｍ４がキャッシュブロックとして公開される際には、メタブロックｍ１，ｍ４には、メタデータ位置情報等のメタデータ情報が付加される。メタデータ位置情報は、当該メタブロックｍ１，ｍ４のネットワーク上の位置を示しており、当該キャッシュノードのＩＰアドレス及びポート番号によって構成されている。
【０１３０】
ファイル情報及びメタデータ位置情報（メタデータ情報）並びに必要であれば演算式情報は、キー情報として、ネットワーク上の隣接ノード間で定期的に交換される。したがって、キー情報は、次第にネットワークに拡散して行く。つまり、各ノードは、キー情報を他ノードへ通知する機能を有するとともに、キー情報を他ノードから受信する機能を有する。また、これらの機能は、中継ノード固有の機能ではなく、他の種類のノードでも機能し得るものである。
【０１３１】
なお、キー情報は、各ノードのキーテーブル（キー記憶部；図示省略）に蓄積される。
この結果、各ノードは、ネットワーク上のどのノードが、どのようなオリジナルファイル又はどのようなメタデータを有しているか把握することができる。なお、キー情報の交換は、Ｐ２Ｐネットワーク通信処理部２１によって行われる。
【０１３２】
［メタデータのキャッシュブロック化のポリシーの例］
制御部２０は、例えば、下記のポリシーに従って、キャッシュブロックとするメタデータを保存する。
【０１３３】
［ポリシー１：メタデータの新規保存］
メタデータ記憶部３２（メタデータ記憶部）が、あるオリジナルファイルについてのメタデータをキャッシュブロックとして有していない場合、キャッシュブロックとして保存されるメタデータ数は、最大で、メタデータ記憶部３２に記憶可能なメタデータ数に等しい。
中継したメタデータの一部又は全部が、キャッシュブロックとして保存され、中継メタデータの一部が保存される場合、保存されるメタデータは、ランダムに決定される（図８，図９参照）。
【０１３４】
［ポリシー２：メタデータの上書き］
メタデータ記憶部３２（メタデータ記憶部）が、あるオリジナルファイルについてのメタデータをキャッシュブロックとして有している場合、メタデータ記憶部３２に保存されているメタデータが、中継したメタデータで置き換えられる（図９，図１０参照）。
メタデータの置き換えは、メタデータ記憶部３２のメタデータ全てについて行ってもよいが、図９，１０のように、中継したメタデータの一部のメタデータで、メタデータ記憶部３２に保存されているキャッシュブロックの一部を置き換えるのが好ましい。
【０１３５】
また、制御部２０は、メタデータ記憶部３２に既に記憶されているメタデータのうち、どのメタデータに中継したメタデータを上書きするか、すなわち、メタデータ記憶部３２に既に記憶されているメタデータのうち、どのメタデータを破棄するかを選択する。
破棄するメタデータは制御部２０がランダムに決定してもよいが、他のキャッシュノードも保有する種類のメタデータが優先的に破棄対象となるのが好ましい。複数のキャッシュノードが保有するメタデータを優先的に破棄することで、ネットワーク中のメタデータの多様性が得やすくなる。
なお、各ノードは、Ｐ２Ｐネットワーク通信処理部２１によって、どのキャッシュノードが、どのオリジナルファイルの、どのような種類（演算式によって決まるメタデータの種類）のメタデータを有しているか把握できる。すなわち、Ｐ２Ｐネットワーク通信処理部２１は、メタデータの種類を他のノードから取得する手段であり、メタデータの種類を他のノードへ報知する手段でもある。
【０１３６】
また、キャッシュノードが、メタデータを上書きする場合であっても、他のキャッシュノードが保有していない種類については破棄対象としないことで、隣接する他のキャッシュノードが保有するキャッシュブロック（メタデータ）とは異なる種類のメタブロックが、自己のメタデータ記憶部３２（メタデータ記憶部４２）中に、少なくとも１つ含まれるようにすることができる。
なお、上記ポリシーで決定される破棄対象となるメタデータがない場合には、強制的にいずれかのメタデータを破棄対象として決定してもよいし、メタデータの上書き保存を行わなくてもよい。
【０１３７】
［ポリシー３：保存するメタデータの決定方法］
制御部２０は、隣接する他のキャッシュノードが保有するキャッシュブロック（メタデータ）とは、できるだけ種類の異なるメタブロックが、自己のメタデータ記憶部３２（メタデータ記憶部４２）中に含まれるように、保存すべきメタブロックを決定する。
【０１３８】
例えば、キャッシュノードの制御部２０が中継したメタデータを保存する場合、他のキャッシュノードが保有するメタデータの種類と中継のために受信したメタデータの種類とを対比して、中継のために受信したメタデータの中から、他のキャッシュノード（中継したメタデータの送信元を除く）が保有していないか、又は保有するキャッシュノード数が所定数よりも少ないメタデータを保存対象として選択する。
【０１３９】
上記のようにすることで、ネットワーク上でのメタデータブロックの種類の重複を低減し、ネットワークのファイル共有効率を高めることができる。
【０１４０】
［キャッシュノードの処理の詳細］
以下、キャッシュノードの処理を図２３及び図５に基づいて説明する。
【０１４１】
［ステップＳ３１，Ｓ３２：ファイル要求受信］
図２３に示すように、キャッシュノードは、メタデータをキャッシュブロックとして公開すると、他のノード（検索ノード）からのファイル要求を待つ（ステップＳ３１）。
【０１４２】
［ステップＳ３３〜Ｓ３６：メタデータ送信］
Ｐ２Ｐネットワーク通信処理部２１が、検索ノードからのファイル要求を受信すると（ステップＳ３２）、制御部２０は、メタデータ記憶部４２がキャッシュブロックを有しているか否かを確認する（ステップＳ３３）。メタデータ記憶部４２にキャッシュブロックがある場合、そのキャッシュブロックが、検索ノードが要求しているファイルのメタデータであるか否かを判断する（ステップＳ３４）。
キャッシュノードが保有するキャッシュブロックが、検索ノードが要求しているものに合致すれば、そのキャッシュブロックがメタデータ送信部４３によって、検索ノードに対して送信される（ステップＳ３５，Ｓ３６）。
なお、キャッシュノードが、検索ノードが、メタデータの種類の指定を伴うメタデータ要求を受けた場合には、要求された種類のメタデータを保有していれば、それを送信する。
【０１４３】
また、検索ノードは、既に持っているメタデータの演算式情報（不要メタデータ情報）と共にファイル要求をする場合がある。この場合、メタデータ記憶部４２に検索ノードが要求するファイルのメタデータがあっても、検索ノードが既に持っているメタデータと重複する場合には、制御部は、そのメタデータは、検索ノードが要求しているものに合致しないと判断して、当該メタデータを送信しない。
一方、メタデータが重複していなければ、キャッシュノードは、メタデータ記憶部４２のメタデータを検索ノードへ送信する。
【０１４４】
［検索ノードの処理の詳細］
以下、検索ノードの処理を図２３及び図５に基づいて説明する。
【０１４５】
［ステップＳ４１，Ｓ４２：ファイル要求と検索］
検索ノードにおいて、ユーザ等からファイル要求の処理がなされると（ステップＳ４１）、検索ノードのＰ２Ｐネットワーク通信処理部２１は、ネットワークからファイルを取得するためにキャッシュブロック又はオリジナルファイルを探索するクエリを送信する（ステップＳ４２）。クエリは、各ノード間で転送され、各ノードのキーテーブルを参照することで、取得したいファイルのメタデータをキャッシュブロックとして有するキャッシュノードの位置情報及びオリジナルファイルの位置情報を取得する。クエリは、ノード間を何度か転送された後、検索ノードに送り返される。
【０１４６】
なお、キャッシュノードの位置情報は、メタデータのメタデータ位置情報から取得できる。このように、クエリは、各ノードにあるメタデータ又はオリジナルファイルのキー情報（付加情報）を収集するものということができる。
また、クエリの取得したキー情報には、取得したいファイルのファイルサイズも含まれているため、検索ノードは、取得したいファイルのファイルサイズも把握できる。
【０１４７】
［ステップＳ４３〜Ｓ４９：必要数のメタデータの取得］
検索ノードの制御部２０は、戻ってきたクエリに基づいて、取得したいファイルのメタデータをキャッシュブロックとして保有しているキャッシュノードがあるか否かを判断する（ステップＳ４３）。
必要なメタデータを保有するキャッシュノードがある場合、検索ノードは、それらのノードのうち、最も近いキャッシュノードに対して、キャッシュブロックを要求し（ステップＳ４４）、メタデータ受信部５１がメタデータブロックを受信し（ステップＳ４５）、メタデータ記憶部５２に記憶する。
【０１４８】
また、検索ノードは、戻ってきたクエリのキー情報から、取得したいオリジナルファイルのファイルサイズを取得する。なお、キー情報に、オリジナルブロック数又はファイル復元に必要なメタブロック種類数が含まれている場合には、これらの情報を検索ノードが取得してもよい。
オリジナルファイルサイズ、オリジナルブロック数、及び復元に必要なメタブロック種類数は、いずれも、復元に必要なメタブロック種類数を特定するために用いられる情報となり得るからである。
【０１４９】
キャッシュノードからキャッシュブロックが送られてくると、検索ノードは、そのキャッシュブロック（メタデータ）が、既に保有しているメタデータと異なる種類のものか否か（演算式が異なるか否か）を判定し、種類が異なれば、取得したキャッシュブロックを、復元に用いるメタデータブロックとし、同じ種類であれば取得したキャッシュブロックを破棄する。
【０１５０】
検索ノードは、以上のキャッシュブロック取得処理を、オリジナルファイル復元に必要なメタブロック種類数（例えば、４種類又はそれ以上）が揃うまで繰り返す。
つまり、検索ノードに（論理パスでみて）近いキャッシュノードから順に、キャッシュブロックを取得して行き（ステップＳ４４）、必要個数（種類数）のメタデータブロックが揃うまで、徐々に遠いキャッシュノードにキャッシュブロックを要求する（ステップＳ４７）。
なお、復元に必要なメタブロック種類数は、検索ノードに戻ってきたキーから、オリジナルファイルサイズを取得し、検索ノードが、所定の冗長度（例えば１０５％）を乗じることで算出される。
【０１５１】
ステップＳ４４〜Ｓ４７の処理の結果、必要個数のメタデータブロックが揃っていないのに、取得しようとするオリジナルファイルのメタデータをキャッシュブロックとして保有するキャッシュノードが無くなった場合、検索ノードは、戻ってきたクエリに基づき、オリジナルノードの存在を判定する（ステップＳ４８）。また、最初からキャッシュノードが存在しない場合（ステップＳ４３）も、オリジナルノードの存在を判定する（ステップＳ４８）。
ステップＳ４８で、オリジナルノードが存在しないと判定された場合、必要個数のメタデータブロックが揃っていないので、ファイル取得は失敗となる（ステップＳ５０）。
【０１５２】
ステップＳ４８でオリジナルノードが存在すると判定された場合、検索ノードは、オリジナルノードに対し、不足数（不足種類数）分のメタデータブロックを要求し、取得する（ステップＳ４９）。
なお、オリジナルノードが、メタデータ数（不足種類数）の指定を伴うメタデータ要求を受けた場合の処理は、前述の[メタデータ数が指定された場合のメタデータ送出］で説明したとおりである。
【０１５３】
［ステップＳ５１〜Ｓ５５：ファイル復元］
ステップＳ４６又はＳ４９の処理で、検索ノードにファイル復元に必要なメタデータブロック数が揃うと（ステップＳ５１）、メタデータの復号化を行う（ステップＳ５２）。  まず、検索ノードは、それらのメタデータに含まれる演算式情報（演算式識別子）に基づいて、演算式を得る。すなわち、検索ノードのメタデータ復号部５３の演算式発生部５３ａは、図２０に示す演算式ライブラリを用いて、取得したメタデータの演算式識別子から演算式を得る。
【０１５４】
そして、メタデータ復号演算部５３ｂは、所定数の演算式及びメタデータから、復号化の演算を行う。復号化は、複数の演算式及びメタブロックの連立方程式を解くことで、オリジナルブロックを求める演算によって行われる。
【０１５５】
ステップＳ５２の復号化に失敗した場合、すなわち、集めたメタデータ数（種類数）が、復元に十分な数でなかった場合、追加メタデータブロックの取得を行う（ステップＳ５４）。追加ブロック取得は、ステップＳ４３〜Ｓ４９の処理を再度行うことにより実現される。
【０１５６】
復号化に成功し、オリジナルブロック（オリジナルファイル）を復元できたら、ファイル取得が完了する（ステップＳ５５）。復元したオリジナルファイルは、オリジナルデータ記憶部５４に保存される。復元したオリジナルファイル（ファイル本体及びファイル情報）そのものをネットワークに公開してもよいが、本実施形態では、以下のようにキャッシュブロックとして公開する。
【０１５７】
［ステップＳ５６，Ｓ５７：メタデータの再生成］
検索ノードのメタデータ生成部５５は、オリジナルノードのメタデータ生成部１２と同様の機能を有しており、オリジナルデータ記憶部５４のオリジナルファイルから、新たにメタデータを生成する。
すなわち、メタデータ生成部５５の演算式発生部５５ａは、演算式ライブラリを用いて、乱数によって、受信したメタデータの演算式とは異なる演算式を生成する。ここで、生成する演算式数は、メタデータ記憶部５６においてキャッシュブロックとして保存するブロック数に相当する数（例えば、２個）となる。
なお、生成した演算式と受信したメタデータの演算式とが重複した場合には、演算式を再生成し、受信したメタデータの演算式とは重複しないようにするのが好ましい。また、ネットワーク上で保存されているメタデータの演算式と、生成した演算式とを対比して、両者が重複しないようにしてもよい。
【０１５８】
生成された演算式とオリジナルファイル（ファイル本体）を分割したオリジナルブロックとから、メタデータ演算部５５ｂはメタデータを生成する演算を行い（ステップＳ５６）、キャッシュブロックとしてメタデータ記憶部５６に保存し、ネットワークに公開する（ステップＳ５７）。すなわち、検索ノードは、ファイル取得後、キャッシュノードとなる。
【０１５９】
なお、本発明は、上記実施形態に限定されるものではなく、様々な変形が可能である。例えば、オリジナルノードがメタデータ送信後にキャッシュノードとして機能してもよい。
【図面の簡単な説明】
【０１６０】
【図１】ノードと論理パスで示したＰ２Ｐファイル共有ネットワークシステムの概略図である。
【図２】ノードコンピュータのブロック図である。
【図３】オリジナルノードの機能ブロック図である。
【図４】中継ノードの機能ブロック図である。
【図５】キャッシュノードの機能ブロック図である。
【図６】検索ノードの機能ブロック図である。
【図７】オリジナルファイルからメタデータを生成する方法を示す図である。
【図８】本実施形態のネットワークにおけるファイル転送（第１回目の転送）を示す図である。
【図９】本実施形態のネットワークにおけるファイル転送（第２回目の転送）を示す図である。
【図１０】本実施形態のネットワークにおける第２回目のファイル転送終了後のキャッシュノードの状態を示す図である。
【図１１】本実施形態のネットワークにおける第Ｎ回目のファイル転送終了後のキャッシュノードの状態を示す図である。
【図１２】本実施形態のネットワークにおいて、第Ｎ回目のファイル転送終了後、ノードＯ１，Ｃ６がネットワークから脱落した状態を示す図である。
【図１３】比較例のネットワークにおけるファイル転送（第１回目の転送）を示す図である。
【図１４】比較例のネットワークにおけるファイル転送（第２回目の転送）を示す図である。
【図１５】比較例のネットワークにおける第２回目のファイル転送終了後のキャッシュノードの状態を示す図である。
【図１６】比較例のネットワークにおける第Ｎ回目のファイル転送終了後のキャッシュノードの状態を示す図である。
【図１７】比較例のネットワークにおいて、第Ｎ回目のファイル転送終了後、ノードＯ１，Ｃ６がネットワークから脱落した状態を示す図である。
【図１８】オリジナルノードの処理手順を示すフローチャートである。
【図１９】オリジナルファイル及びメタデータの詳細なデータ構造を示す図である。
【図２０】演算式ライブラリを示す図である。
【図２１】中継ノードの処理手順を示すフローチャートである。
【図２２】キャッシュノードのメタデータ記憶部を示す図である。
【図２３】キャッシュノードの処理手順を示すフローチャートである。
【図２４】検索ノードの処理手順を示すフローチャートである。
【符号の説明】
【０１６１】
１１  オリジナルファイル記憶部
１２  メタデータ生成部
１２ａ  演算式発生部
１２ｂ  メタデータ演算部
１３  メタデータ送信部
２０  制御部
２１  Ｐ２Ｐネットワーク通信処理部
３１  メタデータ受信部
３２  メタデータ記憶部
３３  メタデータ送信部
４１  メタデータ受信部
４２  メタデータ記憶部
４３  メタデータ送信部
５１  メタデータ受信部
５３  メタデータ復号部
５５  メタデータ生成部
５６  メタデータ記憶部
【図１】
2008176615.tif 000003
【図２】
2008176615.tif 000004
【図３】
2008176615.tif 000005
【図４】
2008176615.tif 000006
【図５】
2008176615.tif 000007
【図６】
2008176615.tif 000008
【図７】
2008176615.tif 000009
【図８】
2008176615.tif 000010
【図９】
2008176615.tif 000011
【図１０】
2008176615.tif 000012
【図１１】
2008176615.tif 000013
【図１２】
2008176615.tif 000014
【図１３】
2008176615.tif 000015
【図１４】
2008176615.tif 000016
【図１５】
2008176615.tif 000017
【図１６】
2008176615.tif 000018
【図１７】
2008176615.tif 000019
【図１８】
2008176615.tif 000020
【図１９】
2008176615.tif 000021
【図２０】
2008176615.tif 000022
【図２１】
2008176615.tif 000023
【図２２】
2008176615.tif 000024
【図２３】
2008176615.tif 000025
【図２４】
2008176615.tif 000026