(57)【特許請求の範囲】
【請求項１】
ネットワークを介して接続された複数の端末装置と、前記端末装置によりアクセス可能なフォルダを備えたストレージサーバとにより構成され、前記ストレージサーバに備えたフォルダ内のファイルが前記複数の端末装置へダウンロードされ、前記複数の端末装置のうちの一の端末装置へダウンロードされたファイルがユーザにより操作され指定された場合に、前記指定されたファイルに、前記ストレージサーバに備えたフォルダ内のファイル及び他の端末装置へダウンロードされたファイルを同期させるシステムにおいて、
前記端末装置は、
前記ユーザにより指定されたファイルについて、所定サイズに分割した領域データのハッシュ値を算出し、記憶部に格納するファイル処理部を備え、
前記ストレージサーバは、
前記複数の端末装置へダウンロードされたファイルについて、前記所定サイズに分割した領域データのハッシュ値が格納された記憶部を備え、
前記端末装置は、
前記ユーザにより指定されたファイルについて、前記各領域データのハッシュ値を含む属性データを前記ストレージサーバへ送信し、
前記端末装置の記憶部に格納された各領域データのハッシュ値と、前記ストレージサーバの記憶部に格納された各領域データのハッシュ値との比較結果に基づいて、前記ハッシュ値が異なる領域データを前記ストレージサーバへ送信し、
前記ストレージサーバは、
前記端末装置から受信した属性データに含まれるハッシュ値と前記ストレージサーバの記憶部に格納されたハッシュ値が同じ領域データと、前記端末装置から受信した属性データに含まれるハッシュ値と前記ストレージサーバの記憶部に格納されたハッシュ値が異なる場合に前記端末装置から受信した領域データと、を統合することにより更新ファイルを生成し、前記記憶部に格納し、
前記更新ファイルについて、ファイルが更新されたことを示す情報及び前記各領域データのハッシュ値を含む属性データを、前記複数の端末装置へ送信することを特徴とするシステム。
【請求項２】
請求項１に記載のシステムにおいて、
前記端末装置は、
ファイルを所定サイズに分割した際の領域毎に、領域データ及びハッシュ関数により得られた前記領域データのハッシュ値を有する領域データファイルが格納された記憶部を備え、
前記ファイル処理部は、
ユーザにより指定されたファイルについての、前記各領域データのハッシュ値を含む属性データを前記ストレージサーバから取得し、前記領域毎に分割されたファイルを前記ストレージサーバからダウンロードし、前記記憶部に格納し、前記ユーザにより前記ファイルを更新するファイル操作が行われた場合、前記更新された領域データのハッシュ値を算出し、前記更新された領域データ及び前記ハッシュ値を前記記憶部に格納し、前記更新されたファイルについての、前記各領域データのハッシュ値を含む属性データを前記ストレージサーバへ送信し、
前記ストレージサーバから前記更新された領域を特定するための情報を含む領域データ送信指令を受信すると、前記記憶部から、前記更新された領域を特定するための情報に対応した領域データを読み出して前記ストレージサーバへ送信し、
前記ストレージサーバは、
前記記憶部として、前記領域毎に領域データ及びハッシュ値を有する領域データファイルが格納された記憶部と、
前記端末装置により送信された属性データと、前記ファイルについての属性データとを比較し、前記ファイル操作により更新された領域を特定し、前記領域を特定するための情報を含む領域データ送信指令を前記端末装置へ送信し、前記領域データ送信指令に対する領域データを受信すると、前記受信した領域データ及び前記領域データのハッシュ値を前記記憶部に格納し、前記端末装置により送信された属性データと前記ファイルについての属性データとの間でハッシュ値が同じ領域データと、前記受信した領域データとを統合した更新ファイルについて、新たな属性データを生成する属性データ処理部と、
前記属性データ処理部により生成された属性データを前記端末装置へ送信する属性データ送信部と、を備えたことを特徴とするシステム。
【請求項３】
請求項１または２に記載のシステムにおいて、
前記ストレージサーバは、さらに、
前記端末装置の記憶部に格納された各領域データのハッシュ値と、前記ストレージサーバの記憶部に格納された各領域データのハッシュ値との比較結果に基づいて、前記ハッシュ値が異なる領域データを前記端末装置へ送信し、
前記端末装置は、さらに、
前記ハッシュ値が同じ領域データと、前記ストレージサーバから受信した前記ハッシュ値が異なる領域データと、を統合することにより更新ファイルを生成し、記憶部に格納することを特徴とするシステム。
【請求項４】
請求項２に記載のシステムにおいて、
前記ストレージサーバは、ファイル処理部を備え、
前記ストレージサーバの属性データ処理部は、
前記端末装置からファイルのダウンロード指示を受信すると、前記記憶部から前記ファイルに対応する領域毎のハッシュ値を読み出し、属性データを生成し、
前記ストレージサーバの属性データ送信部は、
前記属性データ処理部により生成された属性データを前記端末装置へ送信し、
前記ストレージサーバのファイル処理部は、
更新された領域を特定するための情報を含む領域データ送信指令を受信すると、前記記憶部から、前記更新された領域を特定するための情報に対応した領域データを読み出して送信し、
前記端末装置のファイル処理部は、
前記ストレージサーバから属性データを受信すると、前記記憶部から、前記ダウンロード指示のファイルに対応する前記領域毎のハッシュ値を読み出し、前記読み出した領域毎のハッシュ値と、前記属性データに含まれる領域毎のハッシュ値とを比較し、前記ハッシュ値が異なる領域を特定し、前記領域を特定するための情報を含む領域データ送信指令を送信し、前記領域データ送信指令に対する領域データを受信すると、前記受信した領域データを前記記憶部に格納する、ことを特徴とするシステム。
【請求項５】
請求項１から４のいずれか一項に記載のシステムにおける前記ストレージサーバ。
【請求項６】
ネットワークを介して接続された複数の端末装置と、前記端末装置によりアクセス可能なフォルダを備えたストレージサーバとにより構成され、前記ストレージサーバに備えたフォルダ内のファイルが前記複数の端末装置へダウンロードされ、前記複数の端末装置のうちの一の端末装置へダウンロードされたファイルがユーザにより操作され指定された場合に、前記指定されたファイルに、前記ストレージサーバに備えたフォルダ内のファイル及び他の端末装置へダウンロードされたファイルを同期させる方法において、
前記ストレージサーバは、
前記複数の端末装置へダウンロードされたファイルについて、前記所定サイズに分割した領域データのハッシュ値が格納された記憶部を備え、
前記端末装置が、
前記ユーザにより指定されたファイルについて、所定サイズに分割した領域データのハッシュ値を算出し、記憶部に格納するステップと、
前記ユーザにより指定されたファイルについて、前記各領域データのハッシュ値を含む属性データを前記ストレージサーバへ送信するステップと、
前記端末装置の記憶部に格納された各領域データのハッシュ値と、前記ストレージサーバの記憶部に格納された各領域データのハッシュ値との比較結果に基づいて、前記ハッシュ値が異なる領域データを前記ストレージサーバへ送信するステップと、を有し、
前記ストレージサーバが、
前記端末装置から受信した属性データに含まれるハッシュ値と前記ストレージサーバの記憶部に格納されたハッシュ値が同じ領域データと、前記端末装置から受信した属性データに含まれるハッシュ値と前記ストレージサーバの記憶部に格納されたハッシュ値が異なる場合に前記端末装置から受信した領域データと、を統合することにより更新ファイルを生成し、前記記憶部に格納するステップと、
前記更新ファイルについて、ファイルが更新されたことを示す情報及び前記各領域データのハッシュ値を含む属性データを、前記複数の端末装置へ送信するステップと、を有することを特徴とする方法。
【請求項７】
コンピュータを、請求項５に記載のストレージサーバとして機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、端末装置とストレージサーバとの間で、ユーザにより指定されたファイルを送受信する技術に関する。
【背景技術】
【０００２】
従来、端末装置とサーバとがネットワークを介して接続されるシステムにおいて、端末装置に格納されているファイルと、サーバに格納されているファイルとの間の同期を確立する技術が知られている。これらの２つのファイルが同じ内容のデータになるようにするための処理をファイル同期という。一般に、ファイル同期は、２つ以上の装置に存在するファイルを同じ内容のデータにするための、各装置に対して行う処理をいう。例えば、端末装置が自ら保持しているファイルを変更した場合、端末装置は、その変更情報をサーバへ送信し、サーバは、変更情報に基づいて、自ら保持しているファイルに変更を加える。このようなファイル同期により、端末装置に格納されているファイルと、サーバに格納されているファイルとの間で同期を確立することができる。
【０００３】
また、端末装置とサーバとがネットワークを介して接続されるシステムにおいて、サーバに備えたフォルダを、複数のユーザによりアクセス可能な共有フォルダに設定し、複数のユーザが使用する端末装置から共有フォルダ内のファイルに変更を加えることが可能なファイル共有の技術が知られている。このようなファイル共有を実現するためには、前述のファイル同期が必要である。これは、共有フォルダにアクセス可能なユーザが使用する端末装置は、ユーザのファイル操作（新規ファイル作成、ファイル更新等）に伴って、サーバに備えた共有フォルダ内のファイルにアクセスすることができるが、端末装置によるファイルのダウンロード及びアップロード、並びにユーザによるファイル操作によって、端末装置にてファイル操作が行われたファイルと、サーバに備えた共有フォルダ内のファイルとが異なってしまい、ファイル同期を行う必要があるからである。
【０００４】
このようなファイル同期システムの例として、ネットワークを介して接続されるサーバ装置及びクライアントＰＣ、並びに、クライアントＰＣに接続される携帯端末装置により構成されるシステムにおいて、クライアントＰＣが、携帯端末装置のディレクトリとサーバ装置のディレクトリとを監視し、２つのディレクトリ内のファイルについて同期を確立する技術が知られている（特許文献１を参照）。
【０００５】
具体的には、クライアントＰＣは、携帯端末装置へのポーリングにより、携帯端末装置のディレクトリ内のファイルリストを定期的に取得し、ファイルの増加、減少または変更の有無を判定する。そして、クライアントＰＣは、携帯端末装置のディレクトリ内のファイルに変化が有ったことを判定すると、新規に作成されたファイルまたは更新されたファイルを携帯端末装置から取得し、サーバ装置へ供給する。これにより、サーバ装置は、ディレクトリ内に、新規に作成されたファイルを追加し、または更新されたファイルを上書きする。また、ファイルが削除された場合は、クライアントＰＣは、削除されたことを示すコマンドをサーバ装置へ供給し、サーバ装置は、そのファイルを削除する。
【０００６】
同様に、クライアントＰＣは、サーバ装置へのポーリングにより、サーバ装置に格納されたファイルの増加、減少または変更の有無を判定する。そして、クライアントＰＣは、サーバ装置のディレクトリ内のファイルに変化が有ったことを判定すると、変化したファイルをサーバ装置から取得し、携帯端末装置へ供給する。これにより、携帯端末装置は、ディレクトリ内に、変化したファイルを追加または上書きする。また、ファイルが削除された場合も、前記と同様に、携帯端末装置は、ファイルを削除する。
【０００７】
また、他のファイル同期システムの例として、所定のデータのキャッシュを行い、同期を確立する技術も知られている（特許文献２を参照）。このファイル同期システムは、所定のデータを生成し、生成したデータの変更箇所を探査し、変更箇所が所定の閾値を満たしているか判定することによりデータを管理し、また、データを受信し、受信したデータと格納済みのデータとを比較し、データの差分を求めて格納済みのデータを更新するものである。このファイル同期システムにおけるファイルのダウンロードは、ファイルを分割して生成した分割データを、ファイルの先頭から順次伝送してキャッシュに読み込むことが基本になっている。
【０００８】
一方、ファイル同期システムの例ではないが、ファイルに対する処理の結果がエラーの場合に、エラーが発生したことを示すマークを、そのファイルが属するフォルダのアイコンに付加して表示する技術が知られている（特許文献３を参照）。この技術をファイル同期システムに適用した場合を想定すると、例えば、端末装置は、ファイルのダウンロードまたはアップロードに失敗したときに、そのファイルが属するフォルダのアイコンにエラーマークを付加して表示する。これにより、ユーザは、ファイルにエラーが発生したことを、アイコンの表示から認識することができる。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２００９−６４１１５号公報
【特許文献２】特開２００６−９９７３０号公報
【特許文献３】特開２０１０−１６０７４１号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
一方、複数の端末装置と共有フォルダを備えたサーバとにより構成されるファイル同期システムにおいて、例えば、ユーザによりファイルを更新する操作が行われた場合、端末装置は、更新されたファイル全体をストレージサーバへ送信する。この場合、ファイルの一部が更新された場合であっても、端末装置は、更新されていない部分も含めてファイル全体を送信する必要がある。これでは、送信データ量が大きくなり、処理効率が低下してしまう。前述の特許文献２のファイル同期システムにおいても、ファイルを分割して生成した分割データを、ファイルの先頭から順次伝送してキャッシュに読み込む必要があり、前述と同様の問題があった。
【００１１】
そこで、本発明は、前記課題を解決するためになされたものであり、その目的は、端末装置とストレージサーバとの間でファイルを送受信する際に、送信データ量を低減して送信処理速度を向上させることが可能なファイル送受信システム、端末装置、ストレージサーバ、ファイル送受信方法及びプログラムを提供することにある。
【課題を解決するための手段】
【００１２】
前記課題を解決するため、請求項１の発明は、ネットワークを介して接続された複数の端末装置と、前記端末装置によりアクセス可能なフォルダを備えたストレージサーバとにより構成され、前記ストレージサーバに備えたフォルダ内のファイルが前記複数の端末装置へダウンロードされ、前記複数の端末装置のうちの一の端末装置へダウンロードされたファイルがユーザにより操作され指定された場合に、前記指定されたファイルに、前記ストレージサーバに備えたフォルダ内のファイル及び他の端末装置へダウンロードされたファイルを同期させるシステムにおいて、前記端末装置が、前記ユーザにより指定されたファイルについて、所定サイズに分割した領域データのハッシュ値を算出し、記憶部に格納するファイル処理部を備え、前記ストレージサーバが、前記複数の端末装置へダウンロードされたファイルについて、前記所定サイズに分割した領域データのハッシュ値が格納された記憶部を備え、前記端末装置が、前記ユーザにより指定されたファイルについて、前記各領域データのハッシュ値を含む属性データを前記ストレージサーバへ送信し、前記端末装置の記憶部に格納された各領域データのハッシュ値と、前記ストレージサーバの記憶部に格納された各領域データのハッシュ値との比較結果に基づいて、前記ハッシュ値が異なる領域データを前記ストレージサーバへ送信し、前記ストレージサーバが、前記端末装置から受信した属性データに含まれるハッシュ値と前記ストレージサーバの記憶部に格納されたハッシュ値が同じ領域データと、前記端末装置から受信した属性データに含まれるハッシュ値と前記ストレージサーバの記憶部に格納されたハッシュ値が異なる場合に前記端末装置から受信した領域データと、を統合することにより更新ファイルを生成し、前記記憶部に格納し、前記更新ファイルについて、ファイルが更新されたことを示す情報及び前記各領域データのハッシュ値を含む属性データを、前記複数の端末装置へ送信することを特徴とする。
【００１３】
また、請求項２の発明は、請求項１に記載のシステムにおいて、前記端末装置が、ファイルを所定サイズに分割した際の領域毎に、領域データ及びハッシュ関数により得られた前記領域データのハッシュ値を有する領域データファイルが格納された記憶部を備え、前記ファイル処理部が、ユーザにより指定されたファイルについての、前記各領域データのハッシュ値を含む属性データを前記ストレージサーバから取得し、前記領域毎に分割されたファイルを前記ストレージサーバからダウンロードし、前記記憶部に格納し、前記ユーザにより前記ファイルを更新するファイル操作が行われた場合、前記更新された領域データのハッシュ値を算出し、前記更新された領域データ及び前記ハッシュ値を前記記憶部に格納し、前記更新されたファイルについての、前記各領域データのハッシュ値を含む属性データを前記ストレージサーバへ送信し、前記ストレージサーバから前記更新された領域を特定するための情報を含む領域データ送信指令を受信すると、前記記憶部から、前記更新された領域を特定するための情報に対応した領域データを読み出して前記ストレージサーバへ送信し、前記ストレージサーバが、前記記憶部として、前記領域毎に領域データ及びハッシュ値を有する領域データファイルが格納された記憶部と、前記端末装置により送信された属性データと、前記ファイルについての属性データとを比較し、前記ファイル操作により更新された領域を特定し、前記領域を特定するための情報を含む領域データ送信指令を前記端末装置へ送信し、前記領域データ送信指令に対する領域データを受信すると、前記受信した領域データ及び前記領域データのハッシュ値を前記記憶部に格納し、前記端末装置により送信された属性データと前記ファイルについての属性データとの間でハッシュ値が同じ領域データと、前記受信した領域データとを統合した更新ファイルについて、新たな属性データを生成する属性データ処理部と、前記属性データ処理部により生成された属性データを前記端末装置へ送信する属性データ送信部と、を備えたことを特徴とする。
【００１４】
また、請求項３の発明は、請求項１または２に記載のシステムにおいて、前記ストレージサーバが、さらに、前記端末装置の記憶部に格納された各領域データのハッシュ値と、前記ストレージサーバの記憶部に格納された各領域データのハッシュ値との比較結果に基づいて、前記ハッシュ値が異なる領域データを前記端末装置へ送信し、前記端末装置が、さらに、前記ハッシュ値が同じ領域データと、前記ストレージサーバから受信した前記ハッシュ値が異なる領域データと、を統合することにより更新ファイルを生成し、記憶部に格納することを特徴とする。
【００１５】
また、請求項４の発明は、請求項２に記載のシステムにおいて、前記ストレージサーバが、ファイル処理部を備え、前記ストレージサーバの属性データ処理部が、前記端末装置からファイルのダウンロード指示を受信すると、前記記憶部から前記ファイルに対応する領域毎のハッシュ値を読み出し、属性データを生成し、前記ストレージサーバの属性データ送信部が、前記属性データ処理部により生成された属性データを前記端末装置へ送信し、前記ストレージサーバのファイル処理部が、更新された領域を特定するための情報を含む領域データ送信指令を受信すると、前記記憶部から、前記更新された領域を特定するための情報に対応した領域データを読み出して送信し、前記端末装置のファイル処理部が、前記ストレージサーバから属性データを受信すると、前記記憶部から、前記ダウンロード指示のファイルに対応する前記領域毎のハッシュ値を読み出し、前記読み出した領域毎のハッシュ値と、前記属性データに含まれる領域毎のハッシュ値とを比較し、前記ハッシュ値が異なる領域を特定し、前記領域を特定するための情報を含む領域データ送信指令を送信し、前記領域データ送信指令に対する領域データを受信すると、前記受信した領域データを前記記憶部に格納する、ことを特徴とする。
【００１７】
また、請求項５の発明は、請求項１から４のいずれか一項に記載のシステムにおける前記ストレージサーバにある。
【００１８】
また、請求項６の発明は、ネットワークを介して接続された複数の端末装置と、前記端末装置によりアクセス可能なフォルダを備えたストレージサーバとにより構成され、前記ストレージサーバに備えたフォルダ内のファイルが前記複数の端末装置へダウンロードされ、前記複数の端末装置のうちの一の端末装置へダウンロードされたファイルがユーザにより操作され指定された場合に、前記指定されたファイルに、前記ストレージサーバに備えたフォルダ内のファイル及び他の端末装置へダウンロードされたファイルを同期させる方法において、前記ストレージサーバが、前記複数の端末装置へダウンロードされたファイルについて、前記所定サイズに分割した領域データのハッシュ値が格納された記憶部を備え、前記端末装置が、前記ユーザにより指定されたファイルについて、所定サイズに分割した領域データのハッシュ値を算出し、記憶部に格納するステップと、前記ユーザにより指定されたファイルについて、前記各領域データのハッシュ値を含む属性データを前記ストレージサーバへ送信するステップと、前記端末装置の記憶部に格納された各領域データのハッシュ値と、前記ストレージサーバの記憶部に格納された各領域データのハッシュ値との比較結果に基づいて、前記ハッシュ値が異なる領域データを前記ストレージサーバへ送信するステップと、を有し、前記ストレージサーバが、前記端末装置から受信した属性データに含まれるハッシュ値と前記ストレージサーバの記憶部に格納されたハッシュ値が同じ領域データと、前記端末装置から受信した属性データに含まれるハッシュ値と前記ストレージサーバの記憶部に格納されたハッシュ値が異なる場合に前記端末装置から受信した領域データと、を統合することにより更新ファイルを生成し、前記記憶部に格納するステップと、前記更新ファイルについて、ファイルが更新されたことを示す情報及び前記各領域データのハッシュ値を含む属性データを、前記複数の端末装置へ送信するステップと、を有することを特徴とする。
【００２０】
また、請求項７の発明は、コンピュータを、請求項５に記載のストレージサーバとして機能させるためのプログラムにある。
【発明の効果】
【００２１】
以上のように、本発明によれば、ファイルを所定サイズに分割した領域毎に管理し、領域毎の領域データを送受信するようにした。これにより、端末装置とストレージサーバとの間でファイルを送受信する際に、送信データ量を低減して送信処理速度を向上させることが可能となる。
【図面の簡単な説明】
【００２２】
【図１】本発明の実施形態によるファイル同期システムの全体構成を示す図である。
【図２】本発明の実施形態によるファイル同期システムにおけるファイル操作時の情報の流れを示す図である。
【図３】イベント通知シーケンスを説明する図である。
【図４】ファイルインデックス（以下、ＦＩという。）の構成を示す図である。
【図５】新規ファイル作成時のＦＩの変遷を説明する図である。
【図６】ファイル更新時のＦＩの変遷を説明する図である。
【図７】ファイル削除時のＦＩの変遷を説明する図である。
【図８】ファイル名変更時のＦＩの変遷を説明する図である。
【図９】ファイル移動時のＦＩの変遷を説明する図である。
【図１０】ファイルコピー時のＦＩの変遷を説明する図である。
【図１１】ファイル衝突時のシーケンスを説明する図である。
【図１２】ファイル衝突時のシーケンス（続き１）を説明する図である。
【図１３】ファイル衝突時のシーケンス（続き２）を説明する図である。
【図１４】ファイル更新時のシーケンス（領域毎の更新処理）を説明する図である。
【図１５】端末装置の構成を示すブロック図である。
【図１６】端末装置の処理を示すフローチャートである。
【図１７】端末装置における属性処理部の処理（ファイル操作通知生成処理）を示すフローチャートである。
【図１８】ファイル操作により付与される属性の一覧を示す図である。
【図１９】端末装置におけるアイコン表示部の処理（状態表示）を示すフローチャートである。
【図２０】アイコンの表示例を示す図である。
【図２１】端末装置の記憶部に格納された領域データファイルの構成を示す図である。
【図２２】端末装置におけるファイル処理部のファイル更新処理（領域毎の更新処理）を示すフローチャートである。
【図２３】ＡＰＩサーバの構成を示すブロック図である。
【図２４】ＡＰＩサーバの記憶部に格納された更新通知の構成を示す図である。
【図２５】ＡＰＩサーバの処理を示すフローチャートである。
【図２６】ストレージサーバの構成を示すブロック図である。
【図２７】ストレージサーバの記憶部に格納された共有フォルダ情報の構成を示す図である。
【図２８】ストレージサーバの処理を示すフローチャートである。
【図２９】ストレージサーバにおける操作種別特定部の処理を示すフローチャートである。
【図３０】ストレージサーバにおけるファイル・ＦＩ処理部の処理を示すフローチャートである。
【図３１】ストレージサーバにおけるＦＩ送信部の処理を示すフローチャートである。
【図３２】ストレージサーバにおける衝突処理部の処理を示すフローチャートである。
【図３３】ストレージサーバの記憶部に格納された領域データファイルの構成を示す図である。
【図３４】ストレージサーバにおけるファイル・ＦＩ処理部のファイル更新処理（領域毎の更新処理）を示すフローチャートである。
【図３５】イベントサーバの構成を示すブロック図である。
【図３６】イベントサーバの記憶部に格納された接続情報の構成を示す図である。
【図３７】イベントサーバの処理を示すフローチャートである。
【図３８】コネクションサーバの構成を示すブロック図である。
【図３９】コネクションサーバの処理を示すフローチャートである。
【図４０】ストレージサーバに備えたフォルダの階層構造の例を示す図である。
【図４１】フォルダインデックスの構成を示す図である。
【図４２】フォルダＥのフォルダインデックスを示す図である。
【図４３】ストレージサーバにおける操作種別特定部の他の処理を示すフローチャートである。
【発明を実施するための形態】
【００２３】
以下、本発明を実施するための形態について図面を用いて詳細に説明する。本発明は、ネットワークを介して接続された端末装置とストレージサーバとの間でファイルを送受信するシステムにおいて、端末装置及びストレージサーバが、ファイルを所定サイズに分割した領域毎のハッシュ値及び領域データを含む領域データファイルを格納し、両ハッシュ値を比較することにより、更新された領域を特定し、その領域データを送受信することを特徴とする。これにより、全てのデータを送信する必要がないから、送信データ量を低減することができ、送信処理速度を向上させることができる。尚、本発明は、以下に示すファイル同期システムに適用されるが、このファイル同期システムは一例であり、他のシステムにも適用がある。
【００２４】
本発明が適用されるファイル同期システムの一例は、複数の端末装置、及び端末装置によりアクセス可能なフォルダを備えたストレージサーバがネットワークを介して接続されるファイル同期システムにおいて、端末装置にてユーザにより操作されるファイルと、ストレージサーバのフォルダに格納されたファイルとの間の同期を確立する際に、ファイルの属性を送受信する。
【００２５】
具体的には、端末装置を使用するユーザによりファイル操作が行われると、端末装置は、そのファイルの属性群（属性データ）を生成してストレージサーバへ送信する。ここで、ファイルの属性群は、ファイルの属性が定義されたデータであり、端末装置により生成される。また、後述するＦＩも、ファイルの属性が定義されたデータであり、ストレージサーバにより生成される。そして、ストレージサーバは、ファイル操作の種別を特定し、ファイル操作の種別に応じたファイル処理（新規ファイルの格納、ファイルの更新、ファイルの削除等）を行い、新たなＦＩを生成し、この新たなＦＩを、ファイル操作が行われた端末装置へ送信すると共に、フォルダに属する全てのファイルのＦＩを、他の端末装置へ送信する。これにより、ストレージサーバに接続されている全ての端末装置及びストレージサーバは、フォルダ内の同一ファイルに対応する同一のＦＩを保持することができ、ファイル同期を確立することができる。したがって、ユーザによるファイル操作に伴って、ファイルをその都度送受信する必要がなく、必要なときにのみファイルの送受信を行えばよいから、ファイル同期の処理を低負荷かつ高効率に実現することが可能となる。
【００２６】
ここで、ファイル操作には、新規ファイル作成、ファイル更新、ファイル削除、ファイル名変更、ファイル移動及びファイルコピーがある。新規ファイル作成は、フォルダ内に新たなファイルを作成する操作である。この操作により、新たなファイルがフォルダに格納され、新たなＦＩが生成される。ファイル更新は、フォルダ内に存在するファイルのデータを更新する操作である。この操作により、ファイル内に存在する更新対象のファイルが削除され、新たな更新ファイルがフォルダに格納される。また、ＦＩも更新される。ファイル削除は、フォルダ内に存在するファイルを削除する操作である。この操作により、ＦＩも削除される。ファイル名変更は、フォルダ内に存在するファイルの名称を変更する操作である。この操作により、ファイルはそのまま格納された状態で、ＦＩに含まれるファイル名が新しくなる。ファイル移動は、フォルダ内に存在するファイルを他のフォルダへ移動する操作である。この操作により、ファイルはそのまま格納された状態で、ＦＩに含まれるファイルパスが新しくなる。ファイルコピーは、フォルダ内に存在するファイルをコピーして新たなファイルを作成する操作である。この操作により、コピー元のファイルはそのままの状態で、コピー先の新たなファイルが作成される、また、コピー元のファイルについてのＦＩとは別にコピー先のファイルについての新たなＦＩが生成される。ＦＩの詳細については後述する。
【００２７】
〔ファイル同期システムの構成〕
まず、本発明の実施形態によるファイル同期システムの構成について説明する。図１は、ファイル同期システムの全体構成を示す図である。このファイル同期システム１０は、複数の端末装置１−１，１−２，・・・、ＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍ  Ｉｎｔｅｒｆａｃｅ）サーバ２、ストレージサーバ３、イベントサーバ４及びコネクションサーバ５を備えて構成される。複数の端末装置１−１，１−２，・・・、ＡＰＩサーバ２、ストレージサーバ３、イベントサーバ４及びコネクションサーバ５は、ネットワーク６を介してそれぞれ接続される。図１において、ＡＰＩサーバ２、ストレージサーバ３、イベントサーバ４及びコネクションサーバ５は、説明の便宜上１台のみ記載してあるが、ファイル同期システム１０の規模に応じて複数台存在する場合もあり得る。また、ＡＰＩサーバ２及びストレージサーバ３を１台のストレージサーバとして構成してもよいし、イベントサーバ４及びコネクションサーバ５を１台のイベント通知サーバとして構成するようにしてもよい。ネットワーク６は、例えば、インターネット、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）等の通信網である。
【００２８】
端末装置１−１，１−２，・・・（以下、総称して端末装置１という。）は、例えばパーソナルコンピュータであり、ユーザにより携帯可能な携帯電話機、ＰＤＡ（Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｔ）、ミュージックプレーヤ、デジタルカメラ等の携帯端末であってもよい。端末装置１が携帯端末の場合、端末装置１は、無線通信網及び中継サーバを介してネットワーク６に接続される。端末装置１は、ストレージサーバ３に備えたフォルダにアクセス可能なユーザにより使用される装置であり、ユーザの操作に従って、ファイル同期システム１０を構成するネットワーク６へログインする。また、端末装置１は、ユーザによりファイル操作が行われ、ストレージサーバ３からフォルダ内のファイルをダウンロードしたり、新たなファイルまたは更新したファイルをストレージサーバ３へアップロードしたりする。
【００２９】
ＡＰＩサーバ２は、端末装置１とストレージサーバ３との間で、及び、ストレージサーバ３とイベントサーバ４との間でデータ送受信の橋渡しを行う。例えば、端末装置１がＷｅｂブラウザを用いてＨＴＴＰ（ＨｙｐｅｒＴｅｘｔ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）通信を行う場合、ＨＴＴＰ通信の処理を行い、ストレージサーバ３との間でデータを受け渡す。
【００３０】
ストレージサーバ３は、端末装置１によりアクセス可能なフォルダを備えており、フォルダ内のファイル、及びフォルダへアクセス可能なユーザを管理する。また、ファイル同期のために用いるＦＩを、フォルダ内のファイルに対応付けて管理する。
【００３１】
イベントサーバ４は、ネットワーク６にログインしている端末装置１及びユーザに関する情報（端末装置１及びユーザに関する情報をユーザ固有情報という。）をコネクションサーバ５から受信して格納する。また、イベントサーバ４は、ストレージサーバ３に格納されているＦＩが更新された場合、その更新有りのイベントを通知する通知先の端末装置１を特定し、その更新されたことを示す情報をイベント情報として、コネクションサーバ５を介して端末装置１へ通知する。
【００３２】
コネクションサーバ５は、端末装置１が、ユーザによりファイル同期システム１０を構成するネットワーク６へログインした場合、ログインしたユーザ及び接続された端末装置１のユーザ固有情報を接続情報として管理する。すなわち、コネクションサーバ５は、ストレージサーバ３に備えたフォルダへアクセスしているユーザ、及びこのユーザが使用している端末装置１に関するユーザ固有情報を接続情報として管理する。
【００３３】
〔ファイル操作時の情報の流れ〕
次に、図１に示したファイル同期システム１０において、端末装置１を使用するユーザによりファイル操作が行われた場合の情報の流れについて説明する。図２は、ファイル操作時の情報の流れを示す図である。図２において、ユーザ（ユーザＩＤ：Ａ）が端末装置１−１（端末ＩＤ：ＰＣ−Ａ）を使用し、ユーザ（ユーザＩＤ：Ｂ）が端末装置１−２（端末ＩＤ：ＰＣ−Ｂ）を使用し、端末装置１−１，１−２が、ＡＰＩサーバ２を介してストレージサーバ３に接続されているものとする。
【００３４】
（１）ログイン情報
まず、端末装置１−１を使用するユーザが、ファイル同期システム１０によりフォルダのファイルを操作するためのアプリケーションプログラムを実行すると、端末装置１−１は、ファイル同期システム１０のネットワーク６へログインする。これにより、ログイン情報（ユーザＩＤ：Ａ，端末ＩＤ：ＰＣ−Ａ）が、端末装置１−１からコネクションサーバ５へ送信される。また、端末装置１−２を使用するユーザが、同様のアプリケーションプログラムを実行すると、端末装置１−２は、ファイル同期システム１０のネットワーク６へログインする。これにより、ログイン情報（ユーザＩＤ：Ｂ，端末ＩＤ：ＰＣ−Ｂ）が、端末装置１−２からコネクションサーバ５へ送信される。尚、図示していないが、コネクションサーバ５は、端末装置１−１，１−２から受信したログイン情報を、端末装置１−１，１−２からストレージサーバ３への接続情報としてイベントサーバ４へ送信する。
【００３５】
また、端末装置１−１，１−２は、ＡＰＩサーバ２を介してストレージサーバ３へアクセスし、共有フォルダに属するファイルのＦＩを、ＡＰＩサーバ２を介して受信し、共有フォルダ及び共有フォルダに属するファイルのアイコンを表示する。
【００３６】
（２）（３）ファイル操作通知
端末装置１−２を使用するユーザが、共有フォルダ内のファイルを指定してファイル操作を行うと、端末装置１−２は、そのファイルについての複数の属性からなる属性群を生成し、属性群を含むファイル操作通知をＡＰＩサーバ２へ送信する。属性群は、ファイル操作の種別に応じて異なる複数の属性により構成される。そして、ＡＰＩサーバ２は、端末装置１−２からファイル操作通知を受信すると、受信したファイル操作通知をストレージサーバ３へ送信する。
【００３７】
ストレージサーバ３は、ＡＰＩサーバ２からファイル操作通知を受信すると、ファイル操作の種別を特定し、ファイル操作の種別に応じた処理（新規ファイルの格納、ファイルの更新、ファイルの削除等）を行い、ファイル操作が行われたファイルについての新たなＦＩを生成する。そして、ストレージサーバ３は、ファイル操作が行われた端末装置１−２以外の他の端末装置１−１へＦＩが更新されたことを通知するための更新通知（イベント種類（更新有り）、共有情報（ユーザＩＤ：Ａ，Ｂ）、上位フォルダのパス（ファイル操作が行われたファイルの属するフォルダ）、送信元端末ＩＤ（ＰＣ−Ｂ））を生成する。ここで、共有情報は、共有フォルダへのアクセスが許可されているユーザのユーザＩＤであり、上位フォルダのパスは、ファイル操作が行われたファイルの属するフォルダの所在を示すパスである。更新通知の詳細については後述する。
【００３８】
（４’）（５’）ＦＩ
ストレージサーバ３は、生成した新たなＦＩをＡＰＩサーバ２へ送信する。そして、ＡＰＩサーバ２は、ストレージサーバ３から受信したＦＩを端末装置１−２へ送信する。この場合、ＡＰＩサーバ２は、ＦＩと共に、ファイル操作が行われた端末装置１−２の端末ＩＤ：ＰＣ−Ｂも受信することにより、ＦＩの送信先を判断する。端末装置１−２は、ＡＰＩサーバ２から新たなＦＩを受信する。
【００３９】
図３は、イベント通知シーケンスを説明する図である。このイベント通知シーケンスは、図２における（４）〜（１３）のシーケンスに相当し、端末装置１−２におけるファイル操作に伴って、ＦＩが更新されたことを示す（新たなＦＩが生成されたことを示す）イベントを端末装置１−１へ通知するための手順を示している。以下、図２及び図３を参照して説明する。
【００４０】
（４）（５）更新通知
ストレージサーバ３は、更新通知をＡＰＩサーバ２へ送信する。ＡＰＩサーバ２は、ストレージサーバ３から更新通知を受信すると、更新通知を格納し、更新通知をイベントサーバ４へ送信する。
【００４１】
（６）更新指令
イベントサーバ４は、更新通知を受信すると、格納している接続情報を参照し、更新通知に含まれる共有情報（ユーザＩＤ：Ａ，Ｂ）及び送信元端末ＩＤ（ＰＣ−Ｂ）に基づいて、この更新のイベントを通知する通知先の端末装置１−１（端末ＩＤ：ＰＣ−Ａ）を特定する。そして、イベントサーバ４は、更新のイベントの通知先である通知先端末ＩＤ（ＰＣ−Ａ）を含む更新指令をコネクションサーバ５へ送信する。
【００４２】
（７）更新有り
コネクションサーバ５は、イベントサーバ４から更新指令を受信すると、更新指令に含まれる通知先端末ＩＤ（ＰＣ−Ａ）である端末装置１−１へ更新有りの情報を送信する。これにより、端末装置１−１は、ストレージサーバ３の共有フォルダ内のファイルが更新されたことを判断することができ、新たなＦＩをストレージサーバ３から取得するための処理を行う。
【００４３】
（８）更新情報取得要求
端末装置１−１は、コネクションサーバ５から更新有りの情報を受信すると、新たなＦＩを取得するに先立って、新たなＦＩのファイルが属する上位のフォルダのパスを取得するために、自らの端末ＩＤ（ＰＣ−Ａ）を含む更新情報取得要求をＡＰＩサーバ２へ送信する。
【００４４】
（９）上位フォルダのパス
ＡＰＩサーバ２は、端末装置１−１から更新情報取得要求を受信すると、格納している更新通知を参照し、更新情報取得要求に含まれる端末ＩＤ（ＰＣ−Ａ）に基づいて、上位フォルダのパスを特定する。そして、ＡＰＩサーバ２は、上位フォルダのパスを端末装置１−１へ送信する。これにより、端末装置１−１は、更新されたファイルが属する上位フォルダのパスを判断することができ、その上位フォルダに属する全てのファイルのＦＩを取得するための処理を行う。上位フォルダに属する全てのファイルのＦＩを取得するのは、全てのＦＩの中に、端末装置１−２におけるファイル操作によって生成された新たなＦＩが含まれているからである。
【００４５】
（１０）（１１）ＦＩ取得要求
端末装置１−１は、ＡＰＩサーバ２から上位フォルダのパスを受信すると、その上位フォルダに属する全てのファイルのＦＩを取得するために、その上位フォルダのパスを含むＦＩ取得要求をＡＰＩサーバ２へ送信する。ＡＰＩサーバ２は、端末装置１−１からＦＩ取得要求を受信すると、受信したＦＩ取得要求をストレージサーバ３へ送信する。尚、上位フォルダに属する全てのファイルのＦＩとは、共有フォルダに属する全ての共有ファイルのＦＩをいい、共有フォルダに属する共有ファイル以外のファイルのＦＩは含まない。共有フォルダに属するファイルには、複数のユーザによりアクセス可能な共有ファイルの他、複数のユーザによっては共有されず、特定のユーザのみがアクセス可能なファイルも存在するからである。以下の説明においても同様である。
【００４６】
（１２）（１３）ＦＩ群
ストレージサーバ３は、ＡＰＩサーバ２からＦＩ取得要求を受信すると、ＦＩ取得要求に含まれる上位フォルダのパスに基づいて、ストレージサーバ３に格納された全てのＦＩの中から、この上位フォルダに属するファイルのＦＩを特定し、ＦＩ群をＡＰＩサーバ２へ送信する。ＡＰＩサーバ２は、ストレージサーバ３からＦＩ群を受信すると、このＦＩ群を端末装置１−１へ送信する。
【００４７】
このように、端末装置１−２におけるファイル操作に伴って、ストレージサーバ３により新たに生成されたＦＩは、ストレージサーバ３からＡＰＩサーバ２を介して端末装置１−２へ送信される。また、前述のイベント通知シーケンスによって、ＦＩが更新されたことを示す情報（更新のイベント）が、ＡＰＩサーバ２、イベントサーバ４及びコネクションサーバ５を介して他の端末装置１−１へ送信され、共有フォルダに属する全てのファイルのＦＩ（新たに生成されたＦＩを含む）が、ＡＰＩサーバ２を介して端末装置１−１へ送信される。これにより、端末装置１−１，１−２及びストレージサーバ３は、新たな同一のＦＩを保持することができ、ファイル同期を確立することができる。
【００４８】
尚、ログイン情報等（１）（７）は、ＳＳＬ（Ｓｅｃｕｒｅ  Ｓｏｃｋｅｔ  Ｌａｙｅｒ）のプロトコルは用いられず、非ＳＳＬにて行われる。このうち、ログイン情報（１）は、Ｃｏｏｋｉｅ（Ｅｃｏｏｋｉｅ）により暗号化され、更新有りの情報（７）は、暗号化されない実データとして、端末装置１とコネクションサーバ５との間で送受信される。これにより、端末装置１及びコネクションサーバ５における処理負荷を軽減することができる。また、各種情報（５’）（８）（９）（１０）（１３）は、端末装置１とＡＰＩサーバ２との間で、ＳＳＬのプロトコルによる暗号化データとして送受信される。これは、上位フォルダのパス、ＦＩ等のデータは秘匿化する必要性が高いからである。これにより、共有フォルダ及びＦＩ等に関する情報が秘匿化され、情報のセキュリティを確保することができる。
【００４９】
〔ファイル操作時のＦＩの変遷〕
次に、図２に示したファイル操作時の情報の流れにおけるＦＩの変遷について説明する。まず、ＦＩについて詳細に説明する。図４は、ＦＩの構成を示す図である。このＦＩは、ファイルの属性を示す複数の情報から構成され、具体的には、ユニークＩＤ：ａ、ファイルサイズ：ｂ、ハッシュ値：ｃ、Ｅタグ（Ｅｎｔｉｔｙタグ）：ｄ、ファイル名：ｅ、ファイルパス：ｆ及び更新日時：ｇの各属性から構成される。１つのファイルに対応して１つのＦＩが存在する。ユニークＩＤは、ファイルを一意に特定するための値であり、ファイル毎に異なる値が付与される。ファイルサイズは、ファイルの大きさを示す値であり、ハッシュ値は、ハッシュ関数により得られたファイルデータの関数値である。Ｅタグは、ファイルが操作されたときに新たに付与される値であり、後述するファイル衝突を判定するために用いられる。ファイル名は、ファイルの名称であり、ファイルパスは、フォルダ内におけるファイルの所在を示すアドレスであり、更新日時は、ＦＩが新たに生成され、または更新された日時である。尚、ＦＩが新たに生成される場合、新たなユニークＩＤが付与され、ＦＩが更新される場合、ＦＩのユニークＩＤは、以前と同じ値が用いられる。例えば、新規ファイルが作成された場合、またはファイルがコピーされた場合には、ストレージサーバ３により、新たなファイルまたはコピー先のファイルに対し、新たなユニークＩＤを含むＦＩが生成される。また、例えば、ファイルが更新された場合、更新されたファイルに対し、更新前と同じユニークＩＤを含むＦＩが生成される。以下、新規ファイル作成、ファイル更新、ファイル削除、ファイル名変更、ファイル移動及びファイルコピーの各ファイル操作において、ＦＩの変遷について具体的に説明する。
【００５０】
（新規ファイル作成時のＦＩ）
まず、新規ファイル作成時のＦＩの変遷について説明する。図５は、新規ファイル作成時のＦＩの変遷を説明する図である。図５において、ＡＰＩサーバ２、イベントサーバ４及びコネクションサーバ５、並びにこれらの装置にて送受信される情報は省略してある。また、図５の（２）（３）（４’）（５’）（４）〜（１１）（１２）（１３）の情報は、図２及び図３に示したものと同一である。図６〜図１０においても同じである。
【００５１】
また、ユーザ（ユーザＩＤ：Ａ）が使用する端末装置１−１（端末ＩＤ：ＰＣ−Ａ）、及びユーザ（ユーザＩＤ：Ｂ）が使用する端末装置１−２（端末ＩＤ：ＰＣ−Ｂ）は、ファイル同期システム１０のネットワーク６へログインし、ストレージサーバ３に備えた共有フォルダへアクセスし、共有フォルダに属する全てのファイルのＦＩ（β１），・・・，ＦＩ（βｎ）をストレージサーバ３から取得し、保持しているものとする。つまり、端末装置１−１，１−２は、同一のＦＩ（β１），・・・，ＦＩ（βｎ）をそれぞれ保持している。β１〜βｎは、個々のファイルを便宜上区別するための識別子であり、例えば、ＦＩ（β１）は、ファイルβ１のＦＩを示す。図５において、端末装置１−１，１−２は、共有フォルダのアイコンを表示しているものとする。
【００５２】
ここで、端末装置１−２を使用するユーザが、共有フォルダ内に新たなファイルを作成する操作を行い、新規ファイル作成の操作を完了する。そうすると、端末装置１−２は、ヌルのユニークＩＤ、ファイルサイズｂ１、ハッシュ値ｃ１、ヌルのＥタグ、ファイル名ｅ１、ファイルパスｆ１及びヌルの更新日時を付与し、これらの属性を含む属性群を生成する。そして、端末装置１−２は、属性群（−，ｂ１，ｃ１，−，ｅ１，ｆ１，−）、ファイルデータ、自らの端末ＩＤ（ＰＣ−Ｂ）及びファイル操作種別データ（新規ファイル作成を示すデータ）を含むファイル操作通知を生成し、ファイル操作通知（２）（３）を、ＡＰＩサーバ２を介してストレージサーバ３へ送信する。
【００５３】
ストレージサーバ３は、端末装置１−２からＡＰＩサーバ２を介してファイル操作通知を受信すると、ファイル操作の種別を「新規ファイル作成」に特定し、端末装置１−２からアップロードした新たなファイルを格納する。そして、ストレージサーバ３は、ユニークＩＤａ２、Ｅタグｄ２及び更新日時ｇ２を付与し、これらの属性を含む新たなＦＩ（ａ２，ｂ１，ｃ１，ｄ２，ｅ１，ｆ１，ｇ２）を生成し、格納する。これにより、新たなファイルに対応するＦＩ（βｚ）が生成される。
【００５４】
ストレージサーバ３は、新たなＦＩ（βｚ）（４’）（５’）を、ＡＰＩサーバ２を介して端末装置１−２へ送信する。これにより、端末装置１−２は、共有フォルダに属するファイルのＦＩにＦＩ（βｚ）を追加し、ＦＩ（β１），・・・，ＦＩ（βｎ），ＦＩ（βｚ）を保持する。
【００５５】
また、ストレージサーバ３は、図２及び図３に示したイベント通知シーケンス（４）〜（１１）（１２）（１３）により、共有フォルダに属する全てのファイルのＦＩ群であるＦＩ（β１），・・・，ＦＩ（βｎ），ＦＩ（βｚ）を端末装置１−１へ送信する。これにより、端末装置１−１は、共有フォルダに属するファイルのＦＩとして、ＦＩ（β１），・・・，ＦＩ（βｎ），ＦＩ（βｚ）を保持する。
【００５６】
このように、端末装置１−２における新規ファイル作成の操作に伴って、新たなファイルは、端末装置１−２からＡＰＩサーバ２を介してストレージサーバ３へアップロードされ、ストレージサーバ３により新たに生成された、新たなファイルに対応するＦＩ（βｚ）は、ストレージサーバ３からＡＰＩサーバ２を介して端末装置１−２へ送信される。また、共有フォルダに属する全てのファイルのＦＩ群（新たに作成されたＦＩ（βｚ）を含む）は、イベント通知シーケンスによって端末装置１−１へ送信される。これにより、端末装置１−１，１−２及びストレージサーバ３は、新たな同一のＦＩ（βｚ）を保持することができ、ファイル同期を確立することができる。
【００５７】
（ファイル更新時のＦＩ）
次に、ファイル更新時のＦＩの変遷について説明する。図６は、ファイル更新時のＦＩの変遷を説明する図である。図５と同様に、端末装置１−１，１−２は、ファイル同期システム１０のネットワーク６にログインし、ストレージサーバ３から共有フォルダに属する全てのファイルのＦＩを取得し、同一のＦＩ（β１），・・・，ＦＩ（βｎ）をそれぞれ保持しているものとする。ここで、ＦＩ（βｎ）は、ユニークＩＤａ、ファイルサイズｂ、ハッシュ値ｃ、Ｅタグｄ、ファイル名ｅ、ファイルパスｆ及び更新日時ｇから構成され、ＦＩ（ａ，ｂ，ｃ，ｄ，ｅ，ｆ，ｇ）とする。
【００５８】
ここで、端末装置１−２を使用するユーザが、共有フォルダ内のＦＩ（βｎ）のファイルをストレージサーバ３からダウンロードし、そのファイルを更新する操作を行い、ファイル更新の操作を完了する。そうすると、端末装置１−２は、ファイルサイズｂ１及びハッシュ値ｃ１を付与し、これらの属性を含む属性群（ａ，ｂ１，ｃ１，ｄ，ｅ，ｆ，ｇ）を生成する。そして、端末装置１−２は、属性群（ａ，ｂ１，ｃ１，ｄ，ｅ，ｆ，ｇ）、ファイルデータ、自らの端末ＩＤ（ＰＣ−Ｂ）及びファイル操作種別データ（ファイル更新を示すデータ）を含むファイル操作通知を生成し、ファイル操作通知（２）（３）を、ＡＰＩサーバ２を介してストレージサーバ３へ送信する。
【００５９】
ストレージサーバ３は、端末装置１−２からＡＰＩサーバ２を介してファイル操作通知を受信すると、ファイル操作の種別を「ファイル更新」に特定し、端末装置１−２からアップロードした更新ファイルを格納する。そして、ストレージサーバ３は、Ｅタグｄ２及び更新日時ｇ２を付与し、これらの属性と、受信したファイル操作通知に含まれる属性群のユニークＩＤａ、ファイルサイズｂ１、ハッシュ値ｃ１、ファイル名ｅ及びファイルパスｆとにより、ＦＩ（ａ，ｂ１，ｃ１，ｄ２，ｅ，ｆ，ｇ２）を生成（更新）し、上書きする。これにより、更新ファイルに対応するＦＩ（βｎ）が生成される。
【００６０】
ストレージサーバ３は、ＦＩ（βｎ）（４’）（５’）を、ＡＰＩサーバ２を介して端末装置１−２へ送信する。これにより、端末装置１−２は、共有フォルダに属するファイルのＦＩ（βｎ）を更新し、ＦＩ（β１），・・・及び更新したＦＩ（βｎ）を保持する。
【００６１】
また、ストレージサーバ３は、図２及び図３に示したイベント通知シーケンス（４）〜（１１）（１２）（１３）により、共有フォルダに属する全てのファイルのＦＩ群であるＦＩ（β１），・・・，ＦＩ（βｎ）を端末装置１−１へ送信する。これにより、端末装置１−１は、共有フォルダに属するファイルのＦＩとして、ＦＩ（β１），・・・及び更新したＦＩ（βｎ）を保持する。
【００６２】
このように、端末装置１−２におけるファイル更新の操作に伴って、更新ファイルは、端末装置１−２からＡＰＩサーバ２を介してストレージサーバ３へアップロードされ、ストレージサーバ３により生成（更新）された、更新ファイルに対応するＦＩ（βｎ）は、ストレージサーバ３からＡＰＩサーバ２を介して端末装置１−２へ送信される。また、共有フォルダに属する全てのファイルのＦＩ群（更新されたＦＩ（βｎ）を含む）は、イベント通知シーケンスによって端末装置１−１へ送信される。これにより、端末装置１−１，１−２及びストレージサーバ３は、更新された同一のＦＩ（βｎ）を保持することができ、ファイル同期を確立することができる。
【００６３】
（ファイル削除時のＦＩ）
次に、ファイル削除時のＦＩの変遷について説明する。図７は、ファイル削除時のＦＩの変遷を説明する図である。端末装置１−１，１−２は、ファイル同期システム１０のネットワーク６にログインし、ストレージサーバ３から共有フォルダに属する全てのファイルのＦＩを取得し、同一のＦＩ（β１），・・・，ＦＩ（βｍ），ＦＩ（βｎ）をそれぞれ保持しているものとする。ここで、ＦＩ（βｎ）は、ユニークＩＤａ、ファイルサイズｂ、ハッシュ値ｃ、Ｅタグｄ、ファイル名ｅ、ファイルパスｆ及び更新日時ｇから構成され、ＦＩ（ａ，ｂ，ｃ，ｄ，ｅ，ｆ，ｇ）とする。
【００６４】
ここで、端末装置１−２を使用するユーザが、共有フォルダ内のＦＩ（βｎ）のファイルを削除する操作を行い、ファイル削除の操作を完了する。そうすると、端末装置１−２は、保持しているＦＩ（βｎ）の属性を用いて属性群（ａ，ｂ，ｃ，ｄ，ｅ，ｆ，ｇ）を生成し、属性群（ａ，ｂ，ｃ，ｄ，ｅ，ｆ，ｇ）、自らの端末ＩＤ（ＰＣ−Ｂ）及びファイル操作種別データ（ファイル削除を示すデータ）を含むファイル操作通知を生成し、ファイル操作通知（２）（３）を、ＡＰＩサーバ２を介してストレージサーバ３へ送信する。また、端末装置１−２は、ＦＩ（βｎ）を削除する。これにより、端末装置１−２は、共有フォルダに属するファイルのＦＩとして、ＦＩ（β１），・・・，ＦＩ（βｍ）を保持する。尚、端末装置１−２は、ユニークＩＤａ、ファイル削除の操作が行われたことを示す情報及び自らの端末ＩＤ（ＰＣ−Ｂ）を含むファイル操作通知を送信するようにしてもよい。
【００６５】
ストレージサーバ３は、端末装置１−２からＡＰＩサーバ２を介してファイル操作通知を受信すると、ファイル操作の種別を「ファイル削除」に特定し、ＦＩ（βｎ）のファイルを削除すると共に、ＦＩ（βｎ）を削除する。
【００６６】
ストレージサーバ３は、図２及び図３に示したイベント通知シーケンス（４）〜（１１）（１２）（１３）により、共有フォルダに属する全てのファイルのＦＩ群であるＦＩ（β１），・・・，ＦＩ（βｍ）を端末装置１−１へ送信する。これにより、端末装置１−１は、共有フォルダに属するファイルのＦＩとして、ＦＩ（β１），・・・，ＦＩ（βｍ）を保持する。
【００６７】
このように、端末装置１−２におけるファイル削除の操作に伴って、削除対象のファイルについてのＦＩ（βｎ）は、端末装置１−２及びストレージサーバ３において削除される。また、共有フォルダに属する全てのファイルのＦＩ群（削除されたＦＩ（βｎ）は含まない）は、イベント通知シーケンスによって端末装置１−１へ送信される。これにより、端末装置１−１，１−２及びストレージサーバ３は、削除されたＦＩ（βｎ）を含まない同一のＦＩ群を保持することができ、ファイル同期を確立することができる。
【００６８】
（ファイル名変更時のＦＩ）
次に、ファイル名変更時のＦＩの変遷について説明する。図８は、ファイル名変更時のＦＩの変遷を説明する図である。図５及び図６と同様に、端末装置１−１，１−２は、ファイル同期システム１０のネットワーク６にログインし、ストレージサーバ３から共有フォルダに属する全てのファイルのＦＩを取得し、同一のＦＩ（β１），・・・，ＦＩ（βｎ）をそれぞれ保持しているものとする。ここで、ＦＩ（βｎ）は、ユニークＩＤａ、ファイルサイズｂ、ハッシュ値ｃ、Ｅタグｄ、ファイル名ｅ、ファイルパスｆ及び更新日時ｇから構成され、ＦＩ（ａ，ｂ，ｃ，ｄ，ｅ，ｆ，ｇ）とする。
【００６９】
ここで、端末装置１−２を使用するユーザが、共有フォルダ内のＦＩ（βｎ）のファイル名を変更する操作を行い、ファイル名変更の操作を完了する。そうすると、端末装置１−２は、ファイル名ｅ１を付与し、属性群（ａ，ｂ，ｃ，ｄ，ｅ１，ｆ，ｇ）を生成し、属性群（ａ，ｂ，ｃ，ｄ，ｅ１，ｆ，ｇ）、自らの端末ＩＤ（ＰＣ−Ｂ）及びファイル操作種別データ（ファイル名変更を示すデータ）を含むファイル操作通知を生成し、ファイル操作通知（２）（３）を、ＡＰＩサーバ２を介してストレージサーバ３へ送信する。
【００７０】
ストレージサーバ３は、端末装置１−２からＡＰＩサーバ２を介してファイル操作通知を受信すると、ファイル操作の種別を「ファイル名変更」に特定する。そして、ストレージサーバ３は、Ｅタグｄ２及び更新日時ｇ２を付与し、これらの属性と、受信したファイル操作通知に含まれる属性群のユニークＩＤａ、ファイルサイズｂ、ハッシュ値ｃ、ファイル名ｅ１及びファイルパスｆとにより、ＦＩ（ａ，ｂ，ｃ，ｄ２，ｅ１，ｆ，ｇ２）を生成（更新）し、上書きする。
【００７１】
ストレージサーバ３は、ＦＩ（βｎ）（４’）（５’）を、ＡＰＩサーバ２を介して端末装置１−２へ送信する。これにより、端末装置１−２は、共有フォルダに属するファイルのＦＩ（βｎ）を更新し、ＦＩ（β１），・・・及び更新したＦＩ（βｎ）を保持する。
【００７２】
また、ストレージサーバ３は、図２及び図３に示したイベント通知シーケンス（４）〜（１１）（１２）（１３）により、共有フォルダに属する全てのファイルのＦＩ群であるＦＩ（β１），・・・，ＦＩ（βｎ）を端末装置１−１へ送信する。これにより、端末装置１−１は、共有フォルダに属するファイルのＦＩとして、ＦＩ（β１），・・・及び更新したＦＩ（βｎ）を保持する。
【００７３】
このように、端末装置１−２におけるファイル名変更の操作に伴って、ストレージサーバ３により生成（更新）されたＦＩ（βｎ）は、ストレージサーバ３からＡＰＩサーバ２を介して端末装置１−２へ送信される。また、共有フォルダに属する全てのファイルのＦＩ群（更新されたＦＩ（βｎ）を含む）は、イベント通知シーケンスによって端末装置１−１へ送信される。これにより、端末装置１−１，１−２及びストレージサーバ３は、更新された同一のＦＩ（βｎ）を保持することができ、ファイル同期を確立することができる。
【００７４】
（ファイル移動時のＦＩ）
次に、ファイル移動時のＦＩの変遷について説明する。図９は、ファイル移動時のＦＩの変遷を説明する図である。端末装置１−１，１−２は、ファイル同期システム１０のネットワーク６にログインし、ストレージサーバ３から共有フォルダに属する全てのファイルのＦＩを取得し、第１のフォルダにおいて同一のＦＩ（β１），ＦＩ（β２）をそれぞれ保持し、第２のフォルダにおいて同一のＦＩ（γ１）をそれぞれ保持しているものとする。ここで、ＦＩ（β２）は、ユニークＩＤａ、ファイルサイズｂ、ハッシュ値ｃ、Ｅタグｄ、ファイル名ｅ、ファイルパスｆ及び更新日時ｇから構成され、ＦＩ（ａ，ｂ，ｃ，ｄ，ｅ，ｆ，ｇ）とする。
【００７５】
ここで、端末装置１−２を使用するユーザが、第１のフォルダに属するＦＩ（β２）のファイルを、第２のフォルダへ移動する操作を行い、ファイル移動の操作を完了する。そうすると、端末装置１−２は、移動先のファイルパスｆ１を付与し、属性群（ａ，ｂ，ｃ，ｄ，ｅ，ｆ１，ｇ）生成し、属性群（ａ，ｂ，ｃ，ｄ，ｅ，ｆ１，ｇ）、自らの端末ＩＤ（ＰＣ−Ｂ）及びファイル操作種別データ（ファイル移動を示すデータ）を含むファイル操作通知を生成し、ファイル操作通知（２）（３）を、ＡＰＩサーバ２を介してストレージサーバ３へ送信する。
【００７６】
ストレージサーバ３は、端末装置１−２からＡＰＩサーバ２を介してファイル操作通知を受信すると、ファイル操作の種別を「ファイル移動」に特定する。そして、ストレージサーバ３は、Ｅタグｄ２及び更新日時ｇ２を付与し、これらの属性と、受信したファイル操作通知に含まれる属性群のユニークＩＤａ、ファイルサイズｂ、ハッシュ値ｃ及びファイル名ｅとにより、ＦＩ（ａ，ｂ，ｃ，ｄ２，ｅ，ｆ１，ｇ２）を生成（更新）し、上書きする。
【００７７】
ストレージサーバ３は、ＦＩ（β２）（４’）（５’）を、ＡＰＩサーバ２を介して端末装置１−２へ送信する。これにより、端末装置１−２は、第１のフォルダからＦＩ（β２）を削除し、第２のフォルダにＦＩ（β２）を追加し、第１のフォルダにおいてＦＩ（β１）を保持し、第２のフォルダにおいてＦＩ（γ１），ＦＩ（β２）を保持する。
【００７８】
また、ストレージサーバ３は、図２及び図３に示したイベント通知シーケンス（４）〜（１１）（１２）（１３）により、共有フォルダ内の第１のフォルダに属する全てのファイルのＦＩ群であるＦＩ（β１）、及び第２のフォルダに属する全てのファイルのＦＩ群であるＦＩ（γ１），ＦＩ（β２）を端末装置１−１へ送信する。これにより、端末装置１−１は、共有フォルダに属するファイルのＦＩとして、第１のフォルダにおいてＦＩ（β１）を保持し、第２のフォルダにおいてＦＩ（γ１），ＦＩ（β２）を保持する。
【００７９】
このように、端末装置１−２におけるファイル移動の操作に伴って、ストレージサーバ３により生成（更新）されたＦＩ（β２）は、ストレージサーバ３からＡＰＩサーバ２を介して端末装置１−２へ送信される。また、ファイルの移動元である第１のフォルダ、及びファイルの移動先である第２のフォルダに属する全てのファイルのＦＩ群（更新されたＦＩ（β２）を含む）は、イベント通知シーケンスによって端末装置１−１へ送信される。これにより、端末装置１−１，１−２及びストレージサーバ３は、第１のフォルダにおいて同一のＦＩ（β１）を保持することができ、第２のフォルダにおいてＦＩ（γ１）及び追加された同一のＦＩ（β２）を保持することができ、実データのファイルを移動することなく、ファイル同期を確立することができる。
【００８０】
（ファイルコピー時のＦＩ）
次に、ファイルコピー時のＦＩの変遷について説明する。図１０は、ファイルコピー時のＦＩの変遷を説明する図である。図９と同様に、端末装置１−１，１−２は、ファイル同期システム１０のネットワーク６にログインし、ストレージサーバ３から共有フォルダに属する全てのファイルのＦＩを取得し、第１のフォルダにおいて同一のＦＩ（β１），ＦＩ（β２）をそれぞれ保持し、第２のフォルダにおいて同一のＦＩ（γ１）をそれぞれ保持しているものとする。ここで、ＦＩ（β２）は、ユニークＩＤａ、ファイルサイズｂ、ハッシュ値ｃ、Ｅタグｄ、ファイル名ｅ、ファイルパスｆ及び更新日時ｇから構成され、ＦＩ（ａ，ｂ，ｃ，ｄ，ｅ，ｆ，ｇ）とする。
【００８１】
ここで、端末装置１−２を使用するユーザが、第１のフォルダに属するＦＩ（β２）のファイルを、第２のフォルダへコピーする操作を行い、ファイルコピーの操作を完了する。そうすると、端末装置１−２は、ヌルのユニークＩＤ及びコピー先のファイルパスｆ１を付与し、属性群（−，ｂ，ｃ，−，ｅ，ｆ１，−）を生成し、属性群（−，ｂ，ｃ，−，ｅ，ｆ１，−）、自らの端末ＩＤ（ＰＣ−Ｂ）及びファイル操作種別データ（ファイルコピーを示すデータ）を含むファイル操作通知を生成し、ファイル操作通知（２）（３）を、ＡＰＩサーバ２を介してストレージサーバ３へ送信する。
【００８２】
ストレージサーバ３は、端末装置１−２からＡＰＩサーバ２を介してファイル操作通知を受信すると、ファイル操作の種別を「ファイルコピー」に特定する。そして、ストレージサーバ３は、コピー元のファイルをコピーすることにより、コピー先のファイルとして新たなファイルを格納する。尚、コピー元のファイルは、ファイル操作通知に含まれる、コピー元ファイルのユニークＩＤ（図示せず）に基づいて特定される。そして、ストレージサーバ３は、ユニークＩＤａ２、Ｅタグｄ２及び更新日時ｇ２を付与し、これらの属性と、受信したファイル操作通知に含まれる属性群のファイルサイズｂ、ハッシュ値ｃ及びファイル名ｅとにより、新たなＦＩ（ａ２，ｂ，ｃ，ｄ２，ｅ，ｆ１，ｇ２）をＦＩ（γ２）として生成し、格納する。これにより、ストレージサーバ３は、コピー元のファイルのＦＩ（β２）及びコピー先のファイルのＦＩ（γ２）を保持することになる。
【００８３】
ストレージサーバ３は、ＦＩ（γ２）（４’）（５’）を、ＡＰＩサーバ２を介して端末装置１−２へ送信する。これにより、端末装置１−２は、第２のフォルダにＦＩ（γ２）を追加し、第１のフォルダにおいてＦＩ（β１），ＦＩ（β２）を保持し、第２のフォルダにおいてＦＩ（γ１），ＦＩ（γ２）を保持する。
【００８４】
また、ストレージサーバ３は、図２及び図３に示したイベント通知シーケンス（４）〜（１１）（１２）（１３）により、共有フォルダ内の第２のフォルダに属する全てのファイルのＦＩ群であるＦＩ（γ１），ＦＩ（γ２）を端末装置１−１へ送信する。これにより、端末装置１−１は、共有フォルダに属するファイルのＦＩとして、第１のフォルダにおいてＦＩ（β１），ＦＩ（β２）を保持し、第２のフォルダにおいてＦＩ（γ１），ＦＩ（γ２）を保持する。
【００８５】
このように、端末装置１−２におけるファイルコピーの操作に伴って、ストレージサーバ３により新たに生成されたＦＩ（γ２）は、ストレージサーバ３からＡＰＩサーバ２を介して端末装置１−２へ送信される。また、ファイルのコピー先である第２のフォルダに属する全てのファイルのＦＩ群（新たに生成されたＦＩ（γ２）を含む）は、イベント通知シーケンスによって端末装置１−１へ送信される。これにより、端末装置１−１，１−２及びストレージサーバ３は、第２のフォルダにおいて追加された同一のＦＩ（γ２）を保持することができ、実データのファイルをコピーすることなく、ファイル同期を確立することができる。
【００８６】
〔端末装置〕
次に、図１及び図２に示した端末装置１について詳細に説明する。図１５は、端末装置１の構成を示すブロック図である。この端末装置１は、通信部１１、ファイル処理部１２及び記憶部１３を備えている。
【００８７】
通信部１１は、所定のプロトコルを用いてＡＰＩサーバ２及びコネクションサーバ５との間でデータの送受信を行う。ファイル同期システム１０のネットワーク６へのログインに伴い、ログイン情報（ユーザＩＤ、端末ＩＤ）をコネクションサーバ５へ送信する。また、通信部１１は、コネクションサーバ５から更新有りの情報を受信してファイル処理部１２に出力する。また、通信部１１は、ファイル処理部１２からファイル操作通知、更新情報取得要求及びＦＩ取得要求を入力してＡＰＩサーバ２へ送信し、ＡＰＩサーバ２から上位フォルダのパス及びＦＩを受信してファイル処理部１２に出力する。また、通信部１１は、ＡＰＩサーバ２からユーザ選択指令を受信してファイル処理部１２に出力し、ファイル処理部１２からユーザ選択種別を入力してＡＰＩサーバ２へ送信する。
【００８８】
ファイル処理部１２は、ファイル操作部１２１、属性処理部１２２及びアイコン表示部１２３を備えている。ファイル操作部１２１は、ユーザによるファイル操作に伴って、新たなファイルを作成したり、ストレージサーバ３からファイルをダウンロードして更新したり、ファイルを削除したりする等のファイル操作に関する処理を行う。
【００８９】
属性処理部１２２は、ファイル同期システム１０のネットワーク６へのログインに伴って、通信部１１を介してストレージサーバ３に備えた共有フォルダへアクセスし、共有フォルダに属する全てのファイルのＦＩを取得し、アイコン表示部１２３に、共有フォルダのアイコン及びファイルのアイコンを表示させる。また、属性処理部１２２は、ファイル操作部１２１によるファイル操作の処理に従って属性群を生成し、属性群、自らの端末ＩＤ及びファイル操作種別データ（ファイル操作の種別を特定するためのデータ）等を含むファイル操作通知を生成し、通信部１１へ出力する。
【００９０】
アイコン表示部１２３は、ファイル操作部１２１及び属性処理部１２２からフォルダに関する情報、及びフォルダに属するファイルのＦＩ等を入力し、フォルダのアイコン及びファイルのアイコンを表示する。
【００９１】
記憶部１３は、ＦＩ、ファイル及び領域データファイルを備えている。ＦＩ、ファイル及び領域データファイルは、ファイル処理部１２により格納され、また、読み出される。ＦＩを構成する属性については、図４にて説明済みであるから、ここでは説明を省略する。領域データファイルについては後述する。尚、記憶部１３には、新規ファイル作成時に、新たなファイルが格納され、ファイル更新時に、ストレージサーバ３からダウンロードされたファイルが格納される。また、記憶部１３に格納されたファイルはファイル処理部１２により読み出され、通信部１１を介してストレージサーバ３へアップロードされる。
【００９２】
次に、図１５に示した端末装置１の処理について説明する。図１６は、端末装置１の処理を示すフローチャートである。端末装置１の通信部１１は、ストレージサーバ３からＡＰＩサーバ２を介してＦＩを受信したか否かを判定し（ステップＳ１６０１）、ＦＩを受信したと判定した場合（ステップＳ１６０１：Ｙ）、受信したＦＩをファイル処理部１２に出力する。そして、ファイル処理部１２の属性処理部１２２は、通信部１１からＦＩを入力し、記憶部１３に格納すると共に、アイコン表示部１２３に出力する。アイコン表示部１２３は、属性処理部１２２からＦＩを入力し、ＦＩに含まれるファイルパスに基づいて、予め設定された共有フォルダのアイコン及びファイルのアイコンを表示する（ステップＳ１６０２）。また、ファイル操作部１２１は、ユーザによりファイルのダウンロードの操作が行われた場合、ユーザにより指定されたファイルをダウンロードするための指示を通信部１１に出力する。この指示は、ＡＰＩサーバ２を介してストレージサーバ３へ送信され、ファイル操作部１２１は、ストレージサーバ３からＡＰＩサーバ２を介してダウンロードしたファイルを、通信部１１から入力して記憶部１３に格納する（ステップＳ１６０３）。一方、通信部１１は、ステップＳ１６０１において、ＦＩを受信していないと判定した場合（ステップＳ１６０１：Ｎ）、ステップＳ１６０４へ移行する。
【００９３】
ファイル処理部１２の属性処理部１２２は、ファイル操作部１２１によりファイル操作の処理が行われたか否かを判定し（ステップＳ１６０４）、ファイル操作の処理が行われたと判定した場合（ステップＳ１６０４：Ｙ）、ファイル操作に伴う属性群を生成し（ステップＳ１６０５）、属性群、自らの端末ＩＤ及びファイル操作種別データ等を含むファイル操作通知を生成し、通信部１１に出力する。このファイル操作通知は、ＡＰＩサーバ２を介してストレージサーバ３へ送信される（ステップＳ１６０６）。また、属性処理部１２２は、ファイル操作通知の出力に伴って、ファイル操作部１２１により行われたファイル操作が「新規ファイル作成」または「ファイル更新」の場合、記憶部１３から新たに作成されたファイルまたは更新されたファイルを読み出し、通信部１１に出力する。このファイルは、ＡＰＩサーバ２を介してストレージサーバ３へアップロードされる（ステップＳ１６０７）。また、属性処理部１２２は、ファイル操作に応じた処理を行う。例えば、ファイル操作がファイル削除の場合、削除されるファイルのＦＩを記憶部１３から削除すると共に、アイコン表示部１２３に、そのファイルのアイコン表示を削除させる。一方、属性処理部１２２は、ステップＳ１６０４において、ファイル操作の処理が行われていないと判定した場合（ステップＳ１６０４：Ｎ）、ステップＳ１６０８へ移行する。
【００９４】
通信部１１は、コネクションサーバ５から更新有りの情報を受信したか否かを判定し（ステップＳ１６０８）、更新有りの情報を受信したと判定した場合（ステップＳ１６０８：Ｙ）、更新有りの情報をファイル処理部１２に出力する。ファイル処理部１２の属性処理部１２２は、通信部１１から更新有りの情報を入力すると、更新情報取得要求を通信部１１に出力する。この更新情報取得要求は、ＡＰＩサーバ２へ送信される（ステップＳ１６０９）。ＡＰＩサーバ２は、端末装置１から更新情報取得要求を受信すると、他の端末装置１によりファイル操作されたファイルが属する上位フォルダのパスを特定し、上位フォルダのパスを端末装置１へ送信する。ＡＰＩサーバ２の処理については後述する。そして、属性処理部１２２は、ＡＰＩサーバ２から受信した上位フォルダのパスを通信部１１から入力すると（ステップＳ１６１０）、上位フォルダのパスを含むＦＩ取得要求を通信部１１に出力する。このＦＩ取得要求は、ＡＰＩサーバ２を介してストレージサーバ３へ送信される（ステップＳ１６１１）。このＦＩ取得要求に対する応答であるＦＩは、ステップＳ１６０１及びステップＳ１６０２にて処理される。一方、通信部１１は、ステップＳ１６０８において、更新有りの情報を受信していないと判定した場合（ステップＳ１６０８：Ｎ）、ステップＳ１６１２へ移行する。
【００９５】
ステップＳ１６１２〜ステップＳ１６１４は、ファイル衝突時の処理を示す。例えば、端末装置１は、ユーザによるファイル更新の操作に伴って、ファイル操作通知を、ＡＰＩサーバ２を介してストレージサーバ３へ送信し、ストレージサーバ３は、ファイル操作通知を受信し、ファイル衝突有りを判定した場合を想定する。この場合、ストレージサーバ３は、ユーザ選択指令を、ＡＰＩサーバ２を介して端末装置１（ファイル操作通知を送信してきた端末装置１）へ送信する。ファイル衝突は、ストレージサーバ３で生成されたＦＩが端末装置１に反映されないまま、その端末装置１でファイル操作が行われたときに生じる。例えば、第１の端末装置１及び第２の端末装置１が、同一のファイルをダウンロードした後、第１の端末装置１がオンラインからオフラインへ変更され、第２の端末装置１が、ファイル更新の処理を行い、ストレージサーバ３が、このファイル更新に伴ってＦＩ及びファイルを更新し、第１の端末装置１がオフラインからオンラインへ変更され、ファイル更新の処理を行った場合に、ストレージサーバ３においてファイル衝突が生じる。すなわち、第２の端末装置１によるファイル更新の処理が行われ、その後に第１の端末装置１によるファイル更新の処理が行われた場合に、ファイル衝突が生じる場合がある。ファイル衝突の詳細については後述する。
【００９６】
端末装置１の通信部１１は、ストレージサーバ３からＡＰＩサーバ２を介して、ユーザ選択指令を受信したか否かを判定する（ステップＳ１６１２）。通信部１１は、ステップＳ１６１２において、ユーザ選択指令を受信したと判定した場合（ステップＳ１６１２：Ｙ）、ユーザ選択指令をファイル処理部１２のファイル操作部１２１に出力する。ファイル操作部１２１は、通信部１１からユーザ選択指令を入力すると、ユーザに、「新規ファイル保存」「強制上書き」「破棄して最新取得」「キャンセル」のうちのいずれかのユーザ選択種別を選択させる。そして、ファイル操作部１２１は、ユーザにより選択されたユーザ選択種別を通信部１１に出力する。このユーザ選択種別は、ＡＰＩサーバ２を介してストレージサーバ３へ送信される（ステップＳ１６１３）。そして、ファイル操作部１２１は、ユーザ選択種別に応じた処理を行う（ステップＳ１６１４）。
【００９７】
ここで、ユーザにより「新規ファイル保存」が選択された場合、更新ファイルは、新規ファイルとしてストレージサーバ３に格納される。また、ユーザにより「強制上書き」が選択された場合、更新ファイルは、ストレージサーバ３において上書きされる。したがって、前述の例の場合、第２の端末装置１により更新されストレージサーバ３に格納されたファイルは削除され、第１の端末装置１により更新されたファイルがストレージサーバ３に格納される。また、ユーザにより「破棄して最新取得」が選択された場合、ファイル操作部１２１は、記憶部１３に格納されているファイル、及び属性処理部１２２により生成された属性群を削除する。そして、ファイル操作部１２１は、削除したＦＩの代わりに、ストレージサーバ３から送信された新たなＦＩ（前述の例では、第２の端末装置１によるファイル更新に伴って生成されたＦＩ）を入力し、記憶部１３に格納する。また、ユーザにより「キャンセル」が選択された場合、記憶部１３に記憶されたＦＩ及び更新ファイル、属性処理部１２２により生成された属性群は、そのままの状態で保持される。
【００９８】
端末装置１は、ステップＳ１６０３、ステップＳ１６０７、ステップＳ１６１１、ステップＳ１６１４から移行すると、またはステップＳ１６１２においてユーザ選択指令を受信していないと判定した場合（ステップＳ１６１２：Ｎ）、処理を終了してステップＳ１６０１の処理を再度行う。
【００９９】
（ＦＩ処理部／端末装置）
次に、図１５に示した端末装置１における属性処理部１２２の処理（ファイル操作通知生成処理）について詳細に説明する。図１７は、属性処理部１２２のファイル操作通知生成処理を示すフローチャートであり、図１６に示したステップＳ１６０４〜ステップＳ１６０７の処理に相当する。また、図１８は、ファイル操作により付与される属性の一覧を示す図である。図１８において、ファイル操作により付与される属性には下線を付し、ヌルが設定される属性は−で表してある。端末装置１の記憶部１３には、ファイル操作の対象となるファイルのＦＩ（ユニークＩＤａ，ファイルサイズｂ，ハッシュ値ｃ，Ｅタグｄ，ファイル名ｅ，ファイルパスｆ，更新日時ｇ）が格納されているものとする（図１８において元のＦＩの属性を参照）。
【０１００】
属性処理部１２２は、ファイル操作部１２１により行われたファイル操作の処理の種別を判別する（ステップＳ１７０１）。属性処理部１２２は、ファイル操作が「新規ファイル作成」であると判別した場合、ファイルサイズｂ１、ハッシュ値ｃ１、ファイル名ｅ１及びファイルパスｆ１を付与し（ステップＳ１７０２）、ユニークＩＤ、Ｅタグ及び更新日時にヌルを設定し、属性群（−，ｂ１，ｃ１，−，ｅ１，ｆ１，−）を生成する（ステップＳ１７０３、図１８において「新規ファイル作成」の属性を参照）。そして、属性処理部１２２は、この属性群を含むファイル操作通知（属性群、ファイルデータ、端末ＩＤ等）を生成し、通信部１１に出力する。このファイル操作通知は、ＡＰＩサーバ２を介してストレージサーバ３へ送信される（ステップＳ１７０４）。
【０１０１】
属性処理部１２２は、ファイル操作が「ファイル更新」であると判別した場合、ファイルサイズｂ１及びハッシュ値ｃ１を付与し（ステップＳ１７０５）、付与した属性及び保持しているＦＩの属性に基づいて、属性群（ａ，ｂ１，ｃ１，ｄ，ｅ，ｆ，ｇ）を生成する（ステップＳ１７０６、図１８において「ファイル更新」の属性を参照）。そして、属性処理部１２２は、この属性群を含むファイル操作通知（属性群、ファイルデータ、端末ＩＤ等）を生成し、通信部１１に出力する。このファイル操作通知は、ＡＰＩサーバ２を介してストレージサーバ３へ送信される（ステップＳ１７０７）。
【０１０２】
属性処理部１２２は、ファイル操作が「ファイル削除」であると判別した場合、記憶部１３に格納されているＦＩと同一の属性を用いて、属性群を生成する（ステップＳ１７０８、図１８において「ファイル削除」の属性を参照）。そして、属性処理部１２２は、この属性群を含むファイル操作通知（属性群、端末ＩＤ等）を生成し、通信部１１に出力する。このファイル操作通知は、ＡＰＩサーバ２を介してストレージサーバ３へ送信される（ステップＳ１７０９）。
【０１０３】
属性処理部１２２は、ファイル操作が「ファイル名変更」であると判別した場合、ファイル名ｅ１を付与し（ステップＳ１７１０）、付与した属性及び保持しているＦＩの属性に基づいて、属性群（ａ，ｂ，ｃ，ｄ，ｅ１，ｆ，ｇ）を生成する（ステップＳ１７１１、図１８において「ファイル名変更」の属性を参照）。そして、属性処理部１２２は、この属性群を含むファイル操作通知（属性群、端末ＩＤ等）を生成し、通信部１１に出力する。このファイル操作通知は、ＡＰＩサーバ２を介してストレージサーバ３へ送信される（ステップＳ１７１２）。
【０１０４】
属性処理部１２２は、ファイル操作が「ファイル移動」であると判別した場合、移動先のファイルパスｆ１を付与し（ステップＳ１７１３）、付与した属性及び保持しているＦＩの属性に基づいて、属性群（ａ，ｂ，ｃ，ｄ，ｅ，ｆ１，ｇ）を生成する（ステップＳ１７１４、図１８において「ファイル移動」の属性を参照）。そして、属性処理部１２２は、この属性群を含むファイル操作通知（属性群、端末ＩＤ等）を生成し、通信部１１に出力する。このファイル操作通知は、ＡＰＩサーバ２を介してストレージサーバ３へ送信される（ステップＳ１７１５）。
【０１０５】
属性処理部１２２は、ファイル操作が「ファイルコピー」であると判別した場合、コピー先のファイルパスｆ１を付与し（ステップＳ１７１６）、ユニークＩＤにヌルを設定し、付与した属性、ヌルのユニークＩＤ及び保持しているＦＩの属性に基づいて、属性群（−，ｂ，ｃ，−，ｅ，ｆ１，−）を生成する（ステップＳ１７１７、図１８において「ファイルコピー」の属性を参照）。そして、属性処理部１２２は、この属性群を含むファイル操作通知（属性群、端末ＩＤ等）を生成し、通信部１１に出力する。このファイル操作通知は、ＡＰＩサーバ２を介してストレージサーバ３へ送信される（ステップＳ１７１８）。
【０１０６】
〔同期状態表示〕（アイコン表示部／端末装置）
次に、図１５に示した端末装置１におけるアイコン表示部１２３が、ファイル同期の状態表示を行う場合の処理について詳細に説明する。図１９は、アイコン表示部１２３による処理（状態表示処理）を示すフローチャートであり、図１６に示したステップＳ１６０２、ステップＳ１６０３及びステップＳ１６０７におけるアイコン表示処理に相当する。また、図２０は、アイコンの表示例を示す図である。図２０において、（１）〜（５）は、ファイル同期における個々のファイルの状態を示すマークであり、各マークは、フォルダのアイコンまたはファイルのアイコンの表示範囲内で、互いに重ならないように、所定位置に配置されている。例えば、マークは、画素毎の画素値及び配置座標から構成される。また、図２０（６）の上段に示すように、アイコン表示部１２３は、フォルダのアイコンの画像と、（１）〜（５）のマークが所定位置に配置された画像とを合成し、マークを付加したアイコンとして画面表示する。マークが所定位置に配置された画像は、マーク以外の箇所が透過し、フォルダのアイコンの画像と合成される。また、図２０（６）の中断に示すように、アイコン表示部１２３は、フォルダのアイコンに、そのフォルダに属するファイルの状態を示す全てのマークを付加して表示する。また、図２０（６）の下段に示すように、アイコン表示部１２３は、フォルダに属する下位層のフォルダのアイコン毎に、そのフォルダに属するファイルの状態を示すマークを付加して表示する。アイコン表示部１２３は、このマークを上位のフォルダに伝搬させ表示する。つまり、アイコン表示部１２３は、ファイルが属するフォルダ、及びそのフォルダが属する上位のフォルダのアイコン（ファイルを基準にした場合、その上位階層のフォルダについての個々のアイコン）を表示する際に、そのファイルの状態を示すマークを、これらのアイコンに付加して表示する。
【０１０７】
アイコン表示部１２３は、ファイルのアップロードが開始されたか否かを判定し（ステップＳ１９０１）、アップロードが開始されたと判定した場合（ステップＳ１９０１：Ｙ）、アップロード中の状態を示す上矢印のマーク（図２０（１）を参照）を、共有フォルダのアイコン等に付加して表示する（ステップＳ１９０２）。これにより、ユーザは、共有フォルダ等に上矢印のマークが付加されている場合、その共有フォルダ内のいずれかのファイルがアップロード中であることを認識することができる。一方、アイコン表示部１２３は、ステップＳ１９０１において、アップロードが開始されていないと判定した場合（ステップＳ１９０１：Ｎ）、ステップＳ１９０７へ移行する。尚、通信部１１は、ファイルを、ＡＰＩサーバ２を介してストレージサーバ３へアップロードしている状態を監視しており、アイコン表示部１２３は、通信部１１から、ファイルのアップロード状態（開始、失敗及び完了）の情報を入力する。
【０１０８】
アイコン表示部１２３は、ファイルのアップロードが失敗したか否かを判定し（ステップＳ１９０３）、アップロードに失敗したと判定した場合（ステップＳ１９０３：Ｙ）、アップロードに失敗した状態を示す上矢印及び雨のマーク（図２０（２）を参照）を、共有フォルダのアイコン等に付加して表示する（ステップＳ１９０４）。これにより、ユーザは、共有フォルダ等に上矢印及び雨のマークが付加されている場合、その共有フォルダ内のいずれかのファイルがアップロードに失敗したことを認識することができる。一方、アイコン表示部１２３は、ステップＳ１９０３において、アップロードに失敗していないと判定した場合（ステップＳ１９０３：Ｎ）、ステップＳ１９０５へ移行する。
【０１０９】
アイコン表示部１２３は、ファイルのアップロードが完了したか否かを判定し（ステップＳ１９０５）、アップロードが完了したと判定した場合（ステップＳ１９０５：Ｙ）、上矢印のマーク並びに上矢印及び雨のマークを、共有フォルダのアイコン等の表示から削除する（ステップＳ１９０６）。これにより、ユーザは、共有フォルダ内のいずれかのファイルのアップロードが完了したことを認識することができる。一方、アイコン表示部１２３は、ステップＳ１９０５において、アップロードが完了していないと判定した場合（ステップＳ１９０５：Ｎ）、ステップＳ１９０３へ移行する。
【０１１０】
アイコン表示部１２３は、ステップＳ１９０１から移行して、ファイルのダウンロードが開始されたか否かを判定し（ステップＳ１９０７）、ダウンロードが開始されたと判定した場合（ステップＳ１９０７：Ｙ）、ダウンロード中の状態を示す下矢印のマーク（図２０（３）を参照）を、共有フォルダのアイコン等に付加して表示する（ステップＳ１９０８）。これにより、ユーザは、共有フォルダ等に下矢印のマークが付加されている場合、その共有フォルダにファイルがダウンロード中であることを認識することができる。一方、アイコン表示部１２３は、ステップＳ１９０７において、ダウンロードが開始されていないと判定した場合（ステップＳ１９０７：Ｎ）、ステップＳ１９１１へ移行する。尚、通信部１１は、ファイルを、ストレージサーバ３からＡＰＩサーバ２を介してダウンロードしている状態を監視しており、アイコン表示部１２３は、通信部１１から、ファイルのダウンロード状態（開始及び完了）の情報を入力する。
【０１１１】
アイコン表示部１２３は、ファイルのダウンロードが完了したか否かを判定し（ステップＳ１９０９）、ダウンロードが完了したと判定した場合（ステップＳ１９０９：Ｙ）、下矢印のマーク等を、共有フォルダのアイコン等の表示から削除する（ステップＳ１９１０）。これにより、ユーザは、共有フォルダ内のいずれかのファイルのダウンロードが完了したことを認識することができる。一方、アイコン表示部１２３は、ステップＳ１９０９において、ダウンロードが完了していないと判定した場合（ステップＳ１９０９：Ｎ）、完了するまで待つ。
【０１１２】
アイコン表示部１２３は、ステップＳ１９０７から移行して、通信部１１がＦＩを受信したか否かを判定し（ステップＳ１９１１）、ＦＩを受信したと判定した場合（ステップＳ１９１１：Ｙ）、受信したＦＩと保持中の属性群（ファイル操作により生成された属性群）とを比較し、ファイル操作の種別を判定する（ステップＳ１９１２）。具体的には、アイコン表示部１２３は、受信したＦＩが、新たなユニークＩＤを含むＦＩである場合、他の端末装置１において「新規ファイル作成」または「ファイルコピー」のファイル操作が行われたと判断し、ファイル操作の種別を「新規ファイル作成」または「ファイルコピー」と判定する。また、アイコン表示部１２３は、受信したＦＩに含まれるユニークＩＤと同じ属性を有する保持中の属性群を特定し、ファイルサイズ及びハッシュ値が異なる場合、ファイル操作の種別を「ファイル更新」と判定し、ファイル名が異なる場合、ファイル操作の種別を「ファイル名変更」と判定し、ファイルパスが異なる場合、ファイル操作の種別を「ファイル移動」と判定する。
【０１１３】
アイコン表示部１２３は、ステップＳ１９１２において、ファイル操作の種別を「新規ファイル作成」または「ファイルコピー」と判定した場合、「新規ファイル作成」または「ファイルコピー」のファイル操作が他の端末装置１において行われ、新たなファイルをダウンロードしていない状態を示す雲のマーク（図２０（４）を参照）を、共有フォルダのアイコン等に付加して表示する（ステップＳ１９１３）。これにより、ユーザは、共有フォルダ等に雲のマークが付加されている場合、他の端末装置１によってストレージサーバ３の共有フォルダに新たなファイルが作成され、そのファイルが自らの端末装置１にダウンロードされていないことを認識することができる。
【０１１４】
また、アイコン表示部１２３は、ステップＳ１９１２において、ファイル操作の種別を「ファイル更新」「ファイル名変更」または「ファイル移動」と判定した場合、「ファイル更新」「ファイル名変更」または「ファイル移動」のファイル操作が他の端末装置１において行われ、更新したファイル、名称を変更したファイルまたは移動したファイルをダウンロードしていない状態を示す雨のマーク（図２０（５）を参照）を、共有フォルダのアイコン等に付加して表示する（ステップＳ１９１４）。これにより、ユーザは、共有フォルダ等に雨のマークが付加されている場合、他の端末装置１によってストレージサーバ３の共有フォルダ内のファイルが更新、移動され、またはファイル名が変更され、そのファイルが自らの端末装置１にダウンロードされておらず、古いファイルが自らの端末装置１に格納されていることを認識することができる。また、アイコン表示部１２３は、ステップＳ１９１３及びステップＳ１９１４において表示したマークを、そのマークに関連するファイルのダウンロードが完了したときに、ステップＳ１９１０において削除する。
【０１１５】
以上のように、端末装置１におけるファイル処理部１２のアイコン表示部１２３は、ファイルのアップロード、アップロードの失敗及びダウンロードの状態を示すマーク（上矢印のマーク、上矢印及び雨のマーク、下矢印のマーク）、「新規ファイル作成」または「ファイルコピー」が他の端末装置１にて行われ、新たなファイルをダウンロードしていない状態を示すマーク（雲のマーク）、及び、「ファイル更新」「ファイル名変更」または「ファイル移動」が他の端末装置１にて行われ、自らの端末装置１が古いファイルを保持していることを示すマーク（雨のマーク）を、それぞれの状態に応じてフォルダのアイコンに付加して表示するようにした。これにより、ユーザは、フォルダのアイコンに付加して表示されたマークから、自らの端末装置１が新たなファイルを保持していないこと、または、保持しているファイルが古いこと等を認識することができる。したがって、ユーザは、ファイル同期の処理がどのような状態にあるのかを、的確に認識することができる。また、アイコン表示部１２３は、ファイルの状態を示すマークを、そのフォルダの上位のフォルダのアイコンに伝搬表示するようにした。これにより、ユーザは、表示されているフォルダのアイコンから、その下位のフォルダ及びファイルの状態を認識することができる。
【０１１６】
尚、アイコン表示部１２３は、ファイル同期の状態として、アップロード中の状態を示すマーク（図２０（１））、アップロードの失敗の状態を示すマーク（図２０（２））、ダウンロード中の状態を示すマーク（図２０（３））、「新規ファイル作成」等の操作があったことを示すマーク（図２０（４））及び「ファイル更新」等の操作があったことを示すマーク（図２０（５））を、アイコンに付加して表示するようにした。これに対し、アイコン表示部１２３は、これらのファイルの状態を集約表示するようにしてもよい。具体的には、アイコン表示部１２３は、アップロード中の状態を示すマーク（図２０（１））またはダウンロード中の状態を示すマーク（図２０（３））を表示する際に、これらのマークの代わりに、ファイル同期の処理を行っている状態（同期中の状態）を示すマークを、アイコンに付加して表示する。また、アイコン表示部１２３は、アップロードの失敗の状態を示すマーク（図２０（２））、「新規ファイル作成」等の操作があったことを示すマーク（図２０（４））または「ファイル更新」等の操作があったことを示すマーク（図２０（５））を表示する際に、これらのマークの代わりに、ファイル同期の処理が行われていない状態であることを示すマークを、アイコンに付加して表示する。また、アイコン表示部１２３は、ファイルの状態を示すマークをフォルダのアイコンに付加して表示するようにしたが、ファイルに付加して表示するようにしてもよい。
【０１１７】
〔Ｗｅｂブラウザによるアクセス〕（通信部／端末装置）
次に、図１５に示した端末装置１における通信部１１及びファイル処理部１２が、Ｗｅｂブラウザにより、ＨＴＴＰに従ってＡＰＩサーバ２を介してストレージサーバ３へアクセスする場合の処理について詳細に説明する。
【０１１８】
図４０は、ストレージサーバ３に備えたフォルダの階層構造の例を示す図である。図４０に示すように、ストレージサーバ３はフォルダＡ〜Ｇを備えており、その構造は、フォルダＢ，ＣがフォルダＡに属し、フォルダＤ，ＥがフォルダＢに属し、フォルダＦ，ＧがフォルダＣに属する関係になっている。フォルダＡ〜Ｇには、フォルダを一意に特定するためのユニークＩＤ１〜７が付与されている。いま、フォルダＥが共有フォルダであり、ファイル「ｄｄｄ．ｔｘｔ」がフォルダＥに属し、複数のユーザによりアクセス可能であるとする。この場合、フォルダＥのパス（フォルダパス）は、「／Ａ／Ｂ／Ｅ」であり、ファイル「ｄｄｄ．ｔｘｔ」のパス（ファイルパス）は、「／Ａ／Ｂ／Ｅ／ｄｄｄ．ｔｘｔ」である。
【０１１９】
図４１は、フォルダインデックスの構成を示す図である。このフォルダインデックスは、フォルダの属性を示す複数の情報から構成され、具体的には、ユニークＩＤ、フォルダサイズ、ハッシュ値、Ｅタグ、フォルダ名及びフォルダパスの各属性から構成される。１つのフォルダに対応して１つのフォルダインデックスが存在する。ユニークＩＤは、フォルダを一意に特定するための値であり、全てのフォルダ及び全てのファイルについて異なる値が付与される。つまり、図４に示したＦＩのユニークＩＤも含めて異なる値が付与される。フォルダサイズは、当該フォルダに属する全てのファイルの大きさを合計した値であり、ハッシュ値は、ハッシュ関数により得られた関数値である。Ｅタグは、フォルダが更新されたときに新たに付与される値である。フォルダ名は、フォルダの名称であり、フォルダパスは、当該フォルダの所在を示すアドレスである。これらの属性は、図４に示したＦＩの属性（ユニークＩＤ、ファイルサイズ、ハッシュ値、Ｅタグ、ファイル名、ファイルパス）に相当する。尚、フォルダが新たに作成された場合、新たなユニークＩＤ及びＥタグが付与され、フォルダサイズ、フォルダ名等が変更された場合、新たなＥタグが付与される。
【０１２０】
図４２は、図４０に示したフォルダＥのフォルダインデックスを示す図である。図４２に示すように、フォルダＥのフォルダインデックスは、ユニークＩＤ：５、フォルダサイズ：ｂ、ハッシュ値：ｃ、Ｅタグ：ｄ、フォルダ名：Ｅ、及びフォルダパス：／Ａ／Ｂ／Ｅの各属性から構成される。尚、フォルダインデックスは、ストレージサーバ３に格納されている。
【０１２１】
ここで、端末装置１を使用するユーザの操作により、端末装置１が、Ｗｅｂブラウザにより、ストレージサーバ３に備えた共有フォルダＥへアクセスする場合の処理を説明する。
【０１２２】
端末装置１は、図４２に示したフォルダＥのフォルダインデックスをストレージサーバ３から取得しているものとする。端末装置１を使用するユーザが、フォルダＥのＵＲＬとして「ｈｔｔｐ：／／・・・．ｊｐ／５」を指定する。このＵＲＬ「ｈｔｔｐ：／／・・・．ｊｐ／５」は、プロトコルの種類「ｈｔｔｐ」、ストレージサーバ３の名称（ホスト名）「・・・．ｊｐ」、及びフォルダＥのユニークＩＤ「５」からなる。そうすると、端末装置１の通信部１１は、Ｗｅｂブラウザにより、ユーザにより指定されたＵＲＬのうちのユニークＩＤ「５」を含むリクエストを生成し、ＨＴＴＰに従ってＡＰＩサーバ２へ送信する。
【０１２３】
ＡＰＩサーバ２は、端末装置１からＨＴＴＰに従ってリクエストを受信すると、リクエストからユニークＩＤ「５」を取得し、ストレージサーバ３へ送信する。ストレージサーバ３は、ＡＰＩサーバ２からユニークＩＤ「５」を受信すると、そのユニークＩＤ「５」をキーにして全てのフォルダインデックス及びＦＩを検索し、ユニークＩＤ「５」を有するフォルダインデックスを特定し、特定したフォルダインデックスに含まれるパス「／Ａ／Ｂ／Ｅ」（図４２を参照）を読み出す。そして、ストレージサーバ３は、読み出したパスを用いてフォルダＥにアクセスし、フォルダＥに関する情報（例えば、フォルダＥに属する全てのファイルのＦＩ）を取得し、ＡＰＩサーバ２を介して端末装置１へ送信する。
【０１２４】
通信部１１は、Ｗｅｂブラウザにより、ＡＰＩサーバ２からフォルダＥに関する情報を含むレスポンスを、ＨＴＴＰに従って受信し、レスポンスを解析してフォルダＥに関する情報を取得し、ファイル処理部１２に出力する。そして、ファイル処理部１２は、フォルダＥに関する情報を入力し、画面表示等の処理を行う。
【０１２５】
ここで、ユーザによりフォルダＥのユニークＩＤがＵＲＬの一部として指定され、リクエストが送信される際に、Ｗｅｂブラウザにより、ＵＲＬ「ｈｔｔｐ：／／・・・．ｊｐ／５」が画面に表示される。つまり、フォルダＥのユニークＩＤ「５」は画面に表示されるが、ファイルパス「／Ａ／Ｂ／Ｅ」は表示されない。
【０１２６】
尚、前述の処理は、ファイルへアクセスする場合も同様である。端末装置１が、ファイル「ｄｄｄ．ｔｘｔ」のＦＩをストレージサーバ３から取得しているものとする。端末装置１を使用するユーザが、ファイル「ｄｄｄ．ｔｘｔ」のＵＲＬとして「ｈｔｔｐ：／／・・・．ｊｐ／ａ」を指定する。「ａ」は、ファイル「ｄｄｄ．ｔｘｔ」のユニークＩＤとする。そうすると、端末装置１の通信部１１は、Ｗｅｂブラウザにより、ユーザにより指定されたＵＲＬのうちのユニークＩＤ「ａ」を含むリクエストを生成し、ＨＴＴＰに従ってＡＰＩサーバ２へ送信する。ここで、ユーザの指定によって、ＵＲＬ「ｈｔｔｐ：／／・・・．ｊｐ／ａ」が画面に表示される。つまり、ファイル「ｄｄｄ．ｔｘｔ」のユニークＩＤ「ａ」は画面に表示されるが、そのファイルパス「／Ａ／Ｂ／Ｅ／ｄｄｄ．ｔｘｔ」は表示されない。
【０１２７】
以上のように、端末装置１の通信部１１及びファイル処理部１２は、ユーザにより、ファイル「ｄｄｄ．ｔｘｔ」またはフォルダＥのユニークＩＤ（「５」または「ａ」）を含むＵＲＬが指定されると、そのＵＲＬのうちのユニークＩＤを含むリクエストを生成し、ＨＴＴＰに従ってＡＰＩサーバ２へ送信するようにした。これにより、ユーザは、ファイルまたはフォルダのパス（「／Ａ／Ｂ／Ｅ／ｄｄｄ．ｔｘｔ」または「／Ａ／Ｂ／Ｅ」）を含むＵＲＬを指定する必要がなく、ファイルまたはフォルダのパスが画面に表示されることもない。したがって、パス情報を確実に隠蔽することができ、他のユーザにパス情報を知られることがないから、セキュリティを確保することができる。
【０１２８】
〔ＡＰＩサーバ〕
次に、図１及び図２に示したＡＰＩサーバ２について詳細に説明する。図２３は、ＡＰＩサーバ２の構成を示すブロック図である。このＡＰＩサーバ２は、通信部２１及び記憶部２２を備えている。
【０１２９】
通信部２１は、所定のプロトコルを用いて端末装置１、ストレージサーバ３及びイベントサーバ４との間でデータの送受信を行う。通信部２１は、端末装置１からファイル操作通知、及びＦＩ取得要求を受信してストレージサーバ３へ送信する。また、通信部２１は、ストレージサーバ３からＦＩ及び更新通知を受信し、ＦＩを端末装置１へ送信し、更新通知を記憶部２２に格納すると共に、イベントサーバ４へ送信する。
【０１３０】
さらに、通信部２１は、端末装置１から更新情報取得要求（送信元の端末ＩＤを含む）を受信し、更新情報取得要求に含まれる送信元の端末ＩＤ、記憶部２２に格納されている更新通知に含まれる共有情報及び送信元端末ＩＤに基づいて、更新通知に含まれる上位フォルダのパスを特定し、上位フォルダのパスを、更新情報取得要求を送信してきた送信元の端末ＩＤを有する端末装置１へ送信する。
【０１３１】
記憶部２２には更新通知が格納される。更新通知は、通信部２１により格納され、また、読み出される。尚、記憶部２２には、ファイル操作時に、ストレージサーバ３により生成された更新通知が格納され、更新通知により更新有りの情報を受信した全ての端末装置１から送信された更新情報取得要求に対し、上位フォルダのパスが読み出された場合、その上位フォルダのパスを含む更新通知は、通信部２１によって削除される。
【０１３２】
図２４は、記憶部２２に格納された更新通知の構成を示す図である。前述のとおり、更新通知は、イベント種類（更新有り）、共有情報（ファイル操作が行われたファイルの属する共有フォルダへのアクセスが許容されているユーザＩＤ）、ファイル操作が行われたファイルの属する上位フォルダのパス、及び送信元端末ＩＤ（ファイル操作通知を送信してきた端末装置１の端末ＩＤ、すなわち、ファイル操作が行われた端末装置１の端末ＩＤ）により構成される。記憶部２２には、ＡＰＩサーバ２がストレージサーバ３から更新通知を受信する毎に、それぞれの更新通知が格納される。
【０１３３】
次に、図２３に示したＡＰＩサーバ２の処理について説明する。図２５は、ＡＰＩサーバ２の処理を示すフローチャートである。ＡＰＩサーバ２の通信部２１は、ファイル操作が行われた端末装置１からファイル操作通知を受信したか否かを判定し（ステップＳ２５０１）、ファイル操作通知を受信したと判定した場合（ステップＳ２５０１：Ｙ）、ファイル操作通知をストレージサーバ３へ送信する（ステップＳ２５０２）。一方、通信部２１は、ステップＳ２５０１において、ファイル操作通知を受信していないと判定した場合（ステップＳ２５０１：Ｎ）、ステップＳ２５０３へ移行する。
【０１３４】
通信部２１は、ステップＳ２５０１から移行して、ストレージサーバ３からＦＩを受信したか否かを判定し（ステップＳ２５０３）、ＦＩを受信したと判定した場合（ステップＳ２５０３：Ｙ）、受信したＦＩを、ＦＩ取得要求を送信してきた端末装置１、またはファイル操作が行われた端末装置１へ送信する（ステップＳ２５０４）。一方、通信部２１は、ステップＳ２５０３において、ＦＩを受信していないと判定した場合（ステップＳ２５０３：Ｎ）、ステップＳ２５０５へ移行する。
【０１３５】
通信部２１は、ステップＳ２５０３から移行して、ストレージサーバ３から更新通知を受信したか否かを判定し（ステップＳ２５０５）、更新通知を受信したと判定した場合（ステップＳ２５０５：Ｙ）、更新通知を記憶部２２に格納する（ステップＳ２５０６）。また、通信部２１は、受信した更新通知をイベントサーバ４へ送信する（ステップＳ２５０７）。一方、通信部２１は、ステップＳ２５０５において、更新通知を受信していないと判定した場合（ステップＳ２５０５：Ｎ）、ステップＳ２５０８へ移行する。
【０１３６】
通信部２１は、ステップＳ２５０５から移行して、端末装置１から更新情報取得要求を受信したか否かを判定し（ステップＳ２５０８）、更新情報取得要求を受信したと判定した場合（ステップＳ２５０８：Ｙ）、更新情報取得要求に含まれる送信元の端末ＩＤ、記憶部２２に格納されている更新通知に含まれる共有情報（ユーザＩＤ）及び送信元端末ＩＤ（ファイル操作が行われた端末装置１の端末ＩＤ）に基づいて、更新通知に含まれる上位フォルダのパスを特定する（ステップＳ２５０９）。具体的には、通信部２１は、記憶部２２に格納されている更新通知に含まれる共有情報（ユーザＩＤ）から、そのユーザＩＤのユーザが使用している端末装置１の端末ＩＤを、図示しない共有フォルダ情報（ストレージサーバ３に備えた後述する共有フォルダ情報と同じであり、ストレージサーバ３から取得される。この共有ファイル情報は、ストレージサーバ３の共有フォルダへアクセスしているユーザのユーザＩＤ及び端末装置１の端末ＩＤが対になっている情報である。）から特定する。そして、通信部２１は、更新通知毎に、共有情報に対応する複数の端末ＩＤから、更新通知に含まれる送信元端末ＩＤ（ファイル操作が行われた端末装置１の端末ＩＤ）を除外し、残された端末ＩＤと更新情報取得要求に含まれる送信元の端末ＩＤとを比較する。そして、通信部２１は、残された端末ＩＤ（ファイル操作を行っていない端末装置１の端末ＩＤ）に、送信元の端末ＩＤ（更新情報取得要求を送信してきた端末装置１の端末ＩＤ）が含まれる場合、その更新通知を更新情報取得要求に対応するものとして、その更新通知に含まれる上位フォルダのパスを特定する。
【０１３７】
通信部２１は、特定した上位フォルダのパスを、更新情報取得要求に含まれる送信元の端末ＩＤを有する端末装置１へ送信する（ステップＳ２５１０）。
【０１３８】
通信部２１は、ステップＳ２５０８から移行して、端末装置１からＦＩ取得要求を受信したか否かを判定し（ステップＳ２５１１）、ＦＩ取得要求を受信したと判定した場合（ステップＳ２５１１：Ｙ）、ＦＩ取得要求をストレージサーバ３へ送信する（ステップＳ２５１２）。
【０１３９】
ＡＰＩサーバ２は、ステップＳ２５０２、ステップＳ２５０４、ステップＳ２５０７、ステップＳ２５１０、ステップＳ２５１２から移行すると、またはステップＳ２５１１においてＦＩ取得要求を受信していないと判定した場合（ステップＳ２５１１：Ｎ）、処理を終了してステップＳ２５０１の処理を再度行う。
【０１４０】
〔ストレージサーバ〕
次に、図１及び図２に示したストレージサーバ３について詳細に説明する。図２６は、ストレージサーバ３の構成を示すブロック図である。このストレージサーバ３は、通信部３１、同期制御部３２及び記憶部３３を備えている。
【０１４１】
通信部３１は、所定のプロトコルを用いてＡＰＩサーバ２との間でデータの送受信を行う。通信部３１は、端末装置１により送信されたファイル操作通知、ＦＩ取得要求及びユーザ選択種別をＡＰＩサーバ２から受信し、同期制御部３２に出力する。また、通信部３１は、同期制御部３２から更新通知、ＦＩ及びユーザ選択指令を入力し、ＡＰＩサーバ２へ送信する。
【０１４２】
同期制御部３２は、操作種別特定部３２１、ファイル・ＦＩ処理部３２２、ＦＩ送信部３２３及び衝突処理部３２４を備えている。操作種別特定部３２１は、通信部３１からファイル操作通知を入力し、ファイル操作通知に含まれるファイル操作種別データに基づいて、ファイル操作の種別（操作種別）を特定する。
【０１４３】
ファイル・ＦＩ処理部３２２は、操作種別特定部３２１により特定された操作種別毎に、ファイル処理を行い、操作種別に応じてファイルを記憶部３３に格納し、ファイル処理を行ったファイルについての新たなＦＩを生成して記憶部３３に格納する。
【０１４４】
ＦＩ送信部３２３は、ファイル・ＦＩ処理部３２２により生成された新たなＦＩを通信部３１に出力する。また、ＦＩ送信部３２３は、イベント種類（更新有り）、ファイル・ＦＩ処理部３２２によりファイル処理されたファイルが属する上位フォルダのパス、この上位フォルダの共有情報（ユーザＩＤ）、ファイル操作通知を送信してきた端末装置１の端末ＩＤ（送信元端末ＩＤ）を含む更新通知を生成し、通信部３１に出力する。また、ＦＩ送信部３２３は、通信部３１からＦＩ取得要求を入力し、ＦＩ取得要求に含まれる上位フォルダのパスに基づいて、その上位フォルダに属する全てのファイルのＦＩを記憶部３３から読み出し、通信部３１に出力する。
【０１４５】
衝突処理部３２４は、操作種別特定部３２１が通信部３１から入力した端末装置１からのファイル操作通知に含まれる属性群のＥタグ、及び記憶部３３から読み出したＦＩのＥタグに基づいて、ファイル衝突の有無を判定し、ファイル衝突有りを判定した場合、ユーザ選択指令を通信部３１に出力する。また、衝突処理部３２４は、通信部３１からユーザ選択種別を入力し、ユーザ選択種別に応じた処理を行う。
【０１４６】
記憶部３３には、ファイル、ファイルについてのＦＩ、共有フォルダ情報及び領域データファイルが格納されている。これらの情報は、同期制御部３２により格納され、また、読み出される。
【０１４７】
図２７は、記憶部３３に格納された共有フォルダ情報の構成を示す図である。共有フォルダ情報には、共有フォルダへアクセス可能なユーザに関する情報が定義されている。図２７に示すように、共有フォルダ情報は、共有フォルダのパス、及びその共有フォルダへアクセス可能なユーザのユーザＩＤにより構成される。尚、記憶部３３に格納された領域データファイルについては後述する。
【０１４８】
次に、図２６に示したストレージサーバ３の処理について説明する。図２８は、ストレージサーバ３の処理を示すフローチャートである。ストレージサーバ３の通信部３１は、端末装置１により送信されたファイル操作通知を受信すると、ファイル操作通知を同期制御部３２の操作種別特定部３２１に出力し、操作種別特定部３２１は、ファイル操作通知に含まれるファイル操作種別データに基づいて、ファイル操作の種別を示す操作種別を特定する（ステップＳ２８０１）。前述のとおり、操作種別には、新規ファイル作成、ファイル更新、ファイル削除、ファイル名変更、ファイル移動及びファイルコピーがある。
【０１４９】
衝突処理部３２４は、ファイル操作通知に含まれる属性群のＥタグと、記憶部３３から読み出した、ファイル操作通知に含まれる属性群と同一のユニークＩＤを有するＦＩのＥタグとを比較し、ファイル衝突の有無を判定する（ステップＳ２８０２）。衝突処理部３２４は、Ｅタグが異なる場合、ファイル衝突有りを判定し（ステップＳ２８０３：有）、衝突処理を行う（ステップＳ２８０７）。一方、衝突処理部３２４は、Ｅタグが同じ場合、ファイル衝突無しを判定し（ステップＳ２８０３：無）、ステップＳ２８０４へ移行する。
【０１５０】
ファイル・ＦＩ処理部３２２は、ステップＳ２８０３から移行して、ステップＳ２８０１において特定された操作種別に応じたファイル処理（例えば、新たなファイルを記憶部３３に格納する処理、記憶部３３からファイルを削除する処理等）を行う（ステップＳ２８０４）。そして、ファイル・ＦＩ処理部３２２は、ステップＳ２８０４においてファイル処理を行ったファイルについてのＥタグ、更新日時等を付与し、新たなＦＩを生成し、記憶部３３に格納する（ステップＳ２８０５）。そして、ＦＩ送信部３２３は、ステップＳ２８０５において生成された新たなＦＩを端末装置１へ送信するための処理を行う（ステップＳ２８０６）。
【０１５１】
（操作種別特定部／ストレージサーバ）
次に、図２６に示したストレージサーバ３における操作種別特定部３２１の処理について詳細に説明する。図２９は、操作種別特定部３２１の処理を示すフローチャートであり、図２８に示したステップＳ２８０１の処理に相当する。
【０１５２】
操作種別特定部３２１は、端末装置１から送信されたファイル操作通知を通信部３１から入力し（ステップＳ２９０１）、ファイル操作通知からファイル操作種別データを取得する（ステップＳ２９０２）。そして、操作種別特定部３２１は、ファイル操作種別データに基づいて、操作種別を特定する（ステップＳ２９０３〜ステップＳ２９０９）。
【０１５３】
尚、操作種別特定部３２１は、ファイル操作通知に含まれる属性群等に基づいて、操作種別を特定するようにしてもよい。
【０１５４】
図４３は、操作種別特定部３２１の他の処理（ファイル操作通知に含まれる属性群等に基づいて操作種別を特定する処理）を示すフローチャートである。操作種別特定部３２１は、端末装置１から送信されたファイル操作通知を通信部３１から入力し（ステップＳ４３０１）、ファイル操作通知から属性群を取得する（ステップＳ４３０２）。そして、操作種別特定部３２１は、属性群に含まれるユニークＩＤ、Ｅタグ及び更新日時にデータが存在しない（ヌルが設定されている）か否かを判定し（ステップＳ４３０３）、データが存在しないと判定した場合（ステップＳ４３０３：Ｙ）、操作種別を「新規ファイル作成」に特定する（ステップＳ４３０４）。一方、操作種別特定部３２１は、ステップＳ４３０３において、ユニークＩＤ、Ｅタグ及び更新日時のいずれかにデータが存在すると判定した場合（ステップＳ４３０３：Ｎ）、ステップＳ４３０５へ移行する。
【０１５５】
操作種別特定部３２１は、ステップＳ４３０３から移行して、属性群に含まれるユニークＩＤにデータが存在しない（ヌルが設定されている）か否かを判定し（ステップＳ４３０５）、データが存在しないと判定した場合（ステップＳ４３０５：Ｙ）、操作種別を「ファイルコピー」に特定する（ステップＳ４３０６）。一方、操作種別特定部３２１は、ステップＳ４３０５において、ユニークＩＤにデータが存在すると判定した場合（ステップＳ４３０５：Ｎ）、ステップＳ４３０７へ移行する。
【０１５６】
操作種別特定部３２１は、ステップＳ４３０５から移行して、属性群からユニークＩＤａ（属性群にはユニークＩＤａが含まれるものとする。）を取得し、記憶部３３からユニークＩＤａを有するＦＩを読み出す（ステップＳ４３０７）。記憶部３３から読み出したＦＩの属性は、（ユニークＩＤａ，ファイルサイズｂ，ハッシュ値ｃ，Ｅタグｄ，ファイル名ｅ，ファイルパスｆ，更新日時ｇ）とする。つまり、端末装置１は、ストレージサーバ３の記憶部３３に格納されたＦＩのファイルに対し、ユーザによりファイル操作が行われ、属性群を生成したことになる。
【０１５７】
操作種別特定部３２１は、端末装置１からの属性群と記憶部３３から読み出したＦＩとを比較し（ステップＳ４３０８）、操作種別を特定する。操作種別特定部３２１は、属性群に含まれるファイルサイズｂ１とＦＩに含まれるファイルサイズｂとを比較すると共に、属性群に含まれるハッシュ値ｃ１とＦＩに含まれるハッシュ値ｃとを比較し（ステップＳ４３０９）、２つの属性が異なると判定した場合（ステップＳ４３０９：Ｙ）、操作種別を「ファイル更新」に特定する（ステップＳ４３１０）。一方、操作種別特定部３２１は、ステップＳ４３０９において、２つの属性が異なっていない（いずれかの属性または２つの属性が同じである）と判定した場合（ステップＳ４３０９：Ｎ）、ステップＳ４３１１へ移行する。
【０１５８】
操作種別特定部３２１は、属性群に含まれる各属性ａ〜ｇとＦＩに含まれる各属性ａ〜ｇとをそれぞれ比較し（ステップＳ４３１１）、全ての属性が同じであると判定した場合（ステップＳ４３１１：Ｙ）、操作種別を「ファイル削除」に特定する（ステップＳ４３１２）。一方、操作種別特定部３２１は、ステップＳ４３１１において、全ての属性が同じでない（いずれかの属性が異なっている）と判定した場合（ステップＳ４３１１：Ｎ）、ステップＳ４３１３へ移行する。
【０１５９】
操作種別特定部３２１は、属性群に含まれるファイル名ｅ１とＦＩに含まれるファイル名ｅとを比較し（ステップＳ４３１３）、ファイル名の属性が異なると判定した場合（ステップＳ４３１３：Ｙ）、操作種別を「ファイル名変更」に特定する（ステップＳ４３１４）。一方、操作種別特定部３２１は、ステップＳ４３１３において、ファイル名の属性が異ならない（同じである）と判定した場合（ステップＳ４３１３：Ｎ）、ステップＳ４３１５へ移行する。
【０１６０】
操作種別特定部３２１は、属性群に含まれるファイルパスｆ１とＦＩに含まれるファイルパスｆとを比較し（ステップＳ４３１５）、ファイルパスの属性が異なると判定した場合（ステップＳ４３１５：Ｙ）、操作種別を「ファイル移動」に特定する（ステップＳ４３１６）。
【０１６１】
操作種別特定部３２１は、ステップＳ４３０４、ステップＳ４３０６、ステップＳ４３１０、ステップＳ４３１２、ステップＳ４３１４、ステップＳ４３１６から移行すると、または、ステップＳ４３１５においてファイルパスの属性が異ならない（同じである）と判定した場合（ステップＳ４３１５：Ｎ）、処理を終了してステップＳ４３０１の処理を再度行う。
【０１６２】
（ファイル・ＦＩ処理部／ストレージサーバ）
次に、図２６に示したストレージサーバ３におけるファイル・ＦＩ処理部３２２の処理について詳細に説明する。図３０は、ファイル・ＦＩ処理部３２２の処理を示すフローチャートであり、図２８に示したステップＳ２８０４及びステップＳ２８０５の処理に相当する。
【０１６３】
ファイル・ＦＩ処理部３２２は、操作種別特定部３２１により特定された操作種別を判別する（ステップＳ３００１）。前述のとおり、記憶部３３から読み出されたＦＩをＦＩ（ａ，ｂ，ｃ，ｄ，ｅ，ｆ，ｇ）とする。
【０１６４】
操作種別が「新規ファイル作成」の場合、端末装置１からの属性群は、ＦＩ（−，ｂ１，ｃ１，−，ｅ１，ｆ１，−）である。この場合、ファイル・ＦＩ処理部３２２は、ファイル操作が行われた端末装置１から新たに作成されたファイルをアップロードし、その新たなファイルを記憶部３３に格納する（ステップＳ３００２）。そして、ファイル・ＦＩ処理部３２２は、Ｅタグｄ２及び更新日時ｇ２を付与すると共に（ステップＳ３００３）、記憶部３３に格納したファイルを一意に特定するためのユニークＩＤａ２を付与する（ステップＳ３００４）。そして、ファイル・ＦＩ処理部３２２は、付与した属性及び属性群に含まれる属性から、記憶部３３に格納したファイルについての新たなＦＩ（ａ２，ｂ１，ｃ１，ｄ２，ｅ１，ｆ１，ｇ２）を生成し、記憶部３３に格納する（ステップＳ３００５）。
【０１６５】
操作種別が「ファイル更新」の場合、端末装置１からの属性群は、ＦＩ（ａ，ｂ１，ｃ１，ｄ，ｅ，ｆ，ｇ）である。この場合、ファイル・ＦＩ処理部３２２は、ファイル操作が行われた端末装置１から更新されたファイルをアップロードし、元のファイル（属性群と同じユニークＩＤａのファイル）を記憶部３３から削除すると共に、アップロードした更新ファイルを記憶部３３に格納する（ステップＳ３００６）。そして、ファイル・ＦＩ処理部３２２は、Ｅタグｄ２及び更新日時ｇ２を付与し（ステップＳ３００７）、付与した属性及び属性群に含まれる属性から、記憶部３３に格納した更新ファイルについてのＦＩ（ａ，ｂ１，ｃ１，ｄ２，ｅ，ｆ，ｇ２）を生成し、記憶部３３に上書きする（ステップＳ３００８）。すなわち、元のＦＩ（ａ，ｂ，ｃ，ｄ，ｅ，ｆ，ｇ）に、生成したＦＩ（ａ，ｂ１，ｃ１，ｄ２，ｅ，ｆ，ｇ２）を上書きする。
【０１６６】
操作種別が「ファイル削除」の場合、端末装置１からの属性群は、ＦＩ（ａ，ｂ，ｃ，ｄ，ｅ，ｆ，ｇ）である。この場合、ファイル・ＦＩ処理部３２２は、ファイル（属性群と同じユニークＩＤａのファイル）を記憶部３３から削除する（ステップＳ３００９）。そして、ファイル・ＦＩ処理部３２２は、記憶部３３から属性群と同じ属性を有するＦＩを削除する（ステップＳ３０１０）。
【０１６７】
操作種別が「ファイル名変更」の場合、端末装置１からの属性群は、ＦＩ（ａ，ｂ，ｃ，ｄ，ｅ１，ｆ，ｇ）である。この場合、ファイル・ＦＩ処理部３２２は、Ｅタグｄ２及び更新日時ｇ２を付与し（ステップＳ３０１１）、付与した属性及び属性群に含まれる属性から、ＦＩ（ａ，ｂ，ｃ，ｄ２，ｅ１，ｆ，ｇ２）を生成し、記憶部３３に上書きする（ステップＳ３０１２）。すなわち、元のＦＩ（ａ，ｂ，ｃ，ｄ，ｅ，ｆ，ｇ）に、生成したＦＩ（ａ，ｂ，ｃ，ｄ２，ｅ１，ｆ，ｇ２）を上書きする。
【０１６８】
操作種別が「ファイル移動」の場合、端末装置１からの属性群は、ＦＩ（ａ，ｂ，ｃ，ｄ，ｅ，ｆ１，ｇ）である。この場合、ファイル・ＦＩ処理部３２２は、Ｅタグｄ２及び更新日時ｇ２を付与し（ステップＳ３０１３）、付与した属性及び属性群に含まれる属性から、ＦＩ（ａ，ｂ，ｃ，ｄ２，ｅ，ｆ１，ｇ２）を生成し、記憶部３３に上書きする（ステップＳ３０１４）。すなわち、元のＦＩ（ａ，ｂ，ｃ，ｄ，ｅ，ｆ，ｇ）に、生成したＦＩ（ａ，ｂ，ｃ，ｄ２，ｅ，ｆ１，ｇ２）を上書きする。
【０１６９】
操作種別が「ファイルコピー」の場合、端末装置１からの属性群は、ＦＩ（−，ｂ，ｃ，−，ｅ，ｆ１，−）である。この場合、ファイル・ＦＩ処理部３２２は、コピー元のファイルをコピーすることにより、新たなファイルとして記憶部３３に格納する（ステップＳ３０１５）。尚、コピー元のファイルは、ファイル操作通知に含まれる、コピー元ファイルのユニークＩＤ（図示せず）に基づいて特定される。そして、ファイル・ＦＩ処理部３２２は、Ｅタグｄ２及び更新日時ｇ２を付与すると共に（ステップＳ３０１６）、記憶部３３に格納した新たなファイルを一意に特定するためのユニークＩＤａ２を付与する（ステップＳ３０１７）。そして、ファイル・ＦＩ処理部３２２は、付与した属性及び属性群に含まれる属性から、記憶部３３に格納した新たなファイルについての新たなＦＩ（ａ２，ｂ，ｃ，ｄ２，ｅ，ｆ１，ｇ２）を生成し、記憶部３３に格納する（ステップＳ３０１８）。
【０１７０】
（ＦＩ送信部／ストレージサーバ）
次に、図２６に示したストレージサーバ３におけるＦＩ送信部３２３の処理について詳細に説明する。図３１は、ＦＩ送信部３２３の処理を示すフローチャートであり、図２８に示したステップＳ２８０６の処理に相当する。
【０１７１】
ＦＩ送信部３２３は、ファイル・ＦＩ処理部３２２により生成されたＦＩを通信部３１に出力する。このＦＩは、ファイル操作通知を送信してきた端末装置１へ、ＡＰＩサーバ２を介して送信される（ステップＳ３１０１）。これにより、端末装置１は、ストレージサーバ３のファイル・ＦＩ処理部３２２により生成され記憶部３３に格納されたＦＩと同じＦＩを保持することができる。
【０１７２】
ＦＩ送信部３２３は、ファイル操作が行われたファイルが属する上位フォルダのパスを、ファイル・ＦＩ処理部３２２により生成されたＦＩに含まれるファイルパス（ファイル操作が行われたファイルの所在を示すファイルパス）に基づいて特定する（ステップＳ３１０２）。尚、操作種別が「ファイル移動」の場合、ＦＩ送信部３２３は、移動前のファイルが属する上位フォルダのパスも特定する。具体的には、ファイル・ＦＩ処理部３２２は、図３０に示したステップＳ３０１４によるＦＩの上書き前に、ファイル操作通知に含まれる属性群と同じユニークＩＤａを有するＦＩを記憶部３３から読み出し、ＦＩ送信部３２３は、ファイル・ＦＩ処理部３２２により読み出されたＦＩに含まれるファイルパスｆ（移動前のファイルの所在を示すファイルパス）を取得し、このファイルパスｆに基づいて、移動前のファイルが属する上位フォルダのパスを特定する。
【０１７３】
ＦＩ送信部３２３は、記憶部３３から共有フォルダ情報を読み出し、ステップＳ３１０２において特定した上位フォルダのパスに対応するユーザＩＤを特定する（ステップＳ３１０３）。特定したユーザＩＤを共有情報とする。
【０１７４】
ＦＩ送信部３２３は、イベント種類（更新有り）、ステップＳ３１０３において特定した共有情報（ユーザＩＤ）、ステップＳ３１０２において特定した上位フォルダのパス、及び、ファイル操作通知を送信してきた端末装置１の端末ＩＤ（送信元端末ＩＤ）を含む更新通知を生成する（ステップＳ３１０４）。これにより、図３に示したイベント通知シーケンスが行われる。
【０１７５】
ＦＩ送信部３２３は、更新通知をＡＰＩサーバ２へ送信する（ステップＳ３１０５）。そして、ＦＩ送信部３２３は、端末装置１（ＡＰＩサーバ２を介してストレージサーバ３に接続されている端末装置１のうちのファイル操作通知を送信していない端末装置１、すなわち、更新通知に含まれる共有情報（ユーザＩＤ）のユーザが使用している端末装置１のうち、ファイル操作通知を送信していない端末装置１）からＡＰＩサーバ２を介して受信したＦＩ取得要求を、通信部３１から入力する（ステップＳ３１０６）。
【０１７６】
ＦＩ送信部３２３は、ＦＩ取得要求に含まれる上位フォルダのパスに基づいて、記憶部３３に格納されているＦＩのファイルパスを参照し、その上位フォルダに属する全てのファイルのＦＩを記憶部３３から読み出す（ステップＳ３１０７）。そして、ＦＩ送信部３２３は、ＦＩ取得要求の応答として、その上位フォルダに属する全てのファイルのＦＩを、ＡＰＩサーバ２を介して端末装置１（ステップＳ３１０６においてＦＩ取得要求を送信してきた端末装置１）へ送信する（ステップＳ３１０８）。これにより、ＦＩ取得要求を送信してきた端末装置１は、ストレージサーバ３の記憶部３３に格納されたＦＩと同じＦＩを保持することができる。
【０１７７】
〔衝突処理〕（衝突処理部／ストレージサーバ）
次に、図２６に示したストレージサーバ３における衝突処理部３２４の処理について詳細に説明する。図３２は、衝突処理部３２４の処理を示すフローチャートであり、図２８に示したステップＳ２８０２、ステップＳ２８０３及びステップＳ２８０７の処理に相当する。また、衝突処理部３２４の処理に対応して、図１６のステップＳ１６１２〜ステップＳ１６１４に示したように、端末装置１における通信部１１及びファイル処理部１２のファイル操作部１２１による処理が行われる。
【０１７８】
ファイル衝突は、ストレージサーバ３で生成されたＦＩが端末装置１に反映されないまま、その端末装置１でファイル操作が行われたときに生じる。例えば、第１の端末装置１及び第２の端末装置１が、同一のファイルをダウンロードした後、第１の端末装置１がオンラインからオフラインへ変更され、第２の端末装置１が、ファイル更新の処理を行い、ストレージサーバ３が、このファイル更新に伴って、ＦＩ及びファイルを更新し、第１の端末装置１がオフラインからオンラインへ変更され、ファイル更新の処理を行った場合に、ストレージサーバ３においてファイル衝突が生じる。
【０１７９】
図１１、図１２及び図１３は、ファイル衝突時のシーケンスを説明する図である。端末装置１−１，１−２は、ストレージサーバ３から同一ファイルのＦＩを取得し、そのファイルをダウンロードすることにより、同一ファイルのＦＩ及びファイルを保持しているものとする。ここで、ＦＩ（ａ，ｂ，ｃ，ｄ，ｅ，ｆ，ｇ）とする。以下、図１１、図１２及び図１３のシーケンスを用いて、図３２に示す衝突処理部３２４の処理について説明する。
【０１８０】
端末装置１−１がオンラインからオフラインへ変更され、端末装置１−２において、ユーザによるファイル更新の操作が行われたとする。そうすると、端末装置１−２は、属性群（ａ，ｂ１，ｃ１，ｄ，ｅ，ｆ，ｇ）を生成し（図示せず）、この属性群を含むファイル操作通知を、ストレージサーバ３へ送信する。ストレージサーバ３における同期制御部３２の操作種別特定部３２１は、端末装置１−２から受信したファイル操作通知を通信部３１から入力し、図２９に示した処理により、操作種別を「ファイル更新」に特定する。
【０１８１】
衝突処理部３２４は、属性群に含まれるＥタグｄとＦＩに含まれるＥタグｄとを比較し（ステップＳ３２０１）、Ｅタグｄが同じであると判定し（ステップＳ３２０１：Ｙ）、ファイル衝突無しを判定する（ステップＳ３２０２）。そして、端末装置１−２から更新ファイルがアップロードされ、更新ファイルはファイルｘとして記憶部３３に格納される。また、ファイルｘについてのＦＩ（ａ，ｂ１，ｃ１，ｄ２，ｅ，ｆ，ｇ２）が生成され、記憶部３３に格納され、端末装置１−２へ送信される。尚、端末装置１−１はオフラインであるから、更新通知による更新有りのイベントは端末装置１−１へ通知されない。このときには、端末装置１−２及びストレージサーバ３は、同一のＦＩ（ａ，ｂ１，ｃ１，ｄ２，ｅ，ｆ，ｇ２）及びこのＦＩのファイルｘを保持しており、端末装置１−１は、更新前のＦＩ（ａ，ｂ，ｃ，ｄ，ｅ，ｆ，ｇ）及び更新前のファイルを保持していることになる。
【０１８２】
端末装置１−１において、ユーザによるファイル更新の操作が行われ、端末装置１−１がオフラインからオンラインに変更されたとする。更新によってファイルｙが生成され、属性群（ａ，ｂ３，ｃ３，ｄ，ｅ，ｆ，ｇ）が生成されたとする。そうすると、端末装置１−１は、この属性群（ａ，ｂ３，ｃ３，ｄ，ｅ，ｆ，ｇ）を含むファイル操作通知を、ストレージサーバ３へ送信する。ストレージサーバ３における同期制御部３２の操作種別特定部３２１は、端末装置１−１から受信したファイル操作通知を通信部３１から入力し、図２９に示した処理により、操作種別を「ファイル更新」に特定する。
【０１８３】
衝突処理部３２４は、属性群に含まれるＥタグｄとＦＩに含まれるＥタグｄ２とを比較し（ステップＳ３２０１）、Ｅタグが異なると判定し（ステップＳ３２０１：Ｎ）、ファイル衝突有りを判定する（ステップＳ３２０３）。そして、衝突処理部３２４は、端末装置１−２における操作種別及び端末装置１−１における操作種別が共に「ファイル更新」であるか否かを判定する（ステップＳ３２０４）。本例の場合、端末装置１−１，１−２における操作種別が「ファイル更新」であると判定し（ステップＳ３２０４：Ｙ）、すなわち、端末装置１−２によるファイル更新が行われた後、端末装置１−１によるファイル更新が行われ、ファイル衝突有りの状態になっていると判定し、ファイル更新時の衝突回避の処理を行う。衝突処理部３２４は、ユーザ選択指令を通信部３１に出力する。このユーザ選択指令は、ＡＰＩサーバ２を介して、ファイル操作通知を送信してきた端末装置１−１へ送信される（ステップＳ３２０５）。これにより、端末装置１−１は、ユーザ選択指令を受信し、図１６のステップＳ１６１３に示すように、ユーザによる「新規ファイル保存」「強制上書き」「破棄して最新取得」「キャンセル」の選択により、ユーザ選択種別を、ＡＰＩサーバ２を介してストレージサーバ３へ送信する。
【０１８４】
衝突処理部３２４は、端末装置１−１から受信したユーザ選択種別を通信部３１から入力し、ユーザ選択種別を判別する（ステップＳ３２０６、ステップＳ３２０７）。図１２（１）に示すように、衝突処理部３２４は、ユーザ選択種別「新規ファイル保存」を判別した場合、端末装置１−１からファイルｙをアップロードし、新たなファイルとして記憶部３３に格納する（ステップＳ３２０８）。そして、衝突処理部３２４は、Ｅタグｄ４及び更新日時ｇ４を付与し（ステップＳ３２０９）、ファイルｙを特定するためのユニークＩＤａ４を付与すると共にファイル名ｅ４も付与する（ステップＳ３２１０）。そして、衝突処理部３２４は、新たなＦＩ（１）であるＦＩ（ａ４，ｂ３，ｃ３，ｄ４，ｅ４、ｆ，ｇ４）を生成し、記憶部３３に格納する（ステップＳ３２１１）。そして、衝突処理部３２４は、新たなＦＩ（１）及び端末装置１−２により更新されたファイルｘのＦＩを、ファイル操作通知を送信してきた端末装置１−１へ送信する（ステップＳ３２１２）。また、衝突処理部３２４は、図３に示したイベント通知シーケンスにより、ＦＩ（１）及びＦＩを端末装置１−２へ送信する。
【０１８５】
このように、ストレージサーバ３の衝突処理部３２４は、端末装置１−１，１−２のファイル更新により、ファイル衝突有りを判定した場合、先に更新したファイルｘに加えて後に更新したファイルｙも記憶部３３に格納し、ＦＩ及びＦＩ（１）を端末装置１−１，１−２へ送信するようにした。これにより、端末装置１−１，１−２及びストレージサーバ３は、先に更新したファイルｘのＦＩ及び後に更新したファイルｙのＦＩ（１）をそれぞれ保持することができ、ファイル同期を確立することができる。つまり、ファイル同期システム１０は、同一のファイルを更新して生成した異なるファイルｘ，ｙを管理することができ、ユーザは、端末装置１−１にて更新されたファイルｙ及び端末装置１−２にて更新されたファイルｘを見失うことがない。
【０１８６】
図１２（２）に示すように、衝突処理部３２４は、ユーザ選択種別「強制上書き」を判別した場合、端末装置１−１からファイルｙをアップロードし、元のファイルを記憶部３３から削除し、アップロードしたファイルｙを新たなファイルとして記憶部３３に格納する（ステップＳ３２１３）。そして、衝突処理部３２４は、Ｅタグｄ４及び更新日時ｇ４を付与し（ステップＳ３２１４）、ＦＩ（ａ，ｂ３，ｃ３，ｄ４，ｅ，ｆ，ｇ４）を生成し、記憶部３３に上書きする（ステップＳ３２１５）。そして、衝突処理部３２４は、生成したＦＩを、ファイル操作通知を送信してきた端末装置１−１へ送信する（ステップＳ３２１２）。また、衝突処理部３２４は、図３に示したイベント通知シーケンスにより、生成したＦＩを端末装置１−２へ送信する。
【０１８７】
このように、ストレージサーバ３の衝突処理部３２４は、端末装置１−１，１−２のファイル更新により、ファイル衝突有りを判定した場合、先に更新したファイルｘを記憶部３３から削除し、後に更新したファイルｙを記憶部３３に格納し、ファイルｙのＦＩを端末装置１−１，１−２へ送信するようにした。これにより、端末装置１−１，１−２及びストレージサーバ３は、後に更新したファイルｙのＦＩをそれぞれ保持することができ、ファイル同期を確立することができる。つまり、ファイル同期システム１０は、後に更新したファイルｙを管理することができる。
【０１８８】
図１３（３）に示すように、衝突処理部３２４は、ユーザ選択種別「破棄して最新取得」を判別した場合、ファイルｘのＦＩ（ａ，ｂ１，ｃ１，ｄ２，ｅ，ｆ，ｇ２）を、ファイル操作通知を送信してきた端末装置１−１へ送信する（ステップＳ３２１２）。
【０１８９】
このように、ストレージサーバ３の衝突処理部３２４は、端末装置１−１，１−２のファイル更新により、ファイル衝突有りを判定した場合、先に更新したファイルｘのＦＩを端末装置１−１へ送信するようにした。これにより、端末装置１−１，１−２及びストレージサーバ３は、先に更新したファイルｘのＦＩをそれぞれ保持することができ、ファイル同期を確立することができる。つまり、ファイル同期システム１０は、先に更新したファイルｘを管理することができる。
【０１９０】
図１３（４）に示すように、衝突処理部３２４は、ユーザ選択種別「キャンセル」を判別した場合、処理を行うことなく図３２に示した処理を終了する。
【０１９１】
このように、ストレージサーバ３の衝突処理部３２４は、端末装置１−１，１−２のファイル更新により、ファイル衝突有りを判定した場合、処理を行わないようにした。これにより、端末装置１−２及びストレージサーバ３は、先に更新したファイルｘのＦＩをそれぞれ保持することができ、ファイル同期を確立することができる。また、端末装置１−１は、ファイル操作通知を送信した際のファイルｙ及びＦＩ（ａ，ｂ３，ｃ３，ｄ，ｅ，ｆ，ｇ）をそのままの状態で保持する。
【０１９２】
以上のように、ストレージサーバ３における同期制御部３２の衝突処理部３２４によれば、受信したファイル操作通知の属性群に含まれるＥタグと、ストレージサーバ３の記憶部３３にて保持しているＦＩに含まれるＥタグとを比較し、Ｅタグが異なる場合にファイル衝突有りを判定し、先に更新したファイルｘに加えて、後に更新したファイルｙを記憶部３３に格納し、ファイルｘについてのＦＩ及びファイルｙについてのＦＩ（１）を端末装置１へ送信するようにした。これにより、ファイル衝突の調整が確実に行われ、端末装置１及びストレージサーバ３は、同一のＦＩを保持することができるから、ファイル同期を確立することができ、ユーザは、ファイル衝突に伴ってファイルを見失うことがない。つまり、先にファイル操作をした端末装置１−２、及び後にファイル操作をした端末装置１−１において、自らの端末装置１において更新したファイルがストレージサーバ３に格納されると共に、他の端末装置１において更新されたファイルもストレージサーバ３に格納されるから、ファイル衝突が解消され、個々の端末装置１−１，１−２を操作するユーザは、ファイルを見失うことがない。前述のように、端末装置１−２がストレージサーバ３に接続され、端末装置１−１がストレージサーバ３に接続されていない場合において、端末装置１−２におけるファイル更新に伴ってストレージサーバ３にて生成されたＦＩと、後に端末装置１−１がストレージサーバ３に接続された場合の、端末装置１−１におけるファイル更新に伴ってストレージサーバ３へ送信された属性群とが比較され、ファイル衝突有りが判定される。そして、ストレージサーバ３において、２つのＦＩ，ＦＩ（１）及び２つのファイルｘ，ｙが格納される。これにより、ファイル衝突が解消され、個々の端末装置１−１，１−２を操作するユーザは、ファイルを見失うことがない。
【０１９３】
また、衝突処理部３２４は、ステップＳ３２０４において、端末装置１−１，１−２における操作種別が「ファイル更新」でないと判定した場合（ステップＳ３２０４：Ｎ）、他の操作に伴う衝突回避の処理を行う（ステップＳ３２１６）。例えば、図１１に示した端末装置１−１，１−２において、端末装置１−１，１−２における操作が共に「ファイル移動」の場合や、端末装置１−２による先の操作が「ファイル移動」であり端末装置１−１による後の操作が「ファイル更新」の場合や、端末装置１−２による先の操作が「ファイル名変更」であり端末装置１−１による後の操作が「ファイル名変更」の場合や、端末装置１−２による先の操作が「ファイル削除」であり端末装置１−１による後の操作が「ファイル更新」の場合についても、先にファイル操作をした端末装置１−２、及び後にファイル操作をした端末装置１−１において、自らの端末装置１において更新したファイルがストレージサーバ３に格納されると共に、他の端末装置１において更新されたファイルもストレージサーバ３に格納される。尚、このとき、端末装置１−１，１−２における操作種別が「ファイル更新」の場合と同様に、衝突処理部３２４は、ユーザ選択指令を端末装置１−１へ送信し、ユーザによる選択を受け付けるようにしても良い。
【０１９４】
〔ファイルを分割した領域毎のファイル更新〕
次に、ファイルをアップロードする際に、ファイルを所定サイズに分割した領域毎に行うファイル更新の処理について説明する。図１４は、領域毎にファイル更新を行う場合のシーケンスを説明する図である。
【０１９５】
（領域毎のファイル更新／ファイル操作部／端末装置）
まず、図１４を参照して、端末装置１におけるファイル処理部１２の処理について説明する。図２２は、端末装置１のファイル処理部１２による領域毎にファイル更新を行う場合の処理を示すフローチャートである。ストレージサーバ３の記憶部３３には、所定ファイル及びそのファイルのＦＩ（ａ，ｂ，ｃ（１），・・・，ｃ（５），ｄ，ｅ，ｆ，ｇ）が格納されているものとする。ハッシュ値ｃ（１），・・・，ｃ（５）は、所定ファイルを所定サイズに分割した領域における領域データに対応した値である。
【０１９６】
端末装置１−２におけるファイル処理部１２のファイル操作部１２１は、ストレージサーバ３から所定ファイルのＦＩ（ａ，ｂ，ｃ（１），・・・，ｃ（５），ｄ，ｅ，ｆ，ｇ）を取得し、そのファイルをダウンロードし（ステップＳ２２０１）、ファイルを所定サイズに分割した領域の番号（領域番号１，・・・，５）毎のハッシュ値ｃ（１），・・・，ｃ（５）及び領域データを記憶部１３の領域データファイルに格納する（ステップＳ２２０２）。
【０１９７】
図２１は、端末装置１の記憶部１３に格納された領域データファイルの構成を示す図である。図２１に示すように、領域データファイルは、領域番号毎のハッシュ値及び領域データにより構成される。
【０１９８】
ここで、ユーザによりファイル更新の操作が行われ、ファイルのうちの領域番号３の領域データのみが更新されたとする（ステップＳ２２０３：Ｙ）。そうすると、ファイル操作部１２１は、更新された領域番号３の領域データについてハッシュ値ｃ１（３）を付与し、領域番号３に対応してハッシュ値ｃ１（３）及び更新された領域データを記憶部１３の領域データファイルに格納する（ステップＳ２２０４）。
【０１９９】
属性処理部１２２は、ファイルサイズｂ１を付与し（ステップＳ２２０５）、記憶部１３の領域データファイルからハッシュ値ｃ（１），ｃ（２），ｃ１（３），ｃ（４），ｃ（５）を読み出し（ステップＳ２２０６）、属性群（ａ，ｂ１，ｃ（１），ｃ（２），ｃ１（３），ｃ（４），ｃ（５），ｄ，ｅ，ｆ，ｇ）を生成する（ステップＳ２２０７）。
【０２００】
属性処理部１２２は、ステップＳ２２０７において生成した属性群及び端末装置１−２の端末ＩＤ（ＰＣ−Ｂ）を含むファイル操作通知を通信部１１に出力する。このファイル操作通知は、ＡＰＩサーバ２を介してストレージサーバ３へ送信される（ステップＳ２２０８）。これにより、ストレージサーバ３は、ファイル操作通知を受信し、操作種別を「ファイル更新」に特定し、領域データが更新された領域番号３を特定し、領域番号３を含む領域データ送信指令を、ＡＰＩサーバ２を介して端末装置１−２へ送信する。
【０２０１】
ファイル操作部１２１は、ストレージサーバ３からＡＰＩサーバ２を介して受信した領域データ送信指令を通信部１１から入力し（ステップＳ２２０９）、記憶部１３の領域データファイルから、領域データ送信指令に含まれる領域番号３のハッシュ値ｃ１（３）及び領域データを読み出し（ステップＳ２２１０）、領域番号３、ハッシュ値ｃ１（３）及び領域データを含む領域データ応答を生成し、通信部１１に出力する。この領域データ応答は、ＡＰＩサーバ２を介してストレージサーバ３へ送信される（ステップＳ２２１１）。これにより、ストレージサーバ３は、領域データ応答を受信し、領域データを統合して記憶部３３に格納し、通常のファイル更新の処理を行う。詳細については後述する。
【０２０２】
（領域毎のファイル更新／ファイル・ＦＩ処理部／ストレージサーバ）
次に、図１４を参照してストレージサーバ３におけるファイル・ＦＩ処理部３２２の処理について説明する。図３４は、ストレージサーバ３のファイル・ＦＩ処理部３２２による領域毎にファイル更新を行う場合の処理を示すフローチャートである。
【０２０３】
図３３は、ストレージサーバ３の記憶部３３に格納された領域データファイルの構成を示す図である。図３３に示すように、領域データファイルは、ファイルを特定するためのユニークＩＤ毎に構成され、領域番号毎のハッシュ値及び領域データからなる。記憶部３３には、ユニークＩＤａのファイルについて、領域番号毎のハッシュ値ｃ（１），・・・，ｃ（５）及び領域データが格納されているものとする。
【０２０４】
ストレージサーバ３における同期制御部３２の操作種別特定部３２１により、端末装置１−２から受信したファイル操作通知に基づいて操作種別が「ファイル更新」に特定されると（ステップＳ３４０１：Ｙ）、ファイル・ＦＩ処理部３２２は、ファイル操作通知に含まれる属性群のハッシュ値と、ストレージサーバ３の記憶部３３に格納されたユニークＩＤが同じＦＩのハッシュ値とを比較し、異なるハッシュ値ｃ１（３）を選出して領域番号３を特定する（ステップＳ３４０２）。
【０２０５】
ファイル・ＦＩ処理部３２２は、領域番号３を含む領域データ送信指令を生成し、通信部３１に出力する。この領域データ送信指令は、ＡＰＩサーバ２を介して、ファイル操作通知を送信してきた端末装置１−２へ送信される（ステップＳ３４０３）。これにより、端末装置１−２は、前述のとおり、記憶部１３の領域データファイルから、領域データ送信指令に含まれる領域番号３のハッシュ値ｃ１（３）及び領域データを読み出し、領域番号３、ハッシュ値ｃ１（３）及び領域データを含む領域データ応答をストレージサーバ３へ送信する。
【０２０６】
ファイル・ＦＩ処理部３２２は、端末装置１−２から受信した領域データ応答を通信部３１から入力し（ステップＳ３４０４）、記憶部３３の領域データファイルに、領域データ応答に含まれる領域番号３に対応して、領域データファイルに含まれるハッシュ値ｃ１（３）及び領域データを格納する（ステップＳ３４０５）。
【０２０７】
ファイル・ＦＩ処理部３２２は、ファイル操作通知に含まれる属性群のハッシュ値のうち、ストレージサーバ３の記憶部３３に格納されたユニークＩＤが同じＦＩに含まれる同じハッシュ値ｃ（１），ｃ（２），ｃ（４），ｃ（５）について、領域番号１，２，４，５を特定し、記憶部３３の領域データファイルから、領域番号１，２，４，５の領域データを読み出す（ステップＳ３４０６）。
【０２０８】
ファイル・ＦＩ処理部３２２は、受信した領域データ応答に含まれる領域番号３の領域データと、ステップＳ３４０６において読み出した領域番号１，２，４，５の領域データとを統合し（ステップＳ３４０７）、元のファイルを記憶部３３から削除し、統合したファイルを記憶部３３に格納する（ステップＳ３４０８）。このステップＳ３４０８の処理は、図３０に示したステップＳ３００６の処理に相当する。そして、ファイル・ＦＩ処理部３２２は、Ｅタグｄ２等を付与してＦＩを生成する等の処理を行う（ステップＳ３４０９）。このステップＳ３４０９の処理は、図３０に示したステップＳ３００７及びステップＳ３００８の処理に相当する。
【０２０９】
以上のように、端末装置１におけるファイル処理部１２のファイル操作部１２１及び属性処理部１２２、並びにストレージサーバ３における同期制御部３２のファイル・ＦＩ処理部３２２によれば、ファイルを所定サイズに分割した領域毎のハッシュ値及び領域データを含む領域データファイルを格納し、属性群及びＦＩに含まれるハッシュ値を領域毎のハッシュ値として扱うようにした。そして、端末装置１におけるファイル処理部１２のファイル操作部１２１は、ストレージサーバ３から受信した領域データ送信指令に含まれる領域番号に従って、更新された領域データのみをストレージサーバ３へ送信するようにした。これにより、ファイルを構成する全データを送信する必要がないから、送信データ量を低減することができ、送信処理速度の向上を図ることができる。また、通信が中断した後再開した場合、ファイルを構成する全データを送信する必要がなく、更新された領域の領域データのみを送信すれば済むから、処理の効率化を図ることができる。
【０２１０】
また、新規ファイルを端末装置１からストレージサーバ３へアップロードしているときにエラーが発生し、アップロードが完了しなかった場合には、端末装置１は、エラーが解除された後に、アップロードがされていない領域データのみを引き続きストレージサーバ３へアップロードすればよい。これにより、送信データ量の低減及び送信処理速度の向上を図ることができ、アップロードの処理の効率化を図ることができる。
【０２１１】
尚、前述した領域毎のファイル更新処理は、ファイルをアップロードする場合の処理であるが、ファイルをダウンロードする場合にも適用がある。すなわち、端末装置１は、ストレージサーバ３から受信したＦＩに含まれるハッシュ値及び端末装置１に格納されているＦＩに含まれるハッシュ値を比較し、更新された領域番号を特定し、その領域番号を含む領域データ送信指令をストレージサーバ３へ送信する。そして、ストレージサーバ３は、端末装置１から受信した領域データ送信指令に含まれる領域番号に従って、更新された領域データを記憶部３３から読み出し、その領域データを含む領域データ応答を端末装置１へ送信する。
【０２１２】
〔イベントサーバ〕
次に、図１及び図２に示したイベントサーバ４について詳細に説明する。図３５は、イベントサーバ４の構成を示すブロック図である。このイベントサーバ４は、通信部４１及び記憶部４２を備えている。
【０２１３】
通信部４１は、所定のプロトコルを用いてＡＰＩサーバ２とコネクションサーバ５との間でデータの送受信を行う。通信部４１は、コネクションサーバ５が管理している、ファイル同期システム１０のネットワーク６にログインしている接続情報（ユーザＩＤ及び端末ＩＤ）を受信し、記憶部４２に格納する。また、通信部４１は、ＡＰＩサーバ２から更新通知を受信し、記憶部４２から接続情報を読み出し、更新通知に含まれる共有情報（ユーザＩＤ）及び送信元端末ＩＤ（ファイル操作が行われた端末装置１の端末ＩＤ）、並びに接続情報（ユーザＩＤ及び端末ＩＤ）に基づいて、更新有りのイベントを通知する端末装置１の端末ＩＤを特定し、通知先の端末ＩＤを含む更新指令をコネクションサーバ５へ送信する。
【０２１４】
記憶部４２には、接続情報が格納されている。接続情報は通信部４１により格納され、また、読み出される。接続情報は、前述のとおり、コネクションサーバ５により管理される情報であり、端末装置１が、ユーザによりファイル同期システム１０を構成するネットワーク６へログインした場合に、ログインしたユーザ及び接続された端末装置１に関するユーザＩＤ及び端末ＩＤからなる情報である。すなわち、ユーザが使用している端末装置１に関するユーザＩＤ及び端末ＩＤが対になったユーザ固有情報である。
【０２１５】
図３６は、記憶部４２に格納された接続情報の構成を示す図である。前述のとおり、接続情報は、ユーザＩＤ及び端末ＩＤが対になったユーザ固有情報であり、例えば、ユーザＩＤ：Ａ及び端末ＩＤ：ＰＣ−Ａの対情報、ユーザＩＤ：Ｂ及び端末ＩＤ：ＰＣ−Ｂの対情報である。図３６に示した接続情報の例では、ファイル同期システム１０のネットワーク６に、端末ＩＤ：ＰＣ−Ａを有する端末装置１がユーザＩＤ：Ａによりログインして接続されており、端末ＩＤ：ＰＣ−Ｂを有する端末装置１がユーザＩＤ：Ｂによりログインして接続されていることを示している。
【０２１６】
次に、図３５に示したイベントサーバ４の処理について説明する。図３７は、イベントサーバ４の処理を示すフローチャートである。イベントサーバ４の通信部４１は、コネクションサーバ５から接続情報を受信したか否かを判定し（ステップＳ３７０１）、接続情報を受信したと判定した場合（ステップＳ３７０１：Ｙ）、接続情報を記憶部４２に格納する（ステップＳ３７０２）。一方、通信部４１は、ステップＳ３７０１において、接続情報を受信していないと判定した場合（ステップＳ３７０１：Ｎ）、ステップＳ３７０３へ移行する。
【０２１７】
通信部４１は、ステップＳ３７０１から移行して、ＡＰＩサーバ２から更新通知を受信したか否かを判定し（ステップＳ３７０３）、更新通知を受信したと判定した場合（ステップＳ３７０３：Ｙ）、記憶部４２から接続情報を読み出し、更新通知に含まれる共有情報（ユーザＩＤ）及び送信元端末ＩＤ（ファイル操作が行われた端末装置１の端末ＩＤ）、並びに接続情報に基づいて、更新有りのイベントを通知する端末装置１の端末ＩＤを特定する（ステップＳ３７０４）。具体的には、通信部４１は、接続情報（ユーザＩＤ及び端末ＩＤ）に基づいて、共有情報のユーザＩＤに対応する端末ＩＤを特定し、特定した端末ＩＤのうちの送信元端末ＩＤ（ファイル操作が行われた端末装置１の端末ＩＤ）以外の端末ＩＤ（ＡＰＩサーバ２を介してストレージサーバ３に接続されている他の端末装置１）を、更新有りのイベントを通知する端末装置１の端末ＩＤ、すなわち通知先の端末ＩＤとして特定する。
【０２１８】
通信部４１は、通知先の端末ＩＤを含む更新指令をコネクションサーバ５へ出力する（ステップＳ３７０５）。
【０２１９】
イベントサーバ４は、ステップＳ３７０２、ステップＳ３７０５から移行すると、またはステップＳ３７０３において更新通知を受信していないと判定した場合（ステップＳ３７０３：Ｎ）、処理を終了してステップＳ３７０１の処理を再度行う。
【０２２０】
〔コネクションサーバ〕
次に、図１及び図２に示したイベントサーバ５について詳細に説明する。図３８は、コネクションサーバ５の構成を示すブロック図である。このコネクションサーバ５は、通信部５１及び接続管理部５２を備えている。
【０２２１】
通信部５１は、所定のプロトコルを用いて端末装置１とイベントサーバ４との間でデータの送受信を行う。通信部５１は、端末装置１からログイン情報（ユーザＩＤ及び端末ＩＤ）を受信して接続管理部５２に出力し、接続管理部５２から接続情報（ユーザＩＤ及び端末ＩＤ）を入力してイベントサーバ４へ送信する。また、通信部５１は、イベントサーバ４から更新指令を受信し、更新指令に含まれる通知先の端末ＩＤの端末装置１へ更新有りの情報を送信する。
【０２２２】
接続管理部５２は、通信部５１からログイン情報を入力し、接続情報として管理し、接続情報を通信部５１に出力する。
【０２２３】
次に、図３８に示したコネクションサーバ５の処理について説明する。図３９は、コネクションサーバ５の処理を示すフローチャートである。コネクションサーバ５の通信部５１は、端末装置１からログイン情報を受信したか否かを判定し（ステップＳ３９０１）、ログイン情報を受信したと判定した場合（ステップＳ３９０１：Ｙ）、ログイン情報を接続管理部５２に出力する。そして、接続管理部５２は、通信部５１からログイン情報を入力し、接続情報として管理し（ステップＳ３９０２）、接続情報を通信部５１に出力する。通信部５１は、接続管理部５２から接続情報を入力し、イベントサーバ４へ送信する（ステップＳ３９０３）。一方、通信部５１は、ステップＳ３９０１において、ログイン情報を受信していないと判定した場合（ステップＳ３９０１：Ｎ）、ステップＳ３９０４へ移行する。
【０２２４】
通信部５１は、ステップＳ３９０１から移行して、イベントサーバ４から更新指令を受信したか否かを判定し（ステップＳ３９０４）、更新指令を受信したと判定した場合（ステップＳ３９０４：Ｙ）、更新指令に含まれる通知先の端末ＩＤの端末装置１へ、更新有りの情報を送信する（ステップＳ３９０５）。
【０２２５】
コネクションサーバ５は、ステップＳ３９０３、ステップＳ３９０５から移行すると、またはステップＳ３９０４において更新指令を受信していないと判定した場合（ステップＳ３９０４：Ｎ）、処理を終了してステップＳ３９０１の処理を再度行う。
【０２２６】
以上のように、本発明の実施形態によるファイル同期システム１０によれば、端末装置１におけるファイル処理部１２のファイル操作部１２１及び属性処理部１２２、並びにストレージサーバ３における同期制御部３２のファイル・ＦＩ処理部３２２は、ファイルを所定サイズに分割した領域毎のハッシュ値及び領域データを含む領域データファイルを格納し、属性群及びＦＩに含まれるハッシュ値を領域毎のハッシュ値として扱うようにした。そして、端末装置１におけるファイル処理部１２のファイル操作部１２１は、ストレージサーバ３から受信した領域データ送信指令に含まれる領域番号に従って、更新された領域データのみをストレージサーバ３へ送信するようにした。これにより、ファイルを構成する全データを送信する必要がないから、送信データ量を低減することができ、送信処理速度の向上を図ることができる。
【０２２７】
以上、実施形態を挙げて本発明を説明したが、本発明は前記実施形態に限定されるものではなく、その技術思想を逸脱しない範囲で種々変形可能である。例えば、図２に示した例では、端末装置１−１は、ＡＰＩサーバ２から上位フォルダのパスを受信し、上位フォルダのパスを含むＦＩ取得要求を送信するようにした。これに対し、端末装置１−１は、上位フォルダのパスの代わりに、上位フォルダ内の共有ファイルのユニークＩＤを受信し、そのユニークＩＤを含むＦＩ取得要求を送信するようにしてもよい。また、図１及び図２に示したファイル同期システム１０において、イベントサーバ４及びコネクションサーバ５の機能をストレージサーバ３に持たせるようにしてもよい。この場合、ファイル同期システム１０は、端末装置１、受信装置２及びストレージサーバ３により構成される。
【０２２８】
尚、本発明の実施形態によるファイル同期システム１０の端末装置１、ＡＰＩサーバ２、ストレージサーバ３、イベントサーバ４及びコネクションサーバ５のハードウェア構成としては、通常のコンピュータを使用することができる。これらの装置は、ＣＰＵ、ＲＡＭ等の揮発性の記憶媒体、ＲＯＭ等の不揮発性の記憶媒体、及びインターフェース等を備えたコンピュータによって構成される。端末装置１に備えた通信部１１及びファイル処理部１２、ＡＰＩサーバ２に備えた通信部２１、ストレージサーバ３に備えた通信部３１及び同期制御部３２、イベントサーバ４に備えた通信部４１、及びコネクションサーバ５に備えた通信部５１の各機能は、これらの機能を記述したプログラムをＣＰＵに実行させることによりそれぞれ実現される。また、これらのプログラムは、磁気ディスク（フロッピー（登録商標）ディスク、ハードディスク等）、光ディスク（ＣＤ−ＲＯＭ、ＤＶＤ等）、半導体メモリ等の記憶媒体に格納して頒布することもできる。
【符号の説明】
【０２２９】
１  端末装置
２  ＡＰＩサーバ
３  ストレージサーバ
４  イベントサーバ
５  コネクションサーバ
６  ネットワーク
１０  ファイル同期システム
１１，２１，３１，４１，５１  通信部
１２  ファイル処理部
１３，２２，３３，４２  記憶部
３２  同期制御部
５２  接続管理部
１２１  ファイル操作部
１２２  属性処理部
１２３  アイコン表示部
３２１  操作種別特定部
３２２  ファイル・ＦＩ処理部
３２３  ＦＩ送信部
３２４  衝突処理部
【図１】
0005356350.tif 000002
【図２】
0005356350.tif 000003
【図３】
0005356350.tif 000004
【図４】
0005356350.tif 000005
【図５】
0005356350.tif 000006
【図６】
0005356350.tif 000007
【図７】
0005356350.tif 000008
【図８】
0005356350.tif 000009
【図９】
0005356350.tif 000010
【図１０】
0005356350.tif 000011
【図１１】
0005356350.tif 000012
【図１２】
0005356350.tif 000013
【図１３】
0005356350.tif 000014
【図１４】
0005356350.tif 000015
【図１５】
0005356350.tif 000016
【図１６】
0005356350.tif 000017
【図１７】
0005356350.tif 000018
【図１８】
0005356350.tif 000019
【図１９】
0005356350.tif 000020
【図２０】
0005356350.tif 000021
【図２１】
0005356350.tif 000022
【図２２】
0005356350.tif 000023
【図２３】
0005356350.tif 000024
【図２４】
0005356350.tif 000025
【図２５】
0005356350.tif 000026
【図２６】
0005356350.tif 000027
【図２７】
0005356350.tif 000028
【図２８】
0005356350.tif 000029
【図２９】
0005356350.tif 000030
【図３０】
0005356350.tif 000031
【図３１】
0005356350.tif 000032
【図３２】
0005356350.tif 000033
【図３３】
0005356350.tif 000034
【図３４】
0005356350.tif 000035
【図３５】
0005356350.tif 000036
【図３６】
0005356350.tif 000037
【図３７】
0005356350.tif 000038
【図３８】
0005356350.tif 000039
【図３９】
0005356350.tif 000040
【図４０】
0005356350.tif 000041
【図４１】
0005356350.tif 000042
【図４２】
0005356350.tif 000043
【図４３】
0005356350.tif 000044