(57)【特許請求の範囲】
【請求項１】
デバイスをデータソース群と同期させる方法であって、
第１のデータソースおよび第２のデータソースを作成するステップと、
前記第１のデータソース、前記第２のデータソースおよび前記デバイスの間で同期させるためのアイテムを決定するステップであって、前記第１のデータソース、前記第２のデータソースおよび前記デバイスは、特定のユーザと関連するユーザデバイスであり、前記デバイスは、前記第１のデータソースおよび前記第２のデータソースの各アイテムのバージョンを判断し、前記第１のデータソースおよび前記第２のデータソースの各々を各アイテムの最新バージョンと同期させるために構成される、アイテムを決定するステップと、
前記デバイスを前記第１のデータソースに接続するステップと、
同期後に前記デバイスおよび前記第１のデータソースの各々が同じバージョンのアイテムを含むように、前記デバイスを前記第１のデータソースと同期させるステップと、
前記デバイスを前記第２のデータソースに接続するステップと、
前記デバイスを前記第２のデータソースと同期させるステップであって、前記第１のデータソース、前記第２のデータソースおよび前記デバイスの各々が同じバージョンのアイテムを含むように、前記デバイスを使用して前記第１のデータソースと前記第２のデータソースとの間で同期を行うステップと、
重複検出チェックを実行して、アイテムが既に同期済みである場合を特定するステップと
を備えることを特徴とする方法。
【請求項２】
前記重複検出チェックを実行するステップは、プロパティ比較を実行するステップをさらに備えることを特徴とする請求項１に記載の方法。
【請求項３】
前記重複検出チェックを実行するステップは、同期ハッシュ値を計算するステップをさらに含むことを特徴とする請求項１に記載の方法。
【請求項４】
前記アイテムが既に同期済みである場合、前記アイテムを更新するステップをさらに備えることを特徴とする請求項１に記載の方法。
【請求項５】
削除コマンドを受け取り、前記削除コマンドを実行するステップをさらに備え、前記検出コマンドは、ソフト削除およびハード削除から選択されることを特徴とする請求項１に記載の方法。
【請求項６】
前記データソース群の間における同期を制限するステップをさらに備えることを特徴とする請求項１に記載の方法。
【請求項７】
前記第１のデータソースおよび前記第２のデータソースを作成するステップは、データソースタイプを示し、前記第１のデータソースおよび前記第２のデータソースのそれぞれに関連する識別子を格納するステップをさらに含むことを特徴とする請求項１に記載の方法。
【請求項８】
前記デバイスを前記第１のデータソースと同期させるステップは、第１の同期プロトコルを使用することができ、前記デバイスを前記第２のプロトコルと同期させるステップは、第２の同期プロトコルを使用することができることを特徴とする請求項１に記載の方法。
【請求項９】
データソース群を同期させるためのプログラムを記録したコンピュータ可読媒体であって、前記プログラムはコンピュータデバイスに、
前記デバイスと同期させる第１のデータソースを作成し、前記デバイスと同期させる第２のデータソースを作成するステップであって、前記第１のデータソース、前記第２のデータソースおよび前記デバイスは、特定のユーザにより使用されるデバイスである、作成するステップと、
前記デバイスと同期させるために前記デバイスを第１のアイテムを有する前記第１のデータソースと接続するステップと、
前記第１のデータソースと前記デバイスとの間で同期させるための第１のアイテムを決定するステップと、
同期後に前記デバイスおよび前記第１のデータソースの各々が同じバージョンの第１のアイテムを含むように、前記デバイスを前記第１のデータソースと同期させるステップと、
前記デバイスを前記第１のデータソースと同期させた後、前記デバイスを前記第２のデータソースと接続するステップであって、前記デバイスは、前記第１のデータソースおよび前記第２のデータソースの各アイテムのバージョンを判断し、前記第１のデータソースおよび前記第２のデータソースの各々と各アイテムの最新のバージョンと同期させるステップと、
前記第２のデータソースと前記デバイスとの間で同期させる第２のアイテムを決定するステップであって、同期させる前記第１のアイテムを決定するステップ、および同期させる前記第２のアイテムを決定するステップは、前記アイテムの各々について計算され前記アイテムの各々と共に格納される同期ハッシュ（ＳｙｎｃＨａｓｈ）値を検査するステップを含み、各アイテムについて計算される前記同期ハッシュ値は、前記同期ハッシュ値が計算されるときに、アイテムが複製であるかどうかを判断するために比較される１次プロパティとして定義されるフィールドのセットである１次キーセットと、前記１次キーセットが２つのアイテムの間で一致しても、前記２つのアイテムは互いの複製と判断されないプロパティ内のデータの存在を検査するために使用されるフィールドのより大きなセットである２次キーセットとからなる２つのレベルのプロパティレベルの照合を含む、第２のアイテムを決定するステップと、
同期後に前記デバイスおよび前記第２のデータソースの各々が同じバージョンの第２のアイテムを含むように、前記デバイスを前記第２のデータソースと同期させるステップであって、前記第２のデータソースは前記デバイスと前記第１のデータソースとの間で同期した第１のアイテムに対する更新情報を含み、前記デバイスと同期する前記第２のアイテムは、前記デバイスが前記第１のデータソースと再び同期したときに前記第１のデータソースと同期する、前記デバイスを前記第２のデータソースと同期させるステップと
アイテムが既に同期済みである場合を特定する重複検出チェックを実行するステップと
を実行させることを特徴とするコンピュータ可読媒体。
【請求項１０】
前記重複検出チェックを実行するステップは、同期ハッシュ値を計算するステップをさらに含むことを特徴とする請求項９に記載のコンピュータ可読媒体。
【請求項１１】
前記プログラムは前記コンピュータに、検出コマンドを受け取り、前記検出コマンドを実行するステップをさらに実行させ、前記検出コマンドは、ソフト削除およびハード削除から選択され、前記ハード削除は前記アイテムを物理的に削除し、前記ハード削除は、前記デバイス、前記第１のデータソースおよび前記第２のデータソースから前記アイテムが除去されるように前記データソースの各々について実行され、ソフト削除は、フィルタから出たアイテムであり、前記ソフト削除は、前記デバイスおよび前記データソースの一方から前記アイテムを削除するが、前記データソースの他方からは削除しないことを特徴とする請求項１０に記載のコンピュータ可読媒体。
【請求項１２】
前記プログラムは前記コンピュータに、前記データソース群の間における同期を制限するステップをさらに実行させることを特徴とする請求項１１に記載のコンピュータ可読媒体。
【請求項１３】
前記第１のデータソースおよび前記第２のデータソースを作成するステップは、データソースタイプを示し、前記データソースの各々に関連する識別子を格納するステップをさらに含むことを特徴とする請求項１２に記載のコンピュータ可読媒体。
【請求項１４】
前記デバイスを前記第１のデータソースと同期させるステップは第１の同期プロトコルを使用し、前記デバイスを前記第２のデータソースと同期させるステップは第２の同期プロトコルを使用することができることを特徴とする請求項１１に記載のコンピュータ可読媒体。
【請求項１５】
デバイスを使用してデータソース群を同期させるためのシステムであって、
互いに同期させることができる少なくとも２つのデータソースと、
前記少なくとも２つのデータソースの間で同期させるためのシャトルとして動作するように構成され、同期後、前記デバイスおよび前記少なくとも２つのデータソースが、同期させるために選択された同じバージョンのアイテムを含むように、前記少なくとも２つのデータソースと同期させるように構成されたデバイスとを備え、前記データソースおよび前記デバイスは、特定のユーザに関連するユーザデバイスであり、前記デバイスは、前記データソースの各アイテムのバージョンを判断し、前記データソースの各アイテムを各アイテムの最新バージョンと同期させるように構成され、前記デバイスは、前記デバイスおよび前記第１のソースが同期後にそれぞれ同じバージョンのアイテムを有するように最初に前記第１のデータソースと同期し、前記デバイスと前記第１のデータソースとの同期後に、前記第１のデータソース、前記第２のデータソースおよび前記デバイスがそれぞれ同期後に同じバージョンのアイテムを含むように、前記デバイスと前記第２のデータソースを同期させ、前記第１のデータソースと前記第２のデータソースとの同期中に、アイテムが既に同期済みである場合を特定する重複チェックを実行することを特徴とするシステム。
【請求項１６】
前記重複検出チェックの実行は、同期ハッシュ値を計算することをさらに含むことを特徴とする請求項１５に記載のシステム。
【請求項１７】
前記デバイスは、ソフト削除コマンドおよびハード削除コマンドを処理するように構成されることを特徴とする請求項１５に記載のシステム。
【請求項１８】
前記デバイスは、前記少なくとも２つのデータソースの間で同期を制限するようにさらに構成されることを特徴とする請求項１７に記載のシステム。
【請求項１９】
前記デバイスを前記少なくとも２つのデータソースと同期させるステップは、複数の同期プロトコルを使用することができることを特徴とする請求項１８に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のコンピューティングデバイス間でアイテムを同期させることに関する。
【背景技術】
【０００２】
ユーザは、あるデバイスを別のデバイスと同期（「シンク（ｓｙｎｃ）」）させることができる。例えば、ユーザは、自分の職場コンピュータを自分のモバイルデバイスと同期させることができる。同期後、モバイルデバイスとコンピュータは、同期されるように選択された同一の情報を含む。同期の基本的な目的は、２つのシステムを互いに最新の状態に保つことである。デバイスが同期されると、一方のソースに対して行われた変更が、他方に伝搬される。
【０００３】
例えば、ユーザが、自分のモバイルデバイス上の連絡先を自分の自宅（Ｈｏｍｅ）ＰＣの連絡先と同期させた場合、自宅ＰＣとモバイルデバイスは、同期が完了した後、同一の連絡先を有する。多くのユーザは、電子メール、連絡先、カレンダ、およびドキュメントを含むアイテムを同期させる。しかし、２つを超える、異なるデバイス間で情報を同期させることは、非常に困難である可能性がある。必要とされているのは、複数の同期ソースと同期させるやり方である。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
本発明は、デバイスを複数のコンピューティングデバイス（「同期ソース」）と同期させることを対象とする。
【課題を解決するための手段】
【０００５】
本発明の一態様によれば、複数のデバイスが、そのデータを「クロスポリネート（ｃｒｏｓｓ−ｐｏｌｌｉｎａｔｅ）」させる。モバイルデバイスなどのコンピューティングデバイスの１つが、各データソースがアイテムのいずれのバージョンを有するかを常に把握し、データソースをアイテムの最新バージョンに同期させる。ユーザは、アイテムおよびデータソースに関するクロスポリネーションを有効にすること、および無効にすることを選択的に行うことができる。
【０００６】
本発明の別の態様によれば、重複検出アルゴリズムが、デバイス群全体にわたる重複データの生成を回避するのを助ける。
【０００７】
さらに別の態様によれば、アイテムの削除は、もはやユーザのフィルタの中にないアイテムに照らして、削除されたアイテムの区別に応じて異なる形で扱われることが可能である。
【０００８】
さらに別の態様によれば、クロスポリネーションは、複数の同期ソースが異なるバージョンの同期プロトコルを利用していても、行われることが可能である。
【発明を実施するための最良の形態】
【０００９】
本明細書および特許請求の範囲の全体で、次の用語は、文脈によってそうでないことが明らかに規定されない限り、ここで明示的に関連付ける意味を帯びる。「クロスポリネーション」という用語は、複数の同期ソースからのデータを混ぜること（ｍｉｘｉｎｇ）、または混合すること（ｃｏ−ｍｉｎｇｌｉｎｇ）を指す。
【００１０】
例示的な動作環境
図１を参照すると、本発明を実施するための１つの典型的なシステムが、コンピューティングデバイス１００などのコンピューティングデバイスを含む。非常に基本的な構成では、コンピューティングデバイス１００は、通常、少なくとも１つの処理装置１０２、およびシステムメモリ１０４を含む。コンピューティングデバイスの正確な構成およびタイプに依存して、システムメモリ１０４は、揮発性（ＲＡＭなどの）、不揮発性（ＲＯＭ、フラッシュメモリなどの）、またはこの２つの何らかの組み合わせとすることができる。システムメモリ１０４は、通常、オペレーティングシステム１０５、１つまたは複数のアプリケーション１０６を含み、プログラムデータ１０７を含むことが可能である。一実施形態では、アプリケーション１０６は、同期アプリケーション１２０を含むことが可能である。この基本的な構成を図１に破線１０８内のコンポーネントで例示している。
【００１１】
コンピューティングデバイス１００は、追加の機構または機能を有することも可能である。例えば、コンピューティングデバイス１００は、例えば、磁気ディスク、光ディスク、またはテープなどの追加のデータ記憶装置群（リムーバブルな装置および／または固定の装置）も含むことが可能である。そのような追加のストレージを図１に、リムーバブルストレージ１０９および固定ストレージ１１０で例示している。コンピュータ記憶媒体には、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータなどの情報を格納するために任意の方法または技術で実装される揮発性媒体と不揮発性媒体、リムーバブルな媒体と固定の媒体が含まれることが可能である。システムメモリ１０４、リムーバブルストレージ１０９、および固定ストレージ１１０はすべて、コンピュータ記憶媒体の例である。コンピュータ記憶媒体には、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリまたは他のメモリ技術、ＣＤ−ＲＯＭ、デジタルバーサタイルディスク（ＤＶＤ）または他の光ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージまたは他の磁気記憶装置、あるいは所望の情報を格納するのに使用することができ、コンピューティングデバイス１００がアクセスすることができる他の任意の媒体が含まれるが、以上には限定されない。あらゆるそのようなコンピュータ記憶媒体が、デバイス１００の一部とすることができる。コンピューティングデバイス１００は、キーボード、マウス、ペン、音声入力デバイス、タッチ入力デバイスなどの入力デバイス１１２も有することが可能である。ディスプレイ、スピーカ、プリンタなどの出力デバイス１１４も含まれることが可能である。
【００１２】
コンピューティングデバイス１００は、デバイスが、ネットワークなどを介して、他のコンピューティングデバイス群１１８と通信することができるようにする通信接続１１６も含むことが可能である。通信接続１１６は、通信媒体の一例である。通信媒体は、通常、搬送波などの変調されたデータ信号、または他のトランスポート機構におけるコンピュータ可読命令、データ構造、プログラムモジュール、またはその他のデータによって実現され、あらゆる情報配信媒体が含まれる。「変調されたデータ信号」という用語は、信号内に情報を符号化するような形で特性の１つまたは複数が設定、または変更されている信号を意味する。限定としてではなく例として、通信媒体には、有線ネットワークまたは直接有線接続などの有線媒体、ならびに音響媒体、ＲＦ媒体、赤外線媒体、およびその他の無線媒体などの無線媒体が含まれる。本明細書で使用するコンピュータ可読媒体という用語には、記憶媒体と通信媒体がともに含まれる。
【００１３】
図２は、本発明の１つの典型的な実施形態で使用することができるモバイルコンピューティングデバイスを示す。図２を参照すると、本発明を実施するための１つの典型的なシステムが、モバイルコンピューティングデバイス２００のようなモバイルコンピューティングデバイスを含む。モバイルコンピューティングデバイス２００は、プロセッサ２６０、メモリ２６２、ディスプレイ２２８、およびキーパッド２３２を含む。メモリ２６２は、一般に、揮発性メモリ（例えば、ＲＡＭ）および不揮発性メモリ（例えば、ＲＯＭ、フラッシュメモリなど）を含む。モバイルコンピューティングデバイス２００は、メモリ２６２の中に存在し、プロセッサ２６０上で実行される、マイクロソフトコーポレーションからのＷｉｎｄｏｗｓ（登録商標）  ＣＥオペレーティングシステム、または別のオペレーティングシステムなどのオペレーティングシステム２６４を含む。キーパッド２３２は、（通常の電話機上などの）プッシュボタン数字ダイヤリング（ｎｕｍｅｒｉｃ  ｄｉａｌｉｎｇ）パッド、（従来のキーボードなどの）マルチキーキーボードとすることができる。ディスプレイ２２８は、液晶ディスプレイ、あるいはモバイルコンピューティングデバイスにおいて一般に使用される他の任意のタイプのディスプレイとすることができる。ディスプレイ２２８は、タッチセンス型とすることができ、その場合は、入力デバイスとしても動作する。
【００１４】
１つまたは複数のアプリケーションプログラム２６６が、メモリ２６２に読み込まれ、オペレーティングシステム２６４上で実行される。同期アプリケーションが、モバイルコンピューティングデバイス２００上に常駐し、同期アプリケーション（タスク）群を実行するようにプログラミングされている。同期アプリケーションは、デバイスのハードウェアまたはソフトウェアの中に存在することが可能である。モバイルコンピューティングデバイス２００は、メモリ２６２内部に不揮発性ストレージ２６８も含む。不揮発性ストレージ２６８は、モバイルコンピューティングデバイス２００の電源が切られた場合に失われてはならない永続的な情報を格納するのに使用することができる。
【００１５】
モバイルコンピューティングデバイス２００は、１つまたは複数の電池として実装することができる電源装置２７０を含む。電源装置２７０は、電池を補足する、または充電するＡＣアダプタ、または電源付きドッキングクレイドル（ｐｏｗｅｒｅｄ  ｄｏｃｋｉｎｇ  ｃｒａｄｌｅ）などの外部電源をさらに含むことも可能である。
【００１６】
モバイルコンピューティングデバイス２００は、２つのタイプのオプションの外部通知機構、すなわち、ＬＥＤ２４０およびオーディオインタフェース２７４と共に示されている。これらのデバイスは、電源装置２７０に直接に結合して、アクティブ化された場合、プロセッサ２６０、およびその他のコンポーネントが電池の電力を節約するためにシャットダウンしても、通知機構によって決められた期間にわたってオンのままであるようにすることができる。オーディオインタフェース２７４は、可聴信号をユーザに与えるため、および可聴信号をユーザから受け取るために使用される。例えば、オーディオインタフェース２７４は、電話の会話を容易にするなどの目的で、可聴出力を提供するためにスピーカに結合し、可聴入力を受け取るためにマイクに結合することができる。
【００１７】
モバイルコンピューティングデバイス２００は、通信を送受信する機能を実行する無線インタフェースレイヤ２７２も含む。無線インタフェースレイヤ２７２は、モバイルコンピューティングデバイス２００と外部世界の間の無線接続を円滑にする。一実施形態によれば、無線インタフェースレイヤ２７２への伝送、およびレイヤ２７２からの伝送は、オペレーティングシステム２６４による制御の下で行われる。つまり、無線インタフェースレイヤ２７２によって受け取られた通信は、オペレーティングシステム２６４を介してアプリケーションプログラム群２６６に伝搬されることが可能であり、その逆も同様に可能である。
【００１８】
複数の同期ソースのクロスポリネーション
図３は、本発明の態様によるクロスポリネーション同期システムを示す。ユーザは、デバイス１（３０５）などのコンピューティングデバイスを、それぞれが「同期ソース（ｓｙｎｃ  ｓｏｕｒｃｅ）」と見なされる複数のコンピューティングデバイスと同期させることができる。
【００１９】
典型的なクロスポリネーションシナリオでは、ユーザは、通常、２つの同期ソースと同期される単一のデバイスを有する。ユーザは、デバイスを両方のソースと同期させ、クロスポリネーションが、それらのソースが互いに常に同期しているようにする。複数のソース上のアイテムに対して変更が同時に行われた場合、ソース間で変更を行き来させ（ｓｈｕｔｔｌｅ）、競合を解決するのにユーザのデバイスが使用される。ユーザのデバイスは、各同期ソースがアイテムのいずれのバージョンを有するかを常に把握しており、ソースのそれぞれをアイテムの最新バージョンに同期させる。
【００２０】
クロスポリネーションの例として、ユーザが、自分のＰＤＡデバイス（３０５）を自宅ＰＣ（３１５）と同期させ、職場（Ｗｏｒｋ）ＰＣ（３１０）とも同期させるものと想定されたい。同期されると、デバイス（ＰＤＡデバイス３０５、職場ＰＣ３１０、および自宅ＰＣ３１５）のそれぞれは、アイテムＡ３２０を含む。ユーザが、自分のＰＤＡを職場ＰＣと同期させた場合、アイテムＡが、ＰＤＡによって受け取られる。ユーザが、自分のＰＤＡを自宅ＰＣと同期させた場合、職場ＰＣからＰＤＡに来たアイテムＡが、自宅ＰＣに自動的に送られる。さらに、自宅ＰＣ上で作成されたいずれのアイテムも、クロスポリネーションが有効にされた場合、ＰＤＡを介して職場ＰＣに自動的に送られる。
【００２１】
一実施形態によれば、ユーザは、ソース間でクロスポリネーションを有効にすること、および無効にすることができる。つまり、ユーザは、ソース間でクロスポリネートさせること、またはアイテムを別々にしておくことができる。このクロスポリネーション設定は、いつでもオンに切り替えること、およびオフに切り替えることができる。例えば、ユーザは、自宅ＰＣ（３１５）とクロスポリネートする能力をオフにすることができる。自宅ＰＣに対してクロスポリネーションが無効にされている場合、職場ＰＣからのアイテムは、自宅ＰＣに移らない。さらに、ユーザは、１つのソースを別個にしておき、他の２つのソースをクロスポリネートさせておくこともできる。この柔軟性は、どのようにデータが同期されるかをユーザが完全に管理できるようにするのに役立つ。
【００２２】
一実施形態によれば、デバイスが単一のソースともはや同期していない場合、データのすべてが、デバイスから削除される。データは、デバイス上に残されることも可能である。デバイスが２つまたはそれ以上のソースと同期している場合、データは、デバイス上に残される。というのは、デバイスは、別のソースと同期しているからである。同期する相手となっていないデータソースに関するＩＤ列がクリアされ、そのソースに関する追跡データが削除される。
【００２３】
図４は、本発明の態様による、クロスポリネーションを有効にすること、および無効にすることを示す。クロスポリネーション同期デバイス群は、デバイス群が同期されている相手のソース群を認知している。一実施形態によれば、同期ソース構成情報が、モバイルデバイス上に格納され、ＡｉｒＳｙｎｃプロトコルを利用する。構成情報は、他の場所に格納されることが可能であり、デバイス群は、他の同期プロトコルを利用することができる。
【００２４】
一実施形態によれば、管理者（ａｄｍｉｎｉｓｔｒａｔｏｒｓ）が、デバイスが同期することができる相手のソースの数を制限するポリシーを、デバイス上で設定する。この機能を使用して、デバイスが同期することができる相手のソースを所定の数に制限することにより、クロスポリネーションを阻止することができる。他の実施形態によれば、任意の許可されたユーザが、デバイス上でポリシーを設定することができる。
【実施例１】
【００２５】
実施例１は、１つのデータソース（職場ＰＣ３１０）をＰＤＡ３０５と同期させることを示す。見て取ることができるとおり、アイテムＡが、両方のデバイス上で複製（ｒｅｐｌｉｃａｔｅ）されている。
【実施例２】
【００２６】
実施例２は、第２のデータソース（自宅ＰＣ３１５）を追加することを示す。ＰＤＡ３０５が、職場ＰＣと自宅ＰＣの両方と同期させられ、各デバイスは、すべてのデバイス上のアイテムのそれぞれを含む。最初、職場ＰＣ上に存在したアイテムＡが、ＰＤＡ３０５および自宅ＰＣに複製される。最初、自宅ＰＣ上に存在したアイテムＢが、ＰＤＡ３０５および職場ＰＣに複製される。
【実施例３】
【００２７】
実施例３は、デバイス上で作成されたアイテムを職場ＰＣと同期させ、職場ＰＣと自宅ＰＣがクロスポリネートすることを許さないように同期設定を変更することを示す。見て取ることができるとおり、デバイス上で作成されたアイテムＣが、職場ＰＣと同期されているが、自宅ＰＣにはクロスポリネートされていない。
【実施例４】
【００２８】
実施例４は、デバイス上で作成されたアイテムが職場ＰＣに同期され、自宅ＰＣ上で新たに作成されたアイテムが職場ＰＣにクロスポリネートされないことを示す。この実施例では、アイテムＤが、自宅ＰＣ上で作成され、デバイスと同期されるが、職場ＰＣとは同期されない。
【実施例５】
【００２９】
実施例５は、すべてのデバイスにわたって新たに作成されたアイテムをクロスポリネートさせるように同期設定を変更することを示す。この実施例では、アイテムＥが、職場ＰＣ上で作成され、デバイスおよび自宅ＰＣと同期されている。一実施形態によれば、異なる同期設定の下で作成されたアイテムは、それらの同期設定を保持する。例えば、実施例３および実施例４に示す、異なる同期設定の下で作成されたアイテムＣとアイテムＤは、クロスポリネートされない。
【実施例６】
【００３０】
実施例６は、自宅ＰＣ同期ソースを除去することを示す。一実施形態によれば、除去されたデバイス上で作成されたあらゆるアイテムも、それがそのアイテムの唯一のインスタンスである場合、その他同期デバイス群から除去される。この実施例では、アイテムＤは、デバイスから除去されるが、アイテムＢは、職場ＰＣとも同期されていたため、除去されない。
【００３１】
図５は、本発明の態様による典型的な同期テーブルアーキテクチャを示す。一実施形態によれば、ＳＱＬ−ＣＥを使用して同期状態が保持される。
【００３２】
ＤＢファイル（５１０）は、同期される各データタイプについて単一のテーブルを含む。この例は、連絡先、カレンダ、およびタスクを同期させることを示す。あるアイテムに対する変更が、多くのテーブルの中で生じることが可能であるため、アイテムが編集された場合はいつでも、そのアイテムに関連するＬａｓｔＭｏｄｉｆｉｅｄフィールド（５４０）が更新される。これは、すべての変更が認識され、同期されることを確実にするのに役立つ。アイテムテーブル、カテゴリ関連付けテーブル、または他のあらゆる関係のあるテーブルの中のアイテムに対する変更により、ＬａｓｔＭｏｄｉｆｉｅｄフィールドの更新がトリガされる。一実施形態によれば、値は、現在のデバイスの日付と時刻（Ｄｅｖｉｃｅ  Ｄａｔｅ  ａｎｄ  Ｔｉｍｅ）に設定される。このフラグは、アイテムに対する更新のたびにタッチ（ｔｏｕｃｈ）され、ＳＱＬ−ＣＥ変更追跡システムがあらゆるアイテム変更を適切に追跡することを確実にするのに役立つ。例示するとおり、最終変更日時（ｌａｓｔ  ｍｏｄｉｆｉｅｄ）列が、連絡先テーブル（５２４）、カレンダテーブル（５２０）、およびタスクテーブル（５２２）に追加される。最終変更日時列は、アイテムが変更されるたびに毎回、更新される。
【００３３】
以下は、テーブル内のアイテムの典型的な説明である。
【００３４】
【表１】
0004726508.tif 000002
【００３５】
【表２】
0004726508.tif 000003
【００３６】
本発明の一実施形態によれば、各データソースに関するカスタムプロパティ（Ｓｙｎｃ  Ｃｕｓｔｏｍ  Ｐｒｏｐｓ５５６０）が、レジストリの中に格納される。それらのカスタムプロパティには、同期エンジンが把握しておく詳細が含まれる。一実施形態によれば、サーバは、ユーザ名、パスワード、ドメイン、および規則を把握している。デスクトップソースは、ユーザ名、パスワード（オプション）、ドメイン、規則、およびマシン名を把握している。
【００３７】
以下は、本発明の態様による典型的なデータソースアプリケーションプログラムインタフェースのリストである。
【００３８】
【表３−１】
0004726508.tif 000004
【００３９】
【表３−２】
0004726508.tif 000005
【００４０】
ハード削除とソフト削除の区別
図６は、本発明の態様によるソフト削除およびハード削除を示す。一実施形態によれば、同期プロトコルは、アイテムがフィルタから脱落する場合（もはや同期されない場合）、または物理的に削除される場合、そのアイテムに関する削除を下降させる（ｓｅｎｄ  ｄｏｗｎ）。一実施形態によれば、アイテムクロスポリネーションに関するフィルタ設定は、デバイス全体に及ぶ設定である。複数のクロスポリネーションソースにわたるフィルタ外（ｏｕｔ−ｏｆ−ｆｉｌｔｅｒ）削除の伝播に伴うデータ損失の可能性のため、ソフト削除とハード削除とを区別するのに役立つようにハード削除コマンドが使用される。
【００４１】
「ハード削除」という用語は、ストアのそれぞれからアイテムを物理的に削除することを指す。ハード削除は、すべてのクロスポリネーティングソースにわたって伝播する。「ソフト削除」という用語は、アイテムがフィルタから外れたことを指す。ソフト削除は、デバイスからアイテムを取り除くが、削除を他のいずれのソースにも伝播させない。
【００４２】
同期プロトコルのバージョンがソフト削除をサポートしていない場合、削除コマンドが受け取られると、デバイスは、デバイスのストアからだけアイテムを削除する。つまり、削除は、クロスポリネートされない。アイテムが、前回の同期以来、フィルタに入ることになることが可能であるため、ソフト削除は、同期セッションの終りに行われる。
【００４３】
例えば、削除６２０で示すとおり、アイテム６１０が、サーバからソフト削除され、このアイテムは、デバイスから削除されるが、自宅ＰＣからは削除されない。他方、アイテムが職場ＰＣからハード削除された場合、削除６２５で示すとおり、アイテム６１０は、デバイスおよび自宅ＰＣから削除される。デバイスが、存在しないアイテムに関する削除コマンドを受け取った場合、削除コマンドは無視される。
【００４４】
重複検出
図７は、本発明の態様により、アイテムをデバイスに追加するコマンドを処理することを示す。アイテムがデバイスに追加される前に、重複検出チェックが完了される。重複検出チェックを実行することは、クロスポリネートされている、異なるデバイス上で重複が作成されないことを確実にするのに役立つ。一実施形態によれば、重複検出は、アイテムプロパティ比較に基づき、重複検出コードが、デバイス（図３に示すデバイス３０５のような）上に実装される。
【００４５】
ブロック７１０で、デバイスは、同期されているデータソースから追加コマンドを受け取る。ブロック７１５に進むと、デバイスは、追加されるべきアイテムのハッシュ値を計算し、同一のハッシュ値を有する他のアイテムがないか、ストアを探索する。ハッシュ値を使用して、アイテムが一意に特定される。アイテムを一意に特定する他のやり方を使用してもよい。判定ブロック７２０に進むと、デバイスがクロスポリネートしているかどうかについての判定が行われる。
【００４６】
判定ブロック７２５でハッシュが見つかった場合、デバイスは、そのアイテムを重複と見なし、判定ブロック７３５に進む。同期ハッシュが見つからなかった場合、プロセスは、ブロック７３０に進み、アイテムがデバイスに追加され、同期処理保留ビットが設定される。判定ブロック７３５で、見つかったアイテムが現在、そのデータソースと同期されている場合、ブロック７３０で、アイテムが作成され、同期処理保留フィールドが設定される。一実施形態によれば、デバイスは、一致する同期ハッシュを有するデバイス上のアイテムが、ソースと既に同期されている場合、いずれのアイテムも重複とは見なさない。
【００４７】
アイテムが現在、データソースと同期されていない場合、プロセスは、ブロック７４０に進み、そのアイテムが、重複として検出される。その時点で、デバイスは、デバイスが既に有するバージョンを保持し、単に、その新たなアイテムのＩＤを既存のレコードに追加する。
【００４８】
図８は、本発明の態様による典型的な重複検出シナリオを示す。一般に、アイテムがデバイスに追加されると、アイテムプロパティのサブセットについてＳｙｎｃＨａｓｈ（８１０）が計算される。アイテムＡは、ＨＡＳＨ１０１（８１５）という同期ハッシュ値を有する。デバイスは、追加されるべきアイテムを受け取ると、新たなアイテムのＳｙｎｃＨａｓｈを既存のアイテムと比較し、デバイスが重複を検出することが可能になる。
【００４９】
ステップ１を参照すると、アイテムＡが、サーバ１からデバイスに既に同期されている。その時点で、アイテムＡは、ＨＡＳＨ１０１というＳｙｎｃＨａｓｈ値を有してサーバ１とデバイスの上にある。ステップ２で、ユーザが、自分のデバイスからサーバ１にアイテムＡをコピーして、サーバ１上にアイテムＢを作成する。アイテムＢは、アイテムＡと同一のＳｙｎｃＨａｓｈ値を有する。ステップ３で、デバイスがサーバと同期されると、アイテムＢが、デバイス上で作成される。というのは、デバイスは、既にサーバと同期されているからである。
【００５０】
ハッシュを計算すること
同期ハッシュを計算する際、２つのレベルのプロパティレベル照合が使用される。
（正確なデータ比較（１次キーセット））：フィールドのセットが、アイテムを重複と見なすために比較される１次プロパティとして定義される。フィールドのこのセットは、各データタイプに関して異なることが可能である。選択されるフィールドのセットは、大幅なコード変更なしに、コード内で適合させることができなければならない。これには、ヘッダファイルの中でフィールドをリストアップして、試験プロセス中にアルゴリズムを調整できるようにすることが含まれる可能性がある。
（プロパティの存在（２次キーセット））：ほとんど完全に包括的なフィールドのより大きいセットが、それらのプロパティの中にデータが単に存在するかチェックするために使用される。これは、あるアイテムにおいてあるフィールドが設定されており、別のアイテムにおいてそのフィールドが空白である場合、１次キーが一致しても、それらのアイテムは、互いの複製とは見なされないことを確実にするのに役立つ。
【００５１】
ハッシュを格納すること／更新すること
アイテムが最初に同期されると、ＳｙｎｃＨａｓｈが計算され、アイテム上に格納される。ＳｙｎｃＨａｓｈ値は、既に同期されているアイテムに対して編集が行われた場合に更新される。以下は、本発明の一実施形態による、連絡先、カレンダ、およびタスクに関する典型的な１次キーセットおよび２次キーセットである。同期されるべき他のアイテムに関する１次キーセットおよび２次キーセットを作成するのに、他のプロパティが使用される。
【００５２】
【表４】
0004726508.tif 000006
【００５３】
【表５】
0004726508.tif 000007
【００５４】
【表６】
0004726508.tif 000008
【００５５】
アイテムにクロスポリネーション向けのマークが付けられている場合、デバイス上で利用可能なデータは、その他のデータソース群にクロスポリネートされる。デバイスの制限のために、アイテムの切り詰められた（ｔｒｕｎｃａｔｅｄ）バージョンが、クロスポリネートされる可能性がある。一実施形態によれば、切り詰めが行われた場合、テキスト［メッセージが切り詰められました］が、メモ（Ｎｏｔｅｓ）フィールドの終りに追加される。したがって、ユーザは、自分が完全な元のコピーを有していないことに気付く。
【００５６】
デバイス上の同期エンジンはまず、データソースからのすべてのＡｄｄを要求する。エンジンは、まだ残っているすべてのＡｄｄをデータソースに送る（ｓｅｎｄ  ｕｐ）（重複するＡｄｄｓにはマークが付けられており、したがって、発行されない）。
【００５７】
一実施形態によれば、デバイス上のアイテムは、３つのプロパティを把握している。ＳｅｒｖｅｒＩＤ値およびＳｙｎｃＨａｓｈ値が、各アイテム上にカスタムプロパティとして格納される。
【００５８】
【表７】
0004726508.tif 000009
【００５９】
ＳｅｒｖｅｒＩＤプロパティは、次の４つの状態を有する。すなわち、
【００６０】
【表８】
0004726508.tif 000010
【００６１】
図９は、本発明の態様による、デバイス上に既存するアイテムの複製に関する追加コマンドを処理することを示す。複製と見なされるアイテムに関して、プロセスは、ブロック９１０に進み、追加コマンドが変更コマンドに変換される。アイテム全体をデバイスにコピーする代りに、アイテムが更新される。ブロック９２０で、プロパティリストが既知のスキーマと比較される。ブロック９３０に進み、提供されていなかった既知のプロパティに関して、明示的な削除が変更コマンドに追加される。ブロック９４０は、更新されたコマンドを示す。ブロック９５０で、変更コマンドが処理される。
【００６２】
異なる同期バージョンにわたるクロスポリネーション
複数同期プロトコルバージョンクロスポリネーションをサポートするのに役立ち、不要な書き込みを最小限に抑えるため、プロパティレベル変更追跡が実施される。各同期プロバイダは、同期させるプロパティセットを知っていること、およびその同期プロバイダが留意するプロパティの変更が行われた場合にだけ同期を開始することを担う。同期プロバイダは、同期プロバイダが認知しているプロパティだけを変更するため、デバイス上のアイテムが、一部のプロパティはｖ１サーバからであり、残りのプロパティは、ｖ３サーバだけが同期させる結合されたプロパティセットを含むことが可能である。
【００６３】
図１０は、本発明の態様によるｖ１サーバとｖ３サーバとをクロスポリネートさせることを示す。異なるバージョンの同期プロトコルは、異なるプロパティをサポートする。図示した例では、Ｖ１プロトコルは、プロパティＡおよびＢをサポートし、Ｖ３プロトコルは、プロパティＡ、Ｂ、およびＺをサポートする。
【００６４】
最初、デバイスは、Ｖ１サーバまたはＶ３サーバと同期されていない。９１０で、デバイスはまず、Ｖ１サーバと同期され、アイテムＡおよびＢを受け取る。次に、９２０で、デバイスは、Ｖ３サーバと同期される。アイテムＡおよびＢは、重複として検出され、アイテムＡ、Ｂ、およびＺがデバイスに同期される。９３０で、デバイスがＶ１サーバと再び同期される際、同期は全く行われない。とういのは、アイテムＺが唯一の変更であり、アイテムＺは、Ｖ１サーバによってサポートされていないからである。
【００６５】
図１１は、本発明の態様による典型的な同期シナリオを示す。ステップ１１１０は、アイテムＡが、自宅ＰＣおよび職場サーバに対して以前にクロスポリネートされていることを示す。１１２０で、アイテムＡが編集され、アイテムＡのバージョン２（ｖ２）が作成される。デバイスは、１１３０で職場サーバと同期され、バージョン２が、デバイスに同期される。次に、ブロック１１４０で、デバイスは、自宅ＰＣと同期される。デバイスは、サーバｗｉｎｓに設定されているため、アイテムＡ（バージョン１）が、この時点で、デバイス上にある。デバイスが職場サーバと再び同期される際、競合は全く存在せず、アイテムＡ−バージョン１が、その時点で職場サーバ上に存在する（１１５０）。
【００６６】
図１２は、本発明の態様による典型的な同期シナリオを示す。ステップ１２１０は、アイテムＡが、自宅ＰＣと職場サーバに対して以前にクロスポリネートされていることを示す。１２２０で、同期キーが職場サーバにおいて０の値を有することが特定される。ユーザは、ブロック１２３０で、職場サーバＩＤが削除される（１２２４）ようにクロスポリネーションを行っている。ブロック１２４０に進むと、同期が白紙の状態から開始され、デバイスが、アイテムＡをデバイスに追加することを要求する追加コマンドを受け取る。このアイテムは、重複として検出され、自宅ＰＣからのアイテムが保持される。職場サーバＩＤが、アイテムタグに追加される。
【００６７】
データソースを作成すること
図１３は、本発明の態様によるデータソース作成を示す。開始ブロック後、プロセスは、ブロック１３１０に進み、新規のデータソースに関するアカウント情報が取得される。ブロック１３２０の後、新規のデータソースをシステムに登録する要求が行われる。ブロック１３３０で、データソースタイプが、データソースに関連するタイプに設定される。一実施形態によれば、データソースタイプは、デバイスのタイプ、すなわち、ＤｅｓｋｔｏｐＳｙｎｃおよびＳｅｒｖｅｒＳｙｎｃに関連する。次に、ブロック１３４０で、マシン名が記録される。これは、デスクトップ同期情報が失われた場合に、デバイスがデスクトップに再接続することができる（ほとんどのケースで）ようにするのに役立つ。次に、プロセスは、終了ブロックに進み、他のアクションを処理することに戻る。
【００６８】
データソースを取り除くこと
図１４は、本発明の態様によるデータソースを取り除くためのプロセスを示す。データソースを削除することにより、データソース、およびそのデータソースが同期させていたアイテムのすべてが削除される。アイテムが、複数のデータソースに対して同期中であった、または同期処理保留である場合、そのアイテムは削除されない。
【００６９】
開始ブロック後、プロセスは、ブロック１４１０に進み、デバイスがいくつのソースと同期されているか特定される。判定ブロック１４２０に進み、１つだけのデータソースが存在する場合、プロセスは、ブロック１４３０に進み、削除済みのデータソースと同期されているアイテムが、デバイスから取り除かれる。複数のデバイスが存在する場合、プロセスは、ブロック１４４０に進み、デバイス上のクロスポリネートされていないアイテムが取り除かれる。ブロック１４５０に進み、削除されたソースのＩＤが、デバイスから取り除かれる。一実施形態によれば、そのデータソースに関するカスタム列が、アプリケーションテーブル群から取り除かれる。一実施形態によれば、いずれのデータを取り除く前にも、警報メッセージがユーザに与えられる。
【００７０】
以下は、さらに明確化するための実施例である。デバイスが、連絡先およびカレンダを第１のソースと同期させており、デバイスは、カレンダおよびタスクを第２のソースと同期させているものと想定されたい。次に、ユーザが、第１のソースを削除する。第１のソースを削除した結果、連絡先のすべてが、デバイスから削除される。カレンダアイテムおよびタスクはデバイス上に残され、第１のソースのＩＤが取り除かれる。
【００７１】
同期がずれているデータソース情報の調停
図１５は、本発明の態様による同期がずれているデータソース情報の調停を示す。
【００７２】
以下の実施例を使用して説明する。職場ＰＣがもはや認知していないデバイス上にデータソース（職場ＰＣ）が存在する。これは、多くの理由で生じる可能性がある。例えば、これは、ユーザが、同期プログラムを再インストールする、またはマシンを再構築する必要がある場合に生じる可能性がある。デバイスデスクトップに接続すると、デスクトップは、デバイスと同期されるようにセットアップされたデータソースをデバイスが既に有することに気付く（１５１０）。これは、デバイス上のデータソースのネットワークマシン名を職場ＰＣの名前と比較することによって特定される。既存のデスクトップソースが削除され、新規のデスクトップソースが作成される。
【００７３】
デバイスがもはや認知しないデータソースがデスクトップ上に存在する。これは、例えば、デバイスがコールドブート（ｃｏｌｄ  ｂｏｏｔ）された場合に生じる可能性がある。デスクトップ上に格納されたデータソースのＤｅｖｉｃｅＩＤをデバイスのＤｅｖｉｃｅＩＤと比較することにより、同期ソース（デスクトップと同期するのに使用したデバイス）を判定することができ、デバイスが、デスクトップと同期されるように再びセットアップされるべきかどうかが判定される。ユーザが「はい」と答えた場合、ユーザに対して新規のデータソースが作成される。
【００７４】
以上の明細、例、およびデータにより、本発明の構成の製造および使用の完全な説明が提供される。本発明の趣旨および範囲を逸脱することなく、本発明の多数の実施形態を実施することができ、本発明は、本明細書に添付した特許請求の範囲に存する。
【図面の簡単な説明】
【００７５】
【図１】本発明の１つの典型的な実施形態において使用することができる典型的なコンピューティングデバイス群を示す図である。
【図２】本発明の１つの典型的な実施形態において使用することができる典型的なコンピューティングデバイス群を示す図である。
【図３】クロスポリネーション同期システムを示す図である。
【図４】クロスポリネーションを有効にすること、および無効にすることを示す図である。
【図５】典型的な同期テーブルアーキテクチャを示す図である。
【図６】ソフト削除およびハード削除を示す図である。
【図７】アイテムをデバイスに追加するコマンドを処理することを示す図である。
【図８】典型的な重複検出シナリオを示す図である。
【図９】デバイス上に既存するアイテムの複製に関する追加コマンドを処理することを示す図である。
【図１０】ｖ１サーバとｖ３サーバをクロスポリネートさせることを示す図である。
【図１１】典型的な同期シナリオを示す図である。
【図１２】典型的な同期シナリオを示す図である。
【図１３】データソース作成を示す図である。
【図１４】データソースを取り除くためのプロセスを示す図である。
【図１５】本発明の態様による同期がずれているデータソース情報の調停を示す図である。
【符号の説明】
【００７６】
１００  コンピューティングデバイス
１０２  処理装置
１０４  システムメモリ
１０５  オペレーティングシステム
１０６  アプリケーション群
１０７  プログラムデータ
１０９  リムーバブルストレージ
１１０  固定ストレージ
１１２  入力デバイス
１１４  出力デバイス
１１６  通信接続
１１８  他のコンピューティングデバイス
１２０  同期プログラム
２００  モバイルコンピューティングデバイス
２２８  ディスプレイ
２３２  キーパッド
２６０  プロセッサ
２６２  メモリ
２６６  アプリケーション
２６８  ストレージ
２７０  電源装置
２７２  無線インタフェースレイヤ
２７４  オーディオインタフェース
３０５  デバイス１
３１０  職場ＰＣ
３１５  自宅ＰＣ
６１０  アイテム
６２０、６２５  削除
【図１】
0004726508.tif 000011
【図２】
0004726508.tif 000012
【図３】
0004726508.tif 000013
【図４】
0004726508.tif 000014
【図５】
0004726508.tif 000015
【図６】
0004726508.tif 000016
【図７】
0004726508.tif 000017
【図８】
0004726508.tif 000018
【図９】
0004726508.tif 000019
【図１０】
0004726508.tif 000020
【図１１】
0004726508.tif 000021
【図１２】
0004726508.tif 000022
【図１３】
0004726508.tif 000023
【図１４】
0004726508.tif 000024
【図１５】
0004726508.tif 000025