(57)【特許請求の範囲】
【請求項１】
１つまたは複数のネットワークを介して接続可能な複数のノードのうち第１のノードと第２のノードの間で一組のオブジェクトをプロセッサにより同期する方法であって、
前記第１のノードと前記第２のノードの間で前記一組のオブジェクトの同期を開始するステップ、
前記第２のノードの前記一組のオブジェクトに関係する知識と前記第１のノードの前記一組のオブジェクトに関係する知識とを比較して、前記第１および第２のノードが各々保持する前記一組のオブジェクトのうち少なくとも１つのオブジェクト間にコンフリクトが存在することを決定するステップ、および
一組のコンフリクト解決ポリシーから前記第１または前記第２のノードにより構成可能な少なくとも１つのコンフリクト解決ポリシーを参照することにより、前記コンフリクトを解決するステップとを備え、
前記解決するステップは、前記複数のノードの中の最も多数の他のノードと接続されているノードが保持するオブジェクトを優先するコンフリクト解決ポリシーを参照して、前記コンフリクトを解決するステップを含むことを特徴とする方法。
【請求項２】
同期された前記オブジェクトは、前記第１のノードおよび前記第２のノード上で独立に発展されることを特徴とする請求項１に記載の方法。
【請求項３】
第３のノードを伴う、前記第１のノードまたは前記第２のノードにより同期を開始するステップ、
前記第３のノードの前記一組のオブジェクトに関係する知識を各々前記第１のノードまたは第２のノードの前記一組のオブジェクトに関係する知識と比較して、前記第３のノードおよび前記第１もしくは第２のノードにより各々保持される前記一組のオブジェクトのうち少なくとも１つのオブジェクト間に第２のコンフリクトが存在することを決定するステップ、および
前記一組のコンフリクト解決ポリシーから前記第３のノードおよび前記第１のノードもしくは第２のノードにより選択した少なくとも１つのコンフリクト解決ポリシーを参照することにより、前記第２のコンフリクトを解決するステップ、
をさらに備えることを特徴とする請求項１に記載の方法。
【請求項４】
１つまたは複数のネットワークを介して接続可能な複数のノードのうちの任意の第２のノードとの間で一組のオブジェクトを同期する第１のノードであって、
前記第１のノードおよび前記複数のノードのうち任意の第２のノードの間で前記一組のオブジェクトを同期し、前記第１および任意の第２のノードが各々保持する前記一組のオブジェクトのうち少なくとも１つのオブジェクト間に少なくとも１つのコンフリクトが存在するかどうかを検出する同期コンポーネント、および
複数のコンフリクト解決ポリシーから前記第１のノードにより選択される少なくとも１つのコンフリクト解決ポリシーを参照することにより、前記少なくとも１つのコンフリクトの解決を、実行する同期コンフリクト解決コンポーネント、
を備え、
前記同期コンフリクト解決コンポーネントは、前記複数のノードの中の最も多数の他のノードと接続されているノードが保持するオブジェクトを優先するコンフリクト解決ポリシーを参照して、前記コンフリクトを解決する手段を含むことを特徴とする第１のノード。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、分散装置間でのマルチマスタ・データ同期のコンフリクト解決に関する。
【背景技術】
【０００２】
データを互いに共有する装置およびオブジェクトを有する様々な分散データ・システムがある。例えば、音楽共有システムはＰＣ、携帯電話、ゲーム・コンソールおよびＭＰ３プレイヤの間で音楽を同期することができる。例えば、電子メール・データをワーク・サーバ、クライアントＰＣ、およびポータブル電子メール装置の間で同期することができる。今日では、変化が生じる度に共通な情報を維持するためにこのような装置が同期する範囲では、装置間の静的な設定に従って同期が行われる。しかし、これらの装置が疎結合され、互いとの通信を切断できる場合、例えば、携帯電話がトンネル内にある場合、または同期すべき装置の数が動的である場合は、装置が互いと再接続するときまたは装置がネットワークに参加するときに、他の各装置がどのような変更を必要としているかを、当該装置が決定するための方法をもたせることが望ましい。さらに、例えば、２つの異なる装置が同一データの夫々のコピーに別々に変更を加えるとき、どのようなデータを他の装置に伝播または複製すべきかに関してどのようなコンフリクトまたは曖昧性が存在しうるかを決定する必要がある。
【０００３】
今日では、図１に示すように、電子メール・サーバが専用電子メール・クライアントと同期するときのように、マスタ・ノード１００がクライアント・ノード１１０と専ら同期する様々な例がある。専ら２つの装置間で同期を行うので、２つの装置間の同期に必要な知識１０２の状態をマスタ・ノード１００により追跡することができる。このような知識１０２を任意にクライアント・ノード１００により同様に追跡することもできる。しかし、同期する装置の数が増え、マスタ・ノード１００とクライアント・ノード１１０との間の接続が時々切断されることがあると、これら装置の全てに渡って必要な知識を追跡することが困難な問題になるだけでなく、同期の観点からコンフリクトの数も同様に急増する。これは、装置の数が増え、それらを容易に切断できるようになると、様々な装置が、同期されている一組のデータを別々に発展させる機会が増えるためである。
【０００４】
現在の種々の解決策に対する問題は、それらが同期の意味の基礎を、任意のノードではなく特定のノード（例えば、電子メール・サーバ）に対するクロックまたは論理的な電子透かしに置いていることである。接続ノードまたはマスタが１つの場合は、これらのシステムは良く動作することができる。しかし、これらのシステムは、ノードが接続するトポロジまたはパターンが予測不可能に変化するときは問題となる。さらに、複雑な一組の装置がデータを疎結合ネットワークにおいて同期したい場合がある状況および環境が増えると、これらの装置がコンフリクトを扱う方法に対する柔軟性または制御の必要性がさらに高まる。
【０００５】
マルチマスタ同期のシナリオにおけるコンフリクトの急増に関して、トポロジ内のコンピュータが互いとの接続方法を変更できたり、またはコンピュータの数が増えると、様々な解決手段に従うノード独自の同期知識およびコンフリクト処理が益々必要となる。例えば、メディア・プレイヤでは、複数のコンピュータおよび複数のウェブサイトの間での同期が望ましいことがある。殆どの事例では、殆どのアプリケーションは少数の周知の端末（例えば、家庭用ＰＣおよびメディア・プレイヤ）の問でデータを同期できるに過ぎず、その場合、静的なコンフリクト解決手段、例えば、「コンフリクトでは家庭用ＰＣが常に勝る」が強制される。しかし、装置の集合体がメディア・プレイヤ・アプリケーションのユーザに対して時間とともに拡大すると、装置が利用する音楽ライブラリに対するデータ同期の柔軟性が益々必要となり、様々な順序で互いに同期するときに装置がコンフリクトを処理する柔軟性も益々必要となる。
【０００６】
従って、複数の疎結合された装置に渡って共通の情報を共有したい任意の分散データ・システムには、共通の情報に対して当該装置が認識する変化と、当該装置が認識しない変化とを表す効率的な方法が必要で、かかる変化が互いとコンフリクトするときにそのコンフリクトを解決する方法が必要である。この間題を概念的に説明するため、次回の映画の試写会を夫々見に行く４人の友達を想定する。残念ながら、映画スタジオは映画の配信制限を決定し、夫々の友達は当該映画の３０分の部分しか見られない。友達が一緒に帰宅して会議を開き、各人が見た部分の始めから終わりまでを説明し、映画のできるだけ大部分を繋ぎ合わせることを試みる。
【０００７】
しかし、偶然にも４人目の友達が会議に出席できない場合、最初の３人の友達のうち１人、例えば、２人目の友達が４人目の友達に話し、最初の３人の友達による映画の集団知識を４人目の友達による映画の知識に加えようと試みる。しかし、その時点では、２人目および４人目の友達のみが、４人の友達の間にある映画の知識の一式全てを理解している。次に、１人目の友達または３人目の友達が２人目または４人目の友達に出会うと、１人目または３人目の友達は同様に映画の集団知識を得る。４人の友達の各々が４人の友達による映画の集団知識を理解すると同期が漸く完了する。
【０００８】
しかし、コンフリクトが起きる場合を示すために、１人目の友達が、２人目または４人目の友達に出会う前に５人目の友達と話し、その５人目の友達が、２人目また４人目の友達が１人目の友達に後に話すものとは異なる映画の幾つかの欠落部分を説明したと仮定する。１人目の友達は、映画のどの説明を実際に起きたこととして捉えるべきか分からないであろう。１人目の友達はしばしばどれが最も良い説明かに関して何らかの経験的な推測を行うであろう。１人目の友達は、どの話を採用してどの話を破棄すべきかを考えるときに、関係の長さ、ある友達または別の友達との信頼の過程、または他の同様な要素を考慮するかもしれない。他の場合、１人目の友達は両方の説明を暫く覚えておいて、コンフリクトを解決する前に追加の情報を待つかもしれない。従って、同様に、装置が互いと同期し、疎結合システムでデータを同期する分散装置の間でコンフリクトが発生したときにコンフリクトを解決できるようにすることが望ましいであろう。
【０００９】
上の例では、映画は装置間で共有すべき共通情報に類似し、友達は疎結合装置に類似している。この点で、友達および／または装置が共に戻ってくるときに、接続した個人および／または装置の各々が何を知っていて何を知らないかを表し、かかる知識の間のコンフリクトを解決、即ち、「真の」知識を決定して共通情報を個人および／または装置の集団知識により可能な最大限まで繋ぎ合わせることができるようにするためのメカニズムが必要である。装置ノードからなる疎結合システムに従って、それらが有するデータ、データを受信した場所、会話に関与する別のノードから必要とするデータ、および装置間のコンフリクトを解決する方法を記述するための効率的な方法が必要である。
【００１０】
要するに、コンフリクトは双方向のマルチマスタ同期トポロジで生ずる不可避な問題である。ユーザまたはアプリケーションは異なる端末上で同一項目に自由に並列に変更を加え、その結果、同期解決策はどの変更（複数可）を正しく受け入れるべきかを判定することができない。論じたように、既存のコンフリクト解決ポリシーでは、「最後の書き込み者が勝る」といった幾つかの所定のポリシーの適用を通じて自動的なコンフリクトの解決を可能とする。しかし、異なる端末の種類が急増すると、単一の既定のポリシーでは、対応する数の発展する装置同期シナリオに対して疎結合装置間で特定した無数のコンフリクト解決ポリシーを扱うには不十分である。この点で、今日十分に対処されていない問題は、同期アプリケーションを、様々なコンフリクトポリシーを実装するのに十分なほど柔軟にしつつ、同時にそれらを、これらのコンフリクトを遅延式に、または自動的に記憶、適用、およびロール・バックするのに十分なほど堅牢にする平衡動作である。
【００１１】
現在の解決策には柔軟性および／または堅牢性に関する欠点がある。第１に、多数の解決策では、最後に書き込んだ者が勝るといった、一握りの一般的なコンフリクト解決ポリシーしか提供されない。この柔軟性の欠如は、様々な端末が一般的となってユーザが非従来型の種類のデータを同期する必要があるようになると、すぐに受け入れられないものとなるであろう。さらに、多数のアプリケーションはコンフリクト解決ポリシーを適用する能力をサポートしないか、コンフリクトに関連する変更を自動的またはＵＩ駆動式にロール・バックまたはロール・フォワードするための十分なコンフリクトメタデータを保持しない。
【００１２】
この点で、装置の組の集団知識を理解し、かかる知識のコンフリクトを決定し、接続された装置に対してこれらのコンフリクトを柔軟なポリシーに従って解決するためのメカニズムがないと、疎結合装置の間で同期を試みる際に混乱が生じる。疎結合装置間の現在の同期状態におけるこれらおよび他の欠点に関する追加の詳細は、後の本発明の様々な実施形態の説明から明らかになろう。
【発明の概要】
【課題を解決するための手段】
【００１３】
以上を考慮して、本発明では双方向のマルチマスタ同期トポロジに対するコンフリクト解決を提供する。一組の同期装置の中の装置が同期されている情報を独立に発展させる場合、各バージョンの間で同期コンフリクトが必ず発生する。本発明は、一組の装置が、同期の際に同期ノード間で知識を交換するときにコンフリクトを解決する方法を一組のコンフリクト解決ポリシーから選択するための効率的且つ柔軟な方法を提供する。例示的なコンフリクト解決ポリシーには、（Ａ）「最頻更新者」、（Ｂ）「優先度」、（Ｃ）「変化率」、（Ｄ）「デッドロック解決」、（Ｅ）「最高度」および（Ｆ）「最高中心近接度（Highest Centrality Closeness）」が含まれる。
【００１４】
コンフリクト解決を後まで遅らせるために、コンフリクトをコンフリクトログに記録することもできる。さらに、ユーザまたはアプリケーションは、同期状態をコンフリクトが発生したと思われる時点までロール・バックし、ユーザもしくはアプリケーションがコンフリクトをキャンセルし、および／またはユーザもしくはアプリケーションが代わりの組のコンフリクト解決ポリシーを適用できるようにすることができる。
【００１５】
本明細書では、より詳細な説明および添付の図面に従う例示的で非限定的な実施形態の様々な態様の基本的または一般的な理解を可能とすることの助けとなるために、簡単な要約を与える。しかし、本要約は広範囲または包括的な概要であるとは意図していない。そうではなく、本要約の唯一の目的は、本発明の幾つかの例示的で非限定的な実施形態に関する幾つかの概念を、後の本発明の様々な実施形態のより詳細な説明の前置きとして簡単な形で提示することである。
【００１６】
マルチマスタ環境において共通情報を共有する複数ノードに対するコンフリクトを検出し解決するためのシステムおよび方法を添付の図面を参照してさらに説明する。
【図面の簡単な説明】
【００１７】
【図１】システムにある２つの良く定義された端末間の同期およびコンフリクト解決を提供する専用の同期システムを示す図である。
【図２Ａ】本発明に従う、疎結合ノード・ネットワークのうち２つのノード間の例示的で非限定的な知識交換およびコンフリクト検出を示す図である。
【図２Ｂ】本発明に従う、同期コンフリクトの検出および解決を行うための例示的で非限定的な装置の実装のブロック図である。
【図３】本発明に従う、疎結合ノード・ネットワークのうち４つのノード間で同期されているオブジェクトの例示的で非限定的な知識交換および独立な発展を示す図である。
【図４Ａ】本発明に従う、例示的で非限定的な同期コンフリクトの生成、検出、および解決を示す一組の装置間の例示的な同期の列を示すブロック図である。
【図４Ｂ】本発明に従う、例示的で非限定的な同期コンフリクトの生成、検出、および解決を示す一組の装置間の例示的な同期の列を示すブロック図である。
【図４Ｃ】本発明に従う、例示的で非限定的な同期コンフリクトの生成、検出、および解決を示す一組の装置間の例示的な同期の列を示すブロック図である。
【図４Ｄ】本発明に従う、例示的で非限定的な同期コンフリクトの生成、検出、および解決を示す一組の装置間の例示的な同期の列を示すブロック図である。
【図５Ａ】本発明に従う、例示的で非限定的な同期コンフリクトの生成、検出、および解決を示す一組の装置間の別の同期列を示すブロック図である。
【図５Ｂ】本発明に従う、例示的で非限定的な同期コンフリクトの生成、検出、および解決を示す一組の装置間の別の同期列を示すブロック図である。
【図５Ｃ】本発明に従う、例示的で非限定的な同期コンフリクトの生成、検出、および解決を示す一組の装置間の別の同期列を示すブロック図である。
【図５Ｄ】本発明に従う、例示的で非限定的な同期コンフリクトの生成、検出、および解決を示す一組の装置間の別の同期列を示すブロック図である。
【図６Ａ】本発明に従う、装置により実装可能な様々な同期コンフリクト解決ポリシーを示す例示的で非限定的なブロック図である。
【図６Ｂ】本発明に従う、装置により実装可能な様々な同期コンフリクト解決ポリシーを示す例示的で非限定的なブロック図である。
【図６Ｃ】本発明に従う、装置により実装可能な様々な同期コンフリクト解決ポリシーを示す例示的で非限定的なブロック図である。
【図６Ｄ】本発明に従う、装置により実装可能な様々な同期コンフリクト解決ポリシーを示す例示的で非限定的なブロック図である。
【図６Ｅ】本発明に従う、装置により実装可能な様々な同期コンフリクト解決ポリシーを示す例示的で非限定的なブロック図である。
【図６Ｆ】本発明に従う、装置により実装可能な様々な同期コンフリクト解決ポリシーを示す例示的で非限定的なブロック図である。
【図７】本発明に従う、装置により実装可能なトラフィック・ベースの同期コンフリクト解決ポリシーを示す例示的で非限定的なブロック図である。
【図８】本発明の様々な実施形態に従う、一組の装置間の同期の初期化と、任意のコンフリクトの対応する検出および解決を示す例示的で非限定的なフロー図である。
【図９】本発明を実装可能な、例示的で非限定的なネットワーク環境を表すブロック図である。
【図１０】本発明を実装可能な、例示的で非限定的なコンピューティング・システムまたは動作環境を表すブロック図である。
【発明を実施するための形態】
【００１８】
（概要）
背景技術で論じたように、互いとの専用接続を切断することがある一組の疎結合装置に対して効率的に同期知識を表し、且つ柔軟な一組の状況に従ってコンフリクトを解決する方法はない。専用接続を再開できるとき、任意の変更を即座または定期的に、その変更を受け取るべき装置に送り出すことができ、コンフリクトを静的なポリシーに従って解決することができる。しかし、装置が現れたり消えたりして、専用接続を再開できない場合は、同期の観点からこれらの装置が何を知っていて何を知らないかを効率的に表し、装置間で生ずるコンフリクトを解決することが望ましい。
【００１９】
従って、本発明は、データ同期システム内の分散装置に対して効率的で柔軟なコンフリクト解決を可能とする。疎結合ネットワーク内の装置が他の同期装置（複数可）へアクセスするときは常に、装置が他の装置（複数可）と知識を交換して、装置によりどの変更を取り出し、他の装置（複数可）に渡すべきかを判定し、柔軟な一組のコンフリクト解決ポリシーに従ってどのコンフリクトを同期動作の一部として解決すべきかを判定することを保証するための効率的なメカニズムを提供する。
【００２０】
このように、第１の装置および第３の装置は決して直接通信することはできないが、夫々が第２の装置に接続して第２の装置に対してコンフリクトを解決できるならば、コンフリクトのない集団知識の共有を３つの装置全体に渡って実現することができ、直面したどのようなコンフリクトも解決するように、装置の各々が他の装置の各々からどの変更を受け取るべきかを決定することができる。音楽、電子メール、画像、ビデオのようなデータを共有する装置の急増を考えると、本発明の知識交換およびコンフリクト解決の技法を同時に任意数の装置、および任意数の独立な知識ベース（即ち、異なる組の共通情報）、即ち、任意の拡大する組の装置がデータを共有したい場所ならどこででも拡張できると都合が良い。かかる知識を表し、分散システム内のコンフリクトを解決する様々な実施形態を以下でより詳細に説明する。
【００２１】
（知識交換に対するコンフリクト解決）
以下で説明する様々な例示的で非限定的な実施形態では、知識をデータ同期システム内で効率的に表し、装置間の知識が同期の観点からコンフリクトする場合、本発明は様々な同期の状況に対して同期装置間でコンフリクトを解決する様々な方法を提供する。本発明で実現できる非限定的な利益には、接続された装置間での知識の効率的な交換が含まれ、その交換では第１のノードが必要とする最小量のデータのみが第２のノードから送信される。本発明は、第１のノードと第２のノードの間のデータの状態に関する認識不一致、即ち、コンフリクトを効率的且つ正確に認識する能力、任意数のノードを同期する能力、および任意のノードを他の任意のノードを介して同期する能力、即ち、ピア・ツー・ピアのマルチマスタ同期環境で動作する能力を含む。
【００２２】
図２Ａは、本発明に従う、高レベルで、２つの装置２００および２１０の間の知識交換および並列または逐次のコンフリクト検出および解決を示す。２つの装置２００および２１０の間で共有すべき何らかの情報に任意数の変更が加えられることがある。しかし、それらの装置が接続される任意の時点でそれらの知識２０２および２１２を交換することにより、それらの装置は、互いが何を知っていて何を知らないかを再構築して装置間の変更を容易にするために使用される少なくとも最小量の情報を認識するようになる。複数の装置が関与する場合、知識２０２および２１２はより大きな共有すべき情報基盤の不完全な知識である可能性があるが、複数の装置で共有される知識が増えると、それらの装置が他の装置と接続するので集団知識は装置により時間とともに増え続けることに留意されたい。同様にコンフリクトが解決され、コンフリクトの解決が伝播する。
【００２３】
知識交換中に、コンフリクト検出プロセス２０４および／または２１４を行って様々な装置に渡るデータの発展に関するコンフリクトを処理すると都合が良い。コンフリクトを検出すると、装置２００および２０４は、コンフリクトを一度に解決して、装置２００および２０４が同一のデータを、それが装置２００から来るか装置２０４から来るかに関わらず保持することを保証することができる。あるいは、後に解決するためにコンフリクトをコンフリクトログに記録してもよい。何れの方法でも、検出した任意のコンフリクトに対するコンフリクト解決を、以下でより詳細に説明する柔軟な一組のコンフリクトポリシーの任意の１つまたは複数を介して扱うことができる。
【００２４】
図２Ｂは、本発明に従う、知識交換ならびにコンフリクト検出および／またはコンフリクト解決を行うための装置２００ｂの例示的で非限定的な実装のブロック図である。示すように、装置２００ｂは、本発明に従って一組のオブジェクト２３０を別の装置と同期するための知識交換技法を行う同期モジュール（同期コンポーネント）２２０を含む。同期モジュール２２０は、一般に知識交換に従ってデータを送受信するための同期通信モジュールを含むことができる。
【００２５】
同期モジュール２２０は、例えば認証モジュール２４０を介して認証され第２の装置に接続されれば第２の装置との同期を開始できる同期開始モジュール２２２ａを含むことができる。同期モジュールは、一組のオブジェクト２３０に関する知識２０２ｂを第２の装置（図示せず）に送信することで同期の開始に応答し、第２の装置の知識２１２ｂと、第２の装置から来る一組のオブジェクト２３０に加えるべき変更を受け取るためのＩ／Ｏモジュール２２２ｂを含むこともできる。次いで、同期分析モジュール２２４（同期時刻制御コンポーネント）が、一組のオブジェクト２３０に加えるべき変更を適用し、第２の装置からの知識２１２ｂを第１の装置からの知識２０２ｂと比較して第２の装置に送信すべき変更を決定し装置間の同期を完了するように動作する。
【００２６】
示すように、同期モジュール２２０の同期分析モジュール２２４は、同期の状況に対して定義した様々なコンフリクト解決ポリシーの任意の１つまたは複数に従ってコンフリクトを扱うよう動作するコンフリクト検出および分析モジュール（同期コンフリクト解決コンポーネント）２２６を含むことができる。コンフリクト検出および分析モジュール２２６は、装置の管理者によって定義したか、または同期アプリケーションによって定義したコンフリクト設定２２８に従って、同期の状況に対して満足にコンフリクト解決を行うよう自動的に振る舞うことができる。
【００２７】
あるいは、モジュール２２６は、同期の時にコンフリクトを検出し、コンフリクトログ２５０内のコンフリクトに関連するメタデータを記憶するよう動作することができる。そうすると、コンフリクトを後の時点で、例えば、定期的もしくはバッチ式に、またはアプリケーションもしくはコンフリクトを解決する方法または時期に対するユーザ入力に従って解決することができる。例えば、非限定的な実施形態では、同期から生ずるコンフリクトを解決する方法をユーザが選択できるようにコンフリクトをユーザに提示するユーザ・インタフェース（ＵＩ、図示せず）をユーザに提示することができる。
【００２８】
本発明が、その全てが最新バージョンの一組のオブジェクトを保持することに関心がある一組の装置に対して同期を行うように動作するだけでなく、かかる装置がその組の他のオブジェクトに接続し、切断できるようにすると都合が良い。装置が１つまたは複数のネットワークを介してその一組の装置のうちの他の装置（複数可）と再び接続されるときは常に、装置は、他の装置（複数可）がその集団知識で表す最新の集団知識を再取得し、本明細書で説明した技法に従ってコンフリクトを自動的に解決または記録する。このように、疎結合装置でも一組の装置と接続し切断し、次いで失った全ての知識を再学習することができ、最新の一組の集団知識を所有する任意の一組の装置と接続することで、直面した任意のコンフリクトを解決または記録することができる。
【００２９】
図３は、本発明の知識交換およびコンフリクト解決が任意数の装置に対して一般化可能、または拡張可能であることを示す。示したように、４つの装置３００、３１０、３２０および３３０を、各装置が、当該各装置に渡って共有すべき一組の共通情報に関して何を知っていて何を知らないかを夫々示す知識表現３０２、３１２、３２２および３３２とともに示してある。ネットワーク内の接続が切断されても、他の装置に対して少なくとも１つの接続が直接的または間接的に存在する限り、完全な一組の知識が装置３００、３１０、３２０、および３３０の全てにより取得できると都合が良い。例えば、装置３３０と装置３００の間の接続および装置３３０と装置３１０の間の接続が切断されても、装置３３０の知識３３２は、装置３２０と知識を交換し、次に装置３２０および３１０と知識を交換し、最後に装置３１０および３００との間で知識を交換することにより、やはり装置３００に到達することができる。
【００３０】
同様に、本発明に従って、知識３３２および知識３０２の間にコンフリクトがある場合は、知識を装置３３０から装置３２０へ、装置３２０から装置３１０へ、装置３１０から装置３００へ同じく伝播することで、同期が完了するときにコンフリクトが装置の全ての間で解決される。例えば、装置３００、３１０、３２０および３３０が全てオブジェクトＫＮを同期していると仮定する。１つの装置のみがオブジェクトＫＮに変更を加える場合、その変更は同期動作の一部として残りの装置に伝播され、問題はない。しかし、装置は自律的に振る舞い、独立にデータを、それが同期されているデータであっても、発展させることができるので、装置３３０がオブジェクトＫＮを変更して更新されたオブジェクトＫＮ１を生成し、装置３１０がオブジェクトＫＮを変更してＫＮ１とは異なる更新されたオブジェクトＫＮ２を生成することがある。オブジェクトＫＮを装置３００、３１０、３２０および３３０の全ての間で同期するとき、どのバージョンのＫＮが装置の全てに伝播されるか、即ち、ＫＮ１かＫＮ２か？に関してコンフリクトが発生する。本発明は、かかる状況を扱うための柔軟な一組のコンフリクト解決ポリシーを提供する。
【００３１】
さらに多くの装置が共有すべき共通情報に関する知識を共有すると、本発明の知識交換はどこから装置の集団知識が来るかに囚われないので、装置の全てが利益を得る。３人の友達が映画の知識を交換し、その３人のうち何れかの１人が４人目の友達と会って全体像を纏める本発明の背景技術で説明したシナリオと殆ど同様に、本発明の装置は夫々独立に、装置間で共有すべき情報に関する出来るだけ多くの知識を、自身が接続した他の装置の何れかから得るように動作する。さらに、映画の知識を交換する友達と殆ど同様に、友達の１人が集団知識に関して不正確または矛盾した情報を有すると思われる場合は、その友達はかかる矛盾を全員が満足するように解決する。例えば、３人の友達はイベントが第１の方法で発生したと考え、１人の友達だけがそれと異なる方法で発生したと感じている場合は、３人の友達は、より大きな証拠の重みに反して、唯一の説明に係る発生した映画の方法は採用しない、という結果の可能性が高い。
【００３２】
次に、２人目の友達が最初に４人目の友達に会い、２人目と４人目の友達のみが結果として４人全員の集団知識を共有する背景技術で説明したシナリオと殆ど同様に、１人目と３人目の友達はそれにも関わらず、１人目の友達が次に２人目の友達と会うか４人目の友達と会うかは分からないけれども、１人目の友達は何れかから集団知識を学習するので利益を得る。同じことが３人目の友達にも当てはまる。同様に、共通情報を交換する本発明の接続された装置は、知識を交換している装置の各々が以前に接続した他の装置の全て毎に知識が集められるので、接続した他の任意の装置により蓄積された他の任意の知識から利益を得る。同様に、本発明の接続された装置は、コンフリクトが解決されたデータが残りの装置に伝播されるという点で、他の装置により既に行われた任意のコンフリクト解決から利益を得る。
【００３３】
例示的で非限定的な詳細において、２つのノードが会話に参加し、会話の終わりには関係するデータ集合に対して同等な知識を有する方法をさらに詳細に説明する。図２Ａ、２Ｂおよび３に関連して示したのと同様に、本発明は、ピア・ツー・ピア・ネットワークに入る夫々の新しい装置に対して知識交換およびコンフリクト解決の機能を生成することにより、２つを超えるノードに拡張可能である。
【００３４】
図４Ａから４Ｄは、疎結合装置が定期的に互いから切断されるため互いに同期する疎結合装置に対してコンフリクトを解決する必要があることをさらに示す。図４Ａに示すように、時刻Ｔ＝０に、夫々知識４０２、４１２、４２２および４３２を有する４つの装置４００、４１０、４２０および４３０があり、それらの装置の各々は同じバージョンのオブジェクトＫＮの知識を有する。しかし、装置４００および４１０の間の接続、装置４２０および４３０の間の接続の全ては切断されている、例えば、装置４３０がラップトップで装置４２０が携帯電話であり、その２つの所有者は潜伏して装置４００および４１０への接続に一時的に割り込む。
【００３５】
図４Ｂは、任意の時点、例えば、時刻Ｔ＝１＞０で装置４２０が知識４２２のオブジェクトＫＮをＫＮからＫＮ’に変更したことを示す。同様に、何らかの時点Ｔ＝２＞０に、装置４００も知識４０２のオブジェクトＫＮに変更を加え、当該オブジェクトをＫＮからＫＮ’’に変更することがある。その場合、装置４２０および４００は、再接続時にコンフリクト、即ち、ＫＮ’またはＫＮ’’のどちらのバージョンを伝播すべきか？を提示する。図４Ｃは、幾つかの制限された同期がコンフリクト解決前、例えば、時刻Ｔ＝３＞２＞１に行われることを示す。例えば、装置４３０は装置４２０に接続されるので、オブジェクトＫＮ’は同期を介して装置４３０の知識４３２に伝播される。同様に、装置４００が装置４１０に接続されるので、オブジェクトＫＮ’’は同期を介して装置４００の知識４０２に伝播される。
【００３６】
図４Ｄに示すように、時刻Ｔ＝４に、装置４００または４１０の何れかが再度装置４２０または４３０に接続されると、コンフリクトが自律的に提示される。同期中は、伝播すべき正確な知識が何か、即ち、ＫＮ’かＫＮ’’かは明らかではない。従って、コンフリクトを解決するためのコンフリクト解決メカニズムを与えなければならない。述べたように、一旦検出すると、コンフリクトを、同期の状況に対して採用したコンフリクト解決ポリシーに従って即座に解決することができ、またはコンフリクトを後の解決（例えば、バッチコンフリクト解決、手動解決、決定支援用の追加の情報を待機するための遅延解決、等）のために記録することができる。
【００３７】
図５Ａから５Ｄは、マルチマスタ同期シナリオの２つのノード間のより具体的な列を示すが、誤解を避けるため、本発明は、疎結合式で同期できる任意数の装置に適用される。図５に示すように、任意数のノードを有するピア・ツー・ピア・ネットワークのノード５００はノード５１０とのデータ交換を望む。示した例では、装置またはノードの例示的な知識を、各オブジェクトが装置間で共有されるように文字識別子でラベル付けすることにより表し、末尾の数字はこのオブジェクトの最新バージョンを表す。時刻ｔ＝１に、ノード５００およびノード５１０は夫々、同期された知識ＫN500およびＫN510を有する。これらの知識は、５番目のバージョンのＡと、４番目のバージョンのＢと、７番目のバージョンのＣと、１番目のバージョンのＤとを含むオブジェクトから成る。それらの知識を交換した後、ノード５００および５１０は同期され、コンフリクトがない状態にある。
【００３８】
しかし、ｔ＝２で、ノード５００および５１０は独立にオブジェクトＡを発展させる。表現を簡単にするため、ノード５００は６番目のバージョンのＡを生成し、ノード５１０は７番目のバージョンのＡを生成する（またはその逆）。時刻ｔ＝３で、後続の同期処理の結果として、６番目または７番目のバージョンのどちらをノード５００とノード５１０の間の共通オブジェクトとして保持すべきかどうかが不明である。従って、コンフリクト解決メカニズムが望まれる。
【００３９】
さらに、任意の知識交換に対して、ノード５００の知識ＫN500をノード５１０に転送すること、およびノード５１０の知識ＫN510をノード５００に転送することもある。しかし、コンフリクト検出のため、図５Ｄに示すように、知識を１方向に１度だけ転送した後に検出することができる。従って、本発明の１実施形態では、コンフリクトの検出および解決を開始する前に知識交換全体を完了する必要はない。図５Ｄに示すように、ノード５００が知識ＫN500をノード５１０に送る場合、ノード５１０は、ノード５００を起点とするオブジェクトＡ５とノード５１０を起点とするオブジェクトＡ６の間にコンフリクトがあることを検出することができる。次にコンフリクトがノード５１０により解決されれば、ノード５１０がノード５００に、オブジェクトＡの正確なバージョンが何であるかを伝えることができるので、ノード５００が同じコンフリクト解決を行わずに済ませることができる。あるいは、各装置がコンフリクト解決を別々に行うことが望ましいかもしれない。その場合、ノード５００および５１０は両方とも独立なコンフリクト検出および解決を実行することができる。
【００４０】
（知識交換に対するコンフリクト解決）
分散マルチマスタ同期環境のノード間での知識交換と関連して実装できる例示的なコンフリクト解決ポリシーを、図６Ａから６Ｅのフロー図に示す。図６Ａから６Ｅの各々において、様々な同期の状況を反映した様々なポリシーを列挙している。様々な装置が疎結合され、様々な種類のデータがそれらの間で同期されているとき、コンフリクトを解決するためには所与の状況に対して様々な選択があることが当然であろうと思われるかもしれない。
【００４１】
例えば、図６Ａに示すように、装置６００および装置６１０が最初にオブジェクトＫＮを夫々知識６０２および６１２の一部として表す。次いで、漸進的なフローで示すように、装置６００上のオブジェクトＫＮのコピーに変更が加えられ、オブジェクトＫＮがＫＮ‘になり、再び変更を加えてＫＮ’’になり、さらにＫＮ’’’になる。並行して、装置６１０はオブジェクトＫＮからＫｎにする。従って、装置６００が６１０と再度同期するとき、装置６００上のバージョンＫＮ’’’と装置６１０上のバージョンＫｎの間にコンフリクトがある。本発明に従ってコンフリクトを解決するために実装できる１つのポリシーによると、最後の同期の時から最も頻繁に更新した者がそのコンフリクトに「勝る」として選択される。この場合、ノード６００はオブジェクトＫＮを３回更新して、バージョンＫＮ’’’とし、対照的に装置６１０は１回のみ変更を行ってＫｎとした。従って、前回の同期から最も更新されたものが所与の状況に対してコンフリクトを解決する場合、これは実装するに相応しいポリシーである。例えば、文書共同作業を同期を介して扱い、あるユーザが多数の変更を多種多様な時点で文書に加え、別の共同作業者がその文書に１回しか変更を加えていない場合、最も頻繁に更新した者が加えた変更にコンフリクトを解決させるのが当然であろう。
【００４２】
図６Ｂは、本発明に従ってコンフリクトを解決する別の方法を示す。３回の別々の変更の後に装置６００がオブジェクトＫＮをＫＮ’’’にし、装置６１０がデータをオブジェクトＫＮからＫｎにする図６Ａと同じ状況を考えると、「より高い優先度が勝る」というポリシーが適用される。この場合、装置６１０に優先度１が割り当てられ、装置６００に優先度２が割り当てられる。優先度１は優先度２より高いため、装置６１０が加えた変更がコンフリクトを解決する。例えば、これは、装置所有者の観点からデータ項目の尊厳が厳然たるものであり、当該装置所有者は第３者が装置所有者の変更に勝ることを望まない場合に有用であろう。当該装置所有者には最高優先度が割り当てられ、第３者にはより低い優先度が割り当てられよう。誤解を避けるため、一組の分散装置のうち異なる装置に異なる優先度を割り当てさせうる無数の他の状況を想定することができる。
【００４３】
図６Ｃは、本発明に従ってコンフリクトを解決する別の方法を示す。この場合、装置６００はオブジェクトＫＮをバージョンＫＦＺにし、装置６１０はオブジェクトＫＮをバージョンＫｎにする。本実施形態では、本発明は夫々のオブジェクトに行われた変化の量または割合を決定してコンフリクトを解決する。そうすると、最も大量な変更を優先するポリシーが適用される。例えば、ＫＮからＫＦＺへの変更は、ＫＮからＫｎへの変更よりも大量な変更である。従って、装置６００の変更がコンフリクトを解決する。かかるポリシーは、他のポリシーではコンフリクト解決を支配できない場合にコンフリクトを解決するのに有用であることがある。例えば、文書がある装置上で元の状態から９０％変化したが、別の装置では１％しか変化していない場合、コンフリクト解決においてエラーが発生した場合に回復するのがより困難になるので、より大量の変更を優先するのが当然であろう。ここでも、最高変化率に従って同期コンフリクト解決を指示する他の状況を適用することができる。
【００４４】
図６Ｄは、調停者６２０がＫＦＺとＫｎの間のコンフリクトを解決する、本発明のコンフリクト解決のさらに別の実施形態を示す。調停者６２０を、コンフリクトを解決するためのサード・パーティ・コンポーネントとして提供するか、または装置６００および／または装置６１０に組み込むことができる。調停者６２０は任意のポリシーおよびパラメータに従って決定することができ、現在の状況または同期状態に基づいて動的に決定することができる。調停者６２０は、柔軟性が望まれる同期の状況に対して有用であろう。
【００４５】
本発明に従って適用できるコンフリクト解決のさらに別のポリシーを図６Ｅに示す。この場合、知識６０２、６１２、６３２および６４２を有する４つの装置６００、６１０、６３０および６４０がある。このシナリオでは、コンフリクトは最も親和性の高い同期ノード、即ち、最も多くの他のノードと接続されているノードに従って解決される。かかるポリシーは、多数のノードと同期するノードと比較して、１つまたは少数の異なるノードとしか同期しない端末を避ける。例えば、図６Ｅに示すように、２つのノード６００および６１０は同期されているオブジェクトＫＮのコピーを独立に夫々ＫＦＺおよびＫｎにする。装置６１０は３つの装置６００、６３０および６４０と同期し、一方で装置６００は１つの他の装置６１０としか同期しないので、このポリシーに従うと、オブジェクトＫＮに関するコンフリクトは、装置６１０を優先して解決される。かかる最高親和性の手法を使用して端末に関する重要度を測定することができる。
【００４６】
本発明に従う、知識交換中のコンフリクトを解決するためのさらに別の例示的で非限定的な実施形態を、ネットワーク・ノードＮ１、Ｎ２、Ｎ３、Ｎ４、Ｎ５、Ｎ６、Ｎ７、Ｎ８、Ｎ９およびＮ１０の同期に関して図６Ｆに示す。本シナリオに従ってコンフリクトを解決するために、最高中心近接度の原理を適用する。この場合、端末の他の全ての端末に対する近接性の度合いを一組の装置に対する全ての同期関係に渡って測定する。最高中心近接度は、より大きな情報ネットワークを伴う端末を特定し、端末と他の全ての端末の間の最短経路の和の逆を取ることで計算することができる。全体として、装置が他の全ての端末に近ければ近いほど、コンフリクトを解決するときに装置に適用される重みまたは優先度は大きくなる。例えば、ノードＮ３およびノードＮ９がコンフリクト解決を必要とすると仮定する。この場合、Ｎ３は他の２つのノードＮ２およびＮ４にのみ直接接続され、一方でＮ９は３つのノードＮ４、Ｎ５およびＮ１０に接続される。図６Ｅに関連して説明した最高親和度の原理の下では、ノードＮ９がコンフリクトの勝者として選択されたであろう。しかし、最高中心近接度を適用すると結果は異なる。なぜならば、計算を行わなくとも、ノードＮ３がＮ９より他の全てのノードに近いことが分かるからである。この例示的で非限定的な測定を以下のように行う。
【００４７】
ノードＮ３に関して、ノードＮ１への距離は２ノードであり、ノードＮ２への距離は１ノードであり、ノードＮ４への距離は１ノードであり、ノードＮ５への距離は２ノードであり、ノードＮ６への距離は２ノードであり、ノードＮ７への距離は２ノードであり、ノードＮ８への距離は２ノードであり、ノードＮ９への距離は２ノードであり、ノードＮ１０への距離は３ノードである。これらの距離を足し合わせると、他の全てのノードへの総距離は１８ノードとなる。同じ計算をノードＮ９に対して行うと、ノードＮ１への距離は４ノードであり、ノードＮ２への距離は３ノードであり、ノードＮ３への距離は２ノードであり、ノードＮ４への距離は１ノードであり、ノードＮ５への距離は１ノードであり、ノードＮ６への距離は４ノードであり、ノードＮ７への距離は２ノードであり、ノードＮ８への距離は２ノードであり、ノードＮ１０への距離は１ノードである。これらの距離を足し合わせると総距離は２０ノードとなる。従って、Ｎ３がＮ９に対してコンフリクトに勝利する。最高中心近接度に対する他の測定値またはその代用を適用してもよい。例えば、測定時間を節約するため、ネットワークの端にあるノードのみを考慮してもよい。図６Ｆの場合は、これらのノードにはＮ１、Ｎ６、Ｎ７、Ｎ８およびＮ１０、即ち、１つの他のノードにのみ接続された装置が含まれる。
【００４８】
図７は、トラフィック・ベースのポリシーに従ってコンフリクトを扱う、即ち、ネットワーク上のトラフィック量を最小化するようにコンフリクトを解決する、さらに別の方法を示す。例えば、図７の例では、夫々知識７０２、７１２、７２２、７３２および７４２を有する５つの装置７００、７１０、７２０、７３０および７４０があり、示したトポロジに従って同期する。この例では、オブジェクトＫＮは装置７００によりＫＦＺになり、オブジェクトＫＮは装置７４０および７１０により独立にＫｎになる。本実施形態では、トラフィック・ベースの分析を行い、それによりＫＦＺまたはＫｎのどちらを選択すればネットワーク・トラフィックへの影響を最小限としてコンフリクトを解決できるかが決まる。本例ではバージョンＫＦＺを採用すると他の装置の全てへの伝播が必要となる一方で、バージョンＫｎを採用すれば変更を３つの異なる装置７００、７２０および７３０に伝播するだけでよいので、バージョンＫｎを優先してコンフリクトを解決することにより同期トラフィックは少なくなる。
【００４９】
図８は、本発明に従う、一組の装置の間で行う同期の開始と、対応するコンフリクトの検出および解決を示す例示的で非限定的なフロー図である。８００で、同期を一組の同期ノードに含まれる２つのノードＡとＢの間で同期を開始する。８１０で、２つのノードＡおよびＢの知識を比較する。８２０で、同期中に発見したコンフリクトがあれば検出する。８３０で、コンフリクトを後で解決するため、および／または変更並びにコンフリクト解決を以前の時刻にロール・バックするために、コンフリクトを任意にコンフリクトログに記憶する。後のために記録しない場合は、８３０で、同期装置（例えば、ユーザまたはアプリケーション）により選択した１つまたは複数のコンフリクト解決ポリシーに従ってコンフリクトを解決する。８４０で、任意にコンフリクト解決を以前の時点にロール・バックすることができる。８５０で、代替的コンフリクト解決ポリシーを適用して前に進めることができる。
【００５０】
このように、本発明によれば、様々なコンフリクト解決ポリシーを単体または組合せにより適用して、コンフリクトが起きた場合にどのノードが他のノードに勝るかを決定することができる。独立なバージョニングが可能または望ましいならば、コンフリクト解決を行わないことが別の選択肢である。
【００５１】
要約すると、電子メールを超えた、同期されている新しい端末およびデータ型が急増すると、常に発展する同期シナリオに対して十分に柔軟な新しいコンフリクト解決ポリシーが必要となろう。本明細書で特定した幾つかのコンフリクト解決ポリシーには、（Ａ）最後の同期から最も更新を行った端末が勝る「最頻更新者」、（Ｂ）端末に優先度が割り当てられこれらの優先度を用いて勝者を決定する「優先度」、（Ｃ）変化の割合が最も高いレプリカが勝る「変化率」、（Ｄ）解決できないコンフリクトの勝者を決定するための調停者を選ぶ「デッドロック解決」、（Ｅ）最も多い数の同期関係に参加する端末が勝る「最高度」、および（Ｆ）端末の、全ての同期関係に渡る他の全ての端末への近接度を測定する「最高中心近接度」が含まれる。
【００５２】
上述した解決ポリシーの幾つかは非伝統的で、本発明の同期機能を用いるアプリケーションが一組のパターンを忠実に守り、これらのポリシーの何れも、本発明が提供したコンフリクト解決機能を利用する能力を失わずに適用できることを仮定している。具体的には、アプリケーションは提供されたポリシーを用いてコンフリクト解決を遅らせるか、自動的にコンフリクトを解決することができる。遅らせる場合は、クライアントは記憶するためのコンフリクト情報を与えられ、１つの例示的で非限定的な実施形態では、この情報は項目のバージョン、変更を適用すべき場合は学習されるであろうデータおよび知識ベクトルを含む。次に、クライアントは、後にこれらのコンフリクトを列挙することができる。従って、有利なことに、本発明はコンフリクトと一緒に記憶した項目の知識毎に、記憶したコンフリクトを列挙でき、カスタムコンフリクト解決ポリシーを適用することができる。
【００５３】
本発明のコンフリクトを解決するためのシステムおよび方法を、同一プロバイダ上のメモリ・データ内で解決する状況に適用することもできる。かかる状況では、メモリ・データは物理記憶によりバックアップされないことがある。例えば、メモリ・データは、ノードを同期するためのＣＰＵ上のグラフ・ソルバで使用されることがある。本発明を、特にシーン・グラフがマルチコア・アーキテクチャ上により散らばって、計算がボリューム・テクスチャのようなメモリ・データ構造に直接書き込まれる際の、シーン・グラフの状況に適用することもできる。
【００５４】
（例示的なネットワーク環境および分散環境）
本発明を任意のコンピュータまたは他のクライアント装置もしくはサーバ装置と関連して実装でき、それらをコンピュータ・ネットワークの一部として、または分散コンピューティング環境中に展開することができ、任意の種類のデータ記憶に接続できることは当業者には理解されよう。この点で、本発明は、任意数のメモリまたは記憶装置、任意数のアプリケーションおよび任意数の記憶装置もしくはボリュームに渡って行われる処理を有する、任意のコンピュータ・システムまたは環境に関し、本発明に従って同期コンフリクトを検出および解決することと関連して使用することができる。本発明を、ネットワーク環境または分散コンピューティング環境に展開した、リモート記憶またはローカル記憶を有するサーバ・コンピュータおよびクライアント・コンピュータを有する環境に適用することができる。本発明を、リモートまたはローカルのサービスおよびプロセスと関連して情報を生成、受信、および送信するためのプログラミング言語の機能、解釈および実行機能を有するスタンドアロン・コンピューティング装置に適用することもできる。
【００５５】
分散コンピューティングにより、コンピューティング装置およびシステムの間の交換によりコンピュータのリソースおよびサービスの共有を実現する。これらのリソースおよびサービスには情報の交換、ファイルのようなオブジェクトのキャッシュ記憶およびディスク記憶が含まれる。分散コンピューティングはネットワーク接続を利用し、クライアントが自身の収集能力を利用して企業全体に利益をもたらすことを可能とする。この点で、様々な装置は、本発明に従って同期コンフリクトを検出および解決するためのシステムおよび方法に関係しうるアプリケーション、オブジェクトまたはリソースを有することができる。
【００５６】
図９は例示的なネットワーク・コンピューティング環境または分散コンピューティング環境の概略図である。分散コンピューティング環境はコンピューティング・オブジェクト９１０ａ、９１０ｂ、等、およびコンピューティング・オブジェクトまたは装置９２０ａ、９２０ｂ、９２０ｃ、９２０ｄ、９２０ｅ、等を含む。これらのオブジェクトはプログラム、メソッド、データ記憶、プログラム可能ロジック、等を含むことができる。オブジェクトはＰＤＡ、オーディオ／ビデオ装置、ＭＰ３プレイヤ、パーソナル・コンピュータ、等のような同一または異なる装置の一部を含むことができる。各オブジェクトは通信ネットワーク９４０により別のオブジェクトと通信することができる。このネットワーク自体は、図９のシステムにサービスを提供する他のコンピューティング・オブジェクトおよびコンピューティング装置を含むことができ、複数の相互接続ネットワークを表すことができる。本発明の態様によると、各オブジェクト９１０ａ、９１０ｂ、等、または９２０ａ、９２０ｂ、９２０ｃ、９２０ｄ、９２０ｅ、等は、本発明に従って同期コンフリクトを検出および解決するためのシステムおよび方法で使用するのに適したＡＰＩ、または他のオブジェクト、ソフトウェア、ファームウェアおよび／またはハードウェアを利用しうるアプリケーションを含むことができる。
【００５７】
９２０ｃのようなオブジェクトを別のコンピューティング装置９１０ａ、９１０ｂ、等、または９２０ａ、９２０ｂ、９２０ｃ、９２０ｄ、９２０ｅ、等にホストしてもよいことは理解されよう。従って、図示した物理環境では接続される装置をコンピュータとして示すことができるが、かかる説明は例示に過ぎず、当該物理環境を、代わりに、ＰＤＡ、テレビ、ＭＰ３プレイヤ、等のような様々なデジタル装置を含むように図示または説明してもよく、それらの何れも様々な有線および無線サービス、およびインタフェース、ＣＯＭオブジェクトのようなソフトウェア・オブジェクト、等を使用することができる。
【００５８】
分散コンピューティング環境をサポートする様々なシステム、コンポーネント、およびネットワーク構成がある。例えば、コンピューティング・システムを有線または無線システムによって、ローカル・ネットワークまたは広域分散ネットワークによって、共に接続することができる。現在、ネットワークの多くはインターネットに接続されている。インターネットは、広域分散コンピューティングに対するインフラを提供し、多種多様なネットワークを包含する。当該インフラの何れも、本発明に従う同期コンフリクトの検出および解決に伴う例示的な通信に使用することができる。
【００５９】
家庭用ネットワーク環境では、電線、データ（無線および有線の両方）、音声（例えば、電話）および娯楽媒体のような一意なプロトコルを夫々サポートできる少なくとも４つの異種ネットワーク伝送媒体がある。光スイッチおよび光機器のような殆どの家庭用制御装置は接続に電線を使用することができる。データ・サービスは、家庭にブロードバンド（例えば、ＤＳＬまたはケーブル・モデム）として入ることができ、無線（例えば、ＨｏｍｅＲＦまたは８０２．１１Ｂ）または有線（例えば、ＨｏｍｅＰＮＡ、Ｃａｔ５、イーサネット（登録商標）、および電線）接続を用いて家庭内でアクセス可能である。音声トラフィックは有線（例えば、Ｃａｔ３）または無線（例えば、携帯電話）として家庭内に入ることができ、Ｃａｔ３配線を用いて家庭内で分散することができる。娯楽媒体、または他のグラフィカル・データは衛星またはケーブルを通して家庭に入ることができ、一般に同軸ケーブルを用いて家庭内で分散される。ＩＥＥＥ１３９４およびＤＶＩはメディア装置のクラスタに対するデジタル相互接続でもある。プロトコル標準として現れうる、または既に現れているこれらのネットワーク環境全体またはその他と相互接続して、インターネットのような広域ネットワークにより外部世界と接続可能なイントラネットのようなネットワークを形成することができる。要するに、データの記憶および送信に対して様々な異種のソースが存在し、結果として、本発明のコンピューティング装置の何れも任意の既存の方法でデータを共有および通信することができ、本明細書の実施形態で説明したどの方法にも限定されない。
【００６０】
インターネットは一般に、ＴＣＰ／ＩＰ（Transmission Control Protocol/Internet Protocol）プロトコル群を利用するネットワークおよびゲートウェイの集合体を指し、コンピュータ・ネットワーキングの分野で公知である。インターネットを、ユーザがネットワーク（複数可）上で対話および情報共有できるネットワーキング・プロトコルをコンピュータが実行することにより相互接続される、地理的に分散したリモート・コンピュータ・ネットワークのシステムとして説明することができる。かかる広範囲の情報共有のため、インターネットのようなリモート・ネットワークは現在までに一般に、開発者が特殊な動作またはサービスを実施するためのソフトウェア・アプリケーションを原則として制限なしに設計できるオープン・システムへと発展した。
【００６１】
このように、ネットワーク情報基盤は、クライアント／サーバ、ピア・ツー・ピア、またはハイブリッド・アーキテクチャのような多くのネットワーク・トポロジを可能とする。「クライアント」は、自身が関連しない別のクラスまたはグループのサービスを使用するクラスまたはグループのメンバである。この点で、コンピューティングにおいては、クライアントは、別のプログラムが提供するサービスを要求するプロセス、即ち、大雑把には一組の命令またはタスクのプロセスにある。クライアントのプロセスは他のプログラムまたはサービス自体に関する動作の詳細を何ら「知る」必要なしに要求されたサービスを利用する。クライアント／サーバ・アーキテクチャ、特にネットワーク型のシステムでは、クライアントは通常、別のコンピュータ、例えばサーバにより提供される共有ネットワーク・リソースにアクセスするコンピュータである。図９の例では、例として、コンピュータ９２０ａ、９２０ｂ、９２０ｃ、９２０ｄ、９２０ｅ、等をクライアントと考え、コンピュータ９１０ａ、９１０ｂ、等をサーバと考えることができる。この場合、サーバ９１０ａ、９１０ｂ、等はクライアント・コンピュータ９２０ａ、９２０ｂ、９２０ｃ、９２０ｄ、９２０ｅ、等に複製されるデータを保持するが、状況に応じて任意のコンピュータをクライアント、サーバ、またはその両方と考えることができる。これらのコンピューティング装置の何れも、本発明に従う同期コンフリクトの検出および解決に関係しうるデータの処理またはサービスもしくはタスクの要求を行うことができる。
【００６２】
サーバは一般に、インターネットまたは無線ネットワーク基盤のようなリモートまたはローカル・ネットワーク上でアクセス可能なリモート・コンピュータ・システムである。クライアント・プロセスが第１のコンピュータ・システム内でアクティブであり、サーバ・プロセスが第２のコンピュータ・システム内でアクティブであり、様々な通信媒体の何れかの上で互いに通信し、これにより分散機能を提供して複数のクライアントがサーバの情報収集機能を利用できるようにすることができる。本発明に従う、同期コンフリクトを検出および解決するための技法に従って使用される任意のソフトウェア・オブジェクトを複数のコンピューティング装置またはオブジェクトに渡って分散させることができる。
【００６３】
クライアント（複数可）およびサーバ（複数可）は、プロトコル層（複数可）が提供する機能を利用して互いと通信する。例えば、ＨＴＴＰ（Hyper Text Transfer Protocol）は、ＷＷＷ（World Wide Web）または「ウェブ」と関連して使用される共通のプロトコルである。一般に、ＩＰ（Internet Protocol）アドレスのようなコンピュータ・ネットワーク・アドレスまたはＵＲＬ（Universal Resource Locator）のような他を参照してサーバ・コンピュータまたはクライアント・コンピュータを互いに対して識別することができる。ネットワーク・アドレスをＵＲＬアドレスと呼ぶことができる。通信を通信媒体上で提供することができる。例えば、クライアント（複数可）およびサーバ（複数可）を、大容量通信向けのＴＣＰ／ＩＰ接続（複数可）を介して互いと接続することができる。
【００６４】
このように、図９は例示的なネットワーク環境または分散環境を示し、サーバ（複数可）はネットワーク／バスを介してクライアント・コンピュータ（複数可）と関連し、当該環境内で本発明を使用することができる。より詳細には、本発明に従って、幾つかのサーバ９１０ａ、９１０ｂ、等が、ＬＡＮ、ＷＡＮ、イントラネット、ＧＳＮネットワーク、インターネット、等でありうる通信ネットワーク／バス９４０を介して、ポータブル・コンピュータ、ハンドヘルド・コンピュータ、シン・クライアント、ネットワーク機器、またはＶＣＲ、ＴＶ、オーブン、ライト、ヒータ等のような他の装置といった幾つかのクライアントまたはリモート・コンピューティング装置９２０ａ、９２０ｂ、９２０ｃ、９２０ｄ、９２０ｅ、等と相互接続される。このように、本発明を、一組のネットワーク装置のうち１つまたは複数の装置とデータを同期することが望ましいものと関連して任意のコンピューティング装置に適用できることが考慮されている。
【００６５】
通信ネットワーク／バス９４０がインターネットであるネットワーク環境では、例えば、サーバ９１０ａ、９１０ｂ、等は、クライアント９２０ａ、９２０ｂ、９２０ｃ、９２０ｄ、９２０ｅ、等がＨＴＴＰのような幾つかの既知のプロトコルの何れかを介して通信するウェブ・サーバであることができる。サーバ９１０ａ、９１０ｂ、等は、分散コンピューティング環境の特徴でありうるように、クライアント９２０ａ、９２０ｂ、９２０ｃ、９２０ｄ、９２０ｅ、等の役割を果たすこともできる。
【００６６】
また、通信は必要に応じて、有線もしくは無線、またはその組合せであることができる。クライアント装置９２０ａ、９２０ｂ、９２０ｃ、９２０ｄ、９２０ｅ、等は、通信ネットワーク／バス１４を介して通信してもしなくてもよく、それに関連する独立な通信を有してもよい。例えば、ＴＶまたはＶＣＲの場合、その制御に対するネットワークの態様があってもなくてもよい。各クライアント・コンピュータ９２０ａ、９２０ｂ、９２０ｃ、９２０ｄ、９２０ｅ、等、およびサーバ・コンピュータ９１０ａ、９１０ｂ、等は様々なアプリケーション・プログラム・モジュールまたはオブジェクト１３５ａ、１３５ｂ、１３５ｃ、等を具備することができ、様々な種類の記憶要素またはオブジェクトに対する接続またはアクセスを具備することができ、それらに渡ってファイルもしくはデータ・ストリームを記憶し、またはそれらにファイルもしくはデータ・ストリームの部分（複数可）をダウンロード、送信または移動することができる。コンピュータ９１０ａ、９１０ｂ、９２０ａ、９２０ｂ、９２０ｃ、９２０ｄ、９２０ｅ、等の任意の１つまたは複数に、本発明に従って処理または保存したデータを記憶するためのデータベースまたはメモリ９３０のようなデータベース９３０または他の記憶要素を保持および更新する責任を持たせることができる。従って、本発明を、コンピュータ・ネットワーク／バス９４０にアクセスおよびコンピュータ・ネットワーク／バス９４０と対話できるクライアント・コンピュータ９２０ａ、９２０ｂ、９２０ｃ、９２０ｄ、９２０ｅ、等、クライアント・コンピュータ９２０ａ、９２０ｂ、９２０ｃ、９２０ｄ、９２０ｅ、等および他の同様な装置と対話できるサーバ・コンピュータ９１０ａ、９１０ｂ、等、ならびにデータベース９３０を有するコンピュータ・ネットワーク環境で利用することができる。
【００６７】
（例示的なコンピューティング装置）
述べたように、本発明は、一組の装置に渡ってデータを同期することが望ましいと思われる場合に、任意の装置に適用される。従って、ハンドヘルド、ポータブルおよびその他のコンピューティング装置およびあらゆる種類のコンピューティング・オブジェクトが本発明と関連した使用、即ち、装置がデータを同期するか、そうでなければ同期データを受け取り、処理し、または記憶できる任意の場合に対して考慮されていることは理解されよう。従って、図１０における後述の汎用目的のリモート・コンピュータは一例に過ぎず、本発明を、ネットワーク／バスの相互運用性および相互作用を有する任意のクライアントで実装することができる。従って、本発明を、極少数または最小量のクライアント・リソースが関与するネットワーク・ホスト・サービスの環境、例えば、クライアント装置が機器内に配置したオブジェクトのように単にネットワーク／バスに対するインタフェースの役割を果たすネットワーク環境で実装することができる。
【００６８】
必要ではないが、本発明を、装置またはオブジェクトに対するサービスの開発者が使用するためにオペレーティング・システムを介して部分的に実装することができ、および／または本発明のコンポーネント（複数可）と関連して動作するアプリケーション・ソフトウェアに含めることができる。ソフトウェアを、プログラム・モジュールのような、クライアント・ワークステーション、サーバまたは他の装置といった１つまたは複数のコンピュータにより実行されているコンピュータ実行可能命令の一般的な状況で説明することができる。本発明を他のコンピュータ・システム構成およびプロトコルで実施してもよいことは当業者には理解されよう。
【００６９】
図１０は従って、本発明を実装できる適切なコンピューティング・システム環境１０００ａの例を示すが、上で明らかにしたように、コンピューティング・システム環境１０００ａはメディア装置に対する適切なコンピューティング環境の一例に過ぎず、本発明の使用範囲または機能範囲に関するどのような限定を示唆するとも意図していない。また、コンピューティング環境１０００ａが、例示的な動作環境１０００ａに示したコンポーネントのどの１つまたは組合せに関してどのような依存性または要件も有すると解釈すべきではない。
【００７０】
図１０を参照すると、本発明を実装する例示的なリモート装置は、汎用目的コンピューティング装置をコンピュータ１０１０ａの形で含む。コンピュータ１０１０ａのコンポーネントは処理装置１０２０ａ、システム・メモリ１０３０ａ、およびシステム・メモリを含む様々なシステムコンポーネントを処理装置１０２０ａに接続するシステム・バス１０２１ａを含むことができるがこれらに限らない。システム・バス１０２１ａは、メモリ・バスまたはメモリ・コントローラ、周辺バス、および様々なバス・アーキテクチャの何れかを用いるローカル・バスを含む数種のバス構造の何れかであることができる。
【００７１】
コンピュータ１０１０ａは一般に、様々なコンピュータ読取可能媒体を含む。コンピュータ読取可能媒体は、コンピュータ１０１０ａがアクセスできる任意の使用可能な媒体であることができる。限定ではなく例として、コンピュータ読取可能媒体はコンピュータ記憶媒体および通信媒体を含むことができる。コンピュータ記憶媒体は、コンピュータ読取可能命令、データ構造、プログラム・モジュールまたは他のデータのような情報を記憶するための任意の方法または技術で実装した揮発性および不揮発性媒体、取外し可能および取外し不能媒体の両方を含むことができる。コンピュータ記憶媒体には、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュ・メモリまたは他のメモリ技術、ＣＤＲＯＭ、ＤＶＤ（digital versatile disk）もしくは他の光ディスク記憶、磁気カセット、磁気テープ、磁気ディスク記憶もしくは他の磁気記憶装置、または所望の情報の記憶に使用できコンピュータ１０１０ａによりアクセスできる他の任意の媒体が含まれるがこれらに限らない。通信媒体は一般にコンピュータ読取可能命令、データ構造、プログラム・モジュールまたは搬送波または他の伝送方式のような変調されたデータシグナルの他のデータを具現化し、任意の情報送達媒体を含む。
【００７２】
システム・メモリ１０３０ａは、コンピュータ記憶媒体をＲＯＭ（read only memory）および／またはＲＡＭ（random access memory）のような揮発性および／または不揮発性メモリの形で含むことができる。ＢＩＯＳ（basic input/output system）は、例えば起動中に、コンピュータ１０１０ａ内部の要素間での情報の伝送を支援する基本ルーチンを含み、メモリ１０３０ａに記憶することができる。メモリ１０３０ａは一般に、処理装置１０２０ａが即座にアクセスできるデータ、および／または処理装置１０２０ａ上で現在動作しているデータおよび／プログラム・モジュールも含む。限定ではなく例として、メモリ１０３０ａはオペレーティング・システム、アプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データも含むことができる。
【００７３】
コンピュータ１０１０ａは他の取外し可能／取外し不能、揮発性／不揮発性のコンピュータ記憶媒体も含むことができる。例えば、コンピュータ１０１０ａは、取外し不能で不揮発性の磁気媒体を読み書きするハード・ディスク・ドライブ、取外し可能で不揮発性の磁気ディスクを読み書きする磁気ディスク・ドライブ、および／またはＣＤ−ＲＯＭもしくは他の光媒体のような取外し可能で不揮発性の光ディスクを読み書きする光ディスク・ドライブを含むことができる。例示的な動作環境で使用できる他の取外し可能／取外し不能、揮発性／不揮発性のコンピュータ記憶媒体には、磁気テープ・カセット、フラッシュ・メモリ・カード、デジタル多用途ディスク、デジタル・ビデオ・テープ、固体ＲＡＭ、固体ＲＯＭ等が含まれるがこれらに限らない。ハード・ディスク・ドライブは一般に、インタフェースのような取外し不能メモリ・インタフェースを通してシステム・バス１０２１ａに接続され、磁気ディスク・ドライブまたは光ディスク・ドライブは一般に、インタフェースのような取外し可能メモリ・インタフェースによりシステム・バス１０２１ａに接続される。
【００７４】
ユーザは、キーボードおよび一般にマウスと呼ばれるポインティング・デバイス、トラックボールまたはタッチ・パッドのような入力装置を通してコンピュータ１０１０ａにコマンドおよび情報を入力することができる。他の入力装置には、マイクロフォン、ジョイスティック、ゲーム・パッド、パラボラ・アンテナ、スキャナ、等を含めることができる。これらおよび他の入力装置はユーザ入力１０４０ａ、およびシステム・バス１０２１ａに接続した関連インタフェース（複数可）を通して処理装置１０２０ａに接続されることがよくあるが、パラレル・ポート、ゲーム・ポートまたはＵＳＢ（universal serial bus）のような他のインタフェースおよびバス構造により接続してもよい。グラフィック・サブシステムをシステム・バス１０２１ａに接続することもできる。モニタまたは他種の表示装置も出力インタフェース１０５０ａのようなインタフェースを介してシステム・バス１０２１ａに接続され、システム・バス１０２１ａはビデオ・メモリと通信することができる。モニタに加えて、コンピュータはスピーカおよびプリンタのような他の周辺出力装置を含むこともでき、当該他の出力装置を出力インタフェース１０５０ａを通して接続することができる。
【００７５】
コンピュータ１０１０ａは、リモート・コンピュータ１０７０ａのような１つまたは複数の他のリモート・コンピュータに対する論理接続を用いてネットワーク環境または分散環境で動作することもでき、さらに当該リモート・コンピュータは装置１０１０ａとは異なる媒体機能を有することができる。リモート・コンピュータ１０７０ａはパーソナル・コンピュータ、サーバ、ルータ、ネットワークＰＣ、ピア・デバイスもしくは他の共通ネットワーク・ノード、または他の任意のリモート・メディア消費もしくは送信装置であることができ、コンピュータ１０１０ａに関して上述した要素の何れかまたは全てを含むことができる。図１０に示した論理接続にはＬＡＮ（local area network）またはＷＡＮ（wide area network）のようなネットワーク１０７１ａが含まれるが、他のネットワーク／バスを含んでもよい。かかるネットワーク環境は家庭、職場、企業規模のコンピュータ・ネットワーク、イントラネットおよびインターネットで一般的である。
【００７６】
ＬＡＮネットワーク環境で使用する場合、コンピュータ１０１０ａはネットワーク・インタフェースまたはアダプタを通してＬＡＮ１０７１ａに接続される。ＷＡＮネットワーク環境で使用する場合は、コンピュータ１０１０ａは一般に、モデムのような通信コンポーネント、またはインターネットのようなＷＡＮ上で通信を確立するための他の手段を含む。モデムのような通信コンポーネントは、内部または外部にあることができ、入力１０４０ａのユーザ入力インタフェースまたは他の適切なメカニズムを介してシステム・バス１０２１ａに接続することができる。ネットワーク環境では、コンピュータ１０１０ａまたはその一部に関して図示したプログラム・モジュールをリモート・メモリ記憶装置に記憶することができる。図示および説明したネットワーク接続は例であって、コンピュータ間の通信リンクを確立する他の手段を使用してもよいことは理解されよう。
【００７７】
（例示的な分散コンピューティング・アーキテクチャ）
様々な分散コンピューティング・フレームワークが、パーソナル・コンピューティングおよびインターネットの集約の観点から開発されている。個人ユーザおよび企業ユーザにも同様にシームレスに相互運用可能でウェブ可能なインタフェースがアプリケーションおよびコンピューティング装置に対して与えられ、それによりコンピューティング活動が益々ウェブ・ブラウザまたはネットワーク指向となっている。
【００７８】
例えば、ＭＩＣＲＯＳＯＦＴ（登録商標）のマネージ・コード・プラットフォーム、即ち、．ＮＥＴは、ウェブ・ベースのデータ記憶およびダウンロード可能な装置ソフトウェアのようなサーバ、ビルディングブロック・サービスを含む。一般には、．ＮＥＴプラットフォームは（１）コンピューティング装置全体を一緒に動作させ、それらの全てに対してユーザ情報を自動的に更新および同期させる能力、（２）ＨＴＭＬではなくＸＭＬをより沢山使用することで可能となる、ウェブ・ページに対する対話機能の強化、（３）電子メールのような様々なアプリケーション、または例えばＯｆｆｉｃｅ．ＮＥＴのようなソフトウェアを管理するための中央の起点からの、カスタマイズしたアクセスならびにユーザへの製品およびサービスの送達を特徴とするオンライン・サービス、（４）情報へのアクセスだけでなくユーザおよび装置の間での情報同期の効率性および容易性を高める中央データ記憶、（５）電子メール、ファックス、および電話のような様々な通信媒体を統合する能力、（６）開発者のために、再利用可能モジュールを生成し、それにより生産性を高めプログラミング・エラーの数を軽減する能力、（７）その他多数のクロスプラットフォームおよび言語統合機能を提供する。
【００７９】
本明細書で幾つかの例示的な実施形態を、コンピューティング装置に常駐するＡＰＩ（application programming interface）のようなソフトウェアと関連して説明したが、本発明の１つまたは複数の部分をオペレーティング・システム、または「仲介人（middle man）」オブジェクト、制御オブジェクト、ハードウェア、ファームウェア、中間言語命令またはオブジェクト、等を介して実装して、本発明に従って同期コンフリクトを検出および解決する方法を、．ＮＥＴコードのようなマネージ・コードにより可能となる言語およびサービスの全て、および他の分散コンピューティング・フレームワークに含め、それらの中でサポートし、またはそれらを介してアクセスできるようにしてもよい。
【００８０】
例えば適切なＡＰＩ、ツール・キット、ドライバ・コード、オペレーティング・システム、コントロール、スタンドアロンまたはダウンロード可能ソフトウェア・オブジェクト、等といった本発明を実装する複数の方法があり、これらによりアプリケーションおよびサービスは本発明に従って同期コンフリクトを検出および解決するためのシステムおよび方法を使用することができる。本発明は、ＡＰＩ（または他のソフトウェア・オブジェクト）の観点からだけでなく、本発明に従って同期動作を行うソフトウェアまたはハードウェア・オブジェクトの観点から本発明が使用されることを考慮している。従って、本明細書で説明した本発明の様々な実装は、全体的にハードウェア、部分的にハードウェアおよび部分的にソフトウェア、ならびにソフトウェアにおける態様を有することができる。
【００８１】
本明細書で使用する単語「例示的」は、例、事例、または例示の役割を果たすことを意味している。誤解を避けるために述べるが、本明細書で開示した本発明はかかる例によって限定されることはない。さらに、本明細書で「例示的」として説明したどの態様または設計も必ずしも他の態様または設計に対して好適または有利ではないと解釈すべきで、当業者に公知である同等な例示的構造および技法を排除する意図もない。さらに、用語「含む（includes）」「有する（has）」「有する（contains）」および他の同様な単語を、発明を実施するための形態または特許請求項の範囲で使用する限りでは、誤解を避けるため、かかる用語はどのような追加または他の要素をも排除しない移行語としての用語「備える」と同様に包括的であると意図している。
【００８２】
上述したように、本発明の例示的な実施形態を様々なコンピューティング装置およびネットワーク・アーキテクチャと関連して説明したが、基礎となる概念を、任意のコンピューティング装置、または一組の疎結合装置の間で同期することが望ましい任意のシステムに適用することができる。例えば、本発明に従う同期コンフリクトの検出および解決をコンピューティング装置のオペレーティング・システムに適用することができ、装置上の別個のオブジェクトとして、別のオブジェクトの一部として、再利用可能コントロールとして、サーバからダウンロード可能なオブジェクトとして、装置またはオブジェクトとネットワークの間の「仲介人」として、分散オブジェクトとして、ハードウェアとして、メモリ内に、以上の任意の組合せで、等により提供することができる。本明細書では例示的なプログラミング言語、名前および例を様々な選択肢の代表として選択したが、これらの言語、名前および例は限定を意図するものではない。本発明の様々な実施形態により実現される同一、同様または同等な機能を実現するオブジェクト・コードおよび用語を提供する多数の方法があることは当業者には理解されよう。
【００８３】
述べたように、本明細書で説明した様々な技法を、ハードウェアもしくはソフトウェア、または必要に応じてその両方の組合せで実装することができる。本明細書で使用する際、用語「コンポーネント」、「システム」等は同様に、コンピュータ関連の実体、即ち、ハードウェア、ハードウェアおよびソフトウェアの組合せ、ソフトウェア、または実行中のソフトウェアを指すと意図している。例えば、コンポーネントはプロセッサ上で稼動しているプロセス、プロセッサ、オブジェクト、実行可能ファイル、実行スレッド、プログラム、および／またはコンピュータであることができるがこれらに限らない。例として、コンピュータ上で稼動しているアプリケーションおよびコンピュータの両方はコンポーネントであることができる。１つまたは複数のコンポーネントがプロセスおよび／または実行スレッドの内部に常駐することができ、コンポーネントを１つのコンピュータ上に配置し、および／または複数のコンピュータ間で分散させることができる。
【００８４】
従って、本発明の方法および機器、またはある特定の態様もしくはその一部は、フロッピー（登録商標）・ディスク、ＣＤ−ＲＯＭ、ハード・ドライブ、または他の任意の機械読取可能記憶媒体のような有形媒体内で具現化したプログラム・コード（即ち、命令）の形を取ることができ、当該プログラム・コードをコンピュータのような機械にロードし、当該機械により実行したときは、当該機械は本発明を実施する機器となる。プログラム可能コンピュータ上でプログラム・コードを実行する場合、当該コンピューティング装置は一般にプロセッサ、当該プロセッサにより読取可能な記憶媒体（揮発性および不揮発性メモリおよび／または記憶要素を含む）、少なくとも１つの入力装置、および少なくとも１つの出力装置を含む。例えばデータ処理ＡＰＩ、再利用可能コントロール、等を使用することにより本発明の同期およびコンフリクト解決機能を実装または利用できる１つまたは複数のプログラムを、コンピュータ・システムと通信するための高レベルな手続き型またはオブジェクト指向プログラミング言語で実装することが好ましい。しかし、必要ならばプログラム（複数可）をアセンブリまたは機械語で実装することができる。何れの場合でも、言語はコンパイラ言語またはインタプリタ言語であってもよく、ハードウェア実装と組み合わせてもよい。
【００８５】
本発明の方法および機器を、電線またはケーブル上で、光ファイバを通して、または他の任意の形態の送信を介して、といったように何らかの送信媒体上で送信されるプログラム・コードの形で具現化した通信手段を介して実施してもよく、当該プログラム・コードをＥＰＲＯＭ、ゲート・アレイ、ＰＬＤ（programmable logic device）、クライアント・コンピュータ、等のような機械で受信し、当該機械にロードし、当該機械により実行したときは、当該機械は本発明を実施するための機器となる。汎用目的プロセッサ上で実装すると、プログラム・コードは当該プロセッサと組み合わさって、本発明の機能を起動するように動作する一意な機器を提供する。さらに、本発明と関連して使用される任意の記憶技法は常にハードウェアおよびソフトウェアの組合せであることができる。
【００８６】
さらに、開示した本発明を、ソフトウェア、ファームウェア、ハードウェア、またはその任意の組合せを生産するための標準的なプログラミング技法および／または製造技法を用いてシステム、メソッド、機器、または製品として実装し、本明細書で詳述した態様を実装するためにコンピュータまたはプロセッサ・ベースの装置を制御することができる。用語「製品」（あるいは、「コンピュータ・プログラム製品」）は本明細書で使用するときは、任意のコンピュータ読取可能な装置、キャリア、または媒体からアクセスできるコンピュータ・プログラムを包含すると意図している。例えば、コンピュータ読取可能媒体は磁気記憶装置（例えば、ハード・ディスク、フロッピー（登録商標）・ディスク、磁気ストリップ・・・）、光ディスク（例えば、ＣＤ（compact disk）、ＤＶＤ（digital versatile disk）・・・）、スマート・カード、およびフラッシュ・メモリ装置（例えば、カード、スティック）を含むことができるがこれらに限らない。さらに、搬送波を、電子メールの送受信、またはインターネットもしくはＬＡＮ（local area network）のようなネットワークへのアクセスに使用されるコンピュータ読取可能な電子データを運搬するために使用できることが知られている。
【００８７】
前述のシステムを、幾つかのコンポーネント間での相互作用に関して説明した。かかるシステムおよびコンポーネントは、これらのコンポーネントまたは指定の部分コンポーネント、当該指定のコンポーネントまたは部分コンポーネントの一部、および／または追加のコンポーネントを含むことができ、以上のコンポーネントの様々な順列および組合せに従うことは理解されよう。部分コンポーネントを、親コンポーネント内部に含める（階層的とする）のではなく、他のコンポーネントに通信可能に結合したコンポーネントとして実装することもできる。さらに、１つまたは複数のコンポーネントを、集計機能を提供する単一のコンポーネントへ統合するか、幾つかの別個の部分コンポーネントに分割してもよく、管理層のような任意の１つまたは複数の中間層を提供してかかる部分コンポーネントを通信可能に結合して統合機能を提供してもよいことに留意されたい。本明細書で説明した任意のコンポーネントは、本明細書では特に説明していないが１つまたは複数の他のコンポーネントと相互作用してもよく、これは通常当業者には理解されるであろう。
【００８８】
上述の例示的なシステムを考慮すると、開示した本発明に従って実装できる方法論は図２Ａ、３、４Ａ、４Ｂ、４Ｃ、４Ｄ、５Ａ、５Ｂ、５Ｃ、５Ｄ、６Ａ、６Ｂ、６Ｃ、６Ｄ、６Ｅ、６Ｆ、７および８のフローチャートを参照すればより良く理解されよう。説明を簡単にするため、当該方法論を一連のブロックとして図示および説明してあるが、幾つかのブロックを本明細書で図示および記載したものとは異なる順序で、および／またはそれ以外のブロックと並行に行ってもよいので、本発明はそのブロックの順序に限定されないことは理解されよう。非逐次的、または分岐式のフローをフローチャートにより示す場合、同一または同様な結果を実現する様々な他の分岐、フロー・パス、およびブロックの順序を実装することができることは理解されよう。さらに、示したブロックの全てが、本明細書で示した方法論を実装する必要はない。
【００８９】
さらに、理解されようが、以上および以下で開示したシステムの様々な部分および方法は、人工知能または知識もしくはルール・ベースのコンポーネント、部分コンポーネント、プロセス、手段、方法論、またはメカニズム（例えば、サポート・ベクタ・マシン、ニューラル・ネットワーク、エキスパート・システム、ベイジアン・ネットワーク、ファジー・ロジック、データ・フュージョン・エンジン、分類器・・・）を含むことができ、またはそれらから構成することができる。かかるコンポーネントは、とりわけ、ある種のメカニズムまたはそれにより行われるプロセスを自動化して、システムおよび方法の一部をより適応的にするだけでなく、効率的且つ知的にすることができる。
【００９０】
本発明を様々な図面の好ましい実施形態と関連して説明したが、他の同様な実施形態を使用し、または本発明の同一機能を行うために説明した実施形態に、そこから逸脱しない修正および追加を行うことができることは理解されよう。例えば、本発明の例示的なネットワーク環境を、ピア・ツー・ピアのネットワーク環境のようなネットワーク環境の状況で説明したが、本発明はそれに限定されず、本出願で説明したように、本方法は有線または無線に関わらずゲーム・コンソール、ハンドヘルド・コンピュータ、ポータブル・コンピュータ、等のような任意のコンピューティング装置または環境に適用でき、通信ネットワークを介して接続され、ネットワークに渡って相互作用する任意数のかかるコンピューティング装置に適用できることは当業者には理解されよう。さらに、特に無線ネットワーク装置の数が増大し続ける際、ハンドヘルド装置のオペレーティング・システムおよび他のアプリケーション固有なオペレーティング・システムを含む様々なコンピュータ・プラットフォームが考慮されていることを強調しておく。
【００９１】
例示的な実施形態は特定のプログラミング言語の構成概念の状況で本発明を利用することに関するが、本発明はそのように限定されず、本発明に従ってコンフリクトを検出し解決するための方法を提供する任意の言語で実装することができる。さらに、本発明を複数の処理チップまたは処理装置内またはそれらに渡って実装することができ、同様に複数の装置に渡って記憶を行うことができる。従って、本発明はどの単一の実施形態にも限定されるべきではなく、添付の特許請求の範囲に従って広範囲に解釈すべきである。
【図１】
0004846027.tif 000002
【図２Ａ】
0004846027.tif 000003
【図２Ｂ】
0004846027.tif 000004
【図３】
0004846027.tif 000005
【図４Ａ】
0004846027.tif 000006
【図４Ｂ】
0004846027.tif 000007
【図４Ｃ】
0004846027.tif 000008
【図４Ｄ】
0004846027.tif 000009
【図５Ａ】
0004846027.tif 000010
【図５Ｂ】
0004846027.tif 000011
【図５Ｃ】
0004846027.tif 000012
【図５Ｄ】
0004846027.tif 000013
【図６Ａ】
0004846027.tif 000014
【図６Ｂ】
0004846027.tif 000015
【図６Ｃ】
0004846027.tif 000016
【図６Ｄ】
0004846027.tif 000017
【図６Ｅ】
0004846027.tif 000018
【図６Ｆ】
0004846027.tif 000019
【図７】
0004846027.tif 000020
【図８】
0004846027.tif 000021
【図９】
0004846027.tif 000022
【図１０】
0004846027.tif 000023