(57)【要約】【課題】データの再利用に基づくファイル間の関連性を精度良く検出し、ファイル同士を適切に関連づける。【解決手段】複数のファイルのうちの第１のファイル１が閉じられるよりも前の期間の少なくとも一部においてはクリップボード６に記憶されていたデータであるクリップボードデータＤ１〜Ｄ４が取得される。また、クリップボードデータＤ１〜Ｄ４がクリップボード６に書き込まれた時刻Ｔ１、Ｔ３、Ｔ５、Ｔ６を示す時刻情報が取得される。そして、時刻情報の示す時刻において開かれていた第２のファイルが特定される。第１のファイル１がクリップボードデータか第１の類似データを含み、かつ、第２のファイルがクリップボードデータか第２の類似データを含む場合、第１と第２のファイルが関連づけられる。第１と第２の類似データは、どちらも、データ同士の類似性に関する所定の関係がクリップボードデータとの間で成立するデータである。【選択図】図１
2014041451.tif 000002
【特許請求の範囲】
【請求項１】
複数のファイルを管理するファイル管理コンピュータに、
前記複数のファイルのうちの第１のファイルが閉じられるよりも前の期間の少なくとも一部においてはクリップボードに記憶されていたデータであるクリップボードデータと、前記クリップボードデータが前記クリップボードに書き込まれた時刻を示す時刻情報を取得し、
前記複数のファイルのうちで、前記時刻情報の示す前記時刻において開かれていた第２のファイルを特定し、
前記第１のファイルが、前記クリップボードデータを含むか、または、データ同士の類似性に関する所定の関係が前記クリップボードデータとの間で成立する第１の類似データを含み、かつ、前記第２のファイルが、前記クリップボードデータを含むか、または、前記クリップボードデータとの間で前記所定の関係が成立する第２の類似データを含む場合、前記第１のファイルと前記第２のファイルを関連づける
ことを含む関連づけ処理を実行させる関連づけプログラム。
【請求項２】
前記クリップボードデータと前記時刻情報を取得する処理は、
前記第１のファイルを保存して閉じるための第１の要求、または、
前記第１のファイルを開いたままで保存するための第２の要求
を契機として実行される
ことを特徴とする請求項１に記載の関連づけプログラム。
【請求項３】
前記第１のファイルは既存のファイルであり、
取得される前記クリップボードデータは、前記第１のファイルが開かれてから、前記第１の要求または前記第２の要求の受領までの期間の少なくとも一部においては前記クリップボードに記憶されていたデータである
ことを特徴とする請求項２に記載の関連づけプログラム。
【請求項４】
前記第１のファイルは新規作成されたファイルであり、
取得される前記クリップボードデータは、前記第１の要求または前記第２の要求の受領から所定時間以内の過去の期間の少なくとも一部においては前記クリップボードに記憶されていたデータである
ことを特徴とする請求項２に記載の関連づけプログラム。
【請求項５】
１回以上前記第２の要求が発行された後で再度前記第２の要求が発行された場合、取得される前記クリップボードデータは、直近から２番目の前記第２の要求の受領から、直近の前記第２の要求の受領までの期間の少なくとも一部においては前記クリップボードに記憶されていたデータである
ことを特徴とする請求項２から４のいずれか１項に記載の関連づけプログラム。
【請求項６】
１回以上前記第２の要求が発行された後で前記第１の要求が発行された場合、取得される前記クリップボードデータは、直近の前記第２の要求の受領から前記第１の要求の受領までの期間の少なくとも一部においては前記クリップボードに記憶されていたデータである
ことを特徴とする請求項２から５のいずれか１項に記載の関連づけプログラム。
【請求項７】
複数のファイルを管理するコンピュータが、
前記複数のファイルのうちの第１のファイルが閉じられるよりも前の期間の少なくとも一部においてはクリップボードに記憶されていたデータであるクリップボードデータと、前記クリップボードデータが前記クリップボードに書き込まれた時刻を示す時刻情報を取得し、
前記複数のファイルのうちで、前記時刻情報の示す前記時刻において開かれていた第２のファイルを特定し、
前記第１のファイルが、前記クリップボードデータを含むか、または、データ同士の類似性に関する所定の関係が前記クリップボードデータとの間で成立する第１の類似データを含み、かつ、前記第２のファイルが、前記クリップボードデータを含むか、または、前記クリップボードデータとの間で前記所定の関係が成立する第２の類似データを含む場合、前記第１のファイルと前記第２のファイルを関連づける
ことを特徴とする関連づけ方法。
【請求項８】
複数のファイルのうちの第１のファイルが閉じられるよりも前の期間の少なくとも一部においてはクリップボードに記憶されていたデータであるクリップボードデータと、前記クリップボードデータが前記クリップボードに書き込まれた時刻を示す時刻情報を取得する取得手段と、
前記複数のファイルのうちで、前記時刻情報の示す前記時刻において開かれていた第２のファイルを特定する特定手段と、
前記第１のファイルが、前記クリップボードデータを含むか、または、データ同士の類似性に関する所定の関係が前記クリップボードデータとの間で成立する第１の類似データを含み、かつ、前記第２のファイルが、前記クリップボードデータを含むか、または、前記クリップボードデータとの間で前記所定の関係が成立する第２の類似データを含む場合、前記第１のファイルと前記第２のファイルを関連づける関連づけ手段
を備えることを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ファイル同士を関連づける技術に関する。
【背景技術】
【０００２】
文書同士またはファイル同士の関連性を評価または判断する技術は、情報検索や文書管理をはじめとする様々な分野で利用可能であり、様々な観点から研究されている。
【０００３】
例えば、文書の文脈や意味内容を反映させて文書を分類および管理することができる、次のような文書管理装置が提案されている。当該文書管理装置は、形態素解析手段と重複度算出手段と類似度算出手段を有する。
【０００４】
形態素解析手段は、文書データを形態素解析する。重複度算出手段は、一の文書データと他の文書データとの重複度を、それぞれが有する形態素に基づいて算出する。そして、類似度算出手段は、重複度と閾値から、一の文書データと他の文書データとの類似度を算出する。
【０００５】
また、送信対象文書と機密文書との間の類似性を高精度に判断するための、次のような文書検査装置も提案されている。当該文書検査装置は、機密情報の漏洩防止のために使われてもよい。
【０００６】
具体的には、当該文書検査装置は、キーワード出現位置抽出部と、キーワード範囲内有無判定部と、特徴素行列作成部と、共通要素数算出部を有する。キーワード出現位置抽出部は、機密文書を含む判定対象文書から、キーワードおよび当該キーワードの出現位置を抽出する。また、キーワード範囲内有無判定部は、抽出されたキーワードの出現位置ごとのキーワードを判定対象として、当該判定対象のキーワード前後に関わる所定範囲内に、抽出された他のキーワードがあるか否かを判定する。
【０００７】
そして、他のキーワードがあると判定されたとき、特徴素行列作成部は、判定対象のキーワードおよび上記の他のキーワードを各キーワードの出現位置の前後情報に対応づけて組み合わせた、組み合わせ情報を生成する。共通要素数算出部は、判定対象文書について生成された複数の組み合わせ情報のうち、機密文書の組み合わせ情報と一致する組み合わせ情報の数が、所定値以上であるか否かを判定する。
【０００８】
なお、機密情報の漏洩防止に関しては、上記のごとき文書検査装置以外にも、例えば、以下のような印刷データ処理方法も提案されている。当該印刷データ処理方法は、印刷データの監視を、効率的かつ有効に実施するための方法である。
【０００９】
具体的には、当該印刷データ処理方法は、印刷処理の途中で生成される印刷メタデータを取得し、記憶装置に格納するステップを含む。また、当該印刷データ処理方法は、以下のような判断ステップを含む。
【００１０】
記憶装置に格納されている印刷メタデータに含まれる描画レコードが図形の描画命令を含む場合、判断ステップでは、当該描画命令を実行することなく、「当該描画命令によって生成されることとなる描画オブジェクトが、所定の状態にあるか」が判断される。ここで、「所定の状態」とは、「文字の可能性が高い」とされる状態である。より具体的には、判断ステップでは、当該描画命令に関連する描画レコードに含まれる描画点の座標値から、上記のような判断が行われる。
【００１１】
そして、図形の描画命令によって生成されることとなる描画オブジェクトが、所定の状態にあると判断された場合、当該印刷データ処理方法によれば、図形の描画命令に係る描画レコードにしたがって描画処理が実施され、描画結果が記憶装置に格納される。また、当該印刷データ処理方法は、描画処理の描画結果に対して文字認識処理を実施するステップを含む。
【００１２】
ところで、文書間の関連性を評価または判定する技術の中には、文書に含まれるデータ自体だけでなく、文書に対するユーザの操作にも基づいて、評価または判定を実行するものもある。
【００１３】
例えば、ユーザの挙動およびその変化に基づき適切に文書間のリンクづけを行うことを目的として、以下のような技術が提案されている。
文書管理システムに対するユーザのアクセス履歴ログデータにおける、メタデータに関連するログデータから、各ユーザの遷移履歴に関する遷移データが生成される。また、遷移データを用いて、各メタデータについて、当該メタデータに到達する前の挙動と、当該メタデータに到達した後の挙動とに基づき、メタデータの寄与値が算出される。
【００１４】
そして、遷移データとメタデータの寄与値に基づき、特定期間における、第１メタデータから遷移先となる第２メタデータへのリンク寄与値が算出される。その後、特定期間における上記リンクのリンク寄与値と、特定期間より前の期間における上記リンクのリンク評価値とに基づき、特定期間における上記リンクのリンク評価値が算出される。そして、特定期間におけるリンク評価値に基づき、上記リンクの生成の是非が判断される。
【００１５】
また、電子データである文書の集合を用いた調査業務等において、ユーザによる文書の閲覧時に、関連する文書を適切に表示することを目的として、次のような関連文書表示システムが提案されている。
【００１６】
当該関連文書表示システムは、関連学習制御部とレコメンド制御部を有する。関連学習制御部は、過去の文書の作成に基づき、文書の集合において関連する文書同士を、有効な関連リンクとして関連リンク記憶部に記憶する。その後、ユーザによって文書の集合におけるいずれかの文書が閲覧された場合、レコメンド制御部は、関連リンク記憶部を参照して、閲覧された文書との間に有効な関連リンクを有する文書を抽出する。そして、レコメンド制御部は、抽出した文書を、閲覧された文書に関連する文書として、表示部に表示する。
【００１７】
さらに、ウェブベースのタスクを記録および再生するための、次のような方法も提案されている。
当該方法は、記録するセッションの開始を明示的に合図することなく、ユーザによって今しがた行われたセッション中に実施されたウェブベースのタスクを記録すること（換言すれば、ユーザ関与無しにセッションの開始を自動的に見つけること）を含む。また、当該方法は、記録されたウェブベースのタスクを再生する要求を受信することと、記録されたウェブベースのタスクを再生することを含む。
【００１８】
ところで、文書に対するユーザの操作の例としては、ハイパーリンクをクリックする操作なども挙げられるが、ほかにも、コピー・アンド・ペースト操作やカット・アンド・ペースト操作が挙げられる。ユーザは、類似文書からデータをコピー・アンド・ペーストして使うこともある。例えば、ある種のＯＳ（Operating System）が搭載されたコンピュータでは、単純なペースト機能が使われ得るだけでなく、例えば以下のような拡張されたペースト機能が使われてもよい。
【００１９】
ペーストするために文書から選択された選択データは、クリップボードなどの記憶域に保存される。選択データに関連するデータ型に関する情報を、消費側またはペースト・アプリケーションに提供するために、選択データに関連する情報またはデータが、選択データとともに保存される。消費側アプリケーションは、ペーストされるデータのデータ構造および書式設定が、ペースト前の選択データに適用されていた状態で維持されるように、名前空間、および拡張スタイルシート言語変換ファイルなどの、関連リソースを取得する。具体的には、上記関連リソースは、選択データを、第１の文書に関連づけられた第１のデータ型から、当該選択データを第２の文書にペーストするための第２のデータ型に、変換するためのものである。
【先行技術文献】
【特許文献】
【００２０】
【特許文献１】特開２００４−１７１２１５号公報
【特許文献２】特開２０１０−２３１７６６号公報
【特許文献３】特開２００９−１４０１２７号公報
【特許文献４】特開２００７−４７７９号公報
【特許文献５】特開２０１１−２８４４７号公報
【特許文献６】特開２０１１−１５９２８１号公報
【特許文献７】特開２００４−２６５４０２号公報
【発明の概要】
【発明が解決しようとする課題】
【００２１】
大量のファイルの中から、あるファイルに関連する他のファイルを見つける技術は、ユーザによる既存のファイルの有効活用を支援するうえで有益である。
【００２２】
例えば、あるファイル中のデータが他のファイルにおいて再利用される場合、両ファイルが意味的に関連する蓋然性は高い。よって、データの再利用に基づくファイル間の関連性を適切に検出することの可能な技術がもし提供されれば、当該技術は、ユーザによる既存のファイルの有効活用を支援するうえで有益である。
【００２３】
本発明は、１つの側面では、データの再利用に基づくファイル間の関連性を精度良く検出し、ファイル同士を適切に関連づけることを目的とする。
【課題を解決するための手段】
【００２４】
一態様による関連づけプログラムは、複数のファイルを管理するファイル管理コンピュータに、以下の関連づけ処理を実行させる。
【００２５】
前記関連づけ処理は、クリップボードデータと、前記クリップボードデータがクリップボードに書き込まれた時刻を示す時刻情報を取得することを含む。前記クリップボードデータは、前記複数のファイルのうちの第１のファイルが閉じられるよりも前の期間の少なくとも一部においては前記クリップボードに記憶されていたデータである。
【００２６】
前記関連づけ処理は、前記複数のファイルのうちで、前記時刻情報の示す前記時刻において開かれていた第２のファイルを特定することを含む。
【００２７】
前記関連づけ処理は、前記第１のファイルが前記クリップボードデータまたは第１の類似データを含み、かつ、前記第２のファイルが前記クリップボードデータまたは第２の類似データを含む場合、前記第１のファイルと前記第２のファイルを関連づけることも含む。前記第１の類似データは、データ同士の類似性に関する所定の関係が前記クリップボードデータとの間で成立するデータである。前記第２の類似データも、前記クリップボードデータとの間で前記所定の関係が成立するデータである。
【発明の効果】
【００２８】
上記の関連づけプログラムによれば、データの再利用に基づくファイル間の関連性を精度良く検出し、ファイル同士を適切に関連づけることができる。
【図面の簡単な説明】
【００２９】
【図１】ファイルの編集とクリップボード上のデータの変遷の例を示すシーケンス図である。
【図２】第１実施形態のシステム構成図である。
【図３】ハードウェア構成例を示す図である。
【図４】システムの動作フローチャートである。
【図５】ログ記憶部に記憶されるログの例を示す図である。
【図６】クリップボードデータ記憶部に記憶されるクリップボードデータテーブルの例を示す図である。
【図７】リンク記憶部に記憶されるリンクテーブルの例を示す図である。
【図８】オープン処理のフローチャートである。
【図９】クライアント側のリンク処理のフローチャートである。
【図１０】クライアント側のクリップボードデータ送信処理のフローチャートである。
【図１１】サーバ側のリンク処理のフローチャート（その１）である。
【図１２】サーバ側のリンク処理のフローチャート（その２）である。
【図１３】サーバ側のリンク処理のフローチャート（その３）である。
【図１４】サーバ側の比較処理のフローチャート（その１）である。
【図１５】サーバ側の比較処理のフローチャート（その２）である。
【図１６】第２実施形態のシステム構成図である。
【発明を実施するための形態】
【００３０】
以下、実施形態について、図面を参照しながら詳細に説明する。なお、以下に説明するファイル同士の関連づけは、実施形態に応じて、クライアントサーバシステムにおいて行われてもよいし、スタンドアロンシステムにおいて行われてもよい。
【００３１】
そこで、以下ではまず、「ファイル同士の関連づけがクライアントサーバシステムとスタンドアロンシステムのいずれで行われるのか」ということによらない共通点について、図１を参照して説明する。その後、クライアントサーバシステムが利用される第１実施形態について、図２〜１５を参照して説明する。さらに、スタンドアロンシステムが利用される第２実施形態について、図１６を参照して説明する。
【００３２】
その後、他の技術と比べての第１・第２実施形態の利点について説明する。最後に、いくつかの変形例についても説明する。
【００３３】
さて、図１は、ファイルの編集とクリップボード上データの変遷の例を示すシーケンス図である。図１には、ファイル１〜５とクリップボード６のタイムラインが示されている。なお、ファイル１〜５の各々は、文書作成アプリケーションやテキストエディタなどにより作成された文書ファイルでもよいし、その他の種類のアプリケーションにより作成されたファイル（例えば、プレゼンテーションスライド形式のファイル）でもよい。
【００３４】
図１において、各ファイルのタイムライン上の矩形（すなわちアクティベーション）は、ファイルが開かれている期間を示す。例えば、図１の例においては、ファイル１は時刻Ｔ２から時刻Ｔ７まで開かれている。
【００３５】
また、クリップボード６は、ＯＳにより提供されるデータ記憶領域である。ユーザがコピー操作またはカット操作を行うたびに、クリップボード６が書き換えられる。クリップボード６は、各種アプリケーションから、ＡＰＩ（Application Programming Interface）を介してアクセス可能である。
【００３６】
つまり、各アプリケーションは、コピー操作またはカット操作に応じて、ＡＰＩを介して、クリップボード６にデータを書き込むことができる。また、各アプリケーションは、ペースト操作に応じて、ＡＰＩを介して、クリップボード６からデータを読み出すことができる。
【００３７】
一つの観点によれば、クリップボード６は、複数のアプリケーション間で共有されるデータ記憶領域である。よって、アプリケーション間でのデータの再利用は、クリップボード６を介して可能となる。
【００３８】
ところで、あるアプリケーションがクリップボード６を更新した場合、クリップボード６が更新されたこと自体は、他のアプリケーションも、適宜のＡＰＩを介して検出することができる。しかし、他のアプリケーションは、単に「クリップボード６が更新された」ということを認識するだけであり、「どのアプリケーションがクリップボード６を更新したのか」ということまでは認識しない。このような限界があるにもかかわらず、以下に説明する実施形態によれば、「クリップボード６を介したデータの再利用がどのファイル間で行われたのか」という推定が可能である。
【００３９】
さて、あるアプリケーションを使ってファイルを編集中のユーザが、ペースト操作を行うと、アプリケーションは、クリップボード６上のデータ（以下、「クリップボードデータ」ともいう）を読み出す。そして、アプリケーションは、読み出したデータを、ペースト操作が行われたファイルにペーストする。
【００４０】
図１の例では、以下の項目（１ａ）〜（１ｅ）に示すようにして、次々に新たなクリップボードデータがクリップボード６に書き込まれる。すなわち、図１の例では、クリップボード６は、時刻Ｔ１、Ｔ３、Ｔ５、Ｔ６、およびＴ８に書き換えられている。
【００４１】
（１ａ）時刻Ｔ１にクリップボードデータＤ１がクリップボード６に書き込まれる。
（１ｂ）時刻Ｔ３にクリップボードデータＤ２がクリップボード６に書き込まれる。
（１ｃ）時刻Ｔ５にクリップボードデータＤ３がクリップボード６に書き込まれる。
（１ｄ）時刻Ｔ６にクリップボードデータＤ４がクリップボード６に書き込まれる。
（１ｅ）時刻Ｔ８にクリップボードデータＤ５がクリップボード６に書き込まれる。
【００４２】
図１の例では、「ファイル１が開いている期間（すなわち時刻Ｔ２から時刻Ｔ７までの期間）の少なくとも一部においてクリップボード６に記憶されている」という条件を満たすデータは、クリップボードデータＤ１〜Ｄ４である。クリップボードデータＤ５は当該条件を満たさない。したがって、以下の可能性（２ａ）〜（２ｄ）があり得るが、クリップボードデータＤ５がファイル１にペーストされた可能性はない。
【００４３】
（２ａ）ファイル１が開いている間（より詳しくは、時刻Ｔ２から時刻Ｔ３までの間）に、クリップボードデータＤ１がファイル１にペーストされた可能性。
（２ｂ）ファイル１が開いている間（より詳しくは、時刻Ｔ３から時刻Ｔ５までの間）に、クリップボードデータＤ２がファイル１にペーストされた可能性。
（２ｃ）ファイル１が開いている間（より詳しくは、時刻Ｔ５から時刻Ｔ６までの間）に、クリップボードデータＤ３がファイル１にペーストされた可能性。
（２ｄ）ファイル１が開いている間（より詳しくは、時刻Ｔ６から時刻Ｔ７までの間）に、クリップボードデータＤ４がファイル１にペーストされた可能性。
【００４４】
ところで、図１の例では、クリップボードデータＤ１がクリップボード６に書き込まれた時刻Ｔ１に開いているファイルは、ファイル２と４のみである。よって、もしクリップボードデータＤ１がファイル１にペーストされたのだとすれば、クリップボードデータＤ１が元々含まれていたファイルは、ファイル２または４である。
【００４５】
逆に、ファイル３と５は、どちらも、時刻Ｔ１にはまだ開かれていない。そのため、クリップボードデータＤ１がファイル３または５からファイル１へとコピー・アンド・ペースト（またはカット・アンド・ペースト）された、という可能性はない。
【００４６】
以上から、ファイル１と２の双方がクリップボードデータＤ１を含む場合、「元々はファイル２に含まれていたクリップボードデータＤ１が、ファイル２からコピーされて、ファイル１へとペーストされた」という蓋然性が高い。換言すれば、この場合、「ファイル２内のクリップボードデータＤ１が、ファイル１において再利用された」という蓋然性が高い。したがって、この場合、「ファイル１と２の間には、データの再利用に基づく関連性がある」と推定することは妥当である。
【００４７】
なお、ファイル２中のデータがファイル１へとカット・アンド・ペーストされた場合は、（アンドゥ操作などが行われない限りは）ファイル２からは当該データが削除されてしまう。よって、「ファイル１と２がクリップボードデータＤ１を含むので、ファイル１と２の間には、データの再利用に基づく関連性がある」という上記の推測は、より具体的には、コピー・アンド・ペーストによるデータ再利用に関する推測である。
【００４８】
同様に、ファイル１と４の双方がクリップボードデータＤ１を含む場合、「元々はファイル４に含まれていたクリップボードデータＤ１が、ファイル４からコピーされて、ファイル１へとペーストされた」という蓋然性が高い。換言すれば、この場合、「ファイル４内のクリップボードデータＤ１が、ファイル１において再利用された」という蓋然性が高い。したがって、この場合、「ファイル１と４の間には、データの再利用に基づく関連性がある」と推定することは妥当である。
【００４９】
また、クリップボードデータＤ２がクリップボード６に書き込まれた時刻Ｔ３に開いているファイルは、ファイル１以外では、ファイル２と４のみである。よって、ファイル１と２の双方がクリップボードデータＤ２を含む場合には、「ファイル１と２の間には、データの再利用に基づく関連性がある」と推定することは妥当である。同様に、ファイル１と４の双方がクリップボードデータＤ２を含む場合には、「ファイル１と４の間には、データの再利用に基づく関連性がある」と推定することは妥当である。
【００５０】
そして、クリップボードデータＤ３がクリップボード６に書き込まれた時刻Ｔ５に開いているファイルは、ファイル１以外では、ファイル３と４のみである。よって、ファイル１と３の双方がクリップボードデータＤ３を含む場合には、「ファイル１と３の間には、データの再利用に基づく関連性がある」と推定することは妥当である。同様に、ファイル１と４の双方がクリップボードデータＤ３を含む場合には、「ファイル１と４の間には、データの再利用に基づく関連性がある」と推定することは妥当である。
【００５１】
また、クリップボードデータＤ４がクリップボード６に書き込まれた時刻Ｔ６に開いているファイルは、ファイル１以外では、ファイル４と５のみである。よって、ファイル１と４の双方がクリップボードデータＤ４を含む場合には、「ファイル１と４の間には、データの再利用に基づく関連性がある」と推定することは妥当である。同様に、ファイル１と５の双方がクリップボードデータＤ４を含む場合には、「ファイル１と５の間には、データの再利用に基づく関連性がある」と推定することは妥当である。
【００５２】
そこで、以上説明したようなデータの再利用に基づく関連性を検出し、検出した関連性にしたがってファイル同士を関連づけるために、第１および第２実施形態では、クリップボード６上のデータの変遷が監視される。具体的には、クリップボード６に書き込まれたデータは、当該データがクリップボード６に書き込まれた時刻（すなわちクリップボード６の書き換え時刻）を示す時刻情報とともに記録される。
【００５３】
そして、第１および第２実施形態では、複数のファイル（例えば、ファイル１〜５を含む多数のファイル）を管理するファイル管理コンピュータが、次のような関連づけ処理を実行する。ファイル管理コンピュータは、クライアントサーバシステムにおけるサーバコンピュータであってもよいし、スタンドアロンコンピュータであってもよい。
【００５４】
ファイル管理コンピュータは、クリップボードデータと、当該クリップボードデータがクリップボード６に書き込まれた時刻を示す時刻情報を取得する。ファイル管理コンピュータが取得するクリップボードデータは、具体的には、第１のファイル（例えばファイル１）が閉じられるよりも前の期間の少なくとも一部においてはクリップボード６に記憶されていたデータである。
【００５５】
当然ながら、第１のファイルが閉じられた後には、データがクリップボード６から第１のファイルへとペーストされることはない。よって、ファイル管理コンピュータは、第１のファイルが閉じられた後にクリップボード６に記憶されていたデータを取得する必要はない。そのため、ファイル管理コンピュータは、上記のとおり、第１のファイルが閉じられるよりも前の期間の少なくとも一部においてはクリップボード６に記憶されていたデータを取得する。
【００５６】
また、上記のとおり第１および第２実施形態では、クリップボードデータと時刻情報が記録される。したがって、ファイル管理コンピュータは、上記のようなクリップボードデータと時刻情報を取得することが可能である。
【００５７】
また、ファイル管理コンピュータは、ファイル管理コンピュータが管理する上記の複数のファイルのうちで、取得した時刻情報の示す時刻において開かれていた第２のファイルを特定する。特定される第２のファイルの数は、複数のこともある。例えば、ファイル管理コンピュータは、図１のクリップボードデータＤ２と、クリップボードデータＤ２がクリップボード６に書き込まれた時刻Ｔ３を示す時刻情報を取得した場合は、ファイル２と４をそれぞれ第２のファイルとして特定する。
【００５８】
そして、ファイル管理コンピュータは、次の条件（３ａ）と（３ｂ）がともに成り立つ場合に、第１のファイルと第２のファイルを関連づける。
【００５９】
（３ａ）取得されたクリップボードデータを、第１のファイルが含む。
（３ｂ）取得されたクリップボードデータを、第２のファイルが含む。
【００６０】
例えば、第１のファイルがファイル１であり、ファイル管理コンピュータがクリップボードデータＤ２を取得し、ファイル２と４を第２のファイルとして特定したとする。この場合、もし、ファイル１と２の双方がクリップボードデータＤ２を含んでいれば、条件（３ａ）と（３ｂ）がともに成り立つので、ファイル管理コンピュータは、ファイル１と２を関連づける。同様に、もし、ファイル１と４の双方がクリップボードデータＤ２を含んでいれば、条件（３ａ）と（３ｂ）がともに成り立つので、ファイル管理コンピュータは、ファイル１と４を関連づける。
【００６１】
ファイル管理コンピュータは、条件（３ａ）と（３ｂ）の代わりに、以下の条件（４ａ）と（４ｂ）を用いてもよい。すなわち、ファイル管理コンピュータは、条件（４ａ）と（４ｂ）がともに成り立つ場合に、第１のファイルと第２のファイルを関連づけてもよい。
【００６２】
（４ａ）取得されたクリップボードデータ自体を第１のファイルが含むか、または、データ同士の類似性に関する所定の関係が当該クリップボードデータとの間で成立する第１の類似データを、第１のファイルが含む。
（４ｂ）取得されたクリップボードデータを、第２のファイルが含む。
【００６３】
条件（４ａ）において、クリップボードデータそのものだけでなく、類似データも考慮される理由は、次のとおりである。
後述の図９〜１５に関する説明から明らかなように、クリップボードデータが第１のファイルにペーストされてから、ファイル管理コンピュータが関連づけ処理を実行するまでに、ある程度のタイムラグが生じ得る。よって、そのタイムラグの間に、第１のファイルが編集される可能性もある。
【００６４】
より具体的には、第１のファイルにペーストされたクリップボードデータは、ファイル管理コンピュータが関連づけ処理を実行するよりも前に、第１のファイル上で編集される（すなわち変更される）可能性がある。その結果、第１のファイルは、クリップボードデータ自体は含まなくなる可能性がある。
【００６５】
しかし、「ユーザが当該クリップボードデータの再利用を意図している場合は、編集されたデータは、ペーストされたデータ自体とよく似ている」と推測される。よって、ファイル管理コンピュータは、以上説明したような編集の可能性を考慮に入れるために、条件（４ａ）と（４ｂ）がともに成り立つ場合に、第１のファイルと第２のファイルを関連づけてもよい。
【００６６】
なお、条件（４ａ）に関して述べた上記の所定の関係は、例えば、テキストデータに関する「２つの文字列が部分一致する」という関係でもよい。２つの文字列それぞれの長さと、２つの文字列の間で一致する部分の長さに関して、さらにルールが決められていてもよい。例えば、ある関数ｆ１が予め定義されており、２つの文字列の長さはそれぞれＬ１とＬ２であり、Ｌ３＝ｆ１（Ｌ１，Ｌ２）だとする。この場合、上記の所定の関係は、「長さがＬ１とＬ２の２つの文字列の間で、長さＬ３以上の部分文字列が一致する」という関係でもよい。
【００６７】
予め適宜に定められた閾値よりも長い文字列同士に関しては、上記の所定の関係は、２つの文字列の双方に出現する形態素の数に基づいて定義される関係であってもよい。例えば、ある関数ｆ２とｆ３が予め定義されているものとし、２つの文字列の長さをそれぞれＬ４とＬ５とし、Ｌ６＝ｆ２（Ｌ４，Ｌ５）とする。また、一方の文字列に含まれる形態素の数がＮ１であり、他方の文字列に含まれる形態素の数がＮ２であり、Ｎ３＝ｆ３（Ｎ１，Ｎ２）だとする。この場合、上記の所定の関係は、「それぞれの二つの文字列から得られる長さがＬ６以下の部分文字列において、双方の部分文字列に共通して出現する形態素の数が、Ｎ３以上である」という関係でもよい。
【００６８】
例えば、クリップボードデータの文字列長がＬ４で、あるファイルに含まれる文字列全体の長さがＬ５の場合、Ｌ４≪Ｌ５であることも多い。Ｌ４≪Ｌ５の場合、クリップボードデータに含まれる形態素の大部分（または全部）が、上記のあるファイル中に、たまたま分散して含まれている可能性もある。しかし、クリップボードデータ中の形態素が、ファイル中に分散して含まれている（つまり互いに離れて含まれている）場合は、「ファイルの文字列がクリップボードデータの文字列と類似している」とは言い難い。
【００６９】
そこで、より適切な類似性の判断を可能にするため、例えば、関数ｆ２は、Ｌ４よりも少しだけ大きな値（またはＬ４そのもの）をＬ６として返すように定義されていてもよい。また、関数ｆ３は、Ｎ１よりも少しだけ小さな値をＮ３として返すように定義されていてもよい。すると、ファイル中の、ある限られた長さの部分文字列に、クリップボードデータ中のほぼすべての形態素が現れているときに、「クリップボードデータに類似する類似データが、ファイルに含まれている」と見なされる。
【００７０】
また、ある種の曖昧検索では、表記の揺れを吸収するために、１つの用語についての異なる複数の表記同士を登録した辞書が使われることがある。上記の所定の関係は、例えば、このような辞書により定義される関係であってもよい。つまり、上記の所定の関係は、「２つの文字列は、１つの用語についての異なる複数の表記同士として、辞書に登録されている」という関係であってもよい。
【００７１】
ところで、第２のファイルのデータを再利用して第１のファイルを編集するユーザは、第２のファイル自体は変更しない場合も多い。よって、上記の条件（４ａ）と（４ｂ）のように、第１のファイルに関してのみ、類似データが考慮に入れられてもよい。
【００７２】
しかし、場合によっては、クリップボードデータが第２のファイルからコピーされてから、ファイル管理コンピュータが関連づけ処理を実行するまでのタイムラグの間に、第２のファイルが編集される可能性もある。よって、ファイル管理コンピュータは、第２のファイルに関しても類似データを考慮に入れてもよい。すなわち、ファイル管理コンピュータは、以下の条件（５ａ）と（５ｂ）がともに成り立つ場合に、第１のファイルと第２のファイルを関連づけてもよい。
【００７３】
（５ａ）取得されたクリップボードデータ自体を第１のファイルが含むか、または、上記の所定の関係が当該クリップボードデータとの間で成立する第１の類似データを、第１のファイルが含む。
（５ｂ）取得されたクリップボードデータ自体を第２のファイルが含むか、または、上記の所定の関係が当該クリップボードデータとの間で成立する第２の類似データを、第２のファイルが含む。
【００７４】
ところで、ファイル管理コンピュータがクリップボードデータと時刻情報を取得する処理は、例えば、以下の項目（６ａ）に示す第１の要求を契機として実行されてもよいし、項目（６ｂ）に示す第２の要求を契機として実行されてもよい。
【００７５】
（６ａ）第１のファイルを保存（save）して閉じる（close）ための第１の要求。
（６ｂ）第１のファイルを開いたままで保存するための第２の要求。
【００７６】
第１と第２の要求は、いずれも、ユーザ操作に応じてアプリケーションが発行する要求により、ファイル管理コンピュータが受信する要求である。具体的には、第１と第２の要求は、いずれも、アプリケーションからファイル管理コンピュータへの要求であってもよい。
【００７７】
例えば、ユーザが第１のファイルを編集した後に、第１のファイルを保存するための操作を行うことなく第１のファイルを閉じようとする場合がある。この場合、アプリケーションは、第１のファイルを保存するか否かをユーザに選択させるためのダイアログを表示してもよい。そして、第１のファイルを保存することをユーザが選択すると、アプリケーションは、第１の要求を発行し、それによりファイル管理コンピュータは第１のファイルを保存して閉じてもよい。
【００７８】
ところで、上記のとおり、第１のファイルが閉じられるよりも前の期間の少なくとも一部においてクリップボード６に記憶されていたデータが、ファイル管理コンピュータによりクリップボードデータとして取得される。より具体的には、ファイル管理コンピュータは、第１のファイルが閉じられるよりも前の期間のうちの特定の一部の期間を指定して、指定した期間の少なくとも一部においてクリップボード６に記憶されていたデータを取得してもよい。
【００７９】
例えば、第１ファイルは既存のファイルでもよい。ファイル管理コンピュータは、既存のファイルを開くための要求を監視することにより、既存のファイルが開かれた時刻を認識することができる。よって、この場合、ファイル管理コンピュータは、第１のファイルが開かれてから、第１または第２の要求の受領までの期間を認識することができる。したがって、この場合、ファイル管理コンピュータは、当該期間の少なくとも一部においてはクリップボード６に記憶されていたデータを、クリップボードデータとして取得してもよい。
【００８０】
例えば、図１のファイル１が既存のファイルであるものとし、図１の時刻Ｔ７に第１の要求が発行されたとする。この場合、時刻Ｔ２から時刻Ｔ７までの期間の少なくとも一部においてはクリップボード６に記憶されていたデータ（つまりデータＤ１、Ｄ２、Ｄ３、およびＤ４）が、クリップボードデータとして取得されてもよい。具体的には、ファイル管理コンピュータは、時刻Ｔ７における第１の要求を契機として、データＤ１、Ｄ２、Ｄ３、およびＤ４のそれぞれをクリップボードデータとして取得してもよい。
【００８１】
また、例えば、図１のファイル１が既存のファイルであるものとし、図１の時刻Ｔ４に第２の要求が発行されたとする。この場合、時刻Ｔ２から時刻Ｔ４までの期間の少なくとも一部においてはクリップボード６に記憶されていたデータ（つまりデータＤ１とＤ２）が、クリップボードデータとして取得されてもよい。具体的には、ファイル管理コンピュータは、時刻Ｔ４における第２の要求を契機として、データＤ１とＤ２のそれぞれをクリップボードデータとして取得してもよい。
【００８２】
なお、第１のファイルが既存のファイルではない場合もある。つまり、第１のファイルが新規作成される場合もある。アプリケーション等の実装にもよるが、第１のファイルが保存されるまでは、第１のファイルを作成したアプリケーションの外部（例えばＯＳ）からは、新規作成された第１のファイルの存在が認識されないことがある。
【００８３】
第１のファイルは、ユーザの操作に応じて新規作成されてもよい。しかし、第１のファイルを新規作成するための操作をユーザがいつ行ったのかは、第１のファイルを作成したアプリケーションの外部からは、認識されないことがある。
【００８４】
一方、第１のファイルを新規作成するための操作をユーザが行った後は、第１のファイルにクリップボード６からデータがペーストされ得る。よって、第１のファイルを作成したアプリケーションの外部からは第１のファイルの存在が認識されない期間中であっても、第２のファイルから第１のファイルへとデータがコピー・アンド・ペーストされる可能性はある。
【００８５】
そこで、第１のファイルが新規作成されたファイルである場合には、ファイル管理コンピュータは、「第１または第２の要求の受領から所定時間だけ前の時刻に、第１のファイルを新規作成するための操作が行われた」と見なしてもよい。ファイル管理コンピュータは、少なくとも第１または第２の要求を受領する際には、第１のファイルの存在を認識することができる。よって、ファイル管理コンピュータは、第１のファイルを新規作成するための操作が行われた時点を、以上のように所定時間に基づいて推定してもよい。
【００８６】
そして、ファイル管理コンピュータは、第１または第２の要求の受領から所定時間以内の過去の期間の少なくとも一部においてクリップボード６に記憶されていたデータを、クリップボードデータとして取得してもよい。
【００８７】
例えば、図１のファイル１が新規作成されたファイルであるものとし、図１の時刻Ｔ４に第２の要求が発行されたとする。また、時刻Ｔ４よりも所定時間だけ前の時刻は、具体的には時刻Ｔ２であるものとする。
【００８８】
この場合、第２の要求の受領から所定時間以内の過去の期間とは、時刻Ｔ２から時刻Ｔ４までの期間のことである。よって、ファイル管理コンピュータは、時刻Ｔ２から時刻Ｔ４までの期間の少なくとも一部においてクリップボード６に記憶されていたデータ（つまりデータＤ１とＤ２）を、クリップボードデータとして取得してもよい。
【００８９】
具体的には、ファイル管理コンピュータは、時刻Ｔ４における第２の要求を契機として、データＤ１とＤ２のそれぞれをクリップボードデータとして取得してもよい。ファイル１が実際にアプリケーション上で新規作成された時刻は、時刻Ｔ２よりも後かもしれないが、ファイル管理コンピュータは、以上のようにして「ファイル１が時刻Ｔ２に新規作成された」と推定し、推定に基づいてデータＤ１とＤ２を取得する。
【００９０】
ところで、上記の項目（６ａ）〜（６ｂ）から分かるとおり、第１のファイルが開かれている間に、第２の要求がまったく発行されない場合もあり得るし、１回だけ発行される場合もあり得るし、２回以上発行される場合もあり得る。そして、ファイル管理コンピュータは、第２の要求が発行されるたびに、クリップボードデータを取得してもよい。
【００９１】
１回以上第２の要求が発行された後で再度第２の要求が発行された場合、ファイル管理コンピュータは、以下のように動作してもよい。すなわち、ファイル管理コンピュータは、直近から２番目の第２の要求の受領から、直近の第２の要求の受領までの期間の少なくとも一部においてクリップボード６に記憶されていたデータを、クリップボードデータとして取得してもよい。
【００９２】
また、第１のファイルが開かれている間に、１回以上第２の要求が発行された後で第１の要求が発行されることもあり得る。例えば、図１のファイル１が開かれている間に、時刻Ｔ４において第２の要求が発行され、その後の時刻Ｔ７において第１の要求が発行され、第１の要求に応じて時刻Ｔ７にファイル１が閉じられる場合があり得る。
【００９３】
このように、１回以上第２の要求が発行された後で第１の要求が発行される場合、ファイル管理コンピュータは、以下のように動作してもよい。すなわち、ファイル管理コンピュータは、直近の第２の要求の受領から第１の要求の受領までの期間の少なくとも一部においてクリップボード６に記憶されていたデータを、クリップボードデータとして取得してもよい。
【００９４】
例えば、ファイル管理コンピュータは、時刻Ｔ７における第１の要求を契機として、時刻Ｔ４から時刻Ｔ７までの期間の少なくとも一部においてクリップボード６に記憶されていたデータを、クリップボードデータとして取得してもよい。つまり、ファイル管理コンピュータは、データＤ２、Ｄ３、Ｄ４の各々を取得してもよい。
【００９５】
ところで、上記のとおり、ファイル管理コンピュータは、所定の条件（例えば条件（５ａ）と（５ｂ）の双方）が成り立つ場合に、第１のファイルと第２のファイルを関連づける。この関連づけの処理は、以下の３つの情報（７ａ）〜（７ｃ）を含む関連づけ情報を記憶装置に記憶する処理を含んでいてもよい。
【００９６】
（７ａ）取得したクリップボードデータと、条件（５ａ）に関して述べた第１の類似データと、条件（５ｂ）に関して述べた第２の類似データのうち少なくとも１つ。
（７ｂ）第１のファイルを識別する第１の識別情報。
（７ｃ）第２のファイルを識別する第２の識別情報。
【００９７】
なお、単に第１のファイルと第２のファイルを関連づけるためには、情報（７ａ）はなくても構わない。しかし、第１のファイルと第２のファイルがどのように関連しているのかをユーザに提示して、ユーザにとっての利便性を高めるためには、情報（７ｂ）と（７ｃ）だけでなく、情報（７ａ）も使うことが望ましい。
【００９８】
なお、ファイルを識別する識別情報は、ファイルシステムの実装に応じて異なる。例えば、ＵＮＣ（Universal Naming Convention）形式のパスが識別情報として使われてもよいし、ファイル管理コンピュータ上のフルパスが識別情報として使われてもよい。もちろん、ＩＤ（identification）番号など、その他の情報が識別情報として使われてもよい。
【００９９】
３つの情報（７ａ）〜（７ｃ）を含む関連づけ情報が記憶装置に記憶されている場合、ファイル管理コンピュータは、以下のようにしてユーザに対してファイル同士の関連性についての情報を提示してもよい。
【０１００】
具体的には、ファイル管理コンピュータは、第１のファイルと関係のあるファイルを問い合わせる入力を受け付けてもよい。例えば、当該入力は、キーボード等の入力装置を介して、ユーザからファイル管理コンピュータに与えられてもよい。また、当該問い合わせは、第１のファイルを識別する第１の識別情報を含んでいてもよい。
【０１０１】
当該入力に応じて、ファイル管理コンピュータは、記憶装置を検索し、関連づけ情報のうち少なくとも第２の識別情報を出力してもよい。例えば、ファイル管理コンピュータは、第２の識別情報自体をディスプレイ上に表示してもよいし、第２の識別情報を含むハイパーリンクを生成し、当該ハイパーリンクを含むページをディスプレイ上に表示してもよい。
【０１０２】
また、ファイル管理コンピュータは、任意の識別情報を含む問い合わせを受け付けてもよい。ファイル管理コンピュータは、問い合わせに含まれる識別情報により識別されるファイルが上記の第２のファイルである場合には、関連づけ情報のうち少なくとも第１の識別情報を出力してもよい。
【０１０３】
つまり、ファイル管理コンピュータは、上記の関連づけ情報を用いて、第１のファイル（つまりデータがペーストされた先のファイル）から第２のファイル（つまりデータのコピー元のファイル）を引いて（ルックアップして）もよい。逆に、ファイル管理コンピュータは、上記の関連づけ情報を用いて、第２のファイルから第１のファイルを引いてもよい。
【０１０４】
ところで、上記のとおり、ファイル管理コンピュータは、クライアントサーバシステムにおけるサーバコンピュータであってもよいし、スタンドアロンコンピュータであってもよい。
【０１０５】
具体的には、ファイル管理コンピュータがサーバコンピュータである場合、ファイル管理コンピュータは、クライアントコンピュータとしての編集コンピュータと、ネットワークを介して接続される。この場合、第１のファイルは、具体的には、編集コンピュータのユーザに書き込みアクセスが許可されたファイルのうちの１つである。
【０１０６】
また、この場合、クリップボード６は、具体的には、編集コンピュータ上のローカルなクリップボードである。よって、編集コンピュータがクリップボード６の更新を監視して記録する。
【０１０７】
そして、ファイル管理コンピュータがサーバコンピュータである場合、ファイル管理コンピュータは、下記のファイル（８ａ）の中から、下記のファイル（８ｂ）を第２のファイルとして特定する。
【０１０８】
（８ａ）ファイル管理コンピュータが管理する複数のファイルのうちの少なくとも一部のファイルであって、具体的には、編集コンピュータのユーザに対して読み出しアクセスが許可されているファイル。
（８ｂ）ファイル管理コンピュータがクリップボードデータとともに取得した時刻情報の示す時刻において、編集コンピュータにより開かれていたファイル。
【０１０９】
そして、ファイル管理コンピュータがサーバコンピュータである場合、ファイル管理コンピュータは、編集コンピュータにクリップボードデータと時刻情報を要求することにより、クリップボードデータと時刻情報を取得する。換言すれば、編集コンピュータは、記録した監視結果（すなわちクリップボードデータと時刻情報）を、ファイル管理コンピュータからの要求に応じて、ファイル管理コンピュータに送信する。
【０１１０】
以上のようなクライアントサーバシステムとは逆に、ファイル管理コンピュータによってスタンドアロンシステムが実現されてもよい。この場合、クリップボード６は、具体的には、ファイル管理コンピュータ自体のクリップボードである。
【０１１１】
したがって、この場合、ファイル管理コンピュータ自体がクリップボード６の更新を監視する。そして、クリップボード６に新規データが書き込まれるたびに、ファイル管理コンピュータは、当該新規データと、当該新規データがクリップボード６に書き込まれた時刻を示す書き込み時刻情報との組を記憶装置に記憶する。したがって、ファイル管理コンピュータは、記憶装置からクリップボードデータと時刻情報を読み出すことにより、クリップボードデータと時刻情報取得することができる。
【０１１２】
なお、クリップボードデータは、テキストデータのこともあるし、画像データのこともあるし、ベクタオブジェクトデータのこともある。しかし、以下では、クリップボードデータがテキストデータである場合の実施形態について主に説明する。
【０１１３】
さて、図１を参照して説明した以上の事柄は、第１実施形態と第２実施形態のどちらにも当てはまる。続いて、図２〜１５を参照して、第１実施形態について説明する。
図２は、第１実施形態のシステム構成図である。図２に示すとおり、第１実施形態では、クライアントサーバシステムが利用される。
【０１１４】
具体的には、図２のシステム１００は、サーバ１１０とクライアント１３０を含む。サーバ１１０は上記ファイル管理コンピュータの例であり、クライアント１３０は上記編集コンピュータの例である。
【０１１５】
サーバ１１０とクライアント１３０は、ネットワーク１５０を介して接続されている。図２には１台のクライアント１３０しか図示されていないが、サーバ１１０にはネットワーク１５０を介して複数台のクライアント１３０が接続されていてもよい。サーバ１１０はクライアント１３０に対してファイルサーバとしても機能する。
【０１１６】
サーバ１１０は、ファイル記憶部１１１と、通信制御部１１２と、ファイル送受信部１１３と、ログ記憶部１１４と、ログ管理部１１５と、時計１１６を含む。サーバ１１０はさらに、クリップボードデータ受信部１１７と、抽出部１１８と、比較部１１９と、リンク生成部１２０と、リンク記憶部１２１を含む。
【０１１７】
また、クライアント１３０は、通信制御部１３１と、ファイル送受信部１３２を含む。図２には、クライアント１３０上で２つのアプリケーション１３３と１３４が動作する場合が例示されているが、クライアント１３０上で動作するアプリケーションの数は任意である。クライアント１３０はさらに、クリップボード１３５と、監視部１３６と、時計１３７と、クリップボードデータ記憶部１３８と、抽出部１３９と、クリップボードデータ送信部１４０を含む。
【０１１８】
ファイル記憶部１１１は、サーバ１１０が管理する複数のファイルを記憶する。換言すれば、ファイル記憶部１１１は、サーバ１１０に接続された各クライアント１３０が使用するファイルを記憶する。ファイル記憶部１１１上では、例えば、クライアント１３０を使用するユーザのアカウントに対応づけられたディレクトリごとに、ファイルが分類されて記憶されていてもよい。
【０１１９】
なお、ファイルの種類は任意である。例えば、プレインテキストファイル、文書作成ソフトウェア・表計算ソフトウェア・プレゼンテーションソフトウェアなどの所定のアプリケーションのフォーマットのファイル、画像ファイルなど、様々な種類のファイルが、ファイル記憶部１１１に記憶されていてもよい。
【０１２０】
通信制御部１１２は、例えば、ＴＣＰ／ＩＰ（Transmission Control Protocol/Internet Protocol）などの適宜の通信プロトコルによる通信を制御する。すなわち、通信制御部１１２は、サーバ１１０からクライアント１３０へのデータの送信（具体的には、ファイル送受信部１１３またはクリップボードデータ受信部１１７からの要求に応じた送信）を制御する。また、通信制御部１１２は、クライアント１３０からデータを受信し、受信したデータに含まれる情報（例えばヘッダ情報）に応じて、受信したデータを適宜のモジュール（つまりファイル送受信部１１３またはクリップボードデータ受信部１１７）に出力する。
【０１２１】
ところで以下では説明の便宜上、各種の要求を以下のように呼ぶことにする。
（９ａ）ファイルを開くための要求を、「オープン要求」という。
（９ｂ）既に開いているファイルを、保存せずに、そのまま閉じるための要求を、「クローズ要求」という。
（９ｃ）既に開いているファイルを、開いたまま、保存するための要求を、「セーブ要求」という。
（９ｄ）既に開いているファイルを、保存して閉じるための要求を、「セーブ・クローズ要求」という。
【０１２２】
例えば、上記の項目（６ａ）と（６ｂ）に示した第１と第２の要求は、それぞれ、セーブ・クローズ要求とセーブ要求である。
また、ファイルを操作するための要求にはいくつかのレベルがある。例えば、以下のような３つのレベルの要求（１０ａ）〜（１０ｃ）があってもよい。しかし、説明の簡単化のため、文脈から明らかな場合には、レベルを区別せずに、単に「オープン要求」などと述べることがある。
【０１２３】
（１０ａ）ユーザが入力装置を用いて行う何らかの操作（例えば、「ファイルを開く」というメニューを選択する操作など）。
（１０ｂ）当該操作（１０ａ）に応じてクライアント１３０が実行する何らかの処理（例えば、ファイルを開くためのＡＰＩ関数の呼び出しなど）。
（１０ｃ）当該処理（１０ｂ）に応じてクライアント１３０からサーバ１１０へ送信されるデータ（例えば、ネットワークファイルシステム用の所定のプロトコルにしたがってクライアント１３０からサーバ１１０へ送られる、ファイルを開くための要求など）。
【０１２４】
さて、ファイル送受信部１１３は、クライアント１３０からのオープン要求を、通信制御部１１２を介して受け取る。オープン要求には、開く対象のファイルを識別する識別情報（例えば、ファイル記憶部１１１上のフルパス）が含まれる。
【０１２５】
ファイル送受信部１１３は、オープン要求に応じて、要求されたファイルをファイル記憶部１１１から読み出す。すると、ファイル送受信部１１３は、読み出したファイルのデータをクライアント１３０に送信するよう、通信制御部１１２に命令する。その結果、要求されたファイルのデータは、通信制御部１１２とネットワーク１５０を介してクライアント１３０に送信される。以上のようにして、クライアント１３０上でファイルを開くことが可能となる。
【０１２６】
より正確には、ファイル送受信部１１３は、「ファイルを要求したクライアント１３０のユーザが、当該ファイルに対する読み出しアクセスを許可されているか」ということをチェックする。そして、読み出しアクセスが許可されている場合に、ファイル送受信部１１３は、上記のようにしてファイルのデータをクライアント１３０に送信する。
【０１２７】
また、ファイル送受信部１１３は、クライアント１３０からのクローズ要求を、通信制御部１１２を介して受け取る。そして、ファイル送受信部１１３は、クローズ要求に応じて、クローズ要求において指定されているファイル（すなわちオープン中のファイル）を閉じる。
【０１２８】
また、ファイル送受信部１１３は、クライアント１３０からのセーブ要求を、通信制御部１１２を介して受け取る。セーブ要求は、保存する対象のファイルのデータ（例えば、クライアント１３０上で編集されたファイルのデータ）を含む。ファイル送受信部１１３は、セーブ要求に含まれるデータをファイル記憶部１１１に保存する。
【０１２９】
より具体的には、セーブ要求には、ファイル記憶部１１１上の既存のファイルを識別する識別情報と、当該ファイルのデータが含まれていてもよい。この場合、ファイル送受信部１１３は、ファイル記憶部１１１上の当該既存のファイルのデータを、セーブ要求に含まれるデータで上書きしてもよい。それにより、既存のファイルが新たに保存しなおされる。
【０１３０】
より正確には、ファイル送受信部１１３は、「ファイルの保存を要求したクライアント１３０のユーザが、当該ファイルに対する書き込みアクセスを許可されているか」ということをチェックする。そして、書き込みアクセスが許可されている場合に、ファイル送受信部１１３は、上記のようにしてファイルをファイル記憶部１１１に保存する。
【０１３１】
あるいは、セーブ要求に含まれる識別情報で識別されるファイルが、ファイル記憶部１１１上に存在しない場合もある。例えば、ユーザがクライアント１３０のアプリケーション１３３または１３４を用いて新規ファイルを作成し、新規ファイルを保存しようとする場合、セーブ要求に含まれる識別情報で識別される新規ファイルは、ファイル記憶部１１１上に存在しない。この場合、ファイル送受信部１１３は、セーブ要求に含まれる新規ファイルのデータを新たにファイル記憶部１１１上に保存する。
【０１３２】
なお、ファイル送受信部１１３は、新規ファイルの保存の際にも、適宜のアクセス制御を行う。ファイル送受信部１１３は、例えば、「新規ファイルを保存する先としてセーブ要求に指定されているディレクトリに対する書き込み権限を、ユーザが有しているか」ということをチェックしてもよい。
【０１３３】
また、ファイル送受信部１１３は、クライアント１３０からのセーブ・クローズ要求を、通信制御部１１２を介して受け取る。そして、ファイル送受信部１１３は、セーブ・クローズ要求に応じて、セーブ要求を受信した場合と同様に、要求元のユーザの書き込みアクセス権に応じて、ファイルを保存するか否かを決定する。もしユーザに書き込みアクセスが許可されていれば、ファイル送受信部１１３は、指定されたファイルをファイル記憶部１１１に保存する。その後、ファイル送受信部１１３は、クローズ要求を受信した場合と同様にして、ファイルを閉じる。
【０１３４】
ファイル送受信部１１３は、以上のようにして、クライアント１３０からの要求に応じてファイルを操作する。また、ファイル送受信部１１３によるファイル操作は、ログに記録される。
【０１３５】
具体的には、当該ログは、ログ記憶部１１４に記憶される。ログの具体例は図５とともに後述する。
また、ログは、具体的にはログ管理部１１５により管理される。すなわち、ファイル送受信部１１３は、クライアント１３０からの要求に応じてファイルを操作する（例えば、開く、閉じる、保存する、などの操作を行う）たびに、操作種別と、操作したファイルの識別情報をログ管理部１１５に通知する。より詳しくは、ファイル送受信部１１３は、ファイル操作を要求したユーザを識別する識別情報（例えばユーザ名）も、ログ管理部１１５に通知する。
【０１３６】
ログ管理部１１５は、通知された操作種別、ファイル識別情報、およびユーザ識別情報に応じて、ログ記憶部１１４上のログに新たなエントリを追加する場合もあるし、ログ内の既存のエントリを更新する場合もある。
【０１３７】
なお、ログには、ファイルが操作された時刻も記録される。ログ管理部１１５は、時計１１６を参照することで現在時刻を認識し、現在時刻をログ中の適宜のフィールドに記録する。
【０１３８】
ところで、図１に関して説明したとおり、ファイル管理コンピュータ（図２ではサーバ１１０に相当）は、ファイルが閉じられるよりも前の期間の少なくとも一部においてクリップボード１３５に記憶されていたクリップボードデータを取得する。第１実施形態では、サーバ１１０は、クライアント１３０からネットワーク１５０を介してクリップボードデータを取得する。
【０１３９】
具体的には、サーバ１１０内のクリップボードデータ受信部１１７が、通信制御部１１２を介して、クライアント１３０にクリップボードデータを要求する。そして、クリップボードデータ受信部１１７は、通信制御部１１２を介して、クライアント１３０からクリップボードデータを受信する。より具体的には、各クリップボードデータは、当該クリップボードデータがクリップボード１３５に書き込まれた時刻を示す時刻情報と対応づけられており、クリップボードデータ受信部１１７は、クリップボードデータとともに時刻情報も取得する。クリップボードデータと時刻情報を取得する取得手段は、例えば以上のように、クリップボードデータ受信部１１７と通信制御部１１２によって実現されてもよい。
【０１４０】
なお、詳しくは図１１〜１３とともに後述するとおり、第１実施形態では、上記の「ファイルが閉じられるよりも前の期間」の一部または全部の期間を、ログ管理部１１５がクリップボードデータ受信部１１７に指定する。そして、クリップボードデータ受信部１１７は、指定された期間内の少なくとも一部においてクリップボード１３５に記憶されていたクリップボードデータを送信するよう、クライアント１３０に要求する。
【０１４１】
例えば、図１の例では、ファイル１が閉じられるよりも前の期間は、時刻Ｔ７よりも前の期間である。時刻Ｔ４でのセーブ要求に応じて、ログ管理部１１５は、時刻Ｔ２から時刻Ｔ４までの期間をクリップボードデータ受信部１１７に指定してもよい。また、時刻Ｔ７でのセーブ・クローズ要求に応じて、ログ管理部１１５は、時刻Ｔ４から時刻Ｔ７までの期間をクリップボードデータ受信部１１７に指定してもよい。後述のモードによっては、ログ管理部１１５は、時刻Ｔ７でのセーブ・クローズ要求に応じて、時刻Ｔ２から時刻Ｔ７までの期間を指定してもよい。
【０１４２】
いずれにせよ、クリップボードデータ受信部１１７は、指定された期間内の少なくとも一部においてクリップボード１３５に記憶されていたクリップボードデータを送信するよう、クライアント１３０に要求する。また、上記のとおりログ管理部１１５がクリップボードデータ受信部１１７に指定する期間は、ファイルが閉じられるよりも前の期間の一部または全部である。したがって、クリップボードデータ受信部１１７が受信するクリップボードデータは、上記のとおり「ファイルが閉じられるよりも前の期間の少なくとも一部においてクリップボード１３５に記憶されていたクリップボードデータ」である。
【０１４３】
ところで、クリップボードデータ受信部１１７は、上記のようにしてクライアント１３０から取得したクリップボードデータを、比較部１１９に出力する。比較部１１９は、クリップボードデータ受信部１１７から入力される各クリップボードデータを、抽出部１１８から出力されるテキスト情報と比較する。
【０１４４】
そして、比較結果に応じて、リンク生成部１２０が、ファイル同士を関連づける関連づけ情報（具体的には後述のリンクテーブル３０３の個々のエントリ）を生成する。リンク生成部１２０は、生成した関連づけ情報をリンク記憶部１２１に記憶する。
【０１４５】
つまり、ファイル同士を関連づける関連づけ手段は、例えば、抽出部１１８と比較部１１９とリンク生成部１２０によって実現されてもよい。より詳しくは、抽出部１１８と比較部１１９は以下のように動作する。
【０１４６】
クローズ要求とセーブ要求とセーブ・クローズ要求のいずれかに応じて、ファイル送受信部１１３がファイルを操作すると、当該ファイルを識別する識別情報がログ管理部１１５に通知される。ログ管理部１１５は、ファイル送受信部１１３から通知された識別情報を、抽出部１１８に通知する。
【０１４７】
すると、抽出部１１８は、通知された識別情報により識別されるファイルを、ファイル記憶部１１１から読み出す。抽出部１１８は、さらに、読み出したファイルからテキスト情報を抽出し、抽出したテキスト情報を比較部１１９に出力する。
【０１４８】
また、比較部１１９は、クリップボードデータ受信部１１７から得たクリップボードデータに対応づけられている時刻情報を、抽出部１１８に通知する。すると、抽出部１１８は、当該時刻情報により示される時刻に開かれていたファイルを、ログ管理部１１５に問い合わせる。
【０１４９】
ログ管理部１１５は、当該時刻情報により示される時刻に開かれていたファイルを特定する特定手段の具体例である。抽出部１１８は、当該時刻情報により示される時刻に開かれていたファイルを、ログ管理部１１５への問い合わせを介して認識することができる。
【０１５０】
なお、特定されるファイルの数は、０のこともあるし、１のこともあるし、２以上のこともある。抽出部１１８は、特定された各ファイルをファイル記憶部１１１から読み出し、読み出したファイルからテキスト情報を抽出し、抽出したテキスト情報を比較部１１９に出力する。
【０１５１】
比較部１１９は、抽出部１１８から以上のようにして出力されるテキスト情報を、クリップボードデータ受信部１１７から出力されるクリップボードデータと比較する。比較部１１９が行う処理の詳細は、図１４〜１５とともに後述する。
【０１５２】
なお、比較部１１９は、上記の条件（３ａ）と（３ｂ）がともに成り立つか否かを判断してもよいし、上記の条件（４ａ）と（４ｂ）がともに成り立つか否かを判断してもよいし、上記の条件（５ａ）と（５ｂ）がともに成り立つか否かを判断してもよい。詳しくは後述するとおり、第１実施形態では、説明の便宜上、比較部１１９は、条件（４ａ）と（４ｂ）がともに成り立つか否かを判断するものとする。
【０１５３】
さて、クライアント１３０の通信制御部１３１は、例えば、ＴＣＰ／ＩＰなどの適宜の通信プロトコルによる通信を制御する。具体的には、通信制御部１３１は、クライアント１３０からサーバ１１０へのデータの送信（具体的には、ファイル送受信部１３２またはクリップボードデータ送信部１４０からの要求に応じた送信）を制御する。また、通信制御部１３１は、サーバ１１０からデータを受信し、受信したデータに含まれる情報（例えばヘッダ情報）に応じて、受信したデータを適宜のモジュール（つまりファイル送受信部１３２またはクリップボードデータ送信部１４０）に出力する。
【０１５４】
ファイル送受信部１３２は、アプリケーション１３３または１３４からファイル操作要求を受け付ける。アプリケーション１３３または１３４からファイル送受信部１３２に対して出されるファイル操作要求は、具体的には、上記の３つのレベルの要求（１０ａ）〜（１０ｃ）のうち、ＡＰＩ関数の呼び出しなどにより実現される要求（１０ｂ）である。
【０１５５】
ファイル送受信部１３２は、アプリケーション１３３または１３４から受け付けたファイル操作要求に応じて、通信制御部１３１を介して、サーバ１１０にファイル操作要求を送信する。ファイル送受信部１３２が送信するファイル操作要求は、要求（１０ｃ）に相当する。
【０１５６】
そして、ファイル送受信部１３２は、通信制御部１３１を介して、サーバ１１０から、ファイル操作要求に対する応答を受信する。さらに、ファイル送受信部１３２は、受信した応答を、要求元のアプリケーション（例えばアプリケーション１３３または１３４）に返す。
【０１５７】
例えば、ファイル送受信部１３２は、オープン要求に対する応答として、ファイルのデータを受信することもある。ファイル送受信部１３２は、他の種類の要求に対する応答として、ＡＣＫ（acknowledgement）またはエラーコードを受信することもある。つまり、サーバ１１０のファイル送受信部１１３は、要求の種類によっては、ＡＣＫまたはエラーコードを返してもよい。
【０１５８】
クリップボード１３５は、クライアント１３０のＯＳによって提供される記憶領域であり、図１のクリップボード６の具体例である。アプリケーション１３３または１３４上でコピー操作またはカット操作が実行されるたびに、クリップボード１３５には新たなデータが書き込まれる。また、アプリケーション１３３または１３４上でペースト操作が実行されるたびに、クリップボード１３５上のデータをアプリケーション１３３または１３４が読み出す。クリップボード１３５へのデータの書き込みと、クリップボード１３５からのデータの読み出しは、例えば、ＯＳにより提供されるＡＰＩ関数を介して行われてもよい。
【０１５９】
監視部１３６は、クリップボード１３５の更新を監視する。例えば、監視部１３６は、メモリ常駐プログラムにより実現されるモジュールであってもよい。例えば、ある種のＯＳは、クリップボード１３５の更新を通知するためのＡＰＩ関数を提供する。監視部１３６は、当該ＡＰＩ関数を利用して、クリップボード１３５の更新を通知するメッセージを受け取ってもよく、当該メッセージを使ってクリップボード１３５の更新を監視してもよい。
【０１６０】
監視部１３６は、クリップボード１３５の更新を検出すると、時計１３７を参照して現在時刻を取得する。そして、監視部１３６は、新たにクリップボード１３５に書き込まれたデータを、取得した現在時刻に対応づけて、クリップボードデータ記憶部１３８に記憶する。
【０１６１】
他方、上記のとおりサーバ１１０のクリップボードデータ受信部１１７は、クリップボードデータを送信するようクライアント１３０に要求することがある。要求は、具体的には、通信制御部１３１を介してクリップボードデータ送信部１４０に受信される。クリップボードデータ送信部１４０は、受信した要求を抽出部１３９に通知する。
【０１６２】
すると、抽出部１３９は、要求に応じて、クリップボードデータ記憶部１３８から、クリップボードデータと時刻情報を抽出する。要求に指定されている期間と、クリップボード１３５が更新されたタイミングに応じて、抽出されるクリップボードデータと時刻情報のペアの数は、０の場合もあるし、１の場合もあるし、２以上の場合もある。
【０１６３】
抽出部１３９は、抽出したクリップボードデータと時刻情報を、クリップボードデータ送信部１４０に出力する。すると、クリップボードデータ送信部１４０は、クリップボードデータと時刻情報を、通信制御部１３１を介してサーバ１１０に返す。
【０１６４】
さて、図３は、ハードウェア構成例を示す図である。図３には、ネットワーク２２０を介して互いに接続されたコンピュータ２００と２４０が例示されている。ネットワーク２２０には、さらに別のコンピュータ２６０が接続されていてもよい。これらのコンピュータ２００、２４０、および２６０は、いずれも一種の情報処理装置である。
【０１６５】
例えば、第１実施形態に関して図２に示したサーバ１１０が、図３のコンピュータ２００により実現されてもよい。つまり、コンピュータ２００はファイルサーバであってもよい。
【０１６６】
この場合、図２のクライアント１３０は、図３のコンピュータ２４０であってもよい。そして、コンピュータ２６０がもう１台のクライアント１３０として動作してもよい。クライアント１３０として動作するコンピュータ２４０と２６０は、具体的には、デスクトップ型のＰＣ（Personal Computer）もよいし、ノート型のＰＣでもよいし、タブレット端末でもよい。
【０１６７】
あるいは、第２実施形態に関して後述する図１６のコンピュータ４００が、図３のコンピュータ２００により実現されてもよい。この場合、コンピュータ２００がユーザ端末（例えば、デスクトップ型のＰＣ、ノート型のＰＣ、タブレット端末など）であってもよい。
【０１６８】
ネットワーク２２０の種類は任意である。ネットワーク２２０は、例えば、ＬＡＮ（Local Area Network）、ＷＡＮ（Wide Area Network）、インターネット、および、それらの組み合わせのいずれであってもよい。また、ネットワーク２２０は、有線ネットワークでもよく、無線ネットワークでもよく、両者の組み合わせであってもよい。
【０１６９】
図３のコンピュータ２００は、ＣＰＵ（Central Processing Unit）２０１と、ＲＯＭ（Read Only Memory）２０２と、ＲＡＭ（Random Access Memory）２０３と、通信インタフェイス２０４を有する。コンピュータ２００はさらに、入力装置２０５と、出力装置２０６と、記憶装置２０７と、コンピュータ読み取り可能な記憶媒体２１０の駆動装置２０８を有する。コンピュータ２００の各構成要素は、バス２０９によって互いに接続されている。
【０１７０】
ＣＰＵ２０１は、シングルコアまたはマルチコアのプロセッサである。コンピュータ２００は、複数のプロセッサを有していてもよい。例えば、コンピュータ２００は、２台以上のＣＰＵ２０１を有していてもよい。ＣＰＵ２０１は、プログラムをＲＡＭ２０３にロードし、ＲＡＭ２０３をワーキングエリアとしても利用しながら、プログラムを実行する。
【０１７１】
通信インタフェイス２０４は、例えば、有線ＬＡＮインタフェイス、無線ＬＡＮインタフェイス、またはその組み合わせである。コンピュータ２００は、通信インタフェイス２０４を介してネットワーク２２０に接続される。
【０１７２】
通信インタフェイス２０４は、具体的には、外付けのＮＩＣ（Network Interface Card）でもよいし、オンボード型のネットワークインタフェイスコントローラでもよい。例えば、通信インタフェイス２０４は、物理層の処理を行う「ＰＨＹチップ」と呼ばれる回路と、ＭＡＣ（Media Access Control）副層の処理を行う「ＭＡＣチップ」と呼ばれる回路を含んでいてもよい。
【０１７３】
入力装置２０５は、例えば、キーボード、ポインティングデバイス、またはその組み合わせである。ポインティングデバイスは、例えば、マウスでもよいしタッチパッドでもよいしタッチスクリーンでもよい。出力装置２０６は、ディスプレイ、スピーカ、またはその組み合わせである。ディスプレイはタッチスクリーンであってもよい。
【０１７４】
記憶装置２０７は、例えばＨＤＤ（Hard Disk Drive）やＳＳＤ（Solid-State Drive）などの、不揮発性の記憶装置である。また、記憶媒体２１０の例は、ＣＤ（Compact Disc）やＤＶＤ（Digital Versatile Disk）などの光ディスク、光磁気ディスク、磁気ディスク、フラッシュメモリなどの半導体メモリカードなどである。
【０１７５】
ＣＰＵ２０１が実行するプログラムは、予めＲＯＭ２０２または記憶装置２０７にインストールされていてもよい。あるいは、プログラムは、記憶媒体２１０に格納されて提供され、記憶媒体２１０から駆動装置２０８により読み取られて記憶装置２０７にコピーされ、その後、ＲＡＭ２０３にロードされてもよい。
【０１７６】
または、ネットワーク２２０上のプログラム提供者２３０から、ネットワーク２２０と通信インタフェイス２０４を介して、プログラムがコンピュータ２００にダウンロードされ、インストールされてもよい。プログラム提供者２３０は、具体的には、コンピュータ２００ともコンピュータ２４０とも異なる、他のコンピュータである。
【０１７７】
さて、コンピュータ２４０は、ＣＰＵ２４１と、ＲＯＭ２４２と、ＲＡＭ２４３と、通信インタフェイス２４４と、入力装置２４５と、出力装置２４６と、記憶装置２４７と、コンピュータ読み取り可能な記憶媒体２５０の駆動装置２４８を有する。コンピュータ２４０の各構成要素は、バス２４９によって互いに接続されている。コンピュータ２４０の構成はコンピュータ２００の構成と類似なので、詳しい説明は省略するが、何点か補足すると下記のとおりである。
【０１７８】
図３には１台のＣＰＵ２４１のみが描かれているが、コンピュータ２４０は、コンピュータ２００と同様に、複数のプロセッサを有していてもよい。
ＣＰＵ２４１が実行するプログラムは、予めＲＯＭ２４２または記憶装置２４７にインストールされていてもよい。あるいは、プログラムは、記憶媒体２５０に格納されて提供され、記憶媒体２５０から駆動装置２４８により読み取られて記憶装置２４７にコピーされてもよい。または、プログラム提供者２３０から、ネットワーク２２０と通信インタフェイス２４４を介して、プログラムがコンピュータ２４０にダウンロードされ、インストールされてもよい。
【０１７９】
なお、ＲＯＭ２０２、ＲＡＭ２０３、記憶装置２０７、記憶媒体２１０、ＲＯＭ２４２、ＲＡＭ２４３、記憶装置２４７、および記憶媒体２５０は、いずれも、有形の（tangible）記憶媒体の例である。これらの有形の記憶媒体は、信号搬送波のような一時的な（transitory）媒体ではない。
【０１８０】
続いて、図２と図３の関係について説明する。
図２のサーバ１１０が図３のコンピュータ２００により実現される場合、サーバ１１０内の各構成要素は、例えば以下のハードウェアにより実現されてもよい。
【０１８１】
ファイル記憶部１１１は、記憶装置２０７であってもよい。通信制御部１１２は、プログラムを実行するＣＰＵ２０１と、通信インタフェイス２０４とによって実現されてもよい。ファイル送受信部１１３は、プログラムを実行するＣＰＵ２０１により実現されてもよい。
【０１８２】
ログ記憶部１１４は、ＲＡＭ２０３、記憶装置２０７、またはその双方により実現されてもよい。ログ管理部１１５は、プログラムを実行するＣＰＵ２０１により実現されてもよい。時計１１６は、ＣＰＵ２０１内のハードウェアタイマにより実現されてもよい。
【０１８３】
クリップボードデータ受信部１１７、抽出部１１８、比較部１１９、およびリンク生成部１２０の各々も、プログラムを実行するＣＰＵ２０１により実現されてもよい。リンク記憶部１２１は、記憶装置２０７により実現されてもよい。
【０１８４】
また、図２のクライアント１３０が図３のコンピュータ２４０により実現される場合、クライアント１３０内の各構成要素は、例えば以下のハードウェアにより実現されてもよい。
【０１８５】
通信制御部１３１は、プログラムを実行するＣＰＵ２４１と、通信インタフェイス２４４とによって実現されてもよい。ファイル送受信部１３２は、プログラムを実行するＣＰＵ２４１により実現されてもよい。アプリケーション１３３と１３４は、ＣＰＵ２４１により実行されるプログラムの例である。
【０１８６】
クリップボード１３５は、ＲＡＭ２４３により実現されてもよい。監視部１３６は、プログラムを実行するＣＰＵ２４１により実現されてもよい。時計１３７は、ＣＰＵ２４１内のハードウェアタイマにより実現されてもよい。
【０１８７】
クリップボードデータ記憶部１３８は、ＲＡＭ２４３、記憶装置２４７、またはその双方により実現されてもよい。抽出部１３９とクリップボードデータ送信部１４０は、どちらも、プログラムを実行するＣＰＵ２４１により実現されてもよい。
【０１８８】
続いて、図４を参照して、図２のシステム１００の動作の概要を説明する。図４は、システムの動作フローチャートである。より詳しくは、図４は、サーバ１１０が稼働し始めた後のシステム１００の動作を示す。
【０１８９】
ステップＳ１でシステム１００は、クライアント１３０でイベントが発生するのを待つ。クライアント１３０でイベントが発生すると、イベントの種類に応じた処理が行われる。イベントの種類として、図４には、クライアント１３０の起動、クリップボード１３５の更新の検出、オープン要求、オープン要求以外のファイル操作要求、および関連ファイルの検索要求という、５種類が例示されている。
【０１９０】
具体的には、クライアント１３０が起動すると、ステップＳ２において、クライアント１３０（より詳しくは監視部１３６）がクリップボード１３５の監視を開始する。そして、図４の処理はステップＳ１に戻る。
【０１９１】
また、クライアント１３０の監視部１３６がクリップボード１３５の更新を検出すると、ステップＳ３において、クライアント１３０（より詳しくは監視部１３６）は、新たにクリップボード１３５に記憶されたデータと、時計１３７から得られる現在時刻を、クリップボードデータ記憶部１３８に記憶する。そして、図４の処理はステップＳ１に戻る。
【０１９２】
また、オープン要求が発生すると、ステップＳ４で、図８とともに後述するオープン処理が実行される。そして、図４の処理はステップＳ１に戻る。詳しくは後述するとおり、ステップＳ４では、ファイルのデータがサーバ１１０からクライアント１３０へと送信され、サーバ１１０においてはオープン時刻がログに記録される。
【０１９３】
他方、オープン要求以外のファイル操作要求（すなわち、クローズ要求、セーブ要求、またはセーブ・クローズ要求）が発生すると、ステップＳ５でリンク処理が実行される。
具体的には、クライアント１３０が図９のリンク処理を実行する。その結果、場合によっては、クライアント１３０からサーバ１１０へとファイル操作要求が送信される。ファイル操作要求を受けると、サーバ１１０は、図１１〜１３のリンク処理を実行する。
【０１９４】
サーバ１１０は、図１１〜１３のリンク処理を実行する過程において、クライアント１３０にクリップボードデータを要求することがある。クライアント１３０は、サーバ１１０から要求を受けると、図１０のクリップボードデータ送信処理を実行する。
【０１９５】
また、サーバ１１０は、図１１〜１３のリンク処理を実行する過程において、図１４〜１５の比較処理を実行することもある。その結果として、後述のリンクテーブル３０３にエントリが追加される（すなわち、新たな関連づけ情報が生成される）ことがある。
【０１９６】
ステップＳ５のリンク処理の実行後、図４の処理はステップＳ１に戻る。
なお、図４では省略されているが、システム１００内では図４に示す以外の処理も適宜行われる。例えば、ログ管理部１１５はログ記憶部１１４に記憶されたログから、古いエントリを適宜削除してもよい。
【０１９７】
また、クライアント１３０においては、アプリケーション１３３や１３４などが、図４のフローチャートとは独立に動作する。したがって、図４には示されていないが、アプリケーション１３３上でファイルが新規作成されることがある。
【０１９８】
例えば、アプリケーション１３３によりファイルが新規作成されると、新規作成されたファイルの一時データが、クライアント１３０の記憶装置２４７などに記憶されることもある。一時データがクライアント１３０にローカルに記憶されただけでは、サーバ１１０は、ファイルが新規作成されたことをまだ認識しない。
【０１９９】
しかし、その後、新規作成されたファイルに対するクローズ要求、セーブ要求、またはセーブ・クローズ要求のための操作をユーザが行うと、当該操作に応じて、図４のステップＳ５が実行される。その結果、サーバ１１０は、ファイルが新規作成されたことを認識する。
【０２００】
ところで、第１実施形態においてリンク記憶部１２１に記憶されるリンクテーブルは、詳細については図７とともに後述するが、図１に関して説明した関連づけ情報（すなわち３つの情報（７ａ）〜（７ｃ）を含む情報）の具体例である。そして、図１に関して説明したように、データがペーストされた先のファイルからデータのコピー元のファイルを引くために、関連づけ情報が使われてもよい。
【０２０１】
具体的には、第１実施形態では、関連づけ情報によってあるファイルに関連づけられている他のファイル（以下「関連ファイル」ともいう）を検索するための要求に応じて、図４のステップＳ６〜Ｓ８において、検索および検索結果の表示が行われる。なお、上記のようにファイル操作要求にいくつかのレベルがあるのと同様に、検索要求にもいくつかレベルがある。しかし、レベルは文脈から明らかなので、以下では特にレベルを区別せずに、単に「検索要求」と述べる。
【０２０２】
具体的には、クライアント１３０は、ユーザにファイルを指定させるための適宜のユーザインタフェイスを提供する。例えば、ファイルを識別する識別情報としてファイルのフルパスが使われる場合、クライアント１３０は、ファイルのフルパスをユーザに指定させるための画面をディスプレイに表示し、フルパスの入力を受け取ってもよい。検索要求としてユーザから入力が与えられると、図４の処理はステップＳ１からステップＳ６へと移行する。
【０２０３】
そして、ステップＳ６でクライアント１３０は、サーバ１１０に検索要求を送信する。送信される検索要求には、ユーザの指定した識別情報が含まれる。以下では説明の便宜上、検索要求に含まれる識別情報を「対象識別情報」といい、対象識別情報で識別されるファイルを「対象ファイル」という。
【０２０４】
次のステップＳ７でサーバ１１０は、対象ファイルに関連する関連ファイルを検索する。具体的には、サーバ１１０は、受信した検索要求に含まれる対象識別情報を用いて、リンク記憶部１２１内を検索する。
【０２０５】
例えば、サーバ１１０は、対象ファイルにペーストされたデータのコピー元と推定されるファイルを、関連ファイルとして検索してもよい。サーバ１１０は、対象ファイルからコピーされたデータのペースト先と推定されるファイルを、関連ファイルとして検索してもよい。
【０２０６】
いずれにしろ、関連ファイルは、対象ファイルと関連づけ情報により関連づけられているファイルである。また、サーバ１１０は、検索結果をクライアント１３０に送信する。
【０２０７】
すると、ステップＳ８でクライアント１３０は、サーバ１１０から検索結果を受信する。そして、クライアント１３０は、検索結果を表示する。なお、サーバ１１０が送信する検索結果には、見つかった各関連ファイルの識別情報が含まれる。クライアント１３０は、例えば、各関連ファイルの識別情報自体をディスプレイに表示してもよいし、各関連ファイルの識別情報を含むハイパーリンクを含むページをディスプレイに表示してもよい。ステップＳ８の実行後、図４の処理はステップＳ１へと戻る。
【０２０８】
以上説明したとおり、図２のシステム１００では、クライアント１３０で発生するイベントに応じて、適宜の処理が行われる。
【０２０９】
続いて、図５〜７を参照して、システム１００内で使われるデータの具体例について説明する。なお、図５〜７では、説明の便宜上、各種データをテーブル形式で表しているが、もちろん、その他のデータ形式が使われてもよい。
【０２１０】
図５は、ログ記憶部１１４に記憶されるログの例を示す図である。図５のログ３０１の各エントリは、以下の５つのフィールド（１１ａ）〜（１１ｅ）を有する。
【０２１１】
（１１ａ）操作されるファイルを識別する識別情報（例えばフルパス）。
（１１ｂ）ファイルに対する操作をクライアント１３０に指示したユーザを識別する識別情報（例えばユーザ名）。
（１１ｃ）既存のファイルが実際に開かれた時刻か、または、「ファイルが新規作成された」とサーバ１１０が見なした時刻（以下、どちらの時刻も「オープン時刻」ということがある）。
（１１ｄ）ファイルが閉じられた時刻（以下「クローズ時刻」ともいう）。
（１１ｅ）ファイルが保存された時刻（以下「セーブ時刻」ともいう）。
【０２１２】
ログ３０１には、既存のファイルが開かれたときに、新規エントリが追加される。また、クライアント１３０からのセーブ要求またはセーブ・クローズ要求の送信に応じて、サーバ１１０が、ファイルが新規作成されたことを認識したときにも、ログ３０１に新規エントリが追加される。
【０２１３】
なお、説明の便宜上、現在開かれているファイル（すなわち、開かれた後、まだ閉じられていないファイル）に関するエントリにおけるクローズ時刻は、ＮＵＬＬであるものとする。また、開かれた後、まだ１回も保存されていないファイルに関するエントリにおけるセーブ時刻も、ＮＵＬＬであるものとする。
【０２１４】
以下では説明の便宜上、「ｕｓｒＡ」というユーザ名のユーザを「ユーザｕｓｒＡ」といい、「ｕｓｒＢ」というユーザ名のユーザを「ユーザｕｓｒＢ」という。図２には１台のクライアント１３０しか示されていないが、図５に関する以下の説明では、ユーザｕｓｒＡとｕｓｒＢそれぞれのクライアント１３０が、ネットワーク１５０を介してサーバ１１０に接続されているものとする。
【０２１５】
図５に例示した１番目のエントリによれば、「Ｃ：＼ｕｓｒＡ＼ａｂｃ１．ｄｏｃ」というフルパスにより識別されるファイルは、ユーザｕｓｒＡからクライアント１３０に与えられる入力に応じて、２０１２年６月１日１０時に開かれた。あるいは、このファイルは、ユーザｕｓｒＡのクライアント１３０上で新規に作成され、「２０１２年６月１日１０時に作成された」とサーバ１１０により見なされた。そして、このファイルは、ユーザｕｓｒＡからクライアント１３０に与えられる入力に応じて、２０１２年６月１日１１時４０分に保存され、閉じられた。
【０２１６】
２番目のエントリによれば、「Ｃ：＼ｕｓｒＢ＼ａｂｃ２．ｄｏｃ」というフルパスにより識別されるファイルは、ユーザｕｓｒＢからクライアント１３０に与えられる入力に応じて、２０１２年６月１日１０時１５分に開かれた。あるいは、このファイルは、ユーザｕｓｒＢのクライアント１３０上で新規に作成され、「２０１２年６月１日１０時１５分に作成された」とサーバ１１０により見なされた。このファイルはまだ閉じられていない。また、このファイルは、開かれた後、１回以上、ユーザｕｓｒＢからクライアント１３０に与えられる入力に応じて保存された。このファイルが最後に保存された時刻（つまり最終更新時刻（last modified time））は、２０１２年６月１日１１時４５分である。
【０２１７】
３番目のエントリによれば、「Ｃ：＼ｕｓｒＡ＼ａｂｃ３．ｘｌｓ」というフルパスにより識別されるファイルは、ユーザｕｓｒＡからクライアント１３０に与えられる入力に応じて、２０１２年６月１日１０時２０分に開かれた。あるいは、このファイルは、ユーザｕｓｒＡのクライアント１３０上で新規に作成され、「２０１２年６月１日１０時２０分に作成された」とサーバ１１０により見なされた。そして、このファイルは、ユーザｕｓｒＡからクライアント１３０に与えられる入力に応じて、２０１２年６月１日１０時２５分に保存され、閉じられた。
【０２１８】
４番目のエントリによれば、「Ｃ：＼ｓｈａｒｅｄ＼ｕｓｒＡ＼ａｂｃ４．ｐｐｔ」というフルパスにより識別されるファイルは、ユーザｕｓｒＡからクライアント１３０に与えられる入力に応じて、２０１２年６月１日１１時５分に開かれた。あるいは、このファイルは、ユーザｕｓｒＡのクライアント１３０上で新規に作成され、「２０１２年６月１日１１時５分に作成された」とサーバ１１０により見なされた。このファイルはまだ閉じられていない。また、このファイルは、開かれた後、１回以上、ユーザｕｓｒＡからクライアント１３０に与えられる入力に応じて、保存された。このファイルが最後に保存された時刻は、２０１２年６月１日１１時３３分である。
【０２１９】
５番目のエントリによれば、「Ｃ：＼ｓｈａｒｅｄ＼ｕｓｒＣ＼ａｂｃ５．ｘｌｓ」というフルパスにより識別されるファイルは、ユーザｕｓｒＡからクライアント１３０に与えられる入力に応じて、２０１２年６月１日１１時３０分に開かれた。例えば、このファイルは、他のユーザｕｓｒＣが以前作成した共有ファイルであってもよい。ユーザｕｓｒＡは、このファイルを読み取り専用（read-only）モードで開いていてもよい。このファイルはまだ保存されておらず、閉じられてもいない。
【０２２０】
６番目のエントリによれば、「Ｃ：＼ｓｈａｒｅｄ＼ｕｓｒＤ＼ａｂｃ６．ｔｘｔ」というフルパスにより識別されるファイルは、ユーザｕｓｒＢからクライアント１３０に与えられる入力に応じて、２０１２年６月１日１１時３８分に開かれた。例えば、このファイルは、他のユーザｕｓｒＤが以前作成した共有ファイルであってもよい。このファイルは２０１２年６月１日１１時５０分に閉じられたが、１１時３８分から１１時５０分までの間に保存操作は１回も行われていない。すなわち、ユーザｕｓｒＢは、このファイルをただ閲覧しただけで、編集せずに閉じた。あるいは、ユーザｕｓｒＢは、このファイルを開いた後、このファイルを編集するための入力操作を行ったが、編集結果を保存せずにこのファイルを閉じた。
【０２２１】
以上例示したようなログ３０１の各エントリは、ログ管理部１１５により追加・削除・更新される。エントリの追加については既に述べたとおりである。エントリの更新（具体的には、クローズ時刻、セーブ時刻、またはその双方の更新）については、図１１〜１３とともに後述する。エントリの削除については、次のとおりである。
【０２２２】
ログ管理部１１５は、適宜のタイミングでログ３０１からエントリを削除する。例えば、サーバ１１０は、１人以上のユーザのファイルを管理する。そこで、どのユーザのクライアント１３０もシャットダウンされている場合に、ログ管理部１１５は、ログ３０１のすべてのエントリを削除してもよい。あるいは、あるエントリのクローズ時刻が、クローズ時刻がＮＵＬＬでユーザ名が同じ他のどのエントリのオープン時刻よりも古い場合に、ログ管理部１１５は、当該エントリを削除してもよい。
【０２２３】
さて、図６は、クリップボードデータ記憶部１３８に記憶されるクリップボードデータテーブルの例を示す図である。図６のクリップボードデータテーブル３０２の各エントリは、以下の２つのフィールド（１２ａ）〜（１２ｂ）を有する。
【０２２４】
（１２ａ）クライアント１３０上でコピー操作またはカット操作が行われることにより、クリップボード１３５が書き換えられた時刻（以下、「書き換え時刻」という）。
（１２ｂ）書き換え時刻に、クリップボード１３５に書き込まれたデータ。
【０２２５】
例えば、図６にはクリップボードデータテーブル３０２の５個のエントリが例示されている。例えば、これら５個のエントリのうち３番目のエントリによれば、２０１２年６月１日９時２７分に、クライアント１３０上でコピー操作またはカット操作が行われた。そして、３番目のエントリによれば、当該コピー操作またはカット操作により、クリップボード１３５には「サンプル１」というテキストデータ（すなわち文字列データ）が書き込まれた。
【０２２６】
なお、クリップボードデータテーブル３０２は、クライアント１３０が起動されたときに、監視部１３６により初期化されてもよい。初期状態のクリップボードデータテーブル３０２は、何もエントリを持たない。
【０２２７】
さて、図７は、リンク記憶部に記憶されるリンクテーブルの例を示す図である。図７のリンクテーブル３０３の各エントリは、以下の４つのフィールド（１３ａ）〜（１３ｄ）を有する。
【０２２８】
（１３ａ）エントリを識別する識別情報（具体的には通し番号）。
（１３ｂ）データのコピー先のファイルを識別する識別情報（例えばフルパス）。
（１３ｃ）データのコピー元のファイルを識別する識別情報（例えばフルパス）。
（１３ｄ）クリップボード１３５を介して、コピー元のファイルからコピー先のファイルへとコピーされたデータ（正確には、「コピー元のファイルからコピー先のファイルへとコピーされた」とサーバ１１０により推定されたデータ）。すなわち、クリップボード１３５上に記憶されていたデータ。
【０２２９】
例えば、通し番号が４番のエントリによれば、「Ｃ：＼ｕｓｒＡ＼ａｂｃ３．ｘｌｓ」というフルパスにより識別されるファイルが、コピー先のファイルである。また、４番のエントリによれば、「Ｃ：＼ｓｈａｒｅｄ＼ｕｓｒＣ＼ａｂｃ５．ｘｌｓ」というフルパスにより識別されるファイルが、コピー元のファイルである。そして、４番目のエントリは、サーバ１１０が「コピー元のファイルからコピー先のファイルへと、『基剤Ａ８０％基剤Ｂ２０％で配合…』というテキストデータがコピー・アンド・ペーストされた」と推定したことを示す。
【０２３０】
しかし、サーバ１１０による推定は、１００％正しいとは限らない。例えば、以下の偶然の要因（１４ａ）〜（１４ｄ）によっては、「実際には２つのファイルの間には、データの再利用による関連性はないのに、サーバ１１０が誤って２つのファイルを関連づけてしまう」という場合も皆無ではない。
【０２３１】
（１４ａ）２つのファイルがそれぞれ開かれている期間。
（１４ｂ）コピー操作またはカット操作が行われるタイミング。
（１４ｃ）コピー操作またはカット操作によりクリップボード１３５に書き込まれるデータ。
（１４ｄ）２つのファイルに共通して含まれるデータ。
【０２３２】
また、サーバ１１０は、あるコピー先のファイルに対して、コピー元のファイルを１つに絞り切れない場合もある。つまり、コピー元のファイルの候補が複数見つかる場合もある。
【０２３３】
１番と２番のエントリは、コピー元のファイルの候補が２つ見つかったことを示す。なぜなら、１番と２番のエントリの（１３ｂ）のフィールドの値は互いに等しく、１番と２番のエントリの（１３ｄ）のフィールドの値も互いに等しいからである。
【０２３４】
１番と２番のエントリによれば、「Ｃ：＼ｕｓｒＡ＼ａｂｃ１．ｄｏｃ」というフルパスで識別されるファイルには、「ＸＯ１３５４８４」というテキストデータ（あるいは、それに類似するテキストデータ）が含まれる。そして、「この『ＸＯ１３５４８４』というテキストデータは、他のファイルからコピー・アンド・ペーストされたものだ」とサーバ１１０により推定されている。
【０２３５】
しかし、サーバ１１０は、コピー元のファイルの候補を１つに絞り切れず、コピー元のファイルの候補として２つのファイルが見つかった。すなわち、「Ｃ：＼ｕｓｒＡ＼ａｂｃ３．ｘｌｓ」および「Ｃ：＼ｓｈａｒｅｄ＼ｕｓｒＣ＼ａｂｃ５．ｘｌｓ」というフルパスでそれぞれ識別される２つのファイルが、コピー元のファイルの候補として見つかった。
【０２３６】
なお、偶然に起因してたまに誤判定が起きたり、またはコピー元のファイルの候補が複数見つかる場合がたまにあったりしたとしても、そのような問題が生じる頻度はそれほど高くない。よって、「関連性のありそうなファイルを、比較的高い確信度でユーザに提示することを可能とする」という効果は、十分に得られる。したがって、サーバ１１０による推定が完全に正しいとは限らなくても、問題はなく、効果は十分に得られる。
【０２３７】
さて、次に、図４のステップＳ４のオープン処理について、図８を参照して説明する。図８は、オープン処理のフローチャートである。具体的には、図８の左側にはクライアント１３０側のオープン処理のフローチャートが示してあり、図８の右側にはサーバ１１０側のオープン処理のフローチャートが示してある。
【０２３８】
以下では説明の便宜上、「ユーザが、クライアント１３０上のアプリケーション１３３を用いて、ファイル記憶部１１１上の既存のファイルを開くために、入力装置２４５を使って何らかの操作（例えばメニューの選択など）を行った」ものとする。こうしてユーザが行う操作は、オープン要求の一例である。
【０２３９】
アプリケーション１３３は、ユーザの操作に応じて、ファイル送受信部１３２に対してオープン要求を出す。ファイル送受信部１３２がオープン要求を受け取ると、図８の左側のフローチャートに示すオープン処理が開始される。
【０２４０】
ステップＳ１０１において、アプリケーション１３３からのオープン要求に応じて、ファイル送受信部１３２が、通信制御部１３１を介してサーバ１１０にファイルのデータを要求する。すなわち、ステップＳ１０１ではクライアント１３０からサーバ１１０へとオープン要求が送信される。このオープン要求は、開く対象のファイルを識別する識別情報としてのフルパスと、ユーザを識別する識別情報としてのユーザ名を含む。
【０２４１】
そして、クライアント１３０においては、次のステップＳ１０２で、ファイル送受信部１３２が、通信制御部１３１を介してサーバ１１０からファイルのデータを受け取る。ファイル送受信部１３２は、サーバ１１０から受け取ったデータをアプリケーション１３３に受け渡す。
【０２４２】
以上のステップＳ１０２でクライアント１３０側におけるオープン処理は終了する。もちろん、アプリケーション１３３は、ファイル送受信部１３２から受け取ったデータを用いて、適宜の処理を行うことができる。例えば、アプリケーション１３３は、開いたファイルの内容を画面に表示するなどの処理を行ってもよい。
【０２４３】
一方、サーバ１１０は、クライアント１３０がステップＳ１０１で送信したオープン要求を受信すると、図８の右側のフローチャートに示すオープン処理を開始する。
具体的には、ステップＳ１１１では、ファイル送受信部１１３が、通信制御部１１２を介してオープン要求を受信する。そして、ファイル送受信部１１３は、受信したオープン要求に応じて、クライアント１３０から要求されたファイルのデータをファイル記憶部１１１から読み出す。さらに、ファイル送受信部１１３は、読み出したファイルのデータを、通信制御部１１２を介してクライアント１３０に送信する。こうして送信されたデータは、上述のとおりクライアント１３０においてはステップＳ１０２で受信される。
【０２４４】
さらに、サーバ１１０は、続いてステップＳ１１２〜Ｓ１１３の処理も行う。具体的には、ステップＳ１１２でファイル送受信部１１３は、下記２種類の情報（１５ａ）と（１５ｂ）をログ管理部１１５に通知する。
【０２４５】
（１５ａ）ファイルのデータを要求したユーザの名前。すなわち、受信したオープン要求に含まれているユーザ名。
（１５ｂ）開いたファイルのフルパス。すなわち、受信したオープン要求に含まれているフルパス。
【０２４６】
すると、ステップＳ１１３でログ管理部１１５は、通知されたユーザ名と、通知されたフルパスと、ファイルのオープン時刻を、ログ記憶部１１４中のログ３０１に記録する。つまり、ログ管理部１１５は、ログ３０１に新規エントリを追加し、新規エントリに上記のユーザ名、フルパス、およびオープン時刻を記録する。なお、図５に関して説明したとおり、新規エントリにおけるクローズ時刻とセーブ時刻はいずれもＮＵＬＬである。ログ３０１への記録が完了すると、オープン処理も完了する。
【０２４７】
続いて、図９〜１５を参照して、図４のステップＳ５のリンク処理について説明する。説明の便宜上、まず、図９〜１０を参照してクライアント１３０側の処理を説明し、その後、図１１〜１５を参照してサーバ１１０側の処理を説明する。
【０２４８】
図９は、クライアント１３０側のリンク処理のフローチャートである。
以下では説明の便宜上、「ユーザが、アプリケーション１３３内で現在開いている或るファイルに対して、クローズ要求、セーブ要求、またはセーブ・クローズ要求を出した」ものとする。例えば、ユーザは、メニューの選択などの何らかの操作を、入力装置２４５を用いて行ってもよい。
【０２４９】
また、以下では説明の便宜上、上記の「或るファイル」を「ファイルＦ」と表記し、出された要求を「要求Ｒ」と表記することがある。上記のとおり、要求Ｒは、クローズ要求、セーブ要求、またはセーブ・クローズ要求である。また、上記の項目（１０ａ）〜（１０ｃ）に示したように、ファイル操作要求にはいくつかのレベルがあるが、文脈から明らかなので、以下では特にレベルの区別をせずに、単に「要求Ｒ」と表記することがある。
【０２５０】
さて、ユーザの操作により要求Ｒが出されると、図９のリンク処理が開始される。
ステップＳ２０１において、アプリケーション１３３は、ファイルＦが新規ファイルか否かを判断する。ファイルＦは上記のとおりアプリケーション１３３内で現在開かれているファイルである。よって、アプリケーション１３３は、ファイルＦが新規ファイルである（すなわち、ファイルＦを保存するためのサーバ１１０上のフルパスが未定である）のか、それともファイルＦが既存ファイルであるのかを認識している。したがって、アプリケーション１３３は、ステップＳ２０１の判断を行うことができる。
【０２５１】
なお、アプリケーション１３３上で新規に作成されたファイルＦが、開かれた状態のまま、一旦サーバ１１０上に保存されることがある。この場合、一旦サーバ１１０上に保存された後は、既にファイルＦを保存するためのサーバ１１０上のフルパスが確定している。したがって、この場合、アプリケーション１３３は、ステップＳ２０１で「ファイルＦは既存ファイルである」と判断する。
【０２５２】
ファイルＦが新規ファイルの場合、リンク処理はステップＳ２０２に移行する。逆に、ファイルＦが既存ファイルの場合、リンク処理はステップＳ２０７に移行する。
ステップＳ２０２でアプリケーション１３３は、要求Ｒの種類を判断する。要求Ｒがクローズ要求の場合は、リンク処理はステップＳ２０３に移行する。逆に、要求Ｒがセーブ要求またはセーブ・クローズ要求の場合は、リンク処理はステップＳ２０４に移行する。
【０２５３】
ステップＳ２０３でアプリケーション１３３は、新規ファイルＦを閉じる。例えば、アプリケーション１３３は、新規ファイルＦのために使っていた一時記憶領域（例えば、ＲＡＭ２４３、記憶装置２４７、またはその双方における領域）を解放してもよい。そして、リンク処理は終了する。
【０２５４】
なお、上記のとおりステップＳ２０３は、ファイルＦが新規ファイルであり、かつ、要求Ｒがクローズ要求の場合に実行される。この場合が示す事柄は、以下の項目（１６ａ）〜（１６ｃ）に示す状況である。よって、ステップＳ２０３では単にファイルＦが閉じられて、リンク処理は完了する。
【０２５５】
（１６ａ）アプリケーション１３３により、一時的にクライアント１３０内でローカルに新規ファイルＦが作成された。
（１６ｂ）しかし、ユーザは、「ファイルＦをサーバ１１０に保存しなくてよい」と判断した。
（１６ｃ）したがって、ファイルＦに関して、アプリケーション１３３以外の構成要素（例えばファイル送受信部１３２やサーバ１１０など）は、何も処理をしなくてよい。
【０２５６】
他方、ステップＳ２０４は、ファイルＦが新規ファイルであり、かつ、要求Ｒがセーブ要求またはセーブ・クローズ要求の場合に実行される。この場合、具体的には、ステップＳ２０４で、アプリケーション１３３が、ファイルＦを保存する場所（location）を示すフルパス（以下「フルパスＰ」と表記する）を取得する。例えば、アプリケーション１３３はダイアログを出力装置２４６に表示し、入力装置２４５からの入力を受け取ることで、フルパスＰを取得してもよい。
【０２５７】
次に、ステップＳ２０５でアプリケーション１３３は、フルパスＰをファイル送受信部１３２に通知する。また、アプリケーション１３３は、ファイルＦのデータもファイル送受信部１３２に出力する。こうして、ファイル送受信部１３２は、フルパスＰを取得し、保存する対象のデータも取得する。
【０２５８】
次に、ステップＳ２０６でファイル送受信部１３２は、通信制御部１３１を介して、ファイルＦのデータを含む要求Ｒをサーバ１１０に送信する。ステップＳ２０６で送信される要求Ｒは、具体的には、セーブ要求またはセーブ・クローズ要求であり、上記のとおりファイルＦのデータを含む。さらに、要求Ｒは、フルパスＰも含み、ユーザを識別する識別情報としてのユーザ名（以下「ユーザ名Ｕ」と表記する）も含む。なお、ファイル送受信部１３２は、ネットワークファイルシステムにおけるクライアントサイドのモジュールとしての基本的な機能を有している。そのため、ファイル送受信部１３２は、ユーザ名Ｕを取得することができる。要求Ｒの送信後、クライアント側のリンク処理は終了する。
【０２５９】
さて、ファイルＦが既存ファイルの場合、ステップＳ２０７でアプリケーション１３３は、要求Ｒの種類を判断する。要求Ｒがクローズ要求の場合は、リンク処理はステップＳ２０８に移行する。逆に、要求Ｒがセーブ要求またはセーブ・クローズ要求の場合は、リンク処理は、上記のステップＳ２０５に移行する。
【０２６０】
なお、ファイルＦが既存ファイルの場合、アプリケーション１３３はファイルＦのフルパスＰを認識している。よって、処理がステップＳ２０７からステップＳ２０５へと移行した後、アプリケーション１３３は、上記のようにステップＳ２０５でフルパスＰをファイル送受信部１３２に通知することができる。
【０２６１】
さて、ステップＳ２０８は、上記のとおり、ファイルＦが既存ファイルであり、かつ、要求Ｒがクローズ要求である場合に実行される。具体的には、ステップＳ２０８でアプリケーション１３３は、フルパスＰをファイル送受信部１３２に通知する。こうして、ファイル送受信部１３２は、フルパスＰを取得する。
【０２６２】
そして、次のステップＳ２０９でファイル送受信部１３２は、通信制御部１３１を介して、要求Ｒをサーバ１１０に送信する。ステップＳ２０９で送信される要求Ｒ（すなわちクローズ要求）は、フルパスＰとユーザ名Ｕを含む。要求Ｒの送信後、クライアント側のリンク処理は終了する。さらに、ステップＳ２０９でアプリケーション１３３は、ファイルＦのために使っていた一時記憶領域を解放するなどの処理を、行ってもよい。
【０２６３】
なお、要求Ｒがセーブ要求である場合は、クライアント側のリンク処理の終了後もファイルＦはアプリケーション１３３上で開いたままである。よって、この場合、アプリケーション１３３は、クライアント側のリンク処理の終了後も、入力装置２４５を介してユーザから与えられる指示に応じて、適宜の処理（例えばファイルＦを編集するなどの処理）を行う。
【０２６４】
さて、図１０は、クライアント１３０側のクリップボードデータ送信処理のフローチャートである。図４のステップＳ５に関して簡単に説明したとおり、ステップＳ５の実行過程内において、サーバ１１０がクライアント１３０にクリップボードデータの送信を要求することがある。クライアント１３０は、サーバ１１０からクリップボードデータの送信を要求されると、図１０の処理を開始する。
【０２６５】
なお、サーバ１１０は、クリップボードデータ記憶部１３８上のクリップボードデータテーブル３０２から抽出する対象のエントリの範囲を指定する。以下では説明の便宜上、サーバ１１０が範囲を指定するための２つのパラメタを「開始時点Ｓ」および「終了時点Ｅ」と呼ぶ。
【０２６６】
開始時点Ｓと終了時点Ｅは、「開始時点Ｓから終了時点Ｅまでの期間の少なくとも一部においてクリップボード１３５に記憶されていたデータを、サーバ１１０が要求している」ということを示す。ファイルＦに関してサーバ１１０が開始時点Ｓから終了時点Ｅまでの期間を指定する場合、指定される当該期間は、ファイルＦが閉じられるよりも前の期間に含まれる。
【０２６７】
クリップボードデータ送信部１４０は、通信制御部１３１を介してサーバ１１０から、開始時点Ｓと終了時点Ｅを含む要求を受信する。そして、要求の受信に応じて、図１０のクリップボードデータ送信処理が開始される。
【０２６８】
まず、ステップＳ３０１でクリップボードデータ送信部１４０は、サーバ１１０から指定された開始時点Ｓと終了時点Ｅを抽出部１３９に通知する。
【０２６９】
次に、ステップＳ３０２で抽出部１３９は、クリップボードデータ記憶部１３８に記憶されているクリップボードデータテーブル３０２を検索して、終了時点Ｅよりも書き換え時刻が古いエントリを探す。もし、終了時点Ｅよりも書き換え時刻が古いエントリがなければ、クリップボードデータ送信処理は、ステップＳ３０３に移行する。逆に、終了時点Ｅよりも書き換え時刻が古いエントリがあれば、クリップボードデータ送信処理は、ステップＳ３０４に移行する。
【０２７０】
ここで、「終了時点Ｅよりも書き換え時刻が古いエントリがない」ということは、「開始時点Ｓから終了時点Ｅまでの期間の全体を通じて、クリップボード１３５は何もデータが記憶されていない状態であった」ということを意味する。よって、ステップＳ３０３で抽出部１３９は、「サーバ１１０から指定された条件に該当するデータがない」ということを、クリップボードデータ送信部１４０に通知する。
【０２７１】
すると、クリップボードデータ送信部１４０は、「サーバ１１０から指定された条件に該当するデータがない」ということを、通信制御部１３１を介してサーバ１１０に通知する。そして、クリップボードデータ送信処理は終了する。
【０２７２】
逆に、「終了時点Ｅよりも書き換え時刻が古いエントリがある」ということは、「開始時点Ｓから終了時点Ｅまでの期間の少なくとも一部においてクリップボード１３５に記憶されていたデータが、少なくとも１つは存在する」ということを意味する。そこで、終了時点Ｅよりも書き換え時刻が古いエントリがステップＳ３０２で見つかった場合には、ステップＳ３０４以降の処理が行われる。なお、以下では説明の簡単化のため、クリップボードデータテーブル３０２では、書き換え時刻の昇順にエントリがソートされているものとする。
【０２７３】
ステップＳ３０４で抽出部１３９は、書き換え時刻が終了時点Ｅより古いエントリの中で、最も書き換え時刻が新しいエントリを、「終了エントリ」とする。
【０２７４】
また、次のステップＳ３０５で抽出部１３９は、クリップボードデータ記憶部１３８に記憶されているクリップボードデータテーブル３０２を検索して、開始時点Ｓよりも書き換え時刻が古いエントリを探す。もし、開始時点Ｓよりも書き換え時刻が古いエントリがあれば、クリップボードデータ送信処理は、ステップＳ３０６に移行する。逆に、開始時点Ｓよりも書き換え時刻が古いエントリがなければ、クリップボードデータ送信処理は、ステップＳ３０７に移行する。
【０２７５】
ステップＳ３０６で抽出部１３９は、書き換え時刻が開始時点Ｓより古いエントリの中で、最も書き換え時刻が新しいエントリを、「開始エントリ」とする。なお、開始エントリは、終了エントリと同じ場合もあるし、終了エントリとは異なる場合もある。
【０２７６】
具体的には、「開始時点Ｓより前にクリップボード１３５が書き換えられ、その後、開始時点Ｓから終了時点Ｅまでの間はクリップボード１３５が書き換えられない」という場合がある。この場合、開始エントリは終了エントリと同じである。
【０２７７】
逆に、「開始時点Ｓより前にクリップボード１３５が書き換えられ、その後、開始時点Ｓから終了時点Ｅまでの期間中にｃ回（１≦ｃ）クリップボード１３５が書き換えられる」という場合もある。この場合、開始エントリと終了エントリは異なり、開始エントリから終了エントリまでのエントリの数は（ｃ＋１）個である。
【０２７８】
ステップＳ３０６で抽出部１３９が開始エントリを決めると、クリップボードデータ送信処理は、ステップＳ３０８に移行する。
【０２７９】
ところで、「開始時点Ｓよりも書き換え時刻が古いエントリがない」ということは、「開始時点Ｓから終了時点Ｅまでの期間の途中で、初めてクリップボード１３５にデータが記憶された」ということを意味する。よって、ステップＳ３０７で抽出部１３９は、クリップボードデータテーブル３０２の中で書き換え時刻が最も古いエントリを、開始エントリとする。なお、開始エントリは、終了エントリと同じ場合もあるし、終了エントリとは異なる場合もある。
【０２８０】
具体的には、「開始時点Ｓより後かつ終了時点Ｅより前のある時点において初めてクリップボード１３５にデータが書き込まれたが、その後、終了時点Ｅまではクリップボード１３５が更新されなかった」という場合がある。この場合、開始エントリは終了エントリと同じである。
【０２８１】
逆に、「開始時点Ｓより後かつ終了時点Ｅより前のある時点において初めてクリップボード１３５にデータが書き込まれ、その後、開始時点Ｓから終了時点Ｅまでの期間中にｃ回（１≦ｃ）クリップボード１３５が書き換えられる」という場合もある。この場合、開始エントリと終了エントリは異なり、開始エントリから終了エントリまでのエントリの数は（ｃ＋１）個である。
【０２８２】
ステップＳ３０７で抽出部１３９が開始エントリを決めると、クリップボードデータ送信処理は、ステップＳ３０８に移行する。
【０２８３】
そして、ステップＳ３０８で抽出部１３９は、開始エントリから終了エントリまでのエントリを、クリップボードデータ記憶部１３８から抽出する。開始エントリと終了エントリが同じ場合は、抽出されるエントリの数は１個だけである。開始エントリと終了エントリが異なる場合は、ステップＳ３０６とＳ３０７に関して説明したように、（ｃ＋１）個のエントリが抽出される。
【０２８４】
ステップＳ３０８ではさらに、抽出部１３９により抽出されたエントリのデータを、クリップボードデータ送信部１４０が、通信制御部１３１を介してサーバ１１０に送信する。そして、クリップボードデータ送信処理は終了する。
【０２８５】
例えば、開始時点Ｓが図１の時刻Ｔ２で終了時点Ｅが図１の時刻Ｔ４の場合、以上の処理により、時刻Ｔ１に対応づけられたデータＤ１と、時刻Ｔ３に対応づけられたデータＤ２が、クライアント１３０からサーバ１１０へと送信される。
【０２８６】
続いて、図１１〜１５を参照して、図４のステップＳ５におけるサーバ１１０の動作について詳しく説明する。
図１１〜１３は、サーバ側のリンク処理のフローチャートである。図９のステップＳ２０６またはＳ２０９でクライアント１３０から送信された要求Ｒを、通信制御部１１２を介してファイル送受信部１１３が受信すると、図１１〜１３のリンク処理が開始される。なお、図９に関して説明したとおり、要求Ｒには、ファイルＦを識別する識別情報としてのフルパスＰと、要求Ｒを出したユーザを識別する識別情報としてのユーザ名Ｕが含まれる。また、要求Ｒがセーブ要求またはセーブ・クローズ要求である場合には、要求Ｒには、さらに保存対象のファイルＦのデータが含まれる。
【０２８７】
ステップＳ４０１でファイル送受信部１１３は、要求Ｒの種類を判断する。要求Ｒがクローズ要求である場合、リンク処理はステップＳ４０２へ移行する。逆に、要求Ｒがセーブ要求またはセーブ・クローズ要求である場合、リンク処理はステップＳ４０５へ移行する。
【０２８８】
なお、要求Ｒは、所定のプロトコルにしたがってクライアント１３０からサーバ１１０へと送られる。例えば、当該所定のプロトコルのＰＤＵ（Protocol Data Unit）は、要求の種類を示すヘッダフィールドを含んでいてもよい。ファイル送受信部１１３は、通信制御部１１２を介して受信した要求ＲのＰＤＵのヘッダフィールドに基づいて、ステップＳ４０１で要求Ｒの種類を判断してもよい。
【０２８９】
さて、要求Ｒがクローズ要求の場合、ステップＳ４０２でファイル送受信部１１３は、ファイルＦを閉じる。
そして、次のステップＳ４０３でファイル送受信部１１３は、以下の情報（１７ａ）と（１７ｂ）をログ管理部１１５に通知する。
【０２９０】
（１７ａ）クローズ要求の要求元ユーザの名前（すなわち、要求Ｒに含まれているユーザ名Ｕ）。
（１７ｂ）ファイルＦのフルパスＰ（すなわち、要求Ｒに含まれているフルパスＰ）。
【０２９１】
すると、ステップＳ４０４でログ管理部１１５は、ログ３０１の中から、以下の条件（１８ａ）〜（１８ｃ）をすべて満たすエントリを検索する。
【０２９２】
（１８ａ）通知されたフルパスＰを含む。
（１８ｂ）通知されたユーザ名Ｕを含む。
（１８ｃ）クローズ時刻がＮＵＬＬである。
【０２９３】
説明の簡単化のため、「１つのファイルが、１人のユーザによって、同時に複数のアプリケーションから開かれることはない」と仮定する。すると、検索の結果、複数のエントリが見つかることはなく、１つだけエントリが見つかる。なお、エントリが見つかる理由は、以下のとおりである。
【０２９４】
図９から明らかなとおり、サーバ１１０は、既にファイル記憶部１１１上に存在するファイルについてのクローズ要求を受け取ることはあるが、ファイル記憶部１１１上に存在しないファイルについてクローズ要求を受け取ることはない。そして、既にファイル記憶部１１１上に存在するファイルについてのクローズ要求は、当該ファイルについてのオープン要求とセーブ要求の少なくとも一方の後に生じるものである。
【０２９５】
さらに、リンク処理についての以下の説明から明らかなように、ファイルＦに関して、ユーザ名Ｕのユーザからオープン要求とセーブ要求の少なくとも一方が出されたことがあれば、条件（１８ａ）と（１８ｂ）を満たすエントリが作成済みである。また、当該エントリのクローズ時刻は、クローズ要求が出される前はＮＵＬＬのままである。よって、ステップＳ４０４での検索の結果、条件（１８ａ）〜（１８ｃ）をすべて満たすエントリが見つかる。
【０２９６】
なお、例えば複数のユーザに読み出しアクセスが許されているファイルなどは、複数のユーザによって同時に開かれることがあり得る。その場合、条件（１８ａ）と（１８ｃ）をともに満たすエントリが複数存在することがある。しかし、条件（１８ｂ）により、要求Ｒの要求元ユーザが一意に特定される。したがって、条件（１８ａ）〜（１８ｃ）をすべて満たすエントリは１つである。
【０２９７】
なお、１つのファイルが１人のユーザによって同時に複数のアプリケーションから開かれ得る実施形態では、クライアント１３０は、ファイル操作要求に、「どのアプリケーションからファイルが操作されるのか」を示すアプリケーション識別情報を含めてもよい。そして、ログ３０１の各エントリが、さらにアプリケーション識別情報のフィールドを有していてもよい。そうすれば、ログ管理部１１５は、さらにアプリケーション識別情報を利用することで、ステップＳ４０４での検索においてエントリを１つに絞り込むことができる。
【０２９８】
ログ管理部１１５は、以上のようにしてログ３０１から１つのエントリを見つけると、見つけたエントリにクローズ時刻を記録する。すなわち、ログ管理部１１５は、時計１１６を参照して現在時刻を得て、見つけたエントリのクローズ時刻フィールドに現在時刻を書き込む。その後、リンク処理は、図１２に示すステップＳ４２４に移行する。
【０２９９】
他方、要求Ｒがセーブ要求またはセーブ・クローズ要求である場合には、ステップＳ４０５以降の処理が実行される。具体的には、ステップＳ４０５でファイル送受信部１１３は、通信制御部１１２を介して受信したデータ（すなわち要求Ｒに含まれる、ファイルＦのデータ）を、要求Ｒに含まれるフルパスＰで示される場所に格納する。
【０３００】
ファイルＦがクライアント１３０で新規に作成されたファイルである場合、ステップＳ４０５の結果として、サーバ１１０のファイル記憶部１１１上に（つまりフルパスＰで示される場所に）、新たにファイルＦが作成および保存される。ファイルＦが既存のファイルである場合は、ステップＳ４０５の結果として、ファイル記憶部１１１上のファイルＦの既存のデータが、編集後の新たなデータで上書きされる。いずれにしろ、ステップＳ４０５の結果として、ファイル記憶部１１１にはファイルＦが保存される。
【０３０１】
なお、説明の簡単化のため、図１１では、要求Ｒの要求元のユーザは、ファイルＦへの書き込みアクセスが許されているものとする。しかし、より詳しくは、ステップＳ４０５でファイル送受信部１１３は、要求Ｒに含まれるユーザ名Ｕに基づいて、「要求元のユーザはファイルＦへの書き込みアクセスが許されているのか否か」を判断する。そして、要求元のユーザにファイルＦへの書き込みアクセスが許されている場合は、ファイル送受信部１１３は、ステップＳ４０５で上記のようにしてファイルＦの保存を行う。
【０３０２】
もし、要求元のユーザにファイルＦへの書き込みアクセスが許されていなければ、ファイル送受信部１１３は、不図示のエラー処理を行う。例えば、ファイル送受信部１１３は、「ユーザ名Ｕのユーザには、フルパスＰで示される場所にファイルＦを保存することが許されていない」ということを示すエラーコードを、通信制御部１１２を介してクライアント１３０に返してもよい。また、ファイル送受信部１１３は、エラー処理を終えるとサーバ側のリンク処理も終える。
【０３０３】
ここで、ファイルＦがステップＳ４０５で保存された場合の説明に戻る。次のステップＳ４０６でファイル送受信部１１３は、要求Ｒの種類を判断する。
【０３０４】
要求Ｒがセーブ・クローズ要求である場合、リンク処理は、ステップＳ４０７に移行する。逆に、要求Ｒがセーブ要求である場合、リンク処理はステップＳ４０８に移行する。
【０３０５】
ステップＳ４０７でファイル送受信部１１３は、ファイルＦを閉じる。そして、リンク処理はステップＳ４０８に移行する。
【０３０６】
ステップＳ４０８でファイル送受信部１１３は、要求Ｒの要求元ユーザを識別するユーザ名Ｕと、ファイルＦのフルパスＰを、ログ管理部１１５に通知する。なお、上記のとおり、ユーザ名ＵとフルパスＰは要求Ｒに含まれている。
【０３０７】
次に、ステップＳ４０９でログ管理部１１５は、時計１１６を参照して現在時刻を取得し、取得した現在時刻を記憶する。
【０３０８】
そして、ステップＳ４１０でログ管理部１１５は、ログ記憶部１１４上のログ３０１中に、通知されたフルパスＰがあるか否かを判断する。つまり、ログ管理部１１５は、フルパスＰを含むエントリがログ３０１中に存在するか否かを判断する。
【０３０９】
フルパスＰを含むエントリがログ３０１中に存在する場合とは、すなわち、ファイルＦが既存のファイルである場合である。よって、この場合、リンク処理は、図１２に示すステップＳ４１３に移行する。
【０３１０】
逆に、フルパスＰを含むエントリがログ３０１中に存在しない場合とは、すなわち、ファイルＦが新規作成されたファイルであり、ステップＳ４０５で初めてファイルＦがファイル記憶部１１１に保存された場合である。この場合、リンク処理は、ステップＳ４１１に移行する。
【０３１１】
ステップＳ４１１でログ管理部１１５は、ログ３０１に新規エントリを追加する。ログ管理部１１５は、追加した新規エントリに、ファイルＦのフルパスＰと、ユーザ名Ｕとを記録する。
【０３１２】
さらに、ステップＳ４１２でログ管理部１１５は、ステップＳ４０９で取得した時刻よりも所定時間前の時刻を、新規エントリにおけるオープン時刻として記録する。なお、新規エントリのクローズ時刻とセーブ時刻は、いずれもＮＵＬＬである。
【０３１３】
上記所定時間は、「ユーザがファイルを新規作成するための入力操作を行ってから、最初にセーブ要求またはセーブ・クローズ要求を出すまでに、最大でどの程度の間隔があくと推定されるか」に応じて決められることが好ましい。例えば、「ユーザがファイルを新規作成するための入力操作を行ってから、最初にセーブ要求またはセーブ・クローズ要求を出すまでに、最大でも３０分しかあかない」と推定される場合には、上記所定時間は３０分でもよいし、３０分以上の適宜の時間でもよい。
【０３１４】
また、上記所定時間は、システム１００に固有の定数でもよいが、ユーザごとに定義可能な値であってもよい。つまり、各ユーザが、自分自身の普段の習慣などから「自分にとっては十分な長さである」と考える時間を、当該ユーザについての上記所定時間として、クライアント１３０を介してサーバ１１０に予め通知してもよい。サーバ１１０は、各ユーザについて、通知された上記所定時間をユーザ名と対応づけて記憶していてもよい。
【０３１５】
例えば、説明の便宜上、上記所定時間が１時間であるとする。この場合、ステップＳ４１１〜Ｓ４１２は、以下の項目（１９ａ）と（１９ｂ）に示す事柄を意味する。
【０３１６】
（１９ａ）「クライアント１３０上でファイルＦを新規作成するための入力操作は、ファイルＦについて最初にセーブ要求またはセーブ・クローズ要求が出されるよりも、１時間前に行われた」とサーバ１１０（具体的にはログ管理部１１５）により見なされる。なお、サーバ１１０は、「実際にアプリケーション１３３または１３４上でいつ入力操作が行われたか」ということを認識しない。そのため、ログ管理部１１５は、所定の「１時間」という時間を以上のように用いることで、ファイルＦが新規作成された時刻を推定する。
（１９ｂ）新規作成されたファイルに関しては、オープン時刻は、「ファイルがクライアント１３０上でローカルに作成された」とログ管理部１１５が推定した時刻である。
【０３１７】
さて、ステップＳ４１１〜Ｓ４１２で新規エントリがログ３０１に追加され、適宜の値が新規エントリに書き込まれた後、リンク処理は、図１２に示すステップＳ４１３に移行する。
ところで、第１実施形態では、「ファイル同士を関連づける処理をサーバ１１０がいつ行うか」という点に関して、２種類のモードが利用可能である。以下では説明の便宜上、２種類のモードをそれぞれ「分離モード」と「一括モード」という。
【０３１８】
分離モードは、ファイルが保存されるたびに、サーバ１１０がファイル同士の関連性を判断するモードである。例えば、既存のファイルが開かれた後、３回セーブ要求が出されて、その後、セーブ・クローズ要求が出された場合には、当該ファイルは、開かれてから閉じられるまでに４回保存される。したがって、この場合、サーバ１１０が分離モードで動作していれば、サーバ１１０は、当該ファイルと他のファイルとの間の関連性を４回判断する。
【０３１９】
なお、既存のファイルが開かれた後、３回セーブ要求が出されて、その後、クローズ要求が出された場合には、当該ファイルは、開かれてから閉じられるまでに３回保存される。したがって、この場合、サーバ１１０が分離モードで動作していれば、サーバ１１０は、当該ファイルと他のファイルとの間の関連性を３回判断する。
【０３２０】
つまり、この場合、３回目の保存の後は、ファイルはクライアント１３０上でローカルに編集されるかもしれないが、その編集結果はファイル記憶部１１１には保存されない。したがって、３回目の保存の後にクライアント１３０上でファイルがどのように編集されようとも、当該ファイルと他のファイルとの関連性には影響しない。よって、サーバ１１０は、クローズ要求に応じてファイルを閉じる際には、当該ファイルと他のファイルとの間の関連性を判断する必要がない。
【０３２１】
他方、一括モードは、ファイルが閉じられるときに、サーバ１１０がファイル同士の関連性を判断するモードである。例えば、既存のファイルが開かれた後、１回以上セーブ要求が出され、その後、最後にクローズ要求またはセーブ・クローズ要求が出される場合がある。この場合、サーバ１１０が一括モードで動作していれば、サーバ１１０は、ファイルが開かれている間に何回セーブ要求が出されたかによらず、最後にクローズ要求またはセーブ・クローズ要求に応じてファイルを閉じるときだけ、ファイル同士の関連性を判断する。
【０３２２】
また、分離モードと同様に、一括モードにおいてもサーバ１１０は、最後のセーブ要求に応じたファイルの保存よりも後にクライアント１３０でローカルに行われる編集については、考慮しない。
【０３２３】
なお、サーバ１１０が一括モードと分離モードのどちらで動作するかは、例えば、不図示の設定ファイルに設定されていてもよい。また、モードは、ログ管理部１１５、抽出部１１８、比較部１１９、およびリンク生成部１２０のいずれからも参照可能である。そして、以上概略を説明したようなモードに応じた動作は、図１２に示すステップＳ４１３〜Ｓ４２５により実現される。
【０３２４】
ステップＳ４１３でログ管理部１１５は、要求Ｒの種類を判断する。要求Ｒがセーブ要求の場合、リンク処理はステップＳ４１４に移行する。逆に、要求Ｒがセーブ・クローズ要求の場合、リンク処理はステップＳ４１６に移行する。
【０３２５】
ステップＳ４１４でログ管理部１１５は、サーバ１１０が一括モードで動作しているのか、分離モードで動作しているのかを判断する。サーバ１１０が一括モードで動作している場合、リンク処理は、ステップＳ４１５に移行する。逆に、サーバ１１０が分離モードで動作している場合は、リンク処理は、ステップＳ４１６に移行する。
【０３２６】
ステップＳ４１５でログ管理部１１５は、ステップＳ４０９で取得した時刻をセーブ時刻としてログ３０１に記録する。具体的には、ログ管理部１１５は、ログ３０１中で以下の条件（２０ａ）〜（２０ｃ）をすべて満たすエントリのセーブ時刻として、ステップＳ４０９で取得した時刻を記録する。
【０３２７】
（２０ａ）ステップＳ４０８でファイル送受信部１１３からログ管理部１１５に通知されたフルパスＰを含む。
（２０ｂ）ステップＳ４０８でファイル送受信部１１３からログ管理部１１５に通知されたユーザ名Ｕを含む。
（２０ｃ）クローズ時刻がＮＵＬＬである。
【０３２８】
なお、ステップＳ４０４に関して説明したのと同様の理由から、条件（２０ａ）〜（２０ｃ）をすべて満たすエントリの数は１つである。また、サーバ１１０が一括モードで動作している場合は、セーブ要求が出されても、サーバ１１０はファイル間の関連性を判断せず、単にセーブ時刻を記録するだけでよい。したがって、ステップＳ４１５でのセーブ時刻の記録が終了すると、サーバ側のリンク処理も終了する。
【０３２９】
他方、サーバ１１０が分離モードで動作している場合には、セーブ要求が出されるとサーバ１１０はファイル間の関連性を判断する。また、セーブ・クローズ要求が出された場合には、モードによらず、サーバ１１０はファイル間の関連性を判断する。具体的には、サーバ１１０は、ファイル間の関連性を判断するために、ステップＳ４１６以降の処理を行う。
【０３３０】
ステップＳ４１６では、ログ管理部１１５が、ステップＳ４０９で取得した時刻を終了時点Ｅとする。終了時点Ｅは、図１０のクリップボードデータ送信処理を行うようにサーバ１１０が後にクライアント１３０に要求する際に使われるパラメタである。
【０３３１】
そして、次のステップＳ４１７でログ管理部１１５は、上記条件（２０ａ）〜（２０ｃ）をすべて満たす上記エントリを参照し、当該エントリ中にセーブ時刻が記録されているか否かを判断する。
【０３３２】
当該エントリ中にセーブ時刻が記録されていれば（すなわち、時刻として有効な値がセーブ時刻として記録されていれば）、今回の要求Ｒに基づくファイルＦの保存は、ファイルＦを開いてから２回目以降の保存である。この場合、リンク処理はステップＳ４１８に移行する。
【０３３３】
逆に、当該エントリ中にセーブ時刻が記録されていなければ（すなわち、セーブ時刻が初期値ＮＵＬＬのままであれば）、今回の要求Ｒに基づくファイルＦの保存は、初めての保存である。この場合、リンク処理はステップＳ４２０に移行する。
【０３３４】
ステップＳ４１８でログ管理部１１５は、以下の条件（２１ａ）と（２１ｂ）がともに成り立つか否かを判断する。
【０３３５】
（２１ａ）要求Ｒはセーブ・クローズ要求である。
（２１ｂ）サーバ１１０は一括モードで動作している。
【０３３６】
条件（２１ａ）と（２１ｂ）がともに成り立つ場合、リンク処理はステップＳ４２０に移行する。逆に、条件（２１ａ）と（２１ｂ）のうち少なくとも１つが成り立たない場合、リンク処理はステップＳ４１９に移行する。
【０３３７】
ステップＳ４１９でログ管理部１１５は、ステップＳ４１７で見つけたセーブ時刻（すなわち、前回、ファイルＦが保存された時刻）を、開始時点Ｓとする。開始時点Ｓは、図１０のクリップボードデータ送信処理を行うようにサーバ１１０が後にクライアント１３０に要求する際に使われるパラメタである。
【０３３８】
他方、ステップＳ４２０では、ログ管理部１１５は、ステップＳ４１７で参照した上記エントリ中のオープン時刻を、開始時点Ｓとする。
【０３３９】
以上説明したステップＳ４１６〜Ｓ４２０によれば、サーバ１１０が開始時点Ｓと終了時点Ｅにより指定する期間は、以下の項目（２２ａ）〜（２２ｃ）に示すとおりである。
【０３４０】
（２２ａ）サーバ１１０が一括モードで動作しており、要求Ｒがセーブ・クローズ要求の場合：  ファイルＦが開かれた時刻（または、ファイルＦが新規に作成されたと見なされた時刻）から、ファイルＦが今回の要求Ｒにより保存されて閉じられる時刻までの期間。
（２２ｂ）サーバ１１０が分離モードで動作しており、今回が初めての保存の場合（要求Ｒがセーブ要求であるかセーブ・クローズ要求であるかによらない）：  ファイルＦが開かれた時刻（または、ファイルＦが新規に作成されたと見なされた時刻）から、ファイルＦが今回の要求Ｒにより保存される時刻までの期間。
（２２ｃ）サーバ１１０が分離モードで動作しており、今回が２回目以降の保存の場合（要求Ｒがセーブ要求であるかセーブ・クローズ要求であるかによらない）：  ファイルＦが前回保存されてから、ファイルＦが今回の要求Ｒにより保存される時刻までの期間。
【０３４１】
さて、ステップＳ４１９またはＳ４２０で開始時点Ｓが決定された後、ステップＳ４２１でログ管理部１１５は、要求Ｒの種類を判断する。要求Ｒがセーブ要求の場合、リンク処理はステップＳ４２２に移行する。逆に、要求Ｒがセーブ・クローズ要求の場合、リンク処理はステップＳ４２３に移行する。
【０３４２】
ステップＳ４２２でログ管理部１１５は、ステップＳ４０９で取得した時刻を、セーブ時刻としてログ３０１に記録する。より具体的には、ログ管理部１１５は、ステップＳ４１７で参照したエントリのセーブ時刻として、ステップＳ４０９で取得した時刻を記録する。そして、リンク処理は、図１３のステップＳ４２６に移行する。
【０３４３】
他方、ステップＳ４２３でログ管理部１１５は、ステップＳ４０９で取得した時刻を、セーブ時刻およびクローズ時刻としてログ３０１に記録する。より具体的には、ログ管理部１１５は、ステップＳ４１７で参照したエントリのセーブ時刻およびクローズ時刻として、ステップＳ４０９で取得した時刻を記録する。そして、リンク処理は、図１３のステップＳ４２６に移行する。
【０３４４】
ところで、上記のとおり要求Ｒがクローズ要求の場合には、リンク処理は、ステップＳ４０４からステップＳ４２４へと移行する。要求Ｒがクローズ要求の場合は、「クローズ要求に応じてファイルＦが閉じられる際に、サーバ１１０がファイルＦと他のファイルとの関連性を判断するか否か」ということは、モードと、今までのファイルＦの保存の履歴による。具体的には、以下の項目（２３ａ）〜（２３ｃ）に示すとおりである。
【０３４５】
（２３ａ）ファイルＦが開かれてから、ファイルＦが１回も保存されることなく、今回のクローズ要求に応じて閉じられる場合は、モードによらず、サーバ１１０は、ファイルＦと他のファイルとの関連性を判断しない。なぜなら、ファイル記憶部１１１上に保存されているファイルＦのデータは更新されていないためである。
（２３ｂ）ファイルＦが開かれてから（または、ファイルＦが新規作成されてから）、ファイルＦが今までに１回以上保存されたことがあり、かつ、サーバ１１０が分離モードで動作している場合は、サーバ１１０は、ファイルＦと他のファイルとの関連性を判断しない。なぜなら、第１に、サーバ１１０は、最後の保存の際に、既にファイルＦと他のファイルとの関連性を判断しているからである。そして、第２に、ファイルＦが最後にファイル記憶部１１１に保存された後にクライアント１３０上でローカルに行われる編集作業は、（保存されたファイルＦと他のファイルとの関連性に影響しないので）無視してよいからである。
（２３ｃ）ファイルＦが開かれてから（または、ファイルＦが新規作成されてから）、ファイルＦが今までに１回以上保存されたことがあり、かつ、サーバ１１０が一括モードで動作している場合は、サーバ１１０は、ファイルＦと他のファイルとの関連性を判断する。
【０３４６】
したがって、ステップＳ４２４でログ管理部１１５は、下記条件（２４ａ）と（２４ｂ）がともに成立するか否かを判断する。
【０３４７】
（２４ａ）サーバ１１０が一括モードで動作している。
（２４ｂ）ステップＳ４０４でクローズ時刻を記録したエントリに、セーブ時刻が記録されている。
【０３４８】
条件（２４ａ）と（２４ｂ）の少なくとも一方が成立しない場合、ファイルＦと他のファイルとの関連性をサーバ１１０が判断する必要がないので、サーバ側のリンク処理は終了する。逆に、条件（２４ａ）と（２４ｂ）がともに成立する場合、リンク処理はステップＳ４２５へと移行する。
【０３４９】
そして、ステップＳ４２５でログ管理部１１５は、ステップＳ４０４でクローズ時刻を記録したエントリのオープン時刻を開始時点Ｓとし、当該エントリのセーブ時刻を終了時点Ｅとする。そして、リンク処理は図１３のステップＳ４２６に移行する。
【０３５０】
ステップＳ４２６でログ管理部１１５は、ファイルＦのフルパスＰを抽出部１１８に通知する。
【０３５１】
すると、次のステップＳ４２７で抽出部１１８は、ファイル記憶部１１１内の、フルパスＰで識別される場所を参照することで、ファイルＦのデータを読み込む。そして、抽出部１１８は、ファイルＦのテキスト情報を抽出し、抽出したテキスト情報を比較部１１９に出力する。
【０３５２】
ステップＳ４２７における抽出部１１８によるテキスト情報の抽出方法は、実施形態に応じた方法であってよい。例えば、ファイルＦがプレインテキストファイル（plain text file）であれば、抽出部１１８は、ファイルＦのデータそのものを比較部１１９に出力してもよい。しかし、ファイルＦは、文書作成アプリケーションや表計算アプリケーションなどの何らかのアプリケーションソフトウェアのファイル（つまり、アプリケーション特有のフォーマットのバイナリファイル）の場合もある。
【０３５３】
ある種のファイルフォーマットに関しては、当該ファイルフォーマットのバイナリファイルからテキスト情報を抽出するためのプログラムが知られている。よって、抽出部１１８は、そのような公知のプログラムを用いて実現されてもよい。
【０３５４】
あるいは、抽出部１１８は、プリンタドライバを用いて、ファイルＦから、適宜のＰＤＬ（Page Description Language：ページ記述言語）で記述された印刷メタデータを取得してもよい。つまり、抽出部１１８は、プリンタドライバを用いて、ファイルＦを、ＰＤＬで記述された形式（以下「ＰＤＬ形式」という）に変換してもよい。ＰＤＬの具体例としては、例えば、ＥＭＦ（Enhanced Metafile）、ＸＰＳ（XML Paper Specification；XMLはExtensible Markup Languageの略）、ＰＳ（PostScript）、ＰＤＦ（Portable Document Format）などが挙げられる。
【０３５５】
そして、抽出部１１８は、取得した印刷メタデータを解析することにより、テキスト情報を抽出してもよい。
【０３５６】
より具体的には、ファイルＦの作成に使われたアプリケーション自体か、または、ファイルＦのフォーマットを受け付け可能なビューワ（viewer）アプリケーションが、サーバ１１０にインストールされているものとする。この場合、抽出部１１８は、ＰＤＬ形式への変換のためのプリンタドライバを指定して、ファイルＦの作成に使われたアプリケーション自体または上記閲覧アプリケーションの印刷機能を呼び出す。すると、プリンタドライバが、ファイルＦをＰＤＬ形式に変換する。なお、抽出部１１８は、例えばファイルＦの拡張子から、「どのアプリケーションの印刷機能を呼び出すのか」を決定してもよい。
【０３５７】
抽出部１１８は、ＰＤＬ形式に変換されたデータを解析することにより、テキスト情報を抽出してもよい。
【０３５８】
例えば、文字コードを指定して文字を描画するための文字描画命令が、ＰＤＬ形式に変換されたデータの中に含まれる場合がある。この場合、抽出部１１８は、文字描画命令から文字コードを抽出することにより、テキスト情報を抽出してもよい。
【０３５９】
また、ＰＤＬ形式に変換されたデータの中には、文字のグリフコード（glyph code）とフォントデータを指定して文字を描画するための文字描画命令が含まれる場合がある。この場合、抽出部１１８は、文字描画命令を実行することで、実行結果として得られる画像を取得してもよい。抽出部１１８は、取得した画像に対して、文字認識処理を実行することにより、テキスト情報を抽出してもよい。
【０３６０】
また、ポリゴン等のベクタオブジェクトにより文字が表されている場合や、ビットマップ画像により文字が表されている場合もあり得る。そこで、ＰＤＬ形式に変換されたデータの中に、ベクタオブジェクトやビットマップ画像を描画するための描画命令が含まれる場合、抽出部１１８は、描画命令を実行することで、実行結果として得られる画像を取得してもよい。
【０３６１】
抽出部１１８は、取得した画像に対して、文字認識処理を実行することにより、テキスト情報を抽出してもよい。なお、抽出部１１８は、ベクタオブジェクトやビットマップ画像を描画するための描画命令に関しては、適宜の前処理を行い、描画されるものが文字である可能性を判断し、文字の可能性が高い場合にのみ文字認識処理を実行してもよい。上記前処理として、例えば特開２００９−１４０１２７号（上記の特許文献３）に記載されている処理を抽出部１１８が行ってもよい。
【０３６２】
また、ステップＳ４２８でログ管理部１１５は、開始時点Ｓと終了時点Ｅをクリップボードデータ受信部１１７に通知する。
【０３６３】
すると、次のステップＳ４２９でクリップボードデータ受信部１１７は、開始時点Ｓと終了時点Ｅを指定して、通信制御部１１２を介して、クライアント１３０にクリップボードデータを要求する。
【０３６４】
この要求をクライアント１３０が受信すると、クライアント１３０は図１０のクリップボードデータ送信処理を実行する。よって、次のステップＳ４３０でクリップボードデータ受信部１１７は、通信制御部１１２を介してクライアント１３０からクリップボードデータを受信する。
【０３６５】
つまり、クリップボードデータ受信部１１７は、開始時点Ｓから終了時点Ｅまでの期間の少なくとも一部においてクリップボード１３５に記憶されていた各データを、受信する。各データは、クリップボード１３５に当該データが書き込まれた時刻と対応づけられている。クリップボードデータ受信部１１７は、受信したクリップボードデータを、対応づけられた時刻とともに、比較部１１９に通知する。
【０３６６】
以下では説明の便宜上、クリップボードデータ受信部１１７が受信したクリップボードデータの数を「ｎ」とする（０≦ｎ）。また、０＜ｎの場合は、ｎ個のクリップボードデータのうち、ｉ番目のクリップボードデータを「クリップボードデータＤｉ」と表記する（１≦ｉ≦ｎ）。
【０３６７】
例えば、ファイルＦが図１のファイル１であり、サーバ１１０が分離モードで動作しており、要求Ｒが時刻Ｔ４におけるセーブ要求であるとする。この場合、開始時点Ｓは時刻Ｔ２であり、終了時点Ｅは時刻Ｔ４である。よって、ステップＳ４３０でクリップボードデータ受信部１１７は、クリップボードデータＤ１とＤ２を取得する。したがって、この場合はｎ＝２である。
【０３６８】
ステップＳ４３１で比較部１１９は、インデックス変数ｉを１に初期化する。
そして、次のステップＳ４３２で比較部１１９は、ｉ≦ｎが成り立つか否かを判断する。ｉ≦ｎが成り立つ場合、「クリップボードデータＤｉが他のファイルからファイルＦへとコピー・アンド・ペーストされた」という可能性について検討するため、リンク処理はステップＳ４３３に移行する。逆に、ｉ≦ｎが成り立たない場合は、ｎ＝０であるか、または、既にｎ個のクリップボードデータすべてについて検討が終了している。よって、ｉ≦ｎが成り立たない場合、サーバ側のリンク処理は終了する。
【０３６９】
ステップＳ４３３では、クリップボードデータＤｉと、クリップボードデータＤｉに関連づけられた時刻（以下「書き込み時刻Ｔｉ」と表記する）に関して、図１４〜１５に示す比較処理が実行される。
【０３７０】
書き込み時刻Ｔｉは、クリップボードデータＤｉがクリップボード１３５に書き込まれた時刻である。図１０の説明から理解されるとおり、書き込み時刻Ｔｉは、クリップボードデータＤｉと関連づけられて、クリップボードデータＤｉとともに、クライアント１３０からクリップボードデータ受信部１１７へと通知される。そして、書き込み時刻Ｔｉは、上記のとおりステップＳ４３０で、クリップボードデータＤｉとともに、クリップボードデータ受信部１１７から比較部１１９へと通知される。
【０３７１】
その後、ステップＳ４３４で比較部１１９は、インデックス変数ｉを１だけインクリメントする。そして、リンク処理はステップＳ４３２に戻る。
【０３７２】
さて、図１４〜１５は、サーバ１１０側の比較処理のフローチャートである。比較処理は、上記の図１３のステップＳ４３３に対応する。なお、以下では説明の便宜上、ステップＳ４２７でファイルＦから抽出されたテキスト情報を「テキスト情報Ｘ」と表記する。
【０３７３】
また、図１に関して説明したように、ファイル同士を関連づけるための条件として、条件（３ａ）と（３ｂ）が使われてもよいし、条件（４ａ）と（４ｂ）が使われてもよいし、または、条件（５ａ）と（５ｂ）が使われてもよい。以下に述べるステップＳ５０１〜Ｓ５０３とＳ５１１に関する説明から明らかなように、第１実施形態では、具体的には条件（４ａ）と（４ｂ）が使われる。
【０３７４】
さて、ステップＳ５０１で比較部１１９は、クリップボードデータＤｉの文字列長（以下「Ｌｉ」と表記する）と、所定の閾値（以下「Ｌ」と表記する）を比較する。Ｌｉ＜Ｌのとき、比較処理はステップＳ５０２に移行する。逆に、Ｌｉ≧Ｌのとき、比較処理はステップＳ５０３に移行する。
【０３７５】
ステップＳ５０２で比較部１１９は、クリップボードデータＤｉを検索ターム（search term）として用いて、ファイルＦから得られたテキスト情報Ｘに対して、完全一致検索を行う。そして、比較処理はステップＳ５０４に移行する。
【０３７６】
他方、ステップＳ５０３で比較部１１９は、クリップボードデータＤｉを検索タームとして用いて、ファイルＦから得られたテキスト情報Ｘに対して、曖昧検索を行う。ステップＳ５０３では、曖昧検索のための適宜の手法が使われてよい。例えば、比較部１１９は、クリップボードデータＤｉと部分一致する文字列をテキスト情報Ｘの中から探してもよい。そして、比較処理はステップＳ５０４に移行する。
【０３７７】
なお、以上のようにＬｉ＜Ｌのときに比較部１１９が完全一致検索を行う理由は、ユーザが短い文字列をコピー・アンド・ペーストする場合、「ユーザは、ペーストした文字列そのものを再利用するために、コピー・アンド・ペースト操作を行う」と推定されるからである。また、Ｌｉ≧Ｌのときに比較部１１９が曖昧検索を行う理由は、ユーザが長い文字列をコピー・アンド・ペーストする場合、「ユーザは、ペーストした文字列を少し編集して再利用したいので、コピー・アンド・ペースト操作を行う」という可能性を無視しきれないためである。したがって、閾値Ｌは、以上のような理由を勘案して適宜に定められることが好ましい。
【０３７８】
ステップＳ５０４で比較部１１９は、「ステップＳ５０２またはＳ５０３の検索の結果として、検索ターム（すなわちクリップボードデータＤｉ）にマッチする文字列が見つかったか否か」を判断する。
【０３７９】
もし、クリップボードデータＤｉにマッチする文字列がテキスト情報Ｘ中に見つかった場合は、他のファイル中のデータが、クリップボード１３５を介して、ファイルＦにおいて再利用された可能性がある。そこで、クリップボードデータＤｉにマッチする文字列が見つかった場合は、この可能性について調査するために、比較処理はステップＳ５０５へと移行する。
【０３８０】
逆に、クリップボードデータＤｉにマッチする文字列がテキスト情報Ｘ中に見つからなかった場合は、上記のような可能性について検討する必要はない。よって、クリップボードデータＤｉと書き込み時刻Ｔｉについての比較処理は終了する。
【０３８１】
さて、ステップＳ５０５で比較部１１９は、書き込み時刻Ｔｉを抽出部１１８に通知する。この通知は、「ユーザ名Ｕを持つユーザによりクライアント１３０上で書き込み時刻Ｔｉに開かれていた各ファイル（ただしファイルＦ以外）から、テキスト情報を抽出するよう、比較部１１９が抽出部１１８に要求する」ことを意味する。
【０３８２】
そして、ステップＳ５０６で抽出部１１８は、書き込み時刻Ｔｉをログ管理部１１５に通知する。この通知は、「ユーザ名Ｕを持つユーザによりクライアント１３０上で書き込み時刻Ｔｉに開かれていたファイル（ただしファイルＦ以外）を知らせるよう、抽出部１１８がログ管理部１１５に要求する」ことを意味する。
【０３８３】
すると、ステップＳ５０７でログ管理部１１５は、ユーザ名Ｕを持つユーザによりクライアント１３０上で書き込み時刻Ｔｉに開かれていたファイルを特定する。以下では説明の便宜上、ユーザ名Ｕを持つユーザによりクライアント１３０上で書き込み時刻Ｔｉに開かれていた、ファイルＦ以外のファイルの個数を「ｍ」とする（０≦ｍ）。また、０＜ｍの場合、特定されたｊ番目のファイルを「ファイルＧｊ」と表記し、ファイルＧｊを識別する識別情報としてのフルパスを「フルパスＱｊ」と表記する（１≦ｊ≦ｍ）。
【０３８４】
具体的には、ログ管理部１１５は、ログ記憶部１１４上のログ３０１において、以下の条件（２５ａ）〜（２５ｃ）をすべて満たすエントリを検索する。
【０３８５】
（２５ａ）ユーザ名Ｕを含む。
（２５ｂ）オープン時刻が書き込み時刻Ｔｉより前である。
（２５ｃ）クローズ時刻がＮＵＬＬであるか、または、書き込み時刻Ｔｉより後である。
【０３８６】
検索の結果見つかるエントリの個数が、上記の「ｍ」である。そして、見つかったｊ番目のエントリに記録されているフルパスが、上記のフルパスＱｊである。また、フルパスＱｊにより識別されるファイルが、上記のファイルＧｊである。各ファイルＧｊは、クリップボードデータＤｉのコピー元の可能性がある。
【０３８７】
以上のようにして、ログ管理部１１５は、ユーザ名Ｕを持つユーザによりクライアント１３０上で書き込み時刻Ｔｉに開かれていたファイルＧ１〜Ｇｍを特定する。そして、ログ管理部１１５は、特定したファイルＧ１〜ＧｍそれぞれのフルパスＱ１〜Ｑｍを抽出部１１８に通知する。
【０３８８】
すると、ステップＳ５０８で抽出部１１８は、ファイルＧ１〜Ｇｍの各々について、ファイル記憶部１１１を参照してテキスト情報を抽出する。つまり、１≦ｊ≦ｍなる各ｊについて、比較部１１９は、通知されたフルパスＱｊで識別される場所（具体的にはファイル記憶部１１１内の場所）に格納されているファイルＧｊから、図１３のステップＳ４２７と同様の方法により、テキスト情報を抽出する。以下では、ファイルＧｊから抽出されたテキスト情報を、「テキスト情報Ｙｊ」と表記する。
【０３８９】
そして、抽出部１１８は、抽出したテキスト情報Ｙ１〜Ｙｍを比較部１１９に出力する。なお、ｍ＝０の場合は、抽出部１１８は、単に、「ｍ＝０である（すなわち、ユーザ名Ｕを持つユーザにより、クライアント１３０上で書き込み時刻Ｔｉに開かれていたファイルＦ以外のファイルは、存在しない）」ということを比較部１１９に通知する。
【０３９０】
例えば、クリップボードデータＤｉが図１のクリップボードデータＤ３である場合、書き込み時刻Ｔｉは図１の時刻Ｔ５である。そして、時刻Ｔ５に開かれているファイル１以外のファイルは、ファイル３と４のみである。よって、この場合、ｍ＝２である。
【０３９１】
この場合、クリップボードデータＤ３がファイル３または４からコピーされた可能性がある。よって、当該可能性について検討するために、ステップＳ５０８では、抽出部１１８がファイル３と４からテキスト情報を抽出し、抽出したテキスト情報を比較部１１９に出力する。
【０３９２】
続いて、ステップＳ５０９で比較部１１９は、インデックス変数ｊを１に初期化する。
そして、次のステップＳ５１０で比較部１１９は、ｊ≦ｍが成り立つか否かを判断する。ｊ≦ｍが成り立つ場合、「クリップボードデータＤｉがファイルＧｊからファイルＦへとコピー・アンド・ペーストされた」という可能性について検討するため、比較処理はステップＳ５１１に移行する。逆に、ｊ≦ｍが成り立たない場合は、ｍ＝０であるか、または、既にｍ個のファイルＧ１〜Ｇｍすべてについて検討が終了している。よって、ｊ≦ｍが成り立たない場合、比較処理は終了する。
【０３９３】
ステップＳ５１１で比較部１１９は、クリップボードデータＤｉを検索タームとして用いて、ファイルＧｊから得られたテキスト情報Ｙｊに対して、完全一致検索を行う。
【０３９４】
次のステップＳ５１２で比較部１１９は、検索ターム（すなわちクリップボードデータＤｉ）がテキスト情報Ｙｊの中に見つかったか否かを判断する。
【０３９５】
検索タームがテキスト情報Ｙｊの中に見つかった場合は、「ファイルＧｊ中のデータ（つまりクリップボードデータＤｉ）がファイルＦにおいて再利用された」と推定される。よって、検索ファイルＦとファイルＧｊとを関連づけるために、比較処理はステップＳ５１３へと移行する。
【０３９６】
逆に、検索タームがテキスト情報Ｙｊの中に見つからなかった場合は、「検索ファイルＦとファイルＧｊの間には、データの再利用による関連性はない」と推定される。よって、比較処理はステップＳ５１５へと移行する。
【０３９７】
ステップＳ５１３で比較部１１９は、ファイルＦのフルパスＰと、ファイルＧｊのフルパスＱｊと、クリップボードデータＤｉを、リンク生成部１２０に通知する。なお、抽出部１１８は、ファイルから抽出したテキスト情報を比較部１１９に出力するときに、ファイルのフルパスもともに比較部１１９に通知する。よって、比較部１１９は、フルパスＰとフルパスＱｊを認識している。
【０３９８】
そして、ステップＳ５１４でリンク生成部１２０は、リンク記憶部１２１上のリンクテーブル３０３に、新規エントリを追加する。新規エントリは、具体的には、ファイルＦのフルパスＰと、ファイルＧｊのフルパスＱｊと、クリップボードデータＤｉを対応づけるエントリである。この新規エントリの追加により、ファイルＦとファイルＧｊが関連づけられる。つまり、追加される新規エントリは、図１に関して説明した関連づけ情報の具体例である。
【０３９９】
なお、実施形態によっては、曖昧検索の結果として「クリップボードデータＤｉと類似である」と見なされたデータを記憶するためのフィールドが、さらにリンクテーブル３０３にあってもよい。
【０４００】
続いて、ステップＳ５１５で比較部１１９は、インデックス変数ｊを１だけインクリメントする。そして、比較処理はステップＳ５１０に戻る。
【０４０１】
以上説明した第１実施形態によれば、「実際にクリップボード１３５を介してファイル間でデータの再利用が行われた」という蓋然性が高い場合に、ファイル同士が関連づけられる。よって、関連づけ情報（具体的にはリンク記憶部１２１に記憶されるリンクテーブル３０３）の信頼性が高い。
【０４０２】
また、第１実施形態によれば、異なるアプリケーション間のファイル同士でも関連づけが可能である。より詳しくは、ユーザに対して特定のアプリケーションの使用を義務づけたり、他のアプリケーションの使用を禁じたりしなくても、データの再利用に基づくファイル同士の関連性の検出が可能である。つまり、ユーザの利便性を犠牲にしなくても、第１実施形態によれば、信頼性の高い関連づけ情報が得られる。
【０４０３】
また、異なるアプリケーション間のファイル同士の関連づけが可能であることは、検出漏れが少ないことを意味する。したがって、図４のステップＳ６〜Ｓ８に示すような関連ファイルの検索では、高い再現率（recall）が得られる。
【０４０４】
続いて、スタンドアロンシステムが使われる第２実施形態について説明する。図１６は、第２実施形態のシステム構成図である。
【０４０５】
図１６のコンピュータ４００は、図２のファイル記憶部１１１と類似のファイル記憶部４０１を有する。ファイル記憶部４０１には、コンピュータ４００が管理する複数のファイルが記憶される。
【０４０６】
また、図１６には、コンピュータ４００上で２つのアプリケーション４０２と４０３が動作する場合が例示されているが、コンピュータ４００上で動作するアプリケーションの数は任意である。
【０４０７】
コンピュータ４００はさらに、図２のクリップボード１３５と類似のクリップボード４０４を有する。クリップボード４０４は、アプリケーション４０２または４０３により書き換えられることがある。
【０４０８】
コンピュータ４００は、図２のログ記憶部１１４およびログ管理部１１５と類似の、ログ記憶部４０５およびログ管理部４０６も有する。なお、図５に示す第１実施形態のログの各エントリはユーザ名を含むが、図１６のログ記憶部４０５が記憶するログでは、ユーザ名は省略可能である。
【０４０９】
コンピュータ４００は、図２の監視部１３６およびクリップボードデータ記憶部１３８と類似の、監視部４０７およびクリップボードデータ記憶部４０８も有する。
【０４１０】
また、図２ではサーバ１１０とクライアント１３０がそれぞれ時計を有するのと同様に、図１６では、コンピュータ４００が時計４０９を有する。時計４０９は、ログ管理部４０６と監視部４０７のどちらからも参照可能である。
【０４１１】
コンピュータ４００はさらに、図２のサーバ１１０の抽出部１１８と類似の第１抽出部４１０を有し、クライアント１３０の抽出部１３９と類似の第２抽出部４１１を有する。また、コンピュータ４００は、図２の比較部１１９、リンク生成部１２０、およびリンク記憶部１２１と類似の、比較部４１２、リンク生成部４１３、およびリンク記憶部４１４を有する。
【０４１２】
以上のようなコンピュータ４００によれば、例えば、クリップボードデータと時刻情報を取得する取得手段が、第２抽出部４１１により実現されてもよい。また、時刻情報の示す時刻に開かれていたファイルを特定する特定手段は、ログ管理部４０６により実現されてもよい。そして、ファイル同士の関連づけを行う関連づけ手段が、第１抽出部４１０と比較部４１２とリンク生成部４１３により実現されてもよい。
【０４１３】
ところで、第１実施形態では、アプリケーション１３３と１３４からのファイル操作は、いずれも、ファイル送受信部１３２、通信制御部１３１、ネットワーク１５０、通信制御部１１２、およびファイル送受信部１１３を介して行われる。他方、第２実施形態では、アプリケーション４０２と４０３からのファイル操作は、いずれも、ネットワーク通信をともなわない。アプリケーション４０２と４０３は、いずれも、例えば適宜のＡＰＩ関数（具体的には、ＯＳが提供するファイルシステムに関するＡＰＩ関数）の呼び出しにより、下記のファイル操作（２６ａ）〜（２６ｆ）を行うことができる。
【０４１４】
（２６ａ）ファイル記憶部４０１内の既存のファイルを開く操作。
（２６ｂ）アプリケーション上で現在開いている既存のファイルを、開いたまま、ファイル記憶部４０１に保存しなおす操作。
（２６ｃ）アプリケーションが新規作成したファイルを、新たにファイル記憶部４０１に保存する操作。
（２６ｄ）ファイル記憶部４０１内に保存されており現在開いているファイルを閉じる操作。
（２６ｅ）アプリケーション上で現在開いている既存のファイルを、ファイル記憶部４０１に保存しなおして閉じる操作。
（２６ｆ）アプリケーション上で新規作成されたものの、まだファイル記憶部４０１には保存されていないファイルを、新たにファイル記憶部４０１に保存するとともに閉じる操作。
【０４１５】
例えば、ファイル操作（２６ａ）は、オープン要求に相当するＡＰＩ関数の呼び出しにより実現されてもよい。同様に、ファイル操作（２６ｂ）と（２６ｃ）は、いずれも、セーブ要求に相当するＡＰＩ関数の呼び出しにより実現されてもよい。
【０４１６】
また、ファイル操作（２６ｄ）は、クローズ要求に相当するＡＰＩ関数の呼び出しにより実現されてもよい。そして、ファイル操作（２６ｅ）と（２６ｆ）は、いずれも、セーブ・クローズ要求に相当するＡＰＩ関数の呼び出しにより実現されてもよい。
【０４１７】
したがって、第２実施形態のログ管理部４０６は、アプリケーション４０２と４０３それぞれからの、上記のようなＡＰＩ関数の呼び出しを監視する。例えば、ログ管理部４０６は、ＡＰＩ関数の呼び出しをフックしてもよい。ログ管理部４０６は、ＡＰＩ関数の呼び出しを検出すると、検出したＡＰＩ関数の種類に応じた適宜の処理（例えば、図８のステップＳ１１３、図１１のステップＳ４０４、ステップＳ４０９〜Ｓ４２６などの処理）を実行する。
【０４１８】
また、第２実施形態では、ログ管理部４０６が第２抽出部４１１に開始時点Ｓと終了時点Ｅを直接指定し、第２抽出部４１１がクリップボードデータおよび書き込み時刻を比較部４１２に直接通知する。したがって、第１実施形態におけるネットワーク通信（具体的には、クリップボードデータ受信部１１７と通信制御部１１２とネットワーク１５０と通信制御部１３１とクリップボードデータ送信部１４０を介した通信）は、第２実施形態では不要である。
【０４１９】
以上のように、第２実施形態では、ネットワーク通信が不要であり、ユーザ名ごとの管理も不要である。しかし、その他の点は、第１実施形態と類似である。よって、コンピュータ４００内の各構成要素の動作のさらなる詳細については、説明を省略する。
【０４２０】
ところで、図１６のコンピュータ４００は、例えば図３のコンピュータ２００であってもよい。この場合、コンピュータ４００内の各構成要素は、例えば以下のハードウェアにより実現されてもよい。
【０４２１】
ファイル記憶部４０１は、記憶装置２０７であってもよい。アプリケーション４０２と４０３は、ＣＰＵ２０１により実行されるプログラムの例である。クリップボード４０４は、ＲＡＭ２０３により実現されてもよい。
【０４２２】
ログ記憶部４０５は、ＲＡＭ２０３、記憶装置２０７、またはその双方により実現されてもよい。ログ管理部４０６と監視部４０７は、いずれも、プログラムを実行するＣＰＵ２０１により実現されてもよい。
【０４２３】
クリップボードデータ記憶部４０８は、ＲＡＭ２０３により実現されてもよい。時計４０９は、ＣＰＵ２０１内のハードウェアタイマにより実現されてもよい。
【０４２４】
第１抽出部４１０、第２抽出部４１１、比較部４１２、およびリンク生成部４１３の各々は、プログラムを実行するＣＰＵ２０１により実現されてもよい。リンク記憶部４１４は、記憶装置２０７により実現されてもよい。
【０４２５】
ところで、上述の第１および第２実施形態には、他の技術と比べて、いくつかの利点がある。以下ではそれらの利点について説明する。
【０４２６】
例えば、ユーザは、ある特定のファイルに関連する他のファイルを知りたいことがある。この場合、ユーザは、特定のファイルに含まれる文字列を検索タームとして指定して全文検索を実行することにより、特定のファイルに関連する他のファイルを探してもよい。
【０４２７】
しかし、検索タームの選択にもよるが、全文検索では、実際には無関係なファイルが大量に見つかることもあり得る。逆に、実際には関係のあるファイルがうまく見つからないこともあり得る。つまり、全文検索による関連ファイルの検出には限界がある。
【０４２８】
また、比較例の１つとして、ファイル中のテキスト情報に対して形態素解析を行い、形態素解析の結果に基づいてファイル同士を関連づける技術も考えられる。例えば、形態素を出現順または頻度順に並べた特徴ベクトルを用いて、類似度を算出する方法が、比較例の１つとして考えられる。また、ある種の指標（例えば、ｔｆ（term frequency）とｉｄｆ（inverse document frequency））を用いて、ファイル同士の類似度を算出する方法も、比較例の１つとして考えられる。
【０４２９】
しかしながら、大量のファイルが存在する場合は、単に形態素の出現頻度のみに注目するだけでは、ある特定のファイルに関連する他のファイルを精度よく検出することは難しい。実際には関連性の薄いファイルが検出されてしまうことも多い。また、大量のファイルが存在する場合に、各ファイルについて形態素解析を行うことは、処理負荷が大きい。
【０４３０】
したがって、ファイルの内容自体だけに基づいてファイル間の関連性を精度よく検出することには、困難がともなう。そこで、ユーザの振る舞いに基づいてファイル間の関連性の検出の精度を高める手法が考えられる。
【０４３１】
例えば、ユーザがある特定のアプリケーションを使用することを前提に、当該特定のアプリケーションの文書間でのみ関連性を検出する手法が、比較例の１つとして考えられる。しかし、そのような手法には、「汎用性に欠ける」という欠点がある。
【０４３２】
例えば、ユーザがある特定のアプリケーション（具体的にはクライアントアプリケーションまたはＷｅｂアプリケーション）を使用する場合がある。この場合、当該特定のアプリケーション上でのユーザの振る舞いを当該特定のアプリケーションが検出することで、当該特定のアプリケーションが管理する文書間での関連性が検出され得る。
【０４３３】
例えば、当該特定のアプリケーション上でユーザが文書を閲覧する順番や、ユーザが当該特定のアプリケーション上で文書間のどのリンクをたどったかという履歴などが、検出されてもよい。また、ユーザは、当該特定のアプリケーションが提供する検索メニューから文書を検索し、見つかった文書から一部のデータをコピー・アンド・ペーストして、当該特定のアプリケーションの新規文書を作成する場合もあり得る。当該特定のアプリケーションは、このようなユーザの一連の振る舞いを検出してもよい。
【０４３４】
しかしながら、多くのユーザは、しばしば、特定のアプリケーションのファイル同士に限らず、異なるアプリケーション間のファイル同士の間でも、データを再利用する。よって、特定のアプリケーションが、当該特定のアプリケーション上でのユーザの振る舞いを検出するだけでは、ファイル間の関連性を十分に検出しきれない。つまり、特定の１つのアプリケーションのファイル間でのデータの再利用に基づくファイル間の関連性だけを検出する方法では、ユーザの求める任意のファイル間での関連づけは実現できない。
【０４３５】
また、「ユーザの扱うファイル間の関連性を検出することを目的として、ユーザに特定のアプリケーションのみを使用するよう強制する」ということも、非現実的である。
【０４３６】
多くのユーザは、既に様々なアプリケーションを利用して様々な形式のファイルを作成している。それら様々な形式の既存のファイルを閲覧および編集するための既存の環境を、新たな環境（すなわち特定のアプリケーションのみを使用する環境）に移行することは、ユーザに多大なる不便を強いることになり、非現実的である。
【０４３７】
そこで、特定のアプリケーションに依存せずにファイル間の関連性を検出することが望ましい。
【０４３８】
例えば、２つのファイル間でのデータの再利用においては、多くの場合、両ファイルは、ある時点でともに開かれている。そこで、比較例の１つとして、単純に、ユーザがクライアント上で同時に開いているファイル同士を関連づける手法も考えられる。この手法では、異なるアプリケーションのファイル同士でも関連づけが可能である。
【０４３９】
しかしながら、ユーザは、互いに無関係な複数のファイルを、たまたま同時に開いていることも多い。したがって、単に同時に開かれていたファイル同士を関連づける手法では、精度の良い適切な関連づけは期待しがたい。
【０４４０】
しかし、第１・第２実施形態には、上記に例示したような他の技術と比べて、いくつもの利点がある。
【０４４１】
例えば、第１・第２実施形態によれば、２つのファイルがたまたま同じ形態素を含むだけでは、２つのファイルは関連づけられない。第１・第２実施形態によれば、２つのファイル間で実際にコピー・アンド・ペーストによるデータの再利用が行われた蓋然性が高い場合に、２つのファイルが関連づけられる。
【０４４２】
よって、第１・第２実施形態で検出されて記録される関連性の精度は、比較的高い。また、大量のファイルが存在する場合にも、大量のファイルに対して形態素解析を実行するよりも遥かに低い負荷で、ファイル間の関連性を検出してリンクテーブル３０３をリンク記憶部１２１に記憶することが可能である。
【０４４３】
しかも、第１・第２実施形態によれば、ユーザは不便を強いられることもない。また、第１・第２実施形態のシステムは汎用性も高い。つまり、第１・第２実施形態では、ＯＳにより提供されるクリップボードを介したデータの再利用が監視されるので、ユーザが利用可能なアプリケーションは、特定の１つのアプリケーションに限定されない。よって、ユーザは、慣れ親しんだ環境を使い続けることができる。
【０４４４】
また、第１・第２実施形態によれば、たまたま同時に開かれていただけのファイル同士が関連づけられる可能性は、無視しても差し支えない。換言すれば、ファイルが開かれている時間帯だけでなく、ファイル中のテキスト情報とクリップボードデータの同一性（または類似性）が考慮されたうえでファイル同士が関連づけられるので、関連づけの信頼性は高い。
【０４４５】
なお、最近のある種のＯＳは、セキュリティ向上のため、「現在どのファイルが開かれているか」を第三者のアプリケーションから検知するためのＡＰＩを提供しないことがある。なお、ここで、「第三者のアプリケーション」とは、当該ファイルを開いているアプリケーションとは別のアプリケーションのことである。つまり、クライアント１３０のＯＳによっては、「アプリケーション１３３または１３４によりどのファイルが開かれているか」ということをクライアント１３０上の第三者のアプリケーションが検出するためのＡＰＩは、提供されないことがある。
【０４４６】
しかし、第１実施形態によれば、ファイル操作要求に応じてファイルを操作するファイル送受信部１１３からの通知を利用することで、ログ管理部１１５によりログ３０１が作成される。したがって、第１実施形態によれば、上記のごときＯＳがクライアント１３０で使われている場合にも、ファイル同士の関連づけが可能である。
【０４４７】
また、第１実施形態のシステム１００はクライアントサーバシステムなので、ユーザが複数でもよい。よって、第１実施形態によれば、異なるユーザがそれぞれ作成したファイル間の関連性を検出し、記憶することも可能である。
【０４４８】
例えば、第１のユーザが作成したファイルへの読み出しアクセスが、第２のユーザにも許可されていてもよい。この場合、第２のユーザは、第１のユーザが作成したファイルから、第２のユーザ自身の作成したファイルへと、データをコピー・アンド・ペーストすることで、当該データを再利用してもよい。このようなデータの再利用によるファイル間の関連性も、図８〜１５に示した処理によれば、サーバ１１０において検出され、その検出結果がリンクテーブル３０３に記憶される。
【０４４９】
例えば、第２のユーザが上記のようにデータを再利用して編集したファイルについて、第３のユーザが関心を持つこともあり得る。この場合、第３のユーザは、第３のユーザのクライアント１３０から図４のステップＳ６の検索要求を出すことで、第３のユーザが関心を持っているファイル内のデータの出所（すなわち第１のユーザが作成した上記ファイル）を知ることができる。以上のように複数のユーザをまたいで情報源が判明する機能は、第１実施形態の利点の１つである。
【０４５０】
もちろん、第１実施形態によれば、ある１人のユーザが、自分自身で作成した複数のファイルの中から、あるファイルに関連する別のファイルを検索し、関連ファイルを見つけ出すことも可能である。
【０４５１】
ところで、本発明は上記実施形態に限られるものではない。上記の説明においてもいくつかの変形について説明したが、上記実施形態は、さらに例えば下記の観点から様々に変形することもできる。上記および下記の変形は、相互に矛盾しない限り、任意に組み合わせることが可能である。
【０４５２】
上記の説明では、クリップボードデータがテキストデータである場合について詳しく述べた。しかし、クリップボードデータは、テキストデータのこともあるし、画像データのこともあるし、ベクタオブジェクトデータのこともある。よって、実施形態によっては、サーバ１１０（またはコンピュータ４００）は、テキストデータの再利用に基づいてファイル同士を関連づけるだけでなく、さらに、画像データまたはベクタオブジェクトデータの再利用に基づいてファイル同士を関連づけてもよい。
【０４５３】
サーバ１１０が、さらに画像データまたはベクタオブジェクトデータの再利用にも基づいてファイル同士を関連づける実施形態においては、抽出部１１８は、ファイルから画像データまたはベクタオブジェクトデータも抽出する。同様に、コンピュータ４００の第１抽出部４１０も、実施形態に応じて、ファイルから画像データまたはベクタオブジェクトデータを抽出してもよい。そして、比較部１１９（または比較部４１２）は、画像データ同士の比較を行ってもよいし、ベクタオブジェクトデータ同士の比較を行ってもよい。
【０４５４】
比較部１１９（または比較部４１２）は、例えば、ビットマップ画像データ同士を、個々の画素値を比較することにより、比較してもよい。もちろん、比較部１１９（または比較部４１２）は、画像検索分野で利用される画像同士の類似検索のための適宜の技術を用いて、画像データ同士を比較してもよい。
【０４５５】
図８〜１５には具体的なフローチャートを例示したが、ステップの順番は、矛盾が生じない限り、適宜入れ替えられてもよい。また、互いに入れ替え可能なステップ同士は、並列して実行されてもよい。
【０４５６】
ところで、上記実施形態では、サーバ１１０（またはコンピュータ４００）のモードは、選択可能である。しかし、サーバ１１０（またはコンピュータ４００）のモードは、分離モードまたは一括モードの一方に固定的に定められていてもよい。
【０４５７】
また、上記のとおり、図１４〜１５の比較処理は、ファイル同士を関連づけるための条件として、条件（４ａ）と（４ｂ）が使われる場合の例である。
【０４５８】
しかし、実施形態によっては、条件（３ａ）と（３ｂ）が使われてもよい。つまり、ステップＳ５０１とＳ５０３が省略されてもよい（換言すれば、クリップボードデータＤｉの文字列長Ｌｉによらず、ステップＳ５０２の完全一致検索が行われてもよい）。
【０４５９】
また、実施形態によっては、条件（５ａ）と（５ｂ）が使われてもよい。つまり、比較部１１９（または比較部４１２）は、ステップＳ５１１のようにクリップボードデータＤｉの文字列長Ｌｉによらず完全一致検索を行う代わりに、次のように動作してもよい。すなわち、比較部１１９（または比較部４１２）は、Ｌｉ＜Ｌのときには完全一致検索を行い、Ｌｉ≧Ｌのときには曖昧検索を行ってもよい。
【０４６０】
さらに、条件（４ａ）と（４ｂ）が使われる場合（または条件（５ａ）と（５ｂ）が使われる場合）に、比較部１１９（または比較部４１２）は、文字列長Ｌｉによらずに曖昧検索を行ってもよい。
【０４６１】
また、図１１のステップＳ４１０〜Ｓ４１２から明らかなように、第１実施形態では、ファイルＦが新規作成された場合は、ファイルＦが最初にファイル記憶部１１１に保存される際に、ファイルＦについてオープン時刻が推定され、記録される。しかし、実施形態によっては、ファイルＦがセーブ・クローズ要求またはクローズ要求によって閉じられる際に、現在時刻よりも所定時間前の時刻がオープン時刻として推定されてもよい。その場合の「所定時間」は、図１１のステップＳ４１２の所定時間よりも長めでもよい。
【０４６２】
また、上記実施形態に関して例示した各種のファイル操作要求の具体的実装も、実施形態に応じて様々であってよい。例えば、実施形態によっては、セーブ・クローズ要求が使われなくてもよい。つまり、セーブ要求とクローズ要求の組み合わせが、セーブ・クローズ要求の代わりに使われる実施形態も可能である。
【０４６３】
最後に、上記の種々の実施形態に関して、さらに下記の付記を開示する。
（付記１）
複数のファイルを管理するファイル管理コンピュータに、
前記複数のファイルのうちの第１のファイルが閉じられるよりも前の期間の少なくとも一部においてはクリップボードに記憶されていたデータであるクリップボードデータと、前記クリップボードデータが前記クリップボードに書き込まれた時刻を示す時刻情報を取得し、
前記複数のファイルのうちで、前記時刻情報の示す前記時刻において開かれていた第２のファイルを特定し、
前記第１のファイルが、前記クリップボードデータを含むか、または、データ同士の類似性に関する所定の関係が前記クリップボードデータとの間で成立する第１の類似データを含み、かつ、前記第２のファイルが、前記クリップボードデータを含むか、または、前記クリップボードデータとの間で前記所定の関係が成立する第２の類似データを含む場合、前記第１のファイルと前記第２のファイルを関連づける
ことを含む関連づけ処理を実行させる関連づけプログラム。
（付記２）
前記クリップボードデータと前記時刻情報を取得する処理は、
前記第１のファイルを保存して閉じるための第１の要求、または、
前記第１のファイルを開いたままで保存するための第２の要求
を契機として実行される
ことを特徴とする付記１に記載の関連づけプログラム。
（付記３）
前記第１のファイルは既存のファイルであり、
取得される前記クリップボードデータは、前記第１のファイルが開かれてから、前記第１の要求または前記第２の要求の受領までの期間の少なくとも一部においては前記クリップボードに記憶されていたデータである
ことを特徴とする付記２に記載の関連づけプログラム。
（付記４）
前記第１のファイルは新規作成されたファイルであり、
取得される前記クリップボードデータは、前記第１の要求または前記第２の要求の受領から所定時間以内の過去の期間の少なくとも一部においては前記クリップボードに記憶されていたデータである
ことを特徴とする付記２に記載の関連づけプログラム。
（付記５）
１回以上前記第２の要求が発行された後で再度前記第２の要求が発行された場合、取得される前記クリップボードデータは、直近から２番目の前記第２の要求の受領から、直近の前記第２の要求の受領までの期間の少なくとも一部においては前記クリップボードに記憶されていたデータである
ことを特徴とする付記２から４のいずれか１項に記載の関連づけプログラム。
（付記６）
１回以上前記第２の要求が発行された後で前記第１の要求が発行された場合、取得される前記クリップボードデータは、直近の前記第２の要求の受領から前記第１の要求の受領までの期間の少なくとも一部においては前記クリップボードに記憶されていたデータである
ことを特徴とする付記２から５のいずれか１項に記載の関連づけプログラム。
（付記７）
前記第１のファイルと前記第２のファイルを関連づける処理は、
前記クリップボードデータと、前記第１の類似データと、前記第２の類似データのうち少なくとも１つと、
前記第１のファイルを識別する第１の識別情報と、
前記第２のファイルを識別する第２の識別情報
を含む関連づけ情報を、記憶装置に記憶することを含む
ことを特徴とする付記１から６のいずれか１項に記載の関連づけプログラム。
（付記８）
前記第１のファイルと関係のあるファイルを問い合わせる入力を受け付け、
前記入力に応じて、前記記憶装置を検索し、前記関連づけ情報のうち少なくとも前記第２の識別情報を出力する
ことを前記関連づけ処理がさらに含むことを特徴とする付記７に記載の関連づけプログラム。
（付記９）
前記ファイル管理コンピュータは、ネットワークを介して編集コンピュータと接続されており、
前記第１のファイルは、前記編集コンピュータのユーザに書き込みアクセスが許可されたファイルであり、
前記クリップボードは、前記編集コンピュータのクリップボードであり、
前記編集コンピュータは、前記クリップボードの更新を監視して記録し、
前記第２のファイルを特定する処理は、前記複数のファイルのうちで前記ユーザに読み出しアクセスが許可されている少なくとも一部のファイルの中から、前記時刻情報の示す前記時刻において前記編集コンピュータにより開かれていたファイルを、前記第２のファイルとして特定する処理であり、
前記関連づけ処理は、前記編集コンピュータに前記クリップボードデータと前記時刻情報を要求することを含む
ことを特徴とする付記１から８のいずれか１項に記載の関連づけプログラム。
（付記１０）
前記クリップボードは、前記ファイル管理コンピュータのクリップボードであり、
前記関連づけ処理は、前記クリップボードの更新を監視し、前記クリップボードに新規データが書き込まれるたびに、前記新規データと、前記新規データが前記クリップボードに書き込まれた時刻を示す書き込み時刻情報との組を記憶装置に記憶することを含み、
前記クリップボードデータと前記時刻情報を取得する処理は、前記記憶装置から前記クリップボードデータと前記時刻情報を読み出すことを含む
ことを特徴とする付記１から８のいずれか１項に記載の関連づけプログラム。
（付記１１）
前記クリップボードデータは、テキストデータ、画像データ、またはベクタオブジェクトデータであることを特徴とする付記１から１０のいずれか１項に記載の関連づけプログラム。
（付記１２）
複数のファイルを管理するコンピュータが、
前記複数のファイルのうちの第１のファイルが閉じられるよりも前の期間の少なくとも一部においてはクリップボードに記憶されていたデータであるクリップボードデータと、前記クリップボードデータが前記クリップボードに書き込まれた時刻を示す時刻情報を取得し、
前記複数のファイルのうちで、前記時刻情報の示す前記時刻において開かれていた第２のファイルを特定し、
前記第１のファイルが、前記クリップボードデータを含むか、または、データ同士の類似性に関する所定の関係が前記クリップボードデータとの間で成立する第１の類似データを含み、かつ、前記第２のファイルが、前記クリップボードデータを含むか、または、前記クリップボードデータとの間で前記所定の関係が成立する第２の類似データを含む場合、前記第１のファイルと前記第２のファイルを関連づける
ことを特徴とする関連づけ方法。
（付記１３）
複数のファイルのうちの第１のファイルが閉じられるよりも前の期間の少なくとも一部においてはクリップボードに記憶されていたデータであるクリップボードデータと、前記クリップボードデータが前記クリップボードに書き込まれた時刻を示す時刻情報を取得する取得手段と、
前記複数のファイルのうちで、前記時刻情報の示す前記時刻において開かれていた第２のファイルを特定する特定手段と、
前記第１のファイルが、前記クリップボードデータを含むか、または、データ同士の類似性に関する所定の関係が前記クリップボードデータとの間で成立する第１の類似データを含み、かつ、前記第２のファイルが、前記クリップボードデータを含むか、または、前記クリップボードデータとの間で前記所定の関係が成立する第２の類似データを含む場合、前記第１のファイルと前記第２のファイルを関連づける関連づけ手段
を備えることを特徴とする情報処理装置。
【符号の説明】
【０４６４】
Ｄ１〜Ｄ５  クリップボードデータ
Ｔ１〜Ｔ８  時刻
１〜５  ファイル
６、１３５、４０４  クリップボード
１００  システム
１１０  サーバ
１１１、４０１  ファイル記憶部
１１２、１３１  通信制御部
１１３、１３２  ファイル送受信部
１１４、４０５  ログ記憶部
１１５、４０６  ログ管理部
１１６、１３７、４０９  時計
１１７  クリップボードデータ受信部
１１８、１３９  抽出部
１１９、４１２  比較部
１２０、４１３  リンク生成部
１２１、４１４  リンク記憶部
１３０  クライアント
１３３、１３４、４０２、４０３  アプリケーション
１３６、４０７  監視部
１３８、４０８  クリップボードデータ記憶部
１４０  クリップボードデータ送信部
１５０、２２０  ネットワーク
２００、２４０、２６０、４００  コンピュータ
２０１、２４１  ＣＰＵ
２０２、２４２  ＲＯＭ
２０３、２４３  ＲＡＭ
２０４、２４４  通信インタフェイス
２０５、２４５  入力装置
２０６、２４６  出力装置
２０７、２４７  記憶装置
２０８、２４８  駆動装置
２０９、２４９  バス
２１０、２５０  記憶媒体
２３０  プログラム提供者
３０１  ログ
３０２  クリップボードデータテーブル
３０３  リンクテーブル
４１０  第１抽出部
４１１  第２抽出部
【図１】
2014041451.tif 000003
【図２】
2014041451.tif 000004
【図３】
2014041451.tif 000005
【図４】
2014041451.tif 000006
【図５】
2014041451.tif 000007
【図６】
2014041451.tif 000008
【図７】
2014041451.tif 000009
【図８】
2014041451.tif 000010
【図９】
2014041451.tif 000011
【図１０】
2014041451.tif 000012
【図１１】
2014041451.tif 000013
【図１２】
2014041451.tif 000014
【図１３】
2014041451.tif 000015
【図１４】
2014041451.tif 000016
【図１５】
2014041451.tif 000017
【図１６】
2014041451.tif 000018