(57)【要約】  方法は、第1のファイルと関連付けられたアクションが第1のクライアントをユーザが用いることにより実施されたことを示すイベントを受信するステップを含む。そのアクションは、第1のファイルを他のクライアントに送信することとは無関係である。本方法はまた、第1のクライアントを用いたイベントに応じて、第1のファイルから自動的にコンテンツを抽出し、かつコンテンツと関連付けるためのメタデータを生成するステップと、同位クライアントおよび第1のクライアントが現在ネットワーク上で動作しており、かつ互いに視認可能である場合、同位クライアントにコンテンツおよびメタデータを、第1のクライアントを用いて送信するステップとを含む。送信のタイミングは、イベントが受信された後に自動的に決定される。
2009524889.tif 000002
【特許請求の範囲】
【請求項１】
第1のファイルと関連付けられたアクションが第1のクライアントをユーザが用いることにより実施されたことを示すイベントを受信するステップであり、前記アクションが、前記第1のファイルを他のクライアントに送信することとは無関係であるステップと、
前記第1のクライアントを用いた前記イベントに応じて前記第1のファイルから自動的にコンテンツを抽出し、かつ前記コンテンツと関連付けるためのメタデータを生成するステップと、
同位クライアントおよび前記第1のクライアントが現在ネットワーク上で動作しており、かつ互いに視認可能である場合、前記同位クライアントに前記コンテンツおよび前記メタデータを、前記第1のクライアントを用いて送信するステップであり、前記送信のタイミングが前記イベントを受信した後に自動的に決定されるステップと
を含む方法。
【請求項２】
ファイルを送信することとは無関係である前記アクションが、ファイルのアクセス、またはファイルのセーブであり、また前記第1のファイルから前記抽出されるコンテンツが、前記ファイルのコピー、または前記ファイルの前記コンテンツのコピーである、請求項1に記載の方法。
【請求項３】
前記コンテンツを、要求するクライアントに送信するようにサーバが構成されたことを示す指示を前記サーバから受信するステップと、前記指示を受信しており、かつ前記同位クライアントが前記第1のクライアントに現在ネットワーク接続されていない場合、前記コンテンツおよび前記メタデータを前記サーバに送信するステップとをさらに含む、請求項1に記載の方法。
【請求項４】
サーバから要件を受信するステップと、前記要件を満たす前記メタデータの位置を特定するステップと、前記同位クライアントに送信するために、前記メタデータと関連付けられた前記コンテンツを選択するステップとをさらに含む、請求項3に記載の方法。
【請求項５】
前記要件が、タイムスタンプ値またはデータビット値を含む、請求項4に記載の方法。
【請求項６】
前記第1のクライアント上で生ずる複数のイベントに応じて、前記第1のクライアントを用いて、複数のファイルから、追加のコンテンツを抽出するステップと、前記追加のコンテンツが送信される順番を指定する1つまたは複数の優先順位アルゴリズムに基づいて、前記追加のコンテンツを前記同位クライアントに送信するステップとをさらに含む、請求項5に記載の方法。
【請求項７】
前記コンテンツおよびメタデータを同位クライアントに送信する前記ステップが、前記コンテンツおよび前記メタデータをサーバに送信するステップを含み、前記第1のクライアントが、前記コンテンツおよび前記メタデータを、前記同位クライアントに送信するように前記サーバが構成されていることを示す指示を前記サーバから受信する、請求項1に記載の方法。
【請求項８】
前記コンテンツおよびメタデータを同位クライアントに送信する前記ステップが、前記コンテンツおよび前記メタデータを第2のクライアントに送信するステップを含み、前記第1のクライアントが、前記コンテンツおよび前記メタデータを、前記同位クライアントに送信するように前記第2のクライアントが構成されていることを示す指示を前記第2のクライアントから受信する、請求項1に記載の方法。
【請求項９】
前記コンテンツに含まれる1つまたは複数の記号が、前記コンテンツを識別するように動作可能なキーとして書式設定されるように、前記コンテンツに、前記同位クライアントに送信される前にインデックスを付すステップをさらに含む請求項1に記載の方法。
【請求項１０】
イベントの生成とは独立して、第2のファイルからコンテンツを抽出するステップと、前記第2のファイルからの前記コンテンツにインデックスを付すステップと、前記インデックスが付されたコンテンツを前記同位クライアントに送信するステップとをさらに含む、請求項1に記載の方法。
【請求項１１】
前記第1のファイルから前記コンテンツを抽出するステップが、前記第1のファイルの前記コンテンツを、HTML(ハイパーテキストマークアップ言語)に、またはテキストに変換するステップを含む、請求項1に記載の方法。
【請求項１２】
前記第1のファイルから前記コンテンツを抽出するステップが、前記第1のファイルの元のファイル書式設定を保持する前記第1のファイルのコピーを生成するステップを含む、請求項1に記載の方法。
【請求項１３】
前記第1のクライアントと前記同位クライアントとの間のネットワーク接続が、所定の帯域幅値を超える帯域幅を有することを示す指示を前記第1のクライアントで受信した場合、前記第1のクライアントと前記同位クライアントとの間で渡されるコンテンツ量を制限するためのスループット閾値を増加させるステップをさらに含む、請求項1に記載の方法。
【請求項１４】
前記コンテンツが前記同位クライアントに送信される前に、前記コンテンツと有効期限を関連付けるステップをさらに含む、請求項1に記載の方法。
【請求項１５】
前記コンテンツが前記第1のクライアントから削除される場合、前記同位クライアントに前記コンテンツを削除するための要求を送信するステップをさらに含む、請求項1に記載の方法。
【請求項１６】
1つまたは複数のサーバを有するコンピュータシステムであって、
ファイルの転送とは無関係なアクションを前記ファイルに対してユーザが実施したことを示す指示を、第1のクライアントから受信するためのテーブルマネジャモジュールであり、前記指示が、前記ファイルから抽出されたコンテンツ、および前記コンテンツに割り当てられたメタデータ値を含むテーブルマネジャモジュールと、
前記第1のクライアント上の前記ファイルから抽出された前記コンテンツ、および前記メタデータ値を記憶するためのデータテーブルと、
指定されたメタデータ値範囲内の1つまたは複数のメタデータ値と関連付けられたコンテンツを求める要求を第2のクライアントから受信するためのインターフェースと、
前記コンテンツと関連付けられた前記メタデータ値が、前記指定されたメタデータ値範囲内である場合、前記第2のクライアントへの前記コンテンツの送信を開始するための選択モジュールと
を備えるシステム。
【請求項１７】
前記メタデータ値が、前記ファイルに対して実施された前記アクションがいつ行われたかを示すタイムスタンプを含み、また前記メタデータ値範囲が、時間期間を示すタイムスタンプ値の連続した範囲を含む、請求項16に記載のシステム。
【請求項１８】
所定の時間期間内に、コンテンツを求める要求が前記インターフェースによりそこから受信されるクライアントに対する識別子を含むアクティブなクライアントリストをさらに備え、前記テーブルマネジャモジュールが前記データテーブルから前記コンテンツを除去するための削除コマンドを発行する前に、すべてのリストされたアクティブなクライアントに対して前記コンテンツが送信されているかどうかを判定するために、前記アクティブなクライアントリストが前記テーブルマネジャモジュールにより使用される、請求項16に記載のシステム。
【請求項１９】
受信されるコンテンツのための記憶スペース量に対する制限を含むスペースクォータをさらに備え、前記スペースクォータが、前記クォータが超過したとき、前記データテーブルから前記コンテンツの少なくとも一部の削除をトリガするために使用される、請求項16に記載のシステム。
【請求項２０】
前記コンテンツがそこから受信される前記第1のクライアントをその1つが指定するソース識別子のリストをさらに備え、前記コンテンツが前記第2のクライアントに送信される前に、前記コンテンツが前記データテーブルから削除された場合、ソース識別子の前記リストが、前記第1のクライアントに前記コンテンツを求める要求を開始するために使用される、請求項16に記載のシステム。
【請求項２１】
前記データテーブルに記憶された前記コンテンツにアクセスできなくなった場合、前記コンテンツを再構成するのに使用するために、前記第1および第2のクライアントに対するクライアント識別子、および前記第1および第2のクライアントと関連付けられたユーザ識別子を、外部サーバに送信するための認証マネジャをさらに備える、請求項16に記載のシステム。
【請求項２２】
所定の時間期間内に、前記インターフェースにより受信されるデータ量に対する制限を含むスループット閾値をさらに備え、前記スループット閾値が、受信される前記データ量が前記閾値を超える場合、追加のコンテンツの受信を拒否するために、前記インターフェースにより使用される、請求項16に記載のシステム。
【請求項２３】
複数のクライアントにわたりデータを共用するためのシステムであって、
ファイルと関連付けられたユーザが開始するアクションを受信するための、第1のクライアントにおけるイベントリスナであり、前記アクションが、前記ファイルを第2のクライアントに送信することとは無関係であるイベントリスナと、
前記イベントに応じて前記ファイルからコンテンツを抽出し、前記コンテンツと関連付けられたメタデータを生成するための、前記第1のクライアントにおける抽出器と、
第1のクライアントから第2のクライアントに、前記コンテンツおよび前記メタデータを送信するための手段と
を備えるシステム。
【請求項２４】
有形なマシン可読情報担持体で有形に実施されるコンピュータプログラム製品であって、実行されたとき、
第1のファイルと関連付けられたアクションが第1のクライアントをユーザが用いることにより実施されたことを示すイベントを受信するステップであり、前記アクションが、前記第1のファイルを他のクライアントに送信することとは無関係であるステップと、
前記第1のクライアントを用いた前記イベントに応じて前記第1のファイルから自動的にコンテンツを抽出し、かつ前記コンテンツと関連付けるためのメタデータを生成するステップと、
同位クライアントおよび前記第1のクライアントが現在ネットワーク上で動作しており、かつ互いに視認可能である場合、前記同位クライアントに前記コンテンツおよび前記メタデータを、前記第1のクライアントを用いて送信するステップであり、前記送信のタイミングが前記イベントを受信した後に自動的に決定されるステップと
を含む方法を実施する命令を含むコンピュータプログラム製品。
【発明の詳細な説明】
【技術分野】
【０００１】
この文書は、共用および検索方法ならびにシステムに関する。
【背景技術】
【０００２】
デジタル的に記憶される情報量が増加するにつれて、ユーザが望むときに、そのデジタル情報の位置を特定することがより困難に、かつ複雑になってくる。さらに、ユーザは、自分のホームコンピュータを使用していようと、仕事でラップトップを使用していようと、あるいは無線のPDA(personal digital assistant;携帯情報端末)を用いた路上であろうと、そのデジタル情報にアクセスできることを望む。
【０００３】
いくつかの現在のシステムは、ユーザが、2つ以上のクライアント間でファイルを転送するために使用することのできる同期フォルダにファイルを移動できるようにする。しかし、これらのシステムは、この同期化を行わせるために明示的なユーザアクションを必要とする場合がある。この場合、ユーザが、あるファイルに最近アクセスした場合であっても、ユーザがそれを同期フォルダに移動しない限り同期化されることはない。さらに、そのファイルが外部のクライアントと同期化されたとき、そのファイルを、外部のクライアント上で位置を特定することが困難になり得る。いくつかの場合、そのファイルは、外部クライアント上の同期フォルダ中にいくつかの他のフォルダと共にある可能性がある。外部クライアント上で、転送されたファイルへとナビゲートすることは、同期フォルダがどこにあるかをユーザが覚えている場合であっても、ユーザにとって困難なものとなり得る。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
この文書は、コンピューティング装置のユーザが、これらの装置にわたりデータを共用し、発見できるように支援する方法およびシステムを開示する。
【課題を解決するための手段】
【０００５】
一態様では、方法が述べられる。その方法は、第1のファイルと関連付けられたアクションが第1のクライアントをユーザが用いることにより実施されたことを示すイベントを受信するステップを含む。そのアクションは、第1のファイルを他のクライアントに送信することとは無関係である。本方法はまた、第1のクライアントを用いたイベントに応じて、第1のファイルから自動的にコンテンツを抽出し、かつコンテンツと関連付けるためのメタデータを生成するステップと、同位(peer)クライアントおよび第1のクライアントが現在ネットワーク上で動作しており、かつ互いに視認可能である場合、同位クライアントにコンテンツおよびメタデータを、第1のクライアントを用いて送信するステップとを含む。送信のタイミングは、イベントが受信された後に自動的に決定される。
【０００６】
一例では、ファイルを送信することとは無関係であるアクションは、ファイルのアクセスまたはファイルのセーブとすることができ、第1のファイルから抽出されるコンテンツは、ファイルのコピー、またはファイルのコンテンツのコピーとすることができる。本方法はまた、要求するクライアントにコンテンツを送信するようにサーバが構成されたことを示す指示をサーバから受信するステップと、その指示を受信しており、かつ同位クライアントが、現在第1のクライアントにネットワーク接続されていない場合、コンテンツおよびメタデータをサーバに送信するステップとを含むことができる。いくつかの実施形態では、本方法はさらに、サーバから要件を受信するステップと、その要件を満たすメタデータの位置を特定するステップと、同位クライアントに送信するために、メタデータと関連付けられたコンテンツを選択するステップとを含む。その要件は、タイムスタンプ値またはデータビット値を含むことができる。さらに、本方法は、第1のクライアント上で生ずる複数のイベントに応じて、第1のクライアントを用いて、複数のファイルから追加のコンテンツを抽出するステップと、その追加のコンテンツが送信される順番を指定する1つまたは複数の優先順位アルゴリズムに基づいて、追加のコンテンツを同位クライアントに送信するステップとを含むことができる。
【０００７】
他の例では、コンテンツおよびメタデータを同位クライアントに送信するステップは、そのコンテンツおよびメタデータをサーバに送信するステップを含むことができ、第1のクライアントは、コンテンツおよびメタデータを、同位クライアントに送信するようにサーバが構成されていることを示す指示をサーバから受信する。コンテンツおよびメタデータを同位クライアントに送信するステップは、コンテンツおよびメタデータを第2のクライアントに送信するステップを含むことができる。第1のクライアントは、コンテンツおよびメタデータを、同位クライアントに送信するように第2のクライアントが構成されていることを示す指示を第2のクライアントから受信する。本方法はさらに、コンテンツに含まれる1つまたは複数の記号が、コンテンツを識別するように動作可能なキーとして書式設定されるように、コンテンツに、同位クライアントに送信される前にインデックスを付すステップと、イベントの生成とは独立して、第2のファイルからコンテンツを抽出するステップと、第2のファイルからのコンテンツにインデックスを付すステップと、インデックスが付されたコンテンツを同位クライアントに送信するステップとを含むことができる。
【０００８】
さらに他の例では、第1のファイルからコンテンツを抽出するステップは、第1のファイルのコンテンツを、HTML(ハイパーテキストマークアップ言語)に、またはテキストに変換するステップを含むことができる。さらに、第1のファイルのコンテンツを抽出するステップは、第1のファイルの元のファイル書式設定を保持する第1のファイルのコピーを生成するステップを含むことができる。本方法はまた、第1のクライアントと同位クライアントとの間のネットワーク接続が、所定の帯域幅値を超える帯域幅を有することを示す指示を第1のクライアントで受信した場合、第1のクライアントと同位クライアントとの間で渡されるコンテンツ量を制限するためのスループット閾値を増加させるステップを含むことができる。いくつかの実施形態では、本方法は、コンテンツが同位クライアントに送信される前に、コンテンツと有効期限を関連付けるステップを含む。他の実施形態では、本方法は、コンテンツが第1のクライアントから削除される場合、同位クライアントにコンテンツを削除するための要求を送信するステップを含む。
【０００９】
第2の態様では、1つまたは複数のサーバを有するコンピュータシステムが述べられる。システムは、ファイルの転送とは無関係なアクションをファイルに対してユーザが実施したことを示す指示を、第1のクライアントから受信するためのテーブルマネジャモジュールを含む。その指示は、ファイルから抽出されたコンテンツ、およびそのコンテンツに割り当てられたメタデータ値を含む。システムはまた、第1のクライアント上のファイルから抽出されたコンテンツ、およびメタデータ値を記憶するためのデータテーブルと、指定されたメタデータ値範囲内の1つまたは複数のメタデータ値と関連付けられたコンテンツを求める要求を、第2のクライアントから受信するためのインターフェースと、コンテンツと関連付けられたメタデータ値が、指定されたメタデータ値範囲内にある場合、第2のクライアントへのコンテンツの送信を開始するための選択モジュールとを含む。
【００１０】
一例では、メタデータ値は、ファイルに対して実施されたアクションがいつ行われたかを示すタイムスタンプを含むことができ、またメタデータ値範囲は、時間期間を示すタイムスタンプ値の連続した範囲を含む。システムはまた、所定の時間期間内に、コンテンツを求める要求がインターフェースによりそこから受信されるクライアントに対する識別子を含むアクティブなクライアントリストを含むことができる。テーブルマネジャモジュールが、データテーブルからコンテンツを除去するための削除コマンドを発行する前に、すべてのリストされたアクティブなクライアントに対してコンテンツが送信されているかどうかを判定するために、そのアクティブなクライアントリストがテーブルマネジャモジュールにより使用される。システムは、受信されるコンテンツのための記憶スペース量に対する制限を含むスペースクォータを含むことができ、そのスペースクォータは、クォータが超過したとき、データテーブルからコンテンツの少なくとも一部の削除をトリガするために使用される。
【００１１】
他の例では、システムは、コンテンツがそこから受信される第1のクライアントを1つが指定するソース識別子のリストを含むことができ、またコンテンツが第2のクライアントに送信される前に、コンテンツがデータテーブルから削除された場合、ソース識別子のリストは、第1のクライアントにコンテンツを求める要求を開始するために使用される。システムは、データテーブルに記憶されたコンテンツにアクセスできなくなった場合、コンテンツを再構成するのに使用するために、第1および第2のクライアントに対するクライアント識別子、および第1および第2のクライアントと関連付けられたユーザ識別子を、外部サーバに送信するための認証マネジャを含むことができる。
【００１２】
いくつかの実施形態では、所定の時間期間内に、インターフェースにより受信されるデータ量に対する制限を含むスループット閾値を含むことができる。スループット閾値は、受信されるデータ量が閾値を超える場合、追加のコンテンツの受信を拒否するためにインターフェースにより使用される。
【００１３】
他の態様では、複数のクライアントにわたりデータを共用するためのシステムが述べられる。システムは、ファイルと関連付けられたユーザが開始するアクションを受信するための、イベントリスナ(listener)を第1のクライアントに含む。そのアクションは、ファイルを第2のクライアントに送信することとは無関係である。システムはまた、イベントに応じてファイルからコンテンツを抽出し、コンテンツと関連付けられたメタデータを生成するための、第1のクライアントにおける抽出器(extractor)と、第1のクライアントから第2のクライアントに、コンテンツおよびメタデータを送信するための手段とを含む。
【発明の効果】
【００１４】
本明細書で述べられるシステムおよび技法は、1つまたは複数の以下の利点を提供することができる。システムは、複数のコンピュータ間で、アクセスされたファイルの交換の簡便さを高めることができる。さらに、システムは、交換されたコンテンツの位置を特定するためのユーザの能力を高めることができる。システムは、クライアントにより送信されたデータの楽観的な(optimistic)削除を可能にする機構を提供することができる。このようなシステムは、サーバ上にデータのバックアップ用コピーを記憶する必要性を低減することができる。システムは、いくつかのタイプのデータの送信を優先順位付けすることにより、クライアント間で交換されるデータの適合性(relevance)を高めることができる。
【００１５】
1つまたは複数の実施形態の詳細は、添付の図面および以下の説明に記載される。前述した諸実施形態の他の特徴、態様、および利点は、説明および図面から、また特許請求の範囲から明らかとなろう。
【００１６】
様々な図面における同様の参照記号は、同様のエレメントを示す。
【発明を実施するための最良の形態】
【００１７】
図1は、複数のクライアント装置にわたりコンテンツを共用し、かつ同期化するためのシステム100を示す概略図である。システム100は、ユーザが、第2のコンピュータ装置を用いて、第1のコンピュータ装置に常駐しているファイルのコピー(またはファイルのコンテンツのコピー)にアクセスできるようにする。コンピュータ装置間のコンテンツの交換は、ユーザが、コンテンツを他のコンピュータ装置に送るべきであると指定することなく、自動的に行うことができる。例えば、ユーザは、自分のホームコンピュータでワード文書ファイルを編集することができる。ユーザがその文書をセーブするとき、文書のコンテンツが自動的に抽出され、仕事用のユーザのコンピュータに送信される。ユーザが、後に、自分の仕事用コンピュータで変更された文書を検索したとき、そのワード文書が、ユーザの仕事用コンピュータに予め記憶されていなかったとしても、コンテンツがユーザに提示される。こうすると、ユーザにより最近アクセスされた文書だけが、ユーザの様々なコンピュータ間で転送されるというさらなる利点を有することもできる。
【００１８】
システム100は、クライアントA102、クライアントB104、およびサーバ106を含む。クライアントA102およびクライアントB104は、ユーザが、例えば、ファイルをセーブする、もしくは開くことにより、またはウェブページにアクセスすることによりデジタル情報を管理するために使用することのできるコンピュータを表す。ユーザは、例えば、自宅のコンピュータ、仕事用のコンピュータ、およびPDA(携帯情報端末)、携帯電話などのモバイルコンピュータを含む多くのコンピュータにアクセスすることができる。サーバ106は、ユーザのファイル、文書、ウェブページ、またはこれらの文書のコンテンツのために、一時的な記憶場所、または「ドロップボックス」を提供することができる。ドロップボックスは、ターゲットコンピュータがオフラインである場合、共用されるコンテンツを記憶することにより、ユーザのコンピュータ間でこの情報を容易に共用することができる。後に、ターゲットコンピュータがオンラインになったとき、サーバ106は、そのコンテンツをターゲットコンピュータに送信することができる。
【００１９】
一実施形態では、ユーザがクライアントA102で、ファイルをセーブするまたは開くオペレーションを実施するとき、矢印110で示されるように、クライアントAコンテンツ108がファイルから抽出され、サーバ106に送られる。例えば、ユーザは、自分のホームコンピュータ上にテキストファイルをセーブすることができる。ユーザのファイルのコピーを含むことのできるクライアントAコンテンツ108は、自動的にサーバ106に送られる。同様に、ユーザが、クライアントB104に記憶されたファイルをセーブまたは開くために、クライアントB104を使用するとき、矢印114で示すように、クライアントBコンテンツ112が、クライアントB104に記憶されたファイルから抽出され、サーバ106に送られる。例えば、クライアントB104は、ユーザの仕事用コンピュータとすることができる。クライアントA102(例えば、ユーザのホームコンピュータ)からのコンテンツが、ユーザの仕事用コンピュータに転送されているため、ユーザは、自分の仕事用コンピュータに予め常駐していないファイルにアクセスすることができる。同様に、ユーザのホームコンピュータが、いまや、ユーザの仕事用コンピュータにだけ先に常駐していたファイルを有する。図1に示す実施形態では、サーバ106は、ユーザの仕事用コンピュータおよびホームコンピュータにわたりファイルコンテンツを共用するためのコンジットとして働く。
【００２０】
他の例では、クライアントA102およびB104は、ウェブ閲覧履歴を交換することができる。ユーザは、クライアントB104(例えば、ユーザの仕事用コンピュータ)にインストールされたウェブブラウザを用いてウェブサイトを見ることができる。ウェブページがアクセスされたとき、そのアクセスは、HTMLコードのコピーなど、ウェブページのコンテンツの抽出をトリガすることができる。抽出された情報は、次いで、クライアントB104からサーバ106に送信され得る。クライアントBコンテンツ112は、更新のために、クライアントA102がサーバ106と交信するまで、サーバ106に留まることができる。クライアントA102がサーバ106に接続された後、サーバ106は、ウェブページのコンテンツをクライアントA102(例えば、ユーザのホームコンピュータ)に送信することができる。
【００２１】
後に、ユーザは、ウェブコンテンツの位置を特定するために、Google(商標)Desktop search(グーグルデスクトップ検索)アプリケーションなどの検索アプリケーションを使用することができる。例えば、ユーザは、「Googleはそのデスクトップの役割を拡張する」など、仕事で閲覧したウェブサイトから記憶しているテキストを入力することができる。検索ツールは、このテキストを用いて、ユーザの仕事用マシンから送信されたウェブページコンテンツの位置を特定することができる。
【００２２】
サーバ106は、ユーザのコンピュータ間で、コンテンツの同期化を容易にすることができる。クライアントA102(例えば、ユーザのホームコンピュータ)がサーバ106に接続されたとき、クライアントB104から生成されたクライアントBコンテンツ112は、矢印116で示すように、自動的にクライアントA102へとコピーされる。いくつかの実施形態では、コピーは、クライアントA102にまだ記憶されていないクライアントBコンテンツ112に対して行われる。同様に、クライアントB104(例えば、ユーザの仕事用コンピュータ)がサーバ106に接続される度に、欠けているクライアントAコンテンツ108はいずれも、矢印118で示されるように、クライアントB104に自動的にコピーされる。
【００２３】
図2は、図1に示す実施形態による複数のクライアント装置にわたりコンテンツを共用し、かつ同期化するための例示的な方法200を示すシーケンス図である。ステップ202で、イベントが生じたとき処理を開始することができる。イベントは、ユーザがファイルもしくは文書をセーブすること、ウェブページにアクセスすること、またはファイルを開くことなどのアクションが行われたことを知らせることができる。例えば、図1を参照すると、クライアントA102におけるユーザは、自分のホームコンピュータで、自分のレジメを編集し、セーブすることができる。このアクションは、イベントリスナにより検出されるイベントを生成することができる。
【００２４】
ステップ204で、インデックスがコンテンツを用いて更新される。例えば、アクションによりトリガされたイベントが検出された後、そのアクションと関連付けられたファイルからのコンテンツが抽出され得る。抽出されたコンテンツは、セーブされ、アクセスされ、または変更されたファイル中に含まれるテキストまたは画像とすることができる。いくつかの実施形態では、抽出はフォーマット変換を含むことができる。例えば、抽出器は、PDFフォーマットのファイルのテキストを、プレーンテキスト、またはHTML(ハイパーテキストマークアップ言語)フォーマットのテキストに変換することができる。抽出されたコンテンツは、次いで、コンテンツを、メタデータもしくはコンテンツからのキーワードにリンクさせる、または関連付けるインデックスを更新するために使用され得る。いくつかの実施形態では、メタデータは、いつアクションが検出されたかを指定するタイムスタンプである。例えば、タイムスタンプは、ファイルがセーブされた時間を反映させることができ、抽出器は、この時間をファイルがセーブされたときに抽出されたコンテンツにリンクさせることができる。いくつかの実施形態では、インデックスは、Google(商標)Desktop searchアプリケーションに含まれるインデクサ(indexer)を用いて生成される。この検索アプリケーションは、ユーザのコンピュータ上のコンテンツの位置を特定するためにインデックスを使用することができる。
【００２５】
ステップ206で、クライアントにより抽出されたコンテンツは、サーバにポストされる。そのコンテンツは、ユーザの他のコンピュータ上で共用される情報である。例えば、抽出されたコンテンツは、クライアントAがサーバ106に送信するクライアントAコンテンツ108とすることができる。クライアントAコンテンツ108は、ユーザが自分のホームコンピュータにセーブしたレジメのテキストバージョンとすることができる。レジメテキストは、サーバ106に送られる。さらに、そのレジメがセーブされた時間など、コンテンツを記述するメタデータがまた、サーバ106に送信され得る。ステップ208で、生成元のクライアントから受信されたコンテンツがサーバに記憶される。
【００２６】
ステップ210で、サーバで維持されているテーブルが、コンテンツの受信を示すように更新される。例えば、図1では、サーバ106は、サーバがクライアントA102から受信したクライアントAコンテンツ108、およびそのコンテンツ108を記述する任意の対応するメタデータを用いて、データベーステーブルを更新する。ステップ210で、他のクライアントと共用されるコンテンツの一時的な記憶を容易にするプロセスを完了することができる。
【００２７】
ステップ202からステップ210は、任意のクライアントから生成されるコンテンツの一時的な記憶を提供するために実施され得る。例えば、図1を参照すると、ステップ202からステップ210は、クライアントB104上のクライアントBコンテンツ112、およびこのコンテンツのサーバ106への送信に関して実施することができる。
【００２８】
ステップ212で、第2のクライアントは、他のクライアントでコンテンツが生成されたことを示す更新を求めてポーリングする。例えば、図1を参照すると、クライアントB104は、新しいコンテンツを求めてサーバ106にポーリングすることができる。ここで、新しいコンテンツは、サーバ106に記憶されたクライアントAコンテンツ108(例えば、レジメテキスト)とすることができるが、それはまだクライアントB104により受信されていない。
【００２９】
ステップ214で、ポーリング要求がサーバにより受信される。例えば、図1では、サーバ106は、クライアントB104からポーリング要求を受信することができる。
【００３０】
ステップ216で、サーバは、コンテンツ更新が利用可能であることをポーリングするクライアントに示す。例えば、図1では、サーバ106が、レジメテキストが、クライアントB104によりまだダウンロードされていないことをクライアントB104に知らせる。サーバ106のこの知識は、テーブル中に記憶されたタイムスタンプに基づいている。そのタイムスタンプは、クライアントA102からサーバ106が前に受信したコンテンツ(例えば、レジメテキスト)に対応する。サーバ106は、コンテンツがいつサーバ106に送信されたかを指定できるそのタイムスタンプを、クライアントB104が、サーバ106から新しいコンテンツを受信していない時間期間に対応する時間範囲と比較する。言い換えると、サーバは、クライアントBが最後に確認した後に、他のクライアントにより新しいコンテンツが生成されたかどうかを判定することができる。サーバ106が、指定された時間範囲内に含まれるそのテーブル中のタイムスタンプを発見した場合、サーバ106は、新しいコンテンツを有していることをクライアントB104に知らせることができる。
【００３１】
ステップ218で、クライアントは、必要とする更新されたコンテンツを要求する。例えば、図1で、クライアントB104は、欠けているクライアントAコンテンツ108を求める要求をサーバ106に送る。要求は、上記で述べた時間範囲に基づくことができる。
【００３２】
ステップ220で、サーバは、クライアントにより要求された時間範囲に対応する更新されたコンテンツを送る。例えば、図1では、サーバ106は、クライアントB104に、クライアントAコンテンツ108を送るが、クライアントAからのそのコンテンツは、クライアントBにより指定された時間範囲中に生成されている。
【００３３】
ステップ222で、クライアントは、そのコンテンツをローカルに記憶する。例えば、図1で、クライアントB104は、クライアントAコンテンツ108を、パーソナルコンピュータのハードドライブなど、ローカルな記憶装置に記憶する。
【００３４】
ステップ224で、クライアントは、サーバを介して他のクライアントから受信したコンテンツを反映させるようにそのインデックスを更新する。例えば、図1では、クライアントB104は、受信したクライアントAコンテンツ108を反映させるように、Google(商標)Desktopで使用されるインデックスなどのインデックスを更新する。
【００３５】
ステップ212からステップ224は、ユーザのクライアントのいずれかで使用される同期化ステップを表すことができる。例えば、図1を参照すると、ステップ212からステップ224は、クライアントBコンテンツ112を用いて、クライアントA102を更新するために使用される同期化ステップを表すことができる。
【００３６】
図3は、図1のシステム100をさらに詳細に示すブロック図である。システム100は、クライアントA102、クライアントB104、およびサーバ106を含む。クライアントA102およびクライアントB104はそれぞれ、例えば、自宅のパーソナルコンピュータと、仕事用のコンピュータと、ラップトップコンピュータ、PDA、携帯電話などの可搬型コンピュータとを含むユーザにより使用されるコンピュータを表す。サーバ106は、ユーザのクライアント間の同期化を容易にする一時的な記憶場所として働くことができる。クライアントA102は、クライアントA102上でコンテンツが変更された後、クライアントAコンテンツ108をサーバ106にポストする。クライアントAのコンテンツ108のポスティングは、例えば、ユーザがファイルまたは文書をセーブする度に、あるいはユーザがウェブページを閲覧するときに行われる。ポスティングは、設定された間隔で、例えば、2分ごとに行うことができ、またポスティングレートおよび戦略を構成可能にすることができる。いくつかの実施形態では、ポスティングは、ユーザのアクションにより生成されるイベントに対してある時間に行われる。例えば、ポスティングは、文書がセーブされた後、所定の時間に行うことができる。
【００３７】
クライアントAコンテンツ108は、サーバ106により受信され、記憶される。そのローカルに記憶されたコンテンツと、他のクライアントからのコンテンツとの同期を保つために、クライアントB104は、周期的に、欠けているコンテンツを求める要求310をサーバ106に発行する。要求310は、欠けているコンテンツに対するタイムスタンプの範囲を識別する時間範囲312パラメータを含む。要求310は、クライアントB104が、クライアントB104にサーバ106がやがて送る必要のあるクライアントAコンテンツ108を取得するために発行される。その要求を満たすために、サーバ106は、指定された時間範囲312を用いて、欠けているコンテンツのそのコピー(存在する場合)の位置を特定する。サーバ106は、テーブル中に記憶されたタイムスタンプを検査することにより、そのコンテンツの位置を特定することができる。タイムスタンプは、クライアントA102から、サーバ106によって前に受信されたコンテンツに対応する。例えば、タイムスタンプは、コンテンツがいつサーバ106に送信されたか、またはコンテンツがいつクライアントにより生成されたかを示すことができる。サーバ106は、タイムスタンプを、クライアントB104がサーバ106から新しいコンテンツを受信していない時間期間に対応する時間範囲312と比較する。サーバ106が、指定された時間範囲312内に含まれる、そのテーブル中のタイムスタンプを発見した場合、サーバ106は、指定された時間範囲に対する欠けているコンテンツ314をクライアントB104に送る。欠けているコンテンツ314は、時間範囲312に含まれるタイムスタンプを有するコンテンツを含む。
【００３８】
クライアントA102は、データとアプリケーションを共に含むことができる。データは、ファイル316、HTML(ハイパーテキストマークアップ言語)ファイル318、およびインデックス320を含む。アプリケーションは、イベントリスナ322、ファイルからテキスト/HTMLへのコンバータ324、およびHTTPS(hypertext transfer protocol secure)クライアント/サーバ326を含む。ファイル316は、例えば、テキストファイル、スプレッドシート、またはアプリケーションにより作成される文書とすることができる。HTMLファイル318は、ユーザの様々なコンピュータにより閲覧されたウェブページとすることができ、したがって、ウェブブラウジングの履歴を提供する。インデックス320は、コンテンツ中のキーワードを検索するために、Google(商標)Desktopなどのアプリケーションを用いて、コンテンツの検索を容易にする。イベントリスナ322は、関連するコンテンツであるクライアントAコンテンツ108がサーバ106にポストされるように要求することのできる、ファイルをセーブすること、ファイルを削除すること、またはウェブページを閲覧することなどのユーザアクションを待ち受け(listen)、かつ検出する。ファイルからテキスト/HTMLへのコンバータ324は、簡単なワードプロセッシングアプリケーションまたはウェブブラウザを用いてクライアントにより閲覧できるフォーマット(例えば、コンテンツを生成したアプリケーションを用いて、コンテンツを読み取る必要はない)へのコンテンツの変換を容易にする。例えば、ファイルからテキスト/HTMLへのコンバータ324は、ファイル316をHTMLフォーマットに変換するために使用することができる。HTTPSクライアント/サーバ326は、ウェブアクセスを追跡するクライアントとして使用することができ、また閲覧されたウェブページを、ユーザによりアクセスされた時間と関連付けるタイムスタンプ328を含むことができる。HTTPSクライアント/サーバはまた、同位クライアントにコンテンツを提供するためのサーバとして使用することができ、それを以下でさらに詳細に述べる。
【００３９】
サーバ106は、記憶装置330、同期化マネジャ332、および認証マネジャ334を含むことができる。記憶装置330は、ユーザの様々なクライアントから受信されたコンテンツA、およびコンテンツBからコンテンツN336を含むことができる。コンテンツのアイテムのそれぞれは、各アイテムが作成された時間を識別できる関連付けられたタイムスタンプTS A、およびTS BからTS N338を有することができる。同期化マネジャ332は、スペースクォータ342およびスループット閾値344を含む。同期化マネジャ332は、タイムスタンプ338を使用して、クライアントA102とクライアントB104に記憶された、かつその間で共用されるコンテンツを同期化することができる。それはまた、例えば、クライアントに対する記憶スペースクォータに達したときはいつでも、先入れ先出し(FIFO)法を用いて、最も古いタイムスタンプが付されたコンテンツを消去するために、タイムスタンプ338およびスペースクォータ342を使用することができる。
【００４０】
同期化マネジャ332は、指定された時間期間にわたり、クライアントにより受信されたまたは送信されたバイト数を制限するために、スループット閾値344を使用することができる。例えば、同期化マネジャ332は、指定された最大のスループットレート(例えば、8時間にわたり2Mb)を超えるコンテンツを受信もしくは送信する、またはそのコンテンツを要求するクライアントに対して、エラーメッセージを送信することができる。最大のスループットレート閾値は、構成可能にすることができる。認証マネジャ334は、無許可のクライアントが、コンテンツを記憶し、また要求するためにサーバ106を使用することを阻止するセキュリティ機能を提供することができる。認証は、例えば、ユーザIDおよびパスワードを検証するためのシステムに基づくことができる。認証マネジャ334は、クライアントがサーバ106に接続されたとき、クライアントの信用証明物を検査することができる。クライアントが無効な信用証明物を供給した場合、認証マネジャは、エラーメッセージをクライアントに送信することができる。
【００４１】
クライアントAおよびB102、104は、同様なコンポーネントを含むことができ、また同様な方法で、コンテンツを受け入れ、かつ送信することができる。例えば、クライアントは共に、ファイル346、HTMLファイル348、インデックス350、イベントリスナ352、ファイルからテキスト/HTMLへのコンバータ354、およびHTTPSクライアント/サーバ356を含むことができる。HTTPSクライアント/サーバ356は、閲覧された時間を用いて閲覧したウェブページコンテンツにタグ付けするために使用できるタイムスタンプ358を含む。さらに、タイムスタンプ358は、サーバに送信される生成されたコンテンツのそれぞれに添付することができ、したがって、コンテンツと関連付けられた送信時間が提供される。
【００４２】
図4は、混成されたピアツーピアとクライアント/サーバアーキテクチャを用いて、コンテンツを共用し、かつ同期化するためのシステム400を示す概略図である。システム400では、図2の方法200と同様な方法でサーバ106を用いて、コンテンツを、クライアントA102、クライアントB104、およびクライアントC406の間でやはり共用することができる。システム400のピアツーピア態様は、クライアント102、104、および406の間でコンテンツを直接共用することを追加することであり、したがって、サーバ106は迂回される。同位クライアント間で直接コンテンツを共用することは、クライアントにおける利用可能な資源容量を利用することができ、したがって、サーバ106における帯域幅トラフィックが低減される。サーバ106は、任意のクライアント102、104、または406から生成されるクライアントXコンテンツ410を一時的に(または恒久的に)記憶するためのドロップボックスとしても働くことができる。例えば、新しいコンテンツを特定のクライアントに送達するための最初の試みがなされたとき、その特定のクライアントがオフラインである場合、サーバ106のドロップボックスまたは記憶装置機能を使用することができる。図4は、クライアントC406とサーバ106の間に明示的な矢印を示していないが、クライアントC406は、クライアントAまたはBにより使用される方法と同様な方法で、サーバ106と通信することができる。
【００４３】
図5は、図4の混成されたピアツーピアおよびサーバアーキテクチャを用いて、コンテンツを共用し、かつ同期化するための例示的な方法を示すシーケンス図である。処理は、イベントが生じたとき、ステップ502で開始することができる。このステップ502は、図2のステップ202と同様のものとすることができ、ファイルもしくは文書をセーブすること、ウェブページにアクセスすること、またはファイルもしくはアプリケーションを開くことなど、ユーザにより実施されるアクションに応じてイベントが生成される。例えば、図4を参照すると、クライアントA102におけるユーザは、自分の仕事用コンピュータで文書を編集し、セーブすることができる。
【００４４】
ステップ504で、インデックスは、ステップ502で生じたイベントを反映させるように更新される。例えば、インデックスは、ユーザの文書の新しくセーブされたバージョンを反映させるように更新される。Google(商標)Desktopなどの検索アプリケーションは、クライアント上のファイルのコピーまたはファイルのコンテンツのコピーの位置を特定するためにインデックスを使用することができる。
【００４５】
ステップ506で、クライアント上で生成されたコンテンツが、サーバにポストされる。コンテンツは、それがセーブされたとき、またそれがサーバにポストされたとき、ユーザによりセーブされた文書(または文書のコンテンツ)のコピー、ならびにデータのタイプ、そのソースなどの情報を記述するメタデータを含むことができる。例えば、図4を参照すると、クライアントA102のHTTPSクライアント/サーバ326は、クライアントXコンテンツ410を含むHTTPポストコマンドをサーバ106に送信することができる。
【００４６】
ステップ508で、サーバは、生成元のクライアントから受信したコンテンツを記憶し、そのコンテンツが第2のクライアントに伝達される。例えば、図4で、サーバ106は、記憶装置にクライアントXコンテンツ410を記憶し、次いで、クライアントXコンテンツ410をクライアントB104に送信する。
【００４７】
ステップ510で、サーバから受信されたコンテンツは、第2のクライアントのローカルな記憶装置に記憶される。例えば、図4を参照すると、クライアントB104は、サーバ106から受信したクライアントXコンテンツ410を記憶する。
【００４８】
代替の実施形態では、ステップ506からステップ510へと指し示す破線の矢印により示されるように、ステップ506は、サーバの代わりに、同位クライアントにコンテンツをポストすることができる。この実施形態は、コンテンツを直接同位クライアントにポストすることにより、システム400アーキテクチャのピアツーピア態様をサポートすることができる。例えば、図4を参照すると、クライアントXコンテンツ410は、クライアントA102からクライアントB104に直接送ることができ、したがって、サーバ106を迂回する。ピアツーピアクライアントの「デイジーチェーン」では、コンテンツは、第1のクライアント上で生成され、直接第2のクライアントに送ることができ、次に、そのコンテンツを第3のクライアントに伝達し、以下同様である。さらに、いくつかのアプリケーションでは、コンテンツは、第1のクライアントから第2のクライアントに送信し、次いでサーバへと送信することができ、サーバは、そのコンテンツを他のクライアントに配布することができる。この「デイジーチェーン」技法を用いることの1つの可能な利点は、単一のクライアントに対して、すべての要求しているクライアントまたはサーバにコンテンツをアップロードするように要求するのではなく、データのアップロードをいくつかのクライアントまたはサーバの間で権限を委譲することにより、ユーザのアップストリーム帯域幅を維持することである。
【００４９】
システム400は、様々な同位クライアントの間で、コンテンツを同期化するために必要な資源の使用を最適化するために、いくつかのアルゴリズムまたはルールを使用することができる。サーバ106ならびにクライアント102および104上の帯域幅は限定されており、またユーザのアクションが一度に大量のデータを送信し、または要求することができるので、コンテンツの共用が要求に追いつかない可能性がある。例えば、ユーザが、クライアントA102に非常に大容量の文書(例えば、メンテナンスマニュアル)を記憶することができ、その後すぐに、同じユーザが、クライアントB104上のデジタルカメラを空にする。同じ日に、ユーザは、仕事に出かけて、クライアントC406上の小容量のオフィスメモを更新することがあり得る。サーバ106は、3つのデータアイテムのすべてに対するコンテンツを、ユーザがアクセスした順番に受信することができるが、サーバ106はまた、それに優先順位を割り当てることにより、そのデータアイテムを処理することもできる。サーバ106は、まず、より高い優先順位のデータアイテムを処理し、低い優先順位のデータアイテムを後のためにセーブすることができる。一実施形態では、優先順位は、それぞれがスコアと関連付けられたそのサイズ、タイプ、または年代などの属性に基づく。より低く組まれたスコアは、より高い優先順位に割り当てることができる。例えば、小容量の文書(例えば、オフィスメモ)は、サイズに基づいて低いスコアを受けるはずであり、したがって、より高い優先順位が与えられる。同様に、大容量の文書(例えば、メンテナンスマニュアル)およびデジタル写真は、より高いスコア(またより低い優先順位)を受けるはずである。データアイテムの年代もまた、その優先順位に影響を与えるはずであり、より高い優先順位が、より新しいデータアイテムに割り当てられる。例えば、オフィス環境では、Microsoft Word(商標)により生成された文書など、仕事に関連するデータアイテムに対して高い優先順位を与えることができるので、データアイテムのタイプもまた、その優先順位を計算するために使用することができる。いくつかの実施形態では、優先順位アルゴリズムは、そのクライアントから、サーバまたは他のクライアントにコンテンツをいつ送信すべきかを決定するために、各クライアントにより使用される。
【００５０】
一実施形態の優先順位の式は、1000*logN(s)sqrt(t/K)/B_{type}として示すことができ、それを以下で説明する。すなわち、データアイテムは、基本の優先順位1000が割り当てられることになる。基本の優先順位は、それが生成され基準化された時間の平方根により乗算される。これは、非常に新しいデータアイテムの優先順位を大幅に高めるように働く。優先順位は、logN(s)(底Nを有するsの対数)で乗算され、式中、Nは定数であり、またsは、キロバイトで示すファイルサイズである。したがって、小容量ファイルは、大容量ファイルに勝る優先順位を得ることになるが、そのファクタは線形ではないので、大容量ファイルが優先順位リストのはるか後ろの方へと押しやられることはない。最後に、データアイテムのタイプに基づいて、定数「ブーストファクタ(boost factor)」Bを適用することができる。デフォルトで、ブーストファクタは1であるが、データアイテムの様々なタイプに対して異なることができ(例えば、B_{ms-office}=2})、式中、ms-officeはMicrosoft Office(商標)文書を意味する。
【００５１】
システム400は、どのようにコンテンツがクライアントの間で共用されるかを決定するために、この優先順位の式を使用することができる。例えば、クライアント102、104、406、およびサーバ106で利用可能な帯域幅、ならびに共用されるデータと関連付けられた優先順位に応じて、システム400は、クライアントの組合せに対して、共用する負荷を分配することができる。例えば、図4を参照すると、クライアントA102は、クライアントB104およびクライアントC406の両方に直接クライアントXコンテンツ410を送ることができる。代替的には、クライアントA102は、コンテンツをクライアントB104にだけ送り、クライアントB104に、それを複製してクライアントC406に送るように要求することができる。いずれの方法であっても、サーバ106は、特にそれが利用可能な帯域幅を有していない場合、このピアツーピアのコンテンツ共用プロセスで迂回され得る。
【００５２】
図6は、オフラインのクライアントがオンラインになったとき、図4の混成されたピアツーピアおよびサーバアーキテクチャを用いて、コンテンツを共用し、かつ同期化するための例示的な方法を示す他のシーケンス図である。この場合、システム400は、特定のクライアントがオフラインであることを自動的に検出する。一実施形態では、クライアントがオンラインであるか、それともオフラインであるかの判定は、クライアントによるポーリングをモニタすることにより行うことができる。クライアントからの要求が何も受信されない場合、そのクライアントはオフラインであると想定される。同様に、サーバ106は、クライアントID、および各クライアントがオンラインであるか、それともオフラインであるかのテーブルを維持することができる。クライアントがオンラインになったとき、クライアントは、自分がオンラインになったことをサーバ106に通知することができ、サーバ106は、そのクライアントのテーブルをオンラインステータスで更新することができる。
【００５３】
システム400は、ピアツーピアと「ドロップボックス」技法の組合せを用いて、ピアツーピアのコンテンツ共用および同期化を可能にすることができる。ピアツーピア技法は、現在オンラインであるクライアントにより、クライアント間で直接コンテンツを共用するために使用することができる。しかし、システム400がオフラインのクライアントにコンテンツを供給するために、サーバは、オフラインのクライアントが再度オンラインになるまで、そのコンテンツのためのドロップボックスとして使用され得る。
【００５４】
イベントが生じたとき、ステップ602で処理を開始することができる。このステップ602は、図2のステップ202と同様のものとすることができ、イベントは、ファイルもしくは文書をセーブすること、ウェブページにアクセスすること、またはファイルもしくはアプリケーションを開くことなど、ユーザにより実施されるアクションに応じて生成される。例えば、図4を参照すると、ユーザはクライアントA102で、自分の仕事用コンピュータ上で文書を編集し、かつセーブすることができる。
【００５５】
ステップ604で、インデックスは、ステップ602で生じたイベントを反映させるように更新される。例えば、図4を参照すると、インデックスはユーザの文書の新しくセーブされたバージョンを反映するように更新される。インデックスは、ファイルをクライアント上で容易に位置を特定できるようにする。
【００５６】
ステップ606で、第1のクライアント上で生成されたコンテンツは、第2のクライアントにポストされ、したがって、ピアツーピアのコンテンツフローが開始される。コンテンツは、ユーザがセーブする文書のコピーと、データのタイプ、そのデータを生成したクライアント、およびいつデータが最後に変更されたかを記述するメタデータとを含むことができる。例えば、図4を参照すると、クライアントA102は、クライアントXコンテンツ410をクライアントB104に送るが、コンテンツ410は、そのコンテンツのソース(クライアントA102)およびいつそれが生成されたかを含むメタデータと共に送信される。
【００５７】
ステップ608で、第2のクライアントは、生成元のクライアントから受信したコンテンツを記憶し、ユーザが第1のクライアントで作成された文書を、第2のクライアントで見ることを可能にする。このステップでは、第2のクライアントはまた、そのコンテンツをサーバに送る。いくつかの実施形態では、第2のクライアントは、第3のクライアント(例えば、クライアントC)がオンラインであった場合、第3のクライアントにデータを直接送るはずであるが、この場合、第3のクライアントがオフライであるので、コンテンツは、一時記憶のためにサーバに送信される。例えば、図4で、クライアントB104は、クライアントXコンテンツ410をそのローカルな記憶装置に記憶し、次いで、クライアントXコンテンツ410をサーバ106に送信する。クライアントCがオンラインであった場合、クライアントB104は、コンテンツを直接クライアントC406に送ることもできるが、クライアントC406はオフラインであり、したがって、クライアントB104は、代わりにデータをサーバ106に伝達する。
【００５８】
ステップ610で、第2のクライアントから受信されたコンテンツは、サーバの記憶デバイスに記憶される。例えば、図4を参照すると、サーバ106は、クライアントB104から受信されたクライアントXコンテンツ410を、記憶装置330に記憶する。
【００５９】
ステップ606の代替の実施形態は、ステップ606からステップ610へと指し示す破線により示されるように、第2のクライアントを迂回してサーバに直接データを送る。例えば、図4を参照すると、クライアントXコンテンツ410は、直接サーバ106に送ることができ、したがって、クライアントB104は迂回される。サーバ106は、次いで、クライアントBおよびCなどの残りの同位クライアントにコンテンツを送信することができる。
【００６０】
ステップ612は、コンテンツが第1のクライアントで生成され、第2のクライアントおよびサーバに伝達されている時間中にはオフラインであった第3のクライアントが、オンラインになった後に行うことができる。ステップ612で、第3のクライアントは、欠けているコンテンツのリストをサーバに要求する。例えば、クライアントC406は、インターネットなどの、サーバおよび他のクライアントをリンクさせるネットワークに接続されたとき、欠けているコンテンツのリストをサーバ106に要求する。
【００６１】
ステップ614で、サーバは、第3のクライアントの欠けているコンテンツを決定する。その決定は、サーバで記憶されたタイムスタンプの付されたコンテンツと、第3のクライアントがオフラインであり、コンテンツを受信していない間の時間期間を表す時間範囲とに基づいて行うことができる。例えば、図4を参照すると、サーバ106は、クライアント406が最後にサーバと交信して以来、どのコンテンツがサーバにアップロードされたかを判定することにより、クライアント406の欠けているコンテンツを決定する。サーバは、クライアントCが欠けているコンテンツのリストを現在要求している時間と、TS338を比較することにより、この決定を行うことができる。クライアントCが最後にログオンした時と、その現在のログオンとの間のTSを有する任意のコンテンツが、クライアントCに欠けていると想定される。
【００６２】
代替的には、クライアントにより指定される時間範囲は任意のものとすることができる。例えば、クライアントCは、クライアントCが最後にログオンした時とは関係なく、まだ記憶していないコンテンツに基づいて時間範囲の開始点と終了点を指定することができる。これは、上記で論じた優先順位の式と組み合わせて使用することもできる。例えば、クライアントは、サーバにログオンできるが、コンテンツに低い優先順位が与えられているので、一定の時間期間は、そのコンテンツをダウンロードすることができない。後に、クライアントは、その低い優先順位のコンテンツの時間範囲の後に生じた時間範囲と関連付けられたコンテンツをダウンロードしていた場合であっても、このコンテンツをダウンロードするためにこの時間範囲を指定することができる。
【００６３】
いくつかの実施形態では、サーバ106は、実際のコンテンツを含まなくてもよく、クライアントCがオフラインであった時間中に生成されたコンテンツのリストを含むことができる。例えば、クライアントAは、クライアントCがオフラインである時間中に、非常に大容量のファイルにアクセスすることがある。このファイルのコンテンツは、(前に論じたように)優先順位アルゴリズムを実行するため、サーバ106に送信されない可能性がある。それに代えて、ファイルと、それがアクセスされた時間とを記述するメタデータがサーバに送信され得る。このメタデータは、コンテンツが現在サーバ106上に記憶されていないとしても、クライアントCがオフラインである時間中に生成されたコンテンツを追跡するリスト中に含まれ得る。
【００６４】
ステップ616で、サーバは、オフラインであった第3のクライアント(例えば、クライアントC)に、欠けているコンテンツのリストを渡す。欠けているコンテンツを識別するリストは、欠けているデータのタイプ、データのアクセスもしくは送信と関連付けられた時間範囲、およびその欠けているコンテンツのクライアントソースを記述するメタデータを含む。例えば、図4を参照すると、サーバ106は、クライアントC406に、サーバから、またはソースクライアントから直接取得できる、欠けているコンテンツのリストを送る。
【００６５】
ステップ618で、第3のクライアントは、欠けているコンテンツをどこで取得できるかを決定するために、サーバから受信したリストを使用する。欠けているコンテンツは、他の同位クライアント上に存在する場合、サーバに記憶されている場合、あるいはクライアントとサーバの両方に記憶される場合もある。例えば、図4を参照すると、クライアントC406は、(この場合、クライアントAのコンテンツである)クライアントXコンテンツ410をクライアントA102に要求することにより、そのコンテンツを同期化できると決定することができる。図6の現在の例では、たまたまクライアントA102でコンテンツが生成されているが、クライアントは、そのコンテンツがどこで生成されたかに関係なく、欠けているコンテンツのコピーを有する任意のクライアントにコンテンツを要求することができる。
【００６６】
ステップ620で、第3のクライアントは、第1のクライアントがその時点でオンラインであるならば、欠けているコンテンツを第1のクライアントに要求する。例えば、図4を参照すると、クライアントC406は、クライアントAが現在クライアントCにネットワーク接続されている場合、クライアントA102に、クライアントXコンテンツ410を要求する。要求されたコンテンツは、クライアントA102に常駐するコンテンツのタイムスタンプに対応する時間範囲に基づいていており、クライアントC406に常住するものではない。
【００６７】
ステップ622で、第1のクライアントは、欠けているコンテンツを第3のクライアントに提供する。例えば、図4を参照すると、クライアントA102は、クライアントXコンテンツ410をクライアントC406に送る。
【００６８】
ステップ620の代替の実施形態では、欠けているコンテンツを求める第3のクライアントの要求の時点で、第1のクライアントはオフラインである可能性がある。この実施形態では、第3のクライアントは、欠けているコンテンツを、オンラインである他のクライアントから取得することができる。例えば、クライアントC406は、クライアントAのコンテンツ410をクライアントB102に要求する。当然であるが、クライアントAは、ステップ608で示すように、クライアントAとクライアントBが共にオンラインであった時点で、要求されたコンテンツを、予めクライアントBに転送することが必要になるはずである。
【００６９】
ステップ624で、第2のクライアントは、欠けているコンテンツを第3のクライアントに送る。例えば、図4を参照すると、クライアントB104は、クライアントXコンテンツ410をクライアントC406に送る。
【００７０】
ステップ620の他の代替の実施形態では、欠けているコンテンツを求める第3のクライアントの要求の時点で、第1と第2のクライアントが共にオフラインであり得る。この場合、第3のクライアントは、欠けているコンテンツをサーバから取得することができる。例えば、クライアントC406は、クライアントXコンテンツ410をサーバ106に要求する。さらに、クライアントC406は、1つまたは複数の他のクライアントがオンラインである場合であっても、サーバにコンテンツを要求することができる。例えば、クライアントCは、他のクライアントが、サーバに対して、より少ない利用可能な帯域幅を有している場合、コンテンツをサーバに要求することができる。
【００７１】
ステップ626で、サーバは、欠けているコンテンツを第3のクライアントに送る。例えば、図4を参照すると、サーバ106は、クライアントXコンテンツ410をクライアントC406に送る。
【００７２】
ステップ628で、第3のクライアントにより受信されたコンテンツは、クライアントのローカルな記憶装置に記憶される。例えば、図4を参照すると、クライアントC406により受信されたクライアントXコンテンツ410は、クライアントのローカルな記憶装置に記憶される。
【００７３】
ステップ630で、クライアントのインデックスは、第3のクライアントにより受信されたコンテンツに対応する検索可能な情報を組み込むように更新される。例えば、図4を参照すると、クライアントC406で記憶されたインデックスは、受信したクライアントXコンテンツ410に対応する検索可能な情報を用いて更新される。コンテンツがインデックスと関連付けられた後、Google(商標)Desktopなどの検索アプリケーションは、検索アプリケーションに対するユーザインターフェース中に、コンテンツ内に存在するキーワードをユーザが入力したとき、コンテンツの位置を特定することができる。
【００７４】
図7は、図4に示すシステムの個々のコンポーネントをさらに詳細に示すブロック図である。上記で論じたように、システム400は、クライアントA102、クライアントB104、およびサーバ106を含み、クライアントA102およびクライアントB104は、ユーザの様々なコンピュータを表す。サーバ106は、ユーザのクライアント間の同期化を容易に可能にする一時的な記憶場所として働く。
【００７５】
クライアントA102は、コンテンツがクライアントA102上で変更されたとき、クライアントAコンテンツ108をサーバ106にポストする。クライアントAコンテンツ108のポスティングは、例えば、ユーザがファイルまたは文書をセーブする度に、またはユーザがウェブページを閲覧したときに行われる。ポスティングは、例えば、2分ごとに、設定した間隔で行うことができ、またポスティングレートおよび戦略を構成可能にすることができる。代替的に、ファイルをセーブするなどのアクションによりイベントが生成されるとすぐに、ポスティングを行うことができる。例えば、クライアントは、サーバとのオープン接続(open connection)を維持し、イベントが生成されるとすぐにポストすることができる。この接続指向アーキテクチャ(接続が、ピアツーピアであるか、それともクライアントツーサーバであるかにかかわらず)では、各クライアントは、他のクライアントが、欠けている情報を求める要求を送るまで待機するのではなく、新しいデータを他のクライアントにプッシュすることができる。
【００７６】
クライアントAコンテンツ108は、サーバ106により受信され、かつ記憶される。そのローカルに記憶されたコンテンツを、他のクライアントからのコンテンツと同期させた状態に保つために、クライアントB104は、周期的に、欠けているコンテンツを求める要求710をサーバ106に発行する。要求710は、欠けているコンテンツに対するタイムスタンプの範囲を識別する時間範囲712パラメータを含む。要求710は、クライアントB104が、クライアントB104にサーバ106がまだ送っていないクライアントAコンテンツ108を取得するために発行される。要求を満たすために、サーバ106は、指定された時間範囲712を用いて、欠けているコンテンツのそのコピーの位置を特定し、指定された時間範囲に対する欠けているコンテンツ714をクライアントB104に送る。
【００７７】
同様に、ピアツーピアのアーキテクチャを用いて、クライアントB104は、欠けているコンテンツを他のクライアントに要求することができる。例えば、クライアントB104は、欠けているコンテンツを求める要求710をクライアントA102に発行することができる。クライアントA102は、その記憶装置上でデータの位置を特定し、それを、指定された時間範囲に対する欠けているコンテンツ714としてクライアントB104に送ることができる。
【００７８】
クライアントA102は、ローカルに記憶されたコンテンツと関連付けられた時間範囲のリスト716、必要なコンテンツと関連付けられた時間範囲のリスト718、および更新タイマ720を含む。時間範囲のリスト716および718は、他のクライアントおよびサーバ上に記憶されたコンテンツと、クライアントA102上のコンテンツとの同期化を容易にする。例えば、ローカルに記憶されたコンテンツと関連付けられた時間範囲のリスト716は、クライアントA102上でローカルに作成されたコンテンツと、クライアントB104などの他のクライアント上で作成されたものであるがクライアントAに記憶されているコンテンツとを併せたものに対応する。同様に、必要なコンテンツと関連付けられた時間範囲のリスト718は、クライアントA102が取得する必要のあるコンテンツに対応する。ピアツーピアおよびクライアント/サーバの混成アーキテクチャでは、欠けているコンテンツは、サーバ106から、またはクライアントB104などの他の同位クライアントから取得することができる。コンテンツがクライアントA102で受信されると、それに対応する時間範囲は、必要なリスト718からローカルに記憶されたリスト716に移動される。更新タイマ720は、クライアントが、欠けている情報の新しいリストを取得するために、いつサーバまたは他のクライアントに接続される必要があるか、新しく作成したコンテンツのリスト(またはコンテンツそれ自体)をいつ提供する必要があるか、さらに、まだ受信していないコンテンツをダウンロードするためにいつ接続される必要があるかを追跡するために使用される。
【００７９】
サーバ106は、記憶装置722および認証マネジャ724を含む。記憶装置722は、ピアツーピアのアーキテクチャにおいて、様々なクライアントから受信されたコンテンツA、コンテンツB、以下同様に、コンテンツN726を含む。コンテンツの各アイテムは、関連付けられたタイムスタンプTS A、TS B、以下同様に、TS N728を有し、それは、各コンテンツ726が最後に更新された時間を識別する。さらに、各コンテンツ726は、関連付けられたソースA、ソースB、以下同様に、ソース730を有し、それは、コンテンツのソース、またはクライアントIDを識別する。認証マネジャ724は、コンテンツを記憶または要求するために、サーバにアクセスすることを試みるユーザおよびクライアントを認証する。認証マネジャ724は、サーバ106にアクセスすることが許容されたクライアントと関連付けられたユーザID732のリスト、ユーザと関連付けられたクライアントを識別するユーザクライアントID734のリスト、ならびにサーバ106およびサーバが記憶装置722に有するコンテンツの無許可の使用を阻止するために、ユーザID732およびユーザクライアントID734を使用する認証装置(Authenticator)736を含むことができる。
【００８０】
いくつかの実施形態では、認証マネジャ724は、図7に示すエレメントのすべてを含まない。例えば、マネジャ724は、ユーザクライアントID734のリストを含まないこともあり、それは、これらのIDをこれらの実施形態における認証で使用しないからである。それに代えて、主として、受信されたコンテンツがどのユーザのマシンに送信されたかを示すために、ユーザクライアントID734を使用することができる。
【００８１】
クライアントB104は、クライアントA102と同様な機能を実施することができ、またローカルに記憶されたコンテンツと関連付けられた時間範囲のリスト738、必要なコンテンツと関連付けられた時間範囲のリスト740、および更新タイマ742を含む同様なコンポーネントを含むことができる。
【００８２】
図8は、図4に示す実施形態による複数のクライアント装置にわたりコンテンツを共用し、かつ同期化するための例示的な方法800を示す流れ図である。例えば、本方法は、システム400により実施することができる。方法800は、ステップ802で、あるクライアントが、指定された時間範囲内のコンテンツを求めて第2のクライアントに照会するとき開始することができる。例えば、図7を参照すると、クライアントA102は、最後に同期化されて以来の時間を表す時間範囲内のコンテンツを求めて、クライアントB104に照会することができる。時間範囲情報は、クライアントA102における必要なコンテンツと関連付けられた時間範囲のリスト718のサブセットとすることができる。
【００８３】
ステップ804で、第2のクライアントがオンラインかどうかが判定される。例えば、図7を参照すると、システムは、クライアントB104がオンラインであるかどうかを判定する。オンラインである場合、クライアントB104から必要なコンテンツを直接取得することも可能である。
【００８４】
ステップ804の回答がyesである場合、ステップ806で、第2のクライアントは、要求されたコンテンツを提供する。提供されるコンテンツは、ステップ802で指定された時間範囲に対応する。例えば、図7を参照すると、クライアントB104は、要求されたコンテンツをクライアントA102に送り、それはローカルにそのコンテンツを記憶する。
【００８５】
ステップ808で、コンテンツを受信するクライアントは、既に有するコンテンツに対応するその時間範囲リストを更新し、また、クライアントがさらに必要なコンテンツを識別するリストを更新する。時間範囲リストは、コンテンツに対するソースとして働く各クライアントに特有のものである。コンテンツをあるクライアントから受信したとき、時間範囲は、ソースからの必要なコンテンツリストから除去されて、そのソースからローカルに記憶されたコンテンツリストに追加される。例えば、図7を参照すると、必要なコンテンツと関連付けられた時間範囲のリスト718は、その時間範囲だけ減少され、ローカルに記憶されたコンテンツと関連付けられた時間範囲のリスト716は、その時間範囲だけ増加される。ステップ808を完了すると、コンテンツを求める照会およびコンテンツの送達が完了する。
【００８６】
ステップ810は、ステップ804の判定が、クライアントBがオンラインではない、または第1のクライアントの照会により要求されたコンテンツを提供できないことである場合に実行される。この場合、第1のクライアントは、必要なコンテンツを取得するためにサーバに照会する。例えば、図7を参照すると、クライアントB104は、必要なコンテンツを求めてサーバ106に照会する。
【００８７】
ステップ812で、サーバが指定されたコンテンツを有するかどうかが判定される。コンテンツは、例えば、保存ルール、記憶のクォータ、または予測できないデータ損失により削除されていた場合、サーバ上にもはや存在しないこともあり得る。例えば、図7を参照すると、サーバ106は、記憶装置722中の必要なコンテンツの位置を特定しようと試みる。その検索は、必要とされるコンテンツに対応する時間範囲を用いて行われる。例えば、サーバ106は、要求の時間範囲を、記憶装置722内のコンテンツのタイムスタンプTS728と比較する。タイムスタンプが、指定された時間範囲に含まれる場合、サーバ106は、クライアントA102の要求を満たすことができる。コンテンツが、記憶装置722内にない場合、サーバ106は、そのコンテンツを生成したクライアントにそれを要求することができる。サーバは、要求されたコンテンツを受信した後、それをクライアントA102に送信することができる。
【００８８】
組織における保存ルールは、文書を破壊することが必要になる前に、限定された時間(例えば、2年)の間保存できることを指定することができる。指定された保存期間の最後に、文書は、おそらく自動的に、クライアント上で削除され得る。システム800の各クライアントまたはサーバは、対応するコンテンツを削除するように、他のクライアント、またはサーバにコマンドを送信することができる。さらに、コンテンツと関連付けられたメタデータは、有効期限または他の保存ルールを含むことができる。このメタデータは、コンテンツと共に、要求するクライアントのすべてに転送することができる。このように、コンテンツおよびメタデータを受信したクライアントは、受信するクライアントが、コンテンツを受信した後にネットワークに接続されていない(したがって、コンテンツを削除するためのコマンドを受信することがない)場合であっても、そのルールまたは有効期限と関連付けられたコンテンツを削除することができる。
【００８９】
サーバ上の記憶クォータは、ユーザにより記憶されるデータの量を制限することができる。例えば、サーバ106は、それが働く各クライアントに対して、構成可能な記憶クォータを有することができる。クライアントA102(例えば、ユーザの仕事用コンピュータ)は、クライアントがその記憶クォータを超えるまで、サーバ106にコンテンツを送信することができる。いくつかの実施形態では、サーバ106は、そのクォータに対して、クライアントの送信するコンテンツを処理するためにFIFOシステムを有することができる。クライアントのクォータが超過した場合、新しいコンテンツを受け入れることはできるが、最も古いコンテンツは削除され得る。他のクライアント(例えば、数カ月の間オフラインであったユーザのホームコンピュータ)がコンテンツを受信できる前に、そのコンテンツが削除される場合、クライアントは、どこか他でコンテンツを取得するように強制され得る。この場合、クライアント(例えば、ユーザのホームコンピュータ)は、自分の仕事用コンピュータから直接そのコンテンツを取得することができる。代替的には、サーバは、そのコンテンツを生成したクライアントにコンテンツを要求し、要求するクライアントにコンテンツを送信することができる。
【００９０】
サーバ106は、楽観的な削除ポリシーのために、コンテンツを削除してしまうことがある。サーバ106は、特定のユーザIDと関連付けられたすべてのアクティブなクライアントのリストを含むことができる。アクティブなクライアントは、3カ月などの所定の時間期間内にサーバと交信したクライアントとして定義することができる。サーバは、受信したコンテンツが、そのリストに含まれるアクティブなクライアントに送信されていると判定した後、その受信したコンテンツを削除することができる。非アクティブなクライアント(所定の時間内にサーバと交信していないクライアント)が、削除されたコンテンツを求める要求を送信した場合、サーバは、元々そのコンテンツを送信したクライアントにそれを再送信するように要求することができる。次いで、サーバは、それを、前に非アクティブなクライアントに提供することができる。
【００９１】
ステップ812で回答がyesである場合、ステップ814で、サーバは、必要なコンテンツを提供する。提供されるコンテンツは、ステップ810で指定された時間範囲に対応する。例えば、図7を参照すると、サーバ106は、クライアントA102に必要なコンテンツを送り、クライアントA102はそのコンテンツをローカルに記憶し、かつそれが必要とする、またローカルに記憶されたコンテンツに対応する時間範囲のそのリストを更新する。
【００９２】
ステップ812で回答がnoである場合、サーバは、後でコンテンツを要求するように、第1のクライアントに知らせることができる。
【００９３】
ステップ818で、サーバは、第1のクライアントから受信した元の照会を満たすように、必要な欠けているコンテンツを提供するように第2のクライアントに要求する。一実施形態では、サーバは、第2のクライアントがオンラインであることを検出するまで待機し、次いで、要求を発行することができる。他の実施形態では、サーバは、第2のサーバがオンラインになった後の何らかの時間まで、要求を発行するのを待つことができ、第2のクライアントに、より優先順位の高いタスクを完了させるようにする。例えば、図7を参照すると、サーバ106は、クライアントB104がオンラインになるのを待ち、最後に、欠けているコンテンツをクライアントBに要求する。
【００９４】
そうではあるが、サーバは、要求されたコンテンツのコピーの位置を特定することができる。例えば、図7を参照すると、システムは、クライアントB104がオンラインであるかどうか判定する。オンラインである場合、クライアントB104から直接必要なコンテンツを取得することが可能である。
【００９５】
図9は、汎用コンピュータシステムを示す概略図である。システム900は、一実施形態に従って、方法800ならびにシーケンス500および600で実施される諸ステップを実行するために使用することができる。例えば、システム900は、クライアントA102、クライアントB104、およびサーバ106のいずれか、またはすべてに含まれ得る。
【００９６】
システム900は、プロセッサ910、メモリ920、記憶装置930、および入力/出力装置940を含む。各コンポーネント910、920、930、および940は、システムバス950を用いて相互接続される。プロセッサ910は、システム900内で実行するための命令を処理することができる。一実施形態では、プロセッサ910は、シングルスレッドプロセッサである。他の実施形態では、プロセッサ910は、マルチスレッドプロセッサである。プロセッサ910は、入力/出力装置940上でユーザインターフェース用のグラフィック情報を表示するために、メモリ920または記憶装置930に記憶された命令を処理することができる。
【００９７】
メモリ920は、システム900内の情報を記憶する。一実施形態では、メモリ920は、コンピュータ可読媒体である。他の実施形態では、メモリ920は、揮発性のメモリユニットである。他の実施形態では、メモリ920は、不揮発性のメモリユニットである。
【００９８】
記憶装置930は、システム900に対して、大容量記憶を提供することができる。一実施形態では、記憶装置930は、コンピュータ可読媒体である。様々な異なる実施形態では、記憶装置930は、フロッピー（登録商標）ディスク装置、ハードディスク装置、光ディスク装置、またはテープ装置とすることができる。
【００９９】
入力/出力装置940は、システム900に対する入力/出力オペレーションを提供する。一実施形態では、入力/出力装置940は、キーボードおよび/またはポインティング装置を含む。他の実施形態では、入力/出力装置940は、グラフィカルユーザインターフェースを表示するための表示ユニットを含む。
【０１００】
前述の機能は、デジタル電子回路で、またはコンピュータのハードウェア、ファームウェア、ソフトウェア、もしくはそれらの組合せで実施することができる。装置は、プログラム可能なプロセッサにより実行するために、情報の担持体中で、例えば、マシン可読記憶装置または伝搬信号中で、有形に実施されるコンピュータプログラム製品で実施することができ、また方法の諸ステップは、入力データに対して働いて出力を生成することにより前述の諸実施形態の機能を実施するように命令のプログラムを実行する、プログラム可能なプロセッサにより実施することができる。前述の機能は、有利には、データ記憶システム、少なくとも1つの入力装置、および少なくとも1つの出力装置からデータおよび命令を受信し、かつデータおよび命令をそれらに送信するように結合された少なくとも1つのプログラム可能なプロセッサを含む、プログラム可能なシステム上で実行可能な1つまたは複数のコンピュータプログラムで実施することができる。コンピュータプログラムは、コンピュータで直接または間接的に使用されて、特定の活動を実施し、または特定の結果を得ることのできる1組の命令である。コンピュータプログラムは、コンパイルされ、解釈される言語を含むプログラミング言語の任意の形式で記述することができ、またそれは、スタンドアロンのプログラムとして、またはモジュール、コンポーネント、サブルーチン、またはコンピューティング環境で使用するために適切な他のユニットを含めた任意の形で展開することができる。
【０１０１】
命令のプログラムを実行するために適切なプロセッサは、例として、汎用および専用のマイクロプロセッサ、および任意の種類のコンピュータの単一のプロセッサ、もしくは複数のプロセッサのうちの1つを含む。概して、プロセッサは、読取り専用メモリまたはランダムアクセスメモリから、あるいはその両方から命令およびデータを受信することになる。コンピュータの本質的なエレメントは、命令を実行するためのプロセッサと、命令およびデータを記憶するための1つまたは複数のメモリである。概して、コンピュータはまた、データファイルを記憶するための1つまたは複数の大容量記憶装置を含む、またはそれと通信するために動作可能に結合される。このような装置は、内部のハードディスクおよび取外し可能なディスクなどの磁気ディスク、光磁気ディスク、および光ディスクを含む。コンピュータプログラム命令およびデータを有形に実施するのに適した記憶装置は、例として、EPROM、EEPROM、およびフラッシュメモリデバイスなどの半導体メモリデバイス、内部ハードディスクおよび取外し可能なディスクなどの磁気ディスク、光磁気ディスク、およびCD-ROMおよびDVD-ROMディスクを含む不揮発性メモリのすべての形態を含む。プロセッサおよびメモリは、ASIC(特定用途向けIC)により補強され、またはそれに組み込むことができる。
【０１０２】
ユーザとの対話を提供するために、諸機能は、情報をユーザに表示するためのCRT(陰極線管)またはLCD(液晶ディスプレイ)モニタなどの表示装置と、ユーザがコンピュータへの入力を提供できるキーボード、およびマウスもしくはトラックボールなどのポインティング装置とを有するコンピュータ上で実施することができる。
【０１０３】
諸機能は、データサーバなどのバックエンドコンポーネントを含むコンピュータシステムで、またはアプリケーションサーバもしくはインターネットサーバなどのミドルウェアコンポーネントを含むコンピュータシステムで、またはグラフィカルユーザインターフェースもしくはインターネットブラウザを有するクライアントコンピュータなどのフロントエンドコンポーネントを含むコンピュータシステムで、またはそれらの任意の組合せで実施することができる。システムのコンポーネントは、通信ネットワークなどのデジタルデータ通信の任意の形態または媒体により接続され得る。通信ネットワークの諸例は、例えば、LAN、WANを含み、コンピュータおよびネットワークはインターネットを形成する。
【０１０４】
コンピュータシステムは、クライアントおよびサーバを含むことができる。クライアントおよびサーバは、概して、互いに遠隔にあり、また通常、前述のものなど、ネットワークを介して対話する。クライアントとサーバの関係は、各コンピュータ上で動作し、かつ互いにクライアント-サーバ関係を有するコンピュータプログラムにより生ずる。
【０１０５】
いくつかの実施形態が述べられてきた。そうではあるが、前述の諸実施形態の趣旨および範囲から逸脱することなく様々な変更を加え得ることが理解されよう。例えば、図4に示すシステム400は、サーバ106のないピアツーピアのアーキテクチャを使用するように変更することができる。クライアントA102などのクライアントが、クライアントB104などのオフラインの他のクライアントにコンテンツを送ることを試みる場合、クライアントA102は、一時的な記憶用として、コンテンツをサーバ106に転送する代わりに、クライアントB104がオンラインに戻るまで、コンテンツを保持し、かつ転送する試みを継続することができる。代替的には、クライアントA102は、ターゲットクライアントがオフラインである場合、ターゲットのクライアントB104以外のクライアントにコンテンツを転送することもできる。例えば、クライアントA102は、クライアントCにコンテンツを転送することができ、クライアントCは、クライアントB104がオンラインになったときコンテンツをクライアントB104に転送する。
【０１０６】
さらに、他の実施形態では、クライアントは、コンテンツを、時間範囲ではなく、ビット範囲で指定することができる。例えば、クライアントは、(コンテンツデータの開始ビットを示す)第1のビット値から、(コンテンツデータの終了ビットを示す)第2のビット値までにより指定されるコンテンツをサーバ106に要求することができる。同様に、時間範囲のリスト716、718、738、および740は、ローカルに記憶されたコンテンツに関連付けられたビット範囲と、必要なコンテンツに関連付けられたビット範囲とをそれぞれ含むことができる。したがって、他の諸実施形態も、添付の特許請求の範囲に含まれる。
【図面の簡単な説明】
【０１０７】
【図１】複数のクライアント装置にわたりコンテンツを共用し、かつ同期化するためのシステムを示す概略図である。
【図２】図1に示す実施形態による複数のクライアント装置にわたりコンテンツを共用し、かつ同期化するための例示的な方法を示すシーケンス図である。
【図３】図1のシステムをさらに詳細に示すブロック図である。
【図４】混成されたピアツーピアおよびクライアント/サーバアーキテクチャを用いて、コンテンツを共用し、かつ同期化するためのシステムを示す概略図である。
【図５】図4の混成されたピアツーピアおよびサーバアーキテクチャを用いて、コンテンツを共用し、かつ同期化するための例示的な方法を示すシーケンス図である。
【図６】オフラインのクライアントがオンラインになったとき、図4の混成されたピアツーピアおよびサーバアーキテクチャを用いてコンテンツを共用し、かつ同期化するための例示的な方法を示す他のシーケンス図である。
【図７】図4に示すシステムの個々のコンポーネントをさらに詳細に示すブロック図である。
【図８】図4に示す実施形態による複数のクライアント装置にわたりコンテンツを共用し、かつ同期化するための例示的な方法を示す流れ図である。
【図９】汎用コンピュータシステムを示す概略図である。
【符号の説明】
【０１０８】
100    システム
102    クライアントA
104    クライアントB
106    サーバ
108    クライアントAコンテンツ
112    クライアントBコンテンツ
200    方法
310    欠けているコンテンツを求める要求
312    時間範囲
314    指定された時間範囲に対する欠けているコンテンツ
316    ファイル
318    HTMLファイル
320    インデックス
322    イベントリスナ
324    ファイルからテキスト/HTMLへのコンバータ
326    HTTPSクライアント/サーバ
328    タイムスタンプ
330    記憶装置
332    同期化マネジャ
334    認証マネジャ
336    コンテンツA、B、…N
338    TS
342    スペースクォータ
344    スループット閾値
346    ファイル
348    HTMLファイル
350    インデックス
352    イベントリスナ
354    ファイルからテキスト/HTMLへのコンバータ
356    HTTPSクライアント/サーバ
358    タイムスタンプ
400    システム
406    クライアントC
410    クライアントXコンテンツ
500    シーケンス
600    シーケンス
710    欠けているコンテンツを求める要求
712    時間範囲
714    指定された時間範囲に対する欠けているコンテンツ
716    ローカルに記憶されたコンテンツと関連付けられた時間範囲のリスト
718    必要なコンテンツと関連付けられた時間範囲のリスト
720    更新タイマ
722    記憶装置
724    認証マネジャ
726    コンテンツA、B、…N
728    TS
730    ソース
732    ユーザID
734    ユーザクライアントID
738    ローカルに記憶されたコンテンツと関連付けられた時間範囲のリスト
740    必要なコンテンツと関連付けられた時間範囲のリスト
742    更新タイマ
800    方法
900    システム
910    プロセッサ
920    メモリ
930    記憶装置
940    入力/出力装置
950    システムバス
【図１】
2009524889.tif 000003
【図２】
2009524889.tif 000004
【図３】
2009524889.tif 000005
【図４】
2009524889.tif 000006
【図５】
2009524889.tif 000007
【図６】
2009524889.tif 000008
【図７】
2009524889.tif 000009
【図８】
2009524889.tif 000010
【図９】
2009524889.tif 000011