(57)【特許請求の範囲】
【請求項１】
文書とその文書を一意に特定する正本ＩＤとを対応付けて管理する文書管理サーバであって、
文書へアクセスするために必要な副本ＩＤの取得要求を受信し、受信する前記取得要求ごとに異なる副本ＩＤを生成し、生成した副本ＩＤを前記取得要求の応答として送信する副本ＩＤ提供部と、
前記取得要求に示される正本ＩＤとその正本ＩＤに対して前記副本ＩＤ提供部が生成した副本ＩＤとの派生関係を示す派生関係情報を管理する派生関係情報管理部と、
前記取得要求に示される取得要求元と前記副本ＩＤとを関連づけて管理する履歴情報管理部と、
文書へのアクセス要求を受信し、前記アクセス要求に示される副本ＩＤと前記派生関係情報とを参照して、前記アクセス要求に対応する正本ＩＤを特定し、特定した正本ＩＤに対応する文書を前記アクセス要求に対する応答として送信する文書提供部と、
を備えることを特徴とする文書管理サーバ。
【請求項２】
請求項１に記載の文書管理サーバにおいて、
前記文書提供部は、
前記アクセス要求に示される副本ＩＤとは異なる新たな副本ＩＤを生成し、前記特定した文書とともに前記新たな副本ＩＤを前記アクセス要求に示された副本ＩＤの更新用ＩＤとして送信し、
前記派生関係情報管理部は、
前記アクセス要求に示される副本ＩＤとその副本ＩＤに対して前記文書提供部が生成した前記新たな副本ＩＤとの派生関係を前記派生関係情報に追加することを特徴とする文書管理サーバ。
【請求項３】
請求項１または２に係る文書管理サーバにおいて、
前記履歴情報管理部は、
前記アクセス要求に示されるアクセス要求元と前記アクセス要求に示される副本ＩＤとを関連づけて管理することを特徴とする文書管理サーバ。
【請求項４】
請求項１乃至３のいずれか１つに記載の文書管理サーバにおいて、
前記副本ＩＤ提供部は、
前記取得要求の応答として、前記取得要求に示される正本ＩＤに対応する文書へのアクセス先を示したアクセス先情報を副本ＩＤとともに送信することを特徴とする文書管理サーバ。
【請求項５】
請求項１乃至４のいずれか１つに記載の文書管理サーバにおいて、
前記文書提供部は、
副本ＩＤごとに定めたアクセス条件が示されるアクセス条件情報を参照して、前記アクセス要求に示される副本ＩＤが、前記アクセス条件を満たすか否かを判定して、前記アクセス条件を満たす場合に、前記アクセス要求に対する応答として文書を提供することを特徴とする文書管理サーバ。
【請求項６】
請求項５に記載の文書管理サーバにおいて、
前記アクセス条件情報には、文書へのアクセスを許可するアクセス要求元が副本ＩＤごとに登録されており、
前記文書提供部は、
前記アクセス条件情報を参照して、前記アクセス条件情報に、前記アクセス要求に示される副本ＩＤに関連づけて前記アクセス要求に示されるアクセス要求元が登録されている場合に、前記アクセス要求に対する応答として文書を提供することを特徴とする文書管理サーバ。
【請求項７】
請求項６に記載の文書管理サーバにおいて、
前記文書提供部は、
前記アクセス条件情報に登録された副本ＩＤのうち、すべてのアクセス要求元に対して文書を提供した副本ＩＤについては、その後、その副本ＩＤを示したアクセス要求に対する応答として文書を提供しないことを特徴とする文書管理サーバ。
【請求項８】
請求項５に記載の文書管理サーバにおいて、
前記アクセス条件情報には、文書へのアクセス可能期間が副本ＩＤごとに登録されており、
前記文書提供部は、
前記アクセス条件情報を参照して、前記アクセス要求に示される副本ＩＤに対するアクセス可能期間に前記アクセス要求を受信した場合に、前記アクセス要求に対する応答として文書を提供することを特徴とする文書管理サーバ。
【請求項９】
請求項５に記載の文書管理サーバにおいて、
前記アクセス条件情報には、文書へのアクセス可能回数が副本ＩＤごとに登録されており、
前記文書提供部は、
前記アクセス要求に示される副本ＩＤによる文書へのアクセス回数が前記アクセス可能回数以内の場合に、前記アクセス要求に対する応答として文書を提供することを特徴とする文書管理サーバ。
【請求項１０】
請求項１乃至９のいずれか１つに記載の文書管理サーバにおいて、
文書の登録要求を受信し、前記登録要求に含まれる文書を一意に特定する正本ＩＤと、その正本ＩＤと関連づけた副本ＩＤとを生成し、その文書を正本としてその正本ＩＤと関連づけて記憶装置に登録し、前記登録要求に対する応答として、生成した副本ＩＤを送信する文書登録部を備えることを特徴とする文書管理サーバ。
【請求項１１】
文書を管理するファイルサーバにおいて、
文書の登録指示要求を受信し、前記登録指示要求により指定された登録対象文書を含む登録要求を、請求項１０に記載の文書管理サーバに送信し、前記登録要求の応答として受信した副本ＩＤを前記登録対象文書の代わりに管理する登録指示応答部と、
文書の取得要求を受信し、前記取得要求により指定された文書に対する副本ＩＤを前記取得要求の応答として送信する取得要求応答部と、
を備えることを特徴とするファイルサーバ。
【請求項１２】
文書とその文書を一意に特定する正本ＩＤとを対応付けて管理する文書管理サーバと、前記文書管理サーバとネットワークを介して接続されるクライアントとを含む文書管理システムにおいて、
前記文書管理サーバは、
文書へアクセスするために必要な副本ＩＤの取得要求を前記クライアントから受信し、受信する前記取得要求ごとに異なる副本ＩＤを生成し、生成した副本ＩＤを前記取得要求の応答として前記クライアントに送信する副本ＩＤ提供部と、
前記取得要求に示される正本ＩＤとその正本ＩＤに対して前記副本ＩＤ提供部が生成した副本ＩＤとの派生関係を示す派生関係情報を管理する派生関係情報管理部と、
前記取得要求に示される取得要求元と前記副本ＩＤとを関連づけて管理する履歴情報管理部と、
を備え、
前記クライアントは、
前記取得要求を前記文書管理サーバに送信し、前記取得要求の応答として副本ＩＤを取得する副本ＩＤ取得部と、
取得した副本ＩＤを示した文書へのアクセス要求を前記文書管理サーバに送信し、前記アクセス要求の応答として、前記文書管理サーバから前記副本ＩＤに関連づけられた文書を取得する文書取得部と、
を備え、
前記文書管理サーバは、更に、
前記アクセス要求を前記クライアントから受信し、前記アクセス要求に示される副本ＩＤと前記派生関係情報とを参照して、前記アクセス要求に対応する正本ＩＤを特定し、特定した正本ＩＤに対応する文書を前記アクセス要求に対する応答として前記クライアントに送信する文書提供部を備えることを特徴とする文書管理システム。
【請求項１３】
請求項１２に記載の文書管理システムにおいて、
前記文書提供部は、
前記アクセス要求に示される副本ＩＤとは異なる新たな副本ＩＤを生成し、前記特定した文書とともに前記新たな副本ＩＤを前記アクセス要求に示された副本ＩＤの更新用ＩＤとして前記クライアントに送信し、
前記派生関係情報管理部は、
前記アクセス要求に示される副本ＩＤとその副本ＩＤに対して前記文書提供部が生成した前記新たな副本ＩＤとの派生関係を前記派生関係情報に追加し、
前記クライアントは、
前記アクセス要求に示した副本ＩＤを、前記アクセス要求の応答として受信した更新用の副本ＩＤに変更する副本ＩＤ変更部を備えることを特徴とする文書管理システム。
【請求項１４】
文書とその文書を一意に特定する正本ＩＤとを対応付けて管理する文書管理サーバとして、コンピュータシステムを動作させるためのプログラムであって、前記コンピュータシステムを、
文書へアクセスするために必要な副本ＩＤの取得要求を受信し、受信する前記取得要求ごとに異なる副本ＩＤを生成し、生成した副本ＩＤを前記取得要求の応答として送信する副本ＩＤ提供部、
前記取得要求に示される正本ＩＤとその正本ＩＤに対して前記副本ＩＤ提供部が生成した副本ＩＤとの派生関係を示す派生関係情報を管理する派生関係情報管理部、
前記取得要求に示される取得要求元と前記副本ＩＤとを関連づけて管理する履歴情報管理部、
文書へのアクセス要求を受信し、前記アクセス要求に示される副本ＩＤと前記派生関係情報とを参照して、前記アクセス要求に対応する正本ＩＤを特定し、特定した正本ＩＤに対応する文書を前記アクセス要求に対する応答として送信する文書提供部、
として機能させるためのプログラム。
【請求項１５】
ネットワークを介して文書を取得するクライアントとして、コンピュータシステムを動作させるためのプログラムであって、前記コンピュータシステムを、
取得対象の文書を一意に特定する正本ＩＤを示した取得要求を送信し、前記取得要求の応答として前記正本ＩＤに関連づけられた副本ＩＤを取得する副本ＩＤ取得部、
取得した副本ＩＤを示した文書へのアクセス要求を送信し、前記アクセス要求の応答として、前記副本ＩＤに関連づけられた文書と更新用の副本ＩＤとを取得する文書取得部、
前記アクセス要求に示した副本ＩＤを、前記更新用の副本ＩＤに変更する副本ＩＤ変更部、
として機能させるためのプログラム。
【請求項１６】
分散ハッシュテーブルを用いたＰ２Ｐ型ネットワークに接続され、他のノードと文書を共有するノードにおいて、
文書の登録要求を受けて、登録対象の文書のハッシュ値を含む正本メタ情報を生成し、前記登録対象の文書と前記正本メタ情報とを、保持担当のノードに送信する文書登録部と、
文書を閲覧するために必要な副本ショートカットの発行要求を受けて、その発行要求により指定された閲覧対象の文書に対応する正本メタ情報を取得して、その正本メタ情報のハッシュ値を含む副本メタ情報を生成し、その副本メタ情報のハッシュ値を副本ＩＤとして含む副本ショートカットを発行し、前記発行要求により指定された提供先へ提供する副本ショートカット発行部と、
正本メタ情報と副本メタ情報との派生関係を示す派生関係情報を管理する派生関係情報管理部と、
前記副本ショートカットの提供先ＩＤと前記副本ショートカットに含まれる副本メタ情報のハッシュ値とを関連づけて管理する履歴情報管理部と、
を備えるノード。
【請求項１７】
請求項１６に記載のノードにおいて、
副本ショートカットに含まれる副本ＩＤとしてのハッシュ値のメタ情報を取得し、取得するメタ情報が正本メタ情報になるまで、取得したメタ情報に含まれるハッシュ値のメタ情報の取得を繰り返し、正本メタ情報を取得すると、その正本メタ情報に含まれるハッシュ値の文書を取得し、前記副本ショートカットに含まれるハッシュ値を含む新たな副本メタ情報を生成し、前記副本ショートカットの副本ＩＤを前記新たな副本メタ情報のハッシュ値に書き替える文書取得部と、
を備え、
前記派生関係情報管理部は、副本ショートカットに含まれる副本ＩＤに対応する副本メタ情報と、前記新たな副本メタ情報との派生関係を前記派生関係情報に追加することを特徴とするノード。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電子文書を管理し、ユーザから要求された電子文書を提供する文書管理装置に関する。
【背景技術】
【０００２】
ユーザにデータを提供するための技術として、例えば、特許文献１に示される技術がある。この技術では、提供対象となるファイルへアクセスするために必要な情報が示されたリファレンス情報を含む電子メールを、ユーザが受信し、その電子メールに含まれるリファレンス情報に基づいて、ユーザはファイルサーバから提供対象ファイルを取得する。
【０００３】
特許文献１に示される技術では、ファイルサーバは、どのユーザがリファレンス情報に基づいてファイル要求をしてきたかを管理することができる。また、同一のファイルに対するリファレンス情報を複数のユーザに提供しても、どのユーザにリファレンス情報を提供したのかを管理することはできる。しかし、リファレンス情報は、ファイルへアクセスするために必要な情報であり、提供対象ファイルが同一でその所在位置も同一であれば、そのファイルに対するリファレンス情報はすべて同一である。よって、ユーザが、提供されたリファレンス情報を他のユーザに配付し、他のユーザがそのリファレンス情報に基づいて、ファイル要求してきた場合、そのリファレンス情報が元々どのユーザに対して提供されたリファレンス情報なのかを特定することはできない。
【０００４】
【特許文献１】特開平０６−０７７９９４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
本発明は、たとえ提供対象ファイルが同一であったとしても、ファイル要求する際にユーザが利用したファイルへアクセスするために必要な情報の元々の提供先を特定することが可能なシステムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明は、文書とその文書を一意に特定する正本ＩＤとを対応付けて管理する文書管理サーバであって、文書へアクセスするために必要な副本ＩＤの取得要求を受信し、受信する前記取得要求ごとに異なる副本ＩＤを生成し、生成した副本ＩＤを前記取得要求の応答として送信する副本ＩＤ提供部と、前記取得要求に示される正本ＩＤとその正本ＩＤに対して前記副本ＩＤ提供部が生成した副本ＩＤとの派生関係を示す派生関係情報を管理する派生関係情報管理部と、前記取得要求に示される取得要求元と前記副本ＩＤとを関連づけて管理する履歴情報管理部と、文書へのアクセス要求を受信し、前記アクセス要求に示される副本ＩＤと前記派生関係情報とを参照して、前記アクセス要求に対応する正本ＩＤを特定し、特定した正本ＩＤに対応する文書を前記アクセス要求に対する応答として送信する文書提供部と、を備えることを特徴とする。
【０００７】
本発明によれば、文書へアクセスするために必要な副本ＩＤが、取得要求ごとに異なるＩＤになるように生成されて要求元に提供される。そして、その取得要求元と副本ＩＤとは、関連づけて履歴情報として管理される。よって、その履歴情報を参照することで、文書へアクセスする際に使用された副本ＩＤの要求元を特定することができる。
【０００９】
本発明によれば、正本ＩＤと副本ＩＤとの派生関係が派生関係情報に示されているため、その派生関係情報を参照すれば、副本ＩＤが指定されたアクセス要求に対してその副本ＩＤに関連づけられた正本ＩＤを一意に特定することができ、その正本ＩＤに対応する文書をアクセス要求元に提供することができる。
【００１０】
本発明の１つの態様において、前記文書提供部は、前記アクセス要求に示される副本ＩＤとは異なる新たな副本ＩＤを生成し、前記特定した文書とともに前記新たな副本ＩＤを前記アクセス要求に示された副本ＩＤの更新用ＩＤとして送信し、前記派生関係情報管理部は、前記アクセス要求に示される副本ＩＤとその副本ＩＤに対して前記文書提供部が生成した前記新たな副本ＩＤとの派生関係を前記派生関係情報に追加することを特徴とする。
【００１１】
本発明によれば、前記文書提供部が、前記アクセス要求に示される副本ＩＤとは異なる更新用の副本ＩＤをアクセス要求の応答として送信し、前記派生関係情報管理部は、前記アクセス要求に示される副本ＩＤとその更新用の副本ＩＤとの派生関係を前記派生関係情報に追加する。よって、派生関係情報を参照することで、要求元に提供された副本ＩＤにより、アクセス要求がなされたかどうかを確認することができる。また、アクセス要求元の副本ＩＤをその更新用の副本ＩＤに変更することで、例えば、アクセス要求元が保持する副本ＩＤを第三者に配付した場合でも、その第三者に配付された副本ＩＤが更新されているかどうかを確認することで、アクセス要求元が、提供された副本ＩＤを用いて文書へのアクセス要求をしたかどうかを確認することができる。
【００１２】
本発明の１つの態様において、前記履歴情報管理部は、前記アクセス要求に示されるアクセス要求元と前記アクセス要求に示される副本ＩＤとを関連づけて管理することを特徴とする。
【００１３】
本発明によれば、履歴情報管理部が前記アクセス要求に示されるアクセス要求元と前記アクセス要求に示される副本ＩＤとを関連づけて管理するため、アクセス要求元と副本ＩＤとの関連を示した履歴情報とともに派生関係情報を参照することで、アクセス要求元がどの要求元に提供された副本ＩＤを用いて文書へのアクセスをしてきたのかを特定することができる。
【００１４】
本発明の１つの態様において、前記文書提供部は、副本ＩＤごとに定めたアクセス条件が示されるアクセス条件情報を参照して、前記アクセス要求に示される副本ＩＤが、前記アクセス条件を満たす場合に、前記アクセス要求に対する応答として文書を提供することを特徴とする。
【００１５】
本発明によれば、前記文書提供部が、アクセス条件情報を参照して、前記アクセス要求に示される副本ＩＤが、前記アクセス条件を満たす場合に、前記アクセス要求に対する応答として文書を提供する。よって、前記アクセス要求に示される副本ＩＤに応じて、所望のアクセス条件を定めて、文書へのアクセスを制限することができる。
【発明を実施するための最良の形態】
【００１６】
本発明を実施するための最良の形態（以下、実施形態とする）について、以下、図面を用いて説明する。
【００１７】
図１は、本実施形態に係る文書管理システムの概略構成を示す図である。図１に示すように、本システムは、ＬＡＮ（ローカル・エリア・ネットワーク）やインターネットなどのネットワーク５０に接続された文書管理サーバ１０とクライアント３０とから構成される。本システムでは、文書管理サーバ１０が文書の正本を管理する。クライアント３０は、文書管理サーバ１０が管理する文書を閲覧する場合、閲覧対象の文書を特定する識別情報を文書管理サーバ１０に送信する。文書管理サーバ１０は、その識別情報に基づいて正本を特定し、その正本に含まれる文書を複製し、その複製文書を含むデータを副本としてクライアント３０に提供する。ここで、文書とは、テキストファイル、画像ファイル、音声ファイル、動画ファイルなど、ネットワーク５０上で流通可能なデータ全般を示す。
【００１８】
図２は、文書管理サーバ１０の機能ブロックを示す図である。図２において、文書登録部１２は、文書登録イベントを実行する。より具体的には、文書登録部１２は、クライアント３０から文書登録要求を受け取り、その文書登録要求に含まれる文書とその文書の属性とを組みにして、その組みを正本として文書管理部２２に登録する。文書登録部１２は、正本を登録する際に、正本を一意に特定する正本ＩＤを生成して、正本と正本ＩＤとを関連づけて文書管理部２２に登録する。また、文書登録部１２は、生成した正本ＩＤを派生関係情報記憶部２４が記憶する派生関係情報に登録する。派生関係情報については後述する。
【００１９】
ここで、文書の属性は、例えば、その文書のファイル名、その文書を作成したユーザ名、その文書の作成日時などを示す。
【００２０】
正本ＩＤは、規則性を推測し難い文字列が好ましく、例えば、周知の乱数生成アルゴリズムに基づいて生成された乱数を用いることができる。また、正本ＩＤは、正本固有のデータに対して演算された十分に大きいデータサイズのハッシュ値を用いてもよい。ハッシュ値の演算には、例えば、ＳＨＡ−２５６アルゴリズム等の周知のメッセージダイジェストアルゴリズムを用いる。正本固有のデータとしては、文書の内容や文書の属性が挙げられる。また、文書の内容のハッシュ値および文書の属性のハッシュ値を記述したＸＭＬ文書を正本固有のデータとして用いてもよい。さらに、そのＸＭＬ文書には乱数を追加して記述してよい。
【００２１】
ショートカット提供部１４は、副本ショートカット発行イベントを実行する。より具体的には、ショートカット提供部１４は、副本ショートカット要求をクライアント３０から受け取ると、その副本ショートカット要求に含まれる正本ＩＤに対応する副本ショートカットを発行し、その副本ショートカットをクライアント３０に提供する。副本ショートカットは、クライアント３０が文書を閲覧する際に必要なリファレンス情報などを含むファイルである。具体的には、副本ショートカットは、文書管理サーバ１０のホスト名や文書閲覧の際のリクエストＵＲＬ（Uniform Resource Locator）などを示したアクセス先情報と、閲覧対象の文書の正本ＩＤと関連付けられた副本ＩＤと、副本ショートカットの属性とを含む。なお、副本ショートカットは、文書の実体を含まない。また、副本ショートカットのファイル形式は例えばＰＤＦ（Portable Document Format）である。
【００２２】
クライアント３０は、副本ショートカットに含まれるリファレンス情報を参照して、そこに示されるリクエストＵＲＬに向けて、副本ＩＤを示した文書閲覧要求を送信することで、閲覧対象である文書の複製文書を含む副本を取得することができる。
【００２３】
ここで、副本ＩＤは、すでに生成された正本ＩＤや他の副本ＩＤとは重複しないユニークな値であり、上記と同様に、乱数や副本の属性に対するハッシュ値を用いればよい。なお、副本の属性としては、例えば、副本ショートカット要求に含まれる正本ＩＤや、副本ショートカット要求の受信時刻、副本ショートカット要求元のクライアント３０のユーザＩＤなどが挙げられる。図３は、副本ショートカットに含まれるデータの一例を示す。図３では、副本ショートカットに含まれるデータとして、副本ＩＤ１０２とホスト名１０４と副本ショートカットの作成日時１０６とが示されている。
【００２４】
さらにショートカット提供部１４は、副本ＩＤを生成すると、派生関係情報記憶部２４が記憶する派生関係情報を更新する。派生関係情報は、正本ＩＤと、その正本ＩＤに対応する副本ＩＤとの派生関係を示す情報であり、派生関係情報のデータ構造は、木構造で表される。文書管理サーバ１０は、この派生関係情報を参照することで、副本ＩＤがどの正本ＩＤから派生して生成されたものかを判断することができる。図４Ａは、派生関係情報に示される派生関係の一例を示す図である。図４Ａでは、正本ＩＤ［０］に対して、ショートカット提供部１４が副本ＩＤ［１−１］および副本ＩＤ［１−２］を生成した場合を示す。図４Ａに示した派生関係を有する正本ＩＤ［０］に対して、さらにショートカット提供部１４が新たな副本ＩＤ［１−３］を生成した場合、ショートカット提供部１４は、図４Ｂに示すように、副本ＩＤ［１−３］が正本ＩＤ［０］の子となるように、派生関係情報を更新する。
【００２５】
図２に戻り、文書提供部１６は、文書提供イベントを実行する。より具体的には、文書提供部１６は、クライアント３０からの文書閲覧要求を受け取ると、その文書閲覧要求から副本ＩＤを読み出し、派生関係情報を参照することで、その副本ＩＤの根（root）である正本ＩＤを特定する。続いて、文書提供部１６は、特定した正本ＩＤに関連づけられた正本を文書管理部２２から取り出し、その正本に含まれる文書を複製する。文書提供部１６は、ショートカット提供部１４と同様に新たな副本ＩＤを生成し、文書閲覧要求に示される副本ＩＤの子となるように、その副本ＩＤを派生関係情報に登録する。さらに、文書提供部１６は、複製文書と新たな副本ＩＤとを含む副本をクライアント３０に提供する。クライアント３０は、副本に含まれる新たな副本ＩＤを用いて、クライアント３０上の副本ショートカットに含まれる副本ＩＤを更新する。
【００２６】
なお、文書提供部１６が生成する副本ＩＤも、ショートカット提供部１４が生成する副本ＩＤと同様に、乱数や副本の属性に対するハッシュ値を用いればよい。図５Ａは、文書提供部１６が生成した副本ＩＤが追加された派生関係一例を示す図である。図５Ｂは、文書閲覧要求に示された副本ＩＤ［１−１］に対して、文書提供部１６が新たな副本ＩＤとして副本ＩＤ［２−１］を生成した場合の派生関係を示す図である。
【００２７】
履歴情報管理部１８は、文書登録部１２、ショートカット提供部１４、文書提供部１６が行ったそれぞれのイベントの履歴情報を管理する。つまり、文書登録部１２が文書登録のイベントを行った場合、履歴情報管理部１８は、その文書登録を要求したユーザＩＤ、その時生成した正本ＩＤ、登録日時などを履歴として管理する。また、ショートカット提供部１４が副本ショートカット発行のイベントを行った場合、履歴情報管理部１８は、その副本ショーットカットを要求したユーザＩＤ、その時生成した副本ＩＤ、生成日時などを履歴として管理する。さらに、文書提供部１６が副本提供のイベントを行った場合、履歴情報管理部１８は、その副本を要求したユーザＩＤ（つまり文書閲覧要求をしたユーザＩＤ）、その時生成した更新用の新たな副本ＩＤ、副本提供日時などを履歴として管理する。図６は、履歴情報管理部１８が管理する履歴情報の一例を示す。
【００２８】
以上のように、本システムでは、要求対象文書が同一であったとしても、ショートカット提供部１４が副本ショートカット要求ごとに異なる副本ＩＤを生成し、その副本ＩＤを含む副本ショートカットをクライアント３０に提供する。よって、履歴情報管理部１８が上記のように履歴情報を管理することで、どのユーザに対してどの副本ショートカットを提供したかを管理することができる。
【００２９】
また、副本ショートカットには、文書の実体は含まないため、副本ショートカットを複製して第三者に提供しても、その第三者は、文書管理サーバ１０にアクセスしなければ、文書の閲覧をすることができない。加えて、ユーザが副本ショートカットを複製して、他のユーザに提供した場合、どのユーザに対して提供した副本ショートカットを利用して、他のユーザが文書の閲覧を要求してきたかを把握することもできる。
【００３０】
図７は、クライアント３０の機能ブロックを示す図である。図７において、文書登録要求部３２は、新規の文書を文書管理サーバ１０に登録する際に、その文書を含む文書登録要求を文書管理サーバ１０に送信する。
【００３１】
ショートカット要求部３４は、文書管理サーバ１０に対して要求対象の副本ショートカットを要求し、その副本ショートカットを受け取る。より具体的には、まずショートカット要求部３４は、文書管理サーバ１０上から文書一覧テーブルを取得する。文書一覧テーブルは、図８に示すように、クライアント３０に対して提供可能な文書のファイル名等の属性情報や正本ＩＤが示されたテーブルである。次いで、ショートカット要求部３４は、取得した文書一覧テーブルの中からユーザにより選択された文書の正本ＩＤを含む副本ショートカット要求を文書管理サーバ１０に送信する。その後、ショートカット要求部３４は、副本ショートカット要求の応答として、文書管理サーバ１０から副本ショートカットを受け取り、その副本ショートカットを副本ショートカット記憶部３６に記憶する。
【００３２】
閲覧要求部３８は、文書管理サーバ１０に対して閲覧対象の文書の副本を要求する。より具体的には、閲覧要求部３８は、副本ショートカット記憶部３６の中からユーザにより指定された副本ショートカットを取り出す。閲覧要求部３８は、取り出した副本ショートカットに含まれるリクエストＵＲＬに対して、その副本ショートカットに含まれる副本ＩＤを示した文書閲覧要求を送信する。その後、閲覧要求部３８は、文書閲覧要求の応答として、文書管理サーバ１０から副本を受け取り、その副本に含まれる文書を画面等に表示する。また、閲覧要求部３８は、先ほど取り出した副本ショートカットに含まれる副本ＩＤを、受け取った副本に含まれる更新用の新たな副本ＩＤに書き替える。
【００３３】
続いて、文書登録イベント実行時における文書管理サーバ１０及びクライアント３０の処理手順について、図９を用いて説明する。
【００３４】
まず、クライアント３０が登録対象の文書と文書の内容に対するメタデータ（以下、文書メタデータと呼ぶ）とを含む文書登録要求を文書管理サーバ１０に送信する（Ｓ１００）。ここで、文書管理サーバ１０とクライアント３０とがＨＴＴＰ（HyperText Transfer Protocol）により通信を行う場合、クライアント３０はＨＴＴＰリクエストによって文書登録要求を文書管理サーバ１０に送信する。
【００３５】
文書管理サーバ１０は、受信した文書登録要求に応じて、その要求に含まれる文書に対する正本ＩＤを生成する（Ｓ１０２）。文書管理サーバ１０は、例えば、文書登録要求に含まれる文書メタデータのハッシュ値（以下、文書ハッシュ値と呼ぶ）を演算し、文書ハッシュ値を正本ＩＤとする。なお、クライアント３０側でも文書ハッシュ値を演算しておき、文書登録要求に含めておけば、文書管理サーバ１０は、クライアント３０側で演算した文書ハッシュ値と、自身が演算した文書ハッシュ値とが一致するかどうかを確認することで、受信した文書登録要求に含まれるデータに改ざん等が行われていないかどうかを確認することができる。
【００３６】
正本ＩＤを生成した後、文書管理サーバ１０は、登録対象の文書とその属性とを正本として、その正本をＳ１０２で生成した正本ＩＤと関連づけて文書管理部２２に登録する（Ｓ１０４）。ここで、文書管理サーバ１０は、例えば、文書ハッシュ値をその文書のファイル名として、その文書を正本として文書管理部２２に登録する。正本の登録完了後、文書管理サーバ１０は、派生関係情報および履歴情報を更新する（Ｓ１０６）。つまり、文書管理サーバ１０は、派生関係情報に正本ＩＤを追加登録するとともに、履歴情報に今回のイベントの内容を追加する。その後、文書管理サーバ１０は、クライアント３０に向けて、登録成功通知を送信する（Ｓ１０８）。一方、要求された文書の登録に失敗した場合、文書管理サーバ１０は、クライアント３０に向けて、登録エラー通知を送信する（Ｓ１０８−２）。なお、文書管理サーバ１０とクライアント３０とがＨＴＴＰにより通信を行う場合には、例えば、文書管理サーバ１０は、ＨＴＴＰステータス２００を送信することで登録成功通知を行い、ＨＴＴＰステータス５００を送信することで、登録エラー通知を行う。
【００３７】
以上の処理手順に基づいて、文書管理サーバ１０とクライアント３０とは文書登録イベントを実行する。
【００３８】
続いて、副本ショートカット発行イベント実行時における文書管理サーバ１０及びクライアント３０の処理手順について、図１０を用いて説明する。
【００３９】
まず、クライアント３０が文書管理サーバ１０に文書一覧テーブル要求を送信し（Ｓ２００）、文書管理サーバ１０は、その要求に応じて、クライアント３０に対して提供可能な正本を検索し、検索した正本に含まれる文書の属性に基づいて、図８に示すような文書一覧テーブルを生成する（Ｓ２０２）。その後、文書管理サーバ１０は、その文書一覧テーブルをクライアント３０に提供する（Ｓ２０４）。
【００４０】
クライアント３０は、提供された文書一覧テーブルを画面等に表示して、ユーザから要求対象の文書の選択を待つ。クライアント３０は、ユーザからの文書選択を受け付けると（Ｓ２０６）、選択された文書の正本ＩＤを含む副本ショートカット要求を文書管理サーバ１０に送信する（Ｓ２０８）。
【００４１】
文書管理サーバ１０は、副本ショートカット要求を受け取ると、その要求に含まれる正本ＩＤに応じた副本ＩＤを生成し（Ｓ２１０）、その副本ＩＤや、アクセス先情報、副本ショートカットの属性を含む副本ショートカットを発行する（Ｓ２１２）。文書管理サーバ１０は、さらに、派生関係情報及び履歴情報を更新し（Ｓ２１４）、文書管理サーバ１０は、発行した副本ショートカットをクライアント３０に提供する（Ｓ２１６）。なお、文書管理サーバ１０は、副本ショートカットの発行に失敗した場合、クライアント３０に副本ショートカット発行エラー通知を行う（Ｓ２１６−２）
【００４２】
クライアント３０は、副本ショートカットを受け取ると、その副本ショートカットを副本ショートカット記憶部３６に登録する（Ｓ２１８）。
【００４３】
以上の処理手順に基づいて、文書管理サーバ１０とクライアント３０とは副本ショートカット発行イベントを実行する。
【００４４】
次に、文書提供イベント実行時における文書管理サーバ１０及びクライアント３０の処理手順について、図１１を用いて説明する。
【００４５】
まず、クライアント３０が文書管理サーバ１０に文書閲覧要求を送信する（Ｓ３００）。つまり、クライアント３０は、閲覧対象の副本ショートカットに含まれるアクセス先情報と副本ＩＤを取り出し、そのアクセス先に向けて、その副本ＩＤを含む文書閲覧要求を送信する。
【００４６】
副本ショートカットがＰＤＦ文書である場合には、ユーザが閲覧対象の副本ショートカットを開くと、副本ショートカットを解釈する所定のＰＤＦプラグインが起動し、ＰＤＦプラグインがその副本ショートカットからリクエストＵＲＬと副本ＩＤとを読み出す。ＰＤＦプラグインは、そのリクエストＵＲＬを指定して、その副本ＩＤを記したＨＴＴＰリクエストを文書管理サーバ１０に送信する。
【００４７】
文書管理サーバ１０は、受信した文書閲覧要求に含まれる副本ＩＤを読み出し、その副本ＩＤと派生関係情報とを参照することで、その副本ＩＤの元となる正本ＩＤを特定する（Ｓ３０２）。例えば、文書管理サーバ１０が文書閲覧要求から副本ＩＤ［３−１］を読み出したとする。すると、文書管理サーバ１０は、派生関係情報の中から副本ＩＤ［３−１］を含む派生関係を検索する。その結果、文書管理サーバ１０が例えば、図１２に示す派生関係を検索したとすると、文書管理サーバ１０は、正本ＩＤ［０］が副本ＩＤ［３−１］の根となる正本ＩＤであると特定することができる。
【００４８】
次いで、文書管理サーバ１０は、その正本ＩＤに対応する正本を取り出し、更新用の新たな副本ＩＤを生成する（Ｓ３０４）。さらに、文書管理サーバ１０は、正本に含まれる文書の複製文書と更新用の新たな副本ＩＤとを含む副本を生成する（Ｓ３０６）。また、文書管理サーバ１０は、派生関係情報及び履歴情報の更新を行う（Ｓ３０８）。その後、文書管理サーバ１０は、クライアント３０に副本を提供する（Ｓ３１０）。
【００４９】
クライアント３０は、副本を受け取ると、その副本に含まれる複製文書を画面等に表示し（Ｓ３１２）、さらに文書閲覧要求を行った副本ショートカットの副本ＩＤを副本に含まれる更新用の副本ＩＤに書き替える（Ｓ３１４）。このように、文書閲覧ごとに副本ショートカットの副本ＩＤを書き替えれば、文書管理サーバ１０は、派生関係情報と履歴情報とを参照することで、どのユーザがどの副本をいつ閲覧したのかや何回閲覧したのかを管理することができる。
【００５０】
なお、文書管理サーバ１０とクライアント３０とがＨＴＴＰにより通信を行う場合には、文書管理サーバ１０からＳ３１０において、ＨＴＴＰステータス２００（ＯＫ）が返信され、クライアント３０は、ＨＴＴＰレスポンスのボディとして送信されるＰＤＦ文書を画面等に表示する。また、本システムでは、表示されるＰＤＦ文書は、クライアント３０のメモリ上でのみ処理され、一時的にせよファイルに書き出されることはない。また、表示された文書をクライアント３０は、印刷することはできるが、クライアント３０のファイル上に保存したり、編集することはできない。
【００５１】
続いて、クライアント３０が文書閲覧要求に応じて副本を文書管理サーバ１０から取得できない場合を説明する。
【００５２】
まず、クライアント３０が、文書管理サーバ１０に対して文書閲覧要求を送信したものの、ネットワーク障害等が原因で、文書管理サーバ１０まで文書閲覧要求が到達しなかったとする（Ｓ３００−２）。すると、クライアント３０は、文書閲覧要求を行った副本ショートカットに含まれる表示データを画面等に表示する（Ｓ３１６）。さらに、文書閲覧ができない旨を示すエラーメッセージをダイアログ等を用いて画面上に表示してもよい。なお、表示データは、文書管理サーバ１０が副本ショートカットを発行する際に、副本ＩＤ等とともに生成して、副本ショートカットに含めておけばよい。
【００５３】
次に、クライアント３０が送信した文書閲覧要求は文書管理サーバ１０に到達したものの（Ｓ３００−３）、文書管理サーバ１０がその要求に対する副本の生成に失敗したとする（Ｓ３１８）。ここで、副本の生成に失敗する原因としては、例えば、クライアント３０のユーザ認証の失敗、正本が文書管理サーバ１０上にすでに存在していない場合などが挙げられる。
【００５４】
文書管理サーバ１０は、上記のような何らかの原因により副本の作成に失敗した場合には、クライアント３０に対して副本生成エラーを通知する（Ｓ３２０）。なお、ＨＴＴＰ通信の場合には、文書管理サーバ１０は、ＨＴＴＰステータス３０４（Ｎｏｔ  Ｍｏｄｉｆｉｅｄ）や、ＨＴＴＰステータス４ｘｘもしくはＨＴＴＰステータス５ｘｘを送信する。クライアント３０は、この場合にも、文書閲覧要求を行った副本ショートカットに含まれる表示データを画面等に表示する（Ｓ３２２）。
【００５５】
以上のように、本実施形態によれば、文書管理サーバ１０は、クライアント３０からの副本ショートカット要求ごとに、たとえ要求対象の正本が同一であったとしても、異なる一意な副本ＩＤを生成し、その副本ＩＤを含む副本ショートカットをクライアント３０に提供する。また、文書管理サーバ１０は、副本ＩＤを生成するごとに派生関係情報や履歴情報を更新する。
【００５６】
文書管理サーバ１０は、派生関係情報を参照することで、副本ＩＤに対応する正本ＩＤを特定することができるため、クライアント３０からの文書閲覧要求に示される副本ＩＤに基づいて、閲覧対象の正本を特定して、その正本に含まれる文書の複製をクライアント３０に提供することができる。
【００５７】
また、文書管理サーバ１０は、派生関係情報および履歴情報を参照することで、どのユーザにどの正本に対する副本ショートカットを提供したかを把握することができる。また、ユーザが、提供された副本ショートカットを複製して他のユーザに電子メール等で配付した場合でも、他のユーザがその副本ショートカットを使用して、文書管理サーバ１０に文書閲覧要求をすれば、その要求に含まれる副本ＩＤを元に、その副本ＩＤに対応する副本ショートカットを提供したユーザを特定することができる。つまり、どのユーザが副本ショートカットを複製して、他のユーザに配付したのかを特定することができる。
【００５８】
より具体的に、図１２に示す派生関係及び図１３に示す履歴情報を参照して説明する。
【００５９】
まず、図１２において、第１階層レベル１２２には、正本ＩＤ［０］の子となる副本ＩＤが３つ存在する。これにより、正本ＩＤ［０］から副本ショートカットが３つ生成されたことがわかる。また、図１３により、副本ＩＤ［１−１］の副本ショートカットを提供したのは、ユーザＩＤ［abc02］であることがわかる。
【００６０】
加えて、第２階層レベル１２４には、副本ＩＤ［１−１］の子となる副本ＩＤが２つ存在する。この場合、副本ＩＤ［１−１］の副本ショートカットを用いて１回閲覧すると、副本ＩＤは更新されるのにも拘わらず、副本ＩＤ［１−１］の副本ショートカットを用いて、２回文書閲覧されていることがわかる。つまり、副本ＩＤ［１−１］の副本ショートカットは、少なくとも１回は複製されたことがわかる。
【００６１】
さらに、図１３の履歴情報を参照することで、第２階層の副本ＩＤ［２−１］および副本ＩＤ［２−２］に対応するユーザＩＤが、それぞれユーザＩＤ［abc14］、ユーザＩＤ［abc15］であることがわかる。よって、ユーザＩＤ［abc02］に対して提供した副本ショートカットが複製されて、少なくともユーザＩＤ［abc14］、ユーザＩＤ［abc15］に配付され、正本ＩＤ［０］の複製文書が閲覧されたことがわかる。
【００６２】
加えて、図１２において、第３階層レベル１２６には、副本ＩＤ［２−１］の子となる副本ＩＤ［３−１］が存在することがわかる。これにより、ユーザＩＤ［abc14］によって閲覧されたことにより副本ＩＤが更新された副本ショートカットを利用して、さらに閲覧が行われたことがわかる。この時、履歴情報を参照し、副本ＩＤ［２−１］の副本ショートカットを用いて閲覧したユーザＩＤがユーザＩＤ［abc14］以外であることが判明すれば、ユーザＩＤ［abc14］がさらに副本ショートカットを複製して第３者に配付して、その第三者が配付された副本ショートカットを利用して正本ＩＤ［０］の複製文書を閲覧したことがわかる。
【００６３】
このように、本実施形態によれば、派生関係情報を参照することで、文書管理サーバ１０が正本に対していくつの副本ショートカットを発行したかを把握することができる。また、発行した副本ショートカットを用いて何回文書閲覧されたかを把握することができる。さらに、派生関係情報と併せて履歴情報を参照することで、どのユーザに提供した副本ショートカットを用いて、どのユーザが文書閲覧したかを把握することができる。また、副本ショートカットを用いてユーザが閲覧した場合、その副本ショートカットの副本ＩＤは更新される。よって、ユーザが他のユーザに副本ショートカットを提供した場合、その副本ショートカットの副本ＩＤが更新されているかどうかを確認すれば、そのユーザが他のユーザに副本ショートカットを提供する前にその副本ショートカットを用いて文書閲覧をしたかどうかを把握することができる。
【００６４】
さらに、文書管理サーバ１０が管理する派生関係情報および履歴情報を参照することで、文書管理サーバ１０が管理する正本に対して、以下のようなアクセス制限をすることができる。
【００６５】
すなわち、本システムによれば、作成した副本ショートカットに応じて、その副本ショートカットを利用して文書閲覧できるユーザを制限することができる。例えば、文書管理サーバ１０は、副本ショートカット要求をクライアント３０から受け付けると、その副本ショートカットを利用して閲覧させるユーザＩＤの指定をクライアント３０に対して要求する。文書管理サーバ１０は、クライアント３０から指定された閲覧対象ユーザＩＤを副本ＩＤと関連づけて記憶しておく。そして、文書管理サーバ１０は、クライアント３０から文書閲覧要求を受信すると、そのクライアント３０のユーザＩＤが、文書閲覧要求に示される副本ＩＤと対応付けられた閲覧対象ユーザＩＤと一致するかどうかを判定して、そのクライアント３０に対して副本を提供するかどうか判断する。これにより、たとえ副本ショートカットが不正にコピーされ、第三者に配付されたとしても、事前に登録された閲覧対象ユーザ以外には副本は提供されないため、文書の内容を保護することができる。また、文書管理サーバ１０は、閲覧対象ユーザの閲覧状況を管理して、閲覧対象ユーザがすべてその文書を閲覧した段階で、その文書を読み出し禁止にすることもできる。
【００６６】
また、文書管理サーバ１０が、副本ショートカット要求時などに、副本ショートカットの閲覧期間の指定をクライアント３０から受け付けて、副本ＩＤとともにその閲覧期間を記憶しておけば、その副本ショートカットを利用して文書閲覧できる期間を制限することができる。
【００６７】
さらに、文書管理サーバ１０は、副本ショートカットごとに閲覧できる回数を制限することができる。例えば、文書管理サーバ１０は、副本ショートカット要求をクライアント３０から受け付けると、その副本ショートカットを利用して閲覧できる閾回数をクライアント３０に要求する。文書管理サーバ１０は、クライアント３０から指定された閾回数を副本ＩＤと関連づけて記憶しておく。文書管理サーバ１０は、文書閲覧要求ごとに、その要求に示される副本ＩＤの出現回数をカウントする。そして、カウント数がその副本ＩＤに対して割り当てられた閾回数に達した段階で、文書管理サーバ１０は、その副本ＩＤが示された文書閲覧要求に対してはその後副本提供を許可しない。これにより、文書管理サーバ１０は、副本ショートカットごとに閲覧できる回数を制限することができる。
【００６８】
また、本システムにおいて、文書管理サーバ１０は、各イベント実行時において、その都度、ユーザ認証を行うように構成してもよいし、副本ショートカット発行イベント実行時以外はユーザ認証を行わないように構成してもよい。
【００６９】
さらに、本システムにおいて、クライアント３０が、文書管理サーバ１０から提供された副本の複製文書を印刷する場合、文書の内容と共に、所定の場所（例えば、ヘッダ部分）に、その副本に含まれる副本ＩＤを印刷してもよい。なお、副本ＩＤは、可視状態で印刷してもよいし、隠し文字列として文書の背景に印刷し、その印刷物をコピーした場合に、副本ＩＤが可視状態となるようにしてもよい。
【００７０】
また、上記実施形態では、文書管理サーバ１０は、アクセス先情報を含む副本ショートカットを発行して、クライアント３０に提供する例について説明した。しかし、アクセス先情報を予めクライアント３０に登録しておけば、文書管理サーバ１０は、アクセス先情報を含まない副本ショートカットを発行して、クライアント３０に提供してもよい。例えば、副本ショートカットがＰＤＦ文書の場合には、クライアント３０が保有するＰＤＦプラグインの設定ファイルに予めアクセス先情報を記述しておき、ＰＤＦプラグインが起動した際に、ＰＤＦプラグインがその設定ファイルからアクセス先情報を読み出せばよい。
【００７１】
さらに、上記実施形態では、文書管理サーバ１０側で、各イベント実行時において正本ＩＤや副本ＩＤを生成する例について説明した。しかし、クライアント３０側で各イベント実行時において正本ＩＤや副本ＩＤを生成しても構わない。なお、クライアント３０側で正本ＩＤや副本ＩＤを生成する場合にも、文書管理サーバ１０で生成する場合と同様に乱数やハッシュ演算により生成すればよい。また、クライアント３０で生成する正本ＩＤや副本ＩＤに重複が生じた場合でも、文書管理サーバ１０がクライアント３０に対して再度正本ＩＤや副本ＩＤの生成を要求すれば、正本ＩＤや副本ＩＤの重複登録を防ぐことができる。なお、クライアント３０側で生成した正本ＩＤや副本ＩＤは、文書登録要求や副本ショートカット要求や文書閲覧要求に含めて文書管理サーバ１０に提供する。文書管理サーバ１０は、提供された正本ＩＤや副本ＩＤを用いて、派生関係情報を更新する。
【００７２】
また、上記実施形態では、文書管理サーバ１０は、文書の実体を含まない副本ショートカットをクライアント３０に提供して、クライアント３０が閲覧要求するごとに、複製文書を提供する例について説明した。しかし、文書管理サーバ１０は、クライアント３０から副本ショートカット要求の代わりに、副本要求を受け付けて、その副本要求ごとに、異なる副本ＩＤを生成して、その副本ＩＤと複製文書とを含む副本をクライアント３０に提供してもよい。これにより、クライアント３０は、文書管理サーバ１０と通信できないオフラインの状態でも、複製文書を閲覧することができる。なお、この場合には、クライアント３０側で、副本を閲覧するごとに、副本ＩＤを生成して更新することが望ましい。また、この場合、クライアント３０は、派生関係情報もそれぞれ独自に管理しておき、文書管理サーバ１０と通信できるオンラインの状態になった際に、派生関係情報を文書管理サーバ１０に提供する。文書管理サーバ１０は、クライアント３０に提供された派生関係情報に基づいて、自身が保持する派生関係情報を更新する。これにより、文書管理サーバ１０は、文書の閲覧管理をすることができる。
【００７３】
この実施形態においては、副本ショートカットは、文書の実体を含まないＰＤＦ文書である、とした。しかし、副本ショートカットは、正本実体と異なっていれば、いかなる副次的なデータを含んでいても良い。例えば正本文書の一部である目次や表紙ページを含んでいても、上記に説明した本発明の効果としては、なんら変わりがない効果が得られる。正本文書の一部に限らず、正本を加工して得られるデータを含んでいても良い。そのようなデータには、例えばサムネール画像や、正本の要約文がある。このような副次的データを副本ショートカットに含ませておけば、クライアント３０は、文書管理サーバ１０との通信が失敗した場合に、副次的データを表示するように構成することができる。また副本ショートカットを解釈するプラグインがない場合でも、副次的データを表示することができる。クライアント３０では副次的データを閲覧し次善の動作をとることができる。
【００７４】
続いて、実施形態の第１の変形例について、以下、図面を用いて説明する。
【００７５】
図１４は、第１の変形例に係る文書管理システムにおける概略構成を示す図である。第１の変形例では、ファイルサーバ７０が追加されている点で、上記実施形態とは異なる。第１の変形例に係るシステムでは、ファイルサーバ７０が管理していた文書を、クライアント３０からの指示に基づいて、文書管理サーバ１０がファイルサーバ７０に代わって管理する。ファイルサーバ７０は、文書の代わりに、その文書に対する副本ショートカットを管理する。
【００７６】
図１５は、ファイルサーバ７０の機能ブロックを示す図である。文書記憶部７２は、文書とその文書の属性とを関連づけて記憶する。文書置換部７４は、文書記憶部７２が記憶する文書群の中からクライアント３０が選択した文書を、文書管理サーバ１０に正本として登録する。また、文書置換部７４は、文書管理サーバ１０から登録した正本に対する副本ショートカットを受け取り、副本ショートカット記憶部７６に登録する。副本ショートカット記憶部７６は、文書管理サーバ１０から提供された副本ショートカットを記憶する。
【００７７】
ここで、文書置換部７４における文書置換の処理手順について、図１６に示すフローチャートを用いて説明する。
【００７８】
文書置換部７４は、クライアント３０が選択した文書と文書の属性とを文書記憶部７２から取り出す（Ｓ４００）。具体的には、文書置換部７４は、クライアント３０に図１７に示すような文書選択画面を提供する。つまり、文書置換部７４は、文書記憶部７２に記憶された文書群の中から文書管理サーバ１０へ登録可能な文書の一覧を提供する。ユーザは、文書選択画面から置換対象の文書に対応する登録ボタン１４０を押下するか、置換対象の文書に対応するチェックボックス１４２にチェックを入れて、一括登録ボタン１４４を押下する。クライアント３０は、登録ボタン１４０もしくは一括登録ボタン１４４の押下に応じて、文書のファイル名等の識別情報を文書置換部７４に送信する。文書置換部７４は、受信した識別情報に基づいて、文書記憶部７２からクライアント３０が選択した文書と文書の属性を取り出す。
【００７９】
次いで、文書置換部７４は、文書と文書の属性とを含む文書登録要求を文書管理サーバ１０に送信する（Ｓ４０２）。文書管理サーバ１０は、文書登録要求を受けて、上記の実施形態と同様に、副本ショートカットを発行し、ファイルサーバ７０に送信する。その後、文書置換部７４は、文書管理サーバ１０から副本ショートカットを受信し（Ｓ４０４）、その副本ショートカットを副本ショートカット記憶部７６に登録する（Ｓ４０６）。
【００８０】
これにより、ファイルサーバ７０が管理していた文書は、文書管理サーバ１０が代わりに正本として管理する。また、ファイルサーバ７０は、管理していた文書の代わりにその文書の副本ショートカットを管理する。クライアント３０は、ファイルサーバ７０が管理する副本ショートカットをダウンロードすれば、その副本ショートカットを用いて、上記の実施形態と同様に文書閲覧をすることができる。
【００８１】
第１の変形例によれば、クライアント３０は、ファイルサーバ７０が管理するファイルが副本ショートカットかどうかを意識することなくそのファイルをファイルサーバ７０からダウンロードする。クライアント３０は、そのダウロードしたファイルを開くと、自動的に文書管理サーバ１０にアクセスしてその副本ショートカットに応じた文書を画面に表示する。
【００８２】
また、ファイルサーバ７０が管理する副本ショートカットについても、文書管理サーバ１０は、どのユーザがファイルサーバ７０に提供した副本ショートカットを用いて、文書閲覧を行ったかを管理することができる。
【００８３】
ファイルサーバ７０は、クライアント３０から副本ショートカットを取得するための取得要求を受け取った際に、管理する副本ショートカットをダウンロードさせるのではなく、その副本ショートカットに含まれる副本ＩＤを取り出し、上記実施形態に示した方法で、新しい第２の副本ＩＤを含む第２の副本ショートカットを生成し、クライアント３０に取得させるように構成することができる。このように構成することで、クライアント３０は、副本ショートカットの取得の度に、異なる副本ＩＤを含む副本ショートカットを取得することになるため、より詳細な派生関係を記録することができる。より詳細な派生関係を記録するために、新しい副本ショートカットの生成は、副本ショートカット取得時に行う方法を示したが、取得後にファイルサーバ７０のショートカットを新しい第２のショートカットに置き換えても良い。また、副本ショートカットは所定回数のダウンロードが行われたら、新しい副本ショートカットに置き換えてもよく、また、一定時間経過後に、すなわち定期的に副本ショートカットを置き換えても良い。
【００８４】
なお、上記では、ファイルサーバ７０が管理していた文書を対象として、文書管理サーバ１０に正本を登録する例について説明した。しかし、クライアント３０からファイルサーバ７０に対して新規の文書の登録要求があった場合にも、同様にその文書を正本として文書管理サーバ１０が管理し、ファイルサーバ７０は、その正本に対する副本ショートカットを管理してもよい。
【００８５】
続いて、実施形態の第２の変形例について、以下、図面を用いて説明する。
【００８６】
図１８Ａは、第２の変形例に係る文書管理システムの概略構成を示す図である。第２の変形例に係る文書管理システムは、いわゆるピュアＰ２Ｐ（Peer-to-Peer）型のネットワークで構成される。このように構成された各ノード８０−１，８０−２，８０−３，・・・（以下では、区別の必要のない場合は「ノード８０」と総称する。）は、文書管理サーバ１０、クライアント３０といった明確な区別がなく両方の役割を担い、分散して文書等のオブジェクトを管理する。
【００８７】
なお、上記の実施形態では、クライアント３０は、文書管理サーバ１０に予め登録された正本の中から要求元ユーザにより指定を受けた正本に対する副本ショートカットを文書管理サーバ１０に要求していた。しかし、第２の変形例では、ノード８０は、新規の文書を登録する際に、要求元ユーザから閲覧対象ユーザの指定も受けて、新規文書の登録時に閲覧対象ユーザごとに副本ショートカットを発行して、閲覧対象ユーザにそれらの副本ショートカットを提供する。つまり、第２の変形例では、各ノード８０は、予め登録された文書の中から副本ショートカットを発行する文書を検索するのではない。さらに言えば、第２の変形例では、ユーザは副本ショートカットを発行して文書を閲覧させたいユーザがいる場合に、その閲覧対象の文書をノードに登録すると同時に、副本ショートカットの発行を要求して、各閲覧対象ユーザに発行された副本ショートカットを配付する。
【００８８】
本システムでは、いわゆる分散ハッシュテーブルの１つであるChordアルゴリズムを用いて、各ノードは、オブジェクトをそのハッシュ値に応じたノードに登録し、ノード間でオブジェクトのやり取りを行う（参考文献：Ion Stoica, Robert Morris, David Karger, M. Frans Kaashoek, and Hari Balakrishnan, Chord: A Scalable Peer-to-peer Lookup Service for Internet Applications, ACM SIGCOMM 2001, San Diego, CA, August 2001, pp. 149-160.）。
【００８９】
ノード８０には、ノード固有のデータ（本システムでは、ＩＰアドレスを用いる）に対して、周知のハッシュ関数（本システムでは、ＳＨＡ−２５６を用いる。以下、他のデータに対するハッシュ値の演算にもＳＨＡ−２５６を用いるものとする）を用いて演算して得られたハッシュ値がノードＩＤとして割り当てられている。さらに、各オブジェクトにも、それらのハッシュ値がユニークＩＤとして割り当てられる。そして、Chordで構成された本システムでは、図１８Ｂに示すようにネットワーク全体がＩＤサークル（Identifier Circle）という円上の仮想空間として定義され、すべてのノード８０とすべてのオブジェクトがそのＩＤサークル上に配置される。
【００９０】
ノード８０は、ノードＩＤに応じたハッシュ空間が割り当てられ、そのハッシュ空間に含まれるハッシュ値を持つオブジェクトを保持する。また、ノード８０は、自分が保持するオブジェクトのユニークＩＤのリスト、ルーティング情報（いわゆるフィンガーテーブル）、前後に位置するノード情報を保持している。ルーティング情報には、オブジェクトを検索して、その検索対象のオブジェクトが当該ノードに存在しない場合に、次にその問合わせをフォワード（送信）すべきノードの情報を含む。
【００９１】
本システムにおいて、オブジェクトを登録したい場合、ノードは自身に割り当てられたハッシュ空間に登録対象のオブジェクトのユニークＩＤを含まない場合には、ノードはルーティング情報を参照することによって、次にフォワードすべきノードを決定し、そのノードへ登録対象のオブジェクトを送信する。この一連の判定処理を繰り返すことによって、オブジェクトを各ノードに登録することができる。また、オブジェクトを取得したい場合にも、同様に、ノードは、上記リストに取得対象のオブジェクトのユニークＩＤが登録されていなければ、次にフォワードすべきノードを決定し、そのノードへ問合わせを送る。この一連の判定処理を繰り返すことによって、ノードは、取得対象のオブジェクトを保持するノードを検索し、検索したノードからそのオブジェクトを取得することができる。
【００９２】
本システムにおいて、ノード８０が保持するオブジェクトとしては、図１９に示すように、文書１６０と、正本メタ情報１８０と、副本メタ情報１８４とがある。
【００９３】
文書１６０は、バイト列のデータであり、文書１６０に対してハッシュ演算して得られたハッシュ値が、文書のユニークＩＤ１６２となる。
【００９４】
正本メタ情報１８０は、文書の属性を示すＸＭＬ文書であり、文書のユニークＩＤ１６２などが記述される。ノード８０は、正本メタ情報に示されるユニークＩＤ、つまり文書のハッシュ値を参照することで、その正本メタ情報に対応する文書を保持するノードを特定することができる。また、正本メタ情報１８０に対してハッシュ演算して得られたハッシュ値が、正本メタ情報のユニークＩＤ１８２となる。
【００９５】
副本メタ情報１８４は、ノード８０が副本ショートカット１９０を発行する毎に生成されるＸＭＬ文書である。さらに、副本メタ情報は、副本ショートカット１９０を用いて文書の複製を閲覧する毎にも生成される。副本メタ情報のユニークＩＤ１８６は、副本ＩＤに相当する。また、副本メタ情報に対してハッシュ演算して得られたハッシュ値が、副本メタ情報のユニークＩＤ１８６となる。
【００９６】
ノード８０は、発行する副本ショートカット１９０−１の副本ＩＤや、閲覧の際に用いた副本ショートカット１９０−２の更新用の副本ＩＤに、副本メタ情報のユニークＩＤ１８６−１，１８６−２を用いる。
【００９７】
図２０Ａに正本メタ情報のデータ構造の一例を示す。図２０Ａにおいて、タグ２００は、このＸＭＬ文書が正本メタ情報であることを示す。タグ２０２に示される要素には、正本メタ情報に関連づけられた文書のファイル名が記述される。タグ２０４に示される要素には、その文書のファイル形式が記述される。タグ２０６に示される要素には、その文書を作成したユーザ名（ユーザＩＤ）が記述される。さらに、タグ２０８に示される要素には、その文書の作成日時が記述される。また、タグ２１０に示される要素には、その文書のハッシュ値（ユニークＩＤ）が記述される。
【００９８】
図２０Ｂに副本メタ情報のデータ構造の一例を示す。図２０Ｂにおいて、タグ３００は、このＸＭＬ文書が副本メタ情報であることを示す。タグ３０２に示される要素には、副本ショートカットを発行したユーザ名もしくは副本ショートカットを用いて閲覧したユーザ名が記述される。タグ３０４に示される要素には、副本ショートカットを発行した日時もしくは副本ショートカットを用いて複製文書を閲覧した日時が記述される。また、タグ３０６に示される要素には、副本ショートカット発行時に生成される副本メタ情報の場合には、正本メタ情報のユニークＩＤが記述される。一方、副本ショートカットを用いて複製文書を閲覧した際に生成される副本メタ情報の場合には、その副本ショートカットに含まれるユニークＩＤ（副本ＩＤ）が記述される。
【００９９】
ノード８０は、自分が保持する正本メタ情報に対する派生関係を示す派生関係情報およびその正本メタ情報に対する履歴情報を保持し、管理する。図２１Ａは、本システムで構築される派生関係を示す図である。また、図２１Ｂは、ノード８０が管理する履歴情報のデータ構成の一例を示す。図２１Ｂに示すように、ノード８０は、自分が保持する正本メタ情報に対して発行された副本ショートカットの副本ＩＤ、つまり副本メタ情報のユニークＩＤと、その副本ショートカットの提供先のユーザＩＤ（例えば、メールアドレス）とを関連づけて履歴情報として管理する。これにより、ユーザが閲覧の際に使用した副本ショートカットがどのユーザに提供された副本ショートカットなのかを特定することができる。
【０１００】
さて、本システムでは、ノード８０は、新規の文書を本システムに登録する際に、ユーザからその文書の閲覧対象ユーザの指定を受け付ける。そして、ノード８０は、指定されたユーザ分の副本ショートカットを発行し、各閲覧対象ユーザに電子メール等で副本ショートカットを送信する。
【０１０１】
以下、ノード８０が新規文書を登録するとともに、その文書に対応する副本ショートカットを閲覧対象ユーザに提供する際の処理手順について、図２２に示すフローチャートを用いて説明する。
【０１０２】
ノード８０は、ユーザから新規文書の登録要求を受けると、その文書の正本メタ情報を生成し（Ｓ５００）、さらに、登録要求の際にユーザから指定された閲覧対象ユーザごとに副本メタ情報を生成する（Ｓ５０２）。次いで、ノード８０は、文書と正本メタ情報と各副本メタ情報（以下、区別する必要がない場合は、正本メタ情報と副本メタ情報とを「メタ情報」と総称する）のハッシュ値、つまりユニークＩＤを求める。ノード８０は、求めた各ユニークＩＤに基づいて、文書や各メタ情報を保持するノードを検索し、検索されたノードに文書や各メタ情報をそれぞれ送信する（Ｓ５０４）。なお、ユニークＩＤの値によってはノード８０自身が文書もしくはいずれかのメタ情報を保持する場合もありうる。
【０１０３】
ノード８０は、さらに、閲覧対象ユーザごとに、登録対象の文書に対応する副本ショートカットをそれぞれ発行する（Ｓ５０６）。ここで発行される副本ショートカットの副本ＩＤには、閲覧対象ユーザごとに生成された副本メタ情報のユニークＩＤ（ハッシュ値）が割り当てられる。続いて、ノード８０は、発行した各副本ショートカットを各閲覧対象ユーザに提供する（Ｓ５０８）。ノード８０は、さらに、正本メタ情報を保持するノードに派生関係情報と履歴情報との更新を指示する（Ｓ５１０）。更新指示を受けたノードは、正本メタ情報のユニークＩＤを親、各副本メタ情報のユニークＩＤを子とする木構造のデータを派生関係情報に登録する。また、そのノードは、副本メタ情報のユニークＩＤと閲覧対象ユーザＩＤとを関連づけて履歴情報に登録する。
【０１０４】
以上の処理手順により、新規の文書とその文書に対する正本メタ情報が、いずれかのノードに登録される。さらに、登録要求ユーザにより指定された閲覧対象ユーザごとにその文書の副本メタ情報が生成され、それらもいずれかのノードに登録される。そして、生成された副本メタ情報のユニークＩＤを副本ＩＤとする副本ショートカットが、閲覧対象ユーザごとに発行され、各閲覧対象ユーザに提供される。
【０１０５】
続いて、副本ショートカットを用いて、ノード８０が文書を閲覧する処理手順について、図２３に示すフローチャートを用いて説明する。
【０１０６】
ノード８０は、ユーザから閲覧対象として選択された副本ショートカットに含まれるユニークＩＤ［ｉ］を取得し（Ｓ６００）、そのユニークＩＤ［ｉ］に対応するメタ情報を保持するノードを検索し、検索されたノードからメタ情報を取得する（Ｓ６０２）。次いで、ノード８０は、取得したメタ情報が正本メタ情報か副本メタ情報かの種別判定をする（Ｓ６０４）。判定の結果、そのメタ情報が正本メタ情報である場合（Ｓ６０６の判定結果が、肯定「Ｙ」）、ノード８０は、正本メタ情報に含まれるユニークＩＤに基づいて、その正本メタ情報に対応する文書を正本として保持するノードを検索し、検索したノードから閲覧対象の文書の複製を取得する（Ｓ６０８）。ノード８０は、取得したその複製文書を画面等に表示する。
【０１０７】
次いで、ノード８０は、文書の閲覧に伴い、ハッシュ値を記述するタグにユニークＩＤ［ｉ］が記述された新たな副本メタ情報を生成する（Ｓ６１０）。さらに、ノード８０は、その新たな副本メタ情報のハッシュ値を求めて、そのハッシュ値をその新たな副本メタ情報のユニークＩＤ［ｉ＋１］として、その新たな副本メタ情報の保持を担当するノードを検索し、検索したノードにその新たな副本メタ情報を送信する（Ｓ６１２）。また、ノード８０は、文書閲覧に用いた副本ショートカットの副本ＩＤを上記ユニークＩＤ［ｉ＋１］を用いて更新する（Ｓ６１４）。つまり、副本ショートカットの副本ＩＤをユニークＩＤ［ｉ＋１］に変更する。加えて、ノード８０は、ユニークＩＤ［ｉ＋１］とユニークＩＤ［ｉ］とを関連づけて、閲覧対象の正本メタ情報を保持するノード８０にそれらのユニークＩＤを通知する（Ｓ６１６）。ユニークＩＤの通知を受けたノードは、自身が保持する派生関係情報を更新する。つまりユニークＩＤ［ｉ］の子として、ユニークＩＤ［ｉ＋１］を追加する。
【０１０８】
一方、Ｓ６０４でのメタ情報の種別判定により、取得したメタ情報が副本メタ情報である場合（Ｓ６０６での判定結果が、否定「Ｎ」）、取得したそのメタ情報に記述されたユニークＩＤに対応するメタ情報を保持するノードを検索し、検索したノードから新たなメタ情報を取得し（Ｓ６１８）、Ｓ６０６での種別判定を行う。この処理を繰り返すことで、最終的にノード８０は、正本メタ情報を取得することができる。
【０１０９】
以上、第２の変形例によれば、各ノード８０が、文書管理サーバ１０、クライアント３０といった明確な区別がなく両方の役割を担い、分散して文書等のオブジェクトを管理する。そして、派生関係情報と副本メタ情報を参照することで、どのユーザがいつ副本ショートカットを発行したかや、どのユーザがいつ文書を閲覧したかを把握することができる。派生関係情報、副本メタ情報の他に履歴情報も参照することで、どのユーザにいつ副本ショートカットを発行したかを把握することができる。加えて、各ノードが管理する派生関係情報を参照することで、文書に対していくつの副本ショートカットが発行されたのか、どの副本ショートカットを用いて、何回閲覧されたのかを把握することができる。
【０１１０】
また、より簡易な構成としては、ノードに正本メタ情報に対する派生関係情報および履歴情報を保持させず、副本メタ情報生成時に正本メタ情報を保持するノードへの通知を省略することも可能である。この簡易な構成においても、与えられた副本ショートカットからメタ情報を再帰的に参照することで、該副本ショートカットが伝播した履歴情報を復元することができる。
【図面の簡単な説明】
【０１１１】
【図１】本実施形態に係る文書管理システムの概略構成を示す図である。
【図２】本実施形態に係る文書管理サーバの機能ブロックを示す図である。
【図３】副本ショートカットに含まれるデータの一例を示す図である。
【図４Ａ】正本ＩＤと副本ＩＤとの派生関係を示す木構造のデータの一例を示す図である。
【図４Ｂ】正本ＩＤと副本ＩＤとの派生関係を示す木構造のデータの一例を示す図である。
【図５Ａ】正本ＩＤと副本ＩＤとの派生関係を示す木構造のデータの一例を示す図である。
【図５Ｂ】正本ＩＤと副本ＩＤとの派生関係を示す木構造のデータの一例を示す図である。
【図６】履歴情報管理部が管理する履歴情報の一例を示す図である。
【図７】本実施形態に係るクライアントの機能ブロックを示す図である。
【図８】文書管理サーバがクライアントに提供する文書一覧テーブルの一例を示す図である。
【図９】文書登録イベント実行時における文書管理サーバ及びクライアントの処理手順を示す図である。
【図１０】副本ショートカット発行イベント実行時における文書管理サーバ及びクライアントの処理手順を示す図である。
【図１１】文書提供イベント実行時における文書管理サーバ及びクライアントの処理手順を示す図である。
【図１２】正本ＩＤと副本ＩＤとの派生関係を示す木構造のデータの一例を示す図である。
【図１３】履歴情報管理部が管理する履歴情報の一例を示す図である。
【図１４】第１の変形例に係る文書管理システムの概略構成を示す図である。
【図１５】第１の変形例に係るファイルサーバの機能ブロックを示す図である。
【図１６】文書置換部における文書置換の処理手順を示すフローチャートである。
【図１７】ファイルサーバからクライアントに対して提供される文書選択画面の一例を示す図である。
【図１８Ａ】実施形態の第２の変形例に係る文書管理システムの概略構成を示す図である。
【図１８Ｂ】ハッシュテーブルの１つであるChordで構成されたネットワークについて説明するための図である。
【図１９】第２の変形例に係る各ノードが保持するオブジェクト等を説明するための図である。
【図２０Ａ】正本メタ情報のＸＭＬ文書のタグ構成の一例を示す図である。
【図２０Ｂ】副本メタ情報のＸＭＬ文書のタグ構成の一例を示す図である。
【図２１Ａ】正本メタ情報と副本メタ情報との派生関係を示す木構造のデータの一例を示す図である。
【図２１Ｂ】ノードが管理する履歴情報のデータ構成の一例を示す図である。
【図２２】第２の変形例に係るノードが、新規文書を登録するとともに、その文書に対応する副本ショートカットを閲覧対象ユーザに提供する際の処理手順を示すフローチャートである。
【図２３】第２の変形例に係るノードが、副本ショートカットを用いて文書を閲覧する際の処理手順を示すフローチャートである。
【符号の説明】
【０１１２】
１０  文書管理サーバ、１２  文書登録部、１４  ショートカット提供部、１６  文書提供部、１８  履歴情報管理部、２２  文書管理部、２４  派生関係情報記憶部、３０  クライアント、３２  文書登録要求部、３４  ショートカット要求部、３６  副本ショートカット記憶部、３８  閲覧要求部、５０  ネットワーク、７０  ファイルサーバ、７２  文書記憶部、７４  文書置換部、７６  副本ショートカット記憶部、８０  ノード。
【図１】
0004696721.tif 000002
【図２】
0004696721.tif 000003
【図３】
0004696721.tif 000004
【図４Ａ】
0004696721.tif 000005
【図４Ｂ】
0004696721.tif 000006
【図５Ａ】
0004696721.tif 000007
【図５Ｂ】
0004696721.tif 000008
【図６】
0004696721.tif 000009
【図７】
0004696721.tif 000010
【図８】
0004696721.tif 000011
【図９】
0004696721.tif 000012
【図１０】
0004696721.tif 000013
【図１１】
0004696721.tif 000014
【図１２】
0004696721.tif 000015
【図１３】
0004696721.tif 000016
【図１４】
0004696721.tif 000017
【図１５】
0004696721.tif 000018
【図１６】
0004696721.tif 000019
【図１７】
0004696721.tif 000020
【図１８Ａ】
0004696721.tif 000021
【図１８Ｂ】
0004696721.tif 000022
【図１９】
0004696721.tif 000023
【図２０Ａ】
0004696721.tif 000024
【図２０Ｂ】
0004696721.tif 000025
【図２１Ａ】
0004696721.tif 000026
【図２１Ｂ】
0004696721.tif 000027
【図２２】
0004696721.tif 000028
【図２３】
0004696721.tif 000029