(57)【特許請求の範囲】
【請求項１】
ストレージ・サービスの対象となるデータを作成する手段を有する複数のクライアント装置と、
前記ストレージ・サービスを提供するためにデータを保存し、該データに対するアクセス許否を制御する手段を有する少なくとも一つのマスタサーバと、
前記複数のクライアント装置のうちの一つから受信したデータを少なくとも一時的に保持する手段と当該データを前記マスタサーバへ送信して保存させる手段とを各々が有する複数のキャッシュ装置と、
前記複数のクライアント装置のうちの一つからログインの要求を受け付け、当該ログインの成功に応じて、要求元のクライアント装置用に前記複数のキャッシュ装置のうちの少なくとも一つを選択し、選択されたキャッシュ装置を要求元のクライアント装置に通知する手段を有する管理サーバとを備え、
前記要求元のクライアント装置は、
前記管理サーバから通知された前記キャッシュ装置に対して、作成した前記データの書き込み要求を送信する手段と、
前記書き込み要求に対する許可の受信に応じて、前記管理サーバから通知された前記キャッシュ装置に対し、作成した前記データを送信する手段とを有し、
前記キャッシュ装置は、
前記クライアント装置から受信した書き込み要求を、前記マスタサーバへ中継する手段と、
前記マスタサーバから受信した前記書き込み要求に対する許可を、前記クライアント装置へ中継する手段とを有する
ことを特徴とするネットワーク・ストレージ・システム。
【請求項２】
前記管理サーバは、
前記ログインの要求に含まれる認証情報に基づいて、ユーザの認証を行う手段と、
前記認証に成功した場合に、前記ログインの要求に含まれる前記要求元のクライアント装置を特定する情報が示す該要求元のクライアント装置のネットワーク上の場所に基づき、前記複数のキャッシュ装置の各々の前記要求元のクライアント装置に対するネットワーク上の近さを考慮して、前記複数のキャッシュ装置のうちの少なくとも一つを選択する手段とを備えるものである
ことを特徴とする請求項１に記載のネットワーク・ストレージ・システム。
【請求項３】
前記キャッシュ装置は、前記マスタサーバに保存されたデータのコピーを少なくとも一時的に保持する手段を有し、
前記要求元のクライアント装置は、
前記管理サーバから通知された前記キャッシュ装置に対して、前記データの読み込み要求を送信する手段と、
前記読み込み要求に対する応答として、前記管理サーバから通知された前記キャッシュ装置より、前記データのコピーを受信する手段とを有する
ことを特徴とする請求項２に記載のネットワーク・ストレージ・システム。
【請求項４】
前記複数のキャッシュ装置は、前記要求元のクライアント装置と前記マスタサーバとの間に設置されているキャッシュサーバ装置と、前記複数のクライアント装置のうちの前記要求元のクライアント装置を除く他のクライアント装置とを含むものであり、
前記管理サーバは、選択されたキャッシュ装置として、前記キャッシュサーバ装置のうちの少なくとも一つ、及び／又は、前記他のクライアント装置のうちの少なくとも一つを、前記要求元のクライアント装置に通知するものである
ことを特徴とする請求項３に記載のネットワーク・ストレージ・システム。
【請求項５】
前記要求元のクライアント装置と前記マスタサーバの間に、ネットワークアドレス変換装置が設けられており、
前記ネットワークアドレス変換装置から見て前記マスタサーバ寄りに、キャッシュサーバ装置が設置されており、
前記複数のクライアント装置のうちの前記要求元のクライアント装置を除く他のクライアント装置の少なくとも一部は、前記ネットワークアドレス変換装置から見て前記クライアント装置寄りに存在するものであり、
前記管理サーバは、前記ログインの要求に含まれる前記要求元のクライアント装置を特定する情報として、該要求元のクライアント装置のローカルアドレスを取得するものであり、選択されたキャッシュ装置として、前記キャッシュサーバ装置のグローバルアドレス、及び／又は、前記他のクライアント装置の前記一部のうちの少なくとも一つのローカルアドレスを、前記要求元のクライアント装置に通知するものである
ことを特徴とする請求項３に記載のネットワーク・ストレージ・システム。
【請求項６】
前記要求元のクライアント装置は、
前記書き込み要求の送信先となるキャッシュ装置として、前記管理サーバから通知された前記キャッシュサーバ装置を用い、
前記読み込み要求の送信先となるキャッシュ装置として、前記管理サーバから通知された前記キャッシュサーバ装置及び前記他のクライアント装置を用いるものである
ことを特徴とする請求項４又は５に記載のネットワーク・ストレージ・システム。
【請求項７】
前記管理サーバは、
現在ログインしている複数のクライアント装置の各々のユーザの情報を記憶する手段を有し、
前記他のクライアント装置のうちの少なくとも一つを、選択されたキャッシュ装置とする場合、記憶された前記ユーザの情報を参照して、前記要求元のクライアント装置と同一のユーザ又はユーザグループが使用しているクライアント装置を選択するものである
ことを特徴とする請求項４又は５に記載のネットワーク・ストレージ・システム。
【請求項８】
前記マスタサーバは、データのインデックス情報を保存する手段を備え、
前記キャッシュ装置は、前記要求元のクライアント装置から受信したデータの保持に応じて、前記マスタサーバに対し該データのインデックス情報の更新を要求し、前記マスタサーバが保存する該インデックス情報が、前記データの保持場所が前記キャッシュ装置であることを示すようにする手段を備え、
前記データが前記キャッシュ装置から前記マスタサーバへ送信される前に、前記複数のクライアント装置のうちの一つから該データの読み込み要求が送信される場合、前記マスタサーバに保存されている該データのインデックス情報に従って、該読み込み要求の送信先が該データを保持している前記キャッシュ装置になる
ことを特徴とする請求項１〜７のいずれか１項に記載のネットワーク・ストレージ・システム。
【請求項９】
前記キャッシュ装置は、保持している前記データを前記マスタサーバへ送信して保存させる際に、前記マスタサーバが保存する該データのインデックス情報が、前記データの保持場所が前記マスタサーバであることを示すように、該インデックス情報の更新を前記マスタサーバに対し要求する手段を備え、
前記マスタサーバは、前記キャッシュ装置からの要求に応じて、前記インデックス情報を更新するとともに、前記書き込み要求に対する許可の送信以降禁止していた同一データへの他の書き込み要求に対して、許可を与えることを可能にする手段を備える
ことを特徴とする請求項８に記載のネットワーク・ストレージ・システム。
【請求項１０】
前記マスタサーバは、データのインデックス情報を保存する手段を備え、
前記要求元のクライアント装置は、前記マスタサーバに保存されたインデックス情報のコピーを保存する手段を備え、
前記キャッシュ装置は、前記インデックス情報のコピーを保持しないように設定されており、前記要求元のクライアント装置から前記インデックス情報のコピーの送信を要求された場合、該インデックス情報のコピーを前記マスタサーバから取得して、前記要求元のクライアント装置へ中継する手段を備えるものである
ことを特徴とする請求項１〜９のいずれか１項に記載のネットワーク・ストレージ・システム。
【請求項１１】
前記要求元のクライアント装置は、
保存された前記インデックス情報のコピーを、前記マスタサーバに保存された該インデックス情報の更新に合わせて更新する手段と、
更新された前記インデックス情報のコピーに基づいて、ユーザに、書き込み対象となるデータ又は読み込み対象となるデータを指定させる手段と、
指定されたデータの実体を少なくとも一時的に自装置内に保持する手段とを備えるものである
ことを特徴とする請求項１０に記載のネットワーク・ストレージ・システム。
【請求項１２】
前記要求元のクライアント装置は、
書き込み対象となるデータ又は読み込み対象となるデータの名前を入力する手段と、
前記管理サーバから通知された前記キャッシュ装置に対して送信する書き込み要求又は読み込み要求に、入力された前記名前にバージョン番号を付加した情報を、該要求の対象となるデータを特定する情報として含める手段とを備え、
前記名前と前記バージョン番号との組合せにより特定されるデータの内容は、更新されることがないものである
ことを特徴とする請求項１〜１１のいずれか１項に記載のネットワーク・ストレージ・システム。
【請求項１３】
前記マスタサーバは、データのインデックス情報を保存する手段を備え、
前記要求元のクライアント装置は、
前記マスタサーバに保存されているインデックス情報のコピーを保存する手段を備え、
前記書き込み要求を利用して新規データの書き込みを行うため、前記インデックス情報のコピーに示される該データの不存在を確認すると、バージョン番号をゼロとして該データのインデックス情報を新規に作成し、ゼロの次のバージョン番号を、前記書き込み要求の対象となるデータを特定するバージョン番号とするものである
ことを特徴とする請求項１２に記載のネットワーク・ストレージ・システム。
【請求項１４】
前記マスタサーバは、データのインデックス情報を保存する手段を備え、
前記要求元のクライアント装置は、
前記マスタサーバに保存されているインデックス情報のコピーを保存する手段を備え、
前記書き込み要求を利用して既存データの更新を行うため、前記インデックス情報のコピーに示される該データの現存する最新のバージョン番号から、次のバージョン番号を求めて、該次のバージョン番号を、前記書き込み要求の対象となるデータを特定するバージョン番号とするものである
ことを特徴とする請求項１２に記載のネットワーク・ストレージ・システム。
【請求項１５】
前記マスタサーバは、データのインデックス情報を保存する手段を備え、
前記要求元のクライアント装置は、
前記マスタサーバに保存されているインデックス情報のコピーを保存する手段を備え、
前記書き込み要求を利用して既存データの削除を行うため、前記インデックス情報のコピーに示される該データの現存する最新のバージョン番号から、次のバージョン番号を求めて、該次のバージョン番号を、前記書き込み要求の対象となるデータを特定するバージョン番号とするとともに、該書き込み要求に該データの状態を削除とする指示を含ませるものである
ことを特徴とする請求項１２に記載のネットワーク・ストレージ・システム。
【請求項１６】
前記要求元のクライアント装置と前記キャッシュ装置との間に、読み込み専用キャッシュ装置が設けられており、
前記読み込み専用キャッシュ装置は、
前記マスタサーバに保存されたデータのコピーを少なくとも一時的に保持する手段と、
前記要求元のクライアント装置から前記キャッシュ装置へ送信される前記データの読み込み要求を中継する手段と、
前記データのコピーが保持されている場合には、前記読み込み要求を中継せずに、前記読み込み要求に対する応答として、前記要求元のクライアント装置に対して前記データのコピーを送信する手段とを備えるものである
ことを特徴とする請求項１２に記載のネットワーク・ストレージ・システム。
【請求項１７】
前記要求元のクライアント装置は、作成した前記データを、該要求元のクライアント装置のユーザの公開鍵、及び／又は、該データの解読を許すユーザの公開鍵を用いて、暗号化してから、送信するものであり、
前記複数のキャッシュ装置は、データを暗号化されたまま保持するものであり、
前記マスタサーバは、データを暗号化されたまま保存するものである
ことを特徴とする請求項１〜１６のいずれか１項に記載のネットワーク・ストレージ・システム。
【請求項１８】
前記要求元のクライアント装置は、前記管理サーバから通知された前記キャッシュ装置に対して送信する前記書き込み要求及び前記データのそれぞれに、前記要求元のクライアント装置のユーザの秘密鍵を用いて署名を付加する手段を備え、
前記キャッシュ装置は、前記要求元のクライアント装置から受信した前記書き込み要求及び前記データのそれぞれに付加された署名を、前記ユーザの公開鍵を用いて検証する手段を備えるものである
ことを特徴とする請求項１〜１７のいずれか１項に記載のネットワーク・ストレージ・システム。
【請求項１９】
ストレージ・サービスを提供するためにデータを保存して該データに対するアクセス許否を制御する手段を有する少なくとも一つのマスタサーバと、少なくとも一時的に保持していたデータを前記マスタサーバへ送信して保存させる手段を有する複数のキャッシュ装置と、前記ストレージ・サービスに加入するユーザからのログインを管理する手段を有する管理サーバとが接続されている、ネットワークとの間で、通信を行うための通信手段と、
前記ストレージ・サービスの対象となるデータを作成する手段と、
前記管理サーバに対し、ログインの要求を送信して、該ログインの成功応答とともに、要求元のクライアント装置用に選択された前記複数のキャッシュ装置のうちの少なくとも一つを特定する情報を受信する手段と、
前記管理サーバからの情報により特定される前記キャッシュ装置に対して、前記データの書き込み要求を送信する手段と、
前記キャッシュ装置から前記マスタサーバへ中継された前記書き込み要求に対する許可を受信する手段と、
前記許可の受信に応じ、前記データを、前記管理サーバからの情報により特定される前記キャッシュ装置へ送信して保持させる手段とを備える
ことを特徴とするクライアント装置。
【請求項２０】
前記ネットワークに接続される他のクライアント装置から受信した第二の書き込み要求を、前記マスタサーバへ中継する手段と、
前記マスタサーバから受信した前記第二の書き込み要求に対する許可を、前記他のクライアント装置へ中継する手段と、
前記第二の書き込み要求による書き込みの対象となるデータを、前記他のクライアント装置から受信して、少なくとも一時的に保持する手段と、
保持された前記データを前記マスタサーバへ送信して保存させる手段とを更に備える
ことを特徴とする請求項１９に記載のクライアント装置。
【請求項２１】
ストレージ・サービスの対象となるデータを作成する手段を有する複数のクライアント装置と、前記ストレージ・サービスを提供するためにデータを保存して該データに対するアクセス許否を制御する手段を有する少なくとも一つのマスタサーバと、少なくとも一時的に保持していたデータを前記マスタサーバへ送信して保存させる手段を有する複数のキャッシュ装置とが接続されている、ネットワークとの間で、通信を行うための通信手段と、
前記複数のクライアント装置のうちの一つからログインの要求を受け付ける手段と、
前記ログインの成功に応じて、前記複数のキャッシュ装置のうちの少なくとも一つを、前記要求元のクライアント装置用のキャッシュ装置として、選択する手段と、
前記要求元のクライアント装置が、該装置用のキャッシュ装置に対してデータの書き込み要求を送信することにより前記マスタサーバからの該書き込み要求に対する許可を得て、該装置用のキャッシュ装置に該書き込み要求の対象となるデータを送信して保持させることができるように、選択された前記キャッシュ装置を前記要求元のクライアント装置に通知する手段とを備える
ことを特徴とする管理サーバ。
【請求項２２】
データを保存して該データに対するアクセス許否を制御する手段を有する少なくとも一つのマスタサーバにより提供されるストレージ・サービスの対象となるデータを作成する手段を有する複数のクライアント装置のうちの一つが、管理サーバに対して、ログインの要求を送信し、
前記管理サーバは、少なくとも一時的に保持していたデータを前記マスタサーバへ送信して保存させる手段を有する複数のキャッシュ装置に関する情報を記憶しており、
前記ログインの要求を受け付けた前記管理サーバは、該ログインの成功に応じ、該要求元のクライアント装置用に前記複数のキャッシュ装置のうちの少なくとも一つを選択して、選択されたキャッシュ装置を前記要求元のクライアント装置に通知し、
前記要求元のクライアント装置は、前記管理サーバから通知された前記キャッシュ装置に対して、作成したデータの書き込み要求を送信し、
前記キャッシュ装置は、前記クライアント装置から受信した書き込み要求を、前記マスタサーバへ中継し、
前記マスタサーバから受信した前記書き込み要求に対する許可を、前記クライアント装置へ中継し、
前記要求元のクライアント装置は、前記書き込み要求に対する許可の受信に応じ、前記管理サーバから通知された前記キャッシュ装置に対して、前記書き込み要求の対象となるデータを送信し、
前記キャッシュ装置は、前記クライアント装置から受信したデータを少なくとも一時的に保持する
ことを特徴とするネットワーク・ストレージの方法。
【請求項２３】
ストレージ・サービスを提供するためにデータを保存して該データに対するアクセス許否を制御する手段を有する少なくとも一つのマスタサーバと、少なくとも一時的に保持していたデータを前記マスタサーバへ送信して保存させる手段を有する複数のキャッシュ装置と、前記ストレージ・サービスに加入するユーザからのログインを管理する手段を有する管理サーバとが接続されている、ネットワークとの間で、通信を行うことのできるコンピュータを、
前記ストレージ・サービスの対象となるデータを作成する手段と、
前記管理サーバに対し、ログインの要求を送信して、該ログインの成功応答とともに、要求元のクライアント装置用に選択された前記複数のキャッシュ装置のうちの少なくとも一つを特定する情報を受信する手段と、
前記管理サーバからの情報により特定される前記キャッシュ装置に対して、前記データの書き込み要求を送信する手段と、
前記キャッシュ装置から前記マスタサーバへ中継された前記書き込み要求に対する許可を受信する手段と、
前記許可の受信に応じ、前記データを、前記管理サーバからの情報により特定される前記キャッシュ装置へ送信して保持させる手段とを備える
クライアント装置として動作させるためのプログラム。
【請求項２４】
ストレージ・サービスの対象となるデータを作成する手段を有する複数のクライアント装置と、前記ストレージ・サービスを提供するためにデータを保存して該データに対するアクセス許否を制御する手段を有する少なくとも一つのマスタサーバと、少なくとも一時的に保持していたデータを前記マスタサーバへ送信して保存させる手段を有する複数のキャッシュ装置とが接続されている、ネットワークとの間で、通信を行うことのできるコンピュータを、
前記複数のクライアント装置のうちの一つからログインの要求を受け付ける手段と、
前記ログインの成功に応じて、前記複数のキャッシュ装置のうちの少なくとも一つを、前記要求元のクライアント装置用のキャッシュ装置として、選択する手段と、
前記要求元のクライアント装置が、該装置用のキャッシュ装置に対してデータの書き込み要求を送信することにより前記マスタサーバからの該書き込み要求に対する許可を得て、該装置用のキャッシュ装置に該書き込み要求の対象となるデータを送信して保持させることができるように、選択された前記キャッシュ装置を前記要求元のクライアント装置に通知する手段とを備える
管理サーバとして動作させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報機器（クライアント）が作成し利用するデータを、ネットワーク経由でサーバ上に保存するネットワーク・ストレージの技術に関する。
【背景技術】
【０００２】
従来のコンピュータ利用は、ユーザである企業や個人等が、コンピュータのハードウェア、ソフトウェア、データ等を、自分自身で保有し、管理していたが、近年普及してきたクラウド・コンピューティングでは、ユーザは、自身の手元の機器が接続したネットワークの向こう側（データセンタ等）からサービスを受け、クラウド・サービス提供事業者に対してサービス利用料金を支払うという形態が多く採られる。
【０００３】
クラウド・サービスの利点の一つは、ネットワークへの接続環境さえあれば、ＵＳＢメモリ等のメモリ媒体を持ち歩かなくても、自分の所有するデータの保存と取り出しができることにある。さらに、ユーザがデータセンタの設備を所有せず、多数のユーザが一つのデータセンタを利用する形態とすることより、各ユーザはデータセンタの持つ高い性能を低コストで利用することができる。
【０００４】
クラウド・サービスのうち、ユーザのデータをネットワーク上のサーバに保存するサービスを、オンライン・ストレージ・サービスともいうが、このサービスをユーザが抵抗なく利用するためには、ネットワークの向こうにサーバがあることを感じさせないことが重要になる。
【０００５】
特に、インターネットのようなベストエフォートの広域ネットワークを経由する場合、サーバまでのネットワーク距離が長く、ユーザが手元の機器で作成したデータをサーバ上に保存したりサーバ上のデータを手元の機器に読み込んだりする際の体感速度が遅くなることが問題となる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００３−３４５７０９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
ネットワーク・ストレージの技術分野ではないが、コンテンツ配信の技術分野には、ＣＤＮ（コンテンツ配信ネットワーク）という技術があり、キャッシュサーバをインターネット上に分散配置して、各ユーザに対して最適なキャッシュサーバからコンテンツを送信することにより、体感速度の向上を目指している。
【０００８】
しかし、コンテンツ配信の技術では、サーバに保存されたデータをクライアントが読み込むという一方向の高速化が実現できるだけであり、ネットワーク・ストレージのようにクライアントが作成したデータをサーバに書き込むという逆方向の高速化は実現できない。
【０００９】
また、コンテンツ配信の技術において、ユーザに最適なキャッシュサーバの指定は、ＤＮＳ（ドメイン名サーバ）により行われるため、マスタサーバのドメイン名から求められるＩＰアドレスが、ＩＳＰ（情報サービスプロバイダ）毎に異なるようにすることができるだけであり、クライアントからネットワーク的に近いキャッシュサーバを指定することはできない。
【００１０】
なお、クライアントからサーバへの書き込みについてキャッシュ装置を設けた例として、特許文献１があるが、この技術は、クライアントからサーバへ向けて送信されるデータ・トラヒックが瞬間的に増大した場合に、サーバの処理がデータ受信に占有されてその他の処理性能が極度に低下してしまうという問題を解決するために、クライアントの代理としてタイミングをずらしてサーバへの書き込みを行うキャッシュ装置を設けたものであって、ユーザの体感速度の向上が実現されるものではない。
【００１１】
さらに、ネットワーク・ストレージにしたことによって、データがネットワークの向こう（リモート）にあるのか手元の機器（ローカル）にあるのかを、ユーザが意識しなければならなくなったり、ネットワークに障害が発生したときに全てのデータが利用不可能になったりするようでは、利便性が損なわれる。
【００１２】
本発明は、上記の事情に鑑み、ネットワーク・ストレージ・サービスにおいて、データの読み書きの際のユーザの体感速度を向上させ、使い勝手の良いサービスを提供することを可能にする技術を、実現することを目的とする。
【課題を解決するための手段】
【００１３】
本発明に係るネットワーク・ストレージ・システムは、ストレージ・サービスの対象となるデータを作成する手段を有する複数のクライアント装置と、前記ストレージ・サービスを提供するためにデータを保存し、該データに対するアクセス許否を制御する手段を有する少なくとも一つのマスタサーバと、前記複数のクライアント装置のうちの一つから受信したデータを少なくとも一時的に保持する手段と当該データを前記マスタサーバへ送信して保存させる手段とを各々が有する複数のキャッシュ装置と、前記複数のクライアント装置のうちの一つからログインの要求を受け付け、当該ログインの成功に応じて、要求元のクライアント装置用に前記複数のキャッシュ装置のうちの少なくとも一つを選択し、選択されたキャッシュ装置を要求元のクライアント装置に通知する手段を有する管理サーバとを備え、前記要求元のクライアント装置は、前記管理サーバから通知された前記キャッシュ装置に対して、作成した前記データの書き込み要求を送信する手段と、前記書き込み要求に対する許可の受信に応じて、前記管理サーバから通知された前記キャッシュ装置に対し、作成した前記データを送信する手段とを有し、前記キャッシュ装置は、前記クライアント装置から受信した書き込み要求を、前記マスタサーバへ中継する手段と、前記マスタサーバから受信した前記書き込み要求に対する許可を、前記クライアント装置へ中継する手段とを有する。
【００１４】
上記の構成により、ネットワーク・ストレージ・サービスにログインする際に、各クライアントが使うべきキャッシュ装置を管理サーバから指定してもらうことができ、このキャッシュ装置を利用することで、クライアント側から見えるデータ保存処理にかかる時間を、短縮することが可能になる。
【００１５】
また、データをネットワーク側に保存する（キャッシュ装置に保持させる）のに先立ち、書き込み要求をマスタサーバまで中継して、マスタサーバにてアクセス制御を行うため、複数のクライアントが同一データへの書き込みを試みたとしても、一方のみに許可を出すことにより、競合の制御を行うことが可能になる。
【００１６】
上記の管理サーバは、前記ログインの要求に含まれる認証情報に基づいて、ユーザの認証を行う手段と、前記認証に成功した場合に、前記ログインの要求に含まれる前記要求元のクライアント装置を特定する情報が示す該要求元のクライアント装置のネットワーク上の場所に基づき、前記複数のキャッシュ装置の各々の前記要求元のクライアント装置に対するネットワーク上の近さを考慮して、前記複数のキャッシュ装置のうちの少なくとも一つを選択する手段とを備えるものとすることができる。
【００１７】
これにより、各クライアントについて近隣のキャッシュ装置を選択して指定することが可能になる。
【００１８】
ここで、キャッシュ装置を選択する基準は、「ネットワーク上の近さ」に限られるものではない。例えば、「キャッシュ装置（特にキャッシュサーバ）の負荷や容量」を考慮すれば、空いているキャッシュサーバが選択されるため、クライアントへの応答速度が速くなり、ユーザの体感速度の向上に役立つ。また、「ユーザ名」を考慮することにより、プレミアユーザに対しては優先度を上げて、より速いキャッシュ装置を選択して教えるようにすることも可能である。
【００１９】
上記のシステムにおいて、前記キャッシュ装置は、前記マスタサーバに保存されたデータのコピーを少なくとも一時的に保持する手段を有し、前記要求元のクライアント装置は、前記管理サーバから通知された前記キャッシュ装置に対して、前記データの読み込み要求を送信する手段と、前記読み込み要求に対する応答として、前記管理サーバから通知された前記キャッシュ装置より、前記データのコピーを受信する手段とを有するようにしてもよい。
【００２０】
これにより、データをネットワーク側から読み込む際にも、各クライアントについて指定されたキャッシュ装置を利用することができ、クライアント側から見えるデータ呼出処理にかかる時間も、短縮することが可能になる。
【００２１】
上記のシステムにおいて、前記複数のキャッシュ装置は、前記要求元のクライアント装置と前記マスタサーバとの間に設置されているキャッシュサーバ装置と、前記複数のクライアント装置のうちの前記要求元のクライアント装置を除く他のクライアント装置とを含むものであり、前記管理サーバは、選択されたキャッシュ装置として、前記キャッシュサーバ装置のうちの少なくとも一つ、及び／又は、前記他のクライアント装置のうちの少なくとも一つを、前記要求元のクライアント装置に通知するようにしてもよい。
【００２２】
これにより、近隣のキャッシュ装置として、キャッシュサーバだけでなく、キャッシュ機能を有する他のクライアント装置を利用することが可能になり、体感速度を更に向上させるための選択肢を増やすことができる。
【００２３】
上記のシステムにおいて、前記要求元のクライアント装置と前記マスタサーバの間に、ネットワークアドレス変換装置（いわゆるＮＡＴと呼ばれる装置の他、例えば企業内プロキシサーバのように、アプリケーションゲートウェイでＩＰアドレスが変換される装置であってもよい）が設けられており、前記ネットワークアドレス変換装置から見て前記マスタサーバ寄りに、キャッシュサーバ装置が設置されており、前記複数のクライアント装置のうちの前記要求元のクライアント装置を除く他のクライアント装置の少なくとも一部は、前記ネットワークアドレス変換装置から見て前記クライアント装置寄りに存在するものであり、前記管理サーバは、前記ログインの要求に含まれる前記要求元のクライアント装置を特定する情報として、該要求元のクライアント装置のローカルアドレスを取得するものであり、選択されたキャッシュ装置として、前記キャッシュサーバ装置のグローバルアドレス、及び／又は、前記他のクライアント装置の前記一部のうちの少なくとも一つのローカルアドレスを、前記要求元のクライアント装置に通知するようにしてもよい。
【００２４】
これにより、近隣のキャッシュ装置として、クライアントから見てＮＡＴの外側にあるキャッシュサーバだけでなく、ＮＡＴの内側にある他のクライアント装置を利用することが可能になる。
【００２５】
上記のシステムにおいて、前記要求元のクライアント装置は、前記書き込み要求の送信先となるキャッシュ装置として、前記管理サーバから通知された前記キャッシュサーバ装置を用い、前記読み込み要求の送信先となるキャッシュ装置として、前記管理サーバから通知された前記キャッシュサーバ装置及び前記他のクライアント装置を用いるようにしてもよい。
【００２６】
これにより、読み込み用のキャッシュ機能は、例えば従来からあるＨＴＴＰプロキシ等により実現可能であるが、書き込み用のキャッシュ機能は、書き込み要求をマスタサーバへ向けて中継する等の新たな構成を有するものであるところ、クライアント装置に持たせるキャッシュ機能は、読み込み用のキャッシュ機能だけとしても、近隣のキャッシュ装置の選択肢を増やすことを可能にすることができる。
【００２７】
上記の管理サーバは、現在ログインしている複数のクライアント装置の各々のユーザの情報を記憶する手段を有し、前記他のクライアント装置のうちの少なくとも一つを、選択されたキャッシュ装置とする場合、記憶された前記ユーザの情報を参照して、前記要求元のクライアント装置と同一のユーザ又はユーザグループが使用しているクライアント装置を選択するようにしてもよい。
【００２８】
これにより、近隣のキャッシュ装置として、データを書き込もうとしているクライアント装置と同一のユーザ又はユーザグループが使用しているクライアント装置を選択することが可能になる。
【００２９】
上記のシステムにおいて、前記マスタサーバは、データのインデックス情報を保存する手段を備え、前記キャッシュ装置は、前記要求元のクライアント装置から受信したデータの保持に応じて、前記マスタサーバに対し該データのインデックス情報の更新を要求し、前記マスタサーバが保存する該インデックス情報が、前記データの保持場所が前記キャッシュ装置であることを示すようにする手段を備え、前記データが前記キャッシュ装置から前記マスタサーバへ送信される前に、前記複数のクライアント装置のうちの一つから該データの読み込み要求が送信される場合、前記マスタサーバに保存されている該データのインデックス情報に従って、該読み込み要求の送信先が該データを保持している前記キャッシュ装置になるようにしてもよい。
【００３０】
これにより、他のクライアントが、キャッシュ装置に保持されていて未だマスタサーバに保存されていないデータを読み込むことが可能になり、データが読み込み可能になるまでの時間も、短縮することができる。
【００３１】
上記のシステムにおいて、前記キャッシュ装置は、保持している前記データを前記マスタサーバへ送信して保存させる際に、前記マスタサーバが保存する該データのインデックス情報が、前記データの保持場所が前記マスタサーバであることを示すように、該インデックス情報の更新を前記マスタサーバに対し要求する手段を備え、前記マスタサーバは、前記キャッシュ装置からの要求に応じて、前記インデックス情報を更新するとともに、前記書き込み要求に対する許可の送信以降禁止していた同一データへの他の書き込み要求に対して、許可を与えることを可能にする手段を備えるようにしてもよい。
【００３２】
これにより、データの書き込み処理を完了させ、その書き込み処理中は禁止していた他のクライアントからの同一データへの書き込みを、許可する状態に移行することができる。
【００３３】
上記のシステムにおいて、前記マスタサーバは、データのインデックス情報を保存する手段を備え、前記要求元のクライアント装置は、前記マスタサーバに保存されたインデックス情報のコピーを保存する手段を備え、前記キャッシュ装置は、前記インデックス情報のコピーを保持しないように設定されており、前記要求元のクライアント装置から前記インデックス情報のコピーの送信を要求された場合、該インデックス情報のコピーを前記マスタサーバから取得して、前記要求元のクライアント装置へ中継する手段を備えるようにしてもよい。
【００３４】
これにより、マスタサーバに保存されている全てのデータ（但し、そのユーザのアクセスが許可されているもの）の、インデックス情報（例えば、ディレクトリ構造と各ディレクトリ中の全てのファイルの名前）については、そのコピーがクライアント装置に保存されることになり、各データの実体がクライアント装置に保持されているか否かに関わらず、クライアント装置において、オフラインでも、インデックス情報を表示してユーザに見せることが可能になる。
【００３５】
さらに、上記の要求元のクライアント装置は、保存された前記インデックス情報のコピーを、前記マスタサーバに保存された該インデックス情報の更新に合わせて更新する手段と、更新された前記インデックス情報のコピーに基づいて、ユーザに、書き込み対象となるデータ又は読み込み対象となるデータを指定させる手段と、指定されたデータの実体を少なくとも一時的に自装置内に保持する手段とを備えるようにしてもよい。
【００３６】
これにより、クライアント装置において、インデックス情報によりその存在が示されるデータのうちの、ユーザにより指定された一部について、データの実体を保持することが可能になり、そのデータについては、オフラインでも、利用することが可能になる。そして、ユーザから見ると、例えば、ディレクトリ構造と全ファイル名が表示された状態で、読み書きしたいファイルをクリックすれば、そのファイルの実体がクライアント装置に保持されていればそれが、保持されていなければネットワーク側から取得したものが、表示されることになり、リモートかローカルかを意識させないユーザ・インタフェースを提供することが可能になる。しかも、ネットワーク・ストレージであるから、どのクライアント装置を使用しても、ユーザに対して同じインタフェースが提供されることになる。
【００３７】
上記のシステムにおいて、前記要求元のクライアント装置は、書き込み対象となるデータ又は読み込み対象となるデータの名前を入力する手段と、前記管理サーバから通知された前記キャッシュ装置に対して送信する書き込み要求又は読み込み要求に、入力された前記名前にバージョン番号を付加した情報を、該要求の対象となるデータを特定する情報として含める手段とを備え、前記名前と前記バージョン番号との組合せにより特定されるデータの内容は、更新されることがないものであるようにしてもよい。
【００３８】
このように、データの名前にバージョン番号を付加したものによりデータを特定するようにする（例えば、ファイルのバージョン番号を含めた形式のＵＲＬを用いる）と、一旦ファイルのＵＲＬを決めたら、そのＵＲＬにより取得されるファイルの内容は常に不変であるようにすることができる。そうすると、ＵＲＬとそのファイル内容との対応が変わらないため、キャッシュ装置（例えば、プロキシサーバ）に、ファイル内容を長時間キャッシュさせることができ、読み込みの体感速度を更に向上することが可能になる。つまり、ファイル内容が変わる場合には、古いファイル内容がキャッシュ装置に残っていることがないように保持時間を調整することが必要になるが、そのような必要をなくすことができるため、キャッシュ装置のストレージ容量に余裕がある限り保持し続けることが可能になる。
【００３９】
上記のようにデータの名前にバージョン番号を付加して管理するシステムにおいて、前記マスタサーバが、データのインデックス情報を保存する手段を備え、前記要求元のクライアント装置が、前記マスタサーバに保存されているインデックス情報のコピーを保存する手段を備えるようにし、データを新規に作成するケース（１）のインデックス情報、既存データを更新するケース（２）のインデックス情報、既存データを削除するケース（３）のインデックス情報を、それぞれ下記のように構成してもよい。
【００４０】
ケース（１）では、前記書き込み要求を利用して新規データの書き込みを行うため、前記インデックス情報のコピーに示される該データの不存在を確認すると、バージョン番号をゼロとして該データのインデックス情報を新規に作成し、ゼロの次のバージョン番号を、前記書き込み要求の対象となるデータを特定するバージョン番号とする。
【００４１】
ケース（２）では、前記書き込み要求を利用して既存データの更新を行うため、前記インデックス情報のコピーに示される該データの現存する最新のバージョン番号から、次のバージョン番号を求めて、該次のバージョン番号を、前記書き込み要求の対象となるデータを特定するバージョン番号とする。
【００４２】
ケース（３）では、前記書き込み要求を利用して既存データの削除を行うため、前記インデックス情報のコピーに示される該データの現存する最新のバージョン番号から、次のバージョン番号を求めて、該次のバージョン番号を、前記書き込み要求の対象となるデータを特定するバージョン番号とするとともに、該書き込み要求に該データの状態を削除とする指示を含ませる。
【００４３】
上記のようにデータの名前にバージョン番号を付加して管理するシステムにおいては、前記要求元のクライアント装置と前記キャッシュ装置との間に、読み込み専用キャッシュ装置を介在させることができるため、読み込みの体感速度を更に向上することが可能になる。
【００４４】
この読み込み専用キャッシュ装置は、前記マスタサーバに保存されたデータのコピーを少なくとも一時的に保持する手段と、前記要求元のクライアント装置から前記キャッシュ装置へ送信される前記データの読み込み要求を中継する手段と、前記データのコピーが保持されている場合には、前記読み込み要求を中継せずに、前記読み込み要求に対する応答として、前記要求元のクライアント装置に対して前記データのコピーを送信する手段とを備えるものとすることができる。
【００４５】
上記のシステムにおいて、前記要求元のクライアント装置は、作成した前記データを、該要求元のクライアント装置のユーザの公開鍵、及び／又は、該データの解読を許すユーザの公開鍵を用いて、暗号化してから、送信するものであり、前記複数のキャッシュ装置は、データを暗号化されたまま保持するものであり、前記マスタサーバは、データを暗号化されたまま保存するものであるようにしてもよい。
【００４６】
これにより、データは、クライアント側で暗号化され、サーバ側にはその暗号を解くための鍵を持たせない運用が可能になる。よって、サーバ管理者にデータの内容を見られないようにすることができ、サーバ側で情報漏えいが起きても、データ内容の機密性を保つことができる。
【００４７】
さらに、ＳＳＬ等を用いて通信路を暗号化するのでなく、クライアントが暗号化したデータをＨＴＴＰ等の通信路に入れることができるため、クライアントとマスタサーバの間のプロキシでキャッシュをすることが可能である。
【００４８】
また、データの名前にバージョン番号を付加して管理することによりキャッシュ装置で長時間データを保持可能として体感速度を向上させようとすると、広範囲の多数のキャッシュ装置にデータ保持させることによって情報漏えいのリスクが高まる懸念が出てくるが、クライアント側で暗号化されたデータを保持するのであれば、データ内容の機密性を保ちつつ、体感速度の向上が実現できる。
【００４９】
なお、公開鍵暗号方式を採用し、公開鍵と秘密鍵のセットをユーザ毎に付与して、同一ユーザが使用する複数のクライアント装置でそのユーザ用の鍵を共有することにより、あるクライアント装置で作成し暗号化したデータを、同一ユーザが使用する別のクライアント装置がネットワーク経由で取得し復号化して利用することも可能になる。
【００５０】
上記のシステムにおいて、前記要求元のクライアント装置は、前記管理サーバから通知された前記キャッシュ装置に対して送信する前記書き込み要求及び前記データのそれぞれに、前記要求元のクライアント装置のユーザの秘密鍵を用いて署名を付加する手段を備え、前記キャッシュ装置は、前記要求元のクライアント装置から受信した前記書き込み要求及び前記データのそれぞれに付加された署名を、前記ユーザの公開鍵を用いて検証する手段を備えるようにしてもよい。
【００５１】
このように、公開鍵認証方式を用いてユーザ認証を行うことにより、公開鍵という秘密でない情報を用いて認証ができるため、ユーザのパスワード（秘密を保たなければならない情報）をサーバ側に格納しておく必要がなくなり、安全性を高めることが可能になる。
【００５２】
本発明に係るクライアント装置は、ストレージ・サービスを提供するためにデータを保存して該データに対するアクセス許否を制御する手段を有する少なくとも一つのマスタサーバと、少なくとも一時的に保持していたデータを前記マスタサーバへ送信して保存させる手段を有する複数のキャッシュ装置と、前記ストレージ・サービスに加入するユーザからのログインを管理する手段を有する管理サーバとが接続されている、ネットワークとの間で、通信を行うための通信手段と、前記ストレージ・サービスの対象となるデータを作成する手段と、前記管理サーバに対し、ログインの要求を送信して、該ログインの成功応答とともに、要求元のクライアント装置用に選択された前記複数のキャッシュ装置のうちの少なくとも一つを特定する情報を受信する手段と、前記管理サーバからの情報により特定される前記キャッシュ装置に対して、前記データの書き込み要求を送信する手段と、前記キャッシュ装置から前記マスタサーバへ中継された前記書き込み要求に対する許可を受信する手段と、前記許可の受信に応じ、前記データを、前記管理サーバからの情報により特定される前記キャッシュ装置へ送信して保持させる手段とを備える。
【００５３】
上記のクライアント装置にキャッシュ機能を持たせるため、前記ネットワークに接続される他のクライアント装置から受信した第二の書き込み要求を、前記マスタサーバへ中継する手段と、前記マスタサーバから受信した前記第二の書き込み要求に対する許可を、前記他のクライアント装置へ中継する手段と、前記第二の書き込み要求による書き込みの対象となるデータを、前記他のクライアント装置から受信して、少なくとも一時的に保持する手段と、保持された前記データを前記マスタサーバへ送信して保存させる手段とを更に備えさせてもよい。
【００５４】
本発明に係る管理サーバは、ストレージ・サービスの対象となるデータを作成する手段を有する複数のクライアント装置と、前記ストレージ・サービスを提供するためにデータを保存して該データに対するアクセス許否を制御する手段を有する少なくとも一つのマスタサーバと、少なくとも一時的に保持していたデータを前記マスタサーバへ送信して保存させる手段を有する複数のキャッシュ装置とが接続されている、ネットワークとの間で、通信を行うための通信手段と、前記複数のクライアント装置のうちの一つからログインの要求を受け付ける手段と、前記ログインの成功に応じて、前記複数のキャッシュ装置のうちの少なくとも一つを、前記要求元のクライアント装置用のキャッシュ装置として、選択する手段と、前記要求元のクライアント装置が、該装置用のキャッシュ装置に対してデータの書き込み要求を送信することにより前記マスタサーバからの該書き込み要求に対する許可を得て、該装置用のキャッシュ装置に該書き込み要求の対象となるデータを送信して保持させることができるように、選択された前記キャッシュ装置を前記要求元のクライアント装置に通知する手段とを備える。
【００５５】
本発明に係るネットワーク・ストレージの方法は、データを保存して該データに対するアクセス許否を制御する手段を有する少なくとも一つのマスタサーバにより提供されるストレージ・サービスの対象となるデータを作成する手段を有する複数のクライアント装置のうちの一つが、管理サーバに対して、ログインの要求を送信し、前記管理サーバは、少なくとも一時的に保持していたデータを前記マスタサーバへ送信して保存させる手段を有する複数のキャッシュ装置に関する情報を記憶しており、前記ログインの要求を受け付けた前記管理サーバは、該ログインの成功に応じ、該要求元のクライアント装置用に前記複数のキャッシュ装置のうちの少なくとも一つを選択して、選択されたキャッシュ装置を前記要求元のクライアント装置に通知し、前記要求元のクライアント装置は、前記管理サーバから通知された前記キャッシュ装置に対して、作成したデータの書き込み要求を送信し、前記キャッシュ装置は、前記クライアント装置から受信した書き込み要求を、前記マスタサーバへ中継し、前記マスタサーバから受信した前記書き込み要求に対する許可を、前記クライアント装置へ中継し、前記要求元のクライアント装置は、前記書き込み要求に対する許可の受信に応じ、前記管理サーバから通知された前記キャッシュ装置に対して、前記書き込み要求の対象となるデータを送信し、前記キャッシュ装置は、前記クライアント装置から受信したデータを少なくとも一時的に保持する。
【００５６】
本発明に係る第一のプログラムは、ストレージ・サービスを提供するためにデータを保存して該データに対するアクセス許否を制御する手段を有する少なくとも一つのマスタサーバと、少なくとも一時的に保持していたデータを前記マスタサーバへ送信して保存させる手段を有する複数のキャッシュ装置と、前記ストレージ・サービスに加入するユーザからのログインを管理する手段を有する管理サーバとが接続されている、ネットワークとの間で、通信を行うことのできるコンピュータを、前記ストレージ・サービスの対象となるデータを作成する手段と、前記管理サーバに対し、ログインの要求を送信して、該ログインの成功応答とともに、要求元のクライアント装置用に選択された前記複数のキャッシュ装置のうちの少なくとも一つを特定する情報を受信する手段と、前記管理サーバからの情報により特定される前記キャッシュ装置に対して、前記データの書き込み要求を送信する手段と、前記キャッシュ装置から前記マスタサーバへ中継された前記書き込み要求に対する許可を受信する手段と、前記許可の受信に応じ、前記データを、前記管理サーバからの情報により特定される前記キャッシュ装置へ送信して保持させる手段とを備えるクライアント装置として動作させる。
【００５７】
本発明に係る第二のプログラムは、ストレージ・サービスの対象となるデータを作成する手段を有する複数のクライアント装置と、前記ストレージ・サービスを提供するためにデータを保存して該データに対するアクセス許否を制御する手段を有する少なくとも一つのマスタサーバと、少なくとも一時的に保持していたデータを前記マスタサーバへ送信して保存させる手段を有する複数のキャッシュ装置とが接続されている、ネットワークとの間で、通信を行うことのできるコンピュータを、前記複数のクライアント装置のうちの一つからログインの要求を受け付ける手段と、前記ログインの成功に応じて、前記複数のキャッシュ装置のうちの少なくとも一つを、前記要求元のクライアント装置用のキャッシュ装置として、選択する手段と、前記要求元のクライアント装置が、該装置用のキャッシュ装置に対してデータの書き込み要求を送信することにより前記マスタサーバからの該書き込み要求に対する許可を得て、該装置用のキャッシュ装置に該書き込み要求の対象となるデータを送信して保持させることができるように、選択された前記キャッシュ装置を前記要求元のクライアント装置に通知する手段とを備える管理サーバとして動作させる。
【００５８】
なお、上述したネットワーク・ストレージ・システム、方法、クライアント装置、管理サーバ、及びプログラム（又はそのプログラムを記録した記録媒体）の発明はいずれも、他のカテゴリの発明としても、勿論成立するものである。また、キャッシュ装置としての発明も、含まれている。
【発明の効果】
【００５９】
以上のとおり、本発明によれば、ネットワーク・ストレージ・サービスにおいて、データの読み書きの際のユーザの体感速度を向上させ、使い勝手の良いサービスを提供することが可能になる。
【図面の簡単な説明】
【００６０】
【図１】本発明の実施形態に係るネットワーク・ストレージ・システムを含む全体構成の一例を示す図
【図２】本システムにおけるサーバ選択に係る動作シーケンスの一例を示す図
【図３】本システムにおけるファイル作成（データ書き込みの一種）要求に係る動作シーケンスの一例を示す図
【図４】本システムにおけるファイル更新（データ書き込みの一種）要求に係る動作シーケンスの一例を示す図
【図５】本システムにおけるファイル削除（データ書き込みの一種）要求に係る動作シーケンスの一例を示す図
【図６】本システムにおけるアカウント管理サーバの内部構成の一例を示す図
【図７】本システムにおけるクライアントの内部構成の一例を示す図
【図８】本システムにおける読み書き対応キャッシュサーバの内部構成の一例を示す図
【図９】本システムにおけるマスタサーバの内部構成の一例を示す図
【図１０】アカウント管理サーバ、読み書き対応キャッシュサーバ、マスタサーバが有する公開鍵テーブルの一例を示す図
【図１１】アカウント管理サーバが有する（ａ）ユーザ接続管理テーブル、（ｂ）キャッシュサーバ管理テーブルの一例を示す図
【図１２】クライアントが有する（ａ）インデックス情報テーブル、（ｂ）接続先サーバ管理テーブルの一例を示す図
【図１３】読み書き対応キャッシュサーバが有する（ａ）認証テーブル、（ｂ）上流サーバ管理テーブルの一例を示す図
【図１４】マスタサーバが有するインデックス情報テーブルの一例を示す図
【図１５】アカウント管理サーバによるログイン処理の一例を示すフローチャート
【図１６】クライアントによるログイン処理の一例を示すフローチャート
【図１７】クライアントによるインデックス情報の同期処理の一例を示すフローチャート
【図１８】クライアントによるファイル取得（データ読み込み）処理の一例を示すフローチャート
【図１９】図１８におけるサーバ間通信管理部のファイル取得処理の一例を示すフローチャート
【図２０】クライアントによるファイル作成処理の一例を示すフローチャート
【図２１】図２０におけるサーバ間通信管理部のファイル作成処理の一例を示すフローチャート
【図２２】クライアントによるファイル更新処理の一例を示すフローチャート
【図２３】図２２におけるサーバ間通信管理部のファイル更新処理の一例を示すフローチャート
【図２４】クライアントによるファイル削除処理の一例を示すフローチャート
【図２５】図２４におけるサーバ間通信管理部のファイル削除処理の一例を示すフローチャート
【図２６】読み書き対応キャッシュサーバによるインデックス取得要求処理の一例と、ファイル取得要求（読み込み要求）処理の一例を示すフローチャート
【図２７】読み書き対応キャッシュサーバによるファイル作成・更新要求処理の一例と、ファイル登録要求処理の一例を示すフローチャート
【図２８】図２７のファイル登録要求処理のうちインデックス更新・サーバアップロード・署名検証の詳細処理の一例と、読み書き対応キャッシュサーバによるファイル削除要求処理の一例を示すフローチャート
【図２９】マスタサーバによるインデックス取得要求処理の一例と、ファイル取得要求（読み込み要求）処理の一例を示すフローチャート
【図３０】マスタサーバによるファイル作成要求処理の一例を示すフローチャート
【図３１】マスタサーバによるファイル登録要求処理の一例を示すフローチャート
【図３２】マスタサーバによるファイル更新要求処理の一例を示すフローチャート
【図３３】マスタサーバによるインデックス更新要求処理の一例を示すフローチャート
【図３４】マスタサーバによるファイル削除要求処理の一例を示すフローチャート
【発明を実施するための形態】
【００６１】
以下、図面を参照して、本発明の一実施形態に係るネットワーク・ストレージ・システムを説明する。図１は、本システムを含む全体構成を示す図である。
【００６２】
図１の例では、説明のため、組織Ｄに属するユーザ５がクライアント５−１及び５−２を使用し、同じく組織Ｄに属するユーザ６がクライアント６−１を使用し、組織Ｅに属するユーザ８がクライアント８−１を使用し、組織Ｆに属するユーザ９がクライアント９−１及び９−２を使用するものとする。実際のシステムでは、各組織の多数のユーザがそれぞれ任意の数の機器を使用できることは勿論である。また、例えば、組織Ｄと組織Ｅ又は組織Ｆとが同じ企業に属するものであってもよい。
【００６３】
これらのクライアントは、ネットワークを介して、アカウント管理サーバ１、マスタサーバ２（マスタサーバ群Ａを形成する）、読み書き対応キャッシュサーバ３−１、３−２（読み書き対応キャッシュサーバ群Ｂを形成する）、読み込み用キャッシュサーバ４−１、４−２（読み込み用キャッシュサーバ群Ｃを形成する）に接続することが可能である。各クライアントはまた、自身が接続する組織内のＬＡＮもしくはその他の通信手段を介して、他のクライアントに接続することも可能である。
【００６４】
アカウント管理サーバ１及びサーバ群Ａ、Ｂ、Ｃは、いわゆるクラウドを形成するサーバ群とすることができ、これらはそれぞれ、大規模なデータセンタであってもよいし、一つのサーバであってもよい。少なくともキャッシュサーバ群Ｂ、Ｃは、複数拠点に分散して配置されることが望ましい。サーバ群Ａ、Ｂ、Ｃは、ファイルもしくはメッセージ等、どのような形式のデータを扱うものでも、本実施形態が適用可能である。
【００６５】
また、これらのサーバ群とクライアントとの間にＮＡＴルータ７、１０が存在して、組織内ＬＡＮにおけるローカルＩＰアドレスと、広域ネットワークにおけるグローバルＩＰアドレスとの間のアドレス変換を行うようにしてもよい。
【００６６】
ネットワークは、パブリッククラウドの場合は典型的にはインターネットであり、プライベートクラウドの場合は企業内ネットワークでもよい。各クライアントで作成されたデータはマスタサーバ２に保存され、ユーザはサーバ上のデータを読み書きすることになるため、同一ユーザが複数のクライアントを持ち、あるクライアントで作成したデータを別のクライアントで利用することが簡単にできる。クライアント内にデータを残さないようにすれば、セキュリティ上も利点がある。
【００６７】
クライアント５−１、５−２、６−１、８−１、９−１、９−２は、一般的なクライアントコンピュータ（パソコン、ＰＤＡ、スマートフォン等）で構成でき、ファイル共有サービスを利用するためのソフトウェアが導入された端末である。この端末は、図７に示すように、ファイル管理部、ファイル格納部、サーバ間通信管理部、ユーザインタフェース処理部、インデックス同期処理部、暗号処理部、接続管理部を備える。
【００６８】
各クライアントは、自身のユーザ名を保持する。ユーザ名は、使用ユーザを一意に識別するためのアカウント名であり、アカウント管理サーバ１により管理されるものである。メールアドレスなどを用いてユーザ名としてもよい。
【００６９】
各クライアントはまた、自身のユーザ公開鍵とユーザ秘密鍵を保持する（図７における公開鍵管理テーブルと秘密鍵管理テーブル）。これらは、ユーザを識別し、認証するために用いるものであり、ユーザ秘密鍵は、ユーザが使用するクライアントにのみ保持される。ユーザ公開鍵は、ユーザが使用するクライアントに保持される他、アカウント管理サーバや、マスタサーバ、読み書き対応キャッシュサーバ内にも保持される。
【００７０】
各クライアントはさらに、図１２（ａ）に示すインデックス情報テーブルと、図１２（ｂ）に示す接続先サーバ管理テーブルとを備える。
【００７１】
アカウント管理サーバ１は、ユーザのログイン時の認証処理を行うサーバであり、接続してきたクライアントに対し、近隣のサーバおよびクライアントのリストを提示する役割を持ってもよい。アカウント管理サーバ１は、一般的なサーバコンピュータで構成でき、図６に示すように、認証管理部、近隣サーバ管理部、近隣クライアント管理部を備える。
【００７２】
アカウント管理サーバ１はまた、図１０に示す公開鍵管理テーブルと、図１１（ａ）に示すユーザ接続管理テーブルと、図１１（ｂ）に示すキャッシュサーバ管理テーブルとを備える。
【００７３】
図１０の公開鍵管理テーブルは、本システムを利用する全てのユーザのユーザ名と、それに対応するユーザの公開鍵を保持するものであり、読み書き対応キャッシュサーバ３−１、３−２と、マスタサーバ２にも、同じ内容の公開鍵管理テーブルが保持される。各サーバの公開鍵管理テーブルは、同期処理を随時行って同じ内容が保持されるようにするが、マスタは、アカウント管理サーバ内に保持される。
【００７４】
図１１（ａ）のユーザ接続管理テーブルは、ログインに成功したユーザのログイン要求から得られる情報を記憶しておくためのものであり、ログアウトしたユーザの情報は消去される。最終確認日時を一緒に記憶しておき、一定期間より古いものは、近隣クライアントの選択対象から除くようにしてもよい。
【００７５】
図１１（ｂ）のキャッシュサーバ管理テーブルは、各クライアントについて近隣の読み書き対応キャッシュサーバを特定する情報を登録しておくためのものであり、本システムの管理者ないしアカウント管理サーバの管理者により作成されてもよいし、外部のサーバから情報を取得して登録するようにしてもよい。ネットワーク的に近いかどうか、の判断は、ネットワークのルーティング構成情報や定期的な品質測定結果などを用いて行ってもよい。
【００７６】
これらの管理テーブルを用いて、アカウント管理サーバ１は、クライアントからのログイン要求を受け入れる際に、クライアントのＩＰアドレスをもとに、ネットワーク的に近い近隣クライアントやキャッシュサーバのリストを生成する。そして、クライアントに、ログイン成功応答とともに、接続先クライアントリストと接続先サーバリストを返送する。
【００７７】
マスタサーバ２は、ファイル共有サービスを提供するサーバであり、ユーザの送信したファイルを保持し、管理する。マスタサーバ２は、一般的なサーバコンピュータで構成でき、図９に示すように、リクエスト処理部、ファイル管理部、ファイル格納部、インデックス管理部、認証処理部を備える。
【００７８】
マスタサーバ２のファイル格納部は、ユーザから受信したファイルの本体を保持するものであり、このファイルがマスタとなる。クライアントのファイル格納部に格納されるファイルは、一旦マスタサーバ２に格納された後はコピーとなる。
【００７９】
マスタサーバ２はまた、図１０の公開鍵管理テーブルと、図１４に示すインデックス情報テーブルとを備える。マスタサーバの持つインデックス情報テーブル（図１４）がマスタであり、クライアントの持つインデックス情報テーブル（図１２（ａ））は、マスタの一部のコピーであって、マスタに同期するものである。
【００８０】
読み書き対応キャッシュサーバ３−１、３−２は、クライアントに対し、キャッシュ機能を提供するサーバであり、クライアントからの読み込み要求と、書き込み要求をキャッシュする。各読み書き対応キャッシュサーバ３は、一般的なサーバコンピュータで構成でき、図８に示すように、読み書きキャッシュ処理部、ファイルキャッシュ部、認証処理部を備える。
【００８１】
各読み書き対応キャッシュサーバ３はまた、図１０の公開鍵管理テーブルと、図１３（ａ）に示す認証テーブルと、図１３（ｂ）に示す上流サーバ管理テーブルとを備える。
【００８２】
読み込み用キャッシュサーバ４−１、４−２は、クライアントに対し、キャッシュ機能を提供するサーバであり、クライアントからの読み込み要求をキャッシュする。読み込み用キャッシュサーバは、本システムに存在してもしなくてもよく、存在させる場合は、ＩＥＴＦ（Internet Engineering Task Force）のＲＦＣ２６１６に基づいて、一般的なＨＴＴＰ（Hypertext Transfer Protocol）プロキシの動作を行うサーバとすればよい。
【００８３】
上記のクライアント及びサーバの各部の機能については、以下に詳述するが、汎用コンピュータにソフトウェアプログラムをインストールすることにより実装されてもよいし、機能の一部又は全部を専用ハードウェア化して実装してもよい。
【００８４】
図２は、本システムにおけるサーバ選択に係る動作シーケンスの一例を示す。本システムの利用に先立ち、各クライアントは、アカウント管理サーバに対してログイン要求１０１を送信する。ログイン要求１０１には、「ユーザ名」と「パスワードあるいは署名」とが含まれる。なお、署名を作成する場合は、ユーザ名に対して、そのクライアントの保持するユーザ秘密鍵を用いて作成する。署名は公開鍵暗号を用いて作成する。
【００８５】
ログイン要求１０１にはまた、アカウント管理サーバで近隣サーバ及び近隣クライアントを選択するために用いる「ローカルＩＰアドレス」と「ローカルサブネットマスク」とが含まれる。
【００８６】
アカウント管理サーバは、クライアントからログイン要求１０１を受信すると、クライアント認証１０２を行い、ログイン要求の受け入れ可否を判断する。
【００８７】
ログイン要求に署名を含む場合、はじめに、公開鍵管理テーブルより「ユーザ名」をキーとしてユーザ公開鍵証明書（ユーザ公開鍵）を取得する。次に、取得したユーザ公開鍵を用いて、署名の検証を行う。署名の検証に成功した場合は、ログインを許可する。検証に失敗した場合は、ログインを拒否する。
【００８８】
ログイン要求にパスワードを含む場合、公開鍵管理テーブルより「ユーザ名」をキーとして「パスワード」を取得する。そして、パスワードの比較を行い、ログイン可否を判断する。
【００８９】
ログインを許可する場合は、接続先サーバ選択１０３に進む。ログインを拒否する場合は、クライアントに対してエラー応答を送信し、処理を中断する。
【００９０】
アカウント管理サーバは、接続先サーバ選択１０３として、クライアントの「ローカルＩＰアドレス」、「ローカルサブネットマスク」（ログイン要求に含まれる）と「グローバルＩＰアドレス」（ログイン要求のＩＰパケットヘッダより取得される）とをもとに、近隣のクライアント一覧と、近隣のキャッシュサーバの一覧を取得する。
【００９１】
近隣クライアントの一覧は、図１１（ａ）のユーザ接続管理テーブルを検索することにより、取得する。ユーザ接続管理テーブルから、接続クライアントと同一ユーザ名を持ち、接続クライアントの「グローバルＩＰアドレス」が一致し、さらに、接続クライアントの「ローカルＩＰアドレス」および「ローカルサブネットマスク」のアドレス空間と同じローカルＩＰアドレスを持つユーザを検索する。これで検索されたエントリのリストを、近隣クライアント一覧とする。
【００９２】
近隣サーバの一覧は、図１１（ｂ）のキャッシュサーバ管理テーブルを検索することにより、取得する。接続クライアントのグローバルＩＰアドレスと、キャシュサーバ管理テーブルのクライアントＩＰアドレス及びサブネットマスク長が一致する項目を検索する。これにより、クライアントから近いサーバのリストを取得することができる。
【００９３】
アカウント管理サーバは、その後、ログイン要求を送ってきたクライアントへ、成功応答１０４を返送する。その際、近隣クライアントと近隣サーバのリストを、それぞれ、「接続先クライアントリスト」、「接続先サーバリスト」として、成功応答に含める。
【００９４】
クライアントは、ログインに成功すると、定期的にインデックス取得要求１０５を接続先サーバに対して送信する。ここで、インデックス取得要求を送信する相手方は、ログイン時に取得した接続先サーバである。
【００９５】
このとき、インデックス取得要求が送信される相手方となる接続先サーバは、読み書き対応キャッシュサーバか、または、マスタサーバのいずれかになる。読み書き対応キャッシュサーバは、クライアントに対しては自身がマスタサーバであるかのように振る舞う。このため、クライアントは接続先サーバがキャッシュサーバであるか、またはマスタサーバであるかは特に意識しない。また、接続先サーバとして読み込み用キャッシュサーバが指定されていてもよい。
【００９６】
また、インデックスを取得する際にユーザの認証を行うこととしてもよい。その場合、クライアントは、インデックス取得要求１０５に、ユーザ名と署名とを含める。インデックスの一部を取得したい場合、ディレクトリのファイル識別子を含めてもよい。
【００９７】
近隣読み書き対応キャッシュサーバ(以下、読み書き対応キャッシュサーバ)がインデックス取得要求１０５を受信すると、マスタサーバに対して、直ちに同じインデックス取得要求１０６を送信する。このとき、読み書き対応キャッシュサーバは、マスタサーバに対しては自身がクライアントであるかのように振る舞う。
【００９８】
また、インデックスの取得にあたりユーザの認証が必要な場合、ここでマスタサーバに送信するユーザ名や署名などの情報は、クライアントから受信したものをそのままマスタサーバに送信する。読み書き対応キャッシュサーバはこの段階で認証の処理を行ってもよい。認証の処理を行う場合には、クライアントから受信した署名を検証する。検証に成功すればアクセスを許可しマスタサーバにリクエストを送信する。検証に失敗すればアクセスを拒否しクライアントへエラー応答を返送する。
【００９９】
マスタサーバは、インデックス取得要求１０６を受け、ユーザの認証が必要かどうかを確認する。ユーザの認証が必要な場合は、はじめに、インデックス取得要求１０６に含まれる署名を検証する。検証に失敗すればエラー応答を送信する。検証に成功した場合、次に、取得対象のインデックスにユーザがアクセスすることができるかどうかを検証する。具体的には、マスタサーバのインデックス情報テーブル（図１４）の「ファイル所有者」の項目を確認し、インデックス取得要求１０６に含まれるユーザ名と一致するかどうかを確認する。一致する場合は正当な要求として扱う。一致しない場合はエラー応答を返送する。
【０１００】
その後、マスタサーバは、インデックス情報テーブルの内容（インデックス）を、インデックス取得応答１０７に含めて、読み書き対応キャッシュサーバに返送する。
【０１０１】
読み書き対応キャッシュサーバは、クライアントに対してインデックス取得応答１０８を返送する。インデックス取得応答１０８には、マスタサーバより受信したインデックス取得応答１０７に含まれていたインデックスを含ませる。このとき、読み書き対応キャッシュサーバはクライアントに対しては、自身がマスタサーバであるかのように振る舞う。
【０１０２】
クライアントは、インデックスを取得したあと、取得したいファイルをファイル識別子に指定して、読み込み要求（ファイル取得要求ともいう）を送信する。クライアントは、接続先クライアントと接続先サーバの双方に対して並行に要求を送信することができる。読み込み要求１０９は、接続先クライアント（近隣クライアント）に要求を送信する場合の例であり、読み込み要求１１１は、接続先サーバ（近隣読み書き対応キャッシュサーバ）に要求を送信する場合の例である。
【０１０３】
ここで、ファイル識別子は、特定のバージョンのファイルまたはディレクトリを一意に指し示すための名前（ＩＤ）である。ファイル名またはディレクトリ名と、バージョン番号を連結することで作成することができる。
【０１０４】
近隣クライアントは、読み込み要求１０９を受信した際、自身がファイル識別子で指定されたファイルを保持している場合、要求元に成功応答１１０を返すとともに、ファイルの本体を返送する。
【０１０５】
近隣クライアントは、自身がファイルを保持していない場合、エラー応答を返してもよい。もしくは、自身がキャッシュサーバ（プロキシ）となってマスタサーバにファイル取得要求を中継してもよい。
【０１０６】
読み書き対応キャッシュサーバは、読み込み要求１１１を受信した際、自身がファイル識別子で指定されたファイルを保持している場合、要求元に成功応答とともにファイルの本体を返送する。自身がファイルを保持していない場合、マスタサーバに読み込み要求を中継する。この際、インデックス取得要求等の場合と同様に、マスタサーバに対して自身がクライアントとして読み込み要求１１２を送信する動作（プロキシ動作）を行う。
【０１０７】
マスタサーバは、読み書き対応キャッシュサーバに対して成功応答１１３を返送する。成功応答１１３には、ファイルの本体を含む。
【０１０８】
マスタサーバからの成功応答１１３を受信した読み書き対応キャッシュサーバは、クライアントに対して同じファイルの本体を含む成功応答１１４を返送する。この際、クライアントに対して自身がマスタサーバであるかのように振る舞う（プロキシ動作を行う）。
【０１０９】
クライアントは、読み込み要求１０９と読み込み要求１１１の両方を送信する場合、先に成功応答が返ってきた方を採用する。つまり、クライアントは、ログイン時に受け取った接続先のリストをもとに、並列に読み込み要求を送信してもよい。その場合、もっとも早く取得できた方の応答を採用する。
【０１１０】
図３は、本システムにおけるファイル作成要求に係る動作シーケンスの一例を示す。各クライアントは、ファイルの新規作成を行う際に、自身の近隣読み書き対応キャッシュサーバ（以下、読み書き対応キャッシュサーバ）に対し、ファイル作成要求２０１を送信する。
【０１１１】
ファイル作成要求２０１には、ユーザ名とファイル識別子と署名とを含める。署名は、ユーザ秘密鍵を用いて公開鍵暗号を行うことにより作成する。具体的には、「ユーザ名」と「ファイル識別子」を結合した文字列を作成し、この文字列に対して公開鍵暗号を適用し、署名とする。
【０１１２】
このようにして作成したファイル作成要求２０１を、読み書き対応キャッシュサーバが受信した場合は、マスタサーバに対して要求を中継する。すなわち、読み書き対応キャッシュサーバは、マスタサーバに対しては、自身がクライアントであるかのように振る舞い、ファイル作成要求２０２を送信する（ＨＴＴＰプロキシとしての動作を行う）。
【０１１３】
ファイル作成要求２０２を受信したマスタサーバは、認証とアクセス制限確認２０３を行う。すなわち、署名を検証した後に、ファイルのアクセス権限を確認する。いずれも問題なければ、該当のファイルをロックする。
【０１１４】
そして、マスタサーバは、要求元に対して成功応答２０４を返す。成功応答２０４には、ファイル識別子とユーザ名とが含まれる。成功応答２０４は、クライアント内で新規作成されたファイルをマスタサーバに登録することを許可するという作成許可を表す。
【０１１５】
成功応答２０４を受信した読み書き対応キャッシュサーバは、認証情報の保存２０５を行う。すなわち、成功応答２０４に含まれるファイル識別子とユーザ名とを、図１３（ａ）の認証テーブルに保存する。
【０１１６】
読み書き対応キャッシュサーバは、認証情報を保存した後、成功応答２０６をクライアントに中継する。ここでは、読み書き対応キャッシュサーバは、クライアントに対しては、自身がマスタサーバであるかのように振る舞い、成功応答２０６を送信する（ＨＴＴＰプロキシとしての動作を行う）。
【０１１７】
クライアントは、自身の中で新規作成されたファイルの本体を登録するために、ファイル登録要求２０７を送信する。ファイル登録要求２０７には、ユーザ名とファイル識別子とファイル本体と署名とを含める。
【０１１８】
読み書き対応キャッシュサーバは、まず、ファイル登録要求２０７に含まれる署名を検証し、問題なければ、認証２０８を行う。すなわち、図１３（ａ）の認証テーブルを確認し、ファイル登録要求２０７に含まれるユーザ名とファイル識別子が一致する項目が存在するかどうかを確認する。存在する場合、正しい要求とみなして、ファイル登録要求２０７に含まれるファイル本体を、自身のファイルキャッシュ部にキャッシュする。
【０１１９】
キャッシュできた場合、読み書き対応キャッシュサーバは、クライアントに対して成功応答２０９を返送する。
【０１２０】
キャッシュできた場合、読み書き対応キャッシュサーバはさらに、マスタサーバに対してインデックス更新要求２１０を送信する。これは、自身がファイルを保持していることを通知するためであり、インデックス更新要求２１０には、キャッシュされたファイルのファイル識別子を含ませる。
【０１２１】
マスタサーバは、インデックス更新要求２１０を受けて、インデックス更新処理２１１を行う。すなわち、インデックス更新要求２１０に含まれるファイル識別子に関して、図１４のインデックス情報テーブルを更新する。このとき、ファイル識別子で指定されたファイルの「ファイル保持ホスト」として、インデックス更新要求２１０を送ってきた読み書き対応キャッシュサーバのＩＰアドレスを設定する。
【０１２２】
これにより、クライアントからのファイル登録要求に含まれるファイル本体が、読み書き対応キャッシュサーバには保持されているが、マスタサーバには未だ保持されていないという状態では、そのファイルのマスタは、マスタサーバではなくその読み書き対応キャッシュサーバが持っていることになるので、各クライアントからのそのファイルに対する読み込み要求は、そのファイルをマスタとして有している読み書き対応キャッシュサーバに到達することになる。
【０１２３】
マスタサーバは、インデックス更新処理２１１の後、成功応答２１２を読み書き対応キャッシュサーバに送信する。
【０１２４】
読み書き対応キャッシュサーバは、その後の任意のタイミングで、ファイル登録要求２０７を受けて自身にキャッシュしたファイル本体を含むファイル登録要求２１３を、マスタサーバに送信する。
【０１２５】
マスタサーバは、ファイル登録要求２１３を受けると、署名を検証し、問題なければ、ファイル登録処理２１４を行う。すなわち、ファイル登録要求２１３に含まれるファイル本体を格納し、図１４のインデックス情報テーブルを更新する（該当のファイルの「ファイル保持ホスト」をマスタサーバに書き換え、ロックを解除する）。
【０１２６】
マスタサーバは、その後、読み書き対応キャッシュサーバに対して、成功応答２１５を返送する。
【０１２７】
図４は、本システムにおけるファイル更新要求に係る動作シーケンスの一例を示す。各クライアントは、読み込んだファイルを編集して更新する際に、自身の近隣読み書き対応キャッシュサーバ（以下、読み書き対応キャッシュサーバ）に対し、ファイル更新要求３０１を送信する。「ファイル作成」の代わりに「ファイル更新」となる点を除き、手順は図３と同様である。ファイル登録要求３０７には、クライアントの中で更新されたファイルの本体が含まれ、これが読み書き対応キャッシュサーバでキャッシュされて、マスタサーバに登録される。
【０１２８】
図５は、本システムにおけるファイル削除要求に係る動作シーケンスの一例を示す。各クライアントは、自身の接続先サーバ（近隣読み書き対応キャッシュサーバ）に対して、ファイル削除要求４０１を送信する。
【０１２９】
読み書き対応キャッシュサーバは、ファイル削除要求４０１を中継する。すなわち、マスタサーバに対しては、自身がクライアントであるかのように振る舞って、ファイル削除要求４０２を送信するＨＴＴＰプロキシ動作を行う。
【０１３０】
ファイル削除要求４０２を受信したマスタサーバは、認証とアクセス制限確認４０３を行う。すなわち、署名を検証した後に、ファイルのアクセス権限を確認する。問題があればエラー応答を返送する。
【０１３１】
問題がなければ、マスタサーバは、ファイル削除処理４０４として、該当のファイルを削除し、図１４のインデックス情報テーブルを更新する。
【０１３２】
そして、マスタサーバは、成功応答４０５を読み書き対応キャッシュサーバに返送する。成功応答４０５は、マスタサーバにおけるファイルの削除が完了したことを表す。
【０１３３】
成功応答４０５を受信した読み書き対応キャッシュサーバは、その内容を成功応答４０６として、クライアントに対して送信（中継）する。つまり、クライアントに対して、自身がマスタサーバであるかのように振る舞う（ＨＴＴＰプロキシとしての動作を行う）。
【０１３４】
なお、クライアントに、上述した読み書き対応キャッシュサーバの機能を持たせるように実装することも可能であり、その場合、クライアントは、自身の近隣クライアントを、上記の近隣読み書き対応キャッシュサーバとして扱って、動作することも可能である。
【０１３５】
以下には、図１５〜図３４のフローチャートを参照して、上述した動作を装置毎に詳細に説明する。図中に、図２〜図５で説明したメッセージや処理の番号との対応を示してある。
【０１３６】
図１５は、アカウント管理サーバによるログイン処理（１５００）の一例を示す。アカウント管理サーバの認証管理部は、クライアントから「ログイン要求」を受信すると、そのメッセージに含まれる「ユーザ名」「パスワードあるいは署名」「グローバルＩＰアドレス」「ローカルＩＰアドレス」「ローカルサブネットマスク」を取得する（１５１０）。
【０１３７】
そして、公開鍵管理テーブルより「ユーザ名」をキーにして公開鍵証明書を取得し（１５２０）、署名に対して、公開鍵を用いた公開鍵暗号を適用することにより、署名を検証する（１５３０）。クライアントからのログイン要求にパスワードが含まれた場合には、公開鍵管理テーブルのパスワードと比較する。
【０１３８】
認証に成功した場合には、アカウント管理サーバは、近隣クライアント管理部により、クライアントの近隣にいるクライアントを検索する（１５４０）。具体的には、ユーザ接続管理テーブルから、接続クライアントと同一ユーザ名を持ち、接続クライアントの「グローバルＩＰアドレス」が一致し、さらに、接続クライアントの「ローカルＩＰアドレス」および「ローカルサブネットマスク」のアドレス空間と同じローカルＩＰアドレスを持つユーザを検索する（１５４２）。このリストを近隣クライアント一覧とする。
【０１３９】
より具体的には、（Ａ）ユーザ名が一致する項目を抽出、（Ｂ）グローバルＩＰアドレスが一致する項目を抽出、（Ｃ）各項目について、ローカルＩＰアドレスとネットマスク長から、ネットワークアドレスを計算し、新規接続クライアントのネットワークアドレスと比較し、一致する項目を抽出、（Ｄ）上記Ａ，Ｂ，Ｃ全てに一致する項目を抽出、という手順を行えばよい。
【０１４０】
近隣クライアント管理部はさらに、ユーザ接続管理テーブルに、接続クライアントのユーザ名、グローバルＩＰアドレス、ローカルＩＰアドレス、ローカルのサブネットマスクを記録する（１５４４）。
【０１４１】
アカウント管理サーバはさらに、近隣サーバ管理部により、キャッシュサーバ管理テーブルを検索し、近隣サーバ一覧を作成する（１５６０）。具体的には、接続クライアントのグローバルＩＰアドレスと、キャシュサーバ管理テーブルのクライアントＩＰアドレス及びサブネットマスクが一致する項目を検索する（１５６２）。これにより、クライアントから近いサーバリストを取得することができる。ユーザ毎に接続サーバを変更したい場合には、接続クライアントのユーザ名と同一の項目を取得することもできる。
【０１４２】
より具体的には、（Ｅ）各項目について、「クライアントＩＰアドレス」の項目とサブネットマスクの項目から、ＩＰアドレスの範囲を計算し、（Ｆ）新規接続クライアントのＩＰアドレスと、上記Ｅで計算したＩＰアドレスの範囲を比較し、一致する項目を抽出するという手順を行えばよい。例えば、「クライアントＩＰアドレス」が203.0.113.0、サブネットマスクが255.255.255.0のとき、ＩＰアドレスの範囲は203.0.113.0〜203.0.113.255となる。
【０１４３】
アカウント管理サーバは、近隣クライアント一覧と近隣サーバ一覧をクライアントに成功応答として返す（１５８０）。
【０１４４】
図１６は、クライアントによるログイン処理（１６００）の一例を示す。クライアントは、ユーザインタフェース処理部を介してユーザの指示を受け、アカウント管理サーバにログインする。まず、暗号処理部（１６２０）において、秘密鍵管理テーブルから秘密鍵を取得し、公開鍵管理テーブルから、自身の公開鍵を取得する（１６２２）。
【０１４５】
次に、クライアント自身のＩＰアドレス及びサブネットマスクを取得し（１６４０）、暗号処理部（１６５０）において、ローカルＩＰアドレス、サブネットマスク、ユーザ名を、秘密鍵を用いて署名する（１６５２〜１６５６）。そして、アカウント管理サーバにログイン要求を送信する（１６７０）。このとき、署名ではなく、パスワードを用いて認証してもよい。
【０１４６】
アカウント管理サーバから成功応答が返ってくると、その成功応答に含まれる近隣クライアント一覧と近隣サーバ一覧を、図１２（ｂ）の接続先サーバ管理テーブルに記入する（１６８０、１６９０）。
【０１４７】
図１７は、クライアントによるインデックス情報の同期処理（１７００）の一例を示す。本システムでは、クライアントは、ファイルのインデックスをサーバから取得する。ログイン直後や定期的に取得することにより、サーバとクライアントのインデックス情報を同期する。サーバからの変更通知があった場合に、インデックス情報を取得するようにしてもよい。
【０１４８】
クライアントは、サーバ間通信管理部により、インデックス取得処理を行う（１７２０）。まず、図１２（ｂ）の接続先サーバ管理テーブルより、サーバおよび近隣クライアントのＩＰアドレスを取得する（１７２２）。このＩＰアドレス宛にインデックス取得要求を送信する（１７２４）。送信方法は、ＩＰアドレスが複数ある場合、順番に送信してもよいし、一斉に送信し、応答があったサーバ／クライアントの応答結果を採用してもよい。
【０１４９】
クライアントは、サーバからのインデックス取得応答に含まれるインデックスを、図１２（ａ）のインデックス情報テーブルに保存する（１７４０）。
【０１５０】
クライアントはさらに、インデックス情報テーブルとクライアント内に保存されているファイルを比較し、ファイルの更新がある場合には、インデックス同期処理部により、ファイルの更新処理を行う（１７６０）。
【０１５１】
図１８は、クライアントによるファイル取得処理（１８００）の一例を示す。本システムでは、クライアントは、ファイルの更新処理をする場合も、サーバにファイル取得要求を出し、最新のファイルを取得する。
【０１５２】
クライアントは、ユーザインタフェース処理部を介してユーザの指示を受け、取得対象のファイルを特定する情報を取得する（１８１０）。そして、ファイル管理部により、ファイル取得処理を行う（１８２０）。
【０１５３】
具体的には、インデック情報テーブルから該当のファイル情報を取得し（１８３０）、クライアント自身のファイル格納部に存在するファイルを確認し、最新ファイルが存在するかを確認する（１８４０）。最新ファイルが存在しない場合には、サーバ間通信管理部により、ファイル取得処理を行う（１８５０）。
【０１５４】
サーバ間通信管理部によるファイル取得処理（１８５０）の一例が、図１９に示されている。ここでは、図１２（ａ）のインデックス情報テーブルより、ファイルのパス名、バージョン番号、ファイル保持ホストを取得し（１８５２）、図１２（ｂ）の接続先サーバ管理テーブルより、接続先サーバのＩＰアドレス一覧を取得する（１８５４）。そして、接続先サーバとファイル保持ホストに、ファイル取得要求を送信する（１８５６）。
【０１５５】
ファイル取得要求に含ませるファイル識別子は、該当ファイルのパス名とバージョン番号から生成する。例えば、対象がファイルの場合、パス名を「/user1/share/example.txt」、バージョン番号を「1」とすると、ファイル識別子を「/user1/share/example.txt/1」とすればよい。対象がディレクトリの場合は、パス名を「/user1/share/example_dir/」、バージョン番号を「10」とすると、ファイル識別子を「/user1/share/example_dir/10/」とすればよい。
【０１５６】
なお、複数のサーバに対して要求を送信する場合、並列に送信して最も早く帰ってきた結果を採用するとよい。これは、以下に説明する他の要求に関しても同様である。
【０１５７】
クライアントのファイル管理部は、ファイル取得応答が返信された場合には、そこに含まれるファイルを保存する（１８８０）。このファイルは、暗号化されているため、暗号化処理部のファイル復号処理を行い、ファイルの内容を復号する（１８７０）。
【０１５８】
図１８は、クライアントによるファイル作成処理（２０００）の一例を示す。クライアントでファイルが新規作成されたときの処理である。
【０１５９】
クライアントは、ユーザインタフェース処理部を介してユーザの指示を受け、新規作成されたファイルを特定する情報を取得する（２０１０）。そして、ファイル管理部により、ファイル作成処理を行う（２０２０）。
【０１６０】
具体的には、作成されたファイルのパス名・ファイル名がファイル管理部に渡され、ファイル管理部はファイル格納部より、対象ファイルの本体を取得する（２０３０）。そして、ファイル管理部は、このファイル本体を暗号処理部により暗号化して（２０６０）、サーバ間通信管理部によりサーバへ送信する（２０７０）。図１２（ａ）のインデックス情報テーブルに同一のファイル名が存在しない場合には、新規ファイルであるので、バージョン番号を１にして、サーバに送信する（２０４０）。インデックス情報テーブルに同一ファイルが存在する場合には、以前にファイルが存在していたが、現在は削除されている状態なので（２０５０）、前回のバージョン番号を取得し（２０５３）、そのバージョン番号に１を足したものとして、サーバに送信する（２０５６）。
【０１６１】
サーバ間通信管理部によるファイル作成処理（２０７０）の一例が、図２１に示されている。サーバ間通信管理部は、図１２（ｂ）の接続先サーバ管理テーブルから取得される接続サーバのＩＰアドレス一覧（２０７４）に対して、ファイル作成要求を送出する（２０８０）。このファイル作成要求には、ユーザ名及びファイル識別子と、署名（２０７６）とを含める。
【０１６２】
ファイル作成要求に含まれるファイル識別子は、ファイル取得要求について説明した例と同様に、ファイル管理部から渡されたファイルのパス名とバージョン番号（２０７２）に基づいて生成することができる。このファイル作成要求を受信したサーバは、ユーザを認証し、ファイルにアクセス権限があれば成功応答を返す。
【０１６３】
ファイル作成要求に対する成功応答が返ってくると、クライアントは、成功応答を返したサーバに対して、ファイル登録要求を送信する（２０８６）。このファイル登録要求には、ユーザ名及びファイル識別子と、ファイル管理部から渡されたファイル本体（２０７２）と、署名（２０８２）とを含める。
【０１６４】
ファイル登録要求に対する成功応答が返ってくると、クライアントは、図１２（ａ）のインデックス情報テーブルを更新して（２０９０）、この処理を終了する。
【０１６５】
図２２〜図２３には、クライアントによるファイル更新処理（２２００）の一例を示す。ファイル更新処理は、ファイル作成処理とほぼ同様であるので、説明を省略する。ファイル新規作成では、バージョン番号を１としたが、ファイル更新の場合には、ファイルのバージョン番号を、直前の番号に１を足したものとして（２２５０）、サーバへの送信を行う（２２７０）。
【０１６６】
図２４〜図２５には、クライアントによるファイル削除処理（２４００）の一例を示す。ファイル削除処理では、サーバにファイル本体を送付する必要がないので、クライアントからサーバに対しては、ファイル削除要求のみ送信する（ファイル登録要求は送信しない）ことになる。
【０１６７】
それ以外は、ファイル削除処理は、ファイル更新処理とほぼ同様であるので、説明を省略する。ファイル削除要求をサーバに送信すると（２４５０）、マスタサーバは、ユーザ認証とアクセス権限を確認し、ファイルを削除することになる。このとき、ファイル本体はサーバから削除されるが、インデックス情報テーブルには、ファイルのバージョン番号として直前の番号に１を足したものが記入され（２４４０）、状態が「削除済み」として更新されたインデックス情報が残る（２４７０）。
【０１６８】
図２６は、読み書き対応キャッシュサーバによるインデックス取得要求処理（２６００）とファイル取得要求処理（２６３０）の一例を示す。
【０１６９】
本システムでは、読み書き対応キャッシュサーバは、インデックス情報のキャッシュは行わないため、クライアントからインデックス取得要求を受信すると（２６００）、読み書きキャッシュ処理部は、サーバ応答取得処理を行い（２６１０）、上流サーバからのインデックス取得応答をクライアントへ返す（２６２０）。
【０１７０】
サーバ応答取得処理（２６１０）は、具体的には、図１３（ｂ）の上流サーバ管理テーブルからＩＰアドレス一覧を取得し（２６６２）、そのＩＰアドレスに対して、クライアントから受信した要求を中継する（２６６４）。この処理は、インデックス取得要求の場合（２６１０）だけでなく、ファイル取得要求の場合（２６６０）も、ファイル作成・更新要求の場合（２７１０）の場合も、ファイル削除要求の場合（２７６０）の場合も、同じである。
【０１７１】
読み書き対応キャッシュサーバが、クライアントからファイル取得要求を受信すると（２６３０）、読み書きキャッシュ処理部は、そのファイル取得要求からファイル識別子を取り出し（２６４０）、ファイルキャッシュ部に該当ファイルのキャッシュが存在するか確認する（２６５０）。
【０１７２】
ファイルが存在した場合には、成功応答として、ファイルキャッシュ部から読みだしたファイル本体（２６８０）をクライアントに返送する（２６８５）。
【０１７３】
ファイルが存在しない場合には、サーバ応答取得処理（２６６０）を行い、上流サーバへ、クライアントから受信したファイル取得要求を中継する。上流サーバから成功応答が返ってくると、それをクライアントへ中継する（２６７０）とともに、成功応答に含まれるファイル本体を、ファイルキャッシュ部に保存する（２６９０）。
【０１７４】
近隣クライアントも、上述した読み書き対応キャッシュサーバの機能を備えて、インデックス取得要求やファイル取得要求を受け付けるようにしてもよい。あるいは、近隣クライアントが、読み書き対応キャッシュサーバの機能の一部のみを備えるようにしてもよい。例えば、読み込み用キャッシュサーバの機能を備えて、ファイル取得要求に対して自身が該当ファイルのキャッシュを保持する場合にこれを返送するのでもよい。
【０１７５】
また、近隣クライアントは、マスタサーバとの間で、インデックス情報の同期処理を行っているため、同一ユーザのものであれば、クライアントからのインデックス取得要求に対して、用身欠き対応キャッシュサーバのように上流サーバに問い合わせるのではなく、自身の有するインデックス情報を返送することも可能である。
【０１７６】
図２７〜図２８は、読み書き対応キャッシュサーバによるファイル作成・更新要求処理（２７００）とファイル登録要求処理（２８００）とファイル削除要求処理（２７５０）の一例を示す。
【０１７７】
図２７に示されるように、クライアントからファイル作成要求またはファイル更新要求を受信した読み書き対応キャッシュサーバは、読み書きキャッシュ処理部によりサーバ応答取得処理（２７１０）を行う。つまり、読み書き対応キャッシュサーバは、上流サーバ管理テーブルよりアドレス一覧を取得し、上流サーバにクライアントから受信した要求を中継する。
【０１７８】
マスタサーバでは、ファイル作成・更新要求の内容から、認証とアクセス権限を確認し、許可できる場合には、成功応答を送信する。この成功応答を受信した読み書き対応キャッシュサーバは、クライアントへ中継する（２７３０）とともに、成功応答に含まれるユーザ名とファイル識別子とを、図１３（ａ）の認証テーブルに保存する（２７２０、２７２５）。
【０１７９】
図２７に示されるように、クライアントからファイル登録要求を受信した読み書き対応キャッシュサーバは、ファイル登録要求に含まれるユーザ名とファイル識別子とを取得し（２８１０）、認証テーブルにユーザ名とファイル識別子が一致する項目が存在するかを確認する（２８２０）。
【０１８０】
一致する項目があった場合には、認証処理部により署名検証処理を行う（２８３０）。具体的には、図２８に示されるように、公開鍵管理テーブルから、ユーザ名の公開鍵を取得し（２８３２）、この公開鍵を用いて、受信したメッセージの署名が正しいかを検証する（２８３４）。
【０１８１】
署名の検証が正しい場合には、図２７に示されるように、クライアントから受信したファイル登録要求に含まれるファイル本体（２８１０）をファイルキャッシュ部に格納し（２８４０）、クライアントに成功応答を返す（２８５０）。
【０１８２】
次に、読み書きキャッシュ処理部によりインデックス更新処理を行う（２８６０）を行う。具体的には、図２８に示されるように、上流サーバ管理テーブルよりアドレス一覧を取得し（２８６２）、上流サーバにインデックス更新要求を送信する（２８６４）。このとき、ファイル保持ホストとして、本読み書き対応キャッシュサーバを指定する。
【０１８３】
その後、読み書きキャッシュ処理部によりサーバアップロード処理を行う（２８７０）。具体的には、図２８に示されるように、上流サーバ管理テーブルよりアドレス一覧を取得し（２８７２）、上流サーバにファイル登録要求を送信する（２８７４）。このファイル登録要求は、ファイル識別子とファイル本体と署名を含むが、その署名は、本読み書き対応キャッシュサーバの署名ではなく、クライアントより受信した署名を送信する。ファイル登録要求が完了すると、マスタサーバのインデックス情報のファイル保持ホストは、マスタサーバに変更される。
【０１８４】
マスタサーバからファイル登録要求に対する成功応答を受信すると、図２７に示されるように、読み書き対応キャッシュサーバは、図１３（ａ）の認証テーブルからユーザ名とファイル識別子が一致する項目を削除して（２８８０）、処理を終了する。
【０１８５】
図２８に示されるように、クライアントからファイル削除要求を受信した読み書き対応キャッシュサーバは、ファイル作成・更新手順と同様に、上流サーバにメッセージを中継する（２７６０）。上流サーバから成功応答が返信されると、そのメッセージをクライアントに中継する（２７７０）。
【０１８６】
図２９には、マスタサーバによるインデックス取得要求処理（２９００）とファイル取得要求処理（２９５０）の一例を示す。
【０１８７】
インデックス取得要求を受信したマスタサーバは、リクエスト処理部でインデックス取得要求処理（２９１０）を行う。具体的には、図１４のインデックス情報テーブルからインデックス情報を取得し（２９１２）、その情報を要求元にインデックス取得応答として返信する（２９２０）。
【０１８８】
ファイル取得要求を受信したマスタサーバは、リクエスト処理部でファイル取得要求処理（２９７０）を行う。具体的には、要求メッセージからファイル識別子を取り出し（２９６０）、ファイル格納部から該当ファイルを取り出し（２９７２）、要求元に返信する（２９８０）。
【０１８９】
図３０には、マスタサーバによるファイル作成要求処理（３０００）の一例を示す。マスタサーバがファイル作成要求を受信すると、リクエスト処理部により要求メッセージ中のユーザ名、ファイル識別子、署名を取り出し（３０１０）、認証処理部により署名検証処理を行って、要求を受理するか検証する（３０２０）。
【０１９０】
認証処理部の署名検証処理では、公開鍵管理テーブルからユーザ名に対応する公開鍵を取得し（３０２２）、この公開鍵を用いて、受信した要求の署名を検証する（３０２４）。この処理は、ファイル作成要求の場合（３０２０）だけでなく、ファイル登録要求の場合（３１２０）も、ファイル更新要求の場合（３２２０）の場合も、ファイル削除要求の場合（３４２０）の場合も、同じである。
【０１９１】
マスタサーバは、ファイル作成要求の署名が検証できた後、ファイル管理部によりファイル作成ロック処理（３０３０）を行う。具体的には、ファイル作成要求中のユーザ名とファイル識別子に基づいて（３０３２、３０３４）、該当ファイルの存在及びアクセス権（３０３６）を確認し、ファイルが存在せず、アクセス権がある場合には、インデックス情報テーブルの該当ファイルの項目を追加し、ロック状態をロック中として（３０３９）、要求元に成功応答を返信する（３０５０）。
【０１９２】
図３３には、マスタサーバによるインデックス更新要求処理（３３００）の一例を示す。マスタサーバはインデックス更新要求を受信すると、リクエスト処理部により要求メッセージ中のファイル識別子とファイル保持ホストのＩＰアドレスとを取り出し（３３１０）、インデックス管理部によるインデックス更新処理（３３２０）を行う。
【０１９３】
具体的には、インデックス更新要求に含まれるファイル識別子に該当するインデックス情報テーブル内のファイル保持ホストの情報を、同要求から取り出されたファイル保持ホストのものに更新する（３２２４）。そして、要求元へ、成功応答を返す（３３３０）。
【０１９４】
図３１には、マスタサーバによるファイル登録要求（３１００）の一例を示す。ファイル登録要求を受信したマスタサーバは、リクエスト処理部により要求メッセージ中のユーザ名、ファイル識別子、ファイル本体、署名を取り出し（３１１０）、認証処理部により署名検証処理を行って、要求を受理するか検証する（３１２０）。
【０１９５】
マスタサーバは、署名の検証が成功すると、ファイル管理部によりファイル登録処理（３１３０）を行う。具体的には、要求メッセージからユーザ名、ファイル識別子、ファイル本体を取り出し（３１３２）、ファイル識別子をもとにパス名とバージョン番号を取得して（３１３４）、インデックス情報テーブルより該当ファイルの項目を取得する（３１３６）。
【０１９６】
取得に成功すると、図１４のインデックス情報テーブルのパーミッションを確認する。ここでのパーミッションの例は、UNIX（登録商標）のファイルシステムと同様で、自身・同一グループ・他人が読み書き可能かをビットで示している。例えば、775は、自身と同一グループは読み書き可能で、他人は読み込みだけできる。
【０１９７】
アクセス権があれば、ファイル本体をファイル格納部に保存し（３１３９）、インデックス情報テーブルの該当ファイルの項目を修正する。具体的には、バージョン番号を更新し、ロック状態を解除し、ファイル保持ホストをマスタサーバに変更する（３１４１）。そして、要求元へ成功応答を返す（３１５０）。
【０１９８】
図３２には、マスタサーバによるファイル更新要求処理（３２００）の一例を示す。マスタサーバがファイル更新要求を受信すると、リクエスト処理部により要求メッセージ中のユーザ名、ファイル識別子、署名を取り出し（３２１０）、認証処理部により署名検証処理を行って、要求を受理するか検証する（３２２０）。
【０１９９】
マスタサーバは、署名が検証できたら、ファイル管理部によりファイル更新ロック処理（３２３０）を行う。具体的には、ファイル更新要求中のユーザ名とファイル識別子に基づいて（３２３２、３２３４）、インデックス情報テーブルの該当ファイルの項目を取得し（３２３６）、アクセス権があるかを確認する。
【０２００】
アクセス権がある場合には、さらに書き込み可否を判断する（３２３９）。具体的には、ファイル更新要求に含まれるバージョン番号と、図１４のインデックス情報テーブルにおけるバージョン番号とを比較する。例えば、更新要求に含まれるバージョン番号をＮとし、インデックス情報テーブルにおけるバージョン番号をＭとしたときに、Ｍ＋１＝Ｎを満たすかどうかにより、満たす場合は書き込み可能、満たさない場合は書き込み不可と判断すればよい。
【０２０１】
書き込み可能の場合には、インデックス情報テーブルの該当ファイルの項目を更新し、ロック状態をロック中にして（３２４１）、要求元に成功応答を返信する（３２５０）。
【０２０２】
図３４には、マスタサーバによるファイル削除要求処理（３４００）の一例を示す。マスタサーバがファイル削除要求を受信すると、ファイル更新要求処理と同様の処理を行う。違いは、インデックス情報テーブルのロック状態を変更しないこと（３４４３）とファイル格納部から該当ファイルを削除すること（３４４１）である。
【０２０３】
なお、上記の例では、ファイル作成要求処理では、インデックス情報テーブルに該当ファイルの項目を追加（３０３９）し、ファイル更新要求処理とファイル削除要求処理では、インデックス情報テーブルの該当ファイルの項目を更新（３２４１、３４４３）している。これは、ファイルのパス名が同じであれば、インデックス情報テーブルにおけるそのファイルの項目は、バージョン番号が最新のものに上書きされていくということである。
【０２０４】
上記のようにファイル識別子をパス名とバージョン番号に基づいて一意に定める場合、同じファイル識別子のファイル本体が書き換えられることはない（ファイル本体が書き換えられる場合、バージョン番号が更新されるため必ず異なるファイル識別子が付与される）。よって、ファイルがキャッシュされてシステム内に複数保持されている状態でファイルを更新する場合、古いキャッシュが残ることになるが、同じファイル識別子で異なる内容になることはないため、古いキャッシュを即座に削除しなくても、不都合は生じない。
【０２０５】
なぜなら、クライアントのインデックス情報テーブルは、マスタサーバのインデックス情報テーブルに連動して、そのファイルの最新の状態（最新のバージョン番号と、利用可能／削除済みの区別）が反映されているから、インデックス情報に基づいてファイル取得要求をすれば、バージョン番号を含めたファイル識別子により取得対象のファイルが特定され、古いキャッシュではなく最新のファイル本体に到達できるからである。
【０２０６】
以上、本発明の実施形態について説明したが、上述の実施形態を本発明の範囲内で当業者が種々に変形、応用して実施できることは勿論である。
【図２１】
0005491932.tif 000002
【図１】
0005491932.tif 000003
【図２】
0005491932.tif 000004
【図３】
0005491932.tif 000005
【図４】
0005491932.tif 000006
【図５】
0005491932.tif 000007
【図６】
0005491932.tif 000008
【図７】
0005491932.tif 000009
【図８】
0005491932.tif 000010
【図９】
0005491932.tif 000011
【図１０】
0005491932.tif 000012
【図１１】
0005491932.tif 000013
【図１２】
0005491932.tif 000014
【図１３】
0005491932.tif 000015
【図１４】
0005491932.tif 000016
【図１５】
0005491932.tif 000017
【図１６】
0005491932.tif 000018
【図１７】
0005491932.tif 000019
【図１８】
0005491932.tif 000020
【図１９】
0005491932.tif 000021
【図２０】
0005491932.tif 000022
【図２２】
0005491932.tif 000023
【図２３】
0005491932.tif 000024
【図２４】
0005491932.tif 000025
【図２５】
0005491932.tif 000026
【図２６】
0005491932.tif 000027
【図２７】
0005491932.tif 000028
【図２８】
0005491932.tif 000029
【図２９】
0005491932.tif 000030
【図３０】
0005491932.tif 000031
【図３１】
0005491932.tif 000032
【図３２】
0005491932.tif 000033
【図３３】
0005491932.tif 000034
【図３４】
0005491932.tif 000035