(57)【要約】【課題】ソフトウェア提供業者が、ピアツーピア環境を利用してさまざまな異なる受信者にソフトウェアアップデートを配布する能力を提供すること。【解決手段】ここに記載される本発明を使用して、これらに限定しないが、オペレーティングソフトウェア、プログラミングソフトウェア、アンチウィルスソフトウェア、データベースソフトウェア等を含む、どのようなソフトウェアでも更新することができる。セキュリティが高められたピアツーピア環境の使用により、各ピアについてのダウンロード時間を最小にし、また、受信者（ピア）がアップデートを取得できるようにするためにソフトウェア提供業者によって提供されなければならない送出帯域幅の量を減らすことができる。【選択図】図１
2006172472.tif 000002
【特許請求の範囲】
【請求項１】
第１のコンピューティングデバイスを更新する方法であって、
利用可能なアップデートのリストを受け取るステップと、
前記利用可能なアップデートのリストから必要なアップデートを判定するステップであって、該必要なアップデートは、複数の部分（ピース）に区分されるステップと、
前記複数の部分（ピース）それぞれにつきその部分（ピース）をダウンロードできるようにしている少なくとも１つのコンピューティングデバイスを識別するコンピューティングデバイスのリストを受け取るステップと、
前記複数のコンピューティングデバイスから前記複数の部分（ピース）それぞれをダウンロードするステップであって、前記複数の部分（ピース）の少なくとも２つは、異なるコンピューティングデバイスからダウンロードされるステップと、
前記ダウンロードされた部分（ピース）を利用して、前記第１のコンピューティングデバイスのソフトウェアを更新するステップと
を備えることを特徴とする方法。
【請求項２】
前記必要なアップデートのアップデートオプションのリストを受け取るステップであって、各該アップデートオプションは、複数の部分に区分されるステップと、
前記アップデートオプションのリストからアップデートオプションを選択するステップと
をさらに備え、
前記コンピューティングデバイスのリストを受け取るステップは、前記選択されたアップデートオプションそれぞれについて、少なくとも１つのコンピューティングデバイスを識別するコンピューティングデバイスのリストを受け取るステップを含むことを特徴とする請求項１に記載の方法。
【請求項３】
前記アップデートオプションリストは、前記必要なアップデートについて、フルパッチと少なくとも１つの細部パッチを含むことを特徴とする請求項２に記載の方法。
【請求項４】
前記細部パッチは、ファイルのファイル名と予定ハッシュ値を含むことを特徴とする請求項３に記載の方法。
【請求項５】
前記必要なアップデートを判定するステップは、前記第１のコンピューティングデバイスをスキャンしてその現在の状態を判定し、前記現在の状態を前記利用可能アップデートのリストと比較することを含むことを特徴とする請求項１に記載の方法。
【請求項６】
前記コンピューティングデバイスのリストは、前記複数の部分の少なくとも１つについて、複数のコンピューティングデバイスの識別を含むことを特徴とする請求項１に記載の方法。
【請求項７】
前記コンピューティングデバイスは、インターネットプロトコルアドレスで識別されることを特徴とする請求項１に記載の方法。
【請求項８】
前記ソフトウェアを更新するステップは、
前記ダウンロードされた部分を組み合わせてパッチにするステップと
前記パッチをインストールするステップと
を含むことを特徴とする請求項１に記載の方法。
【請求項９】
前記ダウンロードされた各部分は、前記部分のハッシュに基づいて確認されることを特徴とする請求項１に記載の方法。
【請求項１０】
前記ダウンロードされた部分の識別を提供するステップと、
前記識別されたダウンロード部分を他のコンピューティングデバイスと共有するステップと
をさらに備えることを特徴とする請求項１に記載の方法。
【請求項１１】
前記ダウンロードされた部分の識別は、ダウンロードされた各部分のハッシュ値を含むことを特徴とする請求項１０に記載の方法。
【請求項１２】
所定の時点には、前記識別されたダウンロード部分は共有されないていないことを特徴とする請求項１に記載の方法。
【請求項１３】
ソフトウェアアップデートをダウンロードするためにクライアントにピアリストを提供する方法であって、
利用可能なアップデートを識別するリストを送信するステップと、
前記利用可能なアップデートについてのピアリスト要求を受け取るステップと、
複数のピアを識別するピアリストを生成するステップであって、識別される各ピアは、前記利用可能なアップデートの少なくとも一部分をダウンロードできるようにしているステップと、
前記ピアリストを送信するステップと
を備えることを特徴とする方法。
【請求項１４】
前記利用可能なアップデートを識別する前記リストは、複数の利用可能なアップデートを識別することを特徴とする請求項１３に記載の方法。
【請求項１５】
前記リストは、前記利用可能なアップデートについて、複数のアップデートオプションを識別することを特徴とする請求項１３に記載の方法。
【請求項１６】
前記複数のアップデートオプションは、フルパッチと少なくとも１つの細部パッチを含むことを特徴とする請求項１５に記載の方法。
【請求項１７】
前記利用可能なアップデートを識別するリストを送信するのに応答して、前記利用可能なアップデートのアップデートオプションの要求を受け取るステップと、
前記利用可能なアップデートについての複数のアップデートオプションを識別するリストを生成するステップと、
複数のアップデートオプションを識別する前記リストを送信するステップと
をさらに備えることを特徴とする請求項１３に記載の方法。
【請求項１８】
前記ピアリスト要求を受け取るステップは、
前記複数のアップデートオプションの１つについてのピアリスト要求を受け取るステップ
を含むことを特徴とする請求項１７に記載の方法。
【請求項１９】
前記利用可能なアップデートのキャッシュされた部分の識別を受け取るステップと、
前記利用可能アップデートのマスタピアリストを更新するステップと
をさらに備えることを特徴とする請求項１３に記載の方法。
【請求項２０】
前記利用可能なアップデートは、複数の部分に分割され、前記ピアリストは、前記複数の部分それぞれにつき少なくとも１つのピアを識別することを特徴とする請求項１３に記載の方法。
【請求項２１】
前記識別されるピアの１つはホストコンピュータであることを特徴とする請求項２０に記載の方法。
【請求項２２】
アップデートを取得する方法を行うコンピュータ実行可能プログラムを含むコンピュータ可読媒体を有するコンピュータシステムにおいて、前記方法は、
利用可能なアップデートのリストを受け取るステップと、
前記利用可能アップデートのリストから必要なアップデートを識別するステップと、
前記必要なアップデートのピアリストを要求するステップと、
前記必要なアップデートのピアリストを受け取るステップであって、前記ピアリストは、前記必要なアップデートの複数の部分を識別し、各部分につき、その部分をダウンロードできるようにしているコンピューティングデバイスを識別するステップと、
前記識別されたコンピューティングデバイスから前記各部分をダウンロードするステップと
を備えることを特徴とするコンピュータシステム。
【請求項２３】
前記ピアリストは、前記複数の部分それぞれにつき、複数の二次分割部分を識別し、各二次分割部分につき、その二次分割部分をダウンロードできるようにしているコンピューティングデバイスを識別することを特徴とする請求項２２に記載のコンピュータシステム。
【請求項２４】
前記ピアリストは、前記複数の二次分割部分それぞれにつき、複数の三次分割部分を識別し、各三次分割部分につき、その三次分割部分をダウンロードできるようにしているコンピューティングデバイスを識別することを特徴とする請求項２３に記載のコンピュータシステム。
【請求項２５】
前記ピアリストは、各部分のハッシュ値を識別することを特徴とする請求項２２に記載のコンピュータシステム。
【請求項２６】
前記ダウンロードするステップは、
前記ダウンロードされた部分のハッシュ値を計算して第２のハッシュ値を得るステップと、
前記ピアリストの第１のハッシュ値と前記第２のハッシュ値を比較して、前記ダウンロードされた部分の有効性を確認するステップと
を含むことを特徴とする請求項２５に記載のコンピュータシステム。
【請求項２７】
前記ダウンロードされた部分それぞれを組み合わせるステップと、
前記アップデートをインストールするステップと
をさらに備えることを特徴とする請求項２２に記載のコンピュータシステム。
【請求項２８】
前記ピアリストは、前記アップデートの第１のハッシュ値を含み、前記方法はさらに、
前記組み合わせられた部分のハッシュ値を計算して第２のハッシュ値を得るステップと、
前記第１のハッシュ値と前記第２のハッシュ値を比較して前記アップデートの有効性を確認するステップと
を含むことを特徴とする請求項２７に記載のコンピュータシステム。
【請求項２９】
前記ダウンロードされた部分の少なくとも１つをキャッシュに記憶するステップと、
前記キャッシュされた部分の識別を送信するステップと、
前記キャッシュされた部分をダウンロードに供するステップと
をさらに備えることを特徴とする請求項２２に記載のコンピュータシステム。
【請求項３０】
前記識別されたコンピューティングデバイスから前記部分それぞれをダウンロードするステップは、
ダウンロードされる部分の真正性を確認するステップ
を含むことを特徴とする請求項２２に記載のコンピュータシステム。
【請求項３１】
前記部分それぞれをダウンロードするステップは、
ダウンロードする部分を無作為に選択するステップと、
前記部分をダウンロードするコンピューティングデバイスを無作為に選択するステップと
を含むことを特徴とする請求項２２に記載のコンピュータシステム。
【請求項３２】
前記部分それぞれをダウンロードするステップは、
その部分をダウンロードできるようにしている必要最小限のコンピューティングデバイスを有する部分を識別するステップと、
その部分をダウンロードできるようにしている必要最小限のコンピューティングデバイスを有する部分をダウンロードするステップと
を含むことを特徴とする請求項２２に記載のコンピュータシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般にはコンピュータのアップデートに関し、詳細には、ピアツーピアのネットワーク環境を利用してアップデート（更新）を取得し、インストールするシステムおよび方法に関する。
【背景技術】
【０００２】
コンピュータ、特にコンピュータソフトウェアは、ユーザがインターネットなどのネットワークを介してソフトウェア提供業者などのホストからソフトウェアパッチをダウンロードすることによってしばしば更新される。現在は、１つの供給源からパッチ全体がダウンロードされ、ダウンロードを行ったマシンにインストールされて、ソフトウェアを最新の状態に更新する。この技術は実際に用いられているが、いくつかの欠点がある。
【０００３】
第１に、パッチをダウンロード可能な状態にするソフトウェア提供業者は、複数の顧客が同時にアップデートをダウンロードできるように、十分な量の送出帯域幅（egress bandwidth；送信帯域幅ともいう）を提供しなければならない。多数の顧客を抱えるソフトウェア提供業者の場合、そのような送出帯域幅は、非常に高コストになる可能性がある。
【０００４】
第２に、顧客は、パッチをインストールし、ソフトウェアを更新する前に、１つの供給源からパッチ全体をダウンロードしなければならない。これは、サイズの小さいパッチには許容できるが、大きなパッチの場合は、１つの供給源からパッチ全体をダウンロードするのに必要とされる時間が、許容できない長さになる可能性がある。第３に、提供されるソフトウェアが、ダウンロードに十分な帯域幅を利用できるようにしていない場合（特にセキュリティアップデートなどの優先度の高いパッチが公開される場合は難しく、高コストになる）、顧客は、パッチのダウンロードを一時的に妨げられる可能性がある。
【０００５】
ピアツーピア（peer to peer）ネットワーキングの近年の進歩で、複数のピアから大きなファイルの色々な部分をダウンロードする能力がもたらされている。一例として、図１に、特定のファイルをダウンロードするための典型的なピアツーピア環境のブロック図を示す。特定のファイルをダウンロードするために、クライアント１０１は、ホスト１０３にその特定のファイルを要求する。それに応答して、ホストは、それら要求されたファイルの様々な部分をダウンロードできるようにしている複数のピアを識別するピアリストを送信する。例えば、１つのビデオファイルを複数の部分（ピース）に細かく分割し、それらの部分をサブピース（sub-piece）に分割し、さらにそのサブピース（以後、「二次分割部分」と翻訳する）をサブサブピース（sub-sub-piece: 以後、「三次分割部分」と翻訳する）に分割することができる。以前に１つの供給源または複数の他のピアから、そのビデオファイルをダウンロードしている各ピアは、ファイル全体の三次分割部分の１つまたは複数を、クライアント１０１などの他のピアがダウンロードできる状態にすることができる。ホスト１０３からクライアント１０１に送信されたピアリストは、要求された特定のファイルの三次分割部分のそれぞれと、その三次分割部分をダウンロードに供させることを可能にする付随ピア（associated peer）とを同定する(identify)。
【０００６】
クライアント１０１は、ホスト１０３からピアリストを受け取ると、三次分割部分をダウンロードする、各三次分割部分に係わるピアを選択する。ピアを同定すると、クライアント１０１は、特定のファイルのすべての三次分割部分がダウンロードされるまで、選択したピアから各三次分割部分をダウンロードする。色々なピアから部分（ピース）をダウンロードすることにより、複数のダウンロードを同時に行うことができる。各三次分割部分がダウンロードされると、クライアント１０１は、その三次分割部分を、ダウンロードに供するピアにする（すなわちその三次分割部分を共有する）ことを希望するか否かを決定することができる。クライアントはその三次分割部分を共有することを決定する場合には、クライアント１０１は、自身が共有するのに異議がない三次分割部分をホスト１０３に対して明確にする。
【０００７】
図１に関して説明したようなピアツーピアの環境は、ビデオファイルなど、クライアントが要求する特定のファイルをダウンロードする能力を提供するが、クライアントが必要とする可能性のあるファイルを判定する技術は現在ない。例えば、ソフトウェアパッチのダウンロードから言及すると、パッチを要求する前に、クライアントは、どのアップデートが利用可能であるかだけでなく、そのクライアントが必要とするアップデートも知っていなければならない。さらに、その素材（material）がそのダウンロード元のコンピュータに完全に組み込まれる前に、ダウンロード元のコンピュータが、コンピュータ自身が共有しているものを明らかにすることによって、コンピュータが損なわれることから保護するセキュリティ機能が現在ない。さらに、クライアントがローカルのキャッシュスペースを解放（reclaim）する必要がある時に、クライアントのローカルキャッシュにある複数のパッチがソフトウェア提供業者（ソフトウエアプロバイダー）によって優先順位を付けられることができる方法は存在しない。
【発明の開示】
【発明が解決しようとする課題】
【０００８】
したがって、クライアントが必要とされるソフトウェアアップデートを特定し、ピアツーピア環境を利用してそのアップデートを安全にダウンロードすることを可能にするシステムおよび方法が必要とされる。
【課題を解決するための手段】
【０００９】
本発明の実施形態は、ソフトウェア提供業者が、ピアツーピア環境を利用していくつかのさまざまな顧客にソフトウェアアップデートを配布する能力を提供する。ここに記載される本発明を使用して、これらに限定しないが、オペレーティングソフトウェア、プログラミングソフトウェア、アンチウィルスソフトウェア、データベースソフトウェア等を含む、どのようなタイプのソフトウェアでも更新することができる。セキュリティが高められたピアツーピア環境の使用により、各ピアについてのダウンロード時間を最小にすることができ、また、クライアント（ピア）がアップデートを得られるようにするためにソフトウェア提供業者によって提供されなければならない送出帯域幅の量も減らすことができる。
【００１０】
本発明の第１の態様によれば、第１のコンピューティングデバイスを更新する方法が提供される。この方法は、利用可能なアップデートのリストを受け取り、そのリスト中にアップデートに必要なものがあるかどうかを判定する。アップデートする必要とされるものがある場合は、そのアップデートの部分（ピース）と、その部分（ピース）をそこから入手できるコンピューティングデバイスとを同定するコンピューティングデバイスリストを受け取る。そして、それらの部分（ピース）がコンピューティングデバイスからダウンロードされ、複数の部分の少なくとも２つは、異なるコンピューティングデバイスからダウンロードされる。その部分（ピース）がダウンロードされると、ダウンロードされた部分（ピース）を利用して第１のコンピューティングデバイスのソフトウェアが更新される。
【００１１】
本発明の別の態様によれば、ソフトウェアアップデートをダウンロードするためにクライアントにピアリストを提供する方法が提供される。この方法は、利用可能なアップデートを同定するリストを送信し、利用可能なアップデートについてのピアリスト要求を受け取る。それに応答して、複数のピアを識別するピアリストが生成され、識別される各ピアは、利用可能なアップデートの少なくとも一部分をダウンロードできるようにしている。そしてそのピアリストが送信される。
【００１２】
本発明の別の態様によれば、アップデートを取得する方法を行うコンピュータ実行可能プログラムを含むコンピュータ可読媒体を有するコンピュータシステムが提供される。コンピュータシステムは、利用可能なアップデートのリストを受け取り、利用可能アップデートのリストから必要なアップデートを識別する。次いで必要なアップデートについてのピアリストが要求され、受け取られる。受け取られたピアリストは、必要なアップデートの複数の部分（ピース）を識別し、各部分（ピース）につき、その部分（ピース）をダウンロードできるようにしている１つまたは複数のコンピューティングデバイスを識別する。コンピュータシステムは次いで、識別されたコンピューティングデバイスから、各部分（ピース）をダウンロードする。
【００１３】
上述の本発明の態様とそれに付随する利点・効果の多くは、以下の詳細な説明を添付図面と併せて参照することにより、よりよく理解されれば、より容易に認識されよう。
【発明を実施するための最良の形態】
【００１４】
本発明の実施形態は、ここではホストと称するソフトウェア提供業者が、ソフトウェアアップデートの複数の部分をさまざまな異なる受信者（ここではピアと称する）に配布する能力を提供する。ここで称されるピアは、ソフトウェアアップデートの一部（ピース）をダウンロードに供する任意のタイプのコンピューティングデバイスを含む。例えば、ピアは、これらに限定しないが、個々のコンピューティングデバイス、サーバ、ホストコンピューティングデバイス、クライアントコンピューティングデバイス等である。ソフトウェアアップデートの部分（ピース）を有するピアは、その部分（ピース）を他のピアがダウンロードに供する。追加的なピアが同じソフトウェア部分を取得すると、それらのピアも、その部分（ピース）を他のピアのダウンロードに供することができる。したがって、部分（ピース）を保持するピアの数が増えるのにしたがって、利用可能なその部分（ピース）のダウンロードサイトの数が増していく。
【００１５】
図２Ａ〜図２Ｃに、本発明の一実施形態による、ピアツーピア環境を利用してソフトウェアアップデートをダウンロードする状態図を示す。このピアツーピア環境２００は、クライアント２０１が必要とされるアップデートを識別し、そのアップデートの部分（ピース）をそこから取得することができるピアリストをホスト２０３から取得する能力を提供する。
【００１６】
初めに図２Ａを参照すると、初期の状態で、クライアント２０１が、ホスト２０３から入手できるアップデートのリストをホストに要求する。代替実施形態では、ホスト２０３は、周期的に利用可能なアップデートのリストを公開し、そのリストがクライアント２０１に入手される。ホスト２０３は、利用可能アップデートリストに対する要求を受け取ると、利用可能アップデートのリストをクライアント２０１に送信する。クライアント２０１は、自身をスキャンして現在の状態を判定し、その状態を利用可能アップデートリストと比較して、必要なアップデートを決定する。必要なアップデートを決定すると、クライアント２０１は、ホスト２０３に、その必要とされるアップデートのアップデートオプションのリストを要求する。ホスト２０３は、必要なアップデートについてのアップデートオプションの要求を受け取ると、その要求されたアップデートオプションリストを作成する。
【００１７】
クライアントのプライバシーの問題のために、本発明の一実施形態では、必要最低限のクライアント情報がクライアントからホストに渡される。例えば、すぐ上で述べたように、ホストが、利用可能なアップデートのリストを提供し、クライアントがどのアップデートが必要であるかを判断する。代替実施形態では、クライアントが、自身の現在のステータスの識別、あるいは各種の動作状態に対応する情報をホストに提供し、ホストが、必要なアップデートをクライアントに通知することができる。
【００１８】
図３を参照して、本発明の一実施形態による、必要なアップデートについての様々なオプションを識別する、ホストで生成されることができるアップデートオプションリストについて説明する。アップデートオプションリスト３００は、アップデート１（ＵＰＤＡＴＥ１）３０１などクライアント２０１から要求される各アップデートについて、そのアップデートを取得するために利用できる様々な選択肢を識別する。また、アップデートオプションリスト３００は、いくつかの要求されるアップデートについてのアップデートオプションを含むこともできる。例えば、クライアント２０１がアップデート１（ＵＰＤＡＴＥ１）３０１およびアップデート７（ＵＰＤＡＴＥ７）３０３についてのアップデートオプションを要求したとすると、アップデートオプションリスト３００は、要求されたアップデート３０１、３０３それぞれの識別と、そのアップデートを入手するために利用できる様々なオプションの識別を含む。例えば、アップデート１（ＵＰＤＡＴＥ１）３０１は、フルパッチ１（Ｆｕｌｌ  Ｐａｔｃｈ１）３０５、細部１．１（Ｄｅｌｔａ１．１）パッチ３０７、細部１．２（Ｄｅｌｔａ１．２）パッチ３０９、細部１．３（Ｄｅｌｔａ１．３）パッチ３１１の識別を含む。同様に、アップデート７（ＵＰＤＡＴＥ７）３０３は、フルパッチ７（Ｆｕｌｌ  Ｐａｔｃｈ７）３１３、細部７．１（Ｄｅｌｔａ７．１）パッチ３１５、細部７．２（Ｄｅｌｔａ７．２）パッチ３１７、および細部７．３（Ｄｅｌｔａ７．３）パッチ３１９の識別を含むことができる。
【００１９】
フルパッチ（full patch；完全パッチともいう）１  ３０５は、インストールしてソフトウェアを既存の状態から最新の状態にすることができる完全なアップデートである。各細部パッチ（delta patch;デルタパッチともいう）は、フルパッチを使用しなくとも、ソフトウェアを既知の既存の状態から最新の状態にするために使用することができる。アップデートしようとするソフトウェアは、多くの場合、識別されることが可能ないくつかの異なる既知の状態の１つにある。そのため、それら既知の状態それぞれについて、細部パッチを使用してそのソフトウェアに修正を加えてソフトウェアを最新の状態にすることができる。例えば、細部１．１パッチ３０７が使用されて、ある既知の既存状態にあるソフトウェアのバージョンを最新の状態にすることができる。
【００２０】
クライアント２０１がソフトウェアを更新するために細部パッチの１つを使用できるかどうかを判定できるようにするために、各細部パッチは、ファイルのリストと、それらファイルの予定ハッシュ値（expected hash）を含む。予定ハッシュ値は、その細部パッチが既存のソフトウェアに該当するかどうかを判定するために使用することができる。例えば、細部１．１パッチ３０７は、予定ハッシュ値３２１を有するファイル１．１  ３２０、予定ハッシュ値３２３を有するファイル１．２  ３２２、および予定ハッシュ値３２５を有するファイル１．３  ３２４を含む。クライアントは、アップデートオプションリスト３００を受け取ると、そのクライアントのシステム２０１で更新しようとするファイルの現在の状態のハッシュ値を計算し、そのハッシュ値が、アップデートリストに含まれる予定ハッシュ値と一致するかどうかを判定することができる。ハッシュ値が一致する場合は、対応する細部パッチを使用してクライアントのシステムを更新することができる。フルパッチ１  ３０５などのフルパッチを使用する代わりに、細部１．１  ３０７などの細部パッチを使用すると、全体的なアップデートではなく、部分的なアップデートになるので、結果としてダウンロードがより小さくなる。
【００２１】
次いで図２Ｂを参照すると、ホスト２０３が、要求されたアップデートオプションリストを生成すると、そのアップデートオプションリストがクライアント２０１に送信される。クライアント２０１は、アップデートオプションリストから、クライアント２０１の状態を最新の状態にする各アップデートのパッチを選択する。上記で述べたように、クライアントは、必要なアップデートのために、フルパッチまたは該当する細部パッチを選択することができる。当業者には理解されるように、１つまたは複数の必要とされるアップデートがアップデートオプションリストから選択されることができる。該当する各パッチを選択すると、クライアント２０１は、必要なアップデートについてのピアリストを要求する。ホスト２０３は、必要なアップデートのピアリストの要求を受け取るのに応答して、要求されるピアリストを作成し、そのピアリストをクライアント２０１に送信する。
【００２２】
ホストは、あるアップデートの部分をダウンロードできるようにしている各ピアを識別するマスタピアリストを保持している。これまでにホストからアップデートがダウンロードされたことがない場合、初期のピアリストは、そのホストを利用可能なピアとしてのみ識別することができる。そのような状況では、クライアントは、アップデートをダウンロードする最初のクライアントになり、ホストをピアとして選択し、ホストからファイル全体をダウンロードすることになる。下記で述べるように、クライアントがアップデートをダウンロードし、インストールすると、クライアントは、そのアップデートの１つまたは複数の部分をダウンロード（共有）可能にするつもりであることをホストに対して明らかにする。したがって、ホストは、そのクライアントを、そのクライアントが共有するアップデートの部分についてのマスタピアリストに加える。追加的なクライアントがホスト、あるいはピア、またはその両方からアップデートをダウンロードし、自身をそのアップデート部分をダウンロードできるようにしていると識別するのにつれて、利用可能なピアの数が増えていく。
【００２３】
図４に、本発明の一実施形態による、クライアントからのピアリスト要求に応答して、必要とされたアップデートについてのピアを識別するピアリストのブロック図を示す。上記の例を続けると、クライアント２０１が、細部１．１パッチ４０１とフルパッチ７  ４０３を要求したとすると、ピアリスト４００は、それら各パッチの詳細とそれらパッチについてのピアの識別を含む。ダウンロードされるパッチの真正性を確認するためのハッシュ値も含まれる。
【００２４】
例えば、細部１．１（Ｄｅｌｔａ１．１）パッチ４０１は、そのパッチの細部ハッシュ（delta hash）と優先度値(priority)を含む。下記でより詳細に述べるように、パッチのハッシュ値は、インストールの前にそのパッチの有効性を確認するために使用することができる。代替実施形態では、その優先度値は、パッチに含まれなくてよい。そのような実施形態では、部分（ピース）はキャッシュに保存され、追加的な記憶スペースが必要になると、クライアントコンピュータは、現在キャッシュに置かれている部分についての優先度リストを要求することができる。これは、ホストが、時間の経過に伴って部分の優先度を動的にコントロールする能力を提供する。これも下記で述べるように、パッチの優先度値を使用して、パッチの部分をクライアントコンピュータのキャッシュに保持すべきか、削除すべきかを決定することができる。ファイル１．１（Ｆｉｅｌ１．１）４０５やファイル１．２（Ｆｉｅｌ１．２）４０７などのパッチの各ファイルについては、細部ハッシュも含まれる。パッチの細部ハッシュと同様に、ファイルの細部ハッシュを使用してファイルの真正性（authenticity）を検証することができる。
【００２５】
また、ファイル１．１  ４０５などの各ファイルは、部分１(Ｐｉｅｃｅ1)４０９や部分２(Ｐｉｅｃｅ２)４１１などの部分に分割することができる。ファイルの各部分はさらに、二次分割部分（Ｓｕｂ−Ｐｉｅｃｅ）に分割し、その二次分割部分を三次分割部分（Ｓｕｂ−Ｓｕｂ−Ｐｉｅｃｅ）に分割することができる。例えば、部分１  ４０９を二次分割部分１．１  ４１３と、二次分割部分１．２  ４１５などの二次分割部分に分けることができる。同様に、それらの二次分割部分をさらに、三次分割部分１．１．１  ４１７と三次分割部分１．１．２  ４１９のような三次分割部分に分割することができる。当業者には理解されるように、部分、二次分割部分、三次分割部分への分割は、任意の分割レベルまで、そして、説明のためだけであっても、ここに記載されるように三次分割部分の細分度まで行える。
【００２６】
三次分割部分のような最も小さい分割レベルは、その部分をダウンロードできるようにしている１つまたは複数のピアの識別を含む。例えば、三次分割部分１  ４１７は、その部分をダウンロードできるようにしている２つのピアの識別を含む。詳細には、三次分割部分１．１．１  ４１７は、ピア１  ４２１またはピア４  ４２５からダウンロードすることができる。ある三次分割部分をダウンロードできるようにしている各ピア(peer)は、インターネットプロトコルアドレスなどのアドレス（addr）で識別される。ピアリスト４００は、三次分割部分をダウンロードできるようにしているすべてのピア、三次分割部分をダウンロードできるようにしているピアの一部、または各三次分割部分につき１つのピアの識別を含むことができる。また、ピアリストに掲載される各ピアについて、追加的な情報が提供されることができる。例えば、ピアについての追加的情報には、これらに限定しないが、ピアの帯域幅(bandwidth)、そのピアの格付け（そのピアがどれだけ信頼できるか）、企業や組織とのピアの提携、ピアツーピアのダウンロードシステムのピアの使用履歴等が含まれる。ピアリストは、細部パッチ自体のインストール方法についての指示を提供するアップデートコマンドセット４２７も含むことができる。
【００２７】
再度図２Ｂを参照すると、クライアント２０１は、ピアリストを受け取ると、そのピアリストに識別される三次分割部分についてのピアを選択する。ピアと部分の選択については下記で図６との関係でより詳しく説明する。三次分割部分と、その部分をダウンロードするピアを選択すると、クライアント２０１は、異なるピアとの間にいくつかの通信チャネルを開き、異なるアップデート部分を同時にダウンロードし始める。異なるピアから異なるアップデート部分をダウンロードする技術は、アップデートを取得することができる速度を増し、それにより、合計のダウンロード時間を短縮する。また、ピアツーピア環境を介してアップデートを提供すると、ホスト２０３に必要とされる送出帯域幅(egress bandwidth)が減る。本発明の実施形態を利用すると、クライアントがホストに接続し、アップデートをダウンロードし、他のクライアント（他のピア）とそれらアップデートの部分を共有し始めると、ホスト２０３の送出帯域幅は、クライアントがホストではなく他のピアからアップデート部分を取得するようになるのにつれて低減する。最もよい場合でも非常にコストが高くなり、最悪の場合には完全に負荷を受けて機能しない従来のファイルサービスに比べて、本発明のこの技術は、特定のコンテンツに対する需要の極度の増大に、はるかに効果的に対応する。
【００２８】
次いで図２Ｃを参照すると、各三次分割部分のダウンロードが完了すると、その三次分割部分のハッシュ値が計算され、ピアリストに含まれるハッシュ値と比較されて、その三次分割部分に変更が加えられていないことを確認する。特定のパッチのすべての三次分割部分がダウンロードされ、認証されると、それらの部分が組み合わせられて（assemble）パッチを復元する。また、ダウンロードされた三次分割部分の１つまたは複数のコピーがキャッシュに保持される。そのコピーは、他のピアがダウンロードするのに供することができる。
【００２９】
組み合わせられたパッチがインストールされて、クライアントを最新の状態に更新する。インストールが完了すると、必要な場合はクライアントコンピュータシステムを再起動することができる。パッチのインストールとクライアントコンピュータ２０１の再起動（必要な場合）が完了すると、クライアント２０１は、キャッシュに記憶された三次分割部分の識別(identification)をホスト２０３に送信する。この識別は、記憶された各三次分割部分のハッシュ値でよい。ホスト２０３は、キャッシュされた三次分割部分の識別を受け取ると、マスタピアリストを更新して、それらの部分をダウンロードできるようにしているピアとしてそのクライアントを追加する。マスタピアリストは、他のクライアントからダウンロードできるようにされたパッチの部分を保持している各ピアのリストを含む。
【００３０】
図５は、本発明の一実施形態による、クライアントのソフトウェアを更新するクライアントソフトウェア更新ルーチンを説明する流れ図である。クライアントソフトウェア更新ルーチン５００は、ブロック５０１で開始し、ブロック５０３でクライアントがアップデートリストを要求し、取得する。上記で述べたように、アップデートリストは、ダウンロードすることが可能なアップデートの識別を含む。ブロック５０５で、そのリストを利用して、クライアントが自身の既存のシステムのステータスを利用可能なアップデートと比較する。その比較に基づいて、判定ブロック５０７で、クライアントの既存のシステムを最新の状態にするためにアップデートが必要であるかどうかが判定される。
【００３１】
判定ブロック５０７でアップデートが必要であると判定された場合は、判定ブロック５０９で、必要なアップデートの細部パッチが利用できるかどうかが判定される。上記で述べたように、必要なアップデートの細部パッチが利用できるかどうかの判定は、必要なアップデートのアップデートオプションを要求し、様々なアップデートオプションのリストを受け取ることによって確かめることができる。様々なアップデートオプションのリストは、細部パッチの識別と、その細部パッチで更新されるファイルの予定ハッシュ値を含む。細部パッチの予定ハッシュ値を、クライアントにあるファイルのハッシュ値と比較することにより、細部パッチを利用できるかどうかの判定がクライアントで行われることができる。代替実施形態では、利用可能なアップデートのリストは、利用可能な各アップデートのアップデートオプションも含むことができ、それにより、後にアップデートオプションを取得する必要をなくする。
【００３２】
クライアントが自身の既存のシステムのハッシュ値をホストに提供するのではなく、細部パッチを利用できるかどうかをクライアントが判定できるようにすると、クライアントが自身に関するプライバシーを保つことができるようになる。判定ブロック５０９で細部パッチが利用できると判定された場合は、ブロック５１１で示すように、その細部パッチがダウンロードリストに追加される。一方、判定ブロック５０９で細部パッチが利用できないと判定される場合は、ブロック５１３で、そのアップデートの全パッチの識別がダウンロードリストに加えられる。
【００３３】
判定ブロック５１５で、クライアントを最新の状態にするために更なるアップデートが必要とされるかどうかが判定される。判定ブロック５１５で更なるアップデートが必要と判定される場合、クライアントソフトウェア更新ルーチン５００は、判定ブロック５０９に戻り、ルーチンが継続する。一方、判定ブロック５１５で追加的なアップデートが必要でないと判定される場合は、ブロック５１７で、クライアントが、ダウンロードリストで識別されるパッチについてのピアリストを要求する。ブロック５１７でピアリストを要求するのに応答して、ブロック５１９で、クライアントは、ダウンロードリストで識別された各パッチの各三次分割部分をダウンロードできるようにしているピアの識別を含むピアリストを受け取る。ピアリストを受け取ると、ブロック５２１で示すダウンロードサブルーチンが行われる。ダウンロードサブルーチンについては図６に関してより詳細に説明する。ダウンロードサブルーチンが完了すると、ブロック５２３で、ダウンロードされた三次分割部分が組み合わせ（assemble）られて、要求されたパッチを復元し、そのパッチがクライアントシステムにインストールされて、クライアントシステムを最新の状態にする。
【００３４】
ダウンロードされたパッチのインストールが完了し、必要な場合はクライアントシステムが再起動されると、クライアントソフトウェア更新ルーチン５００は、ブロック５２５で示すように、キャッシュに格納されている三次分割部分のハッシュを送信する。キャッシュされた三次分割部分は、そのクライアントが他のピアからダウンロードに供する、クライアントのキャッシュに記憶された部分である。本発明の一実施形態では、クライアントは、ピアツーピア環境が確実に維持されるように、他のピアからダウンロードした部分を共有することを要求される。
【００３５】
例えば、クライアントがピアツーピア環境を介して５０ＭＢ（メガバイト）のアップデートをダウンロードする場合、そのクライアントは、自身がダウンロードした量と同じ量のデータをダウンロード可能な状態にすることを求められる。本発明の実際の実施形態では、各部分が検証され、インストールされるまで、キャッシュされた三次分割部分のハッシュが送信され、それにより共有が可能であることを明らかにしなくてよい。ピアリストがホストから他のピアに提供されると、現在ダウンロード中のパッチなど、特定のパッチがピアにないことを知りながらピアのアドレスが使用されてピアマシンを損なう可能性があるので、パッチを検証およびインストールした後にパッチを共有することが必要である場合がある。ブロック５２５でキャッシュされた三次分割部分のハッシュが送信されると、または、判定ブロック５０７で必要なアップデートがないと判定される場合、クライアントソフトウェア更新ルーチン５００は、ブロック５２７で完了する。
【００３６】
クライアントソフトウェア更新ルーチン５００は、クライアントが最新の状態に確実に保たれるように、手動で開始されても、あるいは代替実施形態では、周期的に実行されるようにスケジュールされてもよい。例えば、クライアントソフトウェア更新ルーチン５００は、夜間に、あるいはクライアントコンピューティングデバイスが使用されていない時に実行されるようにスケジュールされることができる。また、追加されたセキュリティ機能として、利用可能アップデートリスト、アップデートオプションリスト、およびピアリストはそれぞれ、ホストによってデジタル的に署名して、変更を加えられないようにすることができる。文書のデジタル署名は、当技術分野で知られており、そのためここでは詳しく説明しない。
【００３７】
図６は、本発明の一実施形態による、異なるピアからパッチの部分をダウンロードするためにクライアントソフトウェア更新ルーチンの一部として実行されることができるダウンロードサブルーチンの流れ図である。ダウンロードサブルーチン６００は１つのパッチのダウンロードとの関係で説明するが、ダウンロードサブルーチン６００を使用して、任意数のパッチが同時に、または異なる時にダウンロードされてよいことは理解されよう。
【００３８】
ダウンロードサブルーチン６００は、ブロック６０１で開始し、ブロック６０３で、１つまたは複数のパッチの各三次分割部分についてのピアリストが受け取られる。上記で述べたように、ピアリストは、あるパッチの異なる三次分割部分をダウンロードできるようにしているピアのアドレスを識別する。三次分割部分をダウンロードする間に、ピアリストは、周期的に（例えば２分ごと）更新されて、クライアントが、利用可能なピアにダウンロードを要求することを保証する。
【００３９】
そのピアリストを利用して、判定ブロック６０５で、インストールする前にパッチの三次分割部分を記憶するために追加的なキャッシュが必要となるかどうかが判定される。判定ブロック６０５で追加的なキャッシュが必要であると判定される場合は、ブロック６０７で示すように優先度サブルーチンが実行される。追加的なキャッシュを得るための優先度サブルーチンについては、図７との関係で下記でより詳細に説明する。一方、判定ブロック６０５で追加的なキャッシュが必要でないと判定された場合は、ブロック６０９で、ダウンロードされるパッチのファイルが選択される。ブロック６１１で、ダウンロードを開始する、選択されたファイルの部分（ピース）が選択される。その選択された部分（ピース）を利用して、判定ブロック６１３で、その部分の二次分割部分の１つのダウンロードが終了したかどうかが判定される。その部分の二次分割部分の１つのダウンロードが終了していないと判定される場合、判定ブロック６１５で、その二次分割部分の三次分割部分の１つがダウンロードされたかどうかが判定される。判定ブロック６１５で二次分割部分の三次分割部分の１つがまだダウンロードされていないと判定される場合は、ブロック６１７で、二次分割部分の三次分割部分が無作為に選択される。ブロック６１９で、無作為に選択された三次分割部分をダウンロードできるようにしているピアも無作為に選択される。三次分割部分とピアが選択されると、ブロック６２１で、選択されたピアからの三次分割部分のダウンロードが開始する。三次分割部分のダウンロードが開始すると、ダウンロードサブルーチン６００は、ブロック６１３に戻り、継続する。
【００４０】
再度判定ブロック６１５を参照すると、三次分割部分の１つのダウンロードが完了したと判定される場合は、ブロック６２３でその三次分割部分をダウンロードすることができる最小量のピアを有する二次分割部分の三次分割部分が選択される。また、ブロック６２５で、選択された三次分割部分についてのピアの１つが無作為に選択される。ブロック６２７で、無作為に選択されたピアからの選択された三次分割部分のダウンロードが開始される。ブロック６２７で選択された三次分割部分のダウンロードが開始すると、ダウンロードサブルーチン６００はブロック６１３に戻り、継続する。
【００４１】
一度に複数の三次分割部分がダウンロードされることができ、それにより、１つのパッチまたは複数のパッチをダウンロードするのに必要な合計時間が短縮されるので、ブロック６２１またはブロック６２７でダウンロードが開始すると、ダウンロードサブルーチン６００は、別の部分と別のピアを選択し、そのダウンロードを開始することによって継続することができる。したがって、アップデートをダウンロードしているクライアントについて帯域幅の完全な飽和が達成されることができ、アップデートのダウンロードが迅速に完了されることができる。また、各三次分割部分のダウンロードが完了すると、その三次分割部分のハッシュ値を計算し（hash）、そのハッシュ値をピアリストに含まれるハッシュ値と比較することにより、それら部分の真正性が検証されることができる。
【００４２】
次いでブロック６１３に戻ると、ある部分の二次分割部分のダウンロードが終了していると判定される場合は、判定ブロック６２９で、１つのファイルのすべての部分のダウンロードが終了しているかどうかの判定が行われる。判定ブロック６２９でファイルのすべての部分のダウンロードが終了していないと判定される場合、ダウンロードサブルーチン６００はブロック６１１に戻り、別の部分を選択し、プロセスが継続する。一方、判定ブロック６２９でファイルのすべての部分のダウンロードが終了していると判定される場合は、判定ブロック６３１で、そのパッチのすべてのファイルのダウンロードが終了したかどうかが判定される。判定ブロック６３１でそのパッチのすべてのファイルのダウンロードが終了していないと判定される場合、ダウンロードサブルーチン６００はブロック６０９に戻り、ダウンロードする別のファイルが選択される。一方、判定ブロック６３１でパッチのすべてのファイルのダウンロードが終了しており、したがって、そのパッチのすべての部分、二次分割部分、および三次分割部分もダウンロードされたと判定される場合は、ルーチンはブロック６３３で完了し、クライアントソフトウェア更新ルーチン５００（図５）に制御を戻す。
【００４３】
図７に、本発明の一実施形態による、クライアントシステムのキャッシュサイズを拡張してパッチのダウンロードを可能にする優先度サブルーチンの流れ図を示す。優先度サブルーチン７００はブロック７０１で開始し、ブロック７０３で、現在キャッシュにある、共有されるすべての三次分割部分のリストがホストに送信される。共有される、キャッシュにある三次分割部分のリストの送信に応答して、ブロック７０５で、それら三次分割部分それぞれの優先度が受け取られる。三次分割部分には、ダウンロードが要求される頻度に基づいて優先度が割り当てられることができる。例えば、新しいコンピュータウィルスからの防御を提供する新しいアップデートが公開された場合、そのアップデートのパッチと、したがって三次分割部分は、非常に高い頻度でダウンロードされる可能性がある。そのため、そのアップデートの三次分割部分は、高い優先度を受け取ることができる。
【００４４】
キャッシュされた三次分割部分の優先度を受け取ると、ブロック７０７で、キャッシュされた三次分割部分の中で優先度の最も低いものがキャッシュから削除される。判定ブロック７０９で、共有される三次分割部分が削除されるとキャッシュにアップデートのために十分なスペースが空くかどうかが判定される。判定ブロック７０９で十分なスペースが空くと判定される場合、ブロック７２３で示すように、ルーチンは、ダウンロードサブルーチン（図６）に制御を戻す。一方、判定ブロック７０９でまだ十分なスペースが空かないと判定される場合は、判定ブロック７１１で、共有される他のキャッシュされた三次分割部分で、まだ削除されていない三次分割部分があるかどうかが判定される。
【００４５】
判定ブロック７１１で共有される、キャッシュされた三次分割部分がまだ残っていると判定される場合、優先度サブルーチン７００はブロック７０７に戻り、次に優先度が低い三次分割部分を削除し、プロセスが継続する。本発明の実際の実施形態では、特定のアップデートのパッチに関連付けられたキャッシュ内の三次分割部分の一部は、削除不可能と識別されることができる。例えば、三次分割部分が、極めて頻繁にダウンロードされるアップデートに関連付けられている場合、その部分は、削除不可能と識別されて、その三次分割部分をダウンロードすることができるピアが十分にあるようにすることができる。
【００４６】
判定ブロック７１１で、キャッシュされた三次分割部分で削除可能なものが残っていないと判定される場合は、判定ブロック７１３で、すでに完全にダウンロードされたパッチがあるかどうかが判定される。上記で述べたように、本発明の一実施形態によれば、複数のパッチが同時にダウンロードされることができる。そのパッチの１つがダウンロードを完了している場合、判定ブロック７１３で、そのパッチが識別され、ブロック７１７でそのパッチがインストールされる。そのようなインストールの結果、そのアップデートがインストールされる間、ダウンロードの残りは一時停止されることができる。しかし、既存の技術では、再開しなくとも、一時停止されたダウンロードが再開されることができる。したがって、ダウンロードの一時停止／再開の結果生じる、ダウンロードデータの実質的な損失がない。ダウンロードされたパッチがブロック７１７でインストールされると、ブロック７１９で示すように、削除不可能と識別されていない場合は、そのパッチの三次分割部分がキャッシュから削除される。ダウンロードが削除されると、判定ブロック７２１で、キャッシュにアップデートをダウンロードするのに十分なスペースがあるかどうかが判定される。判定ブロック７２１でキャッシュに十分なスペースがないと判定される場合、優先度サブルーチン７００は判定ブロック７１３に戻り、ダウンロードが完了した他のパッチがあるかどうかを判定し、プロセスが継続する。
【００４７】
判定ブロック７１３に戻り、ダウンロードが完了したパッチがないと判定される場合は、ブロック７１５でキャッシュのサイズが拡大される。キャッシュのサイズは、クライアントシステムのユーザがキャッシュサイズを拡大するように要求することにより拡大することができる。あるいは、キャッシュサイズは、自動的に拡大されることもできる。キャッシュから既存の部分を削除するか、キャッシュサイズを拡大することにより、アップデートをダウンロードするために十分なキャッシュスペースが準備されると、優先度サブルーチン７００はブロック７２３で完了し、ダウンロードサブルーチン６００に制御を戻す。
【００４８】
図８に、本発明の一実施形態による、ピアツーピア環境を利用してアップデートを利用できるようにするホストのルーチンを示す。ホストのルーチン８００は、ブロック８０１で開始し、ブロック８０３でホストがアップデートリストの要求を受け取る。上記で述べたように、アップデートリストは、ダウンロードするためにそのホストから提供される利用可能なアップデートのリストである。ブロック８０５で、ホストが、利用可能なダウンロードを識別するアップデートリストを送信する。
【００４９】
アップデートリストが送信されると、ブロック８０７で示すように、後のある時点で、そのアップデートリストで識別される利用可能な１つまたは複数のアップデートについてのアップデートオプションの要求がクライアントから受け取られる。ブロック８０９で、ブロック８０７で受け取られた要求で識別されるアップデートについてのアップデートオプションリストが生成される。上記で述べたように、アップデートオプションリストは、そのアップデートを取得するために使用することができるパッチの識別を含む。そのリストが次いで、アップデートオプションを要求したクライアントに送信される。ブロック８１１で、ブロック８０９で送信されたオプションリストで識別されるパッチの１つまたは複数についてのピアリストを要求するピアリスト要求が受け取られる。ホストは、ブロック８１３で、要求されるパッチのピアリストを生成し、送信する。上記で述べたように、ピアリストは、各パッチについて、部分（ピース）、二次分割部分、および三次分割部分を識別する。また、その三次分割部分それぞれにつき、その三次分割部分をどこから取得することができるのかを明らかにする１つまたは複数のピアとそのピアのアドレスが含められる。次いで、ピアリストがクライアントに送信され、ブロック８１５で、そのクライアントにダウンロードされ、記憶されて現在は他のピアと共有できるようになっている三次分割部分の識別が受け取られる。受け取られたリストが使用されて、利用可能なアップデートのすべての三次分割部分の識別と、その三次分割部分をダウンロードできるようにしているピアの識別を含むマスタピアリスト８１７を更新する。ホストルーチン８００は、ブロック８１９で完了する。
【００５０】
本発明の実施形態を図示し、説明したが、本発明の主旨および範囲から逸脱せずに本発明に各種の変更を加えてよいことは理解されよう。
【図面の簡単な説明】
【００５１】
【図１】特定のファイルをダウンロードするための典型的なピアツーピア環境のブロック図である。
【図２Ａ】本発明の一実施形態による、ピアツーピア環境を利用してソフトウェアアップデートをダウンロードする状態図である。
【図２Ｂ】本発明の一実施形態による、ピアツーピア環境を利用してソフトウェアアップデートをダウンロードする状態図である。
【図２Ｃ】本発明の一実施形態による、ピアツーピア環境を利用してソフトウェアアップデートをダウンロードする状態図である。
【図３】本発明の一実施形態による、ホストで生成されることができる、必要なアップデートのための様々なオプションを明らかにするアップデートオプションリストのブロック図である。
【図４】本発明の一実施形態による、クライアントからのピアリストの要求に応答して必要なアップデートのピアを識別するピアリストのブロック図である。
【図５】本発明の一実施形態による、クライアントのソフトウェアを更新するクライアントソフトウェア更新ルーチンを説明する流れ図である。
【図６】本発明の一実施形態による、異なるピアから必要なアップデートの部分をダウンロードするためにクライアントソフトウェア更新ルーチンの一部として実行されることができるダウンロードサブルーチンの流れ図である。
【図７】本発明の一実施形態による、パッチのダウンロードを可能にするためにクライアントシステムのキャッシュサイズを拡大する優先度サブルーチンの流れ図である。
【図８】本発明の一実施形態による、ピアツーピア環境を利用してアップデートを取得できるようにするホストルーチンを説明する図である。
【符号の説明】
【００５２】
１０１  クライアント
１０３  ホスト
２００  ピアツーピア環境
２０１  クライアント
２０３  ホスト
３００  アップデートオプションリスト
４００  ピアリスト
【図１】
2006172472.tif 000003
【図２Ａ】
2006172472.tif 000004
【図２Ｂ】
2006172472.tif 000005
【図２Ｃ】
2006172472.tif 000006
【図３】
2006172472.tif 000007
【図４】
2006172472.tif 000008
【図５】
2006172472.tif 000009
【図６】
2006172472.tif 000010
【図７】
2006172472.tif 000011
【図８】
2006172472.tif 000012
【外国語明細書】
2006172472000001.pdf