(57)【特許請求の範囲】
【請求項１】
方法であって、
モバイルコンピューティングデバイス上で実行されるように構成されたアプリケーションについてのエンタープライズデータを、ネットワークとの無線通信接続を介して、前記モバイルコンピューティングデバイスによって受信するステップを含み、第２のフォーマットで構造化された元のエンタープライズデータから変換された前記エンタープライズデータが第１のフォーマットで構造化されており、前記方法はさらに、
前記モバイルコンピューティングデバイスによって、前記モバイルコンピューティングデバイス上のキャッシュに対して前記エンタープライズデータを記憶するステップと、
前記モバイルコンピューティングデバイスによって、前記無線通信接続の現在の通信状態を判断するステップと、
前記モバイルコンピューティングデバイスによって、前記第１のフォーマットに基づいて前記エンタープライズデータを解析することによって前記エンタープライズデータにおける複数のアイテムの存在を識別するステップと、
前記モバイルコンピューティングデバイスによって、前記エンタープライズデータについてのポリシー情報を判断するステップとを含み、前記ポリシー情報は、前記複数のアイテムのうち各々のアイテムを更新するための基準を示し、前記基準は通信接続の通信状態に少なくとも部分的に基づき、前記方法はさらに、
前記ポリシー情報を用いて、前記モバイルコンピューティングデバイスによって、前記エンタープライズデータにおける前記複数のアイテムのうち前記現在の通信状態に基づいて更新すべきアイテムを識別するステップと、
前記モバイルコンピューティングデバイスによって、前記無線通信接続を介して、前記識別されたアイテムに対応する更新済みエンタープライズデータについての要求を、クラウドコンピュータシステムを通じてエンタープライズコンピュータシステムに送信するステップと、
前記モバイルコンピューティングデバイスによって、前記識別されたアイテムについての前記更新済みエンタープライズデータを、前記クラウドコンピュータシステムを通じて前記エンタープライズコンピュータシステムから受信するステップと、
前記モバイルコンピューティングデバイスによって、前記識別されたアイテムについての前記更新済みエンタープライズデータで前記キャッシュを更新するステップとを含む、方法。
【請求項２】
前記受信されたエンタープライズデータは、ＪａｖａＳｃｒｉｐｔオブジェクト表記フォーマットで構造化される、請求項１に記載の方法。
【請求項３】
前記エンタープライズデータは、前記エンタープライズコンピュータシステムから前記クラウドコンピュータシステムを介して受信され、前記エンタープライズデータは、受信されたときのフォーマットで構造化されており、前記フォーマットは、レプレゼンテーショナル・ステート・トランスファー（ＲＥＳＴ）フォーマットで構造化された前記エンタープライズデータの変換に基づいている、請求項１または２に記載の方法。
【請求項４】
前記エンタープライズデータは、前記エンタープライズデータにおける複数の統一的資源識別子を識別するように解析され、前記複数の統一的資源識別子の各々の統一的資源識別子は前記複数のアイテムのうち異なる１つのアイテムについての情報の位置を示す、請求項１〜３のいずれか１項に記載の方法。
【請求項５】
前記エンタープライズデータはアイテムの第１の集合およびアイテムの第２の集合を含み、前記アイテムの第１の集合および前記アイテムの第２の集合は第１のアイテムを含む、請求項１〜４のいずれか１項に記載の方法。
【請求項６】
前記エンタープライズデータは、前記エンタープライズデータがアイテム、アイテムの集合またはブロブを含むかどうかを示す情報を含む、請求項１〜５のいずれか１項に記載の方法。
【請求項７】
前記現在の通信状態は、前記モバイルコンピューティングデバイスと前記ネットワークとの間の前記無線通信接続のデータ転送速度に基づいて判断される、請求項１〜６のいずれか１項に記載の方法。
【請求項８】
前記要求は、前記識別されたアイテムに関連付けられたバージョン情報を示し、前記更新済みエンタープライズデータは前記バージョン情報に基づいて判断される、請求項１〜７のいずれか１項に記載の方法。
【請求項９】
前記エンタープライズデータはアイテムを含み、前記ポリシー情報は前記キャッシュに前記アイテムを記憶するための期間を示し、前記期間は前記アイテムに含まれるコンテンツに基づいている、請求項１〜８のいずれか１項に記載の方法。
【請求項１０】
前記キャッシュに記憶された前記エンタープライズデータはアイテムを含み、前記ポリシー情報は、前記アイテムの各々を更新するための期間を示す、請求項１〜９のいずれか１項に記載の方法。
【請求項１１】
システムであって、
１つ以上のプロセッサと、
前記１つ以上のプロセッサと結合され、前記１つ以上のプロセッサによって読取り可能な１つ以上のメモリデバイスと、
モバイルコンピューティングデバイス上で実行されるように構成されたアプリケーションについてのエンタープライズデータをネットワークとの無線通信接続を介して受信するための第１の受信ユニットとを含み、第２のフォーマットで構造化された元のエンタープライズデータから変換された前記エンタープライズデータが第１のフォーマットで構造化されており、前記システムはさらに、
前記モバイルコンピューティングデバイス上のキャッシュに対して前記エンタープライズデータを記憶するための記憶ユニットと、
前記無線通信接続の現在の通信状態を判断するための第１の判断ユニットと、
前記第１のフォーマットに基づいて前記エンタープライズデータを解析することによって前記エンタープライズデータにおける複数のアイテムの存在を識別するための第１の識別ユニットと、
前記エンタープライズデータについてのポリシー情報を判断するための第２の判断ユニットとを含み、前記ポリシー情報は、前記複数のアイテムのうち各々のアイテムを更新するための基準を示し、前記基準は、通信接続の通信状態に少なくとも部分的に基づいており、前記システムはさらに、
前記エンタープライズデータにおける前記複数のアイテムのうち、前記現在の通信状態に基づいて更新すべきアイテムを、前記ポリシー情報を用いて識別するための第２の識別ユニットと、
前記識別されたアイテムに対応する更新済みエンタープライズデータについての要求を、前記無線通信接続を介して、クラウドコンピュータシステムを通じてエンタープライズコンピュータシステムに送信するための送信ユニットと、
前記識別されたアイテムについての前記更新済みエンタープライズデータを、前記クラウドコンピュータシステムを通じて前記エンタープライズコンピュータシステムから受信するための第２の受信ユニットと、
前記識別されたアイテムについての前記更新済みエンタープライズデータで前記キャッシュを更新するための更新ユニットとを含む、システム。
【請求項１２】
システムであって、
モバイルコンピューティングデバイス上で実行されるように構成されたアプリケーションについてのエンタープライズデータを、ネットワークとの無線通信接続を介して、前記モバイルコンピューティングデバイスによって受信するための手段を含み、第２のフォーマットで構造化された元のエンタープライズデータから変換された前記エンタープライズデータが第１のフォーマットで構造化されており、前記システムはさらに、
前記モバイルコンピューティングデバイスによって、前記モバイルコンピューティングデバイス上のキャッシュに対して前記エンタープライズデータを記憶するための手段と、
前記モバイルコンピューティングデバイスによって、前記無線通信接続の現在の通信状態を判断するための手段と、
前記モバイルコンピューティングデバイスによって、前記第１のフォーマットに基づいて前記エンタープライズデータを解析することによって、前記エンタープライズデータにおける複数のアイテムの存在を識別するための手段と、
前記モバイルコンピューティングデバイスによって、前記エンタープライズデータについてのポリシー情報を判断するための手段とを含み、前記ポリシー情報は、前記複数のアイテムのうち各々のアイテムを更新するための基準を示し、前記基準は、通信接続の通信状態に少なくとも部分的に基づいており、前記システムはさらに、
前記エンタープライズデータにおける前記複数のアイテムのうち前記現在の通信状態に基づいて更新すべきアイテムを、前記モバイルコンピューティングデバイスによって、前記ポリシー情報を用いて識別するための手段と、
前記識別されたアイテムに対応する更新済みエンタープライズデータについての要求を、前記モバイルコンピューティングデバイスによって前記無線通信接続を介して、クラウドコンピュータシステムを通じてエンタープライズコンピュータシステムに送信するための手段と、
前記モバイルコンピューティングデバイスによって、前記識別されたアイテムについての前記更新済みエンタープライズデータを、前記クラウドコンピュータシステムを通じて前記エンタープライズコンピュータシステムから受信するための手段と、
前記モバイルコンピューティングデバイスによって、前記識別されたアイテムについての前記更新済みエンタープライズデータで前記キャッシュを更新するための手段とを含む、システム。
【請求項１３】
方法であって、
クラウドコンピュータシステムによって、第１の通信プロトコルを用いて、エンタープライズコンピューティングシステムからネットワーク通信接続を介してエンタープライズデータを受信するステップを含み、前記エンタープライズデータは前記エンタープライズコンピューティングシステムのための第１のフォーマットで構造化されており、前記クラウドコンピュータシステムおよび前記エンタープライズコンピューティングシステムは異なる地理的位置に位置し、前記方法はさらに、
前記クラウドコンピュータシステムが前記第１のフォーマットに基づいて前記エンタープライズデータを解析することによって、前記エンタープライズデータが複数のアイテムと前記複数のアイテムに関連付けられたポリシー情報とを含むと判断するステップと、
前記クラウドコンピュータシステムによって、前記第１のフォーマットで構造化された前記エンタープライズデータを第２のフォーマットに変換するステップとを含み、前記第２のフォーマットは、前記複数のアイテムのうち各々のアイテムに対応するエンタープライズデータを識別し、かつ前記複数のアイテムのうち各々のアイテムに対応するポリシー情報を識別するようにモバイルコンピューティングデバイスによって解析可能であり、前記方法はさらに、
第２の通信プロトコルを用いて、前記第２のフォーマットで構造化された前記変換済みエンタープライズデータを、前記クラウドコンピュータシステムによって、無線ネットワークを介して複数のモバイルコンピューティングデバイスに送信するステップを含む、方法。
【請求項１４】
前記第１の通信プロトコルはレプレゼンテーショナル・ステート・トランスファー（ＲＥＳＴ）プロトコルであり、前記第２の通信プロトコルは前記第１の通信プロトコルとは異なる、請求項１３に記載の方法。
【請求項１５】
前記第１のフォーマットで構造化された前記エンタープライズデータは、レプレゼンテーショナル・ステート・トランスファー（ＲＥＳＴ）フォーマットである、請求項１３または１４に記載の方法。
【請求項１６】
前記複数のアイテムの各々のアイテムに対応するエンタープライズデータに識別子を記憶するステップを含み、前記識別子は前記アイテムを識別する、請求項１３〜１５のいずれか１項に記載の方法。
【請求項１７】
前記複数のアイテムにおけるアイテムの少なくとも２つの集合を識別するステップと、
アイテムが、アイテムの少なくとも２つの集合に含まれると判断するステップとを含み、
前記エンタープライズデータを前記第１のフォーマットから前記第２のフォーマットに変換するステップは、変換される前記エンタープライズデータに追加情報を挿入するステップを含み、前記追加情報によって前記アイテムの少なくとも２つの集合の各々が識別される、請求項１３〜１６のいずれか１項に記載の方法。
【請求項１８】
システムであって、
１つ以上のプロセッサと、
前記１つ以上のプロセッサに結合され、前記１つ以上のプロセッサによって読取り可能な１つ以上のメモリデバイスと、
第１の通信プロトコルを用いて、ネットワーク通信接続を介してエンタープライズコンピューティングシステムからエンタープライズデータを受信するための受信ユニットとを含み、前記エンタープライズデータは、前記エンタープライズコンピューティングシステムのための第１のフォーマットで構造化されており、クラウドコンピュータシステムおよび前記エンタープライズコンピューティングシステムは異なる地理的位置に位置し、前記システムはさらに、
前記第１のフォーマットに基づいて前記エンタープライズデータを解析することによって、前記エンタープライズデータが複数のアイテムと前記複数のアイテムに関連付けられたポリシー情報とを含むと判断するための判断ユニットと、
前記第１のフォーマットで構造化された前記エンタープライズデータを第２のフォーマットに変換するための変換ユニットとを含み、前記第２のフォーマットは、前記複数のアイテムのうち各々のアイテムに対応するエンタープライズデータを識別し、かつ前記複数のアイテムのうち各々のアイテムに対応するポリシー情報を識別するようにモバイルコンピューティングデバイスによって解析可能であり、前記システムはさらに、
第２の通信プロトコルを用いて、前記第２のフォーマットで構造化された前記変換済みエンタープライズデータを、無線ネットワークを介して複数のモバイルコンピューティングデバイスに送信するための送信ユニットを含む、システム。
【請求項１９】
システムであって、
クラウドコンピュータシステムによって、第１の通信プロトコルを用いて、ネットワーク通信接続を介してエンタープライズコンピューティングシステムからエンタープライズデータを受信するための手段を含み、前記エンタープライズデータは前記エンタープライズコンピューティングシステムのための第１のフォーマットで構造化されており、前記クラウドコンピュータシステムおよび前記エンタープライズコンピューティングシステムは異なる地理的位置に位置し、前記システムはさらに、
前記クラウドコンピュータシステムが前記第１のフォーマットに基づいて前記エンタープライズデータを解析することによって、前記エンタープライズデータが複数のアイテムと前記複数のアイテムに関連付けられたポリシー情報とを含むと判断するための手段と、
前記クラウドコンピュータシステムによって、前記第１のフォーマットで構造化された前記エンタープライズデータを第２のフォーマットに変換するための手段とを含み、前記第２のフォーマットは、前記複数のアイテムのうち各々のアイテムに対応するエンタープライズデータを識別し、かつ各々のアイテムに対応するポリシー情報を識別するようにモバイルコンピューティングデバイスによって解析可能であり、前記システムはさらに、
第２の通信プロトコルを用いて、前記第２のフォーマットで構造化された前記変換済みエンタープライズデータを、前記クラウドコンピュータシステムによって、無線ネットワークを介して複数のモバイルコンピューティングデバイスに送信するための手段を含む、システム。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本願は、「モバイルデバイスをモバイルクラウドサービスと同期させるためのインフラストラクチャ（INFRASTRUCTURE FOR SYNCHRONIZATION OF MOBILE DEVICE WITH MOBILE CLOUD SERVICE）」と題され２０１４年６月２５日に出願された米国非仮出願番号第１４／３１４，７２９号の優先権および利益を主張するものであり、当該米国非仮出願第１４／３１４，７２９号は、「モバイルデバイスをモバイルクラウドサービスと同期させるためのインフラストラクチャ（INFRASTRUCTURE FOR SYNCHRONIZATION OF MOBILE DEVICE WITH MOBILE CLOUD SERVICE）」と題され２０１４年３月３１日に出願された米国仮出願番号第６１／９７２，９００号の優先権および利益を主張するものである。上記の出願の内容全体があらゆる意図および目的のために引用によって本明細書中に援用される。
【０００２】
著作権
この特許文献の開示の一部は、著作権保護の対象となる題材を含んでいる。著作権の所有者は、特許商標庁の包袋または記録に掲載されるように特許文献または特許情報開示を誰でも複製できることに対して異議はないが、その他の点ではすべての如何なる著作権をも保有する。
【背景技術】
【０００３】
技術分野
本開示は、モバイルコンピューティングデバイスとエンタープライズコンピューティングシステムとの間でエンタープライズデータを同期させるための技術に関する。
【０００４】
背景
スマートフォンおよび他の電子モバイル通信デバイスには、一般に「アプリ」と称されるモバイルデバイスアプリケーションが遍在的に存在する。２００７年１月にアップル社（Ａｐｐｌｅ）のアイフォーン（ｉＰｈｏｎｅ（登録商標））が出現したことにより、アプリは、ユーザが自身のモバイルデバイスで日々体験する日常的要素となった。電子メール管理、ウェブ接続およびソーシャルメディア対話を含む消費者用およびビジネス用のスマートフォンを対象としたさまざまなアプリが存在する。
【０００５】
多くのモバイルアプリは、モバイルデバイスとインターネットネットワークとの間の安定した無線接続に依拠している。接続が強固であれば、アプリは設計どおりにデータをアップロードおよびダウンロードする。接続が弱いかまたは接続がなされていなければ、アプリは、しばしば、「サーバに接続できません」などのエラーメッセージをユーザに示す。ユーザは、ある時点で、モバイルデバイスがネットワークに再び接続し、アプリがアップロードまたはダウンロードを継続するだろうことを予想して待機する可能性がある。
【０００６】
多くのアプリの場合、無線接続中の一時停止は煩わしいものでしかない。接続が回復されると、アップロードまたはダウンロードのタスクを単純に実行することができる。たとえば、電子メールアプリにおいては、デバイスがより良好な信号受信可能区域に入ると、受信メッセージがダウンロード可能となり、送信メッセージがアップロード可能となる。データベースからチェックされたときにアイテムを「ロックする」のような他のアプリの場合、この問題は、モバイルデバイスのユーザに対してより影響を与えてしまう。たとえば、サーバベースのコンタクトリスト中のコンタクトを編集しているモバイルデバイス上のユーザは、このユーザのモバイルデバイスが範囲外に出ると、他のユーザを締め出して同じコンタクトを編集できないようにしてしまう可能性がある。
【０００７】
アプリのタイプまたはアプリによって用いられるデータのタイプに応じて、アプリは、さまざまなバックエンドエンタープライズシステムに接続し、それらシステムと同期する必要があるかもしれない。さまざまなバックエンドエンタープライズシステムはアプリケーションおよびデータのタイプによって異なる可能性がある。そのため、さまざまなバックエンドエンタープライズシステムは、さまざまな通信プロトコルおよび機構を用いてデータをデバイスに伝達し得る。モバイルコンピューティングデバイスなどのデバイスは、バックエンドシステムとのデータの同期を維持するためにコンピューティングリソースおよび／または通信接続を制限してしまっている可能性がある。さらに、モバイルコンピューティングデバイスは、さまざまなバックエンドシステムによって提供されるデータの構成またはフォーマットを認識していない可能性もある。そのため、モバイルコンピューティングデバイスは、データをバックエンドシステムと同期させる際に難題に遭遇する可能性がある。
【発明の概要】
【課題を解決するための手段】
【０００８】
概要
モバイルコンピューティングデバイスとエンタープライズコンピューティングシステム（たとえば、人的資源管理システム、顧客関係性管理システム、経営管理システムなど）との間でエンタープライズデータを同期させるための技術を記載する。いくつかの局面においては、クラウドコンピュータシステム（たとえば「クラウドサービス」）は、さまざまなタイプのエンタープライズコンピューティングシステムとモバイルコンピューティングデバイスとの間におけるエンタープライズデータの同期を容易にするように実現され得る。クラウドサービスは、さまざまなエンタープライズコンピューティングシステムから受信されたエンタープライズデータを、モバイルコンピューティングデバイスによって容易に管理および更新することができるフォーマットへと変換し得る。変換されたフォーマットにより、別個の情報が容易に識別可能となり得る。エンタープライズデータの同期を管理するために、エンタープライズデータがポリシー情報およびバージョン情報に関連付けられてもよい。いくつかの局面においては、クラウドサービスは、モバイルコンピューティングデバイスが無線ネットワークに対して確立する通信接続の分類に基づいて、モバイルコンピューティングデバイスとの同期を管理してもよい。通信接続は、モバイルコンピューティングデバイスとクラウドコンピュータシステムとの間でエンタープライズデータを同期させるための方法を決定するために用いられてもよい。
【０００９】
クラウドサービスは、モバイルコンピューティングデバイスとエンタープライズコンピューティングシステムとの間で仲介コンピューティングシステムとして動作してもよい。いくつかの局面においては、クラウドサービスは、モバイルコンピューティングデバイスおよびエンタープライズコンピューティングシステムとは異なる地理的位置に位置する可能性もある。クラウドサービスは、高速通信を提供するネットワークを介して、エンタープライズコンピューティングシステムと通信し得る。エンタープライズコンピューティングシステムとの確実な高速通信接続により、クラウドサービスが、必要に応じてエンタープライズデータの同期のために定期的な通信を維持することが可能になり得る。こうすることにより、クラウドサービスは、如何なるエンタープライズコンピューティングシステムに対しても、同期されたエンタープライズデータを最新バージョンで維持することができる。
【００１０】
いくつかの局面においては、クラウドサービスは、エンタープライズデータを、エンタープライズコンピューティングシステムによってサポートされる特定のフォーマットから、標準的なフォーマット、たとえば、さまざまなアプリケーションおよびさまざまなモバイルコンピューティングデバイスによって容易に解析することができるＪａｖａＳｃｒｉｐｔ（登録商標）オブジェクト表記法（JavaScript Object Notation：ＪＳＯＮ）へと変換してもよい。エンタープライズデータは、特定のエンタープライズコンピューティングシステムと同期させるためにエンタープライズコンピューティングシステムの特定のフォーマットに変換し直されてもよい。共通のフォーマットを用いることにより、エンタープライズコンピューティングシステム間の相違に対処する必要なしに、このようなフォーマットを用いて一貫した態様でアプリケーションを設計することが可能になり得る。
【００１１】
いくつかの局面においては、クラウドサービスは、エンタープライズデータにおけるあるタイプの情報を識別することによって同期を向上させ得る。クラウドサービスは、アイテムおよびバイナリラージオブジェクト（binary large object：ＢＬＯＢ）などのエンタープライズデータにおける別個の情報を識別し得る。アイテムは、集合（たとえば関連するアイテムのグループ）に関連付けられてもよい。ＢＬＯＢは、画像、マルチメディアオブジェクト、もしくは実行可能コード、または当該技術分野において公知のような、データベース管理システムにおいて単一のエンティティとして記憶されるバイナリデータの集合を含んでもよい。モバイルコンピューティングデバイスのための標準的フォーマットにフォーマットされたエンタープライズデータにより、情報のタイプが区別され得る。この際に、クラウドサービスは、各々の識別可能なタイプの情報に対応するエンタープライズデータの別個の部分における変更に関して、エンタープライズデータの同期を管理してもよい。クラウドサービスは、モバイルコンピューティングデバイスとの通信中に集合同士の間で重複しているエンタープライズデータが削減され得るように、アイテム間の関係を識別し得る。
【００１２】
いくつかの局面においては、クラウドサービスおよびモバイルコンピューティングデバイスは、アイテム、集合およびブロブに対応するエンタープライズデータに関連付けられたポリシーを使用することによって、エンタープライズデータを管理してもよい。ポリシーは、エンタープライズデータとともにエンタープライズコンピューティングシステムから受信されてもよい。ポリシーは、エンタープライズデータを記憶するための基準を示し得る。いくつかの局面においては、基準は、モバイルコンピューティングデバイスから無線ネットワークへの通信接続（たとえば、接続のタイプ、接続のデータ転送速度など）の分類に対応し得る。この分類は、エンタープライズデータをいつ更新するのかと、エンタープライズデータにおいて識別された別個の情報に関してどのように更新するのかと、を判断するのに用いられてもよい。いくつかの局面においては、クラウドサービスは、バージョン情報を用いてモバイルコンピューティングデバイスとの同期を管理してもよい。場合によっては、無線ネットワークへの通信接続が変更される可能性もある。ポリシーに基づいて同期を管理することにより、モバイルコンピューティングデバイスは、モバイルコンピューティングデバイスから無線ネットワークまでの通信接続の変更の原因を把握することができる。
【００１３】
少なくとも１つの例に従うと、モバイルコンピューティングデバイスとエンタープライズコンピューティングシステムとの間でエンタープライズデータを同期させるための技術が提供され得る。このような技術は、コンピュータシステム（たとえばモバイルコンピューティングシステム）またはコンピューティングデバイス（たとえばモバイルコンピューティングデバイス）によって実現され得る。コンピュータシステムは、１つ以上のプロセッサと、１つ以上のプロセッサと結合されて１つ以上のプロセッサによって読取可能な１つ以上のメモリデバイスとを含み得る。１つ以上のメモリデバイスは、１つ以上のプロセッサによって実行されたときに、この明細書中に開示される技術を当該１つ以上のプロセッサに実行させる１セットの命令を記憶してもよい。当該技術は、モバイルコンピューティングデバイス上で実行されるように構成されたアプリケーションについてのエンタープライズデータを、ネットワークとの無線通信接続を介して受信するステップを含む、コンピュータによって実現される方法を含み得る。受信されたエンタープライズデータは、ＪＳＯＮフォーマットで構造化されてもよい。第２のフォーマットで構造化された元のエンタープライズデータから変換されたエンタープライズデータが第１のフォーマットで構造化される。当該方法はさらに、モバイルコンピューティングデバイス上のキャッシュに対してエンタープライズデータを記憶するステップを含む。当該方法はさらに、無線通信接続の現在の通信状態を判断するステップを含む。当該方法はさらに、第１のフォーマットに基づいて、エンタープライズデータにおける複数のアイテムの存在を識別するステップを含む。当該方法はさらに、エンタープライズデータについてのポリシー情報を判断するステップを含む。ポリシー情報は、複数のアイテムのうち各々のアイテムを更新するための基準を示す。当該基準は、通信接続の通信状態に少なくとも部分的に基づいている。当該方法はさらに、エンタープライズデータにおける複数のアイテムのうち現在の通信状態に基づいて更新すべきアイテムを、ポリシー情報を用いて識別するステップを含む。当該方法はさらに、識別されたアイテムに対応する更新済みエンタープライズデータについての要求を、無線通信接続を介して送信するステップを含む。当該方法はさらに、識別されたアイテムについての更新済みエンタープライズデータを受信するステップを含む。当該方法はさらに、識別されたアイテムについての更新済みエンタープライズデータでキャッシュを更新するステップを含む。
【００１４】
本発明のいくつかの局面においては、エンタープライズデータはエンタープライズサーバからクラウドコンピュータシステムを介して受信される。エンタープライズデータは、受信されたときのフォーマットで構造化されてもよい。このフォーマットは、レプレゼンテーショナル・ステート・トランスファー（representation state transfer：ＲＥＳＴ）フォーマットで構造化されたエンタープライズデータの変換に基づいていてもよい。
【００１５】
いくつかの局面においては、エンタープライズデータにおけるアイテムは統一的資源識別子を含む。統一的資源識別子は、アイテムについての情報の位置を示し得る。
【００１６】
いくつかの局面においては、エンタープライズデータは、アイテムの第１の集合およびアイテムの第２の集合を含む。アイテムの第１の集合およびアイテムの第２の集合は、第１のアイテムを含み得る。
【００１７】
いくつかの局面においては、エンタープライズデータは、エンタープライズデータがアイテム、アイテムの集合またはブロブを含んでいるかどうかを示す情報を含む。
【００１８】
いくつかの局面においては、現在の通信状態は、モバイルコンピューティングデバイスとネットワークとの間における無線通信接続のデータ転送速度に基づいている。
【００１９】
いくつかの局面においては、要求は、識別されたアイテムに関連付けられたバージョン情報を示す。更新済みエンタープライズデータはバージョン情報に基づいて判断されてもよい。
【００２０】
いくつかの局面においては、エンタープライズデータはアイテムを含む。ポリシーは、キャッシュにアイテムを記憶するための期間を示し得る。この期間はアイテムに含まれるコンテンツに基づいていてもよい。
【００２１】
いくつかの局面においては、キャッシュに記憶されたエンタープライズデータはアイテムを含む。ポリシーは、アイテムの各々を更新するための期間を示し得る。
【００２２】
少なくとも１つの例に従うと、モバイルコンピューティングデバイスとエンタープライズコンピューティングシステムとの間でエンタープライズデータを同期させるための技術が提供され得る。このような技術は、コンピュータシステム（たとえばクラウドコンピュータシステム）またはコンピューティングデバイス（たとえばクラウドコンピュータサーバ）によって実現されてもよい。コンピュータシステムは、１つ以上のプロセッサと、当該１つ以上のプロセッサに結合されて当該１つ以上のプロセッサによって読取可能な１つ以上のメモリデバイスとを含み得る。１つ以上のメモリデバイスは、１つ以上のプロセッサによって実行されたときに、当該１つ以上のプロセッサに、この明細書中に開示された技術を実行させる１セットの命令を記憶し得る。当該技術は、コンピュータによって実現される方法を含み得る。当該コンピュータによって実現される方法は、第１の通信プロトコルを用いて、ネットワーク通信接続を介してエンタープライズコンピューティングシステムからエンタープライズデータを受信するステップを含む。エンタープライズデータは、エンタープライズコンピューティングシステムのための第１のフォーマットで構造化される。コンピュータシステムおよびエンタープライズコンピューティングシステムは異なる地理的位置に位置する。当該方法はさらに、データが複数のアイテムと当該複数のアイテムに関連付けられたポリシー情報とを含むと判断するステップを含む。当該方法はさらに、第１のフォーマットで構造化されたエンタープライズデータを第２のフォーマットに変換するステップを含む。第２のフォーマットは、複数のアイテムのうち各々のアイテムに対応するエンタープライズデータを識別し、かつ各々のアイテムに対応するポリシー情報を識別するようにモバイルコンピューティングデバイスによって解析可能である。当該方法はさらに、第２のフォーマットで構造化された変換済みエンタープライズデータを、第２の通信プロトコルを用いて、無線ネットワークを介して、複数のモバイルコンピューティングデバイスに送信するステップを含む。
【００２３】
いくつかの局面においては、第１の通信プロトコルはレプレゼンテーショナル・ステート・トランスファー（ＲＥＳＴ）プロトコルであり、第２の通信プロトコルは第１の通信プロトコルとは異なる。
【００２４】
いくつかの局面においては、第１のフォーマットで構造化されたエンタープライズデータはＲＥＳＴフォーマットである。
【００２５】
いくつかの局面においては、当該方法はさらに、アイテムの各々に対応するエンタープライズデータに識別子を記憶するステップを含む。識別子はアイテムを識別し得る。
【００２６】
いくつかの局面においては、当該方法はさらに、複数のアイテムにおけるアイテムの少なくとも２つの集合を識別するステップと、あるアイテムがアイテムの少なくとも２つの集合に含まれると判断するステップとを含む。エンタープライズデータを第１のフォーマットから第２のフォーマットに変換するステップは、変換されるエンタープライズデータに追加情報を挿入するステップを含み得る。追加情報によって、アイテムの各々の集合が識別され得る。
【００２７】
少なくとも１つの例に従うと、モバイルコンピューティングデバイスは、エンタープライズデータをエンタープライズコンピューティングシステムと同期させるために設けられてもよい。モバイルコンピューティングデバイスは、モバイルコンピューティングデバイス上で実行されるように構成されたアプリケーションについてのエンタープライズデータを、ネットワークとの無線通信接続を介して受信するように構成された第１の受信ユニットを含み得る。第２のフォーマットで構造化された元のエンタープライズデータから変換されたエンタープライズデータが第１のフォーマットで構造化される。モバイルコンピューティングデバイスはさらに、モバイルコンピューティングデバイス上のキャッシュに対してエンタープライズデータを記憶するように構成された記憶ユニットと、無線通信接続の現在の通信状態を判断するように構成された第１の判断ユニットと、第１のフォーマットに基づいてエンタープライズデータにおける複数のアイテムの存在を識別するように構成された第１の識別ユニットと、エンタープライズデータについてのポリシー情報を判断するように構成された第２の判断ユニットとを含む。ポリシー情報は、複数のアイテムのうち各々のアイテムを更新するための基準を示し、当該基準は、通信接続の通信状態に少なくとも部分的に基づいている。モバイルコンピューティングデバイスはさらに、エンタープライズデータにおける複数のアイテムのうち現在の通信状態に基づいて更新すべきアイテムを、ポリシー情報を用いて識別するように構成された第２の識別ユニットと、識別されたアイテムに対応する更新済みエンタープライズデータについての要求を、無線通信接続を介して送信するように構成された送信ユニットと、識別されたアイテムについての更新済みエンタープライズデータを受信するように構成された第２の受信ユニットと、識別されたアイテムについての更新済みエンタープライズデータでキャッシュを更新するように構成された更新ユニットとを含む。一局面においては、受信されたエンタープライズデータは、ＪａｖａＳｃｒｉｐｔオブジェクト表記フォーマットで構造化される。一局面においては、エンタープライズデータはエンタープライズサーバからクラウドコンピュータシステムを介して受信される。エンタープライズデータは、受信されたときのフォーマットで構造化され、このフォーマットは、レプレゼンテーショナル・ステート・トランスファー（ＲＥＳＴ）フォーマットで構造化されたエンタープライズデータの変換に基づいている。一局面においては、エンタープライズデータ内のアイテムは統一的資源識別子を含み、統一的資源識別子はアイテムについての情報の位置を示す。一局面においては、エンタープライズデータは、アイテムの第１の集合およびアイテムの第２の集合を含む。アイテムの第１の集合およびアイテムの第２の集合は第１のアイテムを含む。一局面においては、エンタープライズデータは、エンタープライズデータがアイテム、アイテムの集合またはブロブを含むかどうかを示す情報を含む。一局面においては、現在の通信状態は、モバイルコンピューティングデバイスとネットワークとの間の無線通信接続のデータ転送速度に基づいている。一局面においては、要求は、識別されたアイテムに関連付けられたバージョン情報を示し、更新済みエンタープライズデータはバージョン情報に基づいて判断される。一局面においては、エンタープライズデータはアイテムを含む。ポリシーは、キャッシュにアイテムを記憶するための期間を示す。当該期間はアイテムに含まれるコンテンツに基づく。一局面においては、キャッシュに記憶されたエンタープライズデータはアイテムを含み、ポリシーは、アイテムの各々を更新するための期間を示す。
【００２８】
少なくとも１つの例に従うと、モバイルコンピューティングデバイスとエンタープライズコンピューティングシステムとの間でエンタープライズデータを同期させるための装置が提供され得る。当該装置は、モバイルコンピューティングデバイス上で実行されるように構成されたアプリケーションについてのエンタープライズデータを、ネットワークとの無線通信接続を介して、モバイルコンピューティングデバイスによって受信するための手段を含む。第２のフォーマットで構造化された元のエンタープライズデータから変換されたエンタープライズデータが第１のフォーマットで構造化される。当該装置はさらに、モバイルコンピューティングデバイスによって、モバイルコンピューティングデバイス上のキャッシュに対してエンタープライズデータを記憶するための手段と、モバイルコンピューティングデバイスによって無線通信接続の現在の通信状態を判断するための手段と、モバイルコンピューティングデバイスによって、第１のフォーマットに基づいて、エンタープライズデータにおける複数のアイテムの存在を識別するための手段と、モバイルコンピューティングデバイスによってエンタープライズデータについてのポリシー情報を判断するための手段とを含む。ポリシー情報は、複数のアイテムのうち各々のアイテムを更新するための基準を示し、当該基準は通信接続の通信状態に少なくとも部分的に基づいている。当該装置はさらに、エンタープライズデータにおける複数のアイテムのうち現在の通信状態に基づいて更新すべきアイテムを、モバイルコンピューティングデバイスによって、ポリシー情報を用いて識別するための手段と、識別されたアイテムに対応する更新済みエンタープライズデータについての要求を、モバイルコンピューティングデバイスによって無線通信接続を介して送信するための手段と、識別されたアイテムについての更新済みエンタープライズデータをモバイルコンピューティングデバイスによって受信するための手段と、モバイルコンピューティングデバイスによって、識別されたアイテムについての更新済みエンタープライズデータでキャッシュを更新するための手段とを含む。一局面においては、受信されたエンタープライズデータは、ＪａｖａＳｃｒｉｐｔオブジェクト表記フォーマットで構造化される。一局面においては、エンタープライズデータは、エンタープライズサーバからクラウドコンピュータシステムを介して受信され、エンタープライズデータは、受信されたときのフォーマットで構造化され、当該フォーマットは、レプレゼンテーショナル・ステート・トランスファー（ＲＥＳＴ）フォーマットで構造化されたエンタープライズデータの変換に基づいている。一局面においては、エンタープライズデータにおけるアイテムは統一的資源識別子を含み、統一的資源識別子はアイテムについての情報の位置を示す。一局面においては、エンタープライズデータはアイテムの第１の集合およびアイテムの第２の集合を含み、アイテムの第１の集合およびアイテムの第２の集合は第１のアイテムを含む。一局面においては、エンタープライズデータは、エンタープライズデータがアイテム、アイテムの集合またはブロブを含むかどうかを示す情報を含む。一局面においては、現在の通信状態は、モバイルコンピューティングデバイスとネットワークとの間における無線通信接続のデータ転送速度に基づいている。一局面においては、要求は、識別されたアイテムに関連付けられたバージョン情報を示し、更新済みエンタープライズデータはバージョン情報に基づいて判断される。一局面においては、エンタープライズデータはアイテムを含み、ポリシーは、キャッシュにアイテムを記憶するための期間を示し、当該期間はアイテムに含まれるコンテンツに基づいている。一局面においては、キャッシュに記憶されたエンタープライズデータはアイテムを含み、ポリシーは、アイテムの各々を更新するための期間を示す。
【００２９】
少なくとも１つの例に従うと、クラウドコンピュータシステムは、モバイルコンピューティングデバイスとエンタープライズコンピューティングシステムとの間でエンタープライズデータを同期させるために提供される。クラウドコンピュータシステムは、第１の通信プロトコルを用いて、ネットワーク通信接続を介して、エンタープライズコンピューティングシステムからエンタープライズデータを受信するように構成された受信ユニットを含み得る。エンタープライズデータは、エンタープライズコンピューティングシステムのための第１のフォーマットで構造化され、クラウドコンピュータシステムおよびエンタープライズコンピューティングシステムは、異なる地理的位置に位置する。当該クラウドコンピュータシステムはさらに、エンタープライズデータが複数のアイテムと当該複数のアイテムに関連付けられたポリシー情報とを含むと判断するように構成された第１の判断ユニットと、第１のフォーマットで構造化されたエンタープライズデータを第２のフォーマットに変換するように構成された変換ユニットとを含み得る。第２のフォーマットは、複数のアイテムのうち各々のアイテムに対応するエンタープライズデータを識別し、かつ、各々のアイテムに対応するポリシー情報を識別するようにモバイルコンピューティングデバイスによって解析可能である。当該クラウドコンピュータシステムはさらに、第２の通信プロトコルを用いて、第２のフォーマットで構造化された変換済みエンタープライズデータを、無線ネットワークを介して、複数のモバイルコンピューティングデバイスに送信するように構成された送信ユニットを含み得る。一局面においては、第１の通信プロトコルはレプレゼンテーショナル・ステート・トランスファー（ＲＥＳＴ）プロトコルであり、第２の通信プロトコルは第１の通信プロトコルとは異なっている。一局面においては、第１のフォーマットで構造化されたエンタープライズデータは、レプレゼンテーショナル・ステート・トランスファー（ＲＥＳＴ）フォーマットである。一局面においては、クラウドコンピュータシステムはさらに、アイテムの各々に対応するエンタープライズデータに識別子を記憶するように構成された記憶ユニットを含む。識別子はアイテムを識別する。一局面においては、クラウドコンピュータシステムはさらに、複数のアイテムにおけるアイテムの少なくとも２つの集合を識別するように構成された識別ユニットと、あるアイテムがアイテムの少なくとも２つの集合に含まれていると判断するように構成された第２の判断ユニットとを含む。エンタープライズデータを第１のフォーマットから第２のフォーマットに変換するステップは、変換されるエンタープライズデータに追加情報を挿入するステップを含む。追加情報によってアイテムの各々の集合が識別される。
【００３０】
少なくとも１つの例に従うと、モバイルコンピューティングデバイスとエンタープライズコンピューティングシステムとの間でエンタープライズデータを同期させるための装置が提供される。当該装置は、クラウドコンピュータシステムによって、第１の通信プロトコルを用いて、エンタープライズコンピューティングシステムからネットワーク通信接続を介してエンタープライズデータを受信するための手段を含み得る。エンタープライズデータは、エンタープライズコンピューティングシステムのための第１のフォーマットで構造化され、クラウドコンピュータシステムおよびエンタープライズコンピューティングシステムは、異なる地理的位置に位置する。当該装置はさらに、エンタープライズデータが複数のアイテムと当該複数のアイテムに関連付けられたポリシー情報とを含むことを、クラウドコンピュータシステムによって判断するための手段と、第１のフォーマットで構造化されたエンタープライズデータを、クラウドコンピュータシステムによって、第２のフォーマットに変換するための手段とを含み得る。第２のフォーマットは、複数のアイテムのうち各々のアイテムに対応するエンタープライズデータを識別し、かつ各々のアイテムに対応するポリシー情報を識別するようにモバイルコンピューティングデバイスによって解析可能である。当該装置はさらに、第２のフォーマットで構造化された変換済みエンタープライズデータを、クラウドコンピュータシステムによって、第２の通信プロトコルを用いて、無線ネットワークを介して複数のモバイルコンピューティングデバイスに送信するための手段を含み得る。一局面においては、第１の通信プロトコルはレプレゼンテーショナル・ステート・トランスファー（ＲＥＳＴ）プロトコルであり、第２の通信プロトコルは第１の通信プロトコルとは異なっている。一局面においては、第１のフォーマットで構造化されたエンタープライズデータは、レプレゼンテーショナル・ステート・トランスファー（ＲＥＳＴ）フォーマットである。一局面においては、当該装置はさらに、アイテムの各々に対応するエンタープライズデータに識別子を記憶するための手段を含む。当該識別子はアイテムを識別する。一局面においては、当該装置はさらに、複数のアイテムにおけるアイテムの少なくとも２つの集合を識別するための手段と、あるアイテムがアイテムの少なくとも２つの集合に含まれると判断するための手段とを含む。エンタープライズデータを第１のフォーマットから第２のフォーマットに変換するステップは、変換されるエンタープライズデータに追加情報を挿入するステップを含む。追加情報によってアイテムの各々の集合が識別される。
【００３１】
この概要は、主張される主題の鍵となる、または本質的な特徴を識別するように意図されるものではなく、主張される主題の範囲を判断するよう独立して用いられるように意図されるものでもない。主題は、この特許の明細書全体の適切な部分、いずれかまたはすべての図面、および各請求項を参照することによって理解されるべきである。
【００３２】
以下の詳細な説明は、添付の図面とともに、本発明の性質および利点のよりよい理解を提供する。
【００３３】
図面の簡単な説明
本発明の例示的な局面が、添付の図面に関連付けて以下に詳細に記載される。
【図面の簡単な説明】
【００３４】
【図１】本発明のいくつかの局面に従った、エンタープライズコンピューティングシステムとモバイルコンピューティングデバイスとの間でエンタープライズデータを同期させるためのコンピュータシステムを示すブロック図である。
【図２】本発明のいくつかの局面に従った、エンタープライズコンピューティングシステムとモバイルコンピューティングデバイスとの間でエンタープライズデータを同期させるためのコンピュータシステムを示すブロック図である。
【図３】本発明のいくつかの局面に従った、エンタープライズデータをエンタープライズコンピューティングシステムと同期させるためのモバイルコンピューティングデバイスを示すブロック図である。
【図４】本発明のいくつかの局面に従った、モバイルコンピューティングデバイスとエンタープライズコンピューティングシステムとの間でエンタープライズデータを同期させるプロセスを示すフローチャートである。
【図５】本発明のいくつかの局面に従った、モバイルコンピューティングデバイスとエンタープライズコンピューティングシステムとの間でエンタープライズデータを同期させるプロセスを示すフローチャートである。
【図６】本発明のさまざまな局面が実現され得るモバイルコンピューティングデバイスを示す機能ブロック図である。
【図７】本発明のさまざまな局面が実現され得るクラウドコンピュータシステムを示す機能ブロック図である。
【図８】局面の１つを実現するための分散型システムを示す簡略図である。
【図９】本開示の局面に従って、局面のシステムのコンポーネントによって提供されるサービスがクラウドサービスとして提供され得るシステム環境のコンポーネントを示す簡略ブロック図である。
【図１０】本発明のさまざまな局面が実現され得る例示的なコンピュータシステムを示す図である。
【発明を実施するための形態】
【００３５】
詳細な説明
以下の記載では、説明の目的のため、多数の具体的な詳細が、本発明のさまざまな局面の十分な理解を与えるために述べられる。しかしながら、当業者には、本発明の局面はこれらの具体的な詳細のいくつかがなくても実施され得ることが理解される。他の例では、周知の構造および装置がブロック図形式で示される。
【００３６】
具体的な詳細が、以下の説明において、局面を十分に理解できるように与えられる。しかしながら、当業者には、局面はこれらの具体的な詳細なしに実施され得ることが理解される。たとえば、回路、システム、ネットワーク、プロセスおよび他のコンポーネントは、不必要な詳細で局面を曖昧にしないように、ブロック図形式のコンポーネントとして示され得る。他の例では、周知の回路、プロセス、アルゴリズム、構造および技術は、局面を曖昧にすることを回避するために、不必要な詳細を述べることなく示され得る。
【００３７】
さらに、個々の局面は、フローチャート、フロー図、データフロー図、構造図またはブロック図として示されるプロセスとして記載され得ることが注記される。フローチャートは動作を連続的なプロセスとして記載するかもしれないが、動作の多くは並列または同時に実行され得る。加えて、動作の順序は再構成されてもよい。プロセスは、その動作が完了されるときに終結されるが、図に含まれない追加のステップを含み得る。プロセスは、方法、関数、手順、サブルーチン、サブプログラムなどに対応し得る。プロセスが関数に対応する場合では、その終結は、その関数が呼出し関数または主関数に戻ることに対応し得る。
【００３８】
「機械読取可能記憶媒体」という語は、命令および／またはデータを記憶するか、含むか、または担持することができるポータブルまたは非ポータブルの記憶装置、光記憶装置、およびさまざまな他の媒体を含むが、それらに限定はされない。機械読取可能媒体は、データが記憶可能であり、無線または有線接続を介して伝搬する搬送波および／または一時的な電子信号を含まない、非一時的な媒体を含んでもよい。非一時的な媒体の例は、磁気ディスクもしくはテープ、コンパクトディスク（ＣＤ）もしくはデジタル多用途ディスク（ＤＶＤ）などの光記憶媒体、フラッシュメモリ、メモリまたはメモリデバイスを含んでもよいが、それらに限定はされない。コンピュータプログラムプロダクトは、手順、関数、サブプログラム、プログラム、ルーチン、サブルーチン、モジュール、ソフトウェアパッケージ、クラス、または命令、データ構造もしくはプログラムステートメントの任意の組合せを表現し得る、コードおよび／または機械実行可能命令を含んでもよい。コードセグメントは、情報、データ、引数、パラメータ、またはメモリコンテンツを渡す、および／または受取ることによって、別のコードセグメントまたはハードウェア回路に結合されてもよい。情報、引数、パラメータ、データなどは、メモリ共有、メッセージ受渡し、トークン受渡し、ネットワーク伝送などを含む任意の好適な手段を介して渡されるか、転送されるか、または送信されてもよい。
【００３９】
さらに、局面は、ハードウェア、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、ハードウェア記述言語、またはそれらの任意の組合せによって実現されてもよい。ソフトウェア、ファームウェア、ミドルウェアまたはマイクロコードにおいて実現される場合には、必要なタスクを実行するプログラムコードまたはコードセグメント（たとえばコンピュータプログラムプロダクト）を機械読取可能媒体に記憶してもよい。プロセッサは必要なタスクを実行してもよい。
【００４０】
図面のいくつかにおいて示されるシステムは、さまざまな構成で提供されてもよい。いくつかの局面では、システムは、システムの１つ以上のコンポーネントがクラウドコンピュータシステムにおける１つ以上のネットワークにわたって分散される分散型システムとして構成されてもよい。
【００４１】
モバイルコンピューティングデバイスとエンタープライズコンピューティングシステム（たとえば、人的資源管理システム、顧客関係性管理システム、経営管理システムなど）との間でエンタープライズデータを同期させるための技術を記載する。いくつかの局面においては、クラウドコンピュータシステム（たとえば「クラウドサービス」）が、さまざまなタイプのエンタープライズコンピューティングシステムとモバイルコンピューティングデバイスとの間におけるエンタープライズデータの同期を容易にするために実現されてもよい。クラウドサービスは、さまざまなエンタープライズコンピューティングシステムから受信されたエンタープライズデータを、モバイルコンピューティングデバイスによって容易に管理および更新することができるフォーマットに変換し得る。変換されたフォーマットにより、別個の情報を容易に識別することが可能になり得る。エンタープライズデータは、エンタープライズデータの同期を管理するためにポリシー情報およびバージョン情報に関連付けられてもよい。いくつかの局面においては、クラウドサービスは、モバイルコンピューティングデバイスが無線ネットワークに対して確立する通信接続の分類に基づいて、モバイルコンピューティングデバイスとの同期を管理してもよい。通信接続は、モバイルコンピューティングデバイスとクラウドコンピュータシステムとの間でエンタープライズデータを同期させるための方法を決定するために用いられてもよい。
【００４２】
クラウドサービスは、モバイルコンピューティングデバイスとエンタープライズコンピューティングシステムとの間で仲介コンピューティングシステムとして動作してもよい。いくつかの局面においては、クラウドサービスは、モバイルコンピューティングデバイスおよびエンタープライズコンピューティングシステムとは異なる地理的位置に位置する可能性もある。クラウドサービスは、高速通信を提供するネットワークを介して、エンタープライズコンピューティングシステムと通信し得る。エンタープライズコンピューティングシステムとの確実な高速通信接続により、クラウドサービスが、必要に応じてエンタープライズデータの同期のために定期的な通信を維持することが可能になり得る。こうすることにより、クラウドサービスは、如何なるエンタープライズコンピューティングシステムに対しても、同期されたエンタープライズデータを最新バージョンで維持することができる。
【００４３】
いくつかの局面においては、クラウドサービスは、エンタープライズデータを、エンタープライズコンピューティングシステムによってサポートされる特定のフォーマットから、標準的なフォーマット、たとえば、さまざまなアプリケーションおよびさまざまなモバイルコンピューティングデバイスによって容易に解析することができるＪａｖａＳｃｒｉｐｔオブジェクト表記法（ＪＳＯＮ）に変換してもよい。エンタープライズデータは、特定のエンタープライズコンピューティングシステムと同期させるためにエンタープライズコンピューティングシステムの特定のフォーマットに変換し直されてもよい。共通のフォーマットを用いることにより、エンタープライズコンピューティングシステム間の相違に対処する必要なしに、このようなフォーマットを用いて一貫した態様でアプリケーションを設計することが可能になり得る。
【００４４】
いくつかの局面においては、クラウドサービスは、エンタープライズデータにおけるあるタイプの情報を識別することによって同期を向上させ得る。クラウドサービスは、アイテムおよびバイナリラージオブジェクト（ＢＬＯＢ）などのエンタープライズデータにおける別個の情報を識別し得る。アイテムは、集合（たとえば関連するアイテムのグループ）に関連付けられてもよい。ＢＬＯＢは、画像、マルチメディアオブジェクト、もしくは実行可能コード、または当該技術分野において公知のような、データベース管理システムにおいて単一のエンティティとして記憶されるバイナリデータの集合を含んでもよい。モバイルコンピューティングデバイスのための標準的フォーマットにフォーマットされたエンタープライズデータにより、情報のタイプが区別され得る。この際に、クラウドサービスは、各々の識別可能なタイプの情報に対応するエンタープライズデータの別個の部分における変更に関して、エンタープライズデータの同期を管理してもよい。クラウドサービスは、モバイルコンピューティングデバイスとの通信中に集合同士の間で重複したエンタープライズデータが削減され得るように、アイテム間の関係を識別し得る。
【００４５】
いくつかの局面においては、クラウドサービスおよびモバイルコンピューティングデバイスは、アイテム、集合およびブロブに対応するエンタープライズデータに関連付けられたポリシーを使用することによって、エンタープライズデータを管理してもよい。ポリシーは、エンタープライズデータとともにエンタープライズコンピューティングシステムから受信されてもよい。ポリシーは、エンタープライズデータを記憶するための基準を示し得る。いくつかの局面においては、基準は、モバイルコンピューティングデバイスから無線ネットワークへの通信接続（たとえば、接続のタイプ、接続のデータ転送速度など）の分類に対応し得る。この分類は、エンタープライズデータをいつ更新するのかと、エンタープライズデータにおいて識別された別個の情報に関してどのように更新するのかと、を判断するのに用いられてもよい。いくつかの局面においては、クラウドサービスは、バージョン情報を用いてモバイルコンピューティングデバイスとの同期を管理してもよい。いくつかの場合には、無線ネットワークへの通信接続が変更されてもよい。ポリシーに基づいて同期を管理することにより、モバイルコンピューティングデバイスは、モバイルコンピューティングデバイスから無線ネットワークまでの通信接続の変更の原因を把握することができる。
【００４６】
図１は、本発明のいくつかの局面に従った、エンタープライズコンピューティングシステムとモバイルコンピューティングデバイスとの間でエンタープライズデータを同期させるためのコンピュータシステム１００を示すブロック図である。例示を目的として、１つ以上のエンタープライズコンピューティングシステム（たとえばエンタープライズコンピューティングシステム１４０）と１つ以上のモバイルコンピューティングデバイス（たとえばモバイルコンピューティングデバイス１０２）との間でエンタープライズデータを同期させるための技術を説明するために、さまざまな例がこの明細書中において提供される。いくつかの局面においては、コンピュータシステム１００は、モバイルコンピューティングデバイスとエンタープライズコンピューティングシステムとの間における通信を管理しかつ容易にするための（この明細書中では「クラウドサービス」と称される）クラウドコンピュータシステム１２０を含み得る。一般に、クラウドコンピュータシステム１２０は、コンピューティング環境における２つの如何なるエンドポイントデバイス間におけるデータの同期をも容易にし得る。エンドポイントデバイスは、コンピューティングシステム（たとえば分散型コンピューティングシステム）におけるユーザエンドポイントとして動作するコンピューティングデバイスを含み得る。
【００４７】
いくつかの局面においては、エンタープライズコンピューティングシステム１４０は、エンタープライズのために動作するコンピューティングシステムを含み得る。エンタープライズコンピューティングシステム１４０は、エンタープライズデータを用いるアプリケーションおよび／またはサービスを含み得る。たとえば、エンタープライズコンピューティングシステム１４０は、顧客関係性管理、人的資本管理、人的資源管理、サプライチェーン管理、エンタープライズ通信システム、電子メール通信システムもしくは他の業務サービス、またはそれらの組合せのためにエンタープライズサービスおよび／またはアプリケーションを提供し得る。図１に示される例においては、エンタープライズコンピューティングシステム１４０は、人的資本管理システム（human capital management system：ＨＣＭ）１３４、顧客関係性管理（customer relationship management：ＣＲＭ）システム、顧客エンタープライズシステム１３８、またはそれらの組合せを含む。
【００４８】
本明細書に記載されるエンタープライズデータは、エンタープライズコンピューティングシステムから受信されるデータ、エンタープライズコンピューティングシステムに送信されるデータ、エンタープライズコンピューティングシステムによって処理されるデータ、またはそれらの組合せを含んでもよい。エンタープライズデータは、消費者アプリケーションおよび／またはサービスに対するデータとは区別可能であってもよい。いくつかの局面では、たとえば、エンタープライズデータはエンタープライズデータの適用または使用に基づいて変化してもよく、一方、消費者アプリケーションに対するデータ（たとえば、消費者データ）は使用中に静的なままであってもよい。特定の局面では、エンタープライズデータは、エンタープライズデータを記憶、使用および／または管理することに対する基準を示すルールを含むかまたはそのようなルールと関連付けられてもよい。たとえば、エンタープライズデータは、エンタープライズデータを記憶、使用および／または管理することに対する１つ以上のポリシーを示すポリシー情報と関連付けられてもよい。特定の局面では、ポリシー情報は、エンタープライズデータに含まれてもよい。特定の局面では、エンタープライズデータは、エンタープライズコンピューティングシステムにおいて実行されるアプリケーションまたはサービスによって処理、記憶、使用または通信されるデータを含んでもよい。たとえば、エンタープライズデータは、エンタープライズアプリケーションからのＪＳＯＮフォーマット化データ、構造化されたデータ（たとえば、キー値ペア）、非構造化データ（たとえば、アプリケーションによって処理または用いられる内部データ、ＪＳＯＮフォーマットにおけるデータ、ソーシャルポスト、カンバセーションストリーム、アクティビティフィードなど）、バイナリラージオブジェクト（ＢＬＯＢ）、ドキュメント、システムフォルダ（たとえば、サンドボックス環境におけるアプリケーション関連フォルダ）、レプレゼンテーショナル・ステート・トランスファー（ＲＥＳＴ）技術（本明細書では「ＲＥＳＴフルなデータ」と称される）を用いるデータ（たとえば、ＲＥＳＴエンドポイントによって利用可能にされる同期データ）、システムデータ、構成データ、同期データ、またはそれらの組合せなどのビジネスデータ（たとえば、ビジネスオブジェクト）を含んでもよい。いくつかの局面では、エンタープライズデータは、ＲＥＳＴフォーマット化されたエンタープライズデータを含んでもよい。ＲＥＳＴフォーマット化されたエンタープライズデータは、ＲＥＳＴフルなデータを含んでもよい。ＲＥＳＴフォーマット化されたデータは、エンタープライズコンピューティングシステムによって実現されるＲＥＳＴ技術に従ってフォーマットされるデータを含んでもよい。構成または同期データは、バージョン、履歴、統合データなどのようなエンタープライズデータの同期のために用いられるデータを含んでもよい。エンタープライズデータにおけるドキュメントは、拡張マークアップ言語（extended markup language：ＸＭＬ）ファイル、ビジュアルアセット、構成ファイル、メディアアセットなどを含んでもよい。ＢＬＯＢは、画像、マルチメディアオブジェクト、もしくは実行可能コード、または当該技術分野において公知のような、データベース管理システムにおいて単一のエンティティとして記憶されるバイナリデータの集合を含んでもよい。
【００４９】
クラウドコンピュータシステム１２０を通じて、モバイルコンピューティングデバイス（たとえば、モバイルコンピューティングデバイス１０２）は、複数のエンタープライズコンピューティングシステム（たとえば、ＨＣＭ１３４、ＣＲＭ１３６またはカスタムエンタープライズコンピューティングシステム１３８）と通信して、エンタープライズデータを交換し得る。クラウドコンピュータシステム１２０は仲介コンピューティング環境として動作してもよく、これにより、モバイルコンピューティングデバイスとエンタープライズコンピューティングシステム１４０のいずれかとの間におけるエンタープライズデータの通信を容易にし得る。クラウドコンピュータシステム１２０は、さまざまなモバイルコンピューティングデバイスを含むさまざまなタイプのコンピューティングデバイスと通信し得る。モバイルコンピューティングデバイス１０２は、エンタープライズデータのためのアプリケーションからの要求を処理する同期マネージャ１１０を介してクラウドコンピュータシステム１２０と通信してもよい。同期マネージャ１１０は、同期動作を制御するためにアプリケーションが拡張可能なアプリケーションプログラムインターフェイス（application programming interface：ＡＰＩ）を含み得る。同期マネージャ１１０を用いると、モバイルコンピューティングデバイスは、モバイルコンピューティングデバイス１２０上で実行されるコンピューティング環境および／またはアプリケーションの種類にかかわらず、クラウドコンピュータシステム１２０を介してエンタープライズコンピューティングシステムと通信することができる。同期マネージャ１１０は、モバイルコンピューティングデバイス１０２が、モバイルコンピューティングデバイスによって処理可能および読取り可能な構造化されたフォーマットでエンタープライズデータを要求および受信することを可能にし得る。クラウドコンピュータシステム１２０は、モバイルコンピューティングデバイスとクラウドコンピュータシステム１２０との間の通信接続にかかわらず、モバイルコンピューティングデバイスとエンタープライズコンピューティングシステムとの間の同期を容易にする。
【００５０】
クラウドコンピュータシステム１２０はさらに、異なる通信プロトコルを有し得るものもあるさまざまなエンタープライズコンピューティングシステムと通信することによって、仲介コンピューティング環境として動作し得る。このような通信プロトコルは、クラウドコンピュータシステム１２０と通信するアプリケーションまたはサービスに特化されたものであってもよくまたはそれらに特有のものであってもよい。さらに、クラウドコンピュータシステム１２０は、エンタープライズコンピューティングシステムによってサポートされたフォーマットに従ってエンタープライズデータを送信および受信するためにエンタープライズコンピューティングシステムと通信してもよい。十分なコンピューティングリソースを備えることにより、クラウドコンピュータシステム１２０は、エンタープライズコンピューティングシステムに従ってエンタープライズデータを同期させるための通信を用いて通信してもよい。クラウドコンピュータシステム１２０は、エンタープライズデータのローカルストレージ（たとえばローカルキャッシュ）を維持してもよく、さらに、モバイルコンピューティングデバイスとエンタープライズコンピューティングシステム１４０との間でのエンタープライズデータの同期を管理するためにローカルストレージを用いてもよい。
【００５１】
クラウドコンピュータシステム１２０は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの組合せを用いて実現されてもよい。たとえば、クラウドコンピュータシステムは、サーバコンピュータなどのような１つ以上のコンピューティングデバイスを含んでもよい。クラウドコンピュータシステムは１つ以上のメモリ記憶装置および１つ以上のプロセッサを含んでもよい。メモリ記憶装置は、プロセッサにとってアクセス可能であり得、そこに記憶される命令を含んでもよく、それら命令は、プロセッサによって実行されると、プロセッサに本明細書に開示される１つ以上の動作を実行させる。いくつかの局面では、メモリ記憶装置はローカルストレージ（たとえばキャッシュ）として動作してもよい。
【００５２】
いくつかの局面においては、クラウドコンピュータシステム１２０は１つ以上のアダプタ、たとえばＨＣＭアダプタ１２２、ＣＲＭアダプタ１２４およびアダプタ１２６を含み得るかまたは実現し得る。各々のアダプタは、特定の通信プロトコル、エンタープライズコンピューティングシステムのタイプ、アプリケーションのタイプ、サービスのタイプまたはそれらの組合せに従って通信をサポートしてもよい。アダプタによってサポートされる通信プロトコルは、１つ以上のエンタープライズコンピューティングシステムに特有のものであってもよい。たとえば、ＨＣＭアダプタ１２２は、ＨＣＭエンタープライズコンピューティングシステム１３４によってサポートされるプロトコルに従って通信するように構成されてもよい。クラウドコンピュータシステム１２０は、エンタープライズコンピューティングシステム１４０の各々と別個の通信接続１２８〜１３２を確立してもよい。
【００５３】
クラウドコンピュータシステム１２０は、１つ以上のネットワーク（図示せず）を介してエンタープライズコンピューティングシステム１４０と通信するように構成されてもよい。通信ネットワークの例は、インターネット（登録商標）、モバイルネットワーク、パブリックネットワーク、無線ネットワーク、セルラーネットワーク、ローカルエリアネットワーク（local area network：ＬＡＮ）、ワイドエリアネットワーク（wide area network：ＷＡＮ）、他の通信ネットワーク、またはそれらの組合せを含んでもよい。いくつかの局面では、通信接続１２８〜１３２は、高速通信トランクを用いて容易にされる高速通信接続であってもよい。
【００５４】
モバイルコンピューティングデバイス１２０は、ハードウェア、ファームウェア、ソフトウェアまたはそれらの組合せで実現されるコンピューティングシステムであってもよい。モバイルコンピューティングデバイス１０２はクラウドコンピュータシステム１２０を介して如何なるエンタープライズコンピューティングシステム１４０とも通信し得る。モバイルコンピューティングデバイス１０２は、エンドポイント、携帯情報端末（personal digital assistant：ＰＤＡ）、タブレットコンピュータ、ラップトップコンピュータ、デスクトップコンピュータ、ウェアラブルコンピュータ、ページャなどを含み得るか、またはそれらとして実現されてもよい。モバイルコンピューティングデバイス１０２は、１つ以上のメモリ記憶装置および１つ以上のプロセッサを含み得る。モバイルコンピューティングデバイス１０２は、さまざまな種類のオペレーティングシステムを含み得る。メモリ記憶装置はプロセッサにとってアクセス可能であってもよく、そこに記憶される命令を含んでもよく、それら命令は、プロセッサによって実行されると、プロセッサに本明細書に開示される１つ以上の動作、方法またはプロセスを実行させる。メモリ記憶装置はローカルストレージ（たとえばキャッシュ１６０）として動作してもよい。ローカルストレージは、メモリ記憶装置または他のコンピュータ読取可能記憶媒体などのような任意のタイプの永続的な記憶装置を用いて実現されてもよい。いくつかの局面では、ローカルストレージは、データベース１１４（たとえばドキュメントデータベース、リレーショナルデータベースまたは他のタイプのデータベース）、ファイルストア、ファイルシステム１１６、またはそれらの組合せを含むかまたは実現してもよい。ローカルストレージはエンタープライズデータを記憶してもよい。いくつかの局面では、ローカルストレージはポリシー情報を含み得る。ポリシー情報は、クラウドコンピュータシステム１２０から取得することができる。ポリシー情報は、エンタープライズデータの同期および／または記憶を判断するために用いられてもよい。
【００５５】
さまざまな局面では、モバイルコンピューティングデバイス１０２は、ウェブブラウザ、クライアントアプリケーション、所有権付きクライアントアプリケーションなどの１つ以上のアプリケーションを実行および動作させるように構成されてもよい。たとえば、アプリケーション１０４およびアプリケーション１０８はモバイルコンピューティングデバイス１０２上で動作させてもよい。クライアントアプリケーションは１つ以上のネットワークを介してアクセス可能であり得るかまたは動作させてもよい。アプリケーション１０４などのアプリケーションは、アプリケーションを動作させるためのグラフィカルユーザインターフェイス（graphical user interface：ＧＵＩ）を含んでもよい。
【００５６】
モバイルコンピューティングデバイス１０２は、１つ以上の通信ネットワークを介して、無線通信を用いてクラウドコンピュータシステム１２０と通信してもよい。通信ネットワークの例は、モバイルネットワーク、無線ネットワーク、セルラーネットワーク、ローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、他の無線通信ネットワーク、またはそれらの組合せを含んでもよい。
【００５７】
モバイルコンピューティングデバイス１０２は同期マネージャ１１０を含み得る。同期マネージャ１１０はアプリケーションプログラムインターフェイス（ＡＰＩ）を含み得る。このアプリケーションプログラムインターフェイス（ＡＰＩ）は、アプリケーション（たとえばアプリケーション１０４）が、エンタープライズコンピューティングシステムに対して、エンタープライズデータのアクセスおよび使用に関わるさまざまな動作を要求することを可能にする。いくつかの局面においては、アプリケーションは、エンタープライズデータの同期を管理するよう同期マネージャ１１０に要求してもよい。ＡＰＩは、エンタープライズデータ３６２を管理したりエンタープライズデータ３６２にアクセスしたりするために、呼出し可能な機能、方法、動作、ルーチンなどを提供し得る。このような呼出し可能な機能は、ポリシーについて情報と、キャッシュ３６０からアクセスされるエンタープライズデータ３６２についての情報とにアクセスするための機能を含み得る。同期マネージャ１１０は、アプリケーションのためにクラウドコンピュータシステム１２０への通信を管理してもよい。いくつかの局面においては、同期マネージャ１１０は、カスタムプロトコル（たとえばカスタム同期プロトコル）を用いて、クラウドコンピュータシステム１２０との通信接続１１８を確立してもよい。カスタムプロトコルはＨＴＴＰベースのプロトコルであってもよい。同期マネージャ１１０がクラウドコンピュータシステム１２０との通信を処理できるようにすることによって、アプリケーションは、クラウドコンピュータシステム１２０との通信を構成する負担を回避することができる。カスタムプロトコルを利用することにより、同期マネージャ１１０は、クラウドコンピュータシステム１２０と通信するために如何なるモバイルコンピューティングデバイスプラットフォーム上でも動作することができる。
【００５８】
いくつかの局面においては、同期マネージャ１１０は、エンタープライズデータを局所的に管理し、可能な場合にクラウドコンピュータシステム１２０と同期させてもよい。エンタープライズデータを要求するアプリケーションは、エンタープライズデータが局所的に検索可能である場合、同期マネージャ１１０から迅速な応答が与えられてもよい。局所的に利用可能ではないエンタープライズデータをクラウドコンピュータシステム１２０から受信してもよい。
【００５９】
クラウドコンピュータシステム１２０は、他のアプリケーションまたはモバイルコンピューティングデバイスのために検索されたエンタープライズデータを記憶してもよい。結果として、クラウドコンピュータシステム１２０は、迅速なアクセスまたは同期のためにエンタープライズデータのローカルコピーを維持し得る。クラウドコンピュータシステム１２０は、まず、そのローカルストレージを探索してエンタープライズデータの位置を特定するかまたは要求に対する同期を実行してから、エンタープライズコンピューティングシステムと通信してもよい。そうすることによって、クラウドコンピュータシステム１２０は、モバイルコンピューティングデバイス１０２のためにエンタープライズデータをより高速で同期させて検索することが可能になり得る。クラウドコンピュータシステム１２０は、エンタープライズデータをモバイルコンピューティングデバイス１０２に伝達するのと同時に、エンタープライズデータの検索および／または同期を行なうことができるだろう。いくつかの局面においては、クラウドコンピュータシステム１２０は、エンタープライズデータまたは結果がモバイルコンピューティングデバイス１０２に伝達されるよりも速く、エンタープライズデータの受信および／または同期を行ってもよい。そのため、クラウドコンピュータシステム１２０は、同期に関するエンタープライズデータまたは情報を、それらがモバイルコンピューティングデバイス１０２に伝達される前に記憶し、これにより、モバイルコンピューティングデバイスがエンタープライズコンピューティングシステム１４０中のエンタープライズデータにアクセスするための応答時間を改善させ得る。
【００６０】
クラウドコンピュータシステムは、コンピューティングリソースの違いにかかわらず、モバイルコンピューティングデバイスがエンタープライズコンピューティングシステムと通信することを可能にし得る。クラウドコンピュータシステムは、頻繁に通信してエンタープライズデータを受信するために、より多くのリソースと、エンタープライズコンピューティングシステムとのより高速で信頼性のある接続とを備えてもよい。クラウドコンピュータシステムは、それらの通信能力に従ってモバイルコンピューティングデバイスに通信されるエンタープライズデータを管理および同期させ得る。さらに、クラウドコンピュータシステムにおいてエンタープライズデータをキャッシュすることによって、エンタープライズデータを容易に検索して、モバイルコンピューティングデバイスと同期させてもよい。クラウドコンピュータシステムは、モバイルコンピューティングデバイスとのその通信とは別個に同期を管理することができる。
【００６１】
図２は、本発明のいくつかの局面に従った、エンタープライズコンピューティングシステムとモバイルコンピューティングデバイスとの間でエンタープライズデータを同期させるためのコンピュータシステム（たとえばクラウドコンピュータシステム１２０）を示すブロック図である。いくつかの局面においては、クラウドコンピュータシステム１２０は、モバイルコンピューティングデバイス（たとえばモバイルコンピューティングデバイス２４０およびモバイルコンピューティングデバイス２５０）とエンタープライズコンピューティングシステム（たとえばエンタープライズコンピューティングシステム２１２およびエンタープライズコンピューティングシステム２１４）との間で伝達されるエンタープライズデータの通信および／または同期のためのさまざまな動作を実行するように構成された１つ以上の機能ブロックまたはモジュールとして実現されてもよい。クラウドコンピュータシステム１２０は、エンタープライズデータパーサ２２０、コンバータ２２２、バージョン判断部２２４、通信モジュール２２６、エンタープライズデータマネージャ２２８、およびポリシーマネージャ２３２を含み得る。クラウドコンピュータシステム１２０は、キャッシュ２３０などの１つ以上のメモリ記憶装置（「ローカルストレージ」）を含み得る。キャッシュ２３０は、エンタープライズデータ２６２を記憶するために用いられてもよい。エンタープライズデータ２６２は、エンタープライズコンピューティングシステム２１２，２１４から、もしくはモバイルコンピューティングデバイス２４０，２５０から受信されてもよく、または、クラウドコンピュータシステム１２０によって変換されたエンタープライズデータを含んでもよく、またはこれらの組合せであってもよい。
【００６２】
通信モジュール２２６は、複数のエンタープライズコンピューティングシステム（たとえばエンタープライズコンピューティングシステム２１２，２１４）とのクラウドコンピュータシステム１２０のための通信を処理するように構成されてもよい。このようなエンタープライズコンピューティングシステムは、クラウドコンピュータシステム１２０のファイアウォールを越えて、クラウドコンピュータシステム１２０とは異なる地理的位置（たとえば遠隔の地理的位置）に物理的に位置してもよい。いくつかの局面においては、エンタープライズコンピューティングシステム２１２はエンタープライズコンピューティングシステム２１４とは異なっていてもよい。いくつかの局面においては、エンタープライズコンピューティングシステム２１２およびエンタープライズコンピューティングシステム２１４は単独のコンピューティングシステムの一部であってもよい。エンタープライズコンピューティングシステム２１２，２１４の各々は、さまざまな通信プロトコルを用いてクラウドコンピュータシステム１２０と通信してもよい。
【００６３】
いくつかの局面においては、エンタープライズコンピューティングシステム２１２，２１４のうち１つ以上は、ＨＴＴＰベースのプロトコルを用いて、クラウドコンピュータシステム１２０と通信してもよい。いくつかの局面においては、エンタープライズコンピューティングシステム２１２，２１４は、ＲＥＳＴ通信プロトコルを用いてクラウドコンピュータシステム１２０と通信してもよい。たとえば、ＲＥＳＴプロトコルはＵＲＩ（uniform resource identifier：統一的資源識別子）またはＵＲＬ（uniform resource locator：ユニフォームリソースロケータ）を含むフォーマットをサポートしてもよい。ＲＥＳＴプロトコルを用いる通信のためにフォーマットされるデータは、ＪＳＯＮ、コンマ区切り形式（comma-separated values：ＣＳＶ）、およびｒｅａｌｌｙ  ｓｉｍｐｌｅ  ｓｙｎｄｉｃａｔｉｏｎ（ＲＳＳ）などのようなデータフォーマットに容易に変換されてもよい。エンタープライズコンピューティングシステム２１２，２１４およびクラウドコンピュータシステム１２０は遠隔手続呼出し（remote procedure call：ＲＰＣ）（たとえばＸＭＬ  ＲＰＣ）などのような他のプロトコルを用いて通信してもよい。
【００６４】
上述したように、クラウドコンピュータシステム１２０およびエンタープライズコンピューティングシステム２１２，２１４は高速通信をサポートする通信接続を用いて通信してもよい。高速通信接続により、クラウドコンピュータシステムが、エンタープライズコンピューティングシステムとの継続中の複数の通信を維持してエンタープライズデータを同期させることを可能にし得る。高速通信接続は、エンタープライズデータを完全に同期させるためにエンタープライズコンピューティングシステムとの複数の通信を処理する能力をクラウドコンピュータシステム１２０に与えるのに対して、モバイルコンピューティングデバイスは、エンタープライズデータを常に受信するよう無線通信接続の帯域幅が制限されている可能性がある。クラウドコンピュータシステム１２０とエンタープライズコンピューティングシステムとの間における通信接続は、クラウドコンピュータシステム１２０がエンタープライズデータを中断がほとんどまたは全くない状態で同期させるよう通信を送受信し得るように信頼性があってもよい。
【００６５】
いくつかの局面においては、通信モジュール２２６は、エンタープライズコンピューティングシステム２１２，２１４と通信して、更新済みエンタープライズデータを同期させてもよい。通信モジュール２２６は、エンタープライズデータを更新するようエンタープライズコンピューティングシステムに要求してもよい。このような要求は、モバイルコンピューティングデバイス２４０，２５０から受信した要求に基づいてなされてもよい。いくつかの局面においては、通信モジュール２２６は、要求なしで、エンタープライズコンピューティングシステム２１２，２１４から更新済みエンタープライズデータを受信してもよい。通信モジュール２２６は、モバイルコンピューティングデバイス２４０，２５０から受信したエンタープライズデータの更新をエンタープライズコンピューティングシステムに送信し得る。エンタープライズデータの更新は、以下に記載されるエンタープライズデータマネージャ２２８によって判断されてもよい。
【００６６】
いくつかの局面においては、通信モジュール２２６は、１つ以上のアダプタ、たとえばアダプタ２０８およびアダプタ２１０、を含み得る。アダプタは、通信プロトコル、エンタープライズコンピューティングシステムのタイプ、アプリケーションのタイプ、サービスのタイプまたはそれらの組合せに従って通信をサポートし得る。アダプタによってサポートされる通信プロトコルは、１つ以上のエンタープライズコンピューティングシステムに特有のものであってもよい。たとえば、通信モジュール２２６は、エンタープライズコンピューティングシステム２１２によってサポートされる特定のプロトコルを用いて、エンタープライズコンピューティングシステム２１２との通信用に構成されたアダプタ２０８を含み得る。別の例においては、通信モジュール２２６は、エンタープライズコンピューティングシステム２１４によってサポートされる特定のプロトコルを用いるエンタープライズコンピューティングシステム２１４との通信用に構成されたアダプタ２１０を含み得る。
【００６７】
クラウドコンピュータシステム１２０は通信モジュール２２６を用いてモバイルコンピューティングデバイス、たとえばモバイルコンピューティングデバイス２４０，２５０と通信してもよい。モバイルコンピューティングデバイスは、クラウドコンピュータシステム１２０とは異なる地理的位置に位置してもよい。たとえば、モバイルコンピューティングデバイス２４０，２５０は、クラウドコンピュータシステム１２０のファイアウォールを越えて、クラウドコンピュータシステム１２０とは異なる地理的位置（たとえば、遠隔の地理的位置）に物理的に位置してもよい。モバイルコンピューティングデバイス２４０，２５０の各々は異なる通信プロトコルを用いてクラウドコンピュータシステム１２０と通信してもよい。いくつかの局面では、モバイルコンピューティングデバイス２４０，２５０の１つ以上はＨＴＴＰベースの通信プロトコルを用いてクラウドコンピュータシステム１２０と通信してもよい。いくつかの局面では、通信モジュール２２６はカスタム通信プロトコルを用いてモバイルコンピューティングデバイスと通信してもよい。カスタム通信プロトコルはＨＴＴＰベースの通信プロトコルであってもよい。モバイルコンピューティングデバイス２４０，２５０間における通信のために用いられる通信プロトコルは、モバイルコンピューティングデバイスおよびクラウドコンピュータシステム１２０によって容易に読取可能であり得るさまざまなフォーマット（たとえばＪＳＯＮフォーマット）で構造化されるデータの通信をサポートし得る。
【００６８】
いくつかの局面においては、モバイルコンピューティングデバイス２４０，２５０は、クラウドコンピュータシステム１２０と通信するよう特定のユーザインターフェイス２０２，２０４（user interface：ＵＩ）を備えてもよい。ある特定の通信プロトコルを用いて通信するように、ある特定のＵＩを構成してもよい。いくつか局面では、特定のＵＩ２０２，２０４は、クラウドコンピュータシステムと通信するよう呼出され得る呼出し可能インターフェイス、機能、ルーチン、方法および／または動作を含んでもよい。特定のＵＩ２０２，２０４は、入力として、エンタープライズコンピューティングシステム２１２，２１４にエンタープライズデータを要求するかまたはそこからエンタープライズデータを受信するためのパラメータを受入れてもよい。特定のＵＩを介する通信は、カスタム通信プロトコルを用いる通信用に変換されてもよい。いくつか局面では、特定のＵＩ２０２，２０４は同期マネージャ１１０に含まれるかまたは同期マネージャ１１０によって実現されてもよい。いくつかの局面では、特定のＵＩ２０２，２０４はアプリケーションにおけるカスタムクライアントに対応してもよい。
【００６９】
クラウドコンピュータシステム１２０は、モバイルコンピューティングデバイス２４０，２５０とエンタープライズコンピューティングシステム２１２，２１４との間における同期を維持するために、エンタープライズデータをさまざまなフォーマットに変換することができるおよび／またはエンタープライズデータの記憶を管理することができるコンポーネントを含み得る。
【００７０】
エンタープライズデータマネージャ２２８は、クラウドコンピュータシステム１２０のローカルストレージ（たとえばキャッシュ２３０）へのエンタープライズデータの記憶を管理してもよい。エンタープライズデータの管理は、ローカルストレージにおいてエンタープライズデータを作成し、読出し、更新し、削除することを含み得る。エンタープライズデータマネージャ２２８は、アプリケーションまたはサービスを探してエンタープライズデータを探索および検索するように動作を実行してもよい。いくつかの局面においては、エンタープライズデータマネージャ２２８は、モバイルコンピューティングデバイス（たとえばモバイルコンピューティングデバイス２４０）からのクエリを満たすエンタープライズデータを探してそのローカルストレージを探索してもよい。発見可能なエンタープライズデータはモバイルコンピューティングデバイスに送信される。ローカルストレージに存在しないエンタープライズデータは、エンタープライズコンピューティングシステム２１２，２１４に要求されてもよい。
【００７１】
いくつかの局面においては、エンタープライズデータマネージャ２２８は、エンタープライズコンピューティングシステムからさまざまなフォーマットで受信されるエンタープライズデータとは別個に、モバイルコンピューティングデバイスに分散させるようにフォーマットされたエンタープライズデータを記憶してもよい。エンタープライズデータは、エンタープライズデータのバージョン、アプリケーションのタイプ、サービスのタイプ、エンタープライズコンピューティングシステムのタイプ、ユーザ、モバイルコンピューティングデバイス、エンタープライズデータのコンテンツ、データタイプ（たとえばアイテム、アイテムの集合もしくはブロブ）、またはそれらの組合せなどの基準に基づいて記憶されてもよい。いくつかの局面においては、エンタープライズデータにおいて識別される他の情報が、ローカルストレージに記憶されてもよい。たとえば、エンタープライズデータに対応するポリシー情報は局所的に記憶されてもよい。ＵＲＩおよびポリシー情報についてのさらなる詳細を以下に記載する。
【００７２】
エンタープライズデータパーサ２２０は、エンタープライズコンピューティングシステム２１２，２１４からさまざまなフォーマットで受信されたエンタープライズデータを解析してもよい。いくつかの局面においては、エンタープライズデータ８６２は、モバイルコンピューティングデバイス上のアプリケーションにとって未知であり得るフォーマットで受信される可能性がある。レガシーエンタープライズコンピューティングシステムをいくつか含んでいる、多くのさまざまなエンタープライズコンピューティングシステムの場合、エンタープライズデータはさまざまなフォーマットで受信され得る。たとえば、エンタープライズコンピューティングシステム２１２，２１４から受信されたエンタープライズデータは、ＲＥＳＴプロトコルに対応するＲＥＳＴフォーマットで構造化されてもよい。いくつかの局面においては、エンタープライズコンピューティングシステムから受信されたエンタープライズデータは、ＪＳＯＮフォーマットを用いてコンテンツ（たとえばアイテムおよびアイテムの集合）を構造化してもよい。エンタープライズデータパーサ２２０は、エンタープライズデータを、それが受信されたフォーマットで解析するように構成されてもよい。エンタープライズデータパーサ２２０は、エンタープライズデータを解析して、アイテム、アイテムの集合およびブロブを識別し得る。いくつかの局面においては、エンタープライズデータパーサ２２０は、アイテムが複数の集合に含まれるかどうかを判断し得る。
【００７３】
いくつかの局面においては、エンタープライズコンピューティングシステム２１２，２１４から受信されたエンタープライズデータはポリシー情報を含み得る。ポリシー情報は、各々の別個の情報についてのポリシーをエンタープライズデータに含み得る。さらに以下に記載されるように、別個の情報はアイテムに対応する可能性もある。たとえば、ポリシー情報は、コンタクトのリストに含まれる各々のコンタクト情報に対応するポリシーを含み得る。いくつかの局面においては、エンタープライズコンピューティングシステム２１２，２１４から受信されたエンタープライズデータは、各々の別個の情報についての追加情報の位置を示す情報（たとえばＵＲＩ）を含み得る。エンタープライズデータパーサ２２０は、エンタープライズデータのうち別個の情報に対応する部分に関連付けられるＵＲＩおよび／または対応するポリシー情報を識別するために、エンタープライズデータを解析するように構成されてもよい。
【００７４】
いくつかの局面においては、エンタープライズデータマネージャ２２８は、モバイルコンピューティングデバイス２４０，２５０から受信されたエンタープライズデータが、１つ以上のエンタープライズコンピューティングシステム２１２，２１４についてのエンタープライズデータの更新を含むかどうかを判断し得る。エンタープライズデータマネージャ２２８は、エンタープライズデータが更新されたかどうかを判断するために、局所的に記憶されたエンタープライズデータと、モバイルコンピューティングデバイスから受信したエンタープライズデータのバージョンとを比較してもよい。いくつかの局面においては、モバイルコンピューティングデバイスから受信された通信は、モバイルコンピューティングデバイスから受信されたエンタープライズデータが更新を含むかどうかを示す可能性もある。以下に記載されるバージョン判断部２２４は、エンタープライズデータのバージョンを示す情報、および／または、受信されたエンタープライズデータに基づいてエンタープライズデータが更新されたかどうかを示す情報を提供し得る。
【００７５】
いくつかの局面においては、エンタープライズデータマネージャ２２８は、モバイルコンピューティングデバイス２４０，２５０およびエンタープライズコンピューティングシステム２１２，２１４から受信したエンタープライズデータの更新を管理してもよい。たとえば、エンタープライズデータマネージャ２２８は、現在のバージョンのエンタープライズデータを維持するためにエンタープライズデータをマージしてもよい。データは、エンタープライズデータが更新され、作成され、削除される順序に基づいて、マージされて更新されてもよい。モバイルコンピューティングデバイスによって更新または作成されたエンタープライズデータは、エンタープライズコンピューティングシステムに伝達されてもよい。エンタープライズデータマネージャ２２８は、あるバージョンのエンタープライズデータを用いて、エンタープライズデータが更新されるべきかどうかを判断してもよい。以下に記載されるバージョン判断部２２４は、エンタープライズデータのバージョンを判断するように構成されてもよい。いくつかの局面においては、新しいエンタープライズデータまたは既存のエンタープライズデータの更新が、同期のために、モバイルコンピューティングデバイスおよびエンタープライズコンピューティングシステムに伝達されてもよい。いくつかの局面においては、更新済みエンタープライズデータが、あるバージョンでモバイルコンピューティングデバイスに伝達されることにより、モバイルコンピューティングデバイスが、更新済みアイテムについてのエンタープライズデータの同期を維持することが可能になり得る。
【００７６】
いくつかの局面においては、エンタープライズデータマネージャ２２８は、更新済みエンタープライズデータについての要求を処理し得る。要求は、同期マネージャ１１０によって用いられる通信プロトコルで受信されてもよい。当該要求は、ＨＴＴＰベースのコマンド（たとえば、取得（Get）、配置（Put）、通知（Post）または削除（Delete））などのコマンドを含み得る。これらのコマンドは、同期されるべきアイテム、アイテムの集合および／またはＢＬＯＢについての識別子を含み得る。
【００７７】
更新済みエンタープライズデータについての要求は、モバイルコンピューティングデバイス２４０，２５０から受信されてもよい。いくつかの局面においては、更新済みエンタープライズデータについての要求は、エンタープライズデータのバージョンを含み得る。エンタープライズデータマネージャ２２８は、局所的に記憶されたエンタープライズデータのバージョンが要求によって示されているバージョンとは異なっているかどうかを判断してもよい。エンタープライズデータマネージャ２２８は、変化したアイテムおよびアイテムの集合について、更新済みエンタープライズデータをモバイルコンピューティングデバイスに送信し得る。いくつかの局面においては、エンタープライズデータマネージャ２２８は、アプリケーションによって要求されたエンタープライズデータに対応するＢＬＯＢを送信してもよい。ＢＬＯＢは、より大型のＢＬＯＢの一部を含み得る。エンタープライズデータマネージャ２２８は、モバイルコンピューティングデバイス上に記憶され、通信帯域幅を消費し得るＢＬＯＢ全体ではなく、ＢＬＯＢのうち必要とされ得る部分を判断してもよい。
【００７８】
エンタープライズデータパーサ２２０は、エンタープライズデータ内のいくつかのタイプの情報を識別するように構成されてもよい。情報のタイプはアイテム、アイテムの集合およびブロブを含み得る。エンタープライズデータパーサ２２０は、エンタープライズデータを解析して情報のタイプを識別し得る。いくつかの局面においては、エンタープライズデータは、アイテム、アイテムの集合およびブロブを識別するように解析可能であってもよい。アイテムは、他の情報から識別可能な一片の情報を含んでもよい。たとえば、複数の人々についてのコンタクト情報を含むエンタープライズデータは、各々の人についてのコンタクト情報に対応するデータを有する可能性がある。エンタープライズデータは、各々の人についての別個のコンタクト情報に対応するアイテムを区別するように解析されてもよい。アイテムの集合は、エンタープライズデータと識別可能なアイテムとの関係によって識別されてもよい。いくつかの局面においては、複数のアイテムが、関係を有する集合（たとえばグループ）として識別され得るように、エンタープライズデータのフォーマットが構造化されてもよい。いくつかの局面においては、エンタープライズデータパーサ２２０は、エンタープライズデータを解析して、エンタープライズデータにおけるＢＬＯＢを識別してもよい。ＢＬＯＢは、他の場合には識別不可能であるエンタープライズデータとして識別されてもよく、または、アイテムもしくはアイテムの集合に関連付けられてもよい。いくつかの局面においては、エンタープライズデータは、エンタープライズデータの構造が既知となり得るように、ＲＥＳＴデータフォーマットで受信されてもよい。アイテムは、ＲＥＳＴフォーマットに従ってエンタープライズデータを解析することによって識別されてもよい。いくつかの局面においては、エンタープライズデータは、アイテムがＵＲＩに基づいて識別され得るように、エンタープライズデータにおけるＵＲＩに基づいて解析可能であり得る。
【００７９】
いくつかの局面においては、エンタープライズデータは、エンタープライズデータにおいて識別される情報のタイプに対応する情報のバージョンを示す情報を含み得る。バージョン判断部２２４は、バージョンを識別するために、識別されたタイプの情報に対応するエンタープライズデータに対する処理を実行してもよい。いくつかの局面においては、エンタープライズデータにおける情報のタイプが識別されると、バージョン判断部２２４は、アイテム、アイテムの集合および／またはブロブなどの識別された情報を局所的に記憶されたエンタープライズデータと比較して、いずれのデータが変化したかを判断し得る。
【００８０】
エンタープライズデータにおける情報のタイプが識別されると、エンタープライズデータマネージャ２２８は、識別された情報をクラウドコンピュータシステム１２０のローカルストレージに記憶し得る。エンタープライズデータについてのバージョン情報は、エンタープライズデータの現在のバージョンを更新および管理するために、エンタープライズデータとともに記憶されてもよい。バージョン情報は、エンタープライズデータマネージャ２２８が、現在のバージョンを判断すること、および、更新がモバイルコンピューティングデバイス２４０，２５０およびエンタープライズコンピューティングシステム２１２，２１４のいずれかまたは両方に伝達されるべきであるかどうかを判断することを可能にし得る。
【００８１】
コンバータ２２２は、あるフォーマットのエンタープライズデータを別の異なるフォーマットに変換し得る。たとえば、コンバータ２２２は、ある１つのフォーマット（たとえばＲＥＳＴデータフォーマット）で受信されたエンタープライズデータを、モバイルコンピューティングデバイス２４０，２５０によって読取り可能であり得る別のフォーマット（たとえばＪＳＯＮフォーマット）にし得るが、逆もまた同様に可能であり得る。エンタープライズコンピューティングシステム２１２，２１４から受信されたエンタープライズデータは、エンタープライズデータのコンテンツを判断するように処理される前に変換されてもよい。いくつかの局面においては、モバイルコンピューティングデバイスによって読取り可能なフォーマット（たとえばＪＳＯＮフォーマット）に変換することにより、既にこのようなフォーマットである場合を除いては、エンタープライズデータパーサ２２０がエンタープライズデータのコンテンツを識別することが可能になり得る。いくつかの局面においては、モバイルコンピューティングデバイスとエンタープライズコンピューティングシステムとの間で伝達されるエンタープライズデータは、エンタープライズデータが両者によって解析可能である（たとえばパーズ可能である）場合には、変換されない可能性がある。コンバータ２２２は、前のバージョンから更新されているエンタープライズデータを変換してもよい。
【００８２】
いくつかの局面においては、コンバータ２２２は、アイテム、アイテムの集合およびブロブを識別するために、コンバータエンタープライズデータに識別子（たとえばエンティティタグ）を挿入してもよい。エンタープライズコンピューティングシステムによって用いられるフォーマットからモバイルコンピューティングデバイスによって用いられるフォーマットへとエンタープライズデータを変換している間に、コンバータ２２２は、エンタープライズデータに各々のアイテムについての識別子を挿入してもよい。コンバータ２２２は、アイテムのバージョンを示すバージョン情報を挿入してもよい。バージョン情報はバージョン判断部２２４によって判断されてもよい。モバイルコンピューティングデバイスがエンタープライズデータをその局所的に記憶されたエンタープライズデータと同期させることを可能にするために、識別子およびバージョン情報が更新済みエンタープライズデータに含まれてもよい。
【００８３】
クラウドコンピュータシステム１２０はポリシーマネージャ２３２を含み得る。ポリシーマネージャ２３２は、エンタープライズデータに関連付けられたポリシー情報に基づいてエンタープライズデータの同期を管理してもよい。ポリシー情報は、ローカルストレージにエンタープライズデータとともに記憶されてもよい。ポリシー情報は、エンタープライズデータの記憶および同期についての基準を示し得る。いくつかの局面においては、ポリシーマネージャ２３２は、エンタープライズデータをモバイルコンピューティングデバイスと同期させるための方法を決定してもよい。たとえば、ポリシーマネージャ２３２は、無線ネットワークに対する各々のモバイルコンピューティングデバイスの通信接続（たとえばデータ転送速度、通信のタイプなど）の分類に基づいて、更新済みエンタープライズデータを含むエンタープライズデータを如何にモバイルコンピューティングデバイスに提供するかについての指示をエンタープライズデータマネージャ２２８に与え得る。
【００８４】
クラウドコンピュータシステムは、モバイルコンピューティングデバイスとエンタープライズコンピューティングシステムとの間におけるエンタープライズデータの通信を容易にし得る。エンタープライズデータを伝達するのに用いられるプロトコルの翻訳を処理することにより、モバイルコンピューティングデバイス上のアプリケーションは、さまざまなエンタープライズコンピューティングシステムからエンタープライズデータを取得してもよい。エンタープライズデータにおける別個の情報（たとえばアイテム、アイテムの集合およびブロブ）を識別することにより、クラウドコンピュータシステムは、情報のグループ間で関連しているエンタープライズデータの重複を最小限にすることができる。別個の情報をさらに識別することにより、クラウドコンピュータシステムが、変化したアイテム、アイテムの集合およびＢＬＯＢに対して、またはポリシー情報に基づいて更新される必要のあるアイテム、アイテムの集合およびＢＬＯＢに対して、エンタープライズデータを送達することを管理することが可能となる。別個の情報を識別することにより、アプリケーションが、以降の探索および検索のために使用することができる別個の情報を容易に識別することが可能となる。
【００８５】
図３は、本発明のいくつかの局面に従った、さまざまなタイプのエンタープライズコンピューティングシステムとモバイルコンピューティングデバイスとの間でエンタープライズデータを同期させるためのコンピューティングシステム（たとえばクラウドコンピュータシステム１２０）を示すブロック図である。モバイルコンピューティングデバイス１０２は、クラウドコンピュータシステム１２０を介して、エンタープライズコンピューティングシステム（たとえばエンタープライズコンピューティングシステム１４０）とのエンタープライズデータの通信および／または同期のためにさまざまな動作を実行するように構成された１つ以上の機能ブロックまたはモジュールとして実現されてもよい。
【００８６】
モバイルコンピューティングデバイス１０２は同期マネージャ１１０および通信モジュール３３０を含み得る。通信モジュール３３０はクラウドコンピュータサーバ１２０との通信用に構成されてもよい。同期マネージャ１１０はソフト開発キット（software development kit：ＳＤＫ）を含み得るかまたは実現し得る。ＳＤＫは、クラウドコンピュータサーバ１２０との通信用およびアプリケーションについてのエンタープライズデータ管理の処理用のインターフェイスを提供し得る。ＳＤＫは、さまざまなアプリケーションおよび／またはさまざまなモバイルコンピューティングデバイスによって使用され得る共通のインターフェイスを提供し得る。通信プロトコルがエンタープライズコンピューティングシステムによってサポートされているにもかかわらず、同期マネージャ１１０は、クラウドコンピュータシステム１２０とのエンタープライズデータの同期を管理し得る。エンタープライズデータは、モバイルコンピューティングデバイス上でアプリケーションが使用される場合とエンタープライズコンピューティングシステムに変更があった場合との間においてクラウドコンピュータシステム１２０によって同期されてもよい。
【００８７】
同期マネージャ１１０は、アプリケーションプログラムインターフェイス（ＡＰＩ）３１２を含み得る。このアプリケーションプログラムインターフェイス（ＡＰＩ）３１２は、アプリケーション（たとえば、アプリケーション１０４）がエンタープライズデータへのアクセスおよびエンタープライズデータの使用に関するさまざまな動作をエンタープライズコンピューティングシステムに要求することを可能にし得る。同期マネージャ１１０のすべてまたは一部はアプリケーション１０４において実現されてもよい。いくつかの局面においては、アプリケーションは、エンタープライズデータの同期を管理するために同期マネージャ１１０のＡＰＩを呼出してもよい。ＡＰＩは、アプリケーションが同期マネージャ１１０を用いてエンタープライズデータに関する動作を実行し得るように拡張されてもよい。ＡＰＩ３１２は、エンタープライズデータ３６２の管理およびエンタープライズデータ３６２へのアクセスを行なうために、呼出し可能な機能、方法、動作、ルーチンなどを提供し得る。このような呼出し可能な機能は、ポリシーについて情報や、キャッシュ３６０からアクセスされたエンタープライズデータ３６２についての情報にアクセスするための機能を含み得る。ＡＰＩ３１２により、アプリケーションが、クラウドコンピュータシステム１２０を介してエンタープライズコンピューティングシステムにエンタープライズデータを要求することが可能になり得る。ＡＰＩ３１２は、エンタープライズデータを要求するかまたは更新するためのパラメータなどの情報を受信し得る。いくつかの局面においては、キャッシュ３６０は、データベース１１４および／またはファイルシステム１１６などのローカルストレージを含み得る。
【００８８】
同期マネージャ１１０は、通信分類部３１６、ポリシーマネージャ３１８、バージョン判断部３２０、探索モジュール３２２、データマネージャ３２４、およびデータパーサ３２６を含み得る。モバイルコンピューティングデバイスは、キャッシュ３６０などの１つ以上のメモリ記憶装置（「ローカルストレージ」）を含み得る。キャッシュ３６０は、エンタープライズデータ３６２を記憶するために用いられてもよい。エンタープライズデータ３６２はクラウドコンピュータシステム１２０から受信されてもよい。キャッシュ３６０は、アプリケーションによって作成または更新されたエンタープライズデータ３６２をオフラインで記憶し得る。ポリシー情報はエンタープライズデータ３６２とともに含まれてもよい。いくつかの局面においては、モバイルコンピューティングデバイスは、ポリシー情報３４４を記憶するデータベース１１４を含み得る。ポリシー情報３４４は、エンタープライズデータ３６２とともに含まれるポリシー情報に基づいていてもよい。ポリシー情報３４４は、マークアップ言語フォーマット（たとえばＸＭＬフォーマット）でフォーマットされてもよい。ポリシー情報３４４は、エンタープライズデータを記憶および／または使用するための基準を示し得る。ポリシー情報は通信接続に基づいた基準を含んでもよい。このような基準はキャッシュを行なうためのルールを示すために用いられてもよい。
【００８９】
いくつかの局面においては、モバイルコンピューティングデバイス１０２上で実行されるアプリケーション（たとえばアプリケーション１０４）は、クラウドコンピュータシステム１２０に要求を伝達してもよい。モバイルコンピューティングデバイス１０２は、ネットワークを介するクラウドコンピュータシステム１２０との通信接続を確立するように構成された通信モジュール３３０を含み得る。いくつかの局面においては、アプリケーション１０４は、通信プロトコルに従って要求を伝達するための通信クライアント３３２を含み得る。通信クライアント３３２は、ネットワークを介してクラウドコンピュータシステム１２０と要求の伝達および応答の受信を行なうのに用いられてもよい。通信クライアント３３２は、ＨＴＴＰプロトコルを用いてＨＴＴＰ要求を伝達するためのＨＴＴＰクライアントを含み得る。いくつかの局面においては、通信クライアント３３２は、さまざまなタイプのアプリケーション、サービスおよびモバイルコンピューティングデバイスによって使用されるように構成され得るカスタム通信クライアントを用いてもよい。さまざまなモバイルコンピューティングデバイス上のアプリケーションにアクセス可能な通信プロトコルを用いることによって、クラウドコンピュータシステム１２０は、さまざまな通信プロトコルを用いて通信する必要なしに、さまざまなアプリケーションと通信し得る。アプリケーション１０４は、通信クライアント３３２を介して要求を伝達することによってクラウドコンピュータシステム１２０と通信してもよい。いくつかの局面においては、アプリケーション１０４は、ＡＰＩ３１２を介して、同期マネージャ１１０に対して、通信クライアント３３２を介するクラウドコンピュータシステム１２０との通信を含み得る動作を実行することを要求してもよい。いくつかの局面においては、通信クライアント３３２を介して伝達された要求は、クラウドコンピュータシステム１２０に要求を伝達する前に、要求のための処理を実行するために、同期マネージャ１１０によって妨害される可能性がある。
【００９０】
上述のように、エンタープライズデータ３６２は、モバイルコンピューティングデバイス上のさまざまなアプリケーションによって読取り可能であり得るフォーマットで受信されてもよい。いくつかの局面においては、エンタープライズデータは、多くのタイプのアプリケーションによって容易に解析可能であり得るＪＳＯＮフォーマットなどのフォーマットであってもよい。データパーサ３２６は、エンタープライズデータを解析するための動作を実行し得る。クラウドコンピュータシステム１２０から受信されたエンタープライズデータは、エンタープライズコンピューティングシステムから受信されたときのエンタープライズデータのフォーマットとは異なるフォーマットに従ってフォーマットされてもよい。いくつかの局面においては、エンタープライズデータは、いくつかのタイプのデータが識別可能になり得るようにフォーマットされてもよい。たとえば、エンタープライズデータは、アイテム、アイテムの集合またはブロブなど、特別なタイプのデータとしてフォーマットされてもよい。データパーサ３２６は、アイテム、アイテムの集合および／またはブロブを識別するようにエンタープライズデータを解析し得る。いくつかの局面においては、データパーサ３２６は、識別されたタイプの各々のインスタンスについてのエンタープライズデータに対応するエンタープライズデータに挿入された識別子（たとえばエンティティタグ）に基づいて、これらのデータタイプを有するこれらのエンタープライズデータを識別し得る。
【００９１】
データマネージャ３２４は、アプリケーションについてのエンタープライズデータを管理し得る。アプリケーション（たとえばアプリケーション１０４）は、アプリケーションに対応するエンタープライズデータについての要求を通信クライアント３３２を通じて伝達してもよい。データマネージャ３２４は、エンタープライズデータの作成、読取、更新および／または削除を含む動作を実行し得る。このような動作は、エンタープライズデータについてのアプリケーションからの要求に応じて実行されてもよい。データマネージャ３２４はエンタープライズデータ３６２をキャッシュ３６０に記憶し得る。識別されたデータタイプは、エンタープライズデータに含まれ得る対応するＵＲＩを有してもよい。ＵＲＩは、アイテムに対応する情報の位置を特定するのに用いられてもよい。アイテムは、他のアイテムを識別するＵＲＩの情報または他の情報を含んでもよい。他のアイテムがキャッシュ３６０に記憶されてもよい。データマネージャ３２４は、アイテムについてのエンタープライズデータを要求することができる。エンタープライズデータを記憶するためにキャッシュ３６０上のストレージの消費を減らすために、データマネージャ３２４は、他のアイテムによって参照されるアイテムまたはアイテムの集合に含まれるアイテムに対応するエンタープライズデータのコピーを１つだけ記憶してもよい。いくつかの局面においては、データマネージャ３２４は、キャッシュ３６０上で探索を実行して、要求されたエンタープライズデータが存在するかどうかを判断し、もし存在するのであれば、アプリケーションにエンタープライズデータを提供し得る。しかしながら、エンタープライズデータが存在しない場合、同期マネージャ１１０はクラウドコンピュータシステム１２０への要求を開始する可能性がある。エンタープライズデータの更新、作成または削除などの他のタイプの要求の場合、データマネージャは、このような動作が実行可能かどうかを判断し得る。必要に応じて、データマネージャ３２４は要求を実行するためにクラウドコンピュータシステム１２０への要求を開始してもよい。
【００９２】
バージョン判断部３２０は、エンタープライズデータにおいて見出された各々のアイテム、アイテムの集合および／またはブロブのバージョンなどの、エンタープライズデータのバージョンを判断し得る。いくつかの局面においては、エンタープライズデータにおいては識別される各々のアイテム、アイテムの集合またはブロブは、対応するエンタープライズデータのバージョンを含み得る。エンタープライズデータのバージョンは、エンタープライズコンピューティングシステムと同期させたエンタープライズデータのバージョンに対応し得る。このバージョンは、アプリケーションからのエンタープライズデータを同期させるために用いられてもよい。いくつかの局面においては、エンタープライズデータのバージョンについての情報は、エンタープライズデータ内のアイテム、アイテムの集合またはブロブにおける識別子（たとえばエンティティタグ）によって示されてもよい。
【００９３】
データマネージャ３２４は、エンタープライズデータのバージョンを示すバージョン情報を記憶し得る。アイテム、アイテムの集合および／またはブロブはバージョン情報と関連付けて記憶されてもよい。データマネージャ３２４は、その更新時にエンタープライズデータのバージョンを更新してもよく、または、エンタープライズデータが作成されたときに新しいバージョンを割当ててもよい。通信モジュール３３０がクラウドコンピュータシステム１２０と通信を確立することができれば、更新、削除または作成されたエンタープライズデータが、エンタープライズコンピューティングシステムと同期させられるように、クラウドコンピュータシステム１２０に伝達され得る。バージョン情報には、同期用に伝達されるアイテム、アイテムの集合および／またはブロブに対応するエンタープライズデータが与えられてもよい。上述のように、クラウドコンピュータシステム１２０はエンタープライズデータの同期済みバージョンを維持し得る。エンタープライズデータは、アプリケーションの各々の別個のインスタンスに基づいて、またはエンタープライズデータを受信する各々の別個のモバイルコンピューティングデバイスに基づいて維持されてもよい。バージョン情報により、クラウドコンピュータシステム１２０が、別のアプリケーションまたはエンタープライズコンピューティングシステムによって変更されたエンタープライズデータを更新するための順序を決定することが可能になり得る。
【００９４】
データマネージャ３２４は、キャッシュ３６０に記憶されたエンタープライズデータ３６２を同期させるために、クラウドコンピュータシステム１２０にエンタープライズデータの更新を要求してもよい。いくつかの局面においては、データマネージャ３２４は、記憶されたエンタープライズデータ３６２の更新の要求とともにバージョン情報を伝達し得る。バージョン情報は、エンタープライズデータ３６２において識別されたアイテム、アイテムの集合および／またはブロブに対応し得る。クラウドコンピュータシステム１２０は、バージョン情報を用いて、どのアイテムを同期させるべきかを判断してもよい。更新済みバージョンを有するアイテムおよびブロブに対応するエンタープライズデータが、クラウドコンピュータシステム１２０から受信されてもよい。いくつかの局面においては、集合に対応するエンタープライズデータが受信されて、アイテムの集合の更新が示され得る。
【００９５】
ポリシーマネージャ３１８はエンタープライズデータ３２６に対応するポリシー情報を管理し得る。ポリシーマネージャ３１８はローカルストレージにポリシー情報３４４を記憶し得る。いくつかの局面においては、ポリシー情報３４４はＸＭＬファイルなどのフォーマットされたファイルに記憶されてもよい。ポリシー情報３４４は、エンタープライズデータとともにクラウドコンピュータシステム１２０から受信されてもよい。いくつかの局面においては、エンタープライズデータはポリシー情報３４４を含んでもよい。
【００９６】
上述したように、ポリシー情報３４４はエンタープライズデータを記憶するための基準を示し得る。このような基準は、エンタープライズデータを用いるアプリケーションのタイプまたはエンタープライズデータのタイプ（たとえば、アイテム、アイテムの集合またはブロブ）に基づいていてもよい。たとえば、極秘データ（たとえば人物情報、医療情報、財務情報など）に対応するエンタープライズデータが関連付けられ得るポリシーは、エンタープライズデータがアプリケーションのアクティブなセッション中に記憶されるべきことと、アプリケーションの終了時に削除されるべきであることとを示す。別の例においては、ニュースのような非極秘情報や非個人情報が、アプリケーションのさまざまなセッションにわたってキャッシュ３６０に記憶されたままにされてもよい。ポリシー情報３４４は、ポリシーに関連付けられたエンタープライズデータを更新するための基準を示し得る。ニュースなどの頻繁に変化する可能性のあるエンタープライズデータの場合、ポリシー情報３４４における基準は、そのエンタープライズデータが周期的なスケジュールに従って定期的に更新可能であることを示し得る。
【００９７】
同期ＳＤＫ１１０は、それが所与のさまざまな接続速度でデータを如何にキャッシュすべきかを判断するためにポリシーＸＭＬファイル１１２を読出すことができる。たとえば、ユーザが集合のアイテムを変更した場合、中間接続があることに基づいて、さらに、ユーザによって編集された集合のアイテムが１つしかないことに基づいて、アイテムを同期サービス１２０にアップロードすることができる。ポリシーは、現在の接続速度およびポリシーの分類に基づいて動作を判断することができる。
【００９８】
いくつかの局面においては、ポリシー情報３４４における基準はモバイルコンピューティングデバイスからの通信接続に関連している可能性がある。通信接続に基づいた基準は、データ転送速度、通信接続のタイプ、通信接続に基づいた他の基準またはそれらの組合せを含み得る。
【００９９】
ポリシー情報における他の基準は、エンタープライズデータを記憶してこのエンタープライズデータにアクセスするための条件を含み得る。たとえば、ポリシー情報３４４は、アプリケーションの状態（たとえば、再開もしくは終了）または期限満了時間に基づいてエンタープライズデータを記憶するための基準を示し得る。期限満了時間は、アプリケーションがいつ終了もしくは再開するかに基づいていてもよく、または、キャッシュ３６０においてポリシー情報が位置特定できるかどうかに基づいていてもよい。別の例においては、ポリシー情報３４４は、クラウドコンピュータシステム１２０に更新を要求することによってポリシー情報が更新されるべき場合の条件を示してもよい。場合によっては、ポリシー情報３４４は、モバイルコンピューティングデバイスがいつクラウドコンピュータシステム１２０と通信接続するか、または、ポリシー情報がいつ検索不可能になったかに基づいて更新されてもよい。
【０１００】
データマネージャ３２４は、エンタープライズデータ３６２に対応するポリシー情報に基づいて、具体的には、エンタープライズデータ３６２において識別された各々のアイテム、アイテムの集合またはブロブに基づいて、更新されるべきエンタープライズデータ３６２を決定してもよい。いくつかの局面においては、ＡＰＩ３１２は、エンタープライズデータについてのポリシー情報を要求するために呼出し可能なインターフェイスを含み得る。ＡＰＩ３１２は、ポリシー情報およびポリシー情報の期限満了を更新するための基準を含むポリシー情報３４４を判断することができる呼出し可能なルーチンを提供し得る。いくつかの局面においては、ポリシー情報３４４の更新の許可は、エンタープライズデータのタイプ、エンタープライズデータにアクセスするアプリケーションのタイプまたはエンタープライズデータのコンテンツに関する他の基準に基づいて制限される可能性がある。
【０１０１】
データマネージャ３２４は、エンタープライズデータ３６２に対応するポリシー情報３４４に基づいてエンタープライズデータ３６２を同期させるべき（たとえば更新すべき）かどうかを判断してもよい。通信接続に関する基準を示すポリシー情報３４４の場合、データマネージャ３２４は、モバイルコンピューティングデバイス１０２とクラウドコンピュータシステム１２０との間における通信の分類に基づいてエンタープライズデータを更新するべきかどうか判断してもよい。たとえば、データ転送速度がポリシーによって示される通信接続しきい値を満たす場合、エンタープライズデータが更新されてもよい。他の基準は、通信接続の分類に基づいて規定され得る。
【０１０２】
通信分類部３１６は、モバイルコンピューティングデバイス１０２とクラウドコンピュータシステム１２０との間における通信接続についての情報を判断し得る。当該情報は、通信接続に基づいた基準がポリシーに対して満たされるかどうかを判断するためにデータマネージャによって用いられてもよい。通信分類部３１６は、通信接続についての情報を通信モジュール３３０から取得し得る。たとえば、通信分類部３１６は、モバイルコンピューティングデバイス１０２の現在の接続速度を分類してもよい。現在の接続データ転送速度は、通常の機能に応じて高速・中速・低速と分類することができる。たとえば、１ＭＢ／秒の帯域幅よりも高い現在の接続データ転送速度は「高速」と見なされ、５００ｋＢ／秒から１ＭＢ／秒にわたるデータ転送速度は「中速」と見なされ、５００ｋＢ／秒未満のデータ転送速度は低速と見なされ得る。いくつかの局面においては、通信分類部３１６は、最高の名目転送速度の百分率として転送速度を決定することができる。たとえば、最高転送速度が１ＭＢ／秒（１００％）である場合、中転送速度は２５％〜７５％の範囲にあると見なすことができ、２５％未満であればいずれも低転送速度とされる。別の例においては、通信分類部３１６は、接続のタイプ（たとえば、４Ｇ、３Ｇ、Ｗｉ−Ｆｉ、接続無（nonexistent）など）に基づいて通信接続を分類してもよい。
【０１０３】
図４は、本発明のいくつかの局面に従った、モバイルコンピューティングデバイスとエンタープライズコンピューティングシステムとの間でエンタープライズデータを同期させるプロセスを示すフローチャートである。具体的には、プロセス４００により、モバイルコンピューティングデバイス（たとえばモバイルスマートフォン）が、更新済みエンタープライズデータについての要求をクラウドコンピュータシステム（たとえばクラウドサービス）に送信することによって、エンタープライズコンピューティングシステムのためにエンタープライズデータを同期させることが可能になる。いくつかの局面においては、更新済みエンタープライズデータについての要求は、各々のアイテムまたはアイテムの集合についてのポリシー情報に基づいて伝達されてもよい。上述のように、ポリシー情報は、アイテムおよびアイテムの集合などのエンタープライズデータに関連付けられてもよい。ポリシー情報は、アイテム、またはアイテムを更新するための時間および方法を含むアイテムの集合を更新するためのポリシー（たとえば基準）を示し得る。いくつかの局面においては、ポリシー情報は、アイテムが通信接続のタイプに基づいて一定の態様で更新され得るように、通信接続などのアイテムを更新するための基準を示してもよい。このような基準に基づいて、プロセス４００は、更新済み情報を取得するために要求がなされるべきアイテムを決定し得る。いくつかの局面においては、モバイルコンピューティングデバイス（たとえば図１のモバイルコンピューティングデバイス１０２）がプロセス４００を実現してもよい。
【０１０４】
ブロック４０５から始めて、プロセス４００は、ネットワークとの無線通信接続を介して、モバイルコンピューティングデバイス上で実行されるように構成されたアプリケーションについてのエンタープライズデータを受信するステップを含み得る。たとえば、モバイルコンピューティングデバイス１０２は、ネットワークとの無線通信接続を介してクラウドコンピュータシステム１２０からエンタープライズデータを受信してもよい。エンタープライズデータは、モバイルコンピューティングデバイス１０２上のアプリケーション１０４によって用いられてもよい。エンタープライズデータは、別のフォーマットから変換されていた可能性のある１フォーマットで構造化されてもよい。変換前のエンタープライズデータのフォーマットは、変換後のフォーマットとは異なっている可能性がある。たとえば、エンタープライズデータは、エンタープライズコンピューティングシステム１４０のうちの１つから受信されたときのフォーマット（たとえばＲＥＳＴプロトコルフォーマット）であるかもしれない。エンタープライズデータは、クラウドコンピュータシステム１２０によって、モバイルコンピューティングデバイス上のさまざまなアプリケーションによって容易に読出すことができるフォーマット（たとえばＪＳＯＮフォーマット）に変換されてもよい。ブロック４１０において、プロセス４００は、モバイルコンピューティングデバイス（たとえばモバイルコンピューティングデバイス１０２）上のキャッシュ（たとえば、キャッシュ１６０）に対してエンタープライズデータを記憶するステップを含み得る。
【０１０５】
ブロック４１５において、プロセス４００は無線通信接続の現在の通信状態を判断するステップを含み得る。たとえば、プロセス４００は、モバイルコンピューティングデバイス１０２とクラウドコンピュータシステム１２０との間における現在の通信接続の通信状態を判断し得る。通信状態は、データ通信の速度、データ通信の帯域幅、通信接続がアクティブであるかどうか、またはこれらの組合せを含み得る。いくつかの局面においては、プロセス４００は、モバイルコンピューティングデバイス１０２とクラウドコンピュータシステム１２０との間における通信接続のタイプを判断し得る。
【０１０６】
ブロック４２０において、プロセス４００は、プロセス４００で受信される前に、エンタープライズデータが変換されるべきフォーマットに基づいて、エンタープライズデータにおける複数のアイテムの存在を識別するステップを含み得る。上述のように、フォーマットはＪＳＯＮフォーマットであってもよい。いくつかの局面においては、エンタープライズデータは、エンタープライズデータを解析することによってアイテムが識別され得るようなフォーマットを有し得る。エンタープライズデータは、エンタープライズデータを用いるであろうアプリケーションに対応してアイテムが識別可能になるように、フォーマットされてもよい。たとえば、エンタープライズデータは、各々が人のコンタクト情報に対応している複数のアイテムを含むようにフォーマットされてもよい。エンタープライズデータは、複数のアイテムの存在を識別するために解析されてもよい。エンタープライズデータを用いるアプリケーションは、エンタープライズデータを解析してエンタープライズデータ内のアイテムを判断するように構成されてもよい。
【０１０７】
ブロック４２５において、プロセス４００は、エンタープライズデータについてのポリシー情報を判断するステップを含み得る。ポリシー情報は、エンタープライズデータを管理する（たとえば更新する、記憶するまたは読出す）ためのポリシーを示し得る。ポリシー情報は、エンタープライズデータにおいて識別される各々のアイテムごとに判断されてもよい。ポリシー情報は、エンタープライズデータにおいて識別される各々のアイテムについてのポリシーを示し得る。いくつかの局面においては、ポリシー情報はエンタープライズデータとは別個に受信される可能性がある。エンタープライズデータは、ポリシー情報がどこに位置しているかを示し得る。いくつかの局面においては、ポリシー情報は、ポリシーが適用され得るアイテムを示してもよい。
【０１０８】
いくつかの局面においては、ポリシー情報は、アイテムに対応するエンタープライズデータの更新、記憶および／または削除を行なうための基準を示す。たとえば、ポリシー情報は、エンタープライズデータにアクセスし得るアプリケーションのタイプを示してもよい。別の例においては、ポリシー情報は、アイテムに対応するエンタープライズデータを記憶する時間の長さを示し得る。ポリシー情報の他の例は、アイテムを更新するための期間を含み得る。いくつかの局面においては、ポリシー情報は、通信接続の通信状態に少なくとも部分的に基づく基準を示し得る。たとえば、ポリシー情報は、通信状態に基づいてアイテムを更新するための方法を示し得る。モバイルコンピューティングデバイスとクラウドコンピュータシステムとの間における通信接続がある状態（たとえば、データ転送速度または接続のタイプ）を有する場合、いくつかのアイテムが更新され得る。更新され得るアイテムは、アプリケーションのタイプ、エンタープライズデータのタイプまたはエンタープライズデータに関する他の基準に対応し得る。アイテムに関連付けて局面および例を記載してきたが、ポリシー情報は、アイテムの集合に適用可能なポリシー、またはエンタープライズデータにおいて識別される他のタイプの情報を示す可能性もある。
【０１０９】
ブロック４３０において、プロセス４００は、ポリシー情報を用いて、エンタープライズデータにおける複数のアイテムのうち現在の通信状態に基づいて更新すべきアイテムを識別するステップを含み得る。アイテムは、クラウドコンピュータシステム（たとえばクラウドコンピュータシステム１２０）にアイテムの更新を受信するようにとの要求を送信することによって更新されてもよい。上述のように、ポリシー情報はエンタープライズデータにおけるアイテムを管理するためのポリシーを示し得る。ポリシーは、アイテムが更新されるべき頻度を示してもよい。このような頻度に基づいて、更新されるべきアイテムが識別され得る。ポリシーは、どのアイテムが更新されるべきであるかに基づいて、現在の通信状態などの基準を示し得る。たとえば、ポリシー情報は、モバイルコンピューティングデバイス（たとえばモバイルコンピューティングデバイス１０２）とクラウドコンピュータシステム（たとえばクラウドコンピュータシステム１２０）との間における無線通信接続の通信状態が、いつ、特定のしきい値データ転送速度（たとえば３Ｇまたは４Ｇ通信）を満たすかに基づいて、アイテムを更新するためのポリシーを示してもよい。ポリシーによって示されるしきい値データ転送速度などの通信状態は、アイテムの更新を受信するための適切な帯域幅が存在することを確実にし得る。
【０１１０】
ブロック４３５において、プロセス４００は、識別されたアイテムに対応する更新済みエンタープライズデータについての要求を送信するステップを含み得る。たとえば、モバイルコンピューティングデバイス１０２は、識別されたアイテムに対応する更新済みエンタープライズデータについての要求をクラウドコンピュータシステム１２０に送信してもよい。いくつかの局面においては、当該要求はアイテムのバージョンを示し得るが、これをクラウドコンピュータシステム１２０が用いて、アイテムに対応する更新済みエンタープライズデータが存在するかどうかを判断することもあり得る。いくつかの局面においては、当該要求は、モバイルコンピューティングデバイス上などに、アイテムのためにオフラインで更新されたエンタープライズデータを含み得る。
【０１１１】
ブロック４４０において、プロセス４００は、ポリシー情報に基づいて更新されるべきであると識別されたアイテムについての更新済みエンタープライズデータを受信するステップを含み得る。更新済みエンタープライズは、クラウドコンピュータシステムから受信されてもよい。クラウドコンピュータシステムは、アイテムについての更新済みエンタープライズデータについての要求が受信されると、更新を送信し得る。更新済みエンタープライズデータは、モバイルコンピューティングデバイスにおいて記憶されたアイテムに対応するエンタープライズデータのバージョンが最新のものではないと判断されると、送信されてもよい。いくつかの局面においては、更新済みエンタープライズデータは、アイテムに対応するすべてのエンタープライズデータではなく、アイテムについてのエンタープライズデータの変更を含み得る。
【０１１２】
ブロック４４５において、プロセス４００は、識別されたアイテムについての更新済みエンタープライズデータでキャッシュを更新するステップを含み得る。たとえば、モバイルコンピューティングデバイス上のキャッシュ（たとえば、モバイルコンピューティングデバイス１０２のキャッシュ１６０）は、クラウドコンピュータシステムから受信された更新済みエンタープライズデータを用いて更新されてもよい。いくつかの局面においては、キャッシュは、エンタープライズデータのうち変化したアイテムに対応する部分とともに更新され得る。当該プロセスはブロック４５０で終了する。
【０１１３】
プロセス４００が例示的であること、ならびに変形および修正が可能であることが理解される。連続して記載されたステップは並行して実行されてもよく、ステップの順序は変更されてもよく、ステップは修正され、組合わされ、追加されるかまたは省略されてもよい。いくつかの局面では、プロセス４００は、エンタープライズデータがネットワークとの無線通信接続を介して受信される場合に実現されてもよい。たとえば、プロセス４００は、エンタープライズデータがクラウドコンピュータシステム（たとえばクラウドコンピュータシステム１２０）からネットワークとの無線通信接続を介して受信される際に実行されてもよい。なお、プロセス４００は、ネットワークとの無線通信接続を介する複数の通信で受信されるエンタープライズデータに対して同時に実行可能である。いくつかの局面においては、ブロック４１５〜４４５は、モバイルコンピューティングデバイスのキャッシュ上に記憶されたエンタープライズデータを更新するために実現されてもよい。いくつかの局面においては、アイテムがネットワークとの無線通信接続の現在の通信状態に基づいて更新されるべきものと識別された場合、ブロック４３０〜４４５が実現され得る。さらに、ブロック４４０および４４５は、アイテムについての更新済みエンタープライズデータが受信されたときにモバイルコンピューティングデバイス上のキャッシュを更新するように実現され得る。
【０１１４】
図５は、本発明のいくつかの局面に従った、モバイルコンピューティングデバイスとエンタープライズコンピューティングシステムとの間でエンタープライズデータを同期させるプロセス５００を示すフローチャートである。具体的には、プロセス５００により、クラウドコンピュータシステム（たとえばクラウドコンピュータシステム１２０）が、エンタープライズコンピューティングシステムとモバイルコンピューティングデバイスとの間でエンタープライズデータを同期させることが可能となる。いくつかの局面においては、クラウドコンピュータシステム（たとえばクラウドコンピュータシステム１２０）がプロセス５００を実現してもよい。
【０１１５】
ブロック５０５から始めて、プロセス５００は、通信プロトコルを用いて、ネットワーク通信接続を介してエンタープライズコンピューティングシステムからエンタープライズデータを受信するステップを含み得る。たとえば、クラウドコンピュータシステム１２０は、通信プロトコル（たとえば、ＲＥＳＴ通信プロトコル）を用いてエンタープライズコンピューティングシステム１３４からエンタープライズデータを受信してもよい。エンタープライズデータは、エンタープライズコンピューティングシステムのためのフォーマット（たとえばＲＥＳＴデータフォーマット）で構造化されてもよい。クラウドコンピュータシステムおよびエンタープライズコンピューティングシステムは異なる地理的位置に位置し得る。
【０１１６】
ブロック５１０において、プロセス５００は、エンタープライズデータが複数のアイテムと当該複数のアイテムに関連付けられたポリシー情報とを含むと判断するステップを含み得る。たとえば、クラウドコンピュータシステム１２０は、エンタープライズデータを解析して、エンタープライズデータ内のアイテムを識別してもよい。いくつかの局面においては、エンタープライズデータは、各々の識別されたアイテムについてのポリシー情報を含み得る。
【０１１７】
ブロック５１５において、プロセス５００は、エンタープライズデータが受信された１つのフォーマットで構造化されたエンタープライズデータをさまざまなフォーマットに変換するステップを含み得る。変換されたフォーマットのエンタープライズデータは、複数のアイテムのうち各々のアイテムに対応するエンタープライズデータを識別するようにモバイルコンピューティングデバイスによって解析可能であり得る。変換されたフォーマットのエンタープライズデータは、エンタープライズデータにおいて識別された各々のアイテムに対応するポリシー情報を識別するように解析可能であり得る。たとえば、さまざまなフォーマットは、エンタープライズコンピューティングシステムとの通信用に用いられた通信プロトコルなどのさまざまな通信プロトコルを認識することなく、モバイルコンピューティングデバイスによって容易に解析することができるＪＳＯＮフォーマットであってもよい。
【０１１８】
ブロック５２０において、プロセス５００は、変換済みエンタープライズデータを変換されたフォーマットで、無線ネットワークを介して複数のモバイルコンピューティングデバイスに送信するステップを含み得る。変換されたエンタープライズデータは、変換されたフォーマットをサポートする通信プロトコルを用いて送信されてもよい。
【０１１９】
プロセス５００が例示的であること、ならびに変形および修正が可能であることが理解される。連続的に記載されるステップは並列に実行されてもよく、ステップの順序は異なっていてもよく、ステップは修正され、組合わされ、追加されるかまたは省略されてもよい。いくつかの局面では、プロセス５００は、エンタープライズデータがエンタープライズコンピューティングシステムから受信される場合に実現されてもよい。
【０１２０】
図６は、本発明のさまざまな局面が実現され得るモバイルコンピューティングデバイスを示す機能ブロック図である。図７は、本発明のさまざまな局面が実現され得るクラウドコンピュータシステムを示す機能ブロック図である。本発明の原理を実行するために、モバイルコンピューティングデバイスおよびクラウドコンピュータシステムの機能的ブロックは、ハードウェア、ソフトウェアまたはハードウェアとソフトウェアとの組合せによって実現されてもよい。当業者であれば、図６および図７に記載される機能的ブロックが、上述のとおり本発明の原理を実現するためにサブブロックに組合せされるかまたは分割され得ることを理解する。したがって、この明細書中の記載は、この明細書中に記載される機能的ブロックの如何なる実現可能な組合せまたは分離またはさらなる定義をもサポートし得る。
【０１２１】
図６を参照すると、エンタープライズデータをエンタープライズコンピューティングシステム（図示せず）と同期させるためのモバイルコンピューティングデバイス６００が提供され得る。モバイルコンピューティングデバイス６００は、第１の受信ユニット６１０、記憶ユニット６２０、第１の判断ユニット６３０、第１の識別ユニット６４０、第２の判断ユニット６５０、第２の識別ユニット６６０、送信ユニット６７０、第２の受信ユニット６８０および更新ユニット６９０を含み得る。
【０１２２】
第１の受信ユニット６１０は、モバイルコンピューティングデバイス上で実行されるように構成されたアプリケーションについてのエンタープライズデータを、ネットワークとの無線通信接続を介して受信し得る。第２のフォーマットで構造化された元のエンタープライズデータから変換されたエンタープライズデータが第１のフォーマットで構造化されてもよい。記憶ユニット６２０は、モバイルコンピューティングデバイス６００上のキャッシュに対してエンタープライズデータを記憶してもよい。第１の判断ユニット６３０は、無線通信接続の現在の通信状態を判断し得る。第１の識別ユニット６４０は、第１のフォーマットに基づいてエンタープライズデータ内の複数のアイテムの存在を識別し得る。第２の判断ユニット６５０は、エンタープライズデータについてのポリシー情報を判断し得る。ポリシー情報は、複数のアイテムのうち各々のアイテムを更新するための基準を示してもよく、当該基準は通信接続の通信状態に少なくとも部分的に基づいている。第２の識別ユニット６６０は、ポリシー情報を用いて、エンタープライズデータ内の複数のアイテムのうち現在の通信状態に基づいて更新すべきアイテムを識別し得る。送信ユニット６７０は、識別されたアイテムに対応する更新済みエンタープライズデータについての要求を、無線通信接続を介して送信し得る。第２の受信ユニット６８０は、識別されたアイテムについての更新済みエンタープライズデータを受信し得る。更新ユニット６９０は、識別されたアイテムについての更新済みエンタープライズデータでキャッシュを更新し得る。一局面においては、受信されたエンタープライズデータは、ＪａｖａＳｃｒｉｐｔオブジェクト表記フォーマットで構造化される。一局面においては、エンタープライズデータはエンタープライズサーバからクラウドコンピュータシステムを介して受信され、エンタープライズデータは、受信されたときのフォーマットで構造化され、当該フォーマットは、ＲＥＳＴフォーマットで構造化されたエンタープライズデータの変換に基づいている。一局面においては、エンタープライズデータにおけるアイテムは、統一的資源識別子を含み、統一的資源識別子は、アイテムについて情報の位置を示す。一局面においては、エンタープライズデータは、アイテムの第１の集合およびアイテムの第２の集合を含み、アイテムの第１の集合およびアイテムの第２の集合は、第１のアイテムを含む。一局面においては、エンタープライズデータは、エンタープライズデータがアイテム、アイテムの集合またはブロブを含むかどうか示す情報を含む。一局面においては、現在の通信状態は、モバイルコンピューティングデバイス６００とネットワークとの間における無線通信接続のデータ転送速度に基づいている。一局面においては、要求は、識別されたアイテムに関連付けられたバージョン情報を示し、更新済みエンタープライズデータはバージョン情報に基づいて判断される。一局面においては、エンタープライズデータはアイテムを含む。ポリシーは、キャッシュにアイテムを記憶するための期間を示す。当該期間はアイテムに含まれたコンテンツに基づいている。一局面においては、キャッシュに記憶されたエンタープライズデータはアイテムを含み、ポリシーは、アイテムの各々を更新するための期間を示す。
【０１２３】
図７を参照すると、クラウドコンピュータシステム７００は、モバイルコンピューティングデバイスとエンタープライズコンピューティングシステムとの間でエンタープライズデータを同期させるために提供され得る。クラウドコンピュータシステム７００は、受信ユニット７１０、第１の判断ユニット７２０、変換ユニット７３０および送信ユニット７４０を含み得る。
【０１２４】
受信ユニット７１０は、第１の通信プロトコルを用いて、ネットワーク通信接続を介してエンタープライズコンピューティングシステム（図示せず）からエンタープライズデータを受信し得る。エンタープライズデータは、エンタープライズコンピューティングシステムのための第１のフォーマットで構造化されてもよい。クラウドコンピュータシステム７００およびエンタープライズコンピューティングシステムは異なる地理的位置に位置し得る。第１の判断ユニット７２０は、エンタープライズデータが複数のアイテムと当該複数のアイテムに関連付けられたポリシー情報とを含むと判断し得る。変換ユニット７３０は、第１のフォーマットで構造化されたエンタープライズデータを第２のフォーマットに変換し得る。第２のフォーマットは、複数のアイテムのうち各々のアイテムに対応するエンタープライズデータを識別し、かつ各々のアイテムに対応するポリシー情報を識別するようにモバイルコンピューティングデバイスによって解析可能である。送信ユニット７４０は、第２の通信プロトコルを用いて、第２のフォーマットで構造化された変換済みエンタープライズデータを、無線ネットワークを介して複数のモバイルコンピューティングデバイスに送信し得る。一局面においては、第１の通信プロトコルはＲＥＳＴプロトコルであり、第２の通信プロトコルは第１の通信プロトコルとは異なっている。一局面においては、第１のフォーマットで構造化されたエンタープライズデータは、レプレゼンテーショナル・ステート・トランスファー（ＲＥＳＴ）フォーマットである。一局面においては、クラウドコンピュータシステム７００はさらに記憶ユニット７５０を含み得る。記憶ユニット７５０は、アイテムの各々に対応するエンタープライズデータに識別子を記憶し得る。当該識別子はアイテムを識別する。一局面においては、クラウドコンピュータシステム７００はさらに識別ユニット７６０および第２の判断ユニット７７０を含み得る。識別ユニット７６０は、複数のアイテムにおけるアイテムの少なくとも２つの集合を識別し得る。第２の判断ユニット７７０は、あるアイテムがアイテムの少なくとも２つの集合に含まれると判断し得る。エンタープライズデータを第１のフォーマットから第２のフォーマットに変換するステップは、変換されるエンタープライズデータに追加情報を挿入するステップを含み得る。追加情報によってアイテムの各々の集合が識別される。
【０１２５】
図８は、局面のうち１つを実現するための分散型システム８００の簡略図を示す。分散型システム８００は、コンピュータシステム１００のすべてもしくは一部の要素、コンピュータシステム２００のすべてもしくは一部の要素、コンピュータシステム３００のすべてもしくは一部の要素、またはそれらの組合せを実現することができる。分散型システム８００は、動作、方法および／またはプロセス（たとえば図４のプロセス４００および図５のプロセス５００）を実現することができる。例示される局面では、分散型システム８００は１つ以上のクライアントコンピューティングデバイス８０２，８０４，８０６および８０８を含み、それらは、１つ以上のネットワーク８１０にわたってウェブブラウザ、所有権付きクライアント（たとえばＯｒａｃｌｅ  Ｆｏｒｍｓ）などのようなクライアントアプリケーションを実行および動作させるよう構成される。いくつかの局面では、１つ以上のクライアントコンピューティングデバイス８０２〜８０８は図１のモバイルコンピューティングデバイス１０２を含み得る。サーバ８１２はリモートクライアントコンピューティングデバイス８０２，８０４，８０６および８０８とネットワーク８１０を介して通信可能に結合されてもよい。サーバ８１２は、モバイルコンピューティングデバイス１０２またはクラウドコンピュータシステム１２０を含み得る。
【０１２６】
さまざまな局面では、サーバ８１２は、システムのコンポーネントのうちの１つ以上によって提供される１つ以上のサービスまたはソフトウェアアプリケーションを実行するように適合されてもよい。サービスまたはソフトウェアアプリケーションは非仮想および仮想環境を含み得る。仮想環境は、二次元表現であれ三次元（３Ｄ）表現であれ、ページに基づく論理環境、またはその他であれ、仮想イベント、トレードショー、シミュレータ、クラスルーム、ショッピング交換、およびエンタープライズに対して用いられるものを含み得る。いくつかの局面では、これらのサービスは、ウェブに基づくサービスもしくはクラウドサービスとして、またはＳｏｆｔｗａｒｅ  ａｓ  ａ  Ｓｅｒｖｉｃｅ（ＳａａＳ）モデルの下で、クライアントコンピューティングデバイス８０２，８０４，８０６および／または８０８のユーザに対して提供されてもよい。クライアントコンピューティングデバイス８０２，８０４，８０６および／または８０８を動作させるユーザは、次いで、１つ以上のクライアントアプリケーションを利用してサーバ８１２と対話して、これらのコンポーネントによって提供されるサービスを利用してもよい。
【０１２７】
図に示される構成では、システム８００のソフトウェアコンポーネント８１８，８２０および８２２はサーバ８１２上において実現されるものとして示される。他の局面では、システム８００のコンポーネントの１つ以上および／またはこれらのコンポーネントによって提供されるサービスは、クライアントコンピューティングデバイス８０２，８０４，８０６および／または８０８の１つ以上によって実現されてもよい。クライアントコンピューティングデバイスを動作させるユーザは、次いで、１つ以上のクライアントアプリケーションを利用して、これらのコンポーネントによって提供されるサービスを用いてもよい。これらのコンポーネントは、ハードウェア、ファームウェア、ソフトウェア、またはそれらの組合せにおいて実現されてもよい。分散型システム８００とは異なる可能性のあるさまざまな異なるシステム構成が実現可能であることが理解されるべきである。図に示される局面は、したがって、局面のシステムを実現するための分散型システムの一例であり、限定的であるようには意図されない。
【０１２８】
クライアントコンピューティングデバイス８０２，８０４，８０６および／または８０８は、携帯可能な手持ち式の装置（たとえばｉＰｈｏｎｅ（登録商標）、セルラー電話、ｉＰａｄ（登録商標）、計算タブレット、携帯情報端末（ＰＤＡ））またはウェアラブルデバイス（たとえばＧｏｏｇｌｅ  Ｇｌａｓｓ（登録商標）頭部装着型ディスプレイ）であってもよく、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ  Ｍｏｂｉｌｅ（登録商標）などのようなソフトウェア、および／もしくは、ｉＯＳ、Ｗｉｎｄｏｗｓ  Ｐｈｏｎｅ、Ａｎｄｒｏｉｄ、ＢｌａｃｋＢｅｒｒｙ  １０、Ｐａｌｍ  ＯＳなどのようなさまざまなモバイルオペレーティングシステムを動作させ、インターネット、電子メール、ショートメッセージサービス（short message service：ＳＭＳ）、Ｂｌａｃｋｂｅｒｒｙ（登録商標）または他の通信プロトコルで可能化される。クライアントコンピューティングデバイスは汎用パーソナルコンピュータであってもよく、一例として、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）、Ａｐｐｌｅ  Ｍａｃｉｎｔｏｓｈ（登録商標）および／またはＬｉｎｕｘ（登録商標）オペレーティングシステムのさまざまなバージョンを動作させるパーソナルコンピュータおよび／またはラップトップコンピュータを含む。クライアントコンピューティングデバイスは、たとえばＧｏｏｇｌｅ  Ｃｈｒｏｍｅ  ＯＳなどのようなさまざまなＧＮＵ／Ｌｉｎｕｘオペレーティングシステムを含むが、これらに限定されない、さまざまな市販のＵＮＩＸ（登録商標）またはＵＮＩＸのようなオペレーティングシステムのいずれをも動作させるワークステーションコンピュータであり得る。代替的に、または加えて、クライアントコンピューティングデバイス８０２，８０４，８０６および８０８は、ネットワーク８１０を介して通信することができる、シンクライントコンピュータ、インターネットにより可能化されるゲームシステム（たとえばＫｉｎｅｃｔ（登録商標）ジェスチャ入力装置付きの、または当該ジェスチャ入力装置なしのＭｉｃｒｏｓｏｆｔ  Ｘｂｏｘゲームコンソール）および／または個人メッセージ伝達装置などのような任意の他の電子装置であってもよい。
【０１２９】
例示的な分散型システム８００は４つのクライアントコンピューティングデバイスとともに示されているが、任意の数のクライアントコンピューティングデバイスがサポートされてもよい。センサを備えたデバイスなどの他のデバイスがサーバ８１２と対話してもよい。
【０１３０】
分散型システム８００におけるネットワーク８１０は、ＴＣＰ／ＩＰ（伝送制御プロトコル／インターネットプロトコル）、ＳＮＡ（システムネットワーク体系）、ＩＰＸ（インターネットパケット交換）、ＡｐｐｌｅＴａｌｋなどを含むがこれらに限定されない、市販のさまざまなプロトコルのうちのいずれを用いてもデータ通信をサポートすることができる、当業者が精通している任意のタイプのネットワークであってもよい。単なる例示として、ネットワーク８１０は、イーサネット（登録商標）、トークンリングなどに基づくような、ローカルエリアネットワーク（ＬＡＮ）であり得る。ネットワーク８１０はワイドエリアネットワークおよびインターネットであり得る。それは、仮想プライベートネットワーク（virtual private network：ＶＰＮ）、イントラネット、エクストラネット、公衆交換電話網（public switched telephone network：ＰＳＴＮ）、赤外線ネットワーク、無線ネットワーク（たとえば米国電気電子学会（Institute of Electrical and Electronics：ＩＥＥＥ）８０２．１１のプロトコル一式、Ｂｌｕｅｔｏｏｔｈ（登録商標）、および／もしくは任意の他の無線プロトコルのいずれかに従って動作するネットワーク）を含むがこれらに限定されない仮想ネットワーク；ならびに／またはこれらの任意の組合せおよび／もしくは他のネットワークを含み得る。
【０１３１】
サーバ８１２は、１つ以上の汎用コンピュータ、特別化されたサーバコンピュータ（たとえばＰＣ（パーソナルコンピュータ）サーバ、ＵＮＩＸ（登録商標）サーバ、ミッドレンジサーバ、メインフレームコンピュータ、ラックマウント型サーバなどを含む）、サーバファーム、サーバクラスタ、または他の任意の適切な構成および／もしくは組合せからなってもよい。サーバ８１２は、仮想オペレーティングシステムを動作させる１つ以上の仮想マシン、または仮想化を伴う他のコンピューティングアーキテクチャを含み得る。論理記憶装置からなる１つ以上の柔軟なプールを仮想化してサーバのために仮想記憶装置を維持することができる。仮想ネットワークを、サーバ８１２によって、ソフトウェア定義のネットワーク接続を用いて制御することができる。さまざまな局面において、サーバ８１２は、前述の開示に記載される１つ以上のサービスまたはソフトウェアアプリケーションを実行するように適合されてもよい。たとえば、サーバ８１２は、本発明の局面に従って上記の処理を実行するためのサーバに対応してもよい。
【０１３２】
サーバ８１２は、上に論じられたもののうちのいずれかを含むオペレーティングシステム、および市販のいずれのサーバオペレーティングシステムを動作させてもよい。サーバ８１２は、さらに、ＨＴＴＰサーバ、ＦＴＰサーバ、ＣＧＩ（コモンゲートウェイインターフェイス）サーバ、ＪＡＶＡ（登録商標）サーバ、データベースサーバなどを含むさまざまなさらなるサーバアプリケーションおよび／または中間層アプリケーションのうちいずれを動作させてもよい。例示的なデータベースサーバは、Ｏｒａｃｌｅ、Ｍｉｃｒｏｓｏｆｔ、Ｓｙｂａｓｅ、ＩＢＭ（インターナショナルビジネスマシンズ）などから市販されているものを含むが、これらに限定されない。
【０１３３】
いくつかの実現例では、サーバ８１２は、クライアントコンピューティングデバイス８０２，８０４，８０６および８０８のユーザから受信されるデータフィードおよび／またはイベント更新を解析および整理統合するために１つ以上のアプリケーションを含み得る。一例として、データフィードおよび／またはイベント更新は、センサデータアプリケーション、金融株式相場表示板、ネットワーク性能計量ツール（たとえばネットワーク監視およびトラフィック管理アプリケーション）、クリックストリーム解析ツール、自動車交通監視などに関係する実時間イベントを含み得る、１つ以上の第三者情報源および連続的なデータストリームから受信される、Ｔｗｉｔｔｅｒ（登録商標）フィード、Ｆａｃｅｂｏｏｋ（登録商標）更新または実時間更新を含み得るが、これらに限定されない。サーバ８１２は、さらに、データフィードおよび／または実時間イベントをクライアントコンピューティングデバイス８０２，８０４，８０６および８０８の１つ以上の表示装置を介して表示するために１つ以上のアプリケーションを含み得る。
【０１３４】
分散型システム８００は、さらに、１つ以上のデータベース８１４および８１６を含んでもよい。データベース８１４および８１６はさまざまな位置にあってもよい。例として、データベース８１４および８１６の１つ以上はサーバ８１２に局在する（および／またはサーバ８１２に常駐する）非一時的な記憶媒体にあってもよい。代替的には、データベース８１４および８１６は、サーバ８１２から遠隔にあり、ネットワークに基づくかまたは専用の接続を介してサーバ８１２と通信状態にあってもよい。１組の局面では、データベース８１４および８１６は記憶域ネットワーク（ＳＡＮ）にあってもよい。同様に、サーバ８１２に帰する機能を実行するための任意の必要なファイルが、適宜、サーバ８１２上においてローカルに、および／または遠隔で記憶されてもよい。１組の局面では、データベース８１４および８１６はＯｒａｃｌｅによって提供されるデータベースのような、ＳＱＬフォーマットされたコマンドに応答してデータを記憶、更新および検索取得するように適合されるリレーショナルデータベースを含んでもよい。１つ以上のデータベース８１４および８１６はデータベース１１４を含み得るかまたはデータベース１１４として実現可能である。
【０１３５】
図９は、本発明の局面に従って、局面のシステムの１つ以上のコンポーネントによって提供されるサービスがクラウドサービスとして提供され得るシステム環境９００の１つ以上のコンポーネントの簡略ブロック図である。システム環境９００は、コンピュータシステム１００のすべてもしくは一部の要素、コンピュータシステム２００のすべてもしくは一部の要素、コンピュータシステム３００のすべてもしくは一部の要素、またはそれらの組合せを含むかまたは実現することができる。システム環境９００は動作、方法、および／またはプロセス（たとえば図４のプロセス４００または図５のプロセス５００）を実現することができる。例示される局面では、システム環境９００は、クラウドサービスを提供するクラウドインフラストラクチャシステム９０２と対話するようユーザによって使用され得る１つ以上のクライアントコンピューティングデバイス９０４，９０６および９０８を含む。クライアントコンピューティングデバイスは、クラウドインフラストラクチャシステム９０２と対話して、クラウドインフラストラクチャシステム９０２によって提供されるサービスを用いるよう、クライアントコンピューティングデバイスのユーザによって使用され得るウェブブラウザ、所有権付きクライアントアプリケーション（たとえばＯｒａｃｌｅ  Ｆｏｒｍｓ）または何らかの他のアプリケーションなどのようなクライアントアプリケーションを動作させるよう構成されてもよい。
【０１３６】
図に示されるクラウドインフラストラクチャシステム９０２は図示されるもの以外のコンポーネントを有し得ることが理解されるべきである。さらに、図に示される局面は、本発明の局面を組み込み得るクラウドインフラストラクチャシステムの一例に過ぎない。たとえば、クラウドインフラストラクチャシステム９０２はクラウドコンピュータシステム１２０を含むかまたは実現することができる。いくつかの他の局面では、クラウドインフラストラクチャシステム９０２は、図に示されるよりも多いかもしくは少ないコンポーネントを有してもよく、２つ以上のコンポーネントを組合せてもよく、またはコンポーネントの異なる構成もしくは配置を有してもよい。
【０１３７】
クライアントコンピューティングデバイス９０４，９０６および９０８は、クライアントコンピューティングデバイス８０２，８０４，８０６および８０８に対して上記されたものと同様のデバイスであってもよい。
【０１３８】
例示的なシステム環境９００は３つのクライアントコンピューティングデバイスとともに示されているが、任意の数のクライアントコンピューティングデバイスがサポートされてもよい。センサを備えたデバイスなどのような他のデバイスがクラウドインフラストラクチャシステム９０２と対話してもよい。
【０１３９】
ネットワーク９１０はクライアント９０４，９０６および９０８とクラウドインフラストラクチャシステム９０２との間におけるデータの通信および交換を容易にしてもよい。各ネットワークは、ネットワーク８１０に対して上記されたものを含む、さまざまな市販のプロトコルのいずれかを用いてデータ通信をサポートすることができる、当業者が精通している如何なるタイプのネットワークであってもよい。
【０１４０】
クラウドインフラストラクチャシステム９０２は、サーバ８１２に対して上記されたものを含み得る１つ以上のコンピュータおよび／またはサーバを備えてもよい。
【０１４１】
特定の局面では、クラウドインフラストラクチャシステムによって提供されるサービスは、オンラインデータストレージおよびバックアップソリューション、ウェブに基づく電子メールサービス、運営管理されるオフィススイートおよびドキュメントコラボレーションサービス、データベース処理、管理される技術サポートサービスなどのような、オンデマンドでクラウドインフラストラクチャシステムのユーザに利用可能にされるサービスのホストを含んでもよい。クラウドインフラストラクチャシステムによって提供されるサービスは動的にスケーリングしてそのユーザのニーズを満たすことができる。クラウドインフラストラクチャシステムによって提供されるあるサービスのある具体的なインスタンス化は本明細書では「サービスインスタンス」と称される。一般的に、クラウドサービスプロバイダのシステムからインターネットなどのような通信ネットワークを介してユーザに利用可能にされる如何なるサービスも「クラウドサービス」と称される。典型的には、パブリックなクラウド環境においては、クラウドサービスプロバイダのシステムを形成するサーバおよびシステムは顧客自身のオンプレミスのサーバおよびシステムとは異なる。たとえば、クラウドサービスプロバイダのシステムはアプリケーションを運営管理してもよく、ユーザは、インターネットなどのような通信ネットワークを介して、オンデマンドで、アプリケーションをオーダーし使用してもよい。
【０１４２】
いくつかの例では、コンピュータネットワーククラウドインフラストラクチャにおけるサービスは、ストレージ、運営管理されるデータベース、運営管理されるウェブサーバ、ソフトウェアアプリケーション、またはクラウドベンダーによってユーザに提供されるかもしくは他の態様で当該技術分野において公知であるような他のサービスに対する保護されたコンピュータネットワークアクセスを含んでもよい。たとえば、サービスは、クラウド上の遠隔ストレージに対する、インターネットを介する、パスワード保護されたアクセスを含み得る。別の例として、サービスは、ネットワーク接続された開発者による個人的な使用のために、ウェブサービスに基づく運営管理されたリレーショナルデータベースおよびスクリプト言語ミドルウェアエンジンを含み得る。別の例として、サービスは、クラウドベンダーのウェブサイトにおいて運営管理される電子メールソフトウェアアプリケーションに対するアクセスを含み得る。
【０１４３】
特定の局面では、クラウドインフラストラクチャシステム９０２は、セルフサービスの、サブスクリプションに基づく、順応性を持ってスケーラブルで、信頼性があり、非常に利用可能性があり、およびセキュリティ上安全な態様で顧客に対して配送されるアプリケーションの組、ミドルウェア、データベースサービス提供を含んでもよい。そのようなクラウドインフラストラクチャシステムの一例は本譲受人によって提供されるＯｒａｃｌｅ  Ｐｕｂｌｉｃ  Ｃｌｏｕｄである。
【０１４４】
時としてビッグデータとも称される大量のデータは、インフラストラクチャシステムによって、多数のレベルにおいて、および異なるスケールで運営管理および／または操作され得る。そのようなデータは、非常に大きくかつ複雑であるため典型的なデータベース管理ツールまたは従来のデータ処理アプリケーションを用いて処理することが困難となり得るデータセットを含む可能性もある。たとえば、テラバイトのデータはパーソナルコンピュータまたはそれらのラックベースの対応物を用いて記憶、検索取得および処理することは難しいかもしれない。そのようなサイズのデータは、最も流通しているリレーショナルデータベース管理システムおよびデスクトップ統計および視覚化パッケージを用いて扱うことは困難であり得る。それらは、データを許容可能な経過時間内に捕捉しキュレーションし管理し処理するよう、一般的に用いられるソフトウェアツールの構造を超えて、何千ものサーバコンピュータを動作させる巨大に並列な処理ソフトウェアを必要とし得る。
【０１４５】
極端に大きなデータセットは、解析者および研究者によって記憶および操作されることにより、大量のデータを視覚化し、傾向を検出し、および／または他の場合にはデータと対話することができる。並列にリンクされた何十、何百または何千ものプロセッサが、そのようなデータに作用して、それを呈示するか、またはそのデータもしくはそれが表現するものに対する外部の力をシミュレーションすることができる。これらのデータセットは、エンタープライズデータ、データベースにおけるかまたは他の態様で構造化されたモデルに従って編成されるような構造化されたデータ、および／または構造化されないデータ（たとえば電子メール、画像、データブロブ（バイナリラージオブジェクト）、ウェブページ、複雑なイベント処理）を伴い得る。より多い（またはより少ない）計算リソースを目標として相対的に迅速に集中させるある局面の能力を活用することによって、クラウドインフラストラクチャシステムは、ビジネス、行政機関、研究組織、私人、同じ意見の個人もしくは組織のグループ、または他のエンティティからの要望に基づいて大きなデータセットに対してタスクを実行するよう、より適切に利用可能になり得る。
【０１４６】
さまざまな局面では、クラウドインフラストラクチャシステム９０２は、クラウドインフラストラクチャシステム９０２によって提供されるサービスに対する顧客のサブスクリプションを自動的にプロビジョニングし、管理し、およびトラッキングするように適合されてもよい。クラウドインフラストラクチャシステム９０２はクラウドサービスをさまざまな展開モデルを介して提供してもよい。たとえば、サービスは、クラウドインフラストラクチャシステム９０２が（たとえばＯｒａｃｌｅによって所有される）クラウドサービスを販売する組織によって所有され、サービスが一般大衆またはさまざまな業界エンタープライズに対して利用可能にされるパブリッククラウドモデルの下で提供されてもよい。別の例として、サービスは、クラウドインフラストラクチャシステム９０２が単一の組織に対してのみ動作され、その組織内における１つ以上のエンティティに対してサービスを提供され得るプライベートクラウドモデルの下で提供されてもよい。クラウドサービスは、さらに、クラウドインフラストラクチャシステム９０２およびクラウドインフラストラクチャシステム９０２によって提供されるサービスが関連コミュニティにおけるいくつかの組織によって共有されているコミュニティクラウドモデルの下で提供されてもよい。クラウドサービスは、さらに、２つ以上の異なるモデルの組合せであるハイブリッドクラウドモデルの下で提供されてもよい。
【０１４７】
いくつかの局面では、クラウドインフラストラクチャシステム９０２によって提供されるサービスは、Ｓｏｆｔｗａｒｅ  ａｓ  ａ  Ｓｅｒｖｉｃｅ（ＳａａＳ）カテゴリ、Ｐｌａｔｆｏｒｍ  ａｓ  ａ  Ｓｅｒｖｉｃｅ（ＰａａＳ）カテゴリ、Ｉｎｆｒａｓｔｒｕｃｔｕｒｅ  ａｓ  ａ  Ｓｅｒｖｉｃｅ（ＩａａＳ）カテゴリ、またはハイブリッドサービスを含む他のサービスのカテゴリの下で提供される、１つ以上のサービスを含んでもよい。顧客は、サブスクリプションオーダーを介して、クラウドインフラストラクチャシステム９０２によって提供される１つ以上のサービスをオーダーしてもよい。クラウドインフラストラクチャシステム９０２は、次いで、処理を実行して、顧客のサブスクリプションオーダーにおけるサービスを提供する。
【０１４８】
いくつかの局面では、クラウドインフラストラクチャシステム９０２によって提供されるサービスは、アプリケーションサービス、プラットフォームサービスおよびインフラストラクチャサービスを含み得るがこれらに限定されない。いくつかの例では、アプリケーションサービスはクラウドインフラストラクチャシステムによってＳａａＳプラットフォームを介して提供されてもよい。ＳａａＳプラットフォームは、ＳａａＳカテゴリに入るクラウドサービスを提供するよう構成されてもよい。たとえば、ＳａａＳプラットフォームは、一式のオンデマンドアプリケーションを統合された開発および展開プラットフォーム上で構築し配送する能力を提供してもよい。ＳａａＳプラットフォームは、ＳａａＳサービスを提供するための基礎をなすソフトウェアおよびインフラストラクチャを管理および制御し得る。ＳａａＳプラットフォームによって提供されるサービスを利用することによって、顧客はクラウドインフラストラクチャシステムにおいて実行されるアプリケーションを利用することができる。顧客は、別のライセンスおよびサポートを購入する必要なくアプリケーションサービスを獲得することができる。さまざまな異なるＳａａＳサービスが提供されてもよい。例としては、大規模な組織に対する売上実績管理、エンタープライズ統合、および事業柔軟性に対するソリューションを提供するサービスを含むがこれらに限定されない。
【０１４９】
いくつかの局面では、プラットフォームサービスはクラウドインフラストラクチャシステムによってＰａａＳプラットフォームを介して提供されてもよい。ＰａａＳプラットフォームはＰａａＳカテゴリの範疇にあるクラウドサービスを提供するよう構成されてもよい。プラットフォームサービスの例は、（Ｏｒａｃｌｅなどの）組織が既存のアプリケーションを共有される共通のアーキテクチャにおいて整理統合することができるサービス、およびプラットフォームによって提供される共有されるサービスを活用する新たなアプリケーションを構築する能力を含み得るが、これらに限定されない。ＰａａＳプラットフォームはＰａａＳサービスを提供するための基礎をなすソフトウェアおよびインフラストラクチャを管理および制御してもよい。顧客は、クラウドインフラストラクチャシステムによって提供されるＰａａＳサービスを、別のライセンスおよびサポートを購入する必要なく獲得することができる。プラットフォームサービスの例は、Ｏｒａｃｌｅ  Ｊａｖａ  Ｃｌｏｕｄ  Ｓｅｒｖｉｃｅ（ＪＣＳ）、Ｏｒａｃｌｅ  Ｄａｔａｂａｓｅ  Ｃｌｏｕｄ  Ｓｅｒｖｉｃｅ（ＤＢＣＳ）などを含むが、これらに限定されない。
【０１５０】
ＰａａＳプラットフォームによって提供されるサービスを利用することによって、顧客は、クラウドインフラストラクチャシステムによってサポートされるプログラミング言語およびツールを使用することができ、展開されたサービスを制御することができる。いくつかの局面では、クラウドインフラストラクチャシステムによって提供されるプラットフォームサービスは、データベースクラウドサービス、ミドルウェアクラウドサービス（たとえばＯｒａｃｌｅ  Ｆｕｓｉｏｎ  Ｍｉｄｄｌｅｗａｒｅサービス）、およびＪａｖａクラウドサービスを含んでもよい。一局面では、データベースクラウドサービスは、組織がデータベースリソースをプールし、顧客にＤａｔａｂａｓｅ  ａｓ  ａ  Ｓｅｒｖｉｃｅをデータベースクラウドの形式で提供することを可能にする、共有型のサービス展開モデルをサポートしてもよい。ミドルウェアクラウドサービスは、顧客のためのプラットフォームを提供してさまざまなビジネスアプリケーションを開発および展開してもよく、Ｊａｖａクラウドサービスは顧客のためのプラットフォームを提供してＪａｖａアプリケーションをクラウドインフラストラクチャシステムにおいて展開してもよい。
【０１５１】
さまざまな異なるインフラストラクチャサービスがＩａａＳプラットフォームによってクラウドインフラストラクチャシステムにおいて提供されてもよい。インフラストラクチャサービスは、ＳａａＳプラットフォームおよびＰａａＳプラットフォームによって提供されるサービスを利用する顧客に対するストレージ、ネットワーク、他の基礎的計算リソースなどのような基礎をなす計算リソースの管理および制御を容易にする。
【０１５２】
特定の局面では、クラウドインフラストラクチャシステム９０２は、さらに、クラウドインフラストラクチャシステムの顧客に対してさまざまなサービスを提供するよう用いられるリソースを提供するためのインフラストラクチャリソース９３０を含んでもよい。一局面では、インフラストラクチャリソース９３０は、ＰａａＳプラットフォームおよびＳａａＳプラットフォームによって提供されるサービスを実行するよう、サーバ、ストレージおよびネットワーク接続リソースなどのような、ハードウェアの予め統合され最適化された組合せを含んでもよい。
【０１５３】
いくつかの局面では、クラウドインフラストラクチャシステム９０２におけるリソースは、複数のユーザによって共有され、要望に応じて動的に再割当てされてもよい。加えて、リソースはユーザに対して異なる時間ゾーンで割当てられてもよい。たとえば、クラウドインフラストラクチャシステム９３０は、第１の時間ゾーンにおける第１の組のユーザがクラウドインフラストラクチャシステムのリソースをある特定化された時間の間利用することを可能にし、次いで、異なる時間ゾーンに位置する別の組のユーザに対する同じリソースの再割当てを可能にし、それによって、リソースの利用を最大限にしてもよい。
【０１５４】
特定の局面では、クラウドインフラストラクチャシステム９０２のさまざまなコンポーネントまたはモジュールによって、かつクラウドインフラストラクチャシステム９０２によって提供されるサービスによって共有される、いくつかの内部共有サービス９３２が提供されてもよい。これらの内部共有サービスは、セキュリティおよびアイデンティティサービス、統合サービス、エンタープライズリポジトリサービス、エンタープライズマネージャサービス、ウイルススキャンおよびホワイトリストサービス、高可用性、バックアップおよびリカバリサービス、クラウドサポートを可能にするためのサービス、電子メールサービス、通知サービス、ファイル転送サービスなどを含み得るが、これらに限定されない。
【０１５５】
特定の局面では、クラウドインフラストラクチャシステム９０２は、クラウドインフラストラクチャシステムにおいてクラウドサービス（たとえばＳａａＳ、ＰａａＳ、およびＩａａＳサービス）の包括的な管理を提供してもよい。一局面では、クラウド管理機能は、クラウドインフラストラクチャシステム９０２によって受信される顧客のサブスクリプションをプロビジョニングし、管理し、およびトラッキングする能力などを含んでもよい。
【０１５６】
一局面では、図に示されるように、クラウド管理機能は、オーダー管理モジュール９２０、オーダーオーケストレーションモジュール９２２、オーダープロビジョニングモジュール９２４、オーダー管理および監視モジュール９２６、ならびにアイデンティティ管理モジュール９２８などのような１つ以上のモジュールによって提供されてもよい。これらのモジュールは、１つ以上のコンピュータおよび／またはサーバを含むかもしくはそれらを用いて提供されてもよく、それらは汎用コンピュータ、特殊化されたサーバコンピュータ、サーバファーム、サーバクラスタ、または他の任意の適切な構成および／もしくは組合せであってもよい。
【０１５７】
例示的な動作９３４においては、クライアントデバイス９０４，９０６または９０８などのようなクライアントデバイスを用いる顧客は、クラウドインフラストラクチャシステム９０２によって提供される１つ以上のサービスを要求すること、およびクラウドインフラストラクチャシステム９０２によって提供される１つ以上のサービスに対するサブスクリプションについてのオーダーを行なうことによって、クラウドインフラストラクチャシステム９０２と対話してもよい。特定の局面では、顧客は、クラウドユーザインターフェイス（ＵＩ）、クラウドＵＩ９１２、クラウドＵＩ９１４および／またはクラウドＵＩ９１６にアクセスし、サブスクリプションオーダーをこれらのＵＩを介して行ってもよい。顧客がオーダーを行なうことに応答してクラウドインフラストラクチャシステム９０２によって受取られるオーダー情報は、顧客を識別する情報と、クラウドインフラストラクチャシステム９０２によって提供される、その顧客が利用することが意図されている１つ以上のサービスとを含んでもよい。
【０１５８】
オーダーが顧客によってなされた後、オーダー情報がクラウドＵＩ９１２、９１４および／または９１６を介して受取られる。
【０１５９】
動作９３６において、オーダーはオーダーデータベース９１８に保存される。オーダーデータベース９１８は、クラウドインフラストラクチャシステム９０２によって動作させられるいくつかのデータベースの１つであってもよく、他のシステム要素と関連付けて動作させてもよい。
【０１６０】
動作９３８で、オーダー情報はオーダー管理モジュール９２０に転送される。いくつかの例では、オーダー管理モジュール９２０は、オーダーを検証すること、および検証でそのオーダーを予約することなど、オーダーに関係付けられる請求および課金機能を実行するよう構成されてもよい。
【０１６１】
動作９４０で、オーダーに関する情報がオーダーオーケストレーションモジュール９２２に通信される。オーダーオーケストレーションモジュール９２２は、オーダー情報を利用して、顧客によってなされたオーダーに対してサービスおよびリソースのプロビジョニングをオーケストレーションしてもよい。いくつかの例では、オーダーオーケストレーションモジュール９２２は、リソースのプロビジョニングをオーケストレーションして、利用されるサービスを、オーダープロビジョニングモジュール９２４のサービスを用いてサポートしてもよい。
【０１６２】
特定の局面では、オーダーオーケストレーションモジュール９２２は、各オーダーに関連付けられるビジネスプロセスの管理を可能にし、ビジネスロジックを適用して、オーダーがプロビジョニングに進めるべきかどうかを判断する。動作９４２で、新たなサブスクリプションに対するオーダーが受取られると、オーダーオーケストレーションモジュール９２２は、オーダープロビジョニングモジュール９２４に対して、リソースを割当て、サブスクリプションオーダーを満たすのに必要とされるリソースを構成するよう、要求を送る。オーダープロビジョニングモジュール９２４は、顧客によってオーダーされたサービスに対するリソースの割当てを可能にする。オーダープロビジョニングモジュール９２４は、クラウドインフラストラクチャシステム９００によって提供されるクラウドサービスと、要求されたサービスを提供するためのリソースをプロビジョニングするのに用いられる物理的インプリメンテーション層との間におけるある抽象レベルを提供する。オーダーオーケストレーションモジュール９２２は、したがって、サービスおよびリソースがオンザフライで実際にプロビジョニングされるか、または予めプロビジョニングされ、要求でのみ割当て／分配されるかどうかなど、インプリメンテーション詳細から隔離されてもよい。
【０１６３】
動作９４４で、サービスおよびリソースがプロビジョニングされると、提供されるサービスの通知が、クラウドインフラストラクチャシステム９０２のオーダープロビジョニングモジュール９２４によってクライアントデバイス９０４，９０６および／または９０８における顧客に送信されてもよい。
【０１６４】
動作９４６で、顧客のサブスクリプションオーダーはオーダー管理および監視モジュール９２６によって管理およびトラッキングされてもよい。いくつかの例では、オーダー管理および監視モジュール９２６は、用いられるストレージの量、転送されるデータ量、ユーザの数、システムアップ時間およびシステムダウン時間の量などのような、サブスクリプションオーダーにおけるサービスに対する使用統計を収集するよう構成されてもよい。
【０１６５】
特定の局面では、クラウドインフラストラクチャシステム９００はアイデンティティ管理モジュール９２８を含んでもよい。アイデンティティ管理モジュール９２８は、クラウドインフラストラクチャシステム９００におけるアクセス管理および承認サービスなどのようなアイデンティティサービスを提供するよう構成されてもよい。いくつかの局面では、アイデンティティ管理モジュール９２８は、クラウドインフラストラクチャシステム９０２によって提供されるサービスを利用することを望む顧客についての情報を制御してもよい。そのような情報は、そのような顧客のアイデンティティを認証する情報、およびそれらの顧客がさまざまなシステムリソース（たとえばファイル、ディレクトリ、アプリケーション、通信ポート、メモリセグメントなど）に対してどのアクションを実行するよう承認されるかを記述する情報を含み得る。アイデンティティ管理モジュール９２８は、さらに、各顧客についての記述的情報について、および、如何にかつ誰によってその記述的情報がアクセスおよび修正され得るかについての管理を含んでもよい。
【０１６６】
図１０は、本発明のさまざまな局面が実現され得る例示的なコンピュータシステム１０００を示す。システム１０００を用いることで、上に記載されるコンピュータシステムのいずれもが実現され得る。たとえば、コンピュータシステム１００のすべてもしくは一部の要素、コンピュータシステム２００のすべてもしくは一部の要素、コンピュータシステム３００のすべてもしくは一部の要素、またはそれらの組合せがシステム１０００において含まれるかまたは実現され得る。システム１０００は、動作、方法および／またはプロセス（たとえば図４のプロセス４００または図５のプロセス５００）を実現することができる。図に示されるように、コンピュータシステム１０００は、バスサブシステム１００２を介していくつかの周辺サブシステムと通信する処理ユニット１００４を含む。これらの周辺サブシステムは、処理加速ユニット１００６、Ｉ／Ｏサブシステム１００８、ストレージサブシステム１０１８および通信サブシステム１０２４を含んでもよい。ストレージサブシステム１０１８は有形のコンピュータ読取可能記憶媒体１０２２およびシステムメモリ１０１０を含む。
【０１６７】
バスサブシステム１００２は、コンピュータシステム１０００のさまざまなコンポーネントおよびサブシステムに意図されるように互いと通信させるための機構を提供する。バスサブシステム１００２は概略的に単一のバスとして図示されているが、バスサブシステムの代替的局面は複数のバスを利用してもよい。バスサブシステム１００２は、さまざまなバスアーキテクチャのうちいずれかを用いるメモリバスまたはメモリコントローラ、周辺バスおよびローカルバスを含むいくつかのタイプのバス構造のうちの如何なるものであってもよい。たとえば、このようなアーキテクチャは、産業標準アーキテクチャ（ＩＳＡ）バス、マイクロチャネルアーキテクチャ（ＭＣＡ）バス、エンハンストＩＳＡ（ＥＩＳＡ）バス、ビデオエレクトロニクス標準組織（ＶＥＳＡ）ローカルバス、および周辺コンポーネントインターコネクト（ＰＣＩ）バス、を含んでもよく、ＩＥＥＥ  Ｐ１３８６．１規格に従って製造されるメザニン・バスとして実現され得る。
【０１６８】
処理ユニット１００４は、１つ以上の統合された回路（たとえば従来のマイクロプロセッサまたはマイクロコントローラ）として実現可能であり、コンピュータシステム１０００の動作を制御する。１つ以上のプロセッサが処理ユニット１００４に含まれてもよい。これらのプロセッサは単一コアまたはマルチコアプロセッサを含んでもよい。特定の局面では、処理ユニット１００４は、１つ以上の独立した処理ユニット１０３２および／または１０３４として、単一または複数コアのプロセッサが各処理ユニットに含まれた状態で実現されてもよい。他の局面では、処理ユニット１００４は、さらに、２つのデュアルコアプロセッサを単一のチップに統合することによって形成されるクワッドコア処理ユニットとして実現されてもよい。
【０１６９】
さまざまな局面では、処理ユニット１００４はさまざまなプログラムをプログラムコードに応答して実行することができ、複数の同時に実行されるプログラムまたはプロセスを維持することができる。任意の所与の時間において、実行されるべきプログラムコードの一部またはすべてがプロセッサ１００４および／またはストレージサブシステム１０１８に常駐可能である。好適なプログラミングを介して、プロセッサ１００４は上記のさまざまな機能を提供することができる。コンピュータシステム１０００はさらに処理加速ユニット１００６を含んでもよく、それはデジタル信号プロセッサ（ＤＳＰ）、特殊目的プロセッサなどを含んでもよい。
【０１７０】
Ｉ／Ｏサブシステム１００８はユーザインターフェイス入力装置およびユーザインターフェイス出力装置を含んでもよい。ユーザインターフェイス入力装置は、キーボード、マウスまたはトラックボールなどのポインティングデバイス、ディスプレイに組み込まれるタッチパッドまたはタッチスクリーン、スクロールホイール、クリックホイール、ダイアル、ボタン、スイッチ、キーパッド、音声コマンド認識システムを伴う音声入力装置、マイクロフォン、および他のタイプの入力装置を含んでもよい。ユーザインターフェイス入力装置は、たとえば、ユーザがジェスチャおよび話し言葉コマンドを用いて自然なユーザインターフェイスを介してＭｉｃｒｏｓｏｆｔ  Ｘｂｏｘ（登録商標）３６０ゲームコントローラなどのような入力装置を制御しそれと対話することを可能にするＭｉｃｒｏｓｏｆｔ  Ｋｉｎｅｃｔ（登録商標）モーションセンサなどのようなモーション感知および／またはジェスチャ認識装置を含んでもよい。ユーザインターフェイス入力装置は、さらに、ユーザから目の活動（たとえば写真を撮る、および／またはメニュー選択を行なっている間の「瞬き」）を検出し、目の動きを入力装置（たとえばＧｏｏｇｌｅ  Ｇｌａｓｓ（登録商標））への入力として変換するＧｏｏｇｌｅ  Ｇｌａｓｓ（登録商標）瞬き検出器などのような目のジェスチャ認識装置を含んでもよい。さらに、ユーザインターフェイス入力装置は、ユーザが音声コマンドを介して音声認識システム（たとえばＳｉｒｉ（登録商標）ナビゲータ）と対話することを可能にする音声認識感知装置を含んでもよい。
【０１７１】
ユーザインターフェイス入力装置は、さらに、三次元（３Ｄ）マウス、ジョイスティックまたはポインティングスティック、ゲームパッドおよびグラフィックタブレット、ならびにスピーカ、デジタルカメラ、デジタルカムコーダ、ポータブルメディアプレーヤ、ウェブカム、画像スキャナ、指紋スキャナ、バーコードリーダ３Ｄスキャナ、３Ｄプリンタ、レーザレンジファインダ、および視線追跡装置などのような聴覚／視覚装置を含み得るが、これらに限定されない。加えて、ユーザインターフェイス入力装置は、たとえば、コンピュータ断層撮影、磁気共鳴撮像、ポジションエミッショントモグラフィー、医療超音波検査装置などのような医療画像化入力装置を含んでもよい。ユーザインターフェイス入力装置は、さらに、たとえば、ＭＩＤＩキーボード、デジタル音楽機器などのような音声入力装置を含んでもよい。
【０１７２】
ユーザインターフェイス出力装置は、ディスプレイサブシステム、インジケータライト、または音声出力装置のような非ビジュアルディスプレイなどを含んでもよい。ディスプレイサブシステムは、陰極線管（ＣＲＴ）、液晶ディスプレイ（ＬＣＤ）またはプラズマディスプレイを使用するようなフラットパネルデバイス、投影装置、タッチスクリーンなどであってもよい。一般に、「出力装置」という語を使用する場合、コンピュータシステム１０００からユーザまたは他のコンピュータに情報を出力するためのすべての実現可能なタイプの装置および機構を含むよう意図されている。たとえば、ユーザインターフェイス出力装置は、モニタ、プリンタ、スピーカ、ヘッドフォン、自動車ナビゲーションシステム、プロッタ、音声出力装置およびモデムなどのような、テキスト、グラフィックスおよび音声／映像情報を視覚的に伝えるさまざまな表示装置を含み得るが、これらに限定されない。
【０１７３】
コンピュータシステム１０００は、システムメモリ１０１０内に現在位置するものとして示される、ソフトウェア要素を含むストレージサブシステム１０１８を含んでもよい。システムメモリ１０１０は、処理ユニット１００４においてロード可能および実行可能であるプログラム命令、ならびにこれらのプログラムの実行中に生成されるデータを記憶してもよい。
【０１７４】
コンピュータシステム１０００の構成およびタイプに応じて、システムメモリ１０１０は揮発性であってもよく（ランダムアクセスメモリ（ＲＡＭ）など）、および／または不揮発性であってもよい（リードオンリメモリ（ＲＯＭ）、フラッシュメモリなど）。ＲＡＭは典型的には、処理ユニット１００４に即座にアクセス可能であり、および／もしくは処理ユニット１００４によって現在動作および実行されている、データならびに／またはプログラムモジュールを含む。いくつかの実現例では、システムメモリ１０１０は、スタティックランダムアクセスメモリ（ＳＲＡＭ）またはダイナミックランダムアクセスメモリ（ＤＲＡＭ）などのような複数の異なるタイプのメモリを含んでもよい。いくつかの実現例では、起動中などのように、コンピュータシステム１０００内における要素間において情報の転送を助ける基本的なルーチンを含む基本的な入力／出力システム（ＢＩＯＳ）が、典型的にはＲＯＭに記憶されてもよい。例として、限定ではなく、システムメモリ１０１０は、さらに、アプリケーションプログラム１０１２を示し、それは、クライアントアプリケーション、ウェブブラウザ、中間層アプリケーション、リレーショナルデータベース管理システム（ＲＤＢＭＳ）など、プログラムデータ１０１４およびオペレーティングシステム１０１６を含んでもよい。例として、オペレーティングシステム１０１６は、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）、Ａｐｐｌｅ  Ｍａｃｉｎｔｏｓｈ（登録商標）および／もしくはＬｉｎｕｘ（登録商標）オペレーティングシステムのさまざまなバージョン、さまざまな市販のＵＮＩＸ（登録商標）またはＵＮＩＸのようなオペレーティングシステム（さまざまなＧＮＵ／Ｌｉｎｕｘオペレーティングシステム、Ｇｏｏｇｌｅ  Ｃｈｒｏｍｅ（登録商標）ＯＳなどを含むがこれらに限定されない）、ならびに／またはｉＯＳ、Ｗｉｎｄｏｗｓ（登録商標）  Ｐｈｏｎｅ、Ａｎｄｒｏｉｄ（登録商標）  ＯＳ、ＢｌａｃｋＢｅｒｒｙ（登録商標）  １０  ＯＳ、およびＰａｌｍ（登録商標）  ＯＳなどのようなモバイルオペレーティングシステムを含んでもよい。
【０１７５】
ストレージサブシステム１０１８は、さらに、いくつかの局面の機能を提供する基本的なプログラミングおよびデータ構造を記憶するための有形のコンピュータ読取可能記憶媒体を提供し得る。プロセッサによって実行されると上記の機能を提供するソフトウェア（プログラム、コードモジュール、命令）がストレージサブシステム１０１８に記憶されてもよい。これらのソフトウェアモジュールまたは命令は処理ユニット１００４によって実行されてもよい。ストレージサブシステム１０１８は、さらに、本発明に従って用いられるデータを記憶するためのリポジトリを提供してもよい。
【０１７６】
ストレージサブシステム１０００は、さらに、コンピュータ読取可能記憶媒体１０２２にさらに接続され得るコンピュータ読取可能記憶媒体リーダ１０２０を含んでもよい。システムメモリ１０１０とともに、およびオプションとしてシステムメモリ１０１０との組合せで、コンピュータ読取可能記憶媒体１０２２は、コンピュータ読取可能情報を一時的および／またはより永続的に含み、記憶し、送信し、および検索取得するための、遠隔の、ローカルな、固定された、および／またはリムーバブルな記憶装置に記憶媒体を加えたものを包括的に表現してもよい。
【０１７７】
コードまたはコードの一部を含むコンピュータ読取可能記憶媒体１０２２は、さらに、情報の記憶および／または送信のための任意の方法または技術において実現される揮発性および不揮発性の、リムーバブルおよび非リムーバブルな媒体などであるがそれらに限定はされない、記憶媒体および通信媒体を含む、当該技術分野において公知であるかまたは用いられる任意の適切な媒体を含み得る。これは、ＲＡＭ、ＲＯＭ、電子的に消去可能なプログラマブルＲＯＭ（ＥＥＰＲＯＭ）、フラッシュメモリもしくは他のメモリ技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）、もしくは他の光記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶もしくは他の磁気記憶装置、または他の有形のコンピュータ読取可能媒体などのような、有形の、非一時的なコンピュータ読取可能記憶媒体を含み得る。特定の場合には、これは、さらに、所望の情報を送信するよう使用可能であり、コンピューティングシステム１０００によってアクセス可能である、データ信号、データ伝送または任意の他の媒体のような、非有形の一時的なコンピュータ読取可能媒体を含み得る。
【０１７８】
一例として、コンピュータ読取可能記憶媒体１０２２は、非リムーバブルの、不揮発性磁気媒体において読出または書込を行なうハードディスクドライブ、リムーバブルの不揮発性磁気ディスクにおいて読出または書込を行なう磁気ディスクドライブ、およびＣＤ  ＲＯＭ、ＤＶＤ、およびブルーレイ（登録商標）ディスク、もしくは他の光媒体などのようなリムーバブルの不揮発性光ディスクにおいて読出または書込を行なう光ディスクドライブを含んでもよい。コンピュータ読取可能記憶媒体１０２２は、Zip（登録商標）ドライブ、フラッシュメモリカード、ユニバーサルシリアルバス（ＵＳＢ）フラッシュドライブ、セキュアデジタル（ＳＤ）カード、ＤＶＤディスク、デジタルビデオテープなどを含んでもよいがそれらに限定はされない。コンピュータ読取可能記憶媒体１０２２は、さらに、フラッシュメモリベースのＳＳＤなどのような不揮発性メモリ、エンタープライズフラッシュドライブ、ソリッドステートＲＯＭなどに基づくソリッドステートドライブ（ＳＳＤ）、ソリッドステートＲＡＭ、ダイナミックＲＡＭ、スタティックＲＡＭ、ＤＲＡＭベースのＳＳＤ、磁気抵抗ＲＡＭ（ＭＲＡＭ）ＳＳＤなどのような揮発性メモリに基づくＳＳＤ、ならびにＤＲＡＭおよびフラッシュメモリベースのＳＳＤの組合せを用いるハイブリッドＳＳＤを含んでもよい。ディスクドライブおよびそれらの関連のコンピュータ読取可能媒体は、コンピュータシステム１０００のためのコンピュータ読取可能命令、データ構造、プログラムモジュールおよび他のデータの不揮発性ストレージを提供し得る。
【０１７９】
通信サブシステム１０２４は、他のコンピュータシステムおよびネットワークへのインターフェイスを与える。通信サブシステム１０２４は、他のシステムとコンピュータシステム１０００との間のデータの送受のためのインターフェイスとして働く。たとえば、通信サブシステム１０２４は、コンピュータシステム１０００がインターネットを介して１つ以上の装置に接続することを可能にし得る。いくつかの局面では、通信サブシステム１０２４は、（たとえばセルラー電話技術、３Ｇ、４ＧもしくはＥＤＧＥ（グローバル進化のための高速データレート）などのような先進データネットワーク技術、ＷｉＦｉ（ＩＥＥＥ８０２．１１ファミリー規格、もしくは他のモバイル通信技術、またはそれらの任意の組合せを用いて）無線音声および／またはデータネットワークにアクセスするための無線周波数（ＲＦ）送受信機コンポーネント、グローバルポジショニングシステム（ＧＰＳ）受信機コンポーネント、ならびに／または他のコンポーネントを含み得る。いくつかの局面では、通信サブシステム１０２４は無線インターフェイスに加えて、またはそれに代わって、有線ネットワーク接続（たとえばイーサネット）を提供することができる。
【０１８０】
いくつかの局面では、通信サブシステム１０２４は、さらに、コンピュータシステム１０００を用い得る１人以上のユーザのために、入力通信を、構造化されたデータフィードおよび／または構造化されないデータフィード１０２６、イベントストリーム１０２８、イベント更新１０３０などの形式で受信してもよい。
【０１８１】
一例として、通信サブシステム１０２４は、データフィード１０２６を、実時間で、Ｔｗｉｔｔｅｒ（登録商標）フィード、Ｆａｃｅｂｏｏｋ（登録商標）更新、Ｒｉｃｈ  Ｓｉｔｅ  Ｓｕｍｍａｒｙ（ＲＳＳ）フィードなどのようなウェブフィード、および／もしくは１つ以上の第三者情報源からの実時間更新などのようなソーシャルメディアネットワークおよび／または他の通信サービスのユーザから受信するよう構成されてもよい。
【０１８２】
加えて、通信サブシステム１０２４は、さらに、データを、明示的な端部を有さない本質的に連続的または無限であり得る実時間イベントのイベントストリーム１０２８および／またはイベント更新１０３０を含み得る連続データストリームの形式で受信するよう構成されてもよい。連続データを生成するアプリケーションの例は、たとえば、センサデータアプリケーション、金融株式相場表示板、ネットワーク性能測定ツール（たとえばネットワーク監視およびトラフィック管理アプリケーション）、クリックストリーム解析ツール、自動車交通監視などを含んでもよい。
【０１８３】
通信サブシステム１０２４は、さらに、構造化されたデータフィードおよび／または構造化されないデータフィード１０２６、イベントストリーム１０２８、イベント更新１０３０などを、コンピュータシステム１０００に結合される１つ以上のストリーミングデータソースコンピュータとの通信状態にあり得る１つ以上のデータベースに出力するよう構成されてもよい。
【０１８４】
コンピュータシステム１０００は、手持ち式の携帯装置（たとえばｉＰｈｏｎｅ（登録商標）セルラーフォン、ｉＰａｄ（登録商標）コンピューティングタブレット、ＰＤＡ）、ウェアラブルデバイス（Ｇｏｏｇｌｅ  Ｇｌａｓｓ（登録商標）頭部装着型ディスプレイ）、ＰＣ、ワークステーション、メインフレーム、キオスク、サーバラック、または任意の他のデータ処理システムを含むさまざまなタイプのうちの１つであり得る。
【０１８５】
コンピュータおよびネットワークの絶え間なく変化し続ける性質のために、図に示されているコンピュータシステム１０００の説明は、特定の例として意図されているに過ぎない。図に示されているシステムよりも多くのまたは少ない数の構成要素を有する多くの他の構成が実現可能である。たとえば、ハードウェア、ファームウェア、（アプレットを含む）ソフトウェア、または組合せにおいて、カスタマイズされたハードウェアが使用されてもよく、および／または、特定の要素が実装されてもよい。さらに、ネットワーク入力／出力装置などの他の計算装置への接続が利用されてもよい。本明細書で提供される開示および教示に基づいて、当業者は、さまざまな局面を実現するための他の手段および／または方法を理解するであろう。
【０１８６】
上記の明細書では、本発明の局面は、その具体的な局面を参照して記載されているが、本発明がこれに限定されるものではないことを当業者は認識するであろう。上記の発明のさまざまな特徴および局面は、個々にまたは一緒に使用されてもよい。さらに、局面は、明細書のより広い精神および範囲から逸脱することなく、本明細書に記載されているものを越えたどのような環境およびアプリケーションにおいても利用可能である。したがって、明細書および図面は、限定的ではなく例示的であるものと見なされるべきである。
【図１】
0006336110.tif 000002
【図２】
0006336110.tif 000003
【図３】
0006336110.tif 000004
【図４】
0006336110.tif 000005
【図５】
0006336110.tif 000006
【図６】
0006336110.tif 000007
【図７】
0006336110.tif 000008
【図８】
0006336110.tif 000009
【図９】
0006336110.tif 000010
【図１０】
0006336110.tif 000011