(57)【要約】  端点間で通信されるデータを必ずしも修正することなく端点においてデータを修正することを含む、端点間でデータを同期させるシステム及び方法が開示される。このようなシステム及び方法において、端点におけるデータの表現は、他の端点に対して同期される際にデータに対する同様の又は同一の修正を要求することなく特定の端点における制約が実行されるように修正され得る。
2010531025.tif 000002
【特許請求の範囲】
【請求項１】
同期データ項目を含む同期データを取得するステップと、
前記同期データ項目を第２の同期データ項目とマージするステップと、
前記第２の同期データ項目を領域データ項目上へ実現するステップとを含み、前記実現するステップは、
前記第２の同期データ項目を変更することなく、前記領域データ項目に対してなされる変更が前記第２の同期データ項目と関連付けられる第３の同期データ項目に組み込まれないように、前記第２の同期データ項目に関連付けられる情報を使用することにより、前記領域データ項目を修正して前記領域データ項目に対して変更をもたらすステップと、
前記領域データがどのように修正されたかについての記述を記録するステップとを含む方法。
【請求項２】
前記同期データがＳＳＥを使用して表されるフィードをさらに含む請求項１に記載の方法。
【請求項３】
前記実現するステップは、前記同期データにおいてサポートされるが前記領域データ項目においてサポートされない文字に起因する非互換性を解決し、前記修正は、前記領域データ項目においてサポートされない文字を前記領域データ項目においてサポートされる文字に取り替えるステップをさらに含む請求項１に記載の方法。
【請求項４】
前記第２の同期データ項目は、ファイルシステム要素に関連付けられたファイルシステム情報を含み、前記領域データ項目は第２のファイルシステム要素である請求項１に記載の方法。
【請求項５】
前記実現するステップは、
複製のファイルシステム要素、
第３のファイルシステム要素及び第４のファイルシステム要素を含むサイクル、及び
取り残されたファイルシステム要素
のうちの１つに起因する非互換性を解決する請求項４に記載の方法。
【請求項６】
前記修正は、
前記第２の同期データ項目において指定される同期データ項目の位置とは異なる位置に前記領域データ項目を配置するステップをさらに含む請求項１に記載の方法。
【請求項７】
前記記録するステップは、
前記第２の同期データ項目に関連付けられた識別子を表形式のデータ構造に記録するステップと、前記領域データがどのように修正されたかについての前記記述を前記識別子に関連付けて記録するステップとをさらに含む請求項１に記載の方法。
【請求項８】
前記マージするステップは、
前記同期データ項目及び前記第２の同期データ項目が同一の識別子に関連付けられるかどうかを評価することにより、前記同期データ項目が前記第２の動機データ項目に関連付けられるかどうかを決定するステップと、
前記同期データ項目が前記第２の同期データ項目に関連付けられる場合に、前記同期データ項目及び前記第２の同期データ項目を比較することにより前記同期データ項目及び前記第２の同期データ項目から得られる項目及び失う項目を選択することによって、前記第２の同期データ項目が更新されるべきかどうかを決定するステップと、
前記第２の同期データ項目が更新されるべき場合に、前記同期データ項目に関連付けられる項目データ要素に関連付けられた情報を少なくとも使用して、前記第２の同期データ項目を更新するステップとをさらに含む請求項１に記載の方法。
【請求項９】
前記比較することは、
同期データ項目のバージョン属性及び第２の同期データ項目のバージョン属性を比較するステップであって、より大きなバージョン値が前記得られた項目に関連付けられる、ステップと、
同期データ項目の修正時刻属性及び第２の同期データ項目の修正時刻属性を比較するステップであって、より後の修正時刻値が前記得られた項目に関連付けられる、ステップと、
同期データ項目を修正するエンティティ及び第２の同期データ項目を修正するエンティティを比較するステップであって、より大きな修正するエンティティの値が前記得られた項目に関連付けられる、ステップと
のうちの少なくとも１つをさらに含む請求項８に記載の方法。
【請求項１０】
前記領域データ項目がどのように修正されたかについての前記記述を使用して、生成された同期データ項目を生成するステップをさらに含み、前記生成された同期データ項目は、前記領域データ項目上へ前記第２の同期データ項目を実現することの一部として使用された情報の少なくとも一部を含み、前記生成された同期データ項目は前記領域データ項目に対する前記変更を含まない請求項１に記載の方法。
【請求項１１】
前記領域データ項目が修正されたという通知をエンティティに提供するステップをさらに含み、前記通知は、前記領域データ項目がどのように修正されたかに関連する少なくともある修正情報を含む請求項１に記載の方法。
【請求項１２】
領域データ項目を識別するステップと、
前記領域データ項目上へ同期データ項目を実現することの一部として前記領域データ項目が以前に修正されたかどうかを決定するステップと、
前記領域データ項目上へ前記同期データ項目を実現することの一部として前記領域データ項目が以前に修正された場合に、前記領域データ項目がどのように修正されたかについての記述を使用して、第２の同期データ項目を生成するステップとを含み、
前記第２の同期データ項目は前記同期データ項目によって提供された同期項目データを含み、前記同期項目データは前記領域データ項目上へ前記同期データ項目を実現することの一部として使用されたものである、方法。
【請求項１３】
前記同期データ項目はＳＳＥを使用して表されるフィードの一部である請求項１２に記載の方法。
【請求項１４】
前記同期項目データの少なくとも一部は前記領域データ項目によって格納されない請求項１２に記載の方法。
【請求項１５】
前記領域データ項目はファイルシステム要素であり、前記第２の同期データ項目は前記ファイルシステム要素に関連付けられたファイルシステム情報である請求項１２に記載の方法。
【請求項１６】
前記生成するステップの前に、前記領域データ項目を、新たな情報を含むように更新するステップと、
前記第２の同期データ項目に前記新たな情報を含めるステップと
をさらに含む請求項１２に記載の方法。
【請求項１７】
前記第２の同期データ項目は、フィードシンクデータ要素及び項目データ要素を含む第２のフィード項目をさらに含み、前記方法は、
前記項目データが前記新たな情報の少なくとも一部を含むように、前記項目データ要素に関連付けられた項目データを修正するステップと、
前記フィードシンクデータ要素に関連付けられたバージョン値をインクリメントするステップと、
前記フィードシンクデータ要素に関連付けられ、さらに、以前の最も最近の修正時刻及び以前の最も最近の修正するエンティティのうち少なくとも１つに関連付けられた新たな更新要素を作成するステップと、
前記フィードシンクデータ要素に関連付けられた最も最近の修正時刻履歴属性及び前記フィードシンクデータ要素に関連付けられた最も最近の修正するエンティティの履歴属性のうち少なくとも１つを更新するステップと
をさらに含む請求項１６に記載の方法。
【請求項１８】
フィード項目を格納するように構成された同期データ記憶モジュールと、
領域データ項目を格納するように構成された領域データ記憶モジュールと、
フィード項目を変更せずに前記フィード項目に関連付けられた情報を使用して前記領域データ項目を修正することにより、領域データ項目上へ前記フィード項目を実現するように構成された実現モジュールと、
フィードシンクデータ要素及び項目データ要素を含み且つフィードに関連付けられている第２のフィード項目を前記フィード項目とマージし、
生成されるフィードに関連付けられ且つ第２のフィードシンクデータ要素及び第２の項目データ要素を含む生成されたフィード項目を、前記領域データ項目へ前記フィード項目を実現することの一部として前記領域データがどのように修正されたかについての記述を使用して、生成する
ように構成された同期モジュールとを含み、前記第２の項目データ要素は前記領域データ項目へ前記フィード項目を実現することの一部として使用された情報の少なくとも一部を含む、システム。
【請求項１９】
第２の領域データ項目を記憶するように構成された第２の領域データ記憶モジュールと、
フィード項目を変更することなく、前記フィード項目に関連付けられた第２の情報を使用して前記第２の領域データ項目を修正することにより、前記第２の領域データ項目上へ前記フィード項目を実現するように構成された第２の実現モジュールであって、前記第２の領域データ項目は前記領域データ項目とは異なったように修正される、第２の実現モジュールと
をさらに含む請求項１８に記載のシステム。
【請求項２０】
前記フィード項目を変更することなく、前記領域データ項目を異なったように修正することにより、前記実現モジュールが前記領域データ項目上へ前記フィード項目を実現するよう、前記実現モジュールを変更することをさらに含む請求項１８に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、同期による双方向のデータ修正に関する。
【背景技術】
【０００２】
異なるコンピューター・システム間などの異なる端点間でデータを同期させる多種多様の同期システムが存在する。いくつかの場合には、同期されるデータは、少なくともいくつかの表現で、特定の制約（constraints）に関連付けられてもよいし、従ってもよい。そのような制約の単にいくつかの例においては、コンピューター・ファイル・システムは、ファイル名が特定の文字のみ使用すること、同じディレクトリー中のファイルが固有の名前を持つこと、ファイルがディレクトリー内に位置することなどを要求してもよい。
【０００３】
制約を表現し実行するために、ある場合には、同期システムは、それ自体が、すべての同期端点にわたって均一に特定の制約についての知識を持ち且つそのような制約を実行するように設計又は拡張されてもよい。他の場合には、同期システムに加えて又は同期システム「の上で」動作する追加の論理が、データが同期システムによって同期される場合に制約が一様に実行されるように、提供されてもよいし定義されてもよい。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特定の種類のデータ又は特定の端点に特有の又はそれらにのみ関係する制約を実行するために同期システムを拡張することは、同期システムが動作する方法を変更又は更新するのをより困難にすることを含めて、同期システムの様々な側面を複雑にし得る。例えば、ある場合には、データが新たな制約に従うことを新たな端点が要求する場合、同期端点の既存のシステムに新たな種類の端点を加えることは困難かもしれないし、あるいは不可能ですらあるかもしれない。さらに、すべての端点が同期されたデータに同じ制約を適用するように制約を一様に適用することは、いくつかの端点が追加の機能を提供することができ、又は同じデータについてのより複雑で潜在的により有用な表現で動作することができてもよい場合でさえ、同期されたデータがすべての端点によりサポートされるおそらくは忠実度の低い表現に制限されることを要求することを含む、潜在的な問題を引き起こし得る。
【課題を解決するための手段】
【０００５】
以下は、読み手に対して基本的な理解を提供するために本開示の単純化された概要を示す。この概要は本開示の広範囲に及ぶ概観でなく、本発明の重要又は重大な要素を特定したり、本発明の範囲を説明したりするものではない。その唯一の目的は、後に示されるより詳細な説明の前置きとして、本明細書に開示されたいくつかの概念を単純化された形式で示すことである。
【０００６】
同期されるデータを必ずしも修正することなく、同期端点上でデータの修正を行うことに関する様々な技法及び技術が本明細書に記述される。少なくともいくつかの実施例では、データが他の端点と同期される場合に当該データに対する類似の又は同一の修正を要求することなく、特定の端点上の制約が実行されるように、端点上のデータの表現が修正されてもよい。
【図面の簡単な説明】
【０００７】
【図１】データが同期され共有され得る例示的なシステムを示す図である。
【図２】領域データ上へ同期データを実現することを含む、端点上で同期データを組み込む場合に実行され得る各種動作を含む例示的な一般化された動作フローを示す図である。
【図３】以前に実現された領域データを使用して同期データを生成することを含む、他の端点への通信のために同期データを生成する場合に実行され得る各種動作を含む例示的な一般化された動作フローを示す図である。
【図４】同期関係に参加し、領域データ上に同期データを実現するための機能を含む端点の１つの実施例を示す例示的なシステムを示す図である。
【図５】本明細書に記載された様々な技術が実行され得る例示的なコンピューター装置を示す図である。
【発明を実施するための形態】
【０００８】
同期されるデータを必ずしも修正することなく端点上のデータに対する制約が実行されることを保証するようにデータが同期端点上で修正されるようなデータ同期の実行に向けられた、様々な技法及び技術が本明細書に記載される。すなわち、例えば少なくともいくつかの実施例では、データが同期され又は他の端点上でアクセスもしくは使用される場合に当該データに対する類似の又は同一の修正を必ずしも要求することなく、特定の端点に対する制約が実行されるように、端点上のデータの表現は修正されてもよい。
【０００９】
いくつかの実施例では、同期システムは、様々な種類の複数の計算装置間でのように複数の端点間でデータを通信する実行可能コードで構成されてもよい。単に１つの例において、同期システムは、異なるコンピューター間でコンピューターにより実現されるディレクトリー及びファイルを同期させてもよい。そのようなシステムを使用して、ユーザーは、ディレクトリー及び当該ディレクトリー内のすべてのファイル（及びおそらくはサブディレクトリー）を、複数のコンピューター間で同期されるように維持することができる。同期されたディレクトリー中のファイルをユーザーが変更する場合、修正又は変更されたファイルは、当該変更が１つ以上の他の計算装置に対してなされた計算装置から様々な手段によって同期されてもよいし転送されてもよい。ユーザーが新たなファイルを加える場合、当該新たなファイルは同様に通信されるなどしてもよい。同一の又は１つ以上の他の同期システムはまた、様々な他の種類のデータのうちの任意のものを同期させてもよい。
【００１０】
少なくともいくつかの実施例では、同期されるデータに関連付けられた１つ以上の制約があってもよい。そのような制約に従わないか又は支持しない場合、同期されたデータは、使用可能ではないかもしれないし、有効でないかもしれないし、制限をもって使用可能であるにすぎないかもしれない。例えば、例示的なディレクトリー及びファイルの同期の実施例を続けると、少なくともいくつかの端点においては、同期されたディレクトリー及びファイルが様々な特定の制約に従わなければならないことになるかもしれない。多くの可能な例の単に１つにおいては、ファイルは、ディレクトリーの「子」であることを要求されてもよいし、又はディレクトリーに関連付けられるように要求されてもよい。更に、ディレクトリーは、それ自体有効であることを要求されてもよく、削除されなくてもよいし、無効な名前を有していなくてもよい。別の例示的な制約は、特定のディレクトリーが同じ名前を備えた２つのファイルを含まないことを要求してもよい。さらに例示的な制約では、２つのディレクトリーが互いの子となること（それらは「サイクル」を形成するであろう）は許可されないかもしれない。すなわち、「ディレクトリーＢ」が「ディレクトリーＡ」の子である場合、「ディレクトリーＡ」は「ディレクトリーＢ」の子ではないかもしれない。さらに別の例において、ディレクトリー名とファイル名とは文字の特定の組から選ばれた文字だけを使用することを要求されてもよい。すなわち、おそらくは、「Ａ」、「Ｂ」、「ｃ」、「ｄ」、「１」、「５」などのような英数字文字がディレクトリー名又はファイル名で許可されてもよい一方、おそらくは「！」、「％」又は他のもののような特定の他の文字は許可されないかもしれない。他の制約もまた、任意の他の種類のデータと同様に、例示的なディレクトリー及びファイル同期の実行の両方のためにも可能である。
【００１１】
単一の計算装置上など、いくつかの環境では、少なくともいくつかの制約に従うことを保証することを比較的単純であると考えてもよい。しかし、データが複数の端点間で同期され、１つより多くの端点上で修正又は変更されてもよい場合を含む少なくともいくつかの他の環境では、すべての制約に従うことを保証することはより困難かもしれない。単に１つの例として、ディレクトリーが特定の名前を備えた１つのファイルを単に保持することを保証することは、例えば、ファイルシステムに関連付けられた実行可能コードによって単一のシステム上で実行されてもよい。そのような実行可能コードは、新たなファイルが同じディレクトリー内の既存ファイルと同じ名前を有している場合に新たなファイルを作成することを許可しなくてもよいし、既存ファイルと同じ名前を持つようにファイルが名前を変えられることを許可しなくてもよい。
【００１２】
しかし、ディレクトリー内のファイルが計算装置間で同期され、ファイルが１つより多くの計算装置において加えられ、修正され、削除されてもよい環境では、複製が存在しないことを要求するなどの条件は、少なくともいくつかの実施例では、特定の計算装置上でファイルシステムによって単独で実行されなくてもよい。複数のファイルが作成され得る場合の単に１つの例では、新たなファイルは１つの計算装置上で作成されてもよい。同時に、又はデータの同期の前の別の時に、同じ名前を備えた別のファイルは第２の計算装置上で作成されてもよい。この例において、２つの計算装置がそれらのデータを同期させるまで、複製のファイルが存在しないという条件は違反されないかもしれない。しかし、完全にデータを同期させるためには、第２の計算装置上で作成されたファイルが第１の計算装置上で作成されることを必要とするであろう。この動作を行なうことは、第１の計算装置上の同じディレクトリー内に同じ名前を備えた２つのファイルを作成することになり、このことは、複製のファイルが同じディレクトリー内で許可されないという制約に違反することになる。（第１の計算装置上で作成されたファイルが第２の計算装置と同期された場合、同じ問題が存在するだろう。）
制約に従うことが困難となり得る潜在的な問題の別の例は、ディレクトリー名又はファイル名の一部として許可される文字に関して生じ得る。例えば同じファイルシステムを使用する２つ以上の端点がディレクトリー名又はファイル名において許可された文字に関する同じ制約を有するということがあり得る。すなわち、例示の目的のために、２つの端点の両方が同じコンピューター・オペレーティング・システムを実行し同じファイルシステムを使用する記憶装置を有すると仮定する。１つのそのような端点上で作成されたファイルは、端点上で使用中のファイルシステムによって実行されるように、有効なファイル名を持っていてもよい。その後、そのようなファイルがディレクトリー及びファイルの命名について同じ制約に従う別の端点と同期される場合、一例としてファイル名は引き続き有効かもしれないがこれに限定されるものではない。しかし、例えば有効なファイル名についての異なる規則又は制約を有する他のあるオペレーティング・システム又はファイルシステムを使用する端点又は計算装置と同期される場合、ファイル名は有効ではないかもしれない。したがって、例えば、「Ｆｉｌｅ！．ｔｘｔ」のようなファイル名は１つの端点上で有効であり得るが、別の端点上で有効ではないかもしれない。ある場合には、そのようなファイルが１つの端点上で問題なく作成されてもよいが、同期されたデータに関連付けられた少なくともいくつかの制約に違反することなく、別の例示的な端点と同期されなくてもよい。
【００１３】
少なくともいくつかの場合に、制約が同期しているデータの一部として違反されてもよい場合、様々な実行又は解決手段が、例えば、制約が違反されないか又は違反された制約が解決されることを保証することにより潜在的な問題を解決することを試みるのに使用され得る。
【００１４】
例えば、いくつかの実施例では、制約が破られたと決定すること、そして、おそらくは、自動的に又はユーザーもしくは他のある実行可能コードのような他のエンティティの関与により、破られた制約を解決することは可能かもしれない。以前に紹介されたディレクトリー及びファイル同期の例を継続すると、いくつかの実施例においては、特定の端点上で有効でない文字を使用するディレクトリー又はファイルを自動的に名前変更することは可能かもしれない。例えば、第１の端点上で有効なファイル名を備えた第１の端点上で作成されるファイルが、その後当該ファイル名が有効でない第２の端点と同期される場合、当該ファイル名が第２の端点上で有効な文字を使用するように、ある場合には自動的に、ファイル名は第２の端点上で変更されてもよいが、これに限定されるものではない。ファイルが２つの端点間の同期中で維持されれば、ファイルの名前への変更が第１の端点に同期される場合、ファイル名もまた第１の端点上で同じ新たなファイル名へと変更されてもよい。その結果、ファイル名は両方の端点上で同一となるかもしれないし、両方の端点上で有効となるかもしれない。しかし、そのような場合、ファイル名は、もはや第１の端点上で有効な文字を含まないものに制限され、したがって、第２の端点にのみ関連付けられる制約がない場合のように記述的でないかもしれない。
【００１５】
更に、ある場合には、異なる端点は、データのある部分集合（サブセット、subset）でさえないものが端点の少なくとも１つに関連付けられた制約を破ることなく両方の端点上で表すことができるように、相互に排他的な制約を有していてもよい。例えばヒンディー語に使用される文字を使用する名前は、中国語や英語などの形式において使用される文字を使用する名前といかなる文字も共有しないかもしれない。
【００１６】
いくつかの例において、制約の違反は、ある方法でフラグが立てられるか又は注目される、同期された項目に帰着してもよい。そのようなフラグを立てられるか又は注目されるデータは、おそらくは同期されたデータのユーザー又は他のあるエンティティによって評価されてもよいし、その後、制約の違反は、当該ユーザー又はエンティティの一部に対する行為（action）を通じてなされることを含むある手段によって解決されてもよい。ディレクトリー及びファイル同期の同じ場合を使用する別の特定の限定されない例として、ファイルの同期が同じディレクトリー中の同じ名前を持ったファイル作成に帰着する場合、２つのファイルのうちの１つは、特定のディレクトリーなどの「保持領域」に置かれてもよく、又は、どうにかして、制約が違反されないように他のファイルと区別されてもよい。その後、この行為は、同期システムの「矛盾（conflict、衝突）」、あるいは同期システムの他の同様の要素により注目されてもよく、おそらくは当該同期されたファイルのユーザーは、そのような矛盾が存在することをある手段によって通知されてもよい。例えば、ユーザーは、ダイアログ・ボックスを見て、「矛盾電子メール」を受け取るなどしてもよい。その後、ユーザーは、２つのファイルのうち１つの名前を変更し、当該ファイルのうちの１つを異なるディレクトリーに移動させ、当該ファイルのうちの１つを削除するなどの１つ以上の行為を通じて矛盾を解決することができるかもしれない。ユーザーの変更−名前を変更されたファイル、移動されたファイル、削除されたファイルなど−がその後第１の端点に同期される場合、両方の端点は同じディレクトリー内の同じ名前を備えたファイルの同じ組を持つなどしてもよく、関連する制約は違反されない。
【００１７】
これまでに述べたもののような技術は制約を破らずにデータを同期させることを可能にするが、これら技術はさらにそれら自身の制限を有し得る。潜在的に問題となる１つの制限は、制約に従うことを保証するためにデータを変更することが、すべての端点にわたって共通の又はすべての端点上で利用可能な機能を、同期されたデータが利用又は使用することができるに過ぎない例につながるということかもしれない。例えば、１つ以上の端点が様々の文字を使用するディレクトリー名又はファイル名をたとえサポートしても、ディレクトリー又はファイルがより制限された文字の組をサポートするにすぎない別の端点と同期される場合、それらの端点はそれらの文字の多くを備えたディレクトリー又はファイルを使用することができなくなる。別の例において、ファイルが単一のファイルシステムに位置する場合には複製のファイルが存在しないという条件は一般的かもしれないが、そのような条件は同じディレクトリー及びファイルデータの他の表現においては適用可能ではないかもしれない。そのような場合の１つの特定の例として、ディレクトリー構造が例えばウェブ・ページを使用する「ウェブ画像（web projection）」で例えばＨＴＭＬとして表わされ、ユーザーが、ウェブ・ページ上でリンクをクリックすることによりファイルをダウンロードすることができる場合、この表現では「ファイル」がＨＴＭＬとリンクからなるにすぎないので二重の名前を備えたファイルは許可されるかもしれず、ＨＴＭＬ及びリンクがある複製を含むことができない理由は存在しないかもしれない。
【００１８】
データを同期させる端点又は同期されるデータを改善し、発展させ、一般に変更する場合、これらの種類の制限はさらに問題となるかもしれない。これらのような制限は、同期システムが改善もしくは変更され得る方法を減らすことになり得るし、データ同期に参加することができる端点を減らすことになり得る。例えば、データを同期させる最初の端点は同一又は類似の制約を有し得る−おそらくは、システムの第１の実施例はオペレーティング・システムの特定のバージョンを実行する計算装置上で動作するにすぎない−が、後に、様々な他のオペレーティング・システム又は様々な種類の計算装置の１つ以上の上で動作するよう、同期システムを拡張することは望ましいかもしれない。例えば、「デスクトップ」あるいは「ラップトップ」計算装置上で実行されるだけではなく、携帯電話などの、おそらくはより少ない機能を相応してサポートすることができる、おそらくはより少ない計算能力を備えた計算装置がデータ同期に参加することを可能にすることは望ましいかもしれない。しかし、そのような端点の追加によって要求される新たな制約に従うことは、同期され得るデータが範囲、機能などにおいてより制限されることを要求し得る。（あるいは、端点間で同期されたデータの完全な又はオリジナルの大きさを解釈し同期させるのに必要な機能を新たな端点が含むまで、同期システムに新たな追加の端点を含めることは可能ではないかもしれない。）
更に、同期されたデータの忠実度あるいは能力をおそらくは低減することに加えて、そのような変更はまた、新たな条件を「同時」に又は他の端点と同期する前にサポートするために、すべての参加する端点が修正されることを必要としてもよい。このことは、例えば、より古い端点が、データをサポートしたり使用したりすることができない新たな端点に対してデータを同期させることを試みないように、要求されてもよい。いくつかの同期システムでは、そのような方法で端点をすべて変更するか更新することは実際的でないかもしれないし可能ではないかもしれず、したがって、広く有用な更新は、ある場合には、行われないかもしれず、又は、そうでなければ望まれるであろう頻度より少ない頻度で行われるかもしれない。
【００１９】
いくつかの実施例では、「領域データ（ドメインデータ、domain data）」上で「同期データ」を「実現する（realizing）」過程によりこれらの問題のうちの少なくともいくつかに対処することは可能かもしれない。本明細書に記述されるように、一般に、領域データ上に同期データを実現することは、特定の端点上で使用され得るデータの表現の上へ、例えば端点間で同期されるデータをマッピングする過程であってもよい。その後、「同期データ」は、端点間で通信されるデータの少なくとも一部を含む一方、「領域データ」は、同期されるデータが端点上で提示されるか又は端点上に存在するように、同期されたデータの表現を含む。
【００２０】
単に１つの例として、端点間でＸＭＬ文書を通信することによりディレクトリー及びファイルデータを同期させる実施例を考える。少なくとも１つの例において、そのようなＸＭＬ文書は同期データを含むと考えられるかもしれない。限定的でない１つの例において、おそらくは、ディレクトリー及びファイルのメタデータ（ディレクトリー又はファイルの名前、日付、及びディレクトリー又はファイルに関連付けられた時間など）は、ＸＭＬ文書中に表されてもよい。ある場合には、実際のファイルデータがＸＭＬ文書の内部から参照されてもよいが、ＸＭＬ文書自体の一部として転送されなくてもよい。他の場合には、ファイルデータはＸＭＬ文書に含まれていてもよい。
【００２１】
そのような例において、ＸＭＬ文書及び任意の参照されるファイル情報は、同期データを含んでもよく、領域データを含む、実際のディレクトリー及びファイルなどの、実際のファイルシステム・オブジェクト又はファイルシステム要素上へ実現されてもよい。同期されたＸＭＬ文書を実現する過程は、ファイルシステム中の実際のディレクトリー及びファイルを修正すること（作成すること、更新すること及び削除することを含む）により部分的に実行されてもよい。すなわち、少なくともいくつかの実施例では、実行可能コードは、同期されたＸＭＬ文書のコンテンツを解釈し、１つ以上のディレクトリー及びファイル上で作成し、更新し、削除し、そうでなければ作用してもよい。（ここに使用されるように、一般に「領域データを修正すること」のような句は、既存の領域データを修正することを含み、新たな領域データを作成すること及び既存の領域データを削除することを含む、領域データに関してなされる他の行為をも含むように解釈されるべきであることに注目されたい。
【００２２】
そのような例、並びに、ディレクトリー及びファイルを同期させないか又は他の方法で異なるものを含む、他の多くの実施例及び例においては、他の問題と同様に、以前に紹介された問題のうちの少なくともいくつかも、同期データが領域データ上へ実現される方法によって少なくとも部分的に対処されてもよい。単に１つの例として、（同期データ中で表わされるように）ディレクトリー又はファイル自体を修正するのではなく、ディレクトリー又はファイル名用のサポートされる文字の違いから発生する非互換性を解決するために、同期データは、１つのファイルシステムと共に使用される場合に特定の名前を持ったディレクトリー又はファイル上へ実現されてもよいし、別のファイルシステムと共に使用される場合に異なる名前を持ったディレクトリー又はファイル上へ実現されてもよい。すなわち、単に１つの限定的でない例において、同期データに含まれたディレクトリー又はファイル名は、ディレクトリー又はファイル上へ実現され、ディレクトリー名又はファイル名が特定のファイルシステムに有効な場合、領域データの一部として使用され得る。しかし、同期データに含まれたディレクトリー名又はファイル名が特定の端点に有効でない場合、ディレクトリー名又はファイル名は、その特定の端点に有効な異なる名前を持ったディレクトリー又はファイル上へ実現され得る。
【００２３】
さらに、少なくともいくつかの実施例において、領域データが変化し−すなわち、前の例で、実際のディレクトリー又はファイルが変化し−、当該変化が他の端点と同期されることになっている場合、領域データは、少なくともいくつかの場合に領域データ上へ同期データを実現することの一部としてなされたデータへの変更が他の端点へ転送されず、同期されず、見えないような方法で同期データ上にマッピングされてもよい。例えば、領域データ上へ同期データを実現する過程により、ファイルが関連する同期データ中で特定される名前とは異なる名前を有するものと仮定する。そのファイルへの変更−例えばファイルのコンテンツに対する変更−は、他の端点と同期される必要があってもよい。しかし、ファイルの名前の変更−すなわち実現過程中の場合に行なわれた変更−は、更新されたファイルデータと共に同期されないかもしれない。代わりに、当該ファイルについて同期データを生成することの一部として、ファイルの名前が実現過程のために異なることが決定されてもよい。そのような例では、例えば、これに制限されないが、同期データ中で特定されたもとの名は、特定の端点上でディスク上（あるいはメモリ中）のファイルの名前の代わりに生成された同期データの一部として使用されてもよい。同期データ上へ領域データをマッピングするための様々な同様の又は他の機構も実行することができ、本明細書においてより詳細に別記される。
【００２４】
一般に、別の言い方をすれば、同期システムを実施する場合に生じ得るある困難は、端点間で同期されたデータが異なる端点上の同じ状態に「収束する（converges）」ことを保証することであるかもしれない。すなわち、特定の端点上でなされた変更は１つ以上の端点上のデータがある期間の間異なっていることに帰着し得るが、そのような変更は、結局、端点がすべて同じ変更を有し同じ状態に収束するような方法で、同期する端点間で通信されるべきである。
【００２５】
１つ以上の端点に存在する制約は共通の状態に収束することをより困難にし得る。例えば、端点が当該端点に既に存在するファイルと同じ名前を持っている別の端点からのファイルを同期させ得る以前に紹介された例を思い起こすことにする。同じ名前を備えたファイルが同じ位置に存在することを許可しないファイルシステムと共に使用されれば、端点はファイルのうちの１つの名前を変更することにより潜在的な問題を解決することを試みるかもしれない。その後、名前を変更されたファイルは、他の端点と同期されてもよい。しかしながら、１つより多くの端点が同じファイルの名前を独立して変更するとすれば、ファイルの名前への変更が複数の端点上で繰り返し行なわれる状況が発生し、当該変更は発散して、共通の状態に収束する代わりに、共通の状態に達しなくなるかもしれない。
【００２６】
いくつかの実施例では、本明細書に記述されるように、そのような問題は、領域データから同期データを分離し、次に領域データ上へ同期データを実現することにより少なくとも部分的に対処されてもよい。そのような実施例では、同期データは、領域データのために定義又は要求された同じ制約を支持することを要求されなくてもよい。このことは、同期データがすべての端点上で共通の状態に収束することをより容易にし得る。その後、領域データ上へ同期データを実現する過程は、領域データによって要求される制約を適用することの一部として、及び更新された同期データを使用して領域データに対する少なくともいくつかの変更を通信することの一部として使用されてもよい。
【００２７】
最後に、少なくともいくつかの実施例では、本明細書において以前に紹介され記述されたものを含む、少なくともいくつかの問題の存在が、同期技術が異なる種類の様々のデータに作用するように設計されるいう点で、比較的より「包括的」であるように設計されている同期技術とより共通し得るということを理解することは有用かもしれない。すなわち、ある場合には、特定の種類のデータのみを同期させるように動作する同期システムにおいて特定の種類のデータに関連付けられた制約のための特定の処理を含むことができてもよい。しかし、様々のデータ型を同期させ得る包括的な同期技術を備えたそのような特定の処理を含むことはより難しく又はより望ましくないことかもしれない。その結果、同期データ及び領域データの間のマッピングを含む本明細書に記述されたもののような技術は、包括的な同期技術と共に使用される場合に特に有用な利点を備えてもよい。
【００２８】
図１に移ると、データが同期され共有され得る例示的なシステム１００が示されている。例示的なシステム１００は、例示的な通信手段１１５とともに、端点Ａ１１０、端点Ｂ１２０及び端点Ｃ１３０を含んでいる。図１のこの説明は他の図に関してなされてもよい。しかし、図１に関して記載された要素が他の図に関して記載された要素と共に使用されることに限定されるようには意図されないことが理解されよう。さらに、図１の例示的な図は特定の要素を示すが、いくつかの実施例では、これらの要素のすべてが存在するとは限らず、いくつかの実施例では、追加の要素が存在してもよい。
【００２９】
一般に、共有又は同期の関係は２つ以上の端点間に存在し得る。特定の共有関係は、一般に１つ以上のデータ項目を含む１組のデータ、又は単に項目に関係してもよい。少なくともいくつかの種類の変更が項目に対してなされる場合、変更された項目又は単に変更それ自体は、同期関係において他の端点と同期されてもよい。
【００３０】
データの同期が様々な方法で様々な技法及び技術を使用して実施され得る一方、少なくともいくつかの実施例では、データの同期は、ＲＳＳ（Really Simple Syndication又はRich Site Summary）又はＡｔｏｍのようなおそらくは広く受け入れられたプロトコルを使用して提供されるデータのフィードへの特定のデータの追加によって少なくとも部分的に実行されてもよい。例えば、互いと通信する２つの端点だけから成る接続形態を備えた例示的な実施例では、少なくとも１つの例における端点Ａ１１０などの発行元（publisher）は、ある種類の情報を含んでいるＲＳＳフィード又はＡｔｏｍフィードを発行してもよい。おそらくは１つの例において、当該フィードは、ディレクトリー及びファイルを表わすデータを含んでもよい。さらに別の例において、フィードは他のデータを表し、含み、又は参照してもよい。
【００３１】
１つの例における端点Ｃ１３０のような加入者は、第１の端点によって提供されるフィードを予約（subscribe）し、例えば、第１の端点が新たなファイルを加えたり、既存ファイルを修正したりする場合、通知されてもよい。さらに、予約している端点は、もとの発行元のフィードの中で提供されるのと同じデータ、及びさらに加入者によってなされた変更又は追加と共に、それ自身のフィードを発行してもよい。その後、もとの発行元はこの第２のフィードを予約してもよい。これらの相互の予約を通じて、一方の端点によって行なわれた変更は、両方の端点によって維持されたデータに反映されていてもよい。更に、複数の端点が参加して、別の端点によって提供されたフィードの少なくとも１つを予約し、及び同様に自身のフィードを発行することにより、同じデータを共有してもよい。
【００３２】
少なくともいくつかの実施例においては、フィード中の同期情報、及びデータを交換する場合に少なくとも特定の端点が従うべき過程は、シンプル・シェアリング・エクステンション（Simple Sharing Extensions、ＳＳＥ）などのプロトコルに関連付けられたものと同一であるかそれに類似してもよい。ＳＳＥは、フィードを使用してデータを転送又は同期させる場合に使用され得る情報に拡張が関係する場合に、ＲＳＳ及びＡｔｏｍのようなフィード・プロトコル又は他のフィードプロトコルもしくはドキュメントに対する拡張を定義するもの、又はそれらとともに使用すべき追加のデータとして、一般に理解され得る。ある場合には、ＲＳＳ、Ａｔｏｍ、又はＳＳＥ情報を含んでいる他の種類のフィードが、「ＳＳＥフィード」と呼ばれてもよい。
【００３３】
ＳＳＥなどのプロトコル又は別の同期プロトコルはまた、フィード中の同期情報が特定の組織（organization）に一致し、その結果、同期関係にある他の端点によって読まれ、使用されてもよいように、端点が従うべき手続きを定義してもよい。単に１つの例として、ＳＳＥは、ＳＳＥフィードにおいて項目について存在し得る特定の同期情報を指定する。新たな項目が作成される場合、端点は、適切なＳＳＥ情報が新たな項目に関連付けられ、ＳＳＥ情報がフィード中の正確な位置に提供され、正確な識別名を使用することなどを保証する責務を負ってもよい。ＳＳＥのようなプロトコルはまた、例えば端点が既存の項目を修正し、既存の項目を削除し、他の端点からの変化を組み込むなどの場合に特定のデータが含められることを要求する他の手続きを定義してもよい。
【００３４】
両方の端点が発行及び予約を行う共有関係において、各端点は項目に「ローカルの」変更を加えてもよく、「ローカルの」変更は、ユーザー、自動化された過程などのエンティティによってなされる変更を含む、ある理由で特定の端点上で行なわれる変更であり得る。したがって、その後、共有されている項目は、両方の端点上で同じにしておかれ、ローカルの変更はフィードの一部として公表されてもよい。別の端点は同じ項目についての自身の組を維持し、フィードを予約するので、自身が維持する項目の組を備えたフィードを使用して公表された変更を「マージ（合併、merge）」してもよい。他の端点はまた、それ自身のローカルの変更を行ってもよく、その後、それは公表された後に第１の端点によってマージされてもよいし、組み込まれてもよい。
【００３５】
１つの特定の例として、端点Ａ１１０（又は端点Ｂ１２０、もしくは図示されないものを含む他のある端点）は、例えば端点Ｃ１３０との共有又は同期の関係に参加してもよい。端点Ａは、例えば、項目データとフィードの同期データを含んでいるＡｔｏｍフィードを利用可能にしてもよい。端点Ｃはこのフィードにアクセスし、当該フィード内の変更を項目についての自身の格納部に組み込むか又はマージし、次に自身のフィードを利用可能にしてもよい。その後、端点Ａは、端点Ｃによって提供されるフィードを予約し、端点Ｃによって行なわれた変更をマージしてもよい。
【００３６】
いくつかの実施例では、共有又は同期の関係にある端点は、同期関係の中で使用されるフィードをそれ自身が生成してもよいし更新してもよい。例えば、ユーザーは、端点Ａ１１０と関連付けられるアプリケーションを使用して、おそらくは端点Ｃ１３０と共に端点Ａによって共有され同期されているあるデータを修正してもよい。ユーザーによって行なわれた変更を端点Ｃにとって利用可能とするために、端点Ａは、変更されたフィード同期情報と同様に変更された項目情報を備えたフィードを更新する必要があるかもしれない。ＳＳＥを使用する実施例では、フィード中のフィード同期情報は、例えば、とりわけ、新たなバージョン番号を備えた特定の「バージョン」属性を更新したり、新たなＸＭＬ要素の作成により項目に関連付けられた更新履歴を修正したりすることなどにより、フィードを具体化するＸＭＬ文書を修正することによって、更新されてもよい。
【００３７】
本明細書において使用されるように、同期データは、端点間で交換され、転送され又は通信されるデータを一般に含んてもよい。１つの特定の制限的でない例において、ＳＳＥのようなプロトコルが端点間で情報を同期させるために使用される場合、同期データはＳＳＥ情報を含んでいるフィードを含んてもよい。そのようなフィードはそれ自体が１つ以上のフィード項目（あるいはフィードデータ項目）を含んでもよく、それはある場合には「同期データ項目」と呼ばれてもよい。他の実施例では、同期データ項目（及び一般に同期データ）はＳＳＥを使用しないものを含む様々な他の方法で表わされてもよい。
【００３８】
いくつかの実施例では、すべての端点がフィードを発行する必要はなく、すべての端点が対応するフィードを予約する必要はない。例えば、いくつかの端点は、発行のみ行い、データのある特定の組と関係するフィードを予約しなくてもよい。そのような端点は、その端点によって行われたローカルの変更に関する情報を公表してもよいが、他の端点によって行なわれた変更を組み込まなくてもよい。行為を発行及び予約するいかなる他の構成も、特定のシナリオや状況の条件に依存して考慮されてもよいし実行されてもよい。また、いくつかの実施例では、特定の２つの端点の組が１組より多くのデータを共有する場合、当該特定の２つの端点の組は１つより多くの共有関係を有しているかもしれないことに留意されたい。他の実施例では、共有関係は、たとえそれが単一の組又は種類より多くのデータを含んでいても、２つの端点間で共有されるデータのすべてを含むように定義されてもよい。更に、いくつかの実施例では、共有関係は２つの端点間に存在しているかもしれないが、項目の特定の組が任意の数の端点と共有され同期されることも可能であり得る。これは、端点の様々な配置や接続形態を通じて達成され得る。単に１つの例として、１組のいくつかの端点は特定の端点と同期してもよく、その特定の端点は、次に端点の元の組と情報を直接に同期しない、１つ以上の追加の端点と同期してもよい。そのような場合あるいは他の場合のうちの少なくともいくつかにおいては、情報は端点を同期させる「メッシュ」の全体にわたって同期されてもよい。
【００３９】
端点Ａ１１０及び端点Ｃ１３０はシステム１００において例示的な通信手段１１５により接続されるものとして示される。そのような例示的な通信手段は、コンパクトディスク（ＣＤ）やフラッシュ・メモリ・ドライブのような、物理媒体の転送を含む、任意の種類のネットワーク又は他の種類の転送を含む、データが送信され得る任意の手段を含むと解釈されるべきである。端点はまた、例えば端点Ａ１１０と端点Ｂ１２０との間の接続により、図示されるように、直接的に接続されてもよい。
【００４０】
端点間で共有され同期される情報は様々な方法及び位置で格納されてもよい。少なくとも１つの実施例では、端点は、同じ計算装置又は遠隔的に１つ以上の他の計算装置上において、同期されたデータをローカルに格納してもよい。そのような記憶装置は、ある場合には、１つ以上のディスクドライブ又は磁気もしくは他の記憶デバイス、又はデータが格納され得る任意の他の機構によって具体化されてもよい。同期されたデータのうちのいくつかあるいはすべてが遠隔にアクセスされる場合、データは、例えば、ネットワーク又は他の通信手段を使用してアクセスされてもよい。
【００４１】
いくつかの実施例では、端点は、コンピューターにより実行されるデータベースあるいは他の記憶機構などのデータ格納部を使用して共有されるデータを格納してもよいし、フィードを動的に又は特定の時間に生成してもよい。同一又は他の実施例では、端点は、おそらくはＲＳＳフィードの場合のＸＭＬファイルを格納することなどによって、ファイルシステムにファイルを格納することによりフィード自体を格納してもよい。
【００４２】
このシステムに示される各端点は、デスクトップコンピューター、サーバーコンピューター、ラップトップ・コンピューター、ワークステーション・コンピューター、移動電話又は携帯電話、接続されている携帯情報端末（ＰＤＡ）などを含む、任意の数の汎用のコンピューター又は専用のコンピューターを表し得る。少なくともいくつかの実施例では、端点は、図５に関して以下に議論される例示的なコンピューター環境を含むコンピューター環境によって実施されてもよい。
【００４３】
図２に移ると、領域データ上へ同期データを実現することを含む、端点上で同期データを組み込む場合に実行され得る各種動作を含む例示的な一般化された動作フロー２００が示される。図２の以下の説明は他の図に関してなされてもよい。しかし、図２に関して説明される動作フローがこれらの他の図に関して記述された要素と共に使用されることに限定されるようには意図されないことが理解されよう。さらに、図２の例示的な動作フローが特定の実行の順序を示す一方、１つ以上の代替的な実施例においては、動作は異なった順序でなされてもよい。更に、例示的な動作フローが複数のステップを含む一方、いくつかの実施例ではこれらの動作のうちの少なくともいくつかが同時に組み合わせられてもよいし実行されてもよく、同一又は他の実施例ではいくつかのステップは実行されなくてもよいことは認識されるべきである。
【００４４】
動作２１０の例示的な実施例では、同期データは、様々な手段を通じて、別の端点を含むある位置から得られてもよい。例えば、ＳＳＥを使用する実施例などの、同期データの１つ以上のフィードを使用する実施例では、動作２１０の１つの実施例の少なくとも一部は、フィード同期（あるいはフィード・シンク（sync））データ要素と同様に項目情報も含んでいるフィード文書の検索を含んでもよい。そのようなフィード文書は、例えば、ＨＴＴＰ  ＧＥＴリクエストを実行することにより、又は、他のあるネットワークもしくは他のデータ検索動作を介して、例示的な動作フロー２００の少なくともいくつかの動作を実行する端点によって検索されてもよい。同一又は他の実施例では、同期データは端点に配信又は提供されてもよい。いくつかの実施例では、同期データは、入来するフィード４２２又は入来するフィードＮ４２４のようなフィードによって表されてもよく、これらフィードの両方は図４に関して以下に述べられる。
【００４５】
動作２１５の少なくとも１つの実施例では、動作２１０の実行により得られ得るデータを含む、得られた同期データは、端点によって維持される同期データに組み込まれてもよいし、それとマージされてもよい。少なくともいくつかの実施例では、得られた外部又は異質の（foreign）同期データとローカルの同期データとのマージは、１つ以上の同期技術を使用して行なわれてもよい。そのような技術は、いくつかの実施例において、少なくともいくつかの潜在的な同期の問題を特定してもよい。例えば、複数の端点が特定の項目を独立して修正した場合に、識別され得る１つの種類の問題が生じるかもしれず、例えば、別の端点上の変更が保存される場合に１つの端点上でなされた変更が上書きされたり失われたりしないように、一層の調査又は処理が必要かもしれない。マージ動作は、いくつかの実施例において、同期モジュール４２０と同一又は類似の同期モジュールにより行われるか又はこれに関連付けられ、入来する同期データを同期データ記憶モジュール４３０を使用して既に格納されるか又は利用可能とされている同期データと合体させるか又はマージさせることに帰着してもよく、それらの両方は図４に関して以下に述べられる。
【００４６】
例えば、ＳＳＥを使用する実施例では、動作２１５の少なくとも１つの実施例は、フィードのマージのためにＳＳＥ技術を使用して、入来するフィードをローカルのフィードとマージさせることを含んでもよい。例えば、いくつかの例示的な実施例では、動作２１０の一部として得られた同期データは、「異質の（外部の、foreign）フィード」かもしれず、ローカルに行なわれた項目の更新は、同期データ記憶モジュール４３０のようなものを使用して維持されるフィードのローカルの格納部に作用してもよい、といった具合である。例えば、少なくとも１つの実施例では、ローカルに維持されたフィード文書が入来する又は外部のフィード中に表され又は具体化された変更のうちの少なくともいくつかを組み込むように、ローカルに維持されたフィード文書は、動作２１５の実行の間に更新されてもよいが、これに制限されない。
【００４７】
動作２１５は、いくつかの実施例において、同期データをマージし、フィード中のフィード同期データを使用して決定することができる矛盾の識別のような少なくともいくつかの追加の処理を行なってもよいが、少なくともいくつかの実施例では、特定の他の動作は動作２１５の一部として行なわれなくてもよい。動作２１５の少なくともいくつかの実施例において行なわれなくてもよい１つの動作は、領域データ上へ同期データを実現する過程を含んでもよく、それは、そのような実施例のうちの少なくともいくつかにおいては動作２３０を含む例示的な動作フロー２００中の他の動作によって行なわれてもよい。
【００４８】
動作２１５の実施例が完了した後、別の端点から得られた同期データに具体化された変更又は修正は、ローカルの同期データに組み入れられ反映されたと考えられてもよい。すなわち、例えば、別の端点上で行われて動作２１０において得られた同期データ中で通信された項目に対する変更は、今度は対応するローカルの同期データに組み入れられてもよい。単に１つの特定の例として、動作２１０において得られた同期データがディレクトリー及びファイルを表し、既存ファイルへの変更が得られた同期データ中に表された場合、動作２１５の実行は、同期データのローカルの表現に当該変更を組み入れてもよい。同様に、データをマージするのに使用される同期プロトコル又は同期技術によって提供される他の機能が用いられてもよい。例えば、マージ処理が、複数の端点上で項目がいつ独立して修正されたかを決定することができる場合（少なくともいくつかの場合にＳＳＥが有する能力）、そのような項目は識別されてもよいし特徴づけられてもよい。例えば、ＳＳＥを使用する実施例では、そのような項目はＳＳＥ矛盾（SSE conflict）として識別されてもよい。
【００４９】
しかしながら、ローカルの同期データが更新されている一方で、そのようなデータは、ユーザー、プロセス又は他のエンティティが通常使用する領域データを含む対応する領域データを更新するためにまだ実現されておらず、マッピングされておらず、そうでなければ使用されていないかもしれない。ディレクトリー及びファイル情報を同期する例において、ディレクトリー及びファイル情報のローカルの同期データ表現は更新されてもよい（その結果既存ファイルに対する変更は、例えばローカルの同期データ中で表される）が、それらの変更は、例えば、ディレクトリー及びファイルなどの実ファイルシステム・オブジェクト又はファイルシステム要素の領域データへはまだ実現されていなくてもよい。
【００５０】
したがって、動作２２０の少なくとも１つの実施例では、いずれかの同期データ項目が領域データ項目上へ同期データ項目を実現することの一部として処理するために残されているか否かが決定されてもよい。項目が処理するために残されている場合、例示的な動作フロー２００は、以下に述べられる動作２２５に進んでもよい。処理するための項目がこれ以上ない場合、例示的な動作フローは終了してもよい。少なくともいくつかの実施例では、動作２２０の第１の実行中、ローカルの同期データ中に表されたデータ項目のすべてがまだ処理されていなくてもよい。例えば、ＳＳＥを使用する実施例において、例えば１０個のデータ項目がローカルの同期データ中に表される場合、動作２２０が最初に実行される場合に１０個の項目が処理するために残されていてもよい。他の実施例では、ローカルの同期データから選ばれた特定の項目だけが、様々なフィルタ又は他の手段の使用を通じて処理のために識別されてもよい。いくつかの実施例では、動作２２０の後続の反復中、以前に処理された項目はもはや処理を要しないと考えられてもよい。同一又は他の実施例では、既に処理された項目は、追加の処理を要すると決定されてもよい−すなわち、例えば、項目は、ある場合には二度以上処理されてもよい。同期データ項目は、領域データ項目上に同一又は他の同期データ項目を実現することの結果として又はその一部としてを含む様々な理由により、追加の処理を要すると決定されてもよい。
【００５１】
動作２２５の少なくとも１つの例示的な実施例では、ローカルの同期データ中の１つ以上の項目が、動作２３０の後続の実行においてさらに処理される項目として識別されてもよい。いくつかの実施例では、単一の項目のみが一度に識別されてもよい。単一の領域データ項目上へ複数の同期データ項目を実現するものを含む他の実施例では、動作２２５が実行される場合、１つより多くの同期データ項目が識別されてもよい。
【００５２】
単に１つの例として、ディレクトリー及びファイル情報を同期させる１つの実施例においては、動作２２５が実行されるごとに、ローカルの同期データ中の新たなディレクトリー又はファイルが識別されてもよい。同一又は他のディレクトリー及びファイルの実施例では、複数の項目が動作２２５のいくつかの実行において識別されてもよい。例えば、ディレクトリーが識別される場合、動作２２５の１つの実施例はまた、ディレクトリーに位置するファイルを識別するか又は識別することを試みてもよい。これにより、それらの親ディレクトリーもまた領域データ上へ実現される場合、例えば、ファイルは、領域データ上へ実現されることができるかもしれない。
【００５３】
最後に、動作２３０の１つ以上の実施例では、動作２２５において識別された同期データ項目は、１つ以上の領域データ項目上へ実現されてもよい。一般に、１つ以上の同期データ項目が、同期データ項目に含まれた少なくともある情報を使用して関連する領域データ項目を作成又は修正することにより、１つ以上の領域データ項目上へ実現されてもよい。動作２３０の実施例及び領域データ項目が作成又は修正される特定の方法、又は同期データ項目に関連付けられたデータがどのように使用されるか、もしくは同期データ項目に関連付けられたどのようなデータが使用されるかは、一般に、少なくとも部分的には、同期データ項目及び領域データ項目の特性に依存してもよい。更に、少なくともいくつかの実施例では、動作２３０は、両方とも図４に関して以下に述べられる例示的な実現モジュール４４０又は実現モジュール４４２などの実現モジュールによって少なくとも部分的に実行されてもよい。
【００５４】
単に１つの例として、同期データ項目がファイルを表す場合を考慮すると、同期データ項目は、ファイルのメタデータについて記述し且つＸＭＬフィード文書（ＳＳＥ情報を含んでもよい）に位置するテキストを含み、当該ファイルのコンテンツはまた、（おそらくはコンテンツがテキストである場合に）ＸＭＬ文書に位置し又は２進データとして表され、フィード文書中のデータによって参照される他のある位置に配置される。そのような場合、少なくともいくつかの実施例において、この同期データ項目に相当する領域データ項目はファイルシステム中の実ファイルであってもよい。そのような例において、領域データ項目上へ同期データ項目を実現することは、おそらくはファイルシステム又はオペレーティング・システムによって提供されるアプリケーション・プログラミング・インターフェース（ＡＰＩ）を使用して、同期データ項目に提供されるか又は同期データ項目により参照されるファイル・メタデータ及びコンテンツを有する新たなファイルを作成することを含み得る。そのようなファイルが既に存在する場合、同期データ項目を実現することは、ファイルが同期データ項目と一致するよう、ファイル・メタデータ又はファイル・コンテンツを含むファイルに関連付けられた情報を更新することを含んでもよい。他の種類のデータ、他の同期データ表現、他の領域データ項目などについては、領域データ項目上へ同期データ項目を実現することは、異なったように進んてもよい。
【００５５】
そのような実現ステップは、少なくともいくつかの場合において十分かもしれないが、他の環境では、領域データ項目上へ同期データ項目を実現するために追加の処理が必要かもしれない。他のそのような場合は、同期データに関連付けられた機能、サポート又は表現と領域データに関連付けられた機能、サポート又は表現との間に差異がある、以前に紹介され議論された少なくともいくつかの例における環境を含む環境を含んでいるかもしれない。例えば、そのような差の単に１つの例は、やはり以前に紹介されたように、同期データ中で許可された有効な文字の組が対応する領域データ中で許可された有効な文字の組とは異なるか又はそれより大きい場合であってもよい。
【００５６】
そのような差が存在する場合、対応する領域データ項目に同期データ項目の要素を単に転送又はコピーすること以上のことを行う必要があり得る。例えば、ある場合には、同期データ項目からの情報は、対応する領域データ項目が有効であるように修正される必要があってもよい。
【００５７】
更に、データのそのような修正は、同期データ項目が修正されず、領域データ項目に対する変更が他の端点に対する変更を同期させる場合に使用するための新たな同期データ項目を更新又は生成するために後に使用される場合に修正されないような方法で行なわれる必要があり得る。そのような方法で領域データ項目を変更することにより、例えば、特定の端点が例えばより制限された表現、より制限された機能などをサポートするにすぎない場合でさえ、他の端点が同期データを十分に使用することを可能にしてもよい。
【００５８】
領域データが修正されるとき又は後に同期データが別の端点への通信のために生成されるときに、同期データを修正することなく領域データが修正され得る１つの方法は、特定の同期データ項目について、領域データが修正又は変更された方法を記録するある種のデータ構造を使用してもよい。その後、おそらくは元の同期データ項目を識別するため又は領域データ上へ同期データを実現することの一部としてなされる変更を「逆転させる」ために、同期データを生成する際にそのようなデータ構造が後に使用されてもよい。
【００５９】
単に１つの例として、同期データがディレクトリー及びファイルを表し、様々な制限または非互換性の１つ以上が特定の端点に存在する場合を再び考える。そのような例において、領域データ表現上へディレクトリー及びファイル同期データを実現することの一部は、同期データが領域データ表現により要求される制約と何らかの点で互換性がないか又は当該制約に違反しているかどうかを判断し、そうであるならば、領域データ項目を修正し、どのような修正が行われたかを記録することを含んでもよい。特に、例えば、同期データ中で通信されるファイルが特定のファイルシステム上でサポートされない文字を使用する名前を有すると仮定する。そのような同期データ項目を実現することの一部は、例えば、異なる名前を持っている実ファイルを作成すること、及び領域データ項目−再びファイル−が変更された方法を記録することを含んでもよい。そのような記録されたデータは、その後、例えば、図３に関してより詳細に以下に述べるように、他の端点への通信のために同期データ項目をどのように生成又は更新するかを決定することの一部として後に使用されてもよい。
【００６０】
領域データ上へ同期データを実現する場合、以前に紹介されたように、領域データへの様々な修正は、同期データ、領域データ、当該実現が実行され得る端点などの特性に応じて、必要であると決定されてもよい。１つ以上の修正が必要な場合、領域データ上へ同期データを実現することの一部は、そのような非互換性を解消したり、制約を実行したりするために領域データを修正することを含んでもよい。
【００６１】
ディレクトリー及びファイル同期データの例において、及び様々な他の例において、領域データが修正される必要があり得るような実現の間に追加の状況が生じ得る。領域データが１つ以上の階層に組織される情報を含む場合、これらの状況の少なくとも３つが発生してもよいが、ＳＳＥのいくつかの形式を使用するものを含む少なくともいくつかの実施例においては、同期データは、階層についての固有の概念のないデータの「水平な（flat）」リストのみからなる。そのような環境、あるいは他の環境では、階層を表現する１つの方法は、項目の「親」を格納するために、各同期データ項目に関する１つ以上の追加のフィールドのデータを使用してもよい。そのような実施例によると、ディレクトリーに位置するファイル用の同期データは、例えば、ディレクトリーの名前、ディレクトリーのＩＤ、又は非階層的データ表現からの階層的組織の推定を可能にする他のある情報を含む特定のデータ・フィールドにデータを有してもよい。
【００６２】
そのような実施例は階層的データの表現を可能にし得るが、領域データ上へ同期データを実現する場合に領域データの修正を必要とし得る不整合性、非互換性又は他の場合が生じることもあり得る。これらの問題は、オーファン（orphan）、複製、サイクル又は他の問題を含み得る。一般に、これらの問題は、動作２１５におけるような同期データをマージするものなどの基本的な同期技術が、同期されているデータの意味又は使用と無関係に存在する場合、発生し得る問題のうちの少なくともいくつかの特定の例であってもよい。すなわち、基本的な同期技術が必ずしも領域データに存在する領域に特有の関係についての知識をサポートしないか又は有しない場合、これらの問題は少なくともいくつかの実施例に存在し得る。以前に説明されたように、一般に、これらの種の問題のうちの少なくともいくつかは、領域データ上へ同期データを実現する場合に領域データを修正することにより解決され得る。
【００６３】
例えば、いくつかの実施例において、少なくともファイルシステム中のファイルはディレクトリーに位置するように要求されてもよく、したがって、「親」を持つように要求されてもよい。親がないファイル（あるいはディレクトリー）は「孤児（オーファン、orphan）」であると考えられてもよい。ユーザー又はプロセスがファイルシステムのオブジェクトと直接対話（インタラクト、相互作用）する場合にオペレーティング・システムは孤児にされた（取り残された、orphaned）ファイル又はディレクトリーの作成を防いでいてもよいが、ディレクトリー情報とファイル情報を同期させる場合に孤児が作成されることはあり得る。例えば、あるユーザーがファイルをディレクトリーに追加する一方で、別の端点上で、新たに追加されたファイルを同期させる前に、別のユーザーが同じディレクトリーを削除すると仮定する。その後、第２のユーザーが同期し、したがって、新たに追加されたファイルを受け取る場合、その親ディレクトリーはもはや第２の端点に存在しないので、新たに追加されたファイルは孤児になる。
【００６４】
孤児にされたファイルシステム・オブジェクトに関する問題は様々な方法で解決されてもよい。１例において、領域データ項目（実ファイル）が特定のディレクトリーなどのファイルシステムにおける「保持領域（holding area）」又はある特定の位置に配置されるように、その同期データが領域データ上へ実現される場合、孤児のファイルは移動されてもよい。そのような変更は、同期データを実現する端点の観点からのみ行われてもよい。すなわち、同期データ自体は変わらなくてもよく、同一の同期データを使用する他の端点の観点から、ディレクトリーはなお削除されてもよく、新たに追加されたファイルはなお存在してもよい。更に、異なる実現プロセス−例えば、おそらくはデータベース中の水平なリストにファイルを格納し、ファイルを区別するための名前としてディレクトリーを使用するウェブ予測（web projection）と共に使用される実現プロセス−は、親ディレクトリーの不足を課題や問題とは考えないかもしれない。
【００６５】
領域データが実ファイルシステムを含む例などのいくつかの例又は他の種類の領域データを備える例においては、ユーザーはまた、特定のファイルが孤児にされると通知されてもよい。その後、ユーザーは、おそらくは決定的に非互換性を解決する、ファイルを削除されていないディレクトリーへ移動したりファイルを削除したりするなどの、ある特定の行為をとることができるかもしれない。ユーザーによってとられたそのような行為は、領域データに対してなされたローカルな変更と一般に考えられ、そのようなものとして、当該変更（又は変更された領域データ）は、その後、更新された同期データに含まれて（図３に関して以下により詳細に説明するように）他の端点に同期されてもよい。
【００６６】
例えば、同じディレクトリーに位置する同じ名前を備えたファイルが複数の端点上に作成される場合、別の潜在的な問題が発生し得る。そのようなファイルが同期される場合、その後、同期データは同じディレクトリー内に同じ名前を備えたファイルが存在することを示すかもしれないが、これは多くのファイルシステムでは許可されない。（しかし、孤児にされたファイルの例のように、同じ名前を備えたファイルはいくつかの種類の領域データによる問題ではないかもしれない。）ファイルシステムの実現の場合において、複製のファイルの問題が様々な方法で解決されてもよい。１例において、複製物のうちの１つは、ある方法で、おそらくはより高度な（higher）ＳＳＥ識別子を備えた項目を選ぶことによって選択することができ、次に、特定のディレクトリーのような保持領域に移動されてもよい。その結果、ファイルシステムは、その後、元のディレクトリーに１つのファイルを含み、別のディレクトリーに同じ名前を備えた別のファイルを含み得る。更に、以前のように、ユーザー、プロセス又は他のエンティティは、その後、ファイルを評価し、それ以上の行為が講じられるべきかどうか判断することができる。そのような行為は、１つもしくは両方のファイルの名前を変えること、１つ又は両方のファイルを異なる位置へ移動させること、ファイルを削除することなどを含み得る。そして最後に、以前のように、領域データへのそのようなユーザーの修正は、少なくともいくつかの実施例において、その後、対応する同期データの修正及び他の端点への変更の同期の修正に帰着し得る。
【００６７】
例えば「ディレクトリーＡ」などの１つのディレクトリーが例えば１つの端点上の「ディレクトリーＢ」の子となる一方、同時に又は少なくとも２つの端点がデータを同期させる前に「ディレクトリーＢ」が別の端点上で「ディレクトリーＡ」の子となる場合、さらに別の潜在的なファイルシステムの問題は「サイクル」の問題である。ファイルシステムは、ファイルシステム階層中のすべてのファイルシステム・オブジェクト又はファイルシステム要素が究極的にはルート・オブジェクト又はルート要素に由来することを必要としてもよく、サイクルはこの要件に違反する。この非互換性を解決するための１つの方法は、当該サイクルを含むファイルシステム・オブジェクトを保持領域又は特別なディレクトリーへ移動させることである。以前のように、ユーザーはこの変更について通知を受けて、その後、おそらくは保持領域においてファイルを再配置することにより、その問題を決定的に解決することができるかもしれない。
【００６８】
別のファイルシステムの例において、いくつかのファイルシステムは、ファイルが、単に１つのデータ・ストリーム又はデータの組の代わりに複数のもしくは代替のデータの「ストリーム」又はデータの組を含むことを可能にしてもよい。代替のストリームを含むファイルにより動作するプロセスがなければ、同期システムは、単一のデータのストリームを備えたファイルをサポートするにすぎないように実施されてもよい−代替のストリームを含むファイルは許可されないであろう。しかし、同期データが領域データ上へ実現される実施例では、代替のストリームを備えたファイルは、もともとそのようなファイルをサポートしない端点によってさえサポートされ、そのような端点とさえ同期されてもよい。例えば、代替のストリームを備えたファイルをサポートする端点においては、さらに代替のストリームを含む単一のファイルのみが作成されてもよい。しかし、代替のストリームをサポートしないファイルシステムを使用する端点においては、同期データ中の代替のストリーム情報が追加の個別のファイル上へ実現されてもよい。（さらに、同期データを生成する場合、図３に関して以下に述べられるように、追加の個別のファイルが、代替のストリームを備えた単一のファイルを表す同期データを生成するために使用されてもよい。）
以前の（及び後続の）動作及び他の要素の多くは端点間のディレクトリー及びファイルの同期について議論する特定の例に関して説明されてきたが、本明細書に記載された技術がそのような実施例に限定されるものではなく、様々の他の種類のデータの同期を含む様々な他の用途に適していることは注目されるべきである。
【００６９】
別の種類の同期データ及び領域データの単に１つの例として、コンテンツ管理又はウェブ・ログ（ブログ）システムは、トップレベルの記事又はポストのほかに、各記事又はポストに関してなされたコメントもまた同期させてもよい。そのような例において、ポスト又はコメントのテキストは、例えばＳＳＥを使用するＲＳＳフィード中の項目として表されてもよい。更に、様々な制約が例えば記事とコメントとの間に存在してもよい。例えば、少なくともユーザー・インターフェースにおいて表される場合、すべてのコメントはトップレベルの記事又はポストに関連付けられる必要があるかもしれない。同期データが実現される場合、その後、トップレベルの記事又はポストと関連付けられないコメントは、さらなる調査のためにフラグを立てられ、おそらくは表示されなくてもよい。
【００７０】
領域データ上への同期データの実現が有用であり得る同期システムの別の例は、１つ以上の特定の言語で情報を同期させる例示的なシステムを含んでもよい。そのような実施例では、他のある言語を使用する端点上の領域データ上へそのような同期データを実現することの一部は、情報を１つの言語からべつの言語による情報に翻訳することを含んでもよい。同様に、他のある言語で提供される情報は、実現プロセスの間に第１の言語による情報に翻訳されてもよい。そのような実施例の単に１つの特定の例として、ユーザーはヒンディー語を使用して文書を作成してもよい。当該文書は、英語を読むユーザーによって操作される他の別の端点に同期されてもよい。第２のユーザーの端点上へ文書を実現するプロセスの一部として、文書中の情報はヒンディー語から英語に翻訳されてもよい。おそらく同じ実施例において、第２のユーザーによって作成された文書は、英語の情報を備え、第１のユーザーと同期されてもよい。その後、ヒンディー語を読むユーザーの端点上で文書を実現することの一部として、文書中の情報は英語からヒンディー語に翻訳されてもよい。
【００７１】
図３に移ると、以前に実現された領域データを使用して同期データを生成することを含む、他の端点への通信用の同期データを生成する場合に実行され得る各種動作を含む例示的な一般化された動作フロー３００が示される。図３の以下の説明は他の図に関してなされてもよい。しかし、図３に関して説明される動作フローはこれらの他の図に関して説明される要素と共に使用されることに限定されるようには意図されないことが理解されよう。さらに、図３の例示的な動作フローは特定の実行の順序を示すが、１つ以上の他の実施例においては動作は違った順序でなされてもよい。更に、例示的な動作フローは複数のステップを含むが、いくつかの実施例では、これらの動作のうちの少なくともいくつかは同時に組み合わせられてもよいし実行されてもよく、同一又は他の実施例では、いくつかのステップは実行されなくてもよいことは認識されるべきである。
【００７２】
図２に関して以前に説明された動作は、例えば別の端点から得られた同期データが、ローカルの同期データにどのように組み入れられ、その後領域データ項目上へどのように実現されるかを説明する。そのような動作は、特定のローカルの端点が別の端点上で行なわれた変更を使用することを可能にしてもよい。しかし、図２に関して記述された動作は、単独でなされずに、ローカルの端点上で行われた領域データ項目への変更により他の端点がそのデータを更新することを可能にする。例えば、ここでも、制限的でないディレクトリー及びファイルの例を使用して、おそらくはローカルアプリケーションでファイルを開き、変更を行い、及び、その後にファイルを保存することにより、ユーザーがファイルを更新すると仮定する。ある後の時点では、その後他の端点がファイルについてのこれら端点自身のローカルコピーへ当該変更を組み入れることができるように、ファイルの変更を反映する更新されたフィードを生成することは有用かもしれない。例示的な動作フロー３００の１つの使用は、その後に他の端点と同期され得る同期データを生成することによりこの目標を遂行するのを支援することであってもよい。
【００７３】
動作３１０の例示的な実施例では、他の端点への通信に適しているか又は他の端点に利用可能とするのに適している同期データの生成は、様々な理由の１つ以上により、開始されてもよい。いくつかの実施例では、ある時間間隔が経過した後、新たな同期データが周期的に生成されてもよい。同一又は他の実施例では、１つの（あるいはより多くの）領域データ項目がローカルに変化した場合に新たな同期データの生成は始められてもよいし、あるいは他のある理由で始められてもよい。
【００７４】
動作３１５の少なくとも１つの例示的な実施例では、なんらかの領域データ項目が処理のために残されているか否かが決定されてもよい。処理のために残された領域データ項目がある場合、例示的な動作フロー３００は、以下に述べられる動作３２０に進んでもよい。処理するための項目がこれ以上ない場合、例示的な動作フローは終了してもよい。いくつかの実施例では、領域データ項目はすべて例示的な動作フロー３００によって処理されてもよいが、他の実施例では、領域データ項目のある一部だけ−例えば、おそらくは変化した領域データ項目だけ、又は変化した領域データ項目もしくは変化した領域データ項目と関係のあるものだけ−が処理されていてもよい。
【００７５】
動作３２０の例示的な実施例では、１つ以上の領域データ項目は、更新された同期データを生成する場合に使用のために考慮されるように識別されてもよい。いくつかの実施例では、各領域データ項目は個別に考えられ、したがって動作３２０の各実行の間、単一の領域データ項目のみが識別されてもよい一方、他の実施例においては、１つより多くの領域データ項目が識別されてもよく、その後おそらくは他の識別された領域データ項目と一緒に考慮されてもよい。
【００７６】
動作３２５の少なくとも１つの実施例では、動作３２０において識別された領域データ項目について任意の同期データ項目を生成することが必要か否かが決定されてもよい。１つ以上の同期データ項目の生成が必要な場合（又は必要であるが当該決定がこの動作中になすことができない場合）、動作フローは動作３３０に進んでもよい。同期データ項目が必要でない場合、動作フローは動作３１５に進んでもよい。１つ以上の同期データ項目が必要かどうかは、様々な方法で決定されてもよい。例えば、すべての領域データ項目が処理される実施例では、この決定は、領域データ項目が最後に同期されて以来識別された領域データ項目が修正されたかどうか判断することにより少なくとも部分的になされてもよい。そうである場合、その後、ローカルになされた修正が他の端点にとって利用可能になるように、同期データ項目を生成することが必要かもしれない。例えば、実ファイルなどの領域データ項目が更新又は変更された場合、この動作は、同期データ項目又は複数の同期データ項目が領域データ項目について生成されるべきであることを決定してもよい。
【００７７】
いくつかの実施例において、例えば図２に関して以前に説明された例示的な動作２３０により実施されたものなどの、領域データ項目上へ同期データ項目を実現することの一部としてなされた修正は、新たな同期データの生成に帰着する変更を含まなくてもよい。すなわち、例えば、変更がユーザー又は他のエンティティによって領域データ項目に行なわれた場合に、新たな同期データ項目は必要となり得るにすぎない。別の観点から考慮すると、領域データ項目上へ同期データを実現することの一部としての領域データ項目の修正が、ある場合には、領域データ項目自体への変更をもたらすにすぎないことが理解されてもよい。そのような変更は他の端点には見えなくてもよいし、他の端点と同期されなくてもよく、したがって、新たな同期データが生成されることを要求しなくてもよい。
【００７８】
最後に、動作３３０の少なくともいくつかの例示的な実施例では、１つ以上の同期データ項目が、例えば動作３２０において識別されてもよい領域データ項目について生成されてもよい。領域データ項目上へ同期データを実現することの一部として識別された領域データ項目が修正されなかった場合などのいくつかの場合においては、この動作は、対応する同期データ項目を生成するために領域データ項目に関連付けられたデータを使用することにより実行されてもよい。その後、領域データ項目上でローカルに行なわれた変更は、生成された同期データに反映され、他の端点に同期させることができ、又は他の端点に伝えることができる。例えば、実ファイルによって具体化された領域データ項目が例えばローカルの端点上のファイルのユーザーによって更新された場合、そのような変更は、新たに生成又は更新された同期データ項目に反映されてもよい。ＳＳＥ及びフィード文書を使用する実施例では、この同期データ項目は、例えばファイルに対する変更を含むように同期データ項目中の項目情報を更新することを含む、ＳＳＥ更新処理を実行することのほか、同期データ項目に関連付けられたバージョン識別子を更新することによっても、少なくとも部分的に生成され得る。
【００７９】
領域データ項目上へ同期データを実現することの一部として、考えられている領域データ項目が修正された場合において、動作３３０の少なくともいくつかの例示的な実施例はまた、生成された同期データが元の受信された同期データをどのように反映するべきであり、領域データ項目によって含まれるデータをおそらくは必ずしも反映すべきではないことを決定してもよい。すなわち、領域データ上へ同期データを実現することの一部として行なわれた変更は、特定の端点上でローカルに可視であるにすぎなくてもよく、他の端点と同期されなくてもよい。代わりに、他の端点と同期されたデータは、（領域データが実現された後にローカルに行なわれた変更を除いて）もともとは他の端点から受信されたデータであってもよい。
【００８０】
いくつかの実施例では、領域データ上へ同期データを実現するときに記録されたデータは、特定のローカルの変更が生成された同期データに含まれるべきかどうかを判断するために使用されてもよい。そのような記録されたデータはまた、同期データ項目を生成することの一部として使用されてもよい−例えば、同期データ項目上へ領域データ項目を実現するときに行なわれた変更に関連付けられたデータに取って代わるか又は当該データの代わりに使用されてもよい。
【００８１】
例えば、実ファイルが特定のファイルシステムの要件に従うファイル名を有するよう、ファイル名が実現の間に修正された場合を再び考える。そのような例において、同期データ項目を生成する場合に考慮される領域データ項目は、もともと受け取られたか又は記憶された同期データに存在するファイル名とは異なるファイル名を有していてもよい。この異なるファイル名がユーザー、プロセス又は他のあるエンティティによって領域データ項目（ファイル自体）に対してなされた変更の結果であった場合、当該変更は他の端点と同期される必要があり、生成された同期データ項目の一部である必要があるかもしれない。しかし、領域データ項目上へ同期データ項目を実現することの一部としてファイル名が変更された場合において、当該変更は生成された同期データ項目の一部にされなくてもよい。代わりに、例えば、通信されてローカルの同期データに格納された元のファイル名は、更新された同期データ項目の一部として使用されてもよい。
【００８２】
図４に移ると、同期関係に参加し領域データ上へ同期データを実現するための機能を含む端点の１つの実施例を示す、例示的なシステム４００が示されている。図４のこの説明は他の図に関してなされてもよい。しかし、図４に関して説明される要素が他の図に関して説明される要素と共に使用されることに限定されるようには意図されないことが理解されよう。さらに、図４の例示的な図は特定の要素を示すが、いくつかの実施例では、これらの要素のすべてが存在しなくてもよいし、いくつかの実施例では、追加の要素が存在してもよい。更に、例示的な図は、特定の端点又は計算装置の一部であるとして又はそれらにより含まれるものとして要素を示しているが、例えば、特定の端点に関連付けられた１つ以上のモジュールも１つ以上の他の端点又は計算装置によって実施されてもよく、任意の必要なデータを交換するのに十分な任意の手段によって例示的な示された端点に接続されてもよいことは注目されるべきである。
【００８３】
例示的なシステム４００は、同期端点４１０、同期モジュール４２０、同期データ記憶モジュール４３０、実現モジュール４４０及び実現モジュールＮ  ４４２、領域データ記憶モジュール４５０及び領域データ記憶モジュールＮ  ４５２を含むほか、入来するフィード４２２、入来するフィードＮ４２４、出ていくフィード４２６、及び出ていくフィードＮ４２８を含んでもよい。
【００８４】
一般に、少なくともいくつかの実施例では、例示的な同期端点４１０は、図１に関して以前に述べたように、端点Ａ１１０、端点Ｂ１２０又は端点Ｃ１３０のうちの１つと類似してもよいし同一であってもよい。例示的な同期端点は、データの共有及び同期、領域データ上への同期データの実現、及び領域データからの同期データの生成を可能にする実施例の一部として、図示されたモジュールのうちのいくつか又はすべてを含む複数のモジュールを含んでいてもよい。更に、いくつかの実施例では、端点は、図５に関して以下に述べる例示的なコンピューター環境を含むコンピューター環境によって実施されてもよい。
【００８５】
少なくともいくつかの実施例では、同期モジュール４２０は、１つ以上の他の端点間で同期データを同期又は転送してもよい。同期モジュールは、特定の計算装置に対してローカルな通信手段、他の端点又は計算装置との通信を可能にする１つ以上のネットワークまたは他の通信手段などを含む、様々な通信機構を使用してもよい。更に、同期モジュールは、様々な同期技術、プロトコルなどのうちのいずれか、及び通信又は転送された同期データを表すための様々な手段のうちのいずれかを使用してもよい。
【００８６】
単に１つの特定の例において、同期モジュール４２０は、以前に紹介されたように、ＳＳＥによって記述されたものなどの技術を使用して情報を同期させてもよい。そのような実施例では、例示的な同期モジュールは、おそらくは例示的な入来するフィード４２２及び入来するフィードＮ４２４を含む１つ以上のフィードを得てもよい。少なくともいくつかの実施例では、入来するフィードは、ＲＳＳ又はＡｔｏｍフィード文書などの、ＸＭＬ文書を使用して表されてもよい。例示的な出ていくフィード４２６及び出ていくフィードＮ４２８も同様に表わされてもよい。
【００８７】
フィードを与えられて、同期モジュールは、データ格納部の中へ当該フィードによって表される変更を組み込んでもよい。そのようなデータ格納部は、いくつかの実施例においては、例示的な同期データ記憶モジュール４３０によって表される格納部を含んでもよい。いくつかの実施例において、図２に関連付けられた以前に説明された動作２１５は、フィードによって表される変更を組み込むことの一部として、例示的な同期モジュールによって実施されてもよい。ＳＳＥなどの技術を使用する実施例では、同期モジュールは、ＳＳＥマージの一部であるものなどの動作の実行により、同期データを組み込んでもよい。
【００８８】
いくつかの実施例では、同期モジュール４２０はまた、同期端点４１０によって維持される同期データ又は領域データが変化した場合、おそらくは例示的な出ていくフィード４２６又は出ていくフィードＮ４２８を含む更新された出ていくフィードを生成してもよい。いくつかの実施例においては、図３に関連付けられる以前に説明された動作３３０は、更新された出ていくフィードを生成することの一部として、例示的な同期モジュールによって実施されてもよい。
【００８９】
以前に紹介されたように、同期モジュール４２０は同期データ記憶モジュール４３０を使用して同期データを格納してもよい。そのような同期データ記憶モジュールは、一般に、様々な方法又はフォーマットのいずれかで同期データを格納してもよく、１つ以上のデータベース、１つ以上のファイルなどの使用を通じた方法を含む様々な方法で実施されてもよい。ＳＳＥなどの同期プロトコルを使用する単に１つの例において、同期データ記憶モジュールは、入来するフィード４２２又は出ていくフィード４２６のようなフィード文書を含む、実際のフィード文書を格納してもよい。それは、ファイルシステム中のファイルとして、１つ以上のデータベース中の１つ以上の記録として、又は任意の他のデータ記憶機構を使用して、そのようなフィードを格納してもよい。同期データ記憶モジュールは、同期端点４１０によって制御され、維持され、修正されてもよく、したがって、「ローカルの」データ格納部であると考えられてもよいが、いくつかの場合には、同期データ記憶モジュールは、同期端点から遠隔に位置する記憶機構を使用して情報を実際に格納してもよい。そのような実施例では、そのような遠隔記憶装置は様々な通信手段の１つ以上を使用してアクセスされてもよい。
【００９０】
実現モジュール４４０又は実現モジュールＮ４４２などの例示的な実現モジュールは、領域データ上へ同期データを実現してもよいし、又はある場合には実現された領域データから同期データを生成するのに参加してもよい。いくつかの実施例では、領域データ上へ同期データを実現することは、少なくとも部分的に、同期データに基づいた領域データの修正（作成及び削除を含む）を含んてもよい。同一又は他の実施例においては、領域データ上へ同期データを実現することはまた、実現された領域データに具体化された１つ以上の代替表現上への同期データのマッピングを含んでもよく、ここで「代替」とは、領域データ表現が対応する同期データに存在する同じデータのすべてを使用しなくてもよいことを示す。領域データ上へ同期データを実現する１つのそのようなプロセスは、図２に関して以前により詳細に説明された。
【００９１】
更に、領域データ上へ同期データを実現するときにそのような代替表現が使用された場合、実現モジュールはまた、領域データが変化した後、同期データを生成又は更新することに参加してもよい。同期データ生成の１つのそのような例は、図３ＦＩＣに関して以前により詳細に説明された。
【００９２】
おそらくは例示的な実現モジュール４４０又は例示的な実現モジュール４４２などの実現モジュールは、特に、実現モジュールによって処理された同期データ及び領域データの種類に依存して様々な方法で動作してもよい。例えば、実現モジュールは、特定の種類の同期データを解釈及び実現してもよく、特定の種類の領域データと相互作用（インタラクト）してもよい。
【００９３】
いくつかの実施例において、実現モジュールが同期データを実現させる領域データは、例示的な領域データ記憶モジュール４５０又は例示的な領域データ記憶モジュール４５２などの領域データ記憶モジュールに格納されてもよい。例えば、同期データがディレクトリー及びファイルを定義する場合、領域データ記憶モジュール４５０は１つ以上のファイルシステムを含んでもよく、領域データは実際のディレクトリー及びファイルを含んでもよい。そのような例において、「ファイルシステム実現モジュール」は、領域データ記憶モジュールによって具体化されたファイルシステム中の１つ以上の位置における実ファイルを作成又は修正するために、ファイル・メタデータのほかファイル・コンテンツなどの情報を含んでいる同期データを使用してもよい。
【００９４】
ファイルシステム実現モジュールはまた、実現モジュールによって処理された同期データが有効な領域データを含むように修正されるべきであるか又は修正されなければならない場合に様々な行為を認識し行う、論理、実行可能コードなどを含んでもよい。例えば、以前に紹介されたように、実現モジュールは、同期データ中のディレクトリー又はファイルが実現モジュールに関連付けられたファイルシステムにおいて無効な又は許可されない名前を有している場合に認識してもよい。そのような例では、実現モジュールはまた、領域データが他の端点と同期されるべき同期データを生成するために後に使用される場合、実現された領域データ中の代替名を使用しておそらくは元の名前にまたマッピングするなど、そのような問題又は非互換性を解決するある処置をとるために論理又は実行可能コードを含んでもよい。
【００９５】
いくつかの実施例では、同一の同期データ上で動作する又は同一の同期データにより動作する１つより多くの実現モジュールが存在してもよい。例えば、同一の周期データを使用する場合−例えばおそらくはディレクトリー及びファイル情報と同じフィード文書を使用する場合−、１つより多くの実現モジュールが存在してもよく、各実現モジュールは異なったように動作してもよい。例えば、異なる方法で領域データ上へ同期データを実現する異なる実現モジュールが存在してもよい。例えば、ある実現モジュールは、特定の種類のファイルシステムを使用するファイル及びディレクトリー上へディレクトリー及びファイル同期情報を実現してもよい。別の実現モジュールは、異なる種類のファイルシステムを使用するファイル及びディレクトリー上へ（おそらくは同じ）ディレクトリーとファイルの同期データを実現してもよい。別の例において、あるファイルシステムは、名前において文字の特定の組を許可してもよく、別のファイルシステムは、文字の異なる組を許可してもよく、端点間で通信される同期データは、文字のさらに別の組をサポートしてもよい。そのような例において、異なる実現モジュールは、実現モジュールがサポートする領域データ−この場合にはファイルシステム−の特定の要件及び制限に従う領域データを生成する能力を有していてもよく、そのような制限をマッピングしそうでなければ解決することのできる能力を有していてもよい。
【００９６】
いくつかの実施例では、この設計は、同期データ又は他の実現モジュールが変化することを要求することなく既存の実現モジュールが変更されることを可能にすることができ、おそらくは同期情報を表す新たな端点又は方法をサポートする新たな実現モジュールが、同期データ、同期技術又は他の端点を必ずしも変更することなく追加されることを可能にし得る。
【００９７】
以前に説明されたように、いくつかの実施例において、異なる端点が各端点によって読まれて解釈することができる同期情報を受け取り生成する異なる実現モジュールを含むことは可能である。いくつかの実施例では、同一の同期データを使用する異なる実現モジュールは同じ端点上で動作してもよい。１つのそのような例において、コンピューター・システムは異なるファイルシステムを使用する異なる記憶装置を有してもよい。そのような環境では、同じコンピューター・システムに関連付けられている異なる実現モジュールは、同一の同期データを使用して、異なる記憶デバイス上の領域データを、おそらくはファイル及びディレクトリーとして、修正してもよい。すなわち、同一の同期データは、各ファイルシステムにつき１つの組の、ディレクトリー及びファイルの２つの異なる組をもたらしてもよい。更に、１つのファイルシステムにつき１つの実現モジュールによって行なわれた変更は、他のファイルシステムにつき他の実現モジュールによって必ずしも行なわれなくてもよい。
【００９８】
同一又は他の例において、端点は、同じディレクトリー及びファイル同期データに作用するが異なる種類の領域データ（すなわち、実ファイル及び実ディレクトリー以外）を修正する、１つ以上の他の実現モジュールを有していてもよい。異なる種類の領域データ及び対応する実現モジュールの１つの例は、単一のファイルにおいて複数のファイル及びおそらくはディレクトリーの階層を表す能力を有する、ＺＩＰ又は他のアーカイブ又はファイルの種類を修正する実現モジュールであり得る。そのような実現モジュールによれば、同期データの実現は、別個のファイル及びディレクトリーを修正するために別の場所で使用され得る同一の同期データの一部として通信されるディレクトリー及びファイルを含む１つ以上のＺＩＰファイルを作成することを含んでもよい。
【００９９】
異なる種類の領域データ及び実現モジュールの別の例は、「ウェブ予測」によって使用される実現モジュールであってもよい。そのような環境では、ユーザーは、例えば、１ページ以上のＨＴＭＬページで構成されたウェブ・インターフェースを使用してディレクトリー及びファイルにアクセスすることができてもよい。１つの例において、ＨＴＭＬページは、ファイルについてのリンクを表示し、ユーザーが表示されたリンクのうちの１つをクリックすることによりファイルをダウンロードすることを可能にしてもよい。そのようなユーザー・インターフェースの１つの実施例は例えば単にウェブサーバー上にディレクトリー及びファイルを再作成してもよい（したがって、おそらくはファイルシステム実現モジュールを使用して実行できる）が、別の実施例は、データベースから、データベースを投入し、ＨＴＭＬインターフェースを生成し、ファイル・コンテンツを供給するために、例えば同期データを使用し得る実現モジュールを使用してもよい。そのような例において、データベースは、実現モジュールによって作成又は修正される領域データのうちの少なくともいくつかを含むと考えられるかもしれない。そのような実現モジュールは、ディレクトリー及びファイルを表す同期データに作用する一方、実際に実ディレクトリー又は実ファイルを作成しなくてもよい。
【０１００】
先行する多くの例が例示的なディレクトリー及びファイル同期データに関して説明されている一方、図４の要素は、様々な他の種類のデータを同期させ、格納し及び実現するためにさらに使用されてもよいし、代わりに使用されてもよいこともまた注目されるべきである。
計算環境の例
図５に移ると、この図及び関連する記載は、本明細書に記載した様々な技術が実施される例示的な計算環境の簡潔且つ一般的な説明を提供することを意図したものである。必ずしも必要なものではないが、少なくとも部分的には、コンピューター実行可能命令の一般的な状況において、コントローラー、プロセッサー、パソコン、又は図５に示す計算装置５００などの他の計算装置により実行されるプログラムモジュールなどの技術がここで説明される。
【０１０１】
一般に、プログラム・モジュールは、ルーチン、プログラム、オブジェクト、コンポーネント、ユーザー・インターフェース、データ構造などを含み、これらは特定のタスクを実行し、特定の情報を表示し、又は特定の抽象データ型を実施する。プログラムモジュールによって行なわれる動作は、１つ以上のブロック図及び動作フローチャートを用いて以前に説明された。
【０１０２】
当業者は、コンピューター可読媒体の１つ以上の形式で具体化されるコンピューター実行可能命令の形式の記述、ブロック図及び動作フローを実施することができる。本明細書において使用されるように、コンピューター可読媒体は、コンピューターによってアクセスされ理解することができる形式で符号化された情報を格納又は具体化することができる任意の媒体であってもよい。コンピューター可読媒体の一般的な形式は、揮発性メモリー及び不揮発性メモリーの両方、取り外し可能及び／又は取り外し不能な媒体を含むデータ記憶装置、及び通信媒体を含んでいるが、これらに限定されない。
【０１０３】
通信媒体は、コンピューター可読情報を、搬送波又は他の移送機構などの変調データ信号に具体化し、任意の情報配信媒体を含む。用語「変調データ信号」は、情報を信号に符号化するような方法で設定又は変更された１つ以上の特性を有する信号を意味する。限定ではなく例として、通信媒体は、有線ネットワーク又は直接的な有線接続などの有線媒体、並びに、音響、ＲＦ、赤外線及び他の無線媒体などの無線媒体を含む。
【０１０４】
図５に示された計算装置５００は、その最も基本的な構成において、少なくとも１つの処理部５０２及びメモリー５０４を含んでいる。いくつかの実施例では、計算装置５００は、例えば端点Ａ１１０、端点Ｂ１２０などの図１に関して以前に述べた端点のうちの１つの少なくとも一部を実施してもよい。同一の又は他の実施例では、計算装置は、図４に関して以前に述べた同期端点４１０の少なくとも一部を実施してもよい。いくつかの実施例では、デスクトップ及びラップトップ・コンピューターを含む様々なコンピューターに例えば存在するように、処理部５０２は汎用中央処理装置（ＣＰＵ）であってもよい。計算装置の正確な構成及び種類によって、メモリー５０４は、（ＲＡＭなどの）揮発性、（ＲＯＭ、フラッシュ・メモリーなどの）不揮発性、又はこれら２つの組合せであってもよい。この最も基本的な構成は図５において点線５０６で示される。さらに、計算装置５００は、追加の特徴及び機能を有してもよい。例えば、計算装置５００は、さらに、磁気もしくは光ディスク又はテープを含むがこれらに限定されない追加の記憶装置（取り外し可能及び／又は取り外し不能）を含んでもよい。そのような追加の記憶装置は図５において取り外し可能な記憶装置５０８及び取り外し不能な記憶装置５１０により示される。
【０１０５】
計算装置５００はまた、計算装置５００が他のデバイス及びサービスと通信することを可能にする１つ以上の通信接続５１２を含んでもよい。例えば、計算装置は、例えば図１に関して以前に述べた端点への接続を含む様々な通信手段又は計算装置に対する１つ以上の接続を有してもよい。そのような接続は、幾つかの場合には、図１に関して以前に述べた通信手段１１５に対する接続を含む。計算装置５００はまた、カメラ又はスキャナのような画像入力装置、キーボード、マウス、ペン、マイクロホンアレーを含む音声入力機器、タッチ入力装置などの１つ以上の入力装置５１４を有してもよい。ディスプレイ、スピーカー、プリンターなどの１つ以上の出力装置５１６も計算装置５００に含まれていてもよい。
【０１０６】
当業者は、図５において示された計算装置５００以外の計算装置により本明細書に記載された技術が実施され得ることを理解するであろう。例えば、本明細書に記載された技術は、携帯電話及びＰＤＡを含む携帯端末、マルチプロセッサー・システム、マイクロプロセッサーベース又はプログラム可能な家電、ネットワークＰＣ、ミニコンピューター、メインフレーム・コンピューターなどにおいて同様に実施されてもよいが、これらに限定されるものではない。これらの計算装置の各々は図５のシステムによってある程度詳細に記述されてもよいし又は異なったように記述されてもよい。
【０１０７】
本明細書に記載された技術はまた、通信網を介してリンクされる遠隔処理デバイスによって動作が行なわれる分散計算環境で実施されてもよい。分散計算環境では、プログラムモジュールはローカル装置及びリモート装置の両方に位置してもよい。
【０１０８】
本明細書においてはソフトウェアで実施されると記載されたが、本明細書に記載された技術は、代替的に、すべて又は部分的に、ハードウェア、ファームウェア又はソフトウェア、ハードウェア及び／又はファームウェアの様々な組合せとして実施されてもよいことはさらに理解されるべきである。
【０１０９】
方法及びシステムのいくつかの特定の実施例が添付の図面に示され、前述の文章にて説明されたが、図示され説明された方法及びシステムは、記述された特定の実施例に限定されるものではなく、添付の特許請求の範囲に記載され定義される精神から逸脱することなしに、多数の再配置、修正及び置換が可能であることが理解されよう。
【図１】
2010531025.tif 000003
【図２】
2010531025.tif 000004
【図３】
2010531025.tif 000005
【図４】
2010531025.tif 000006
【図５】
2010531025.tif 000007
【国際調査報告】
2010531025.tif 000008
2010531025.tif 000009