(57)【特許請求の範囲】
【請求項１】
複数のプロセッサおよび前記プロセッサによる実行のためのプログラムを記憶するメモリを含むサーバにおいて、
同期に先立ちアプリケーションデータに検索を行うために使用される１つ以上の検索基準を決定するステップであって、前記１つ以上の検索基準は複数の検索基準の中からクライアントによって指定され、順序付けられる、ステップと、
前記１つ以上の検索基準に従い、前記サーバにおける検索機構を使用して前記サーバにおける全てのアプリケーションデータから情報を選択するステップであって、前記選択された情報内のデータは、前記検索基準に従い優先度が付けられる、ステップと、
前記選択された情報を同期のために前記クライアントに伝送するステップと、
前記クライアントに正常に同期された前記伝送された情報のレコードを付けるステップと、
を含む方法。
【請求項２】
前記クライアントからクライアントアプリケーションデータ変更およびクライアントアプリケーションデータを受信するステップをさらに含み、前記クライアントアプリケーションデータを受信するステップは、前記選択された情報を前記クライアントに前記伝送することから独立して、かつ、これと同時に行われる、請求項１に記載の方法。
【請求項３】
前記選択された情報は、前記サーバにおけるデータおよびデータへの変更オペレーションを含み、前記データは、高い優先度から低い優先度に並べられ、かつ前記クライアントに同期され、前記変更オペレーションは、前記サーバにおいて各変更オペレーションが発生したときに基づき古いものから新しいものに時系列で並べられ、かつ前記クライアントに同期される、請求項１または２に記載の方法。
【請求項４】
前記伝送するステップは、同時に動作する２つの独立した同期機構をさらに含み、第１の同期機構が、優先度の順に前記情報の第１の部分を同期させ、第２の同期機構が、時系列で前記情報の第２の部分を同期させる、請求項１または２に記載の方法。
【請求項５】
前記検索基準は、複数のカテゴリを含む、請求項１に記載の方法。
【請求項６】
前記検索基準は、前記データコンテンツのラベルおよびフィールドのうちの少なくとも１つに関する、請求項１または５に記載の方法。
【請求項７】
前記ラベルは、ユーザによって変更不能な属性ラベルおよび前記ユーザによって変更可能な非属性ラベルをさらに含む、請求項６に記載の方法。
【請求項８】
１つ以上のプロセッサと、
前記１つ以上のプロセッサに接続されたメモリと、
前記メモリに記憶され、前記１つ以上のプロセッサによる実行のために構成された１つ以上のプログラムであって、請求項１乃至7のいずれか１項に記載の方法を行う命令を含む前記１つ以上のプログラムと、
を含む、サーバ。
【請求項９】
コンピュータシステムの１つ以上のプロセッサによる実行のために構成された１つ以上のプログラムであって、請求項１乃至7のいずれか１項に記載の方法を行うために前記１つ以上のプロセッサによって実行される命令を含む前記１つ以上のプログラムを記憶する記憶装置。
【請求項１０】
プロセッサおよび前記プロセッサによる実行のためのプログラムを記憶するメモリを有するクライアントにおいて、
サーバから通信を受信して、前記クライアントと前記サーバとの間で情報を同期させるステップと、
前記サーバから前記情報を受信するステップであって、前記情報は、複数の検索基準の中から前記クライアントによって指定され、順序付けられた１つ以上の検索基準に従い、検索機構によって、前記サーバにおけるアプリケーションデータから選択され、前記選択された情報内のデータは、前記検索基準に従い優先度が付けられる、ステップと、
前記サーバから受信した前記情報の少なくとも一部に従い、前記クライアントにおけるアプリケーションデータを同期させる動作を行うステップと、
を含む、方法。
【請求項１１】
前記情報は、前記クライアントにおけるアプリケーションデータに追加、削除または修正オペレーションのうち少なくとも１つを行う命令を含み、前記情報は、前記クライアントへの伝送前に、前記サーバにおいて高い優先度から低い優先度に並べられる、請求項１０に記載の方法。
【請求項１２】
前記受信するステップが、同時に動作する２つの独立した同期機構をさらに含み、第１の同期機構が、優先度の順に前記情報の第１の部分を同期させ、第２の同期機構が、時系列で前記情報の第２の部分を同期させる、請求項１０または１１に記載の方法。
【請求項１３】
未同期のクライアントアプリケーションデータ変更および未同期のクライアントアプリケーションデータを前記サーバに同時に送信するステップをさらに含み、前記送信するステップが、前記情報を受信するステップから独立して、かつこれと同時に行われる、請求項１０または１１に記載の方法。
【請求項１４】
１つ以上のプロセッサと、
前記１つ以上のプロセッサに接続されたメモリと、
前記メモリに記憶され、前記１つ以上のプロセッサによる実行のために構成された１つ以上のプログラムであって、請求項１０乃至１３のいずれか１項に記載の方法を行う命令を含む前記１つ以上のプログラムと、
を含む、クライアント。
【請求項１５】
コンピュータシステムの１つ以上のプロセッサによる実行のために構成された１つ以上のプログラムであって、請求項１０乃至１３のいずれか１項に記載の方法を行うために前記１つ以上のプロセッサによって実行される命令を含む前記１つ以上のプログラムを記憶する記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
[0001]  開示される実施形態は概して、クライアント‐サーバの相互作用の分野に関し、特に、クライアント装置とサーバとの間のデータの同期に関する。
【背景技術】
【０００２】
[0002]  多くのソフトウェアアプリケーション（例えば、電子メール）は、クライアント装置およびサーバシステムの両方で、または、サーバシステムからの助力を得てクライアント装置において動作するよう設計されている。こうしたアプリケーションは、ユーザがクライアント装置またはサーバのいずれで操作しているかにかかわらず、ユーザがデータを自由に作成、受信、伝送および修正することを可能にする。クライアントとサーバとの間のデータの同期は、クライアントおよびサーバに存在するアプリケーションデータ間の整合性を維持させることができる。効率性を理由として、クライアント装置は一般的に主にローカルに記憶されたデータを用いて動作するため、同期は重要である。一般的な一実装は、クライアント‐サーバアプリケーションに関連したデータの完全なセットをサーバにおいて記憶し、かつ、ユーザに関連するか、またはユーザによって通常使用されるデータのサブセットをクライアント装置において保持することである。サーバデータをクライアント装置に同期させるとき、同期方法の多くは、同期されたデータの使用を許可する前に、完全なローカルキャッシュのプライミング（priming）を必要とする。実際、同期は典型的に、全か無かのプロセスである。ローカルキャッシュが完全にプライミング（primed）されない場合、データのいずれもクライアントによって使用することができない。
【０００３】
[0003]  クライアントは一般に、メモリによって制約されるので、サーバに存在するアプリケーションデータのサブセットを含む。クライアントに同期させるためのサーバアプリケーションデータは、クライアントのユーザに最も関連する情報が同期されるように選択されるべきである。従来の同期機構の多くは、同期のためにユーザに関連する情報を選択し優先度を付ける能力を欠いている。例えば、情報データを組織化するためにフォルダを使用する同期システムにおけるデータは限定的である。これらのデータは、データ同期の間、１つのフォルダに関連付けられて分類されるのみでありうる。さらに、アプリケーションデータがフォルダに分類されていないシステムは、同期のためのデータの選択が一層困難になる。既存の同期機構の欠点を克服する、より柔軟なシステムが望ましい。
【発明の概要】
【０００４】
［実施形態の概要］
[0004]  いくつかの実施形態では、サーバからクライアント装置の情報を同期させるための方法は、クライアントにおいて、サーバから通信を受信して、クライアント装置とサーバとの間の情報を同期させることを含み、この情報は、検索機構によって、１つ以上の検索基準に従い、サーバにおける全てのアプリケーションデータから選択され、サーバからの伝送に先立ち、順番に並べられ、かつ、サーバから受信した情報の少なくとも一部に従いクライアントにおけるアプリケーションデータを同期させるオペレーションを行うことを含む。
【０００５】
[0005]  他の実施形態では、本方法は、クライアントへの伝送前に、サーバにおいて並べられたように、高い優先度から低い優先度の順で、クライアントにおけるアプリケーションデータに、オペレーションの追加、削除および修正のうち少なくとも１つを行う命令を有する情報を含む。
【０００６】
[0006]  また別の実施形態では、本方法の受信は、同時に動作する２つの独立した同期機構を含み、第１の同期機構は、優先度の順に情報の第１の部分を同期させ、第２の同期機構は、時系列で情報の第２の部分を同期させる。
【０００７】
[0007]  いくつかの実施形態では、本方法は、サーバから情報を受信する責任を負う１つ以上の同期機構から独立している同期機構において、未同期のアプリケーションデータ変更を同時にサーバに対して送信することを含む。
【０００８】
[0008]  別の実施形態では、本方法は、選択された情報が、クライアントに伝送される情報を特定の順序で優先度を付けることができるように優先度が付けられうる検索機構によって行われる検索を含む。
【０００９】
[0009]  本開示のいくつかの実施形態は、サーバがクライアントと情報を同期させるための方法であって、サーバにおいて、同期に先立ちアプリケーションデータに検索を行うために使用される１つ以上の検索基準を決定することと、サーバにおける検索機構を使用し１つ以上の検索基準に従い、サーバにおける全てのアプリケーションデータから情報を選択することと、選択された情報をクライアントに伝送することと、クライアントに正常に同期された伝送された情報のレコードを付けることとを含む方法を含む。
【００１０】
[0010]  いくつかの実施形態では、本サーバ方法は、選択された情報をクライアントに伝送する責任を有する１つ以上の同期機構から独立している同期機構において、未同期のアプリケーションデータ変更を同時にクライアントから受信することを含む。別の実施形態では、未同期のアプリケーションデータ変更は、選択された情報をクライアントに伝送する責任を有する同期機構に対して連続的に同期されうる。
【００１１】
[0011]  他の実施形態では、本サーバ方法の選択された情報は、サーバにおけるデータアイテムおよびデータへの変更オペレーションの両方を含むことができる。データは、高い優先度から低い優先度に並べられかつクライアントに同期される。変更オペレーションは、サーバで各変更オペレーションがいつ発生したかに基づき古いものから新しいものに時系列で並べられかつ同期される。
【００１２】
[0012]  いくつかの実施形態では、本サーバ方法の伝送は、同時に動作する２つの独立した同期機構を含み、第１の同期機構は、優先度の順に情報の第１の部分を同期させ、、第２の同期機構は、時系列で情報の第２の部分を同期させる。
【図面の簡単な説明】
【００１３】
[0013]  本発明の本質および実施形態の理解を深めるために、以下の実施形態の説明および図面を参照されたい。図面において同様の符号は対応する部分を示す。
【００１４】
【図１】[0014]  図１は、本発明のいくつかの実施形態に従うクライアント‐サーバベースのネットワークシステムを示す図である。
【図２】[0015]  図２は、本発明のいくつかの実施形態に従うクライアント‐サーバベースのネットワークシステムにおける例示的なサーバを示すブロック図である。
【図３】[0016]  図３は、本発明のいくつかの実施形態に従うサーバと相互作用する例示的なクライアントを示すブロック図である。
【図４】[0017]  図４は、本発明のいくつかの実施形態に従うサーバとクライアント間の例示的な同期相互作用スキームを示す図である。
【図５】[0018]  図５は、本発明のいくつかの実施形態に従うデータ同期のための検索を行うための例示的な検索仕様を示す図である。
【図６】[0019]  図６は、本発明のいくつかの実施形態に従う例示的なコンフィギュレーション仕様を示す図である。
【図７】[0020]  図７は、本発明のいくつかの実施形態に従うメッセージなどの例示的なデータに含まれる情報を示す図である。
【図８】[0021]  図８（Ａ）〜（Ｄ）は、本発明のいくつかの実施形態に従うアプリケーションデータのセットから情報を選択する例示的な検索ベースの機構を示す図である。
【図９】[0022]  図９は、本発明のいくつかの実施形態に従う検索機構によって選択されたサーバデータを受信するクライアントの例示的な方法を示すフロー図である。
【図１０】[0023]  図１０は、本発明のいくつかの実施形態に従う検索機構によって選択されたサーバアプリケーションデータを送信するサーバの例示的な方法を示すフロー図である。
【発明を実施するための形態】
【００１５】
［実施形態の説明］
[0024]  本発明は、クライアント‐サーバシステムに関し、クライアントとサーバとの間のアイテムの同期の方法およびシステムに対応する。本開示は、データの同期のための検索ベース仕様を説明する。この実装は、検索基準に基づく検索のリストによって同期を制御する。検索ベースのデータ同期は、サーバおよびクライアントにおいて独立して操作されうるアプリケーションデータおよびアプリケーションデータ変更を有する全てのタイプのクライアント‐サーバアプリケーションの同期に適用可能である。
【００１６】
[0025]  図１は、例示的なクライアント‐サーバベースのネットワークシステムを概略的に示す。クライアント‐サーバベースのネットワークシステムは、サーバ１０２、通信のためのネットワーク１０４、および複数のクライアント装置１０６Ａ−Ｃを含む。本システムの一般的な実装は、少なくとも１つのサーバ、少なくとも１つの通信ネットワーク、および複数のクライアント装置を有することが理解されるべきである。別のコンフィギュレーションでは、本システムは、複数のサーバ、複数のネットワーク、および複数のクライアント装置を含んでもよい。
【００１７】
[0026]  いくつかの実施形態では、サーバ１０２およびクライアント１０６を接続するネットワーク１０４は、プライベートまたはパブリックネットワークであることができ、データ交換が可能であるようにサーバ１０４とクライアント１０６との間の通信を可能にするために有線または無線であることができる。いくつかの実施形態では、ネットワークは、インターネットであることができ、他の実施形態では、通信ネットワークは、プライベートであるか、またはユーザのグループにアクセスを制限するセキュリティを有しうる。後者の場合、ネットワークはＬＡＮでありうる。ネットワーク１０４の他の実施形態は、ＷｉＦｉネットワークおよび／またはＷｉＭａｘネットワークも含みうる。ネットワーク１０４の別の実施形態は、携帯電話およびスマートフォンなどのモバイル装置によるデータの伝送および受信を可能にするセルラーネットワークでありうる。このようなセルラーネットワークは、料金を支払った加入者のみがこれにアクセスできる場合、プライベートであるとみなすことができる。
【００１８】
[0027]  クライアント装置１０６は、多様な形態を取りうる。いくつかの実施形態では、クライアント装置は、コンピュータサーバと通信するローカルコンピュータでありうる。他の実施形態では、クライアント装置は、パーソナルデジタルアシスタント（ＰＤＡ）、スマートフォンまたは携帯電話の１つでありうる。クライアント装置は、サーバにおいても動作するソフトウェアアプリケーションを動作させうるか、または、サーバにおいて動作するアプリケーションバックエンドと協働するアプリケーションフロントエンドを動作させうる。サーバ１０２は、管理、データストレージリクエスト、アプリケーションの組織化および／または実行に関連したオペレーションを行うことができる。本開示においては、クライアント１０６およびサーバ１０２は、同期されるアプリケーションデータおよびアプリケーションデータ変更を記憶することができるメモリを含む。サーバおよびクライアントのより詳細な説明は、以下の図２および図３においてそれぞれなされる。
【００１９】
[0028]  図２は、図１を参照して記載されたクライアント‐サーバベースのネットワークシステムにおける例示的なサーバのブロック図である。サーバ２００は典型的には、１つ以上の処理装置（ＣＰＵ）２０２、１つ以上のネットワークまたは他の通信インターフェース２０６、メモリ２０５、およびこれらの構成要素を相互に接続するための１つ以上の通信バス２０４を含む。メモリ２０５は、ＤＲＡＭ、ＳＲＡＭ，ＤＤＲ  ＲＡＭなどの高速ランダムアクセスメモリ、またはその他のランダムアクセス固体記憶装置、および、磁気ディスク記憶装置、光学ディスク記憶装置、フラッシュメモリ素子などの不揮発性メモリ、またはその他の不揮発性固体記憶装置を含む。メモリ２０５は、ＣＰＵ２０２から遠隔に位置する１つ以上の記憶装置を任意に含みうる。
【００２０】
[0029]  いくつかの実施形態では、メモリ２０５は、オペレーティングシステム２０７、通信モジュール２０８、サーバアプリケーションモジュール２０９、サーバ同期モジュール２１０およびデータ構成２０７を含む、プログラム、モジュールおよびデータ構成またはこれらのサブセットを記憶する。これらの構成要素の図示した編成は、例示であり、構成要素に起因する機能性の代替的な構成または編成を妨げるものでないことを理解されたい。他の実施形態は、これらの構成要素、及びこれらの構成要素のサブセットまたはスーパーセットに起因する機能を任意に組合せることができる。これは、サーバまたはクライアント装置を参照して本明細書において記載される一切のソフトウェア構成要素にも当てはまる。
【００２１】
[0030]  オペレーティングシステム２０７は、多様な基本的システムサービスを処理するため、およびハードウェア依存タスクを行うためのプロシージャを含む。
【００２２】
[0031]  通信モジュール２０８は、サーバアプリケーション２０９を他のサーバまたはクライアント装置にインターフェース接続するために使用される。通信モジュール２０８を使用するインターフェース接続は、１つ以上の通信ネットワークインターフェース２０６（有線または無線）および、インターネット、その他の広域ネットワーク、ローカルエリアネットワーク、メトロポリタンエリアネットワークなどの１つ以上の通信ネットワークを介して達成される。
【００２３】
[0032]  アプリケーションモジュール２０９は、クライアント駆動のまたはサーバ駆動の種々のアプリケーションを含む。アプリケーションがクライアント駆動のアプリケーションである場合で、アプリケーションがサーバにおいてアクティブであるとき、アプリケーション自体は、クライアント装置における対応するアプリケーションから発せられるコマンドによって駆動される。アプリケーションがサーバ駆動のアプリケーションである場合で、アプリケーションがサーバにおいてアクティブであるとき、サーバにおけるアプリケーションは、クライアント装置における対応するアプリケーションを駆動させる。いくつかの実施形態では、アプリケーションは、クライアントとサーバとにより等しく駆動され、携帯電話などのクライアント装置におけるオペレーションのために構成および適応されることができ、かつ、サーバ同期モジュール２１０を含みうる。
【００２４】
[0033]  サーバ同期モジュール２１０は、クライアントおよびサーバにおいて動作するか、またはクライアントとサーバとの間で協働して動作する（電子メールクライアントおよびサーバアプリケーションの場合と同様）１つ以上のアプリケーションによって使用されうるデータの同期に使用される。同期モジュール２１０は、単一のアプリケーションに特有であるか、１つ以上のアプリケーションに汎化可能な同期コンフィギュレーションを含みうる。一実施形態では、同期モジュール２１０は、ダウンヒル（downhill）同期モジュール２２０、アップヒル（uphill）同期モジュール２８０および同期制御２９０を含む。これらのモジュールの機能は、図３を参照して記載されるクライアントにおけるその対応モジュールに相当する。
【００２５】
[0035]  アップヒル同期モジュール２３０は、クライアントデータ変更（例えば、メッセージが作成された、メッセージが削除された、ラベルが追加または削除された、アポイントメントの情報の変更など）をサーバに同期させる責任を有する。すなわち、アップヒル同期は、クライアントにおけるアプリケーションデータ変更が、サーバアプリケーションデータに反映されることを確かにする。
【００２６】
[0035]  アップヒル同期モジュール２３０は、クライアントデータ変更（例えば、メッセージが作成された、メッセージが削除された、ラベルが追加または削除された、アポイントメントの情報の変更など）をサーバに同期させる責任を有する。すなわち、アップヒル同期は、クライアントにおけるアプリケーションデータ変更が、サーバアプリケーションデータに反映されることを確かにする。ダウンヒル及びアップヒル同期の両者は、2008年10月に出願された関連する特許出願第ｘｘ／ｘｘｘ，ｘｘｘ号に、より詳細に開示され、その全体を本明細書の一部を構成するものとしてここに援用する。
【００２７】
[0036]  同期制御２４０は、通信ネットワークへの接続性、未同期のデータの検出またはデータ同期が行われるときに存在する他の条件に従い、データ同期のオペレーションを制御する。一実施形態では、サーバは、クライアントからの同期リクエストにレスポンスすることによって同期を開始するよう構成されるが、その逆もまた可能である。
【００２８】
[0037]  検索モジュール２５０は、クライアントとのダウンヒル同期に先立ち、サーバによって使用され、サーバにおける所定の基準を満たすデータおよびデータ変更を選択し、ソートする。検索モジュール２５０は、ユーザに最も関連するサーバデータが指定の基準に従い選択され、優先度が付けられ、クライアントに同期されることを可能にし、それにより、最も関連する情報が、より関連しない情報よりも前にクライアントに送信される（expedited）。これらの指定された基準を使用して、検索モジュールは、所望の効果を得るために多様なコンフィギュレーションで検索を行いうる。例えば、一連の基準が使用される場合では、複数の検索が、一度に１つの基準を使用して行われうる。他の実施形態では、単一の検索が基準の組合せを使用して行われうる。種々のコンフィギュレーションの検索の結果は多様なものになる。一実施形態では、種々のコンフィギュレーションの検索は、各データ同期について、データの特定の望ましい順序付けを得るために行われうる。他の実施形態では、様々な時間における同期のため、データまたはデータ変更を種々のグループに分離することが目的でありうる。
【００２９】
[0038]  データモジュール２７０は、アプリケーションモジュール２０９内のアプリケーションによって使用されるアプリケーションデータ２７７、グローバルヒストリテーブル２７１およびクライアントデータ２７３を含む。クライアントデータ２７３は、個別のクライアント２７２Ａ、Ｂのそれぞれについての情報を含む。個別のクライアントのそれぞれについての情報は、同期トークン２７８、クライアントコンフィギュレーションデータ２７９、キャッシュされたクライアントデータ２７６、およびクライアント２８１についての他のデータを含む。
【００３０】
[0039]  グローバルヒストリテーブル２７１は、同期機構の一実施形態では、サーバデータに行われたデータオペレーションについての情報を含み、フォワード同期に使用される。各グローバルヒストリテーブルは、複数のサーバヒストリオペレーション識別（server history operation identifications）（ＳＨＯ  ＩＤ）を含み、各ＳＨＯ  ＩＤは、サーバデータの１つに行われた個別のオペレーションを表す。いくつかの実施形態では、グローバルヒストリテーブルにおける情報は、時系列で記憶されている。
【００３１】
[0040]  同期トークン２７８は、サーバが知っているクライアントの状態に関するサーバによって維持されるデータを表す。いくつかの実施形態では、これらの同期トークンは、アップヒル同期においてサーバが処理したクライアントからの最高位のＣＨＯ  ＩＤを含む。他の実施形態では、同期トークンは、バックワード同期においてクライアントが処理したと確認されたデータの範囲を表す。上述の関連出願で説明したように、これらのトークンは、バックワード同期の間にサーバデータを識別し優先度を付けるために使用される。一意の識別は、正しいデータが同期されることを確かにする。
【００３２】
[0041]  コンフィギュレーション仕様データ２７９は、クライアントとの同期を行うためにサーバによって使用されるコンフィギュレーション情報である。コンフィギュレーション情報は、検索基準（例えば、データのフィールド、データのコンテンツ、データに関連づけられたラベルなど）、同期されるアイテム数、同期されるデータの優先度などを含みうるがこれらに限定されない。
【００３３】
[0042]  キャッシュクライアントデータ２７６は、特定のクライアントに属するサーバにおける他の全てのデータを含み、その他のクライアントアプリケーションデータを含みうるがこれに限定されない。他のクライアント特有データ２８１は、他のアプリケーションについての他の同期に特有の情報を含みうるがこれに限定されない。
【００３４】
[0043]  図３は、サーバと相互作用する例示的なクライアント３００を示すブロック図である。クライアント３００は、一般に１つ以上の処理装置（ＣＰＵ）３０２、１つ以上のネットワークまたは他の通信インターフェース３０６、メモリ３０５、およびこれらの構成要素を相互に接続するための１つ以上の通信バス３０４を含む。通信バス３０４は、システム構成要素を相互接続し、これららの間の通信を制御する回路（チップセットとも呼ばれる）を含みうる。
【００３５】
［0044］  クライアント装置３００は、ディスプレイ３９２といった出力装置、スピーカ（図示せず）などの音声出力およびユーザ入力装置３９４を有するユーザインターフェース３９０を含みうる。ディスプレイ３９２は、アクティブマトリックスディスプレイまたはタッチスクリーンディスプレイなどであることができ、ユーザ入力装置３９４は、例えば、数値入力キーパッド、ソフトキー、タッチパッド、英数字入力キーバッド、またはタッチスクリーンなどの任意の組合せを含みうる。メモリ３０５は、高速ランダムアクセスメモリを含むことができ、また、中央処理装置３０２から遠隔に位置することができる１つ以上の磁気ディスク記憶装置およびフラッシュメモリなどの持ち運び可能な記憶装置などの非不揮発性メモリも含みうる。いくつかの実施形態では、メモリ３０５は、オペレーティングシステム３０１、通信モジュール３０３、グラフモジュール３０７、メモリキャッシュ３０８、クライアントアプリケーションモジュール３１０、クライアント同期モジュール３２０およびデータ３８０を含むプログラム、モジュールおよびデータ構成、またはこれらのサブセットを記憶しうる。
【００３６】
［0045］  オペレーティングシステム３０１は、多様なベーシックシステムサービスを処理するため、およびハードウェア依存タスクを行うためのプロシージャを含む。
【００３７】
［0046］  通信モジュール３０３は、１つ以上の通信ネットワークインターフェース３０６（有線または無線）およびインターネット、他の広域ネットワーク、ローカルエリアネットワーク、メトロポリタンエリアネットワーク、セルラーネットワークなどの１つ以上の通信ネットワークを介して、クライアントアプリケーション３１０をサーバに接続する。
【００３８】
［0047］  メモリキャッシュ３０８は、アクティブなアプリケーションによる素早いアクセスのために情報を一時的に記憶する。記憶される情報の例としては、アプリケーションに特有のメタデータおよび他の情報が含まれうる。一般に、アプリケーションが非アクティブになると、情報は消去される。
【００３９】
［0048］  クライアントアプリケーションモジュール３１０は、クライアント装置３００において実行されることができる１つ以上のアプリケーションを含む。こうしたアプリケーション３１０のいくつかは、サーバ２００と相互作用し、通信、ユーザインターフェース管理、アプリケーションカスタマイゼーション、および電子メール、カレンダー、テキストメッセージ、メディアプレイヤー、文書編集または閲覧ソフトウェアなどを含む特定のクライアントアプリケーションの管理に関連したタスクを行うよう構成される。クライアントアプリケーションは動作中、クライアント装置によって駆動される。
【００４０】
［0049］  クライアント同期モジュール３２０は、クライアント装置またはサーバで独立して動作できるアプリケーションについてのデータの同期に使用される。クライアント同期モジュール３２０は、単一のアプリケーションに特有であるか、または複数のアプリケーションに汎用的である同期スキームを含みうる。一実施形態では、クライアント同期モジュール３２０は、ダウンヒル同期モジュール３２５、アップヒル同期モジュール３０、同期制御３４、およびラベル検索モジュールを含む。これらのモジュールの機能は、サーバにおけるそれらの対応モジュールに相当する。
【００４１】
［0050］  ダウンヒル同期モジュール３２５は、クライアントがサーバからデータ変更を受信することに責任を有する。サーバの対応モジュールと同様に、ダウンヒル同期は、一実施形態では、上述した関連出願においてより詳細に記載される、上述のフォワード同期およびバックワード同期を含む。
【００４２】
[0051]  サーバの対応モジュールにおいて上述された、アップヒル同期モジュール３３０は、クライアントデータ変更をサーバに同期させる責任を有する。サーバとクライアントとの間のデータ変更を同期させるための他の同期スキームも考えられうることを理解されたい。
【００４３】
[0052]  同期制御３４０は、通信ネットワークへの接続性、未同期のデータの検出またはデータ同期が行われるときに存在する他の条件に従い、データ同期のオペレーションを制御する。一実施形態では、クライアントは、サーバへの同期リクエストを開始するよう構成されるが、その逆もまた可能である。
【００４４】
[0053]  データモジュール３８０は、アプリケーションモジュール３１０におけるアプリケーションによって使用されるデータファイルおよびサーバとの同期に使用されるデータを含みうる。いくつかの実施形態では、データモジュール３８０は、サーバとのデータ同期のための同期データ３７０、キャッシュされたデータ３８２およびコンフィギュレーション仕様３８４のうち少なくとも１つを含みうる。
【００４５】
[0054]  同期データ３７０は、いくつかのアプリケーションに特有でありうる同期トークン３７２、ローカル／クライアントヒストリテーブル３７４、および同期データ３７６といった、特有のデータを含みうる。これらのデータは、特にクライアント装置のサーバとの同期に使用される。
【００４６】
[0055]  同期トークン３７２は、クライアントが知っているサーバの状態に関するクライアントによって維持されるデータを表す。いくつかの実施形態では、これらのトークンは、これまでのフォワード同期においてクライアントが処理したサーバからの最高位のＳＨＯ  ＩＤを含む。他の実施形態では、同期トークンは、サーバから最後に受信した確認によって判定される、クライアントがバックワード同期中に処理したデータの範囲を表す。
【００４７】
[0056]  ローカル／クライアントヒストリテーブル３７４は、クライアントにおけるデータ変更に関する情報を含む。このテーブル内の各エントリは、ＣＨＯ  ＩＤを有し、特定のデータオペレーションを表す。特に、ローカル／クライアントヒストリテーブル内の情報は、データのクライアントとのアップヒル同期のために使用されうる。他のアプリケーション３７６に特有の同期データは、種々のアプリケーションに特有の種々のアプリケーションデータである。
【００４８】
[0057]  キャッシュされたデータ３８２は、クライアントにおいて記憶された他のデータを表す。これは、多様な他のアプリケーションに使用されたデータおよびサーバに同期されるデータを含みうる。
【００４９】
[0058]  コンフィギュレーション仕様３８４は、クライアント装置についての特有のコンフィギュレーション情報を含む。この情報は、同期、相互作用、およびアプリケーションの起動およびオペレーションのために、クライアントをサーバにまたは他の装置に識別するために使用されうる。例えば、コンフィギュレーション仕様に含まれる情報は、クライアント識別、クライアントの装置仕様、データが同期されるアプリケーションの識別および同期の基準などを含みうるがこれらに限定されない。
【００５０】
[0059]  本開示において記載される検索ベース仕様は、サーバとクライアントとの間の全ての形態のデータ同期に適用される。検索は、より大きなデータセットからデータのサブセットを選択することを目的とするので、データセットが完璧であるサーバおいて適用されることが多い。検索は、クライアント装置のユーザにとってのデータの関連性に従い優先度が付けられることができるフォーカスデータセット（a focus data set）を生成する。この検索方法は、上述の関連出願において記載される同期方法を補完する。利点の１つは、ユーザが、サーバにおけるデータ変更の同期のための選択および優先度付けをコントロールできるようになることである。検索ベースのデータ同期は、クライアントデータにも適用されうるが、クライアントにおけるデータがより少ない量であることを考慮すると、本検索方法は、一般にクライアントにおいては実装されない。
【００５１】
[0060]  図４は、サーバ４０２とクライアント４０４との間の例示的な同期相互作用スキーム４００を示す。いくつかの実施形態では、コンフィギュレーション同期は、第１の同期開始（the first start synchronization）および主同期（the main synchronization）の前に起きる。従前のステップは、再検討されてもよく、クライアントは、任意に再構成されることができる。同期開始は、クライアントが要請すれば再度起こる。いくつかの実施形態では、同期開始は、バックワード同期に再び優先度を付ける。例えば、電子メールの文脈では、バックワード同期は、会話をロードすることができ、直近のものから開始し、最も古いもので終了する。それゆえこの場合では、同期開始は、「直近（most recent）」の意味を「現時点（now）」を意味するよう再設定する。いくつかの実施形態では、同期開始ハンドシェーク４２１は、サーバ４０２とクライアント４０４との間で行われ、主同期ハンドシェーク４２３によって表される実際のデータ同期プロセスを開始する。一般に、同期開始ハンドシェーク４２１の前に、コンフィギュレーションハンドシェーク４２２が、クライアントに特有の同期コンフィギュレーションを確認するために起こりうる。同期開始ハンドシェーク４２１と主同期ハンドシェーク４２３のいくつかの実施形態は、上述の関連出願において詳述される。例えば、いくつかの実施形態では、同期開始ハンドシェークは、クライアント４０４がサーバ４０２と通信しない期間が続いた後（例えば、通信ネットワークの範囲外、クライアント装置の電源が切れている、クライアントにおけるアプリケーションが終了している、または装置またはサーバが通信ネットワークから切断されている）か、または、クライアントとサーバとの間の第１のデータ同期に先立って開始される。
【００５２】
[0061]  同期開始ハンドシェーク４２１は、クライアントをサーバに識別し、データ同期の起点を確立する。同期開始ハンドシェークのそれぞれは、リクエスト４１１およびレスポンス４１２を有する。いくつかの実施形態では、リクエスト４１１は、クライアントから発生し、リクエストが確認された後で、サーバはレスポンス４１２を送信する。同期開始が、本開示において示されるとおりに主同期の一部として組み込まれてもよく、また完全に除外されてもよいことを理解されたい。さらに、リクエストは、クライアントの代わりにサーバから発生されてもよい。
【００５３】
[0062]  コンフィギュレーションハンドシェーク４２２は、サーバとクライアントとの間のデータ同期のためのパラメータを決定し、確認するよう動作する。コンフィギュレーションパラメータは、同期のためのデータを選択し、ソートするサーバにおける検索機構を制御するよう、クライアントを使用しているユーザによって指定されるかまたは修正されることができる。例示的なハンドシェークでは、クライアントは、コンフィギュレーション仕様リクエスト４１３をサーバに送信し、サーバからコンフィギュレーション仕様レスポンス４１３を受信し、主同期の前にコンフィギュレーション仕様を確認する。他の実施形態では、コンフィギュレーションハンドシェーク４２２は、同期開始ハンドシェーク４２１の一部であるか、または、主同期ハンドシェーク４２３の一部であってもよい。さらに、リクエストは、サーバからクライアントへ発生し、コンフィギュレーション仕様を確認する。
【００５４】
[0063]  主同期ハンドシェーク４２３は、同期のためのサーバデータの範囲が確立された後に起こる。主同期ハンドシェークのそれぞれは、リクエスト４１５、４１７およびレスポンス４１６、４１８を有する。例示的な図では、リクエスト４１５、４１７は、クライアントから送信され、レスポンス４１６、４１８は、サーバによって送信される。いくつかの実施形態では、主同期リクエスト４１５、４１７は、サーバへのアップヒル同期においてクライアントデータ変更を含み、主同期レスポンス４１６、４１８は、クライアントへのダウンヒル同期においてフォワードおよびバックワード同期と関連づけられたサーバデータおよびサーバ変更オペレーションを含む。いくつかの実施形態では、主同期は、サーバまたはクライアントのいずれかに未同期のデータが残存する限り、直ちに繰り返される。さらに、主同期は、サーバとクライアントとの間にアクティブな接続がある限り、固定のインターバルといった所定の条件に従い、またはサーバまたはクライアントのいずれかに新しいデータまたはデータオペレーションがある場合はいつでも、繰り返される。いくつかの実施形態では、同期開始は、例えば一時間といった、予め決められた特定の時間の長期の切断がない限り、またはアプリケーションが終了し再開する（４１９）場合には、繰り返されない。
【００５５】
[0064]  図５は、データ同期のための検索を行うための例示的な検索仕様を示す。いくつかの実施形態では、検索は、データ同期に先立ちサーバにおいて行われる。他の実施形態では、検索は、データが同期されるのと同時に行われてもよい。いくつかの実施形態では、検索仕様５０１は、複数の検索を含みうる。検索５０２、５０５のそれぞれは、１つ以上の検索基準を含みうる。いくつかの実施形態では、これらの検索は、並列にまたは連続して行われうる。検索はまた、データタイプまたは期間に特有でありうる。いくつかの実施形態では、それぞれの検索における検索基準５０２−Ａ、Ｂおよび５０５−Ａ、Ｂは、データの種々のアスペクトを表しうる。例えば、基準は、データ作成日、データ修正日、データに関連付けられたラベル、データ内に存在するエントリのフィールドを含みうるが、これらに限定されない。いくつかの特定の例は、電子メールのメッセージに関連付けられたラベル、電子メールの会話に関連付けられたラベル、送信者、電子メールメッセージまたは会話の件名フィールド、アドレス、電話番号、および連絡先の電子メールフィールド、カレンダーエントリの件名、日付および時間などを含みうるがこれらに限定されない。
【００５６】
[0065]  図６は、コンフィギュレーションハンドシェーク内のコンフィギュレーション仕様のための例示的なリクエストを示す。コンフィギュレーション仕様は、同期に先立ち、サーバにおけるデータを選択しソートするよう検索を構成するための検索機構によって使用されるパラメータを記述する。いくつかの実施形態では、コンフィギュレーション仕様は、検索基準がどのように定義されているかを含む。例えば、検索基準は、特定の順序で検索を行うためにクライアントを介してユーザが指定した多様なラベルを含みうる。換言すると、ラベルは、基準が並べられた順序と検索の結果とが一致するように順序付けられうる。他の実施形態では、基準は、適宜順序付けられうるが、検索を行うための特定の順序を検索機構に知らせる特定のエントリが存在しうる。いくつかの実施形態では、検索基準は、クライアントによってもたらされることができ、他の実施形態では、検索基準は、サーバによって決定されてもよい。
【００５７】
[0066]  図６はまた、同期のためにサーバデータを選択し、優先度を付けるために検索機構によって使用されうる基準の複数のカテゴリを示す。種々のカテゴリの基準が検索に使用されうる。いくつかの実施形態では、検索基準は種々のタイプのラベルを含みうるがこれに限定されない。いくつかの例示的なラベルのカテゴリは、常に含む（always include）６０２、常に除外（always exclude）６０３、持続期間（in-duration）６０４、６０７、６１０、持続期間‐含む（in-duration-include）６０５、６０８、持続期間‐除外（in-duration-exclude）６０６、６０９、および優先度（priority）６１１を含むがこれらに限定されない。いくつかの実施形態では、「常に含む」リストは、データ同期において常に含まれるラベルを含み、「常に除外」リストは、データ同期から常に除外されるラベルを含む。例示を目的として、「常に含む」リストは、「新規」、「仕事」または「星」でラベル付けられた全てのメッセージ／会話／連絡先／カレンダー／タスクを含みうる。「常に除外」リストは、「ごみ」、またはＳＰＡＭとラベル付けられたメッセージ／会話／連絡先／カレンダー／タスクエントリを含みうる。「持続期間」は、データが検索される期間を指定するカテゴリである。
【００５８】
[0067]  例示を目的として、３つの持続期間が説明される。これらは、現在から現在の１週間前までの期間、１週間前から４週間前までの期間、および４週間前から８週間前までの期間を含む。これらの持続期間ラベルは、指定の時間フレーム内でアプリケーションを検索するシステムによって適用されうる。さらに、持続期間‐含む、および持続期間‐除外カテゴリはそれぞれ、各検索における包含または除外に関する時間フレーム内に含まれる属性ラベルおよび非属性ラベルを指定しうる。いくつかの単純な検索規則およびラベルの使用を組み合わせることで、アプリケーションデータを選択し順序付けるための無限の数の方法が使用されることができ、それにより、ユーザにとって最も関連のあるデータが選択され、優先順でクライアントに送信される。データ同期は、しばしば任意の理由のために中断されるため、優先度の高い関連データが、優先度の低いデータの前に同期され、クライアントに送信されることが好ましいことから、クライアントに同期されるアプリケーションデータの順序が重要となりうる。
【００５９】
[0068]  図７は、本開示において記載された検索機構によって使用されうる電子メールメッセージ形式のデータの例示的アイテムを示す。メッセージ７０１は、情報の少なくとも２つのカテゴリであるメタデータ７１０およびコンテンツ７５０を含む。一実施形態では、メタデータ７１０は、メッセージの識別、選択およびソートのために同期機構および検索機構によって使用されうる情報を含む。メタデータの種々のフィールドのいくつかの例は、データ／メッセージＩＤ７１１、属性ラベル７１２、および非属性ラベル７１３を含む。他のメタデータは図示しないが、人気率と、関連言語、関連ロケール、アプリケーションデータがクライアント装置のユーザのプレファレンス（例えば、個人的嗜好）を具体的に満たしているかどうかを識別するフィーチャといった、アプリケーションデータに付帯的なその他の２次的情報とを含みうるがこれらに限定されない。
【００６０】
[0069]  それぞれのデータアイテム内のメタデータ７１０は、ユーザには可視であるか、または不可視であるが、データの状態またはコンテンツが変更されると、システムおよび／またはユーザによって編集されうる。いくつかの実施形態では、データ／メッセージＩＤ７１１は、バックワード同期によって使用される同期トークンと同一でありうる。一実施形態では、このデータ／メッセージＩＤ７１１は、各メッセージ（またはアプリケーションデータ内のアイテム）に対して一意的であり、変更することができない。このデータ／メッセージＩＤ７１１は一般に、同期プロセスの間、データアイテムの識別のために重要である。
【００６１】
[0070]  属性ラベル７１２は、ユーザによって変更できない情報に関するラベルである。これは元来データの一部をなしうる情報を含む。例えば、電子メールメッセージは、常に電子メールメッセージのままであり、連絡先エントリとしてはラベル付けされることはない。
【００６２】
[0071]  非属性ラベル７１３は、ユーザによって変更できるデータのアイテムについての情報を含む。例えば、メッセージはシステムによって当初ＳＰＡＭラベルを有するＳＰＡＭとして分類され、ユーザがユーザを非ＳＰＡＭとマークしないかぎり、ラベルは変更されることはない。同様に、ユーザが新しいメッセージを読んだ後、メッセージはもはや未読ではなく、ユーザがメッセージを意図的に未読とマークしない限り、システムは新しいメッセージに関連づけられた未読ラベルを自動的に取り除く。同様に、非属性ラベル７１３は、アプリケーションデータを分類するためにユーザによって設定され、システムによって影響されない（untouched）ラベルを含みうる。システムは、これらのユーザが考案したラベルには関係しない。しかしながら、システムは、削除およびＳＰＡＭ分類などを含むがこれらに限定されない特定のユーザまたはシステムオペレーションに応答してデータにラベルを適用しうる。
【００６３】
[0072]  いくつかの実施形態では、メッセージへの添付（図示せず）は、システムによって割り当てられる別個のラベル（例えば、属性ラベル）を有しうる。いくつかの実施形態では、ラベルは、添付であることを単に示す表示でありうるか、または、より洗練された実施においては、添付はさらに、添付が相当するデータタイプによってラベル付けされうる。
【００６４】
[0073]  同様に、データアイテム（例えば、メッセージ７０１）のデータコンテンツ７５０もまた、メッセージを識別、選択およびソートするための同期機構および検索機構によって使用されうる情報を含みうる。例えば、データコンテンツ７５０は、さらに、情報の種々のフィールドを含みうる。本例の電子メールメッセージでは、データコンテンツは、送信者７５１、受信者７５２、日付７５３、時間７５４、件名７５５、およびメッセージコンテンツ７５６といったフィールドを含みうる。これらのフィールドのそれぞれは、検索基準として機能することができ、これらのフィールドのそれぞれにおける特定のエントリは、検索機構にとって検索対象でありうる。同期プロセスにおいて、これらのフィールドになされた変更は、データ変更とみなされるため、データ変更がそれぞれサーバまたはクライアントで行われるかにどうかに基づき、データ変更またはアイテム全体がフォワード同期またはアップヒル同期されることになる。
【００６５】
[0074]  図８（Ａ）から（Ｄ）は、データを選択しソートする検索機構の例示的なプロセスを示す。これらの図は、サーバにおけるデータを選択しソートするプロセスを示すが、このプロセスは、クライアントにおいてまたはデータの選択またはソートのための他の場所においても等しく適用される。また、図８（Ａ）は、サーバにおける例示的なアプリケーションデータとしてのメッセージのリストを示すが、他のタイプのアプリケーションデータが、文書、スプレッドシート、チャート、グラフ、写真、ＲＳＳフィードアイテム、インスタントメッセージング（ＩＭ）におけるデータ、ショートメッセージサービス（ＳＭＳ）におけるデータ、連絡先グループ、または他のデータタイプを含みうるがこれらに限定されないことを理解されたい。また例示を目的として、データアイテムが説明に使用されるが、データ変更の枝刈りおよび組織化のために同一の原理がサーバにおいておよびクライアントにおけるヒストリオペレーションに適用されうることを理解されたい。さらに、フォワードまたはアップヒル同期におけるヒストリオペレーションによって表されるデータ変更は、コンフィギュレーション仕様において指定された検索基準に従って検索されることができる。
【００６６】
[0075]  いくつかの実施形態では、図８（Ａ）のアプリケーションデータのリストは、電子メールアプリケーションに関するサーバにおける電子メールメッセージのリストに対応する。いくつかの実施形態では、電子メールメッセージのリストは、バックワード同期のためのバックワード同期トークン（例えば、ＢＳＴ）によって表される一意の識別子をそれぞれ有するデータのリストに対応する。データのリストは、連絡先情報、カレンダーエントリ、またはクライアント‐サーバアプリケーションによって使用される他のデータの形式でありうることを理解されたい。さらに、データの１つのタイプがリストされていても、データの複数のタイプがリストされ、混合されうることを理解されたい。
【００６７】
[0076]  図８（Ａ）におけるメッセージのそれぞれは、検索基準として機能しうる多数のデータ属性（例えば、メッセージコンテンツ、送信者フィールド、日付フィールド、時間フィールド、件名フィールド、ラベルなど）と関連付けられている。本例では、種々のタイプのラベルが主検索基準として使用されており、各メッセージは少なくとも１つのラベルと関連づけられている。上述のとおり、ラベルは、属性ラベルおよび非属性ラベルの少なくとも２つのグループに分類される。メッセージは元来「電子メールメッセージ」という属性ラベル（図示せず）と関連付けられている。図８（Ａ）のメッセージに示すラベルは、一般に非属性ラベルである。例示的説明を目的として、非属性ラベルは、「星」、「仕事」、「プロジェクトＸ」、「ＳＰＡＭ」、「ごみ」、「車」、「ジョディー」、「写真」、「キャンプ」、「母」、「父」、「カナダ」、「株」、「投資」、「ＩＮＧ」、「プロジェクトＹ」、「１０周年同窓会」、「母の日」、「ユタスキー旅行」、「エバ」、「カレッジ」および「未読」を含むがこれらに限定されない。
【００６８】
[0077]  属性および非属性ラベルは、検索のためにさらに分類されうる。例えば、いくつかの実施形態では、図示されるとおりカテゴリは、「常に含む（Ａ‐Ｉｎ‐）」、「常に除外（Ａ‐Ｅｘ‐）」、および「持続期間」を含みうるがこれらに限定されない。「常に含む」として分類されるいくつかの非属性ラベルは、ジョディーおよびボビーを含み、「常に除外」として分類されるいくつかの非属性ラベルは、ＳＰＡＭおよびごみを含む。「持続期間」ラベルは、一般に、期間を定義し、ユーザによって指定されうる。例えば、「持続期間１」は、現在から１週間前までの時間フレームを指し、「持続期間２」は、１週間前から４週間前までの時間フレームを指し、「持続期間３」は、４週間前から８週間前までの時間フレームを指しうる。さらに、「含む」および「除外」サブカテゴリが、これらの「持続期間」カテゴリに追加されてよく、それにより、より詳細なレベルの検索を行うためにラベルはこれらの期間に含まれる（例えば、「持続期間１‐含む」）かまたはこれらの期間から除外されることができる（例えば、「持続期間２−除外」）。いくつかの実施形態では、検索機構が実施される間、検索が行われ、データが選択されるか、または絞り込まれる。選択されたデータは、より広範なデータが特定された後に検索を絞り込むことによって順序付けられうるか、または、データは、検索の連続的な適用に従い順序付けられえ、それにより、検索結果が連続的検索の順番に並べられる。
【００６９】
[0078]  例示的な図において、「常に含む」ラベルを有する全てのメッセージおよび「持続期間１、２、３」に該当するメッセージを選択することによる検索機構の適用から図８（Ｂ）が得られる。図示するとおり、ラベル「Ａ‐Ｅｘ」（例えば、ごみおよびＳＰＡＭなどの常に除外）に関連づけられたメッセージ、および「持続期間１、２、３」の範囲の外にある特定の古いメッセージ（例えば、「１０周年同窓会」、「母の日」、および「ユタスキー旅行」のラベル）は除外される。
【００７０】
[0079]  図８（Ｃ）は、検索機構によって持続期間に従いソートされた選択されたメッセージを示す。例示的説明を目的として、クライアント装置のユーザは、まず直近のメッセージを受信することを好みうる。それゆえ、データ同期の目的上、過去１週間（例えば、現在から１週間前まで）のメッセージは、過去１ヶ月（例えば、１週間前から４週間前まで）中のメッセージの前に並べられ、これは過去２ヶ月中（例えば、４週間前から８週間前まで）のメッセージの前に並べられる。
【００７１】
[0080]  図８（Ｄ）は、データ同期に先立ちユーザが指定したラベルの優先度に従い検索機構によって並べられた、各持続期間におけるメッセージの最終的な順序を示す。例示的説明を目的として、ユーザは、データの全ての範囲について、「未読」、「星」、および「仕事」のラベル順に従いメッセージを優先付けるよう指定することができる。それゆえ、全ての個別の「持続期間」カテゴリにおけるメッセージについて、「未読」メッセージが「星」ラベル付きのメッセージの前に並べられ、「星」ラベル付きのメッセージは、「仕事」ラベル付きのメッセージの前に並べられる。他の実施形態では、ラベルの優先度は、「持続期間」のそれぞれについて個別に指定されうる。残りのメッセージは、適宜並べられうるか、または、検索が行われた順番によって並べられうる。
【００７２】
[0081]  例えば、「持続期間‐１」において、ラベル「投資」および「父」は、「持続期間‐１‐含む」に分類され、ラベル「カナダ」は「持続期間‐１‐除外」に分類される。いくつかの実施形態では、「含む」カテゴリと「除外」カテゴリとの間に対立があるときはいつでも、「含む」カテゴリが「除外」分類よりも優先し、「除外」分類を無効にする（override）。本例では、「父、カナダ」のラベルを有するメッセージは、含みかつ除外するという検索からの対立する命令を有することから、このメッセージは含まれる。しかしながら、検索がサイレント（例えば、「母」）である場合、「母、カナダ」と分類されるメッセージは、「カナダ」のラベルを有するメッセージを除外する規則が有効であるため、除外される。この「母、カナダ」のラベルを有するメッセージは、もともとは持続期間１に含まれていたが、それは「母」ラベルのためではなく、メッセージに関連付けられた日付が「持続期間‐１の分類を満たすためである。「Ａ‐Ｉｎ‐ボビー、キャンプ」のラベルを有するメッセージが含まれているが、これは、「キャンプ」ラベルのせいはなく、持続期間１に該当するメッセージであり、常に含まれるメッセージであるためである。
【００７３】
[0082]  「持続期間２」内のメッセージについて、メッセージは「未読」、「星」および「仕事」の順に従い並べられる。例示的説明を目的として、ラベル「ミュンヘン」は、「持続期間２‐除外」に含まれるため、「ミュンヘン」とラベル付けされたメッセージは、最終リストから除外される。同様に、「Ａ‐Ｉｎ‐ジョディー、写真」および「ＩＮＧ、投資」とラベル付けられたメッセージは、これらのラベルが「持続期間２‐含む」カテゴリに分類されるため、含まれる。
【００７４】
[0083]  「持続期間３」内のメッセージについて、持続期間１および２のように優先度が付けられた「未読」、「星」、「仕事」のラベル順に同様に並べられる。同様に、ラベル「カナダ」は、「持続期間３‐除外」に分類されるので、「カナダ、写真」とラベル付けられたメッセージは除外される。別の実施形態では、ユーザは、持続期間３について、「除外」と関連づけられたラベルが「含む」と関連付けられたラベルに優勢であるよう指定することができるため、ラベル「写真」が「持続期間３‐含む」に分類されているとしても、「カナダ、写真」とラベル付けられたメッセージはやはり除外される。
【００７５】
[0084]  いくつかの実施形態では、オペレーションのアクションを判定するためにアプリケーションでオペレーションが行われる前および後に、検索ベース機構は適用されうる。例えば、ユーザがメッセージにラベルを追加し、そのラベルがメッセージを同期されることから除外するものである場合、クライアント装置にコピーを有する元のメッセージは、サーバにおける対応するアプリケーションデータにラベルが追加された後にクライアント装置から除去される。同様に、メッセージにラベルを追加することは、元のメッセージがクライアントにおいて存在しなくても、クライアントにメッセージを同期させうる。
【００７６】
[0085]  要約すると、検索機構は、サーバにおけるデータに種々の影響を与えうる。第１に、対応するアプリケーションデータがクライアントにおいて存在しない場合、オペレーションは、検索機構がクライアントにおいてアプリケーションデータを追加するか、これを同期させることをもたらしうる。第２に、対応するアプリケーションデータがクライアントにおいて存在する場合、オペレーションは、検索機構がクライアントにおける対応するデータに対して何らのアクションも起こさないことをもたらしうる。第３に、対応するアプリケーションデータがクライアントにおいて存在する場合、オペレーションは、検索機構が対応するクライアントを取り除くことをもたらしうる。第４に、対応するアプリケーションデータがクライアントにおいて存在する場合、オペレーションは、検索機構が、サーバにおけるアプリケーションデータに行われたオペレーションと同様に、対応するデータを編集するかまたはこれに変更を行うことをもたらしうる。
【００７７】
[0086]  図９は、検索機構によって選択されたデータをクライアントが受信する例示的な方法を示すフロー図である。いくつかの実施形態では、ブロック９３１に示すとおり、クライアントはサーバから通信を受信して、クライアント装置とサーバとの間で情報を同期させる。情報は、１つ以上の検索基準に従い全てのサーバアプリケーションデータから検索機構によって選択され、サーバからの伝送前に順番に並べられる。いくつかの実施形態では、検索基準は、クライアントにおいて決定されうる。ブロック９３２において、クライアントは、サーバから受信した情報の少なくとも一部に従い、クライアントにおけるアプリケーションデータを同期させるオペレーションを行う。
【００７８】
[0087]  図１０は、検索機構によって選択されたサーバアプリケーションデータをサーバが送信する例示的な方法を示すフロー図である。ブロック１０３１では、サーバは、同期に先立ちサーバアプリケーションデータに検索を行うために使用される１つ以上の検索基準を決定する。ブロック１０３２では、サーバは、１つ以上の検索基準に従い、サーバにおける検索機構を使用して全てのサーバアプリケーションデータから情報を選択する。ブロック１０３３では、サーバは、選択された情報をクライアントに伝送する。ブロック１０３４では、サーバは、クライアントに正常に同期された伝送された情報のレコードを付ける。
【００７９】
［0088］  上述の記載は、特定の実施形態を参照し例示目的で記載されている。しかしながら、上述の説明的記載は、網羅的であること、または開示された明確な形式に本発明を限定することを意図していない。上述の教示に照らして多数の修正及び変形が可能である。実施形態は、本発明の原理およびその実際の適用を最もよく説明するよう選択され記述されており、それによって、当業者が本発明および意図する特定の使用法に適するよう多様に修正された多様な実施形態を最もよく利用することが可能になる。
【図１】
0005631887.tif 000002
【図２】
0005631887.tif 000003
【図３】
0005631887.tif 000004
【図４】
0005631887.tif 000005
【図５】
0005631887.tif 000006
【図６】
0005631887.tif 000007
【図７】
0005631887.tif 000008
【図８】
0005631887.tif 000009
【図９】
0005631887.tif 000010
【図１０】
0005631887.tif 000011