(57)【特許請求の範囲】
【請求項１】
コンピュータ装置上のドキュメントを同期化するコンピュータ実装方法であって、前記方法は、
ドキュメントを１つまたは複数のセルに分割するステップであって、各セルは、同様のプロパティを有する１つまたは複数のオブジェクトをグループ化した１つまたは複数のオブジェクトグループを含み、前記ドキュメントは、前記１つまたは複数のオブジェクトがどのように前記１つまたは複数のオブジェクトグループに配置されるかを示す第１のリビジョンマニフェストに関連する第１のセルを含み、前記第１のリビジョンマニフェストはさらに前記第１のセルの第１のリビジョンステートを定義する、ステップと、
前記第１のセル内の１つまたは複数のオブジェクトへの更新をクライントから受信するステップと、
前記ドキュメント内の他のセルが影響を受けないように、前記クライントからの前記更新を用いて前記第１のセルを同期化するステップと、
前記第１のセルに関連する第２のリビジョンマニフェストを生成するステップであって、前記第２のリビジョンマニフェストは、前記第１のリビジョンマニフェストに基づいており、前記更新を反映する、ステップと
を備えることを特徴とするコンピュータ実装方法。
【請求項２】
各セル内の前記１つまたは複数のオブジェクトは、前記１つまたは複数のオブジェクトが更新される確率に基づいてグループ化されることを特徴とする請求項１に記載のコンピュータ実装方法。
【請求項３】
各セル内の前記１つまたは複数のオブジェクトは、オブジェクトのサイズに基づいてグループ化されることを特徴とする請求項１に記載のコンピュータ実装方法。
【請求項４】
前記１つまたは複数のオブジェクトのそれぞれは、オブジェクト識別子と関連することを特徴とする請求項１に記載のコンピュータ実装方法。
【請求項５】
前記更新を受信するステップは、更新されたオブジェクト識別子を受信するステップをさらに備えること特徴とする請求項１に記載のコンピュータ実装方法。
【請求項６】
前記更新されたオブジェクト識別子が前記第１のセル内のオブジェクトのオブジェクト識別子と一致するか否かを判断するステップをさらに備えることを特徴とする請求項５に記載のコンピュータ実装方法。
【請求項７】
前記更新されたオブジェクト識別子が前記オブジェクト識別子と一致しないと判断すると、前記更新されたオブジェクト識別子を使用して前記第１のリビジョンマニフェストを参照するステップをさらに備えることを特徴とする請求項５に記載のコンピュータ実装方法。
【請求項８】
コンピュータ実装システムであって、
プロセッサと
前記プロセッサと通信可能に結合されているメモリと
を備え、前記メモリは、前記プロセッサによって実行されるとコンピュータ装置上のドキュメントを同期化する方法を提供するコンピュータ実行可能な命令を有し、前記方法は、
ドキュメントを１つまたは複数のセルに分割するステップであって、各セルは、同様のプロパティを有する１つまたは複数のオブジェクトをグループ化した１つまたは複数のオブジェクトグループを含み、前記ドキュメントは、前記１つまたは複数のオブジェクトがどのように前記１つまたは複数のオブジェクトグループに配置されるかを示す第１のリビジョンマニフェストに関連する第１のセルを含み、前記第１のリビジョンマニフェストはさらに前記第１のセルの第１のリビジョンステートを定義する、ステップと、
前記第１のセル内の１つまたは複数のオブジェクトへの更新をクライントから受信するステップと、
前記ドキュメント内の他のセルが影響を受けないように、前記クライントからの前記更新を用いて前記第１のセルを同期化するステップと、
前記第１のセルに関連する第２のリビジョンマニフェストを生成するステップであって、前記第２のリビジョンマニフェストは、前記第１のリビジョンマニフェストに基づいており、前記更新を反映する、ステップと
を備えることを特徴とするコンピュータ実装システム。
【請求項９】
各セル内の前記１つまたは複数のオブジェクトは、前記１つまたは複数のオブジェクトが更新される確率に基づいてグループ化されることを特徴とする請求項８に記載のコンピュータ実装システム。
【請求項１０】
各セル内の前記１つまたは複数のオブジェクトは、オブジェクトのサイズに基づいてグループ化されることを特徴とする請求項８に記載のコンピュータ実装システム。
【請求項１１】
前記１つまたは複数のオブジェクトのそれぞれは、オブジェクト識別子と関連することを特徴とする請求項８に記載のコンピュータ実装システム。
【請求項１２】
前記更新を受信するステップは、更新されたオブジェクト識別子を受信するステップをさらに備えること特徴とする請求項８に記載のコンピュータ実装システム。
【請求項１３】
前記更新されたオブジェクト識別子が前記第１のセル内のオブジェクトのオブジェクト識別子と一致するか否かを判断するステップをさらに備えることを特徴とする請求項１２に記載のコンピュータ実装システム。
【請求項１４】
前記更新されたオブジェクト識別子が前記オブジェクト識別子と一致しないと判断すると、前記更新されたオブジェクト識別子を使用して前記第１のリビジョンマニフェストを参照するステップをさらに備えることを特徴とする請求項１２に記載のコンピュータ実装システム。
【請求項１５】
コンピュータ装置上のドキュメントを同期化する方法をコンピュータに実行させるためのコンピュータ実行可能な命令を有する１つまたは複数のコンピュータ記録媒体であって、前記方法は、
ドキュメントを１つまたは複数のセルに分割するステップであって、各セルは、同様のプロパティを有する１つまたは複数のオブジェクトをグループ化した１つまたは複数のオブジェクトグループを含み、前記ドキュメントは、前記１つまたは複数のオブジェクトがどのように前記１つまたは複数のオブジェクトグループに配置されるかを示す第１のリビジョンマニフェストに関連する第１のセルを含み、前記第１のリビジョンマニフェストはさらに前記第１のセルの第１のリビジョンステートを定義する、ステップと、
前記第１のセル内の１つまたは複数のオブジェクトへの更新をクライントから受信するステップと、
前記ドキュメント内の他のセルが影響を受けないように、前記クライントからの前記更新を用いて前記第１のセルを同期化するステップと、
前記第１のセルに関連する第２のリビジョンマニフェストを生成するステップであって、前記第２のリビジョンマニフェストは、前記第１のリビジョンマニフェストに基づいており、前記更新を反映する、ステップと
を備えることを特徴とする１つまたは複数のコンピュータ記録媒体。
【請求項１６】
各セル内の前記１つまたは複数のオブジェクトは、前記１つまたは複数のオブジェクトが更新される確率に基づいてグループ化されることを特徴とする請求項１５に記載の１つまたは複数のコンピュータ記録媒体。
【請求項１７】
各セル内の前記１つまたは複数のオブジェクトは、オブジェクトのサイズに基づいてグループ化されることを特徴とする請求項１５に記載の１つまたは複数のコンピュータ記録媒体。
【請求項１８】
前記１つまたは複数のオブジェクトのそれぞれは、オブジェクト識別子と関連することを特徴とする請求項１５に記載の１つまたは複数のコンピュータ記録媒体。
【請求項１９】
前記更新を受信するステップは、更新されたオブジェクト識別子を受信するステップをさらに備えること特徴とする請求項１５に記載の１つまたは複数のコンピュータ記録媒体。
【請求項２０】
前記更新されたオブジェクト識別子が前記第１のセル内のオブジェクトのオブジェクト識別子と一致するか否かを判断するステップをさらに備えることを特徴とする請求項１９に記載の１つまたは複数のコンピュータ記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本願は、ステートレスなプロトコルを介したドキュメントの同期に関する。
【背景技術】
【０００２】
典型的なドキュメントシステムにおいて、ドキュメントは全体のドキュメントレベルでアクセスされ、その結果、全体のドキュメントは編集のためにクライアントコンピュータによってサーバから受信される。これは、下層のドキュメントフォーマットに関連する低レベルデータがサーバからクライアントコンピュータに伝送されることを要求する。さらに、増分のドキュメントフォーマットは、ネットワーク接続を介してガーベジコレクションされ、デフラグメンテーションされ（ｇａｒｂａｇｅ  ｃｏｌｌｅｃｔｅｄ  ａｎｄ  ｄｅｆｒａｇｍｅｎｔｅｄ）なければならない。さらに、ロックはネットワークを介して制御される必要がある。ロックの制御は、かなりの量のコンテンツが交換されることを要求する、複雑で脆弱なタスクになる可能性がある。ガーベジコレクションおよびデフラグメンテーション（ｇａｒｂａｇｅ  ｃｏｌｌｅｃｔｉｏｎ  ａｎｄ  ｄｅｆｒａｇｍｅｎｔａｔｉｏｎ）の情報を含む低レベルデータの伝送は、ロックを制御するのと同様に、不必要にアプリケーションをその低レベルのファイルフォーマットに結び付け、柔軟性がなくて非効率を招く可能性がある。
【発明の概要】
【０００３】
本明細書に説明されるシステムおよび方法の例は、ステートレスなプロトコル（ｓｔａｔｅｌｅｓｓ  ｐｒｏｔｏｃｏｌ）を介したファイル（例えばドキュメント）の同期および／またはローディングに関する。
【０００４】
１つの態様によれば、ドキュメントのドキュメントフォーマットと関係なく第１のコンピュータ装置上にドキュメントを格納するためのデータ構造は、ドキュメントのコンテンツを定義する複数のセルおよび複数のデータオブジェクトを含む。セルの各々は、ドキュメント内に特定のセルを区別するセル識別子を有し、少なくとも１つのリビジョン（ｒｅｖｉｓｉｏｎ）に関連する。各データオブジェクトは、セルの１つに関連し、関連するセル内のデータオブジェクトを区別するオブジェクト識別子を有し、他のセルおよび関連するセル内のオブジェクトに通信するように構成される。さらに、セルの各々は、このセルのデータオブジェクトへの変更による影響を他の各セルが受けないように定義される。
【０００５】
別の態様によれば、リビジョンのリビジョンマニフェストは、第１のコンピュータ装置のコンピュータ読み取り可能媒体上に格納される。リビジョンマニフェストは、ある時点でのセルのステート（ｓｔａｔｅ）を表すリビジョンを定義する。リビジョンマニフェストは、複数のオブジェクトグループ（ｏｂｊｅｃｔ  ｇｒｏｕｐ）であって、各オブジェクトグループは少なくとも１つのデータオブジェクトを含む複数のオブジェクトグループと、少なくとも１つのデータオブジェクトを含む整合性ユニットであって、各整合性ユニットは整合性ユニットの１つを編集することが他の整合性ユニットに影響しないように定義されている整合性ユニットとを含む。
【０００６】
さらに別の態様によれば、第１のコンピュータ装置上のドキュメントを同期化する方法であって、ドキュメントがセルに分割され、各セルは少なくとも１つのリビジョンマニフェストによって定義され、上記方法は、ドキュメントに関連する第１のリビジョンおよび少なくとも１つのセルを受信するステップと、第１のコンピュータ装置の更新を受信するステップであって、上記更新は上記ドキュメントに関連する各セルに関連する更新されるリビジョン識別子を示すステップと、セルの第１のリビジョン識別子がセルの更新されるリビジョン識別子と一致する場合に、各セルの第１のリビジョンを保持するステップと、各セルの新規のリビジョンを生成するステップであって、上記新規のリビジョンの生成は、セルの第１のリビジョン識別子が、セルの更新されるリビジョン識別子と一致しない場合に、新規のリビジョンに新規のリビジョン識別子を割り当てることを含むステップと、ルートオブジェクトによって参照されないあらゆるセルを削除するステップと、セルを各セルの新規のリビジョンで置換することにより、ドキュメントを同期化するステップとを含む。セル識別子は、グローバル一意識別子（ＧＵＩＤ：ｇｌｏｂａｌ  ｕｎｉｑｕｅ  ｉｄｅｎｔｉｆｉｅｒ）および整数（ＩＮＴ：ｉｎｔｅｇｅｒ）ペアを含み、ＧＵＩＤはセルおよびリビジョンのセットを定義してルートオブジェクトを含む範囲内でグローバルに一意であり、範囲内のセルはルートオブジェクトを介してアクセス可能である。セル識別子は、少なくとも１つの第１のリビジョン識別子を有する第１のリビジョンに関連する。少なくとも１つのリビジョン識別子の各々は、ある時点でのセルのステートを表す。セルは、セルおよびリビジョンのセットを定義する範囲を含み、範囲は少なくとも１つのルートオブジェクトを含む。範囲内のセルは、ルートオブジェクトを介してアクセス可能である。
【０００７】
この概要は、以下の詳細な説明においてさらに説明される概念の抜粋をを単純化した形式で導くように提供される。この概要は、請求項の内容の重要な特徴または本質的な特徴を特定するようには意図されていない。また、この概要も、請求された本発明の範囲を限定するために用いられるようには意図されていない。
【図面の簡単な説明】
【０００８】
非限定的および非網羅的な実施形態は、添付の図面を参照して説明されており、別段の定めがない限り、様々な図の全体にわたって同様の参照符号は同様の構成部分を示す。
【図１】オーサリング（ａｕｔｈｏｒｉｎｇ）システムの例を図示する概略ブロック図である。
【図２】第１のコンピュータ装置上に格納されたドキュメントが整合性のコンテンツユニットを含むことができる図１のオーサリングシステムを図示する概略ブロック図である。
【図３】整合性ユニットを示す概略ブロック図である。
【図４】範囲の概略ブロック図である。
【図５】オーサリング環境を実現するように構成されたクライアントコンピューティングシステムの例を示す概略ブロック図である。
【図６】オーサリングアプリケーションによって実行された同期処理の例を図示するフローチャートである。
【発明を実施するための形態】
【０００９】
以下の詳細な説明において、明細書の一部を形成する添付の図面を参照し、それにおいて特定の実施形態または実施例を実例として示す。本開示はコンピュータシステムにおけるオペレーティングシステム上で作動するアプリケーションプログラムと共に実行するプログラムモジュールの一般的なコンテキストで説明されるが、当業者は本開示を他のプログラムモジュールと組み合わせて実行することもできることを認識するであろう。本開示における原理または範囲から逸脱しない限り、本明細書に説明される実施形態は、結合されてもよいし、他の実施形態が利用されてもよい。したがって、以下の詳細な説明は、限定的な意味で解釈されるべきではなく、本開示の範囲は添付の請求項およびそれらの等価物によって特定される。
【００１０】
本開示における実施形態は、最小限のサーバおよび伝送資源を消費する一方で単一のクライアントがドキュメントをオーサリングでき、または複数のクライアントが共同的にドキュメントをオーサリングできる環境を提供する。実施形態の例において、共同オーサリング（ｃｏａｕｔｈｏｒｉｎｇ）対応のアプリケーションがドキュメントを編集している時、アプリケーションはドキュメントのピース（ｐｉｅｃｅ）のみを取得する。クライアントがドキュメントピース（ｄｏｃｕｍｅｎｔ  ｐｉｅｃｅ）を受信する前に、アプリケーションのデータモデルは、整合性の明示的なユニットへ分割された。
【００１１】
本明細書に説明される実施形態の例において、ドキュメントは整合性ユニットと呼ばれる一連のパーツに分割される。デフォルトで、ドキュメントは、全体のドキュメントを包含する単一の整合性ユニットに分割することができる。ドキュメントの構成の特定の知識が既知の場合、ドキュメントは１つ以上の整合性ユニットへ分割することができる。例えば、プレゼンテーションにおいて、ＰＯＷＥＲＰＯＩＮＴ（登録商標）プレゼンテーショングラフィックスプログラムを用いて作成された、１つ以上のスライドから構成されるプレゼンテーションなどは、複数の整合性ユニットへ分割することができ、その中、各整合性ユニットが１つのスライドを含んでいる。例えば、１０スライドから成るプレゼンテーションは、１０個の整合性ユニットに分割することができる。
【００１２】
上述の例において、多かれ少なかれ１０個の整合性ユニットが可能である。例えば、各スライドは、フッタ（ｆｏｏｔｅｒ）を含んでもよく、各フッタは整合性ユニットになりえる。したがって、１０個のスライドから成るプレゼンテーションは、２０個の整合性ユニットを有してもよい。さらに、デフォルトで、全体のドキュメントは１つの整合性ユニットであってもよい。
【００１３】
差分（ｄｅｌｔａ）を実現することへの２つの主要な手法がある。第１に、差分は「ｄｉｆｆ」アルゴリズムによって明示的に計算することができる。例えば、用いられるアルゴリズムは、ＷＩＮＤＯＷＳ（登録商標）プラットフォームで見つけられるＲＤＣ（Ｒｅｍｏｔｅ  Ｄｉｆｆｅｒｅｎｔｉａｌ  Ｃｏｍｐｒｅｓｓｉｏｎ）ライブラリであってもよい。アルゴリズム的な手法は、データが不透明（ｏｐａｑｕｅ）であると見なすことができ、構造または構造上の知識は必要としないことができるという長所を有する。ドキュメントのフォーマットが修正され、未知であり、または変更することができないシナリオにとって理想的である。修正され、未知であり、または変更することができないファイルフォーマットの非限定的な例は、テキストファイル、ビットマップ画像およびオーディオファイルを含む。
【００１４】
但し、この柔軟性に対するトレードオフは、アルゴリズムによって十分に追跡することができない変更によってもたらされた高い計算コストおよび伝送の非効率である。データが効率的な同期のために設計されていない場合、これが発生するかもしれない。すなわち、データには「明示的な」差分、または適当な変更局所性（ｌｏｃａｌｉｔｙ）がない。
【００１５】
第２に、差分は、期待される変更と比較的密接に配列することができる「顆粒（ｇｒａｎｕｌｅ）」と呼ぶより小さな変更ユニットに細分化することができる。差分はその後２つのステートの間で異なることができる顆粒のセットである。このスキームは、期待される更新と密接に整列される小さな変更単位にデータを効率的に細分することができる場合、それほど計算上高価でなく、より効率的になるポテンシャルがある。
【００１６】
２つの手法は、独立してまたは組み合わせて用いることができる。例えば、両方の手法が併用して用いられる場合、ドキュメントアクセスモデルは、整合性ユニット内の任意のレベルの粒度を提供することができる。明示的な差分スキーム（ｄｅｌｔａ  ｓｈｅｍｅ）を介して、同期エンジンは、効率を向上させるために粒度の任意のレベルを活用することができる。
【００１７】
ここで図に移って、図１は、本開示の例の態様を示す特徴があるオーサリングシステム１００の例を図示する。編集システム１００は、ドキュメント１５０の原本を格納する記憶装置１２０を含む。１つの実施形態において、記憶装置１２０は、サーバ、クライアントコンピュータまたは他のコンピュータ装置を含むことができるが、それに限定されない。別の実施形態において、記憶装置１２０は１つ以上の記憶デバイス（例えばコンピュータ装置のネットワーク）を含むことができる。
【００１８】
オーサリングシステム１００は、さらに、記憶装置１２０に通信接続された１つ以上のクライアントコンピュータ装置１１０Ａ、１１０Ｂ、１１０Ｃ、１１０Ｄを含む。クライアントコンピュータ装置の各々は、１つ以上の整合性ユニット１５５への更新の受信し、整合性ユニット１５５内のデータオブジェクトを編集することにより、ドキュメント１５０を編集することができる。クライアントコンピュータ装置が他のクライアントコンピュータ装置と共有される更新を記憶装置１２０に対して定期的に送信する場合、整合性ユニット１５５が同期化される。
【００１９】
本明細書で用いられる用語として、クライアントコンピュータ装置は、ドキュメントの原本からオーサリングされるべき整合性ユニットを取得するいかなるコンピュータ装置を含む。クライアントコンピュータ装置は、記憶装置１２０とは異なることができる、または記憶装置１２０上で実行される異なるクライアントアカウントを含むことができる。１つの実施形態において、１部のドキュメントのための記憶装置１２０として作用するコンピュータ装置は、異なるドキュメントのための、および逆もまた同様に、クライアントコンピュータ装置として作用してもよい。
【００２０】
表示された例において、４つのクライアントコンピュータ装置１１０Ａ、１１０Ｂ、１１０Ｃおよび１１０Ｄが、記憶装置１２０に通信接続している。但し、他の実施形態において、任意数のコンピュータ装置が記憶装置１２０に接続しているかもしれない。表示された例において、各クライアントコンピュータ装置１１０Ａ、１１０Ｂ、１１０Ｃおよび１１０Ｄは、クライアントコンピュータ装置のクライアントによって生成された更新を記憶装置１２０に送信することができ、編集／オーサリングをするために他の整合性ユニットを記憶装置１２０から要求することができる。１つの実施形態において、記憶装置１２０は、サーバコンピュータ装置になりえるし、クライアントコンピュータ装置１１０Ａ、１１０Ｂ、１１０Ｃおよび１１０Ｄは、クライアントコンピュータ装置になりえる。他のシステム構成も可能である。例えば、代替の実施形態において、複数サーバコンピュータ装置を用いることができる。
【００２１】
図２において示されるように、記憶装置１２０上に格納されたドキュメント１５０は、整合性ユニット１５５Ａ、１５５Ｂへ分割されたコンテンツ１５２Ａおよび１５２Ｂを含むことができる。クライアントコンピュータ装置１１０上のオーサリングアプリケーション１３０は、ドキュメント１５０の整合性ユニット１５５Ａおよび１５５Ｂのコンテンツを処理し扱う。一般に、クライアントコンピュータ装置１１０Ａは、コンテンツ１５２Ａへの更新をクライアントコンピュータ装置１１０Ｂによって提供される更新とは別々に同期化することができる。更新が異なる整合性ユニットに対してなされているので、整合性ユニット間に結合競合はないであろう。
【００２２】
図３を参照して、整合性ユニット１５５Ａ（すなわちデータ構造）は、整合性ユニット１５５Ａ  ３０５、３１０および３１５の複数のリビジョンを含んで示される。セルは同様のプロパティを有するデータオブジェクトのグループである。例えば、セルは、テキストのグルーピング、画像のグルーピングなどを包含してもよい。セル３０５、３１０および３１５の各々は、ドキュメント１５０内の特定のセルを区別するセル識別子３２０（セル３０５のみについて表示されている）を含む。セル３０５、３１０および３１５の各々は、セル識別子を用いて、ドキュメント１５０内の少なくとも１つの他のセルと通信することができる。さらに、セル３０５、３１０および３１５の各々は、少なくとも１つのリビジョン３２５（セル３０５のみについて表示されている）に関連する。データオブジェクトのグループのステートを包含するリビジョンによってセルのステートが記述されることに留意されたい。
【００２３】
各セルは、グローバル一意識別子（ＧＵＩＤ）および整数（ＩＮＴ）のペアを含むセル識別子を含むことができる。各セルは、さらにセルおよびリビジョンのセットを定義するファイル内に含まれてよい。範囲はさらに少なくとも１つのルートオブジェクトを含むことができる。範囲内のセルは、ルートオブジェクトを介してアクセス可能になりえる。セル識別子は、少なくとも１つの第１のリビジョン識別子を含む第１のリビジョンに関連することができる。少なくとも１つのリビジョン識別子の各々は、ある時点でのセルのステートを表すことができる。用語ファイルは、指定された記憶装置「エンティティ」を表すために用いられており、テキストファイルまたはｊｐｅｇ画像などの物理ファイルであったりする必要がないことに留意されたい。
【００２４】
整合性ユニット１５５Ａは、ドキュメント１５０のコンテンツを定義する複数のデータオブジェクト３３０、３３５、３４０および３４５を含む。一般に、データオブジェクトは任意のバイナリデータになりえる。データオブジェクトの非排他的な例は、テキスト、画像、表、ハイパーリンク、映画ファイル、オーディオファイルなどを含む。各データオブジェクト３３０、３３５、３４０および３４５は、セル３０５、３１０および３１５の１つに関連して、関連するセル内にデータオブジェクトを区別するオブジェクト識別子を有する。例えば、オブジェクト識別子３５０は、セル３０５内のデータオブジェクト３３０を区別する。セル識別子、オブジェクト識別子およびリビジョン識別子は、ＧＵＩＤとＩＮＴのペアを含むことができる。さらに、ＧＵＩＤは、セル内でグローバルに一意になりえる。
【００２５】
各データオブジェクト３３０、３３５、３４０および３４５は、他のセルおよび関連するセル内のオブジェクトと通信するように構成される。例えば、データオブジェクト３３０は、対照セル３１０および３１５と通信することができ、セル３１０および３１５内に包含されるオブジェクトではない。これは、１つのセルがもう一つのセルとは別々に変更されても、整合性を保証することを支援する。一般に、オブジェクトは、同一のセルおよび他のセル内の他のオブジェクトも参照することができるが、他のセルのオブジェクトではない。さらに、セル３０５、３１０および３１５の各々は、セルのデータオブジェクトへの変更による影響を他の各セルが受けないように定義される。さらに、各セル３０５、３１０および３１５は、範囲内の少なくとも１つのセルを参照できてもよい。範囲はセルおよびリビジョンのセットを定義することができる。範囲の概略図については、図４を参照されたい。
【００２６】
分割の間、データオブジェクト３３０、３３５、３４０および３４５の各々は、少なくとも１つのオブジェクトグループへグループ化することができる。オブジェクトグループの利用は、対象を追跡するオーバヘッドを個々に最小化する。すべてのオブジェクトが比較的大型のシナリオにおいては、オーバヘッドが小さいので、オブジェクトグループは不必要だろう。但し、オブジェクトが任意に小さくなりうるシナリオにおいては、オブジェクトグループはオーバヘッドを制御するために用いられる。オブジェクトグループはさらにオブジェクト（すなわち変更ユニット）を得て、より大型のユニットへそれらをひとまとめにすることを可能にする。割り当ての間、グループが作られるにもかかわらず、「変更のユニット」の特性を維持しようとする必要がある。
【００２７】
記憶装置１２０は、データオブジェクトが各クライアントコンピュータ１１０によって更新される見込み（すなわち用法ベースのヒューリスティック）などの、様々な要因に基づいてオブジェクトグループへデータオブジェクト３３０、３３５、３４０および３４５をソートすることができる。例えば、オブジェクトは多くのカテゴリに分類することができる。カテゴリの非限定的な例は、次のものを含む。ｉ）頻繁に変更すると知られているオブジェクトタイプ（例えばワードカウントおよび最終更新時間などのドキュメントメタデータプロパティ）、ｉｉ）非常に頻繁に変更すると知られているオブジェクトタイプ（例えば画像）、ｉｉｉ）周波数の変更が未知であるオブジェクト、およびｉｖ）頻繁に変更しているオブジェクト（例えばユーザがよく修正しているリストのリスト構造）。
【００２８】
さらに、記憶装置１２０は、各データオブジェクトのサイズに基づいてオブジェクトグループへデータオブジェクト３３０、３３５、３４０および３４５をソートすることができる。例えば、サイズは、ソートアルゴリズムのための入力になりえる。オブジェクトが大型であると見なされる場合、単一のオブジェクトが些少になるように、オブジェクトを追跡するオーバヘッドがある。有益性が見なされる場合（すなわち、これは、オブジェクトを不必要に取り込むことまたは同期化することを防ぐのに役立つ）、これは特にあてはまる。オブジェクトが、オブジェクトグループのオーバヘッドに関して非常に小さい場合、オブジェクトは、オブジェクトの変更の頻度に関係なくグループ化されてもよい。
【００２９】
上述したように、各セル３０５、３１０および３１５は、範囲内の少なくとも１つのセルを参照することができてもよいし、範囲はセルおよびリビジョンのセットを定義することができる。図４は、範囲４００の概略ブロック図を表示している。範囲４００は、ルートセル４０５、セル４１０およびガーベジセル４１５を含む。例えば、ルートセル４０５は、リビジョン４２０、４２５および４３０を含む。リビジョンの一例は、最終変更の前のファイルのステートである、整合性ユニット１５５Ａの最終に自動セーブされた実例を含んでもよい。例えば、テキストが追加された前に、リビジョンは、テキストフィールドのステートを含んでもよい（リビジョン１）。テキストがテキストフィールドに対して追加される場合、新規のリビジョンを作成することができる（リビジョン２）。したがって、「元に戻す」動作は、リビジョン２からリビジョン１に戻すであろう。さらに、各セルは、異なる数のリビジョンを含んでもよい。例えば、セル４０５は、２つのリビジョン（リビジョン４３５および４４０）を含み、ガーベジセルは１つのリビジョン（リビジョン４４５）を含む。
【００３０】
セルのリビジョンは、複製（または更新）ユニットが全体のドキュメントより著しく小さいことを可能にする整合性ユニットへドキュメントを分割することにより達成される。セルのリビジョンを用いることは、変更をより迅速に見ることを可能にする。部分的な同期（すなわち整合性ユニットを同期化すること対全体のドキュメント）の場合には、分割により他で見られない更新が見られる。効率的な分割により、さらにマージアプリケーションをより少なく実行することが可能になる。例えば、定義により、変更が同一の整合性ユニットにおいて発生する場合のみ、衝突が発生することができ、異なる整合性ユニットの他の変更は衝突を生じさせることができず、また、同期アプリケーションはマージを必要とせずに作動することができる。さらに、整合性ユニットは、増分のロード／セーブ動作のための実効ベースを形成することができる。アプリケーションに十分に統合された時、ロードと同期のシナリオはより応答性が高く、新規の共有／共同作業の特性を作成することができる。
【００３１】
整合性ユニット内の整合性を維持するために、すべての更新が整合であることを保証する必要がある。これは潜在的にトランザクションである整合的更新を形成するために相互に一括される不整合的更新を要する。サブファイルアクセスアプリケーションプログラムインタフェース（ＡＰＩ：ａｐｐｌｉｃａｔｉｏｎ  ｐｒｏｇｒａｍｍｉｎｇ  ｉｎｔｅｒｆａｃｅ）は、トランザクションを介して、抑制されない範囲レベルのバイトのアクセスなしで、更新を実行することができる。
【００３２】
効率的な同期およびサブファイルの複製のために、バージョニングは整合性ユニットレベル（すなわちパーティション）で用いられ実行されてもよい。その最も単純な形式では、これはそのパーティションの更新がされる場合は常に、変更する各パーティションに対してＧＵＩＤを割り当てることしか含むものはない。
【００３３】
更新は、整合性ユニットレベルのトラフの新バージョンを介してトランジションの形式においてなされる。同期は、クライアントとサーバとの間で新バージョン（すなわちステート）を転送することを含むことができる。但し、更新は通常小さく、クライアントとサーバとの両方が既に持つかもしれないいくつかの前ステートに基づく。これは、同期をより効率的にするために、相違あるいは差分を転送することにより活用することができる。
【００３４】
各リビジョンは、任意数のデータオブジェクトを含むことができる。例えば、リビジョン４２５には３つのデータオブジェクト（データオブジェクト４５０、４５５および４６０）がある。セルの各リビジョンのために、リビジョンマニフェスト４７０を作成することができる。リビジョンマニフェスト４７０は、リビジョンに包含されるオブジェクト、他のリビジョンマニフェストへの任意の依存関係／参照、およびオブジェクトグループ（すなわち、オブジェクトがどのようオブジェクトグループに配置されるか）のためのルートセットを示すことができる。各リビジョンマニフェスト４７０は、以前のリビジョンマニフェストにおいて定義された他のオブジェクトグループを指し示すことができる。
【００３５】
リビジョンマニフェスト４７０は、ある時点でのドキュメント１５０のステートを表すリビジョンを定義することができる。リビジョンマニフェスト４７０は、少なくとも１つのオブジェクトグループを含み、各オブジェクトグループは、少なくとも１つのデータオブジェクトを含む。リビジョンマニフェスト４７０は、さらに単一のリビジョンを記述し、単一のセル（それは整合性ユニットである）内のオブジェクトのステートを記述するために、定義によってのみ用いることができる。
【００３６】
第２のコンピュータ装置（例えば記憶装置１２０）は、どのデータオブジェクトがどのオブジェクトグループへ配置されるかを部分的にまたは十分に判断することができる。第２のコンピュータ装置は、さらに各オブジェクトの更新頻度に基づいて、各オブジェクトグループを定義することができる。さらに、第２のコンピュータ装置は、オブジェクトのサイズに基づいて、各オブジェクトグループを定義することができる。さらに、第１のコンピュータ装置（例えばクライアントコンピュータ１１０）は、どのデータオブジェクトがどのオブジェクトグループへ配置されるかに影響を及ぼすことができる。
【００３７】
ここで図５を参照すると、クライアント装置１１０Ａが、より詳細に表示されている。クライアント装置１１０Ａは、パーソナルコンピュータ、サーバコンピュータ、ノート型コンピュータ、ＰＤＡ、スマートフォンまたは他の同様なコンピュータ装置になりえる。
【００３８】
図５において、クライアントコンピュータ装置１１０Ａの例は、システムメモリ５２０に格納されたアプリケーションとプログラムとを実行するために典型的には少なくとも１つの処理装置５１５を含む。コンピュータ装置１１０Ａ自体の構成およびタイプに依存して、システムメモリ５２０は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ、ＣＤ−ＲＯＭ、ＤＶＤ（ｄｉｇｉｔａｌ  ｖｅｒｓａｔｉｌｅ  ｄｉｓｃ；デジタル多用途ディスク）または他の光記憶装置デバイス、磁気カセット、磁気テープ、磁気ディスク記憶装置または他の磁気記憶装置、または他のメモリ技術を含くことができるが、それに限定されない。
【００３９】
システムメモリ５２０は、典型的にはコンピュータ装置１１０Ａの動作を制御するのに適している、本願特許出願人からのＷＩＮＤＯＷＳ（登録商標）オペレーティングシステムなどのオペレーティングシステム５２２を格納する。システムメモリ５２０は、ドキュメントの整合性ユニット５２７を格納することができるドキュメントキャッシュ５２６をさらに含んでもよい。さらにドキュメントのメタデータ５２９は、クライアントキャッシュ５２６内に格納することができる。
【００４０】
システムメモリ５２０は、さらにドキュメントを作成し編集するために用いられる、オーサリングアプリケーション１３０などの、１つ以上のソフトウェアアプリケーションを格納してもよい。本開示の原理に従ってドキュメントをオーサリングするのに適しているオーサリングアプリケーション１３０の非限定的な１つの例は、本願特許出願人からのＷＯＲＤ（登録商標）ワープロソフトである。オーサリングアプリケーションの他の非限定的な例は、すべて本願特許出願人からのＰＯＷＥＲＰＯＩＮＴ（登録商標）プレゼンテーションソフトウェア、ＶＩＳＩＯ（登録商標）描画および作図ソフトウェアおよびＩＮＴＥＲＮＥＴ  ＥＸＰＬＯＲＥＲ（登録商標）インターネットブラウザを含む。他のソフトウェアアプリケーションも用いることができる。
【００４１】
コンピュータ装置１１０Ａは、さらにデータの入力および操作のための、キーボード、マウス、ペン、音声入力デバイス、タッチ入力装置などの入力装置（複数可）５３０を有してもよい。表示画面、スピーカ、プリンタなどの出力装置（複数可）５３５も含まれてもよい。これらの出力装置５３５は、当業者によってよく知られており、詳細を本明細書で論じる必要はない。
【００４２】
コンピュータ装置１１０Ａは、装置１１０Ａとが分散コンピューティング環境（例えばイントラネットまたはインターネット）内のネットワークを介して、例えば図１の記憶装置１２０といった他のコンピュータ装置と通信することを可能にする通信接続５４０をさらに包含してもよい。限定ではなく具体例として、通信装置媒体５４０は、有線ネットワークまたはダイレクトな有線接続などの有線媒体、および音響、ＲＦ、赤外線および他の無線媒体などの無線媒体を含む。
【００４３】
図６は、変更が整合性ユニットに対して行なわれた後、ドキュメントを同期化する開示における実施形態に従う方法６００に含まれる一般ステージを説明するフローチャートである。方法６００は、図５に関して上述されているようなコンピュータ装置１１０Ａを用いて実行されてもよい。方法６００のステージを実現する方法は、よりいっそう詳細に以下で説明される。
【００４４】
方法６００はスターティングブロック６０５で開始し、リビジョンおよびリビジョンが適用する任意のセルをコンピュータ装置１１０Ａが受信してもよい場合には、ステージ６１０に移る。例えば、リビジョンのセットは、どのセルがそれらのステートをどのリビジョンに対してセットさせなければならないかに関して、対応する命令により受信することができる。言いかえれば、同期化するときは以下ものを受信する：ｉ）｛リビジョン｝−リビジョンのセット、およびｉｉ）｛（セル、リビジョン）｝−セルｉｄのリビジョンｉｄタプル（ｔｕｐｌｅ）のセット、これは「修正される」セルおよび受信されるリビジョンに関するそれらの新規のステートを記述する。「修正される」とは、リビジョン内のある情報が変更されたことを意味する。例えば、コンピュータ装置１１０Ａを用いるクライアント（例えばクライアントコンピュータ）は、プレゼンテーションからスライドを受信するか、またはワープロドキュメントからヘッダ／フッタ情報を受信してもよい。一旦、変更が適用されると、格納は、ルートセルでスタートしオブジェクト／セルの参照をトラバース（ｔｒａｎｖｅｒｓｅ）することにより「発見」されることがありえない、あらゆるセルおよび／またはリビジョンを省略することができる。「発見する」には、クライアントにデータにアクセスする方法がないので、クライアントによってもはや用いられない無関係のデータを取り除くように格納を行うことができる最適化を言及する。例えば、一旦、変更が適用されると、格納は、ルートセルからもはや直接または間接的に参照されないリビジョンおよび／または任意のセルを省略することができる。
【００４５】
コンピュータ装置１１０Ａが、リビジョンおよびリビジョンが適用する任意のセルを受信するステージ６１０から、方法６００は、コンピュータ装置１１０Ａが整合性ユニット５２７への更新を受信することができるステージ６２０へ進めることができる。更新は、更新されるリビジョン識別子が整合性ユニット５２７またはドキュメント１５０に関連する各セルに関連することを示すことができる。例えば、コンピュータ装置１１０Ａは、ＰＯＷＥＲＰＯＩＮＴ（登録商標）プレゼンテーショングラフィックスプログラムを実行していてもよいし、整合性ユニット５２７はスライドであるかもしれない。ユーザがスライドを編集するように、スライドの更新が受信されてもよい。
【００４６】
一旦コンピュータ装置１１０Ａがステージ６２０で整合性ユニット５２７への更新を受信すると、方法６００は、第１のリビジョンが保持されるべきであるか、新規のリビジョンが生成されるかをコンピュータ装置１１０Ａが判断する、ステージ６８０に継続することができる。第１のリビジョンが保持されるべきであるとコンピュータ装置１１０Ａが判断する場合、方法６００は、コンピュータ装置１１０Ａが第１のリビジョンを保持することができるステージ６３０に継続する。セルの第１のリビジョン識別子がセルの更新されるリビジョン識別子と一致する場合、第１のリビジョンを保持することができる。第１のリビジョン識別子が、更新されるリビジョン識別子と一致することができる場合の一例は、リビジョンが作られて、その後、リビジョンが取り消される場合である。例えば、ユーザはスライド上に用語をタイプし、その後、新しくタイプされた用語を削除することができる。スライドは変更されていないので、新規のリビジョンを生成する必要はない。
【００４７】
新規のリビジョンが作成されるべきであるとコンピュータ装置１１０Ａが判断する場合、方法６００は、ステージ６８０から、コンピュータ装置１１０Ａが新規のリビジョンを生成するステージ６４０に継続する。新規のリビジョンの生成は、セルの第１のリビジョン識別子がセルの更新されるリビジョン識別子と一致しない場合に、新規のリビジョンに新規のリビジョン識別子を割り当てることを含むことができる。新規のリビジョンの生成は、さらにセル内の各オブジェクトのオブジェクト識別子が更新されるオブジェクト識別子と一致するか否かを、各セルに対して判断することを含むことができる。更新されるオブジェクト識別子は、リビジョンマニフェストを定義することができる。リビジョンマニフェストは、整合性ユニット５２７またはドキュメントのリビジョンを定義することができ、少なくとも第１のデータオブジェクトを包含する少なくとも第１のオブジェクトグループを含んでもよい。リビジョンマニフェストは、さらに以前のリビジョンマニフェストを指し示してもよい。例えば、ユーザ編集の間に、アプリケーションは、ユーザ編集の一部として修正されるオブジェクトのセットを追跡する。その後、新規のリビジョンＩＤは、標準ＧＵＩＤ発生アルゴリズムを用いて作られる。その後、オブジェクトのセットは、（上で説明されたように）オブジェクトグループへパッケージされ、その後、オブジェクトグループおよび以前のリビジョンのマニフェストは、新規のリビジョンを表す新規のリビジョンマニフェストから参照される。
【００４８】
一旦コンピュータ装置１１０Ａがステージ６４０の新規のリビジョンを生成すると、方法６００は、コンピュータ装置１１０Ａがルートオブジェクトにより参照されないあらゆるセルをガーベジコレクションする（ｇａｒｂａｇｅ  ｃｏｌｌｅｃｔ）ことができるステージ６５０に継続することができる。ガーベジコレクション（ｇａｒｂａｇｅ  ｃｏｌｌｅｃｔｉｏｎ）は、ルートセルでスタートするオブジェクト／セルの参照をトラバースすることにより「発見者」になりえないオブジェクトを判断することを含む。ガーベジコレクションされたセルにアクセスすることができないので、それらは必要とされないであろうし、それらの削除によりディスクスペース／リソースは解放されることができる。
【００４９】
一旦コンピュータ装置１１０Ａがステージ６５０のルートオブジェクトによって参照されないあらゆるセルを削除すると、方法６００は、コンピュータ装置１１０Ａがドキュメント１５０または整合性ユニット５２７を同期化することができるステージ６６０に継続することができる。例えば、コンピュータ装置１１０Ａは、既存のセルを新規のリビジョンの各セルで置換することにより、ドキュメントを同期化することができる。一旦コンピュータ装置１１０Ａがステージ６６０でドキュメント１５０または整合性ユニット５２７を同期すると、そして方法６００はステージ６７０で終了することができる。
【００５０】
「１つの実施形態」「実施形態」「（複数の）実施形態」「態様」または「（複数の）態様」は、この明細書を通じて、本明細書の説明の少なくとも１つの実施形態において特定の説明された機能、構成または特性を含むかもしれないという意味で言及されてもよい。したがって、同様な語句の用法は、まさに１つ以上の実施形態または態様に言及していてもよい。さらに、説明された機能、構成または特性は、１つ以上の実施形態または態様の任意の適切な方式で結合されてもよい。さらに、複数項目への参照が単一項目を意味してもよいのと同様に、単一項目への参照が単一項目または複数項目を意味してもよい。さらに、リストに組み入れられた時「そして」という用語の利用は、リストの構成要素、リストの単一項目またはリスト内のアイテムの任意の組み合わせをすべて想定したことを示唆するように意図している。
【００５１】
本明細書に説明の実施形態は、コンピュータプロセス（方法）、コンピューティングシステム、またはコンピュータプログラムプロダクトもしくはコンピュータ読取り可能媒体などのような製品として実行されてもよい。その処理（プログラム）は、本明細書に記載されている構成を含む任意数の方法で実行することができる。当該方法の１つは、本明細書に記載されている型の装置の機械操作によるものである。別のオプションの方法は、動作のいくつかを実行する１人以上の人間オペレータに関連してコンピュータ装置上で実行される方法の１つ以上の単独操作に対するものである。これらの人間オペレータを互いに連結させる必要はないが、各々は、プログラムの一部を実行する機械のみである場合もある。
【００５２】
コンピュータプログラムプロダクトは、コンピュータシステムにより判読可能で、コンピュータプロセスを実行するための命令のコンピュータプログラムをエンコードするコンピュータ記憶装置媒体であってもよい。コンピュータプログラムプロダクトは、さらにコンピューティングシステムにより判読可能で、コンピュータプロセスを実行するための命令のコンピュータプログラムをエンコードするキャリア上の伝播された信号であってもよい。本明細書で使用される用語「コンピュータ読取り可能媒体」は、記憶媒体と通信媒体の両方を含む。
【００５３】
当業者は、携帯端末、マルチプロセッサシステム、マイクロプロセサベースのまたはプログラミング可能な家電、ミニコンピュータ、メインフレームコンピュータなどを含む他のコンピュータシステム構成により明細書の説明が実施されてもよいことを十分に理解するであろう。その明細書の説明も、通信網を介してリンクされる遠隔処理装置によってタスクが実行される分散コンピューティング環境で実施することができる。分散コンピューティング環境において、プログラムモジュールは、ローカルと遠隔の記憶デバイスの両方に配置してもよい。一般に、プログラムモジュールは、特別のタスクを実施しまたは特別の抽象データ型を実行する、ルーチン、プログラム、構成要素、データ構造、および他の型の構成を含む。
【図１】
0005376696.tif 000002
【図２】
0005376696.tif 000003
【図３】
0005376696.tif 000004
【図４】
0005376696.tif 000005
【図５】
0005376696.tif 000006
【図６】
0005376696.tif 000007