(57)【特許請求の範囲】
【請求項１】
アプリケーションの第１のインスタンスにおいて、
第１のサーバからプライマリ・アプリケーションデータを取得するステップと、
前記プライマリ・アプリケーションデータに関連付けられるべき補足アプリケーションデータを受信するステップと、
前記プライマリ・アプリケーションデータに少なくとも部分的に基づいて第１の一意の識別子の値を計算するステップと、
前記第１の一意の識別子の値を第２のサーバに転送するステップであって、前記第２のサーバは、前記第１の一意の識別子の値を使用して前記アプリケーションの第２のインスタンスによる前記補足アプリケーションデータの後の取得を可能にする、ステップと、
前記アプリケーションの前記第２のインスタンスにおいて、
前記第１のサーバから前記プライマリ・アプリケーションデータを取得し、該取得したプライマリ・アプリケーションデータを使用して、前記アプリケーションによって使用されるプライマリ設定を識別するステップと、
前記第２のサーバから前記補足アプリケーションデータを取得し、該取得した補足アプリケーションデータを使用して、前記プライマリ設定に対する修正を識別するステップであって、前記修正は、前記プライマリ・アプリケーションデータとともに前記第１のサーバ内に格納することができないデータである、ステップと
を含む、方法。
【請求項２】
前記アプリケーションの前記第２のインスタンスにおいて、
前記プライマリ・アプリケーションデータに少なくとも部分的に基づいて第２の一意の識別子の値を計算するステップと、
前記第２のインスタンスによって生成された前記第２の一意の識別子の値をインデックスとして使用して、前記補足アプリケーションデータを識別し、前記第２のサーバから前記補足アプリケーションデータを取得するステップと
を更に含む、請求項１に記載の方法。
【請求項３】
前記第２のインスタンスによって生成された前記第２の一意の識別子の値を使用することは、
前記アプリケーションの前記第２のインスタンスによって生成された前記第２の一意の識別子の値を前記第２のサーバに転送するステップであって、前記第２のサーバは、前記第２の一意の識別子の値を前記第１の一意の識別子の値と比較することによって、前記第２の一意の識別子の値を前記補足アプリケーションデータにマップする、ステップと、
前記第２のサーバから前記補足アプリケーションデータを受信するステップと
を含む、請求項２に記載の方法。
【請求項４】
第１のストレージサービスプロバイダによって前記第１のサーバを動作させるステップと、
前記第２のサーバを第２のストレージサービスプロバイダとして動作させるステップと、
を更に備え、
前記第２のストレージサービスプロバイダは、前記第１のストレージサービスプロバイダとは異なるエンティティであり、前記補足アプリケーションデータは、プライマリ・アプリケーションデータとして前記第１のサーバ内に格納することができないデータである、
請求項３に記載の方法。
【請求項５】
前記アプリケーションの前記第１のインスタンスにより、
前記補足アプリケーションデータを前記第２のサーバに格納するステップと、
前記第１の一意の識別子の値を前記第２のサーバ内に格納された前記補足アプリケーションデータに関連付けるインデックスエントリを生成するステップと、
前記補足アプリケーションデータを前記第２のサーバから取得するために、前記インデックスエントリを格納するステップと
を更に含む、請求項１に記載の方法。
【請求項６】
前記アプリケーションの前記第２のインスタンスにおいて、前記補足アプリケーションデータを前記第２のサーバから取得するステップは、
前記第１の一意の識別子の値をインデックスとして使用して前記補足アプリケーションデータを識別するステップ、
を含む、請求項１に記載の方法。
【請求項７】
前記プライマリ・アプリケーションデータに少なくとも部分的に基づいて前記第１の一意の識別子の値を計算するステップは、
ハッシュ関数を、前記プライマリ・アプリケーションデータの少なくとも一部と前記アプリケーションの第１のインスタンスを操作しているユーザのユーザ識別情報とに適用して、前記補足アプリケーションデータに関連付けるための前記第１の一意の識別子の値を生成して、前記アプリケーションの前記第２のインスタンスのユーザによる前記補足アプリケーションデータへのアクセスを可能にするステップを含み、
前記プライマリ・アプリケーションデータは少なくとも部分的に、前記アプリケーションの前記第１のインスタンスによって使用されるべき設定情報を指定し、
前記第１の一意の識別子の値によってインデックス付けされる前記補足アプリケーションデータは、前記プライマリ・アプリケーションデータに対する修正を指定する、請求項１に記載の方法。
【請求項８】
前記アプリケーションの前記第２のインスタンスにより、
前記取得したプライマリ・アプリケーションデータを修正するステップと、
前記修正されたプライマリ・アプリケーションデータを前記第１のサーバに格納するステップと、
前記修正されたプライマリ・アプリケーションデータに基づいて第２の一意の識別子の値を計算するステップと、
前記修正されたプライマリ・アプリケーションデータに対する前記第２の一意の識別子の値を前記第２のサーバに転送するステップであって、前記第２の一意の識別子は、前記アプリケーションの後続のインスタンスが、前記アプリケーションの該後続のインスタンスのユーザについて前記プライマリ・アプリケーションデータに関連付けられた補足アプリケーションデータを識別することを可能にする、ステップと
を更に含む、請求項１に記載の方法。
【請求項９】
前記アプリケーションの前記第１のインスタンスは、ユーザにより、ネットワーク環境内の第１の位置で第１のコンピュータにおいて実行され、
前記アプリケーションの前記第２のインスタンス及び前記後続のインスタンスは、前記ユーザにより、前記ネットワーク環境内の第２の位置で少なくとも１つの第２のコンピュータにおいて実行される、
請求項８に記載の方法。
【請求項１０】
コンピュータシステムであって、
少なくとも１つのプロセッサデバイスと；
前記少なくとも１つのプロセッサデバイスによって実行されるアプリケーションに関連付けられる命令を記憶する少なくとも１つのストレージリソースと；
前記少なくとも１つのプロセッサデバイスと前記少なくとも１つのストレージリソースを結合する少なくとも１つの相互接続と；
を備え、前記少なくとも１つの相互接続は、当該コンピュータシステムが前記アプリケーションの第１のインスタンスを実行して、
第１のサーバからプライマリ・アプリケーションデータを取得するステップと、
前記プライマリ・アプリケーションデータに少なくとも部分的に基づいて一意の識別子の値を計算するステップと、
前記第１のインスタンスによって生成される前記一意の識別子の値をインデックスとして使用して、第２のサーバによって格納される補足アプリケーションデータを識別するステップと、
前記第２のサーバから前記識別された補足アプリケーションデータを取得するステップと、
を含む動作を実行することを可能にし、前記アプリケーションの第２のインスタンスが、
前記取得したプライマリ・アプリケーションデータを使用して、前記アプリケーションによって使用されるプライマリ設定を識別する動作と、
前記取得した補足アプリケーションデータを使用して、前記プライマリ設定に対する修正を識別する動作であって、前記修正は、前記プライマリ・アプリケーションデータとともに前記第１のサーバ内に格納することができないデータである、動作と、
をサポートする、コンピュータシステム。
【請求項１１】
前記第１のインスタンスによって生成された前記一意の識別子の値を使用することは、
前記アプリケーションの前記第１のインスタンスによって生成された前記一意の識別子の値を前記第２のサーバに転送することを備え、前記第２のサーバは、前記一意の識別子の値を前記補足アプリケーションデータにマップする、
請求項１０に記載のコンピュータシステム。
【請求項１２】
前記補足アプリケーションデータは、プライマリ・アプリケーションデータとして前記第１のサーバ内に格納することができないデータである、
請求項１１に記載のコンピュータシステム。
【請求項１３】
前記アプリケーションの前記第２のインスタンスは、前記一意の識別子の値をインデックスとして使用して前記補足アプリケーションデータを識別するステップの前に、
前記第１のサーバからプライマリ・アプリケーションデータを取得するステップと、
前記プライマリ・アプリケーションデータに関連付けられるべき補足アプリケーションデータを受信するステップと、
前記プライマリ・アプリケーションデータに少なくとも部分的に基づいて前記一意の識別子の値を計算するステップと、
前記一意の識別子の値を前記第２のサーバに転送するステップと、
を実行する、請求項１０に記載のコンピュータシステム。
【請求項１４】
前記一意の識別子の値を計算するステップは、
前記プライマリ・アプリケーションデータの少なくとも一部にハッシュ関数を適用して、前記一意の識別子の値を生成することを含む、
請求項１０に記載のコンピュータシステム。
【請求項１５】
前記プライマリ・アプリケーションデータは、少なくとも部分的に、前記アプリケーションの前記第１のインスタンスによって使用されるべき設定情報を指定し、
前記一意の識別子の値によってインデックス付けされる前記補足アプリケーションデータは、前記プライマリ・アプリケーションデータに対する修正を指定する、
請求項１４に記載のコンピュータシステム。
【請求項１６】
前記第１のサーバは第１のストレージサービスプロバイダによって動作され、
前記第２のサーバは第２のストレージサービスプロバイダによって動作され、
前記第２のストレージサービスプロバイダは、前記第１のストレージサービスプロバイダとは異なるエンティティである、
請求項１５に記載のコンピュータシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、対応するプライマリ・アプリケーションデータから導出される識別子に基づいて、補足データにアクセスすることに関する。
【背景技術】
【０００２】
コンピュータ及びネットワーク技術の分野において、「クラウド」及び「クラウドコンピューティング」という用語は、しばしば、多くの異なるタイプのコンピュータリソース間における接続性をサポートするコンピュータ、ルータ、サーバ等の根底にあるネットワークインフラストラクチャの抽象概念である、インターネットのような特定のネットワーク技術の象徴として使用される。
【０００３】
いわゆる「クラウドコンピューティング」は、仮想的でサービス指向のアーキテクチャの自発的で実用的なコンピューティングの広範な採択の自然な進化である。ある場合において、クラウドコンピューティングは、特定のアプリケーション機能においてエキスパートであるべきこと又は特定のアプリケーション機能を制御すべきことから、ユーザを抽出する。そのような特徴はクラウド内のサービスによって管理され、クラウドのストレージは多くの場合、クラウドストレージサービスプロバイダとして知られる第三者エンティティによって提供される。したがって、クラウドコンピューティングは、（クラウドストレージサービスプロバイダとは別個のエンティティである）会社のようなエンティティ内のユーザに対して、新たなインフラストラクチャを投資し、新たな人材をトレーニングし、新たなソフトウェアを認可する等を必要とせずに、コンピューティングシステムの容量を増加させる又はコンピューティングシステムに容量を追加する方法を提供することができる。従来のクラウドコンピューティング技術は、ユーザがクラウドに接続するのにどのデバイスを使用するかに関わらず、ユーザに、リモートのドキュメント管理及びストレージ、電子メール及び連絡先の管理等のような例示的なサービスを提供する。この手法では、ユーザは、自身のオフィスにあるデスクトップコンピュータのような、コンピューティングデバイスにおいてクラウド内のドキュメントにアクセスし、その後、家にあるコンピュータのような別のコンピューティングデバイスから同じドキュメントにアクセスすることができる。クラウドストレージにアクセスするアプリケーションは、標準的な広く公開されたアプリケーションプログラミングインタフェース（ＡＰＩ）のセットを使用して、このようなことを行い、クラウドストレージデータフォーマットを予め設定する。
【０００４】
クラウドは、したがって、有益なサービスを個々のユーザに提供するのを助けるため、ユーザによって操作される個々のデバイスは、クラウドによって提供されるサービスに大いに、又は完全に依拠することがある。これは、単一のコンピュータデバイスのような限られた場所にアプリケーションに関連するデータを記憶しなければならないという問題を伴わずに、複数の異なるコンピュータの全てにおいてコンピュータアプリケーションのインスタンスを実行する能力を提供する。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
クラウドコンピューティングのような、異なるコンピューティングデバイス上におけるソフトウェアアプリケーションの異なるインスタンスの実行を可能にする従来の技術の使用は、幾つかの不備を生じる可能性がある。例えば第三者のクラウドストレージサービスは、固有のＡＰＩを使用する固有のデータフォーマットの固有のデータ（例えば所与の予め定められたレコードフォーマット又はＸＭＬのようなデータフォーマットの連絡先データ）のクラウドストレージを提供する。複数の第三者ソフトウェア会社がそれぞれ、この固有のデータフォーマットでクラウドに格納されたデータにアクセスするソフトウェアプログラム（例えば連絡先管理ソフトウェア）を開発し、販売することがある。そのようなソフトウェアのあるベンダが、ユーザが補足データをその連絡先情報に追加できるようにするソフトウェアの新しい又は更新されたバージョンを作成することを望む可能性がある。例としてソフトウェアの新しいバージョンは、ユーザが、人々の連絡先情報を好ましい又はお気に入りとして識別できるようにする可能性がある。このような場合において、クラウドストレージの所定の連絡先レコード又はデータフォーマットが、補足データの追加を可能にするのに適用可能でないために、クラウドストレージサービスプロバイダは、この補足データの格納をサポートしない可能性がある。これは、連絡先データを全て管理する異なるソフトウェアプログラムの多くのベンダが、同じクラウドストレージサービスを使用する可能性があるので、連絡先データフォーマットが特定のベンダからの新たなデータストレージ要件に迅速に適合しないという事例であり得る。この問題が従来の状況において起こるとき、ソフトウェアの新たなバージョンは、補足データをローカルストレージデバイス（例えばソフトウェアの新たなバージョンのインスタンスが現在動作しており、インストールされているユーザのデスクトップコンピュータのディスクシステム）に格納しなければならない。この従来のアプローチによる１つの問題は、ユーザが別のコンピューティングデバイス上で同じソフトウェア（例えばユーザのモバイルデバイス上で実行中のソフトウェアの別のインスタンス）を実行する場合、他のコンピュータシステム上で作成された補足データが、モバイルデバイス上の同じユーザのソフトウェアの同じバージョンに利用可能にならない、ということである。これは、クラウドストレージが補足データのストレージをサポートせず、またモバイルデバイスは、その補足データを作成するのにユーザが使用した他のコンピューティングデバイスのローカルディスクにアクセスする方法がないためである。
【課題を解決するための手段】
【０００６】
本明細書で開示される実施形態は概して、上記で検討した従来の技術の欠点を克服する。本明細書の実施形態は、補足（ｓｕｐｐｌｅｍｅｎｔａｌ）データ（例えばクラウドストレージのような第三者ストレージプロバイタによって格納されるプライマリデータに対する修正又は追加に関連付けられるデータ）を、ユーザによって操作される複数のデバイスによってアクセス可能な第２のリモート位置（例えばクラウドとは別に、又はクラウドストレージに加えて）格納する１つ又は複数の方法を含む。検討したように、補足データが、複数のデバイスの各々に対して利用可能であるので、異なるコンピューティングデバイスにおいて所与のソフトウェアアプリケーションを使用するユーザは、これらの異なるデバイスのいずれかにおいてアプリケーションのインスタンスを実行することができ、本明細書で開示される技術及び機構により、ソフトウェアのこれらの別個のインスタンスに、クラウドによって格納されるデータに加え、第２のストレージ位置（例えば複数のユーザコンピューティングデバイスに対してアクセス可能であって、補足データの格納をサポートする、第２のクラウドストレージエリア又は企業のサーバ）に格納される補足データを提供することが可能になる。
【０００７】
一例において、ユーザは、ネットワーク内の第１のコンピューティングデバイス上でアプリケーションの第１のインスタンスを実行する。第１のインスタンスは、ユーザが個々の人々の連絡先データを管理できるようにする、連絡先管理ソフトウェアプログラムであると想定する。アプリケーションの第１のインスタンスにより、ユーザはプライマリ・アプリケーションデータを第１のサーバから取得する。このプライマリ・アプリケーションデータは、例えば所与のクラウドストレージベンダによって操作される（第１のサーバによって格納される）クラウドストレージに必要な、予め定義された又は固定のデータフォーマットで格納されたデータであり得る。アプリケーションの第１のインスタンスの使用の間に、ユーザは、第１のインスタンスを操作して、プライマリ・アプリケーションデータに関連付ける補足アプリケーションデータを生成することができる。例えばユーザは、プライマリ・アプリケーションデータ内において、お気に入りの連絡先を識別することが可能になる連絡先管理ソフトウェアの新たなバージョンを購入することがある。プライマリ・アプリケーションデータを所与のデータフォーマットで格納する第１のサーバ又は第１のサービスプロバイダ（例えばクラウドストレージベンダによって操作されるクラウドコンピューティング環境）は、クラウドストレージデータのフォーマットが補足データの格納に対応していないために、補足アプリケーションデータの格納をサポートすることができない可能性がある。この問題を克服するために、アプリケーションの第１のインスタンスは、（例えばユーザから）補足アプリケーションデータを受信し、この補足アプリケーションデータをプライマリ・アプリケーションデータに関連付ける。例えば一実施形態に置いて、補足アプリケーションデータをプライマリ・アプリケーションデータに関連付けるために、アプリケーションの第１のインスタンスは、一意の識別子（例えばハッシュ値）をプライマリ・アプリケーションデータの少なくとも一部に基づいて計算する。特定の実施形態において、一意の識別子の値を生成することは、ハッシュ関数をプライマリ・アプリケーションデータの少なくとも一部に適用して一意の識別子の値を生成することを含むことができる。他の例では、一意の識別子内に、アプリケーションの第１のインスタンスを操作しているユーザに関連付けられるユーザ識別情報のハッシュを含める。アプリケーションの他のインスタンスは、一意の識別子の値、並びに補足アプリケーションデータを、補足アプリケーションデータの後の取得のために第２のサーバに転送する。第２のサーバは、例えばクラウドストレージとは異なるが、（連絡先管理ソフトウェアプログラムの独立のインスタンスをそれぞれ実行する）ユーザの様々なコンピューティングデバイスからアクセス可能な企業のイントラネットにおけるストレージを提供するサーバとすることができる。第２のサーバは、一意の識別子により、ユーザのデバイス上のアプリケーションの１つ又は複数の他のインスタンスのいずれかによる補足アプリケーションデータの後の取得を可能にし、したがって、クラウドストレージ（すなわち第１のサーバ）が補足データの格納をサポートしていないとしても、各デバイスにおけるユーザエクスペリエンスが、補足データに対するアクセスを含むことが可能になる。
【０００８】
例示的な実施形態の更なる詳細は、以下で、図面並びに詳細な説明及び特許請求の範囲を参照しながら提供される。例示的な実施形態の予備的な議論は、いかなる実施形態を指定するものではなく、及び／又は本開示又は特許請求に係る発明の新規な態様を付加的に指定するものではない。代わりに、この簡単な説明は単に、一般的な実施形態及び従来の技術に対する新規性の対応するポイントを提示するものである。本発明の更なる詳細及び／又は可能な観点（置換）、及び新規性の更なるポイントについて、読み手を、以下で更に検討されるような、以下の「発明を実施するための形態」というセクション、及び本開示の対応する図面に向ける。異なる実施形態に関連する追加の詳細を提供することに加えて、以下の「発明を実施するための形態」は、諸実施形態の更なる要約を含む。したがって、この簡単な説明は、本発明の範囲及び／又は添付の特許請求の範囲を限定するものではない。
【０００９】
本発明の上述及び他の目的、特徴及び利点は、添付の図面において説明されるような以下の本明細書における好ましい形態のより具体的な説明から明らかになるであろう。図面においては、同様の参照番号が、異なる図における同じ部分を指す。図面は必ずしも、実施形態、原理、概念等を示すものを強調してスケーリングされていはいない。
【図面の簡単な説明】
【００１０】
【図１】本明細書における実施形態に従って、アプリケーションの第１のインスタンスが、第２のサーバにおいて補足アプリケーションデータを生成及び後続の格納を開始するネットワーク環境を示す例示的な図である。
【図２】本明細書における実施形態に従って、アプリケーションの第１のインスタンスが、第２のサーバにおける補足アプリケーションデータに対する後続のインデックス化のために一意の識別子の値を生成するネットワーク環境を示す例示的な図である。
【図３】本明細書における実施形態に従って、アプリケーションの第２のインスタンスが、第２のサーバからの記憶済みアプリケーションデータの取得を開始するネットワーク環境を示す例示的な図である。
【図４】本明細書における実施形態に従って、アプリケーションの第２のインスタンスが、一意の識別子の値を使用して第２のサーバからの記憶済みアプリケーションデータの取得を開始するネットワーク環境を示す例示的な図である。
【図５】本明細書における実施形態に従って、プライマリ・アプリケーションデータと補足アプリケーションデータとをマッピングする一意の識別子の値の使用を示す例示的な図である。
【図６】本明細書における実施形態に従って、グラフィカルユーザインタフェースに情報を表示するアプリケーションインスタンスによるプライマリ・アプリケーションデータと補足アプリケーションデータとの使用を示す例示的な図である。
【図７】本明細書における実施形態に従って、アプリケーションのインスタンスを実装する例示的なコンピュータアーキテクチャを示す例示的な図である。
【図８】本明細書における実施形態に従って、対応する補足アプリケーションデータの後の取得のために一意の識別子の値を生成する例示的な方法を示すフローチャートである。
【図９】本明細書における実施形態に従って、対応する補足アプリケーションデータの後の取得のために、取得されたプライマリ・アプリケーションデータに基づく一意の識別子の値の生成を示す例示的な図である。
【発明を実施するための形態】
【００１１】
本明細書で開示される例示的な実施形態は、異なるコンピューティングデバイス上であるソフトウェアアプリケーションの複数のインスタンス（例えばラップトップコンピュータ、デスクトップコンピュータ及びモバイルデバイス上で同じプログラム）を使用するユーザが、これらのアプリケーションインスタンスによって作成された全てのデータに対するアクセスを有することができるようにする機構を提供する。このシステムは、アプリケーションによって作成され、格納されたデータ（すなわちプライマリデータ）の一部が、例えば制限された又は所定のデータフォーマットを有する第三者ベンダによって操作され得るクラウドストレージに格納される状況に対応する。アプリケーションにより、ユーザが補足データを作成することができる場合（例えばアプリケーションの新たなバージョンが、データフォーマットの制限があるクラウドストレージでは格納することができない補足的なユーザデータのストレージを必要とする向上したユーザ機能のために提供される可能性がある）、本明細書で開示される機構は、そのようなアプリケーションが、この補足データを第２のストレージサービスプロバイダによって提供される第２のストレージ（例えばユーザのコンピューティングデバイスがアクセスを有する企業のイントラネットによって操作される非クラウドのストレージ）に格納する。
【００１２】
一実施形態によると、アプリケーションのプライマリデータを、クラウドコンピューティング環境内でリモートに配置される第１のストレージサービスプロバイダで格納することができる。本明細書で使用されるとき、プライマリデータという用語は、アプリケーションが、例えばクラウドサーバであり得る第１のサーバ上の第１のサービスプロバイダ内に格納することができるデータを含む。アプリケーションのユーザは、プライマリデータを、第１のストレージサービスプロバイダによってサポートされない方法で修正したいことがある。そのような修正、追加又は同様のものを、本明細書では、第１のストレージサービスプロバイダによって操作される第１のサーバ内に格納することができない（すなわち、例えばクラウドストレージが、そのデータフォーマット又はレコードフォーマットの補足データを提供していないために、クラウド内に格納することができない）補足データと称する。言い換えると、第１のストレージサービスプロバイダは、ユーザがプライマリデータに対して行いたいと思う変更及び／又は追加（補足データ）であって、ユーザのコンピューティングデバイスの全てにおいてアクセス可能であることが望まれる変更及び／又は追加（補足データ）の格納をサポートしないことがある。従来の解決策は、補足データをユーザのデバイスにローカルに格納することである。しかしながら、このような従来の解決策では、ユーザは、この補足データに対するアクセスを有していても、アプリケーションを複数のデバイス上で使用することができないであろう（又はそのように使用することはユーザにとって困難であろう）。これは、ユーザがあるデバイスから別のデバイスに移り、全てのデバイスにおいて全てのデータ、変更及び追加が利用可能であることを期待するときに問題となる。
【００１３】
全てのデータに対するアクセスを有しているが、単一のコンピューティングデバイスのみでしかアプリケーションを実行することができない、という制限からユーザを解放するために、本明細書における構成は、修正データ（例えばプライマリ・アプリケーションデータに関連付けられる編集又は追加のような補足アプリケーションデータ）を、ネットワーク接続上の第２のストレージサービスプロバイダに格納する機構及び技術を提供する。本明細書で開示されるシステムを使用して、異なるコンピュータデバイス上で実行するアプリケーションの異なるインスタンスは、プライマリデータを第１のストレージサービスプロバイダから（例えば第三者ベンダによって操作されるクラウドから）取得するとともに、補足アプリケーションデータを第２のストレージサービスプロバイダ（例えばソフトウェアのユーザの雇用者によって操作される企業のイントラネットサーバ）から取得することができる。したがって、各ユーザは、アプリケーションのインスタンスを単一のマシン上でのみ実行することに制限されず、複数のユーザコンピューティングデバイスにおいてプライマリデータと補足データの双方に対するアクセスを得ることができる。
【００１４】
図１は、本明細書の実施形態に従って、アプリケーションの第１のインスタンスが第２のサーバにおいて補足アプリケーションデータを生成して格納するネットワーク環境を示す例示的な図である。
【００１５】
この例において、ネットワーク環境１００は、複数のストレージサービスプロバイダ１２０（例えばストレージサービスプロバイダ１２０−１、ストレージサービスプロバイダ１２０−２等）及びネットワーク１９０を含む。ストレージサービスプロバイダ１２０−１は、サーバ１１０−１と、データを格納するそれぞれのリポジトリ１８０−１とを含む。ストレージサービスプロバイダ１２０−１は、この例において、所与のクラウドサービスプロバイダによって操作されるクラウドストレージサービスとすることができる。ストレージサービスプロバイダ１２０−２は、サーバ１１０−２と、データを格納するそれぞれのリポジトリ１８０−２とを含む。ストレージサービスプロバイダ１２０−２は、この例において企業のイントラネットとすることができる。ストレージサービスプロバイダ１２０は、同じエンティティ、企業又は組織であっても異なるエンティティ、企業又は組織であってもよいことが理解されよう。
【００１６】
ネットワーク１９０は、インターネット、携帯電話ネットワーク等のようなリソースを含むことができ、同じユーザ又は異なるユーザによって操作され得る１つ又は複数のコンピュータデバイス１１５を更に含むことができる。
【００１７】
コンピュータデバイス１１５はそれぞれ、１又は複数のユーザのために、アプリケーション１４０のインスタンスを実行することができる。この例において、コンピュータデバイス１１５−１はアプリケーションインスタンス１４０−１を実行し、コンピュータデバイス１１５−２はアプリケーションインスタンス１４０−２を実行する。更なる実施形態によると、同じコンピュータデバイスを使用して異なるアプリケーションインスタンス１４０を実行することができる。アプリケーションインスタンス１４０−１及び１４０−２を、同時にも異なる時にも実行することができる。この例において、ストレージサービスプロバイダ１２０−１は、インターネットのような公衆ネットワークを介してアクセス可能な、第三者クラウドストレージサービス（第１のストレージサービスプロバイダ）によって操作されるクラウドストレージシステムとすることができる。これに対して、ストレージサービスプロバイダ１２０−２はこの例において、アプリケーションインスタンス１４０の許可されたユーザからのみアクセス可能な企業のイントラネット内で利用可能なストレージとすることができる。アプリケーションインスタンス１４０−１及び１４０−２のユーザは、第２のサーバ１１０−２を操作し、及び／又は第２のサーバ１１０−２へのアクセスを制御する、会社（例えば第２のストレージサービスプロバイダ１２０−２）の従業員とすることができる。
【００１８】
概して、添付の図面及び本明細書の説明において検討されるように、実行中にアプリケーションインスタンス１４０−１は、クライアントデバイス上で動作し、サーバ１１０−１と通信して、プライマリ・アプリケーションデータ（プライマリデータとも称する）のストレージをリポジトリ１８０−１（例えば固有の所定のデータフォーマットを必要とするか、固有の所定のデータフォーマットによって制限され得るクラウド内のデータのストレージ）内に生成して開始する。また、この例では、コンピュータデバイス１１５−１のユーザが、補足データ２５０−１（補足アプリケーションデータとも称する）を生成すると想定する。補足データ２５０−１は、ユーザがアプリケーション１４０のインスタンスを操作することから生成され得る。補足データ２５０−１の例には、ユーザがユーザの連絡先リストの所与の連絡先についてのお気に入りの指示を提供することが含まれる。この例は限定を意味するものではない。補足データ２５０−１は、アプリケーション１４０（インスタンス１４０−１又は１４０−２のいずれか）によって作成される任意のデータであり、このデータを、第１のストレージサービスプロバイダ１２０−１によって操作される第１のサーバ１１０−１により、プライマリ・アプリケーションデータ２１０−１と一緒に格納することはできない。補足データ２５０−１をプライマリデータ２１０−１とともに格納することができない多くの理由が存在し得る。例えばデータフォーマット、レコードフォーマット、プロトコル、データタイプ、サイズ、セキュリティ要件又は補足アプリケーションデータ２５０−１の他の態様若しくは特性が技術的にサポートされないか、互換性がなく、又はストレージサーバプロバイダ１２０−１による格納が許可されないという、１つ又複数の状況が含まれる。
【００１９】
例として、ストレージサービスプロバイダ１２０−１は、補足データ２５０−１のような特定のタイプのデータをリポジトリ１８０−１内に格納しないように構成され得る。これは、プライマリデータ２１０−１を格納するのに必要なデータ又はレコードフォーマットが、補足データを含むようにクラウドストレージにおいて（すなわち、第１のストレージサービスプロバイダ１２０−１によって格納されるデータによって）拡張可能ではないためである。多くのエンティティが、第１のストレージサービスプロバイダによって提供されるクラウドストレージを使用してデータを格納する異なるソフトウェアアプリケーションを有しており、クラウドストレージデータフォーマットが頻繁に更新されない場合に、この状況が存在し得る。対照的に、アプリケーション１４０のソフトウェアベンダは、ユーザが、アプリケーションの以前のバージョン又はリリースでは提示されなかった付加的な情報を追加すること（例えば所与の連絡先をお気に入りの連絡先として識別すること）を可能にするアプリケーションの新たなバージョンをリリースすることがある。この例において、この新たなお気に入りの連絡先情報は、第１のストレージサービスプロバイダ１２０−１によって格納がサポートされない補足データ２５０−１である。本明細書で説明されるようなサーバ１１０−２との通信を介して、アプリケーションインスタンス１４０−１は、リポジトリ１８０−２内への補足データの格納を開始する。
【００２０】
したがって、アプリケーションデータの一部を、ネットワーク環境１００内の複数の異なる位置に格納することができる。例えばアプリケーションデータの第１の部分をリポジトリ１８０−１に格納し、アプリケーションデータの第２の部分をリポジトリ１８０−２に格納すること等ができる。本明細書で開示されるシステムは、異なるデバイス１１５上で動作するアプリケーション１４０の複数のインスタンスが、利用可能な補足アプリケーションデータが存在する（すなわち、第２の位置１２０−２、１８０−２に格納されている）という状況を識別できるようにし、アプリケーションのプライマリストレージサービスプロバイダ１２０−１（例えばクラウドストレージ環境）に関連付けられたデータフォーマット、プロトコル、ストレージ機構に対する修正を必要とせずに、この補足データへのアクセス（読み取り、書き込み、更新）を可能にする。システムは、例えばソフトウェアアプリケーション１４０が最初に、データ（プライマリデータと呼ばれる）をクラウドストレージに格納するように動作可能な所定のデータフォーマットへのアクセスを可能にする第１のバージョンでリリースされるときに生じる問題を克服する。アプリケーション１４０は次いで、新たなリリースにおいて、ユーザが、補足データ２５０−１と呼ばれる追加のデータを作成、格納及び／又は更新するのを可能にするように修正され得る。クラウドストレージは、データタイプ、ストレージフォーマット等の修正を許可しない第三者ストレージサービスによって提供される可能性がある。具体的な例として、第１のストレージサービスプロバイダ１２０−１は、この補足データ２５０−１の格納をサポートするようクラウドストレージデータフォーマットを更新しない可能性がある。本明細書で開示されるシステムは、第２のサーバ１１０−２を使用してこの補足データ２５０−１を格納することにより、補足データ２５０−１の格納及び補足データ２５０−１へのアクセスを可能にする。このようにして、システムは、アプリケーション１４０が修正されるが、依然としてプライマリ・アプリケーションデータの格納にクラウドストレージ（例えば１２０−１）を使用し、一方、第２のストレージサービスプロバイダ、すなわち補足ストレージサービスプロバイダ１２０−２が追加の補足データ２５０−１を格納できるようにする。システムは更に、所与のユーザが異なるコンピュータシステム（例えばラップトップ、デスクトップ及びモバイルデバイス）で操作することができるアプリケーション１４０の異なるインスタンスが、プライマリ・アプリケーションデータと補足アプリケーションデータの双方の存在を全て識別できるようにし、そのユーザが、これらの２つのデータのセットにアクセスすることを可能にする。
【００２１】
図２は、本明細書で説明される実施形態に従って、アプリケーションの第１のインスタンスが補足アプリケーションデータにインデックス付けをするための一意の識別子の値を生成するネットワーク環境を示す例示的な図である。
【００２２】
例えばユーザは、図示されるようにアプリケーションインスタンス１４０−１を第１のコンピュータデバイス１１５−１上で実行する。アプリケーションインスタンス１４０−１により、ユーザは、ストレージサービスプロバイダ１２０−１のサーバ１１０−１との通信を介してプライマリ・アプリケーションデータ２１０−１を取得する。ユーザは入力をアプリケーションインスタンス１４０−１に提供して、プライマリ・アプリケーションデータ２１０−１を、グラフィカルユーザインタフェースに情報を表示する等の任意の適切な目的に使用する。
【００２３】
プライマリ・アプリケーションデータ２１０−１が、まだリポジトリ１８０−１に格納されていない場合、ユーザは入力をアプリケーションインスタンス１４０−１に提供して、プライマリ・アプリケーションデータを作成し、リポジトリ１８０−１に格納することができることに留意されたい。
【００２４】
この例において、アプリケーションインスタンス１４０−１の使用中に、ユーザは、リポジトリ１８０−１に格納されるプライマリ・アプリケーションデータ２１０−１について補足アプリケーションデータ２５０−１を生成する。補足アプリケーションデータ２５０−１は、プライマリ・アプリケーションデータ２１０−１に対する強調、修正、編集、追加の情報等を示すことができる。したがって、補足アプリケーションデータ２５０−１を、何らかの方法でプライマリ・アプリケーションデータ２１０−１に関連付けることができる。非限定的な例として、本明細書において後述されるように、プライマリ・アプリケーションデータ２１０は、ユーザがネットワーク環境内で１又は複数の他の人と通信できるようにする連絡先情報とすることができる。
【００２５】
説明されるように、この例において、プライマリ・アプリケーションデータ２１０−１を格納するストレージサービスプロバイダ１２０−１とサーバ１１０−１は、ユーザによって生成される補足アプリケーションデータ２５０−１の格納をサポートすることができないことを想定している。本明細書の実施形態によると、アプリケーションインスタンス１４０−１は、コンピュータデバイス１１５−１のユーザから入力されたアプリケーションデータ２５０−１を受信する。本明細書で説明されるように、コンピュータデバイス１１５−１で実行されているアプリケーション１４０は、補足アプリケーションデータ２５０−１をプライマリ・アプリケーションデータ２１０−１に関連付ける。例えば一実施形態において、補足アプリケーションデータ２５０−１をプライマリ・アプリケーションデータ２１０−１に関連付けるために、アプリケーションインスタンス１４０−１は処理関数２２５を使用して、例えばプライマリ・アプリケーションデータ２１０−１の少なくとも一部に基づいて一意の識別子の値を計算する。特定の実施形態において、処理関数２２５は、アプリケーションの第１のインスタンスを操作しているユーザのユーザ識別情報と組み合わせて、ハッシュ関数をプライマリ・アプリケーションデータ２１０−１の少なくとも一部に適用することによって、一意の識別子の値２３０−１を生成する。これは、補足アプリケーションデータについて一意の識別子の値を生成し、別のデバイス上のアプリケーションの第２のインスタンスのユーザによる補足アプリケーションデータへのアクセスを可能にする。この手法において、ユーザが異なるデバイスにおいて同じソフトウェアを操作しているとき、補足アプリケーションデータは各インスタンスに対して利用可能となる。
【００２６】
アプリケーションインスタンス１４０−１は、一意の識別子の値２３０−１をサーバ１１０−２に転送する。アプリケーションインスタンス１４０−１は、リポジトリ１８０−２への格納のために、補足アプリケーションデータ２５０−１も第２のストレージサービスプロバイダ１２０−２に転送する。一意の識別子２３０−１及び補足アプリケーションデータ２５０−１は、別個に又は単一のレコードで一緒に第２のストレージサービスプロバイダに送信されてよい。一実施形態において、ストレージサービスプロバイダ１２０−２は、ＵＩＶ２３０−１のエントリと補足アプリケーションデータ２５０−１へのポインタとをマップ２６０に含めることによって、一意の識別子の値（ＵＩＶ：ｕｎｉｑｕｅ  ｉｄｅｎｔｉｆｉｅｒ  ｖａｌｕｅ）２３０−１を補足アプリケーションデータ２５０−１に関連付ける。
【００２７】
一実施形態において、マップ２６０内のＵＩＶ２３０−１は、補足アプリケーションデータ２５０−１へのインデックスとして機能する。例えば検討されるように、アプリケーションインスタンス１４０−１は、ストレージサービスプロバイダ１２０−１が補足アプリケーションデータ２５０−１を格納するのに使用可能でないか、補足アプリケーションデータ２５０−１を格納するように構成されないため、ストレージサービスプロバイダ１２０−２のリポジトリ１８０−２内への補足アプリケーションデータ２５０−１の格納を開始する。
【００２８】
上記で検討したように、アプリケーションインスタンス１４０−１はまた、ストレージサービスプロバイダ１２０−２に、一意の識別子の値２３０−１が補足アプリケーションデータ２５０−１に対応することを通知する。したがって、一実施形態において、アプリケーションインスタンス１４０−１は、ＵＩＶ２３０をマップ２６０内のインデックスエントリとして効果的に生成する。例えばマップ２６０内のエントリは、ＵＩＶ２３０−１を、リポジトリ１８０−２内に格納された補足アプリケーションデータ２５０−１へのポインタに関連付ける。
【００２９】
ストレージサービスプロバイダ１２０−２のサーバ１１０−２は、ネットワーク環境１００において動作するアプリケーション１４０の１つ又は複数の他のインスタンスのいずれかによる、補足アプリケーションデータ２５０−１の後の取得を可能にする。一般に、及び以下でより詳細に説明されるように、これは、実行時に、アプリケーション１４０の任意のインスタンスを有し、プライマリ・アプリケーションデータ２１０−１の取得されたセットについてＵＩＶの値を計算し、次いでこのＵＩＶの値を補足アプリケーションデータサーバ１１０−２に伝送することによって行われる。サーバ１１０−２は、ＵＩＶを使用してマップ１６０を確認し、いずれかの補足アプリケーションデータ２５０−１が存在するかどうかを判断することができる。
【００３０】
所与のユーザは、第１の時点においてアプリケーションインスタンス１４０−１を実行することがある。この所与のユーザが、後でアプリケーションインスタンス１４０−２を実行することがある。ストレージサービスプロバイダ１２０へのアクセスを介して、この所与のユーザは（例えば補足アプリケーションデータにより）変更をストレージサービスプロバイダ１２０−２に保存し、これらの変更を後で、同じ又は異なるコンピュータデバイス上で実行されるアプリケーション１４０のインスタンスを使用して取得することができる。
【００３１】
図３は、ＵＩＶ２３０を使用する本明細書の実施形態に従って、アプリケーションの第２のインスタンスを操作するユーザが、第２のサーバから、格納された補足アプリケーションデータの取得を開始するネットワーク環境を示す例示的な図である。
【００３２】
示されているように、アプリケーションインスタンス１４０−２は、ストレージサービスプロバイダ１２０−１と通信して、リポジトリ１８０−１に格納されたプライマリデータを取得する。アプリケーションインスタンス１４０−２は、ＵＩＶ１３０を生成し、ＵＩＶ１３０をストレージサービスプロバイダ１２０−２に通信して、補足データをリポジトリ１８０−２から取得する。言及したように、及び以下で更に検討したように、補足アプリケーションデータを格納し、ＵＩＶを使用してストレージサービスプロバイダ１２０−２から取得する能力により、１又は複数のユーザは、データを失うことなく、またデータをコンピュータデバイスにローカルに格納する必要なく、アプリケーション１４０のインスタンスをネットワーク環境１００内の任意の位置のコンピュータデバイスから実行することが可能になる。
【００３３】
図４は、本明細書の実施形態に従って、アプリケーションの第２のインスタンスが一意の識別子の値を使用して、第２のサーバから、格納された補足アプリケーションデータの取得を開始するネットワーク環境を示す例示的な図である。
【００３４】
この例では、ネットワーク環境１００内のユーザが、（図１の）１１５のようなそれぞれのコンピュータデバイス上でアプリケーションインスタンス１４０−２の実行を開始すると想定する。
【００３５】
アプリケーションインスタンス１４０−２は、ユーザによる閲覧のためにグラフィカルユーザインタフェースを表示する。グラフィカルユーザインタフェースに対する入力により、ユーザは、リポジトリ１８０−１及びリポジトリ１８０−２のいずれか又は双方に格納されることになった、アプリケーション１４０に関連付けられた（プライマリ又は補足のいずれか）データを閲覧することを要求することができる。
【００３６】
この例では、アプリケーションインスタンス１４０−２のユーザが、グラフィカルユーザインタフェースを操作して、少なくともリポジトリ１８０−１からのプライマリ・アプリケーションデータ２１０−１の取得を求める情報を表示することを想定する。入力に応答して、アプリケーションインスタンス１４０−２は、プライマリ・アプリケーションデータ２１０−１をストレージサービスプロバイダ１２０−１から取得する。以下で検討されるように、アプリケーションインスタンス１４０−２のグラフィカルユーザインタフェースは、ユーザによって、アプリケーションインスタンス１４０−２に補足アプリケーションデータ２５０−１を取得するように求める手法で操作される可能性がある（例えばユーザはお気に入りの連絡先を見るように要求する）。
【００３７】
この例において、ストレージサービスプロバイダ１２０−１のサーバ１１０−１は、補足アプリケーションデータ２５０−１をリポジトリ１８０−１に格納することができないことを思い出されたい（例えば補足データ２５０−１はクラウドストレージシステムに格納可能ではない）。非限定的な例として、補足アプリケーションデータ２５０−１は、グラフィカルユーザインタフェース上にデータを表示するときに、適用すべき特別な特徴を指示すことがあり、プロバイダ１２０−１によって提供されるクラウドストレージシステムのデータ、レコードフォーマット、プロトコル又は他の動作が、この補足データ２５０−１の格納をサポートしない。
【００３８】
一実施形態において、アプリケーションインスタンス１４０−２は、サーバ１１０−２に対して、修正、すなわち補足アプリケーションデータが、ストレージサービスプロバイダ１２０−２からの取得に利用可能であるかどうかを確認するクエリを実行する。以下で説明されるように、このことは、プライマリデータ２１０−１に対するＵＩＶ１３０を計算し、このＵＩＶ値を第２の（補足）ストレージサービスプロバイダ１２０−２に送信することによって行われる。プライマリ・アプリケーションデータ２１０−１に利用可能な補足アプリケーションデータが存在する場合、アプリケーションインスタンスは、ストレージサービスプロバイダ１２０−２からそのようなデータの取得を開始する。
【００３９】
補足アプリケーションデータ２５０−１を取得するため、プライマリ・アプリケーションデータ２１０−１のコピーの取得に続いて、アプリケーションインスタンス１４０−２は、一意の識別子の値（アプリケーションインスタンス１４０−１によって以前に生成されたのと同じＵＩＶ）を、サーバ１１０−１から取得されるプライマリ・アプリケーションデータ２１０−１の処理（すなわち取得）に少なくとも部分的に基づいて生成する。例えば一実施形態において、アプリケーションインスタンス１４０−２は、ハッシュ関数のような処理関数２２５をプライマリ・アプリケーションデータ２１０−１の少なくとも一部に適用して、一意の識別子の値２３０−１を生成する。ハッシュ関数は、プライマリ・アプリケーションデータ２１０−１のある部分又は複数の異なる部分又は全てをハッシュして、ＵＩＶ１３０−１を得ることを含むことができる。ユーザの識別情報をこのハッシュに含めることができ、そのユーザのために、そのアプリケーションについて（すなわち、そのバージョンの）補足アプリケーションデータ２５０の特定の適切なセットを関連付けるのに使用することができるＵＩＶ２３０−１を生成することができる。
【００４０】
一実施形態において、処理関数２２５は、補足アプリケーションデータを最初に生成したときに、第１のアプリケーションインスタンス１４０−１によって一意の識別子の値２３０−１を生成するのに使用された処理関数と同じ処理関数である。
【００４１】
この例において、アプリケーションインスタンス１４０−１がプライマリ・アプリケーションデータ２１０−１をリポジトリ１８０−１に格納してから、プライマリ・アプリケーションデータ２１０−１は変化していないと想定すると、アプリケーションインスタンス１４０−２の処理関数２２５は、ストレージサービスプロバイダ１２０−２内で補足アプリケーションデータ２５０−１の格納を開始したときにアプリケーションインスタンス１４０が生成したものと同じインデックス値を生成する。
【００４２】
例えばアプリケーションインスタンス１４０−２は、プライマリ・アプリケーションデータ２１０−１に基づいて一意の識別子の値２３０−１を生成する。この例において、アプリケーションインスタンス１４０−２によって生成される一意の識別子の値２３０−１は、アプリケーションインスタンス１４０−１によって生成される一意の識別子の値２３０−１と同じである。というのも、アプリケーション１４０の両インスタンスは、同じ処理関数を同じプライマリ・アプリケーションデータ２１０−１に適用するからである。
【００４３】
アプリケーションインスタンス１４０−２は、ここで生成された一意の識別子の値２３０−１を、補足アプリケーションデータを識別してストレージサービスプロバイダ１２０−２から取得するためのインデックスとして使用する。例えばアプリケーションインスタンス１４０−２は、生成された一意の識別子の値２３０−１をサーバ１１０−２に転送することによって、補足アプリケーションデータ２５０−１の取得を開始する。サーバ１１０−２は、一意の識別子の値２３０−１を、補足アプリケーションデータ２５０−１が格納されているリポジトリ１８０−２内の位置にマップする。
【００４４】
サーバ１１０−２は、補足アプリケーションデータ２５０−１をリポジトリから取得して、アプリケーションインスタンス１４０−２に転送する。アプリケーションインスタンス１４０−２は、したがって補足アプリケーションデータ２５０−１をサーバ１１０−２から受信する。
【００４５】
一実施形態において、アプリケーションインスタンス１４０−２は、取得したプライマリ・アプリケーションデータ２１０−１を用いてプライマリ設定情報を識別する。アプリケーションインスタンス１４０−２は、取得した補足アプリケーションデータ２５０−１を使用して、プライマリ・アプリケーションデータ２１０−１によって指定されるようなプライマリ設定に対する修正を識別する。
【００４６】
この手法では、実行される同じアプリケーションの複数の異なるアプリケーションインスタンスはそれぞれ、クラウド内の１つ又は複数の異なる位置に格納されたアプリケーションデータにアクセスすることができる。これにより、アプリケーションの利用を潜在的に制限することとなる、アプリケーションデータを単一のコンピューティングデバイスへのローカルに格納する必要性がなくなる。
【００４７】
説明されるように、プライマリ・アプリケーションデータ２１０−１及び対応する補足アプリケーションデータ２５０−１は、アドレス帳アプリケーションで使用される連絡先情報とすることができる。そのような実施形態において、ユーザが、ネットワーク環境１００内に配置されたストレージサービスプロバイダ１２０−１にアプリケーションデータを書き戻すことができないアクション、コマンド等を開始するとき、アプリケーションインスタンス１４０−１は、一意の識別子の値２３０−１（例えばインデックス値、ハッシュに基づく鍵等）をプライマリ・アプリケーションデータ２１０−１のプロパティ（例えば特定の連絡先情報）に基づいて作成する。アプリケーションインスタンス１４０−１は、一意の識別子の値２３０−１を鍵又はインデックス値として使用して、鍵によって識別される追加の連絡先情報のみを格納する。例えば一実施形態において、クライアントすなわちアプリケーションインスタンス１４０−１はその後、一意の識別子の値２３０−１をストレージサービスプロバイダ１２０−２に送信する。サーバ１１０−２は、一意の識別子の値（例えば鍵、インデックス値、ハッシュ値等）を格納し、補足アプリケーションデータ２５０−１を（本明細書で開示される機構を介して）アドレス帳及びそれぞれのアプリケーションデータへのアクセスを有する任意のクライアント（例えばネットワーク環境１００内のアプリケーションインスタンス１４０）に提供できるようにする。
【００４８】
一実施形態において、アプリケーションインスタンス１４０−２が同期を試みるとき、アプリケーションインスタンス１４０−２は、ストレージサービスプロバイダ１２０−１に格納され、ストレージサービスプロバイダ１２０−１から取得されるプライマリ・アプリケーションデータによって指定されるように、連絡先の各々に対して一意の識別子の値を生成する。アプリケーションインスタンス１４０−２は一意の識別子の値をサーバ１１０−２に転送し、補足データが、それぞれの各連絡先に利用可能かどうかを確認する。補足データが利用可能である場合、サーバ１２０−２は、適切なアプリケーションデータをアプリケーションインスタンス１４０−２に転送する。アドレス帳の連絡先ごとに、プライマリ・アプリケーションデータ及び補足アプリケーションデータを取得することにより、アプリケーションインスタンス１４０−２を正確に同期させることができる。
【００４９】
ある場合において、リポジトリ１８０−１内に格納されたプライマリデータの所与のセットについて、いずれの補足アプリケーションデータも存在しない可能性がある。そのような状況では、アプリケーションインスタンス１４０−２は、ストレージサービスプロバイダ１２０−１から取得されたプライマリ・アプリケーションデータのみを使用して、対応する情報の表示をグラフィカルユーザインタフェース内で開始する。
【００５０】
図５は、本明細書における実施形態に従って、プライマリ・アプリケーションデータを補足アプリケーションデータとマップするための一意の識別子の値の使用を示す例示的な図である。
【００５１】
上記で検討したように、それぞれのアプリケーション１４０のユーザは、ストレージサービスプロバイダ１２０−１のリポジトリ１８０−１への複数のセットのプライマリ・アプリケーションデータ２１０（例えばプライマリ・アプリケーションデータ２１０−１、プライマリ・アプリケーションデータ２１０−２、プライマリ・アプリケーションデータ２１０−３等）の格納を開始する。説明されるように、非限定的な例として、プライマリ・アプリケーションデータは連絡先情報である。
【００５２】
上記で検討したように、それぞれのユーザは、補足アプリケーションデータの生成を通じてプライマリ・アプリケーションデータを修正することができる。この例において、ユーザは補足アプリケーションデータ２５０−１を生成する。
【００５３】
上記で検討したような手法では、それぞれのアプリケーションインスタンス１４０−１が、一意の識別子の値２３０−１を生成し、ストレージサービスプロバイダ１２０−２において補足アプリケーションデータ２５０−１及び一意の識別子の値２３０−１の格納を開始する。
【００５４】
この例において更に示されているように、ユーザは、プライマリ・アプリケーションデータ２１０−３に関連付けられる補足アプリケーションデータ２５０−３を生成する。それぞれのアプリケーションインスタンス１４０−１は、一意の識別子の値２３０−３を生成し、一意の識別子の値２５０−３及び対応する補足アプリケーションデータ２５０−３のストレージサービスプロバイダ１２０−２への格納を開始する。
【００５５】
説明されるように、マップ２６０は、一意の識別子と、それぞれのプライマリ・アプリケーションデータに対して生成された補足データとの間の関連付けを格納する。
【００５６】
一実施形態において、ストレージサービスプロバイダ１２０−２は、複数の異なるユーザの各々に対して、補足データを格納することができる。そのような状況では、マップは、識別子の値をユーザ毎にグループ化するように構成されることが可能である。例えば補足アプリケーションデータを取得するよう要求しているアプリケーションインスタンスは、補足アプリケーションデータの利用可能性について確認するときに、ユーザ識別子をサーバ１１０−２に提供することもできる。
【００５７】
ユーザの識別子を介して、ストレージサービスプロバイダ１２０−２は、補足アプリケーションデータがユーザのためにストレージサービスプロバイダ１２０−２内に格納されているかどうかを識別するために、（マップ２６０内の全ての一意の識別子の値を確認するのではなく）マップ２６０において一意の識別子の値の対応するグループを識別して確認する。
【００５８】
図６は、本明細書における実施形態に従って、アプリケーションインスタンスによるプライマリ・アプリケーションデータ及び補足アプリケーションデータの使用を示す例示的な図である。
【００５９】
この例では、それぞれのユーザによってアプリケーションインスタンス１４０−１を介して生成されたプライマリ・アプリケーションデータが、アドレス帳内のエントリの連絡先情報に対応すると想定する。例えばプライマリ・アプリケーションデータ２１０−１が、Ｊｏｓｅｐｈ  Ｓｍｉｔｈなどの第１の連絡先に関連付けられる情報（例えば名前、電子メール情報、電話情報等）を含み、プライマリ・アプリケーションデータ２１０−２が、Ｊｏｈｎ  Ｄｏｅなどの第２の連絡先に関連付けられる情報を含み、プライマリ・アプリケーションデータ２１０−３が、Ｄａｖｉｄ  Ｊｏｈｎｓｏｎなどの第３の連絡先に関連付けられる情報を含むと想定する。
【００６０】
上記で検討したように、プライマリ・アプリケーションデータ２１０を、ユーザによって又は何らかの他のリソースによって作成することができる。
【００６１】
ストレージサービスプロバイダ１２０−１は、それぞれの連絡先に関連付けられた名前、電子メール情報、電話番号等のような特定の情報を格納することができる。なお、この例では、アプリケーション１４０が、グラフィカルユーザインタフェースで表示されるときに、連絡先情報内のお気に入りを示すようにテキストを太字にすることや、連絡先の近くに表示するために付加的なテキストを追加することなどの機能性をサポートすると想定する。
【００６２】
上記のように、ストレージサービスプロバイダ１２０−１がそのような情報の格納をサポートしないことには、いくつかの理由がある。説明されるように、アプリケーションインスタンスは、そのような状況において補足アプリケーションデータ２５０の作成を開始するように構成される可能性がある。例えばアプリケーションインスタンス１４０−１は、Ｊｏｓｅｐｈ  Ｓｍｉｔｈをお気に入りとしてハイライトする選択を指示する補足アプリケーションデータ２５０−１を生成し、アプリケーションインスタンス１４０−１は、エントリであるＤａｖｉｄ  Ｊｏｈｎｓｏｎについて表示すべき追加の情報（例えば会社やタイトル情報）を指示する補足アプリケーションデータ２５０−１を生成する。アプリケーションインスタンス１４０−１が開発者（例えばソフトウェアエンジニア）によって書かれる（例えばコード化される）とき、開発者は、本明細書で開示される機構を使用して、プライマリデータ２１０としてプライマリストレージサービスプロバイダ１２０−１内に格納することができない任意のデータについて、補足アプリケーションデータ２５０を補足ストレージサービスプロバイダ１２０−２内に格納することができる。アプリケーションプログラミングインタフェース（ＡＰＩ）を、プライマリ・アプリケーションデータの取得、ＵＩＶの作成、ＵＩＶの通信及び補足ストレージサービスプロバイダ１２０−２による補足アプリケーションデータの格納と取得のような、本明細書で開示される一般的機能のために提供することができる。
【００６３】
上記で検討した手法において、アプリケーションインスタンス１４０−１は、補足アプリケーションデータ及び対応する一意の識別子の値のストレージサービスプロバイダ１２０−２への格納を開始する。
【００６４】
異なるユーザが同じく、アプリケーションインスタンス１４０−２の実行を開始して、ネットワーク環境１００内で連絡先情報を見るとき、アプリケーションインスタンス１４０−２はプライマリ・アプリケーションデータの取得を開始する。プライマリ・アプリケーションデータの全て又は選択された部分に対する処理関数２２５の適用により、アプリケーションインスタンス１４０−２は、一意の識別子の値の生成及びそれぞれの補足アプリケーションデータの取得を開始する。この例において、アプリケーションインスタンスは、補足アプリケーションデータ２５０−１、補足アプリケーションデータ２５０−３等の取得を開始し、補足アプリケーションデータによって指定される設定を、最終的に連絡先マネージャグラフィカルユーザインタフェース６３０内のアドレス帳に表示される連絡先情報へと適用する。
【００６５】
一実施形態において、アプリケーションインスタンス１４０−２は、アドレス帳に表示されるプライマリ・アプリケーションデータの情報に対する更なる修正を開始することができる。そのような例において、所与のインスタンス１４０が、ストレージサービスプロバイダ１２０−１によって格納されるプライマリ・アプリケーションデータのセットに対する変更を開始する場合、その所与のインスタンスは、プライマリ・アプリケーションデータのセットに対する変更に基づいて新たな一意の識別子の値を生成し、更新された一意の識別子の値を、マップ２６０内への格納のためにサーバ１１０−２に転送する。この手法では、ＵＩＶは常に、最新のプライマリ・アプリケーションデータのセットを有する「現在のもの（ｃｕｒｒｅｎｔ）」である。ユーザがまた、対応する補足アプリケーションデータも修正する場合、アプリケーションインスタンスは、更新された補足アプリケーションデータも、格納及び後の取得のためにストレージサービスプロバイダ１２０−２に転送する。したがって、プライマリ・アプリケーションデータが変更されて、補足アプリケーションデータに対する任意の変更も、後の取得のために（ストレージサービスプロバイダ１２０−２によって）キャプチャ及び格納されるとしても、更新された一意の識別子の値により、別のアプリケーションインスタンスは依然として補足アプリケーションデータを取得することができる。
【００６６】
図７は、本明細書における実施形態に従って、アプリケーションインスタンス１４０に関連付けられる機能を実行するためのコンピュータシステムの例示的なブロック図である。
【００６７】
コンピュータシステム７００は、サーバやクライアント等として動作する、パーソナルコンピュータ、ワークステーション、ポータブルコンピューティングデバイス、コンソール、ネットワーク端末、処理デバイス、ネットワークデバイス等のような１つ又は複数のコンピュータ化されたデバイスを含むことができる。
【００６８】
以下の議論は、本明細書における実施形態に従って、アプリケーションインスタンス１４０に関連付けられる機能をどのように実行するかを示す基本的な実施形態を提供することに留意されたい。しかしながら、本明細書で説明される動作を実行するための実際の構成は、それぞれのアプリケーションに応じて異なる可能性があることに留意すべきである。また、サーバ１１０−１、１１０−２等をそれぞれ、コンピュータ読取可能記憶媒体、並びに本明細書で検討される機能を実行するそれぞれの１つ又は複数のプロセッサデバイスなどと同様のリソースで構成することができることにも留意されたい。
【００６９】
図示されるように、本例のコンピュータシステム７００は、デジタル情報を格納して取得することができる非一時的なタイプのコンピュータ読取可能記憶媒体のような、コンピュータ読取可能記憶媒体３１２を結合する相互接続３１１を含む。コンピュータシステム７００は更に、プロセッサデバイス３１３、入出力（Ｉ／Ｏ）インタフェース３１４及び通信インタフェース３１７を含む。
【００７０】
Ｉ／Ｏインタフェース３１４は、リポジトリ７８０のような入出力デバイス、及び存在する場合にはディスプレイデバイス７３０、周辺デバイス３１６（例えばキーボード、コンピュータマウス等）等のような他のデバイスとの接続性を提供する。
【００７１】
コンピュータ読取可能記憶媒体３１２は、メモリ、光ストレージ、ハードドライブ、フロッピー（登録商標）ディスク等のような任意の適切なデバイスとすることができる。一実施形態において、コンピュータ読取可能記憶媒体３１２は、命令及び／又はデータを記憶するように構成される記憶媒体（すなわちハードウェア記憶媒体）である。
【００７２】
通信インタフェース３１７は、コンピュータシステム７００及びプロセッサデバイス３１３がネットワーク１９０を介して通信し、他のコンピュータやサーバ等のような複数の異なるリモートリソースのいずれかから情報を取得し、及び／又はその複数の異なるリモートリソースのいずれかに情報を転送できるようにする。説明されるように、Ｉ／Ｏインタフェース３１７は、プロセッサデバイス３１３がそれぞれの情報をリポジトリ７８０から取得できるようにする。
【００７３】
示されるように、コンピュータ読取可能記憶媒体３１２は、プロセッサデバイス３１３によって実行されるアプリケーションインスタンス１４０（例えばソフトウェア、ファームウェア等）を用いて符号化され得る。
【００７４】
一実施形態の動作の間において、プロセッサデバイス３１３は、コンピュータ読取可能記憶媒体３１２上に格納されたアプリケーション１４０−Ｘの命令を起動、実行、解釈又は他の形で行うために、相互接続３１１の使用を介してコンピュータ読取可能記憶媒体３１２にアクセスする。
【００７５】
アプリケーション１４０−Ｘの実行は、プロセッサデバイス３１３内のプロセス１４１のような処理機能を生成する。言い換えると、プロセッサデバイス３１３に関連付けられたアプリケーション１４０−Ｘは、コンピュータシステム７００内のプロセッサデバイス３１３内で、又はプロセッサデバイス３１３上において、実行しているアプリケーション１４０のインスタンスを表す。
【００７６】
当業者には、コンピュータシステム７００が、アプリケーション１４０を実行するのにハードウェアリソースの割り当て及び使用を制御するオペレーティングシステムのような、他のプロセス及び／又はソフトウェア及びハードウェアコンポーネントを含む可能性があることが理解されよう。
【００７７】
異なる実施形態によると、コンピュータシステム７００は、様々なタイプのデバイスのいずれかとすることができることに留意されたい。そのような様々なタイプのデバイスには、これらに限定されないが、パーソナルコンピュータシステム、デスクトップコンピュータ、ラップトップ、ノートブック、ネットブックコンピュータ、メインフレームコンピュータシステム、ハンドヘルドコンピュータ、ワークステーション、ネットワークコンピュータ、アプリケーションサーバ、ストレージデバイス、カメラ、カムコーダ、セットトップボックス、モバイルデバイス、ビデオゲームコンソール、ハンドヘルドビデオゲームデバイスのような家庭用電化製品、スイッチ、モデム、ルータのような周辺デバイス又は一般的な任意のタイプのコンピューティング若しくは電子デバイスが含まれる。
【００７８】
アプリケーションインスタンス１４０によってサポートされる機能性を、次に図８及び図９のフローチャートにより検討する。図１乃至図７について上記検討した概念に関して一部重複する部分があり得ることに留意されたい。また、以下のフローチャートにおけるステップは、必ずしも示される順番で実行される必要はない。すなわち、ステップを任意の適切な順番で実行することができる。
【００７９】
図８は、本明細書における実施形態に従って、プライマリ・アプリケーションデータを処理する方法を示すフローチャート８００である。
【００８０】
ステップ８１０において、アプリケーションインスタンス１４０−１はプライマリ・アプリケーションデータ２１０−１を取得する。プライマリ・アプリケーションデータ２１０−１を、サーバ１１０−１から取得することができ、又はユーザによって生成することもできる。
【００８１】
ステップ８２０おいて、アプリケーションインスタンス１４０−１は、プライマリ・アプリケーションデータ２１０−１に関連付けられる補足アプリケーションデータを受信する。
【００８２】
ステップ８３０において、アプリケーションインスタンス１４０−１は、一意の識別子の値２３０−１を、プライマリ・アプリケーションデータ２１０−１に少なくとも部分的に基づいて計算する。
【００８３】
ステップ８４０において、アプリケーションインスタンス１４０−１は、ハッシュ関数のような処理関数をプライマリ・アプリケーションデータ２１０−１の少なくとも一部（例えば電子メールアドレス、電話番号等）に適用して、補足アプリケーションデータ２５０−１と関連付けるための一意の識別子の値２３０−１を生成する。
【００８４】
ステップ８５０において、アプリケーションインスタンス１４０−１は、一意の識別子の値２３０−１をサーバ１１０−２に転送し、サーバ１１０−２は、アプリケーションインスタンス１４０−２による補足アプリケーションデータ２５０−１の後続の取得を可能にする。
【００８５】
ステップ８６０において、アプリケーションインスタンス１４０−１は、サーバ１２０−２内への補足アプリケーションデータ２５０−１の格納を開始する。
【００８６】
ステップ８７０において、サーバ１１０−２は、一意の識別子の値２３０−１をリポジトリ１８０−２内に格納された補足アプリケーションデータ２５０−１に関連付ける、マップ２６０内へのインデックスエントリの格納を開始する。
【００８７】
図９は、本明細書における実施形態に従って、アプリケーションデータを処理する方法を示すフローチャート９００である。
【００８８】
ステップ９１０において、アプリケーションインスタンス１４０−２は、プライマリ・アプリケーションデータ２１０−１をサーバ１１０−１から取得する。
【００８９】
ステップ９２０において、アプリケーションインスタンス１４０−２は、一意の識別子の値２３０−１を、サーバ１１０−１から取得されたプライマリ・アプリケーションデータ２１０−１に少なくとも部分的に基づいて生成する。
【００９０】
サブステップ９３０において、アプリケーションインスタンス１４０−２は、ハッシュ又は他の適切な関数を、プライマリ・アプリケーションデータ２１０−１の少なくとも一部に適用し、一意の識別子の値２３０−１を生成する。
【００９１】
ステップ９４０において、アプリケーションインスタンス１４０−２は、（アプリケーションインスタンス１４０−２によって生成されるような）一意の識別子の値２３０−１をインデックスとして利用して、ストレージサービスプロバイダ１２０−２内に格納された補足アプリケーションデータ２５０−１を識別する。
【００９２】
サブステップ９５０において、アプリケーションインスタンス１４０−２は、一意の識別子の値２３０−１をサーバ１１０−２に転送する。第２のサーバ１１０−２は、アプリケーションインスタンス１４０−２によって生成されるような一意の識別子の値２３０−１を、補足アプリケーションデータ２５０−１にマップする。
【００９３】
ステップ９６０において、アプリケーションインスタンス１４０−２は、サーバ１１０−２からの補足アプリケーションデータ２５０−１の取得を開始する。
【００９４】
サブステップ９６５において、アプリケーションインスタンス１４０−２は、補足アプリケーションデータ２５０−１をサーバ１１０−２から受信する。
【００９５】
ステップ９７０において、アプリケーションインスタンス１４０−２は、取得したプライマリ・アプリケーションデータ１４０−２を利用して、アプリケーションインスタンスに関連付けられたプライマリ設定を識別する。
【００９６】
ステップ９８０において、アプリケーションインスタンス１４０−２は、補足アプリケーションデータ２５０−１を利用して、プライマリ・アプリケーションデータ２１０−１によって指定される、プライマリ設定に対する修正を識別する。
【００９７】
本明細書で開示される技術を使用して、１つ又は複数の異なる位置において格納される補足アプリケーションデータにアクセスすることによって、コンピュータシステムの利用を制限する可能性がある補足データをローカルに格納する必要性なく、アプリケーションのカスタマイズを可能にしつつも、実行されている同じアプリケーションの複数の異なるインスタンスの各々は、クラウドコンピューティング環境によって提供されるデータサービスにアクセスすることができる。この手法では、クラウドコンピューティング環境が追加の特徴をサポートしないことがあるとしても、本明細書で開示されるシステムを用いるアプリケーションは、追加のサービスを、ユーザ及びそのユーザによって使用される他のデバイス上で利用可能な（補足データの格納及びアクセスを要求する）他のサービスに対して提供することができる。
【００９８】
補足アプリケーションデータを取得するために一意の識別子の値を生成するのにアプリケーションの異なるインスタンスによって使用される同じ処理関数は、アプリケーションのユーザに対して一意のものとすることができる。したがって、（あり得る複数のアプリケーションのなかの）ユーザのあるアプリケーションのみが、補足アプリケーションデータを取得するのに適切な鍵又はインデックス値を生成することができることになる。したがって、本明細書における実施形態は、従来の技術を超えるセキュリティレベルを提供する。
【００９９】
説明されるように、例示的な実施形態において、プライマリ・アプリケーションデータ及び補足アプリケーションデータは、アドレス帳で使用される連絡先情報に関する可能性がある。そのような実施形態では、第１のアプリケーションインスタンスにおいて、ユーザがアプリケーションを操作して、ネットワーク内に配置された第１のストレージサービスプロバイダに書き戻すことができないデータを作成又は修正するとき、アプリケーション１４０は、一意の識別子の値（例えばインデックス値、ハッシュベースの鍵等）を、プライマリ・アプリケーションデータ（例えば特定の連絡先情報）のプロパティに基づいて作成し、この鍵を使用して、該鍵によってのみ識別される追加の連絡先情報を格納する。アプリケーションは、次いでこの一意の識別子の値を第２のストレージサービスプロバイダに送信する。第２のストレージサービスプロバイダは、一意の識別子の値を格納し、補足アプリケーションデータを、ユーザによって操作されるこのアプリケーションの任意の他のインスタンスと同期できるようにする。
【０１００】
アプリケーションの第２のインスタンスが同期を試みるとき、アプリケーションの第２のインスタンスは、連絡先のそれぞれに対してハッシュ値を生成する。アプリケーションの第２のインスタンスは、ハッシュ値（すなわち一意の識別子の値）を補足サーバに転送して、それぞれの連絡先について補足データが利用可能かどうかを確認する。補足データが利用可能である場合、補足サーバは、データをアプリケーションの第２のインスタンスに転送する。第１のストレージサービスからのプライマリ・アプリケーションデータの取得し、及び第２のストレージサービスプロバイダからの各連絡先の補足アプリケーションデータの取得を介して、アプリケーションの第２のインスタンスを正確に同期させることができる。
【０１０１】
アプリケーションにおける使用に適した本明細書の技術は、ソフトウェアの複数のインスタンスを、ネットワークに接続された複数の別個に配置されたデバイス上で実行することができる。しかしながら、本明細書における実施形態は、そのようなアプリケーションにおける使用に限定されず、本明細書で検討される技術は他のアプリケーションにも同様に適切であることを理解すべきである。
【０１０２】
本明細書における実施形態は、本明細書に開示される方法の動作のいずれか又は全てを実行及び／又はサポートする１つ又は複数のコンピュータ化されたデバイス、ワークステーション、ハンドヘルド又はラップトップコンピュータ等の構成を含むことができる。言い換えると、１つ又は複数のコンピュータ化されたデバイス又はプロセッサを、本明細書で説明されるように動作して本発明の異なる実施形態を実行するようにプログラム及び／又は構成することができる。
【０１０３】
本明細書における更に他の実施形態は、上記で要約され、下記で詳細に開示されるステップ及び動作を実行するソフトウェアプログラムを含む。１つのそのような実施形態は、後の実行のためにソフトウェア命令が符号化されるコンピュータ読取可能記憶媒体（すなわち任意のタイプのハードウェア記憶媒体）を含むコンピュータプログラム製品を備える。命令及び／又はプログラムは、プロセッサを有するコンピュータ化されたデバイスで実行されると、プロセッサに、本明細書で開示される動作を実行させる。そのような構成は典型的に、光媒体（例えばＣＤ−ＲＯＭ）、フロッピーディスク、ハードディスク、メモリスティック等の非一時的なコンピュータ読取可能記憶媒体上、あるいは１つ又は複数のＲＯＭ、ＲＡＭ、ＰＲＯＭ等内のファームウェア又はマイクロコードのような他の媒体上に構成又は符号化されるソフトウェア、コード、命令及び／又は他のデータ（すなわちデータ構造）として、あるいは特定用途向け集積回路（ＡＳＩＣ）として提供される。ソフトウェア又はファームウェア又は他のそのような構成を、コンピュータ化されたデバイスにインストールして、該コンピュータ化されたデバイスに本明細書で説明される技術を実行させることができる。
本開示の他の実施形態は、上記で要約され、下記で詳細に開示される方法の実施形態のステップ又は動作のいずれかを実行するソフトウェアプログラム及び／又はそれぞれのハードウェアを含む。ステップの順序は明確さのために付けられているものである。これらのステップを任意の適切な順序で実行することができる。
【０１０４】
本明細書で検討されるようにシステム、方法、装置、コンピュータ読取可能記憶媒体上の命令等は、厳格に、ソフトウェアプログラムとして、ソフトウェアとハードウェアのハイブリッドとして、プロセッサ内、オペレーティングシステム内又はソフトウェアアプリケーション内のようなハードウェア単独として具現化され得る。本発明の例示的な実施形態は、米国ワシントン州レッドモンドにあるマイクロソフト社によい製造されるような製品及び／又はソフトウェアアプリケーションで実装されてもよい。
【０１０５】
さらに、本明細書における異なる特徴、技術、構成等のそれぞれが、本開示の異なる箇所において検討されていることがあるが、これらの概念をそれぞれ相互に独立に実行してもよく、あるいは適切な場合にはこれらの概念を相互に組み合わせて使用することができる。したがって、本明細書で説明される１つ又は複数の本発明を、多くの異なる方法で具現化して見ることができる。
【０１０６】
本明細書で記載される説明に基づいて、特許請求に係る主題の完全な理解を提供するために多くの具体的な説明が記載されている。しかしながら、当業者には特許請求に係る主題はこれらの具体的な詳細なしに実施されてもよいことが理解されよう。他の例では、当業者に公知であろう方法、装置、システム等は、特許請求に係る主題を曖昧にしないように詳細には説明されていない。詳細な説明の一部は、コンピュータメモリのようなコンピューティングシステムメモリ内に格納されるデータビット又はバイナリデジタル信号上での動作のアルゴリズム又は記号的表現に関して提示されている。これらのアルゴリズムの説明又は表現は、データ処理の分野の当業者により、その作業の内容を他の当業者に伝えるのに使用される技術の例である。本明細書で説明されるような、及び一般的なアルゴリズムは、動作の自己矛盾のないシーケンスであるか、所望の結果を得る同様の処理であると考えられる。このコンテキストでは、動作及び処理は物理的な量の物理的な操作を伴う。必ずではないが、典型的に、そのような量は、格納、伝送、結合、比較、あるいは処理回路及び／又はソフトウェアを介して他の形で操作されることが可能な電子的又は磁気信号の形をとることがある。主に共通の使用の理由から、そのような信号をビット、データ、値、要素、信号、文字、用語、数、数字等と称することが便利であることが知られている。これら及び同様の用語は、適切な物理的な量と関連付けられるべきものであり、単に便利なラベルであることを理解されたい。他に特段の指定がない限り、以下の議論から明らかであるように、「処理する」、「計算する」、「算出する」、「決定する」等のような用語を使用する本明細書の議論は、メモリ、レジスタ又は他の情報記憶デバイス内の物理的な電子量又は磁気量として表されるデータを操作又は変形する、コンピュータ又は類似の電子的なコンピューティングデバイス、伝送デバイス又はコンピューティングプラットフォームのディスプレイデバイスのような、コンピューティングプラットフォームのアクション又はプロセスを指すことが認識されよう。
【０１０７】
本発明は、好ましい実施形態を参照して具体的に示され、説明されてきたが、当業者には、添付の特許請求の範囲によって定義される本発明の精神及び範囲を逸脱することなく、形式及び詳細について様々な変更をなすことが可能であることが認識されよう。そのような変形は、本出願の範囲によって網羅されるように意図される。このように、本出願に係る実施形態の上記説明は、限定的であるように意図されていない。むしろ、本発明に対する任意の限定は、特許請求の範囲において提示される。
【図１】
0006298197.tif 000002
【図２】
0006298197.tif 000003
【図３】
0006298197.tif 000004
【図４】
0006298197.tif 000005
【図５】
0006298197.tif 000006
【図６】
0006298197.tif 000007
【図７】
0006298197.tif 000008
【図８】
0006298197.tif 000009
【図９】
0006298197.tif 000010