(57)【特許請求の範囲】
【請求項１】
デバイス間における通信の方法であって、
サーバによって、第１デバイスから接続要求を受け取るステップと、
前記サーバによって、前記接続要求を行っている前記第１デバイス上で実行しているアプリケーションの識別情報を得るステップと、
前記サーバによって、前記識別情報をチェックすることによって、前記第１デバイスがＷｅｂＳｏｃｋｅｔベースの接続を含む第１の種類の接続と互換性がないと決定するステップと、
前記サーバによって、前記第１デバイスが前記ＷｅｂＳｏｃｋｅｔベースの接続と互換性がないことに応答して、前記識別情報をチェックすることによって、前記第１デバイスが第２の種類の接続と互換性があると決定するステップであって、前記第２の種類の接続は、ＥｖｅｎｔＳｏｕｒｃｅベースの接続、永遠フレーム・ベースの接続、又はロング・ポーリング永続接続のうちの少なくとも１つを含む、ステップと、
前記サーバによって、前記第１デバイスが前記第２の種類の接続と互換性があると決定したことに応答して前記第２の種類の接続における１つの接続を確立するステップと、
前記サーバによって、前記接続上で第１ウェブＡＰＩ要求を受け取るステップと、
前記サーバによって、前記第１ウェブＡＰＩ要求に応答して第１手順を実行するステップと、
前記サーバによって、前記接続上で第２ウェブＡＰＩ要求を受け取るステップと、
前記サーバによって、前記第２ウェブＡＰＩ要求に応答して第２手順を実行するステップと、
を含む方法。
【請求項２】
前記第２の種類の接続は、前記ＥｖｅｎｔＳｏｕｒｃｅベースの接続を含む、請求項１に記載の方法。
【請求項３】
前記第２の種類の接続は、前記第２の種類の接続の、前記接続要求を送信する前記第１デバイスとの互換性に少なくとも部分的に基づいて前記サーバによって選択される、請求項２に記載の方法。
【請求項４】
前記接続は、前記第１ウェブＡＰＩ要求と前記第２ウェブＡＰＩ要求との間において存続する、請求項２に記載の方法。
【請求項５】
前記接続は、前記第２ウェブＡＰＩ要求の後において存続する、請求項４に記載の方法。
【請求項６】
前記サーバによって、前記第１手順を実行することに応答して前記接続を維持するステップを更に含む、請求項１に記載の方法。
【請求項７】
前記サーバによって、前記接続が所定の期間アイドルであることに応答して前記接続をデータ記憶システムに切り替えるステップを更に含む、請求項１に記載の方法。
【請求項８】
前記サーバによって、前記接続上で前記第２ウェブＡＰＩ要求を受け取ることに応答して前記接続をアクティブなメモリに切り替えるステップを更に含む、請求項７に記載の方法。
【請求項９】
前記データ記憶システムは、データベース、データベース・ファーム、ハッシュ・テーブル、又は参照テーブルのうちの少なくとも１つを含む、請求項７に記載の方法。
【請求項１０】
プロセッサと、
前記プロセッサと通信するように構成され、前記プロセッサによる実行に応答して前記プロセッサに以下の動作を実施させる命令を格納する、有形非一時的メモリと、
を備えるコンピュータ・ベース・システムであって、
前記動作は、
前記プロセッサによって、通信デバイスから接続要求を受け取るステップと、
前記プロセッサによって、前記接続要求を行っている前記通信デバイス上で実行しているアプリケーションの識別情報を得るステップと、
前記プロセッサによって、前記識別情報をチェックすることによって、前記通信デバイスがＷｅｂＳｏｃｋｅｔベースの接続を含む第１の種類の接続と互換性がないと決定するステップと、
前記プロセッサによって、前記通信デバイスが前記ＷｅｂＳｏｃｋｅｔベースの接続と互換性がないことに応答して、前記識別情報をチェックすることによって、前記通信デバイスが第２の種類の接続と互換性があると決定するステップであって、前記第２の種類の接続は、ＥｖｅｎｔＳｏｕｒｃｅベースの接続、永遠フレーム・ベースの接続、又はロング・ポーリング永続接続のうちの少なくとも１つを含む、ステップと、
前記プロセッサによって、前記通信デバイスが前記第２の種類の接続と互換性があると決定したことに応答して前記第２の種類の接続における前記通信デバイスへの接続を確立するステップと、
前記プロセッサによって、前記接続を介して前記通信デバイスから第１ウェブＡＰＩ要求を受け取るステップと、
前記プロセッサによって、前記第１ウェブＡＰＩ要求に応答して第１手順を実行するステップと、
前記プロセッサによって、前記第１手順からの結果を前記接続を介して前記通信デバイスに戻すステップと、
前記プロセッサによって、前記第１手順からの前記結果を前記通信デバイスに戻すことに応答して、前記接続を解放状態に維持するステップと、
前記プロセッサによって、前記接続上において前記通信デバイスから第２ウェブＡＰＩ要求を受け取るステップと、
前記プロセッサによって、前記第２ウェブＡＰＩ要求に応答して第２手順を実行するステップと、
を含む、コンピュータ・ベース・システム。
【請求項１１】
前記第２の種類の接続は、前記ＥｖｅｎｔＳｏｕｒｃｅベースの接続を含む、請求項１０に記載のコンピュータ・ベース・システム。
【請求項１２】
前記プロセッサによって、前記通信デバイス上で動作しているアプリケーションの、前記第２の種類の接続との互換性に少なくとも部分的に基づいて前記第２の種類の接続を選択するステップを更に含む、請求項１１に記載のコンピュータ・ベース・システム。
【請求項１３】
前記接続は、前記第１ウェブＡＰＩ要求と前記第２ウェブＡＰＩ要求との間において存続する、請求項１１に記載のコンピュータ・ベース・システム。
【請求項１４】
前記接続は、前記第２ウェブＡＰＩ要求の後において存続する、請求項１３に記載のコンピュータ・ベース・システム。
【請求項１５】
前記プロセッサによって、前記接続が所定の期間アイドルであることに応答して前記接続をデータ記憶システムに切り替えるステップを更に含む、請求項１０に記載のコンピュータ・ベース・システム。
【請求項１６】
前記プロセッサによって、前記接続上で前記第２ウェブＡＰＩ要求を受け取ることに応答して前記接続をアクティブなメモリに切り替えるステップを更に含む、請求項１５に記載のコンピュータ・ベース・システム。
【請求項１７】
前記データ記憶システムは、データベース、データベース・ファーム、ハッシュ・テーブル、又は参照テーブルのうちの少なくとも１つを含む、請求項１５に記載のコンピュータ・ベース・システム。
【請求項１８】
プロセッサによる実行に応答して前記プロセッサに以下の動作を実施させる命令を格納する非一時的有形コンピュータ可読記憶媒体であって、前記動作は、
前記プロセッサによって、通信デバイスから接続要求を受け取るステップと、
前記プロセッサによって、前記接続要求を行っている前記通信デバイス上で実行しているアプリケーションの識別情報を得るステップと、
前記プロセッサによって、前記識別情報をチェックすることによって、前記通信デバイスがＷｅｂＳｏｃｋｅｔベースの接続を含む第１の種類の接続と互換性がないと決定するステップと、
前記プロセッサによって、前記通信デバイスが前記ＷｅｂＳｏｃｋｅｔベースの接続と互換性がないことに応答して、前記識別情報をチェックすることによって、前記通信デバイスが第２の種類の接続と互換性があると決定するステップであって、前記第２の種類の接続は、ＥｖｅｎｔＳｏｕｒｃｅベースの接続、永遠フレーム・ベースの接続、又はロング・ポーリング永続接続のうちの少なくとも１つを含む、ステップと、
前記プロセッサによって、前記通信デバイスが前記第２の種類の接続と互換性があると決定したことに応答して前記第２の種類の接続における前記通信デバイスへの接続を確立するステップと、
前記プロセッサによって、前記接続を介して前記通信デバイスから第１ウェブＡＰＩ要求を受け取るステップと、
前記プロセッサによって、前記第１ウェブＡＰＩ要求に応答して第１手順を実行するステップと、
前記プロセッサによって、前記第１手順を実行することに応答して前記接続を解放状態に維持するステップと、
前記プロセッサによって、前記解放状態にある前記接続上において前記通信デバイスから第２ウェブＡＰＩ要求を受け取るステップと、
前記プロセッサによって、前記第２ウェブＡＰＩ要求に応答して第２手順を実行するステップと、
を含む、非一時的有形コンピュータ可読記憶媒体。
【請求項１９】
前記第２の種類の接続は、前記ＥｖｅｎｔＳｏｕｒｃｅベースの接続を含む、請求項１８に記載の非一時的有形コンピュータ可読記憶媒体。
【請求項２０】
前記プロセッサによって、前記通信デバイス上で動作しているアプリケーションの、前記第２の種類の接続との互換性に少なくとも部分的に基づいて前記第２の種類の接続を選択するステップを更に含む、請求項１９に記載の非一時的有形コンピュータ可読記憶媒体。
【請求項２１】
前記接続は、前記第１ウェブＡＰＩ要求と前記第２ウェブＡＰＩ要求との間において存続する、請求項１９に記載の非一時的有形コンピュータ可読記憶媒体。
【請求項２２】
前記接続は、前記第２ウェブＡＰＩ要求の後において存続する、請求項２１に記載の非一時的有形コンピュータ可読記憶媒体。
【請求項２３】
前記プロセッサによって、前記接続が所定の期間アイドルであることに応答して前記接続をデータ記憶システムに切り替えるステップを更に含む、請求項１８に記載の非一時的有形コンピュータ可読記憶媒体。
【請求項２４】
前記プロセッサによって、前記接続上で前記第２ウェブＡＰＩ要求を受け取ることに応答して前記接続をアクティブなメモリに切り替えるステップを更に含む、請求項２３に記載の非一時的有形コンピュータ可読記憶媒体。
【請求項２５】
前記データ記憶システムは、データベース、データベース・ファーム、ハッシュ・テーブル、又は参照テーブルのうちの少なくとも１つを含む、請求項２３に記載の非一時的有形コンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願に対する相互引用
[0001]  本願は、"SYSTEMS AND METHODS FOR WEB API COMMUNICATION" (ウェブＡＰＩ通信システムおよび方法）と題し２０１５年３月１１日に出願された米国仮特許出願第６２／１３１，６１９号の優先権を主張する。この出願をここで引用したことによりその内容全体が本願にも含まれるものとする。
【０００２】
分野
[0002]  本開示は、一般的には、ウェブＡＰＩを使用する通信に関し、更に特定すれば、永続接続を介したウェブＡＰＩ通信システムおよび方法に関する。本明細書において使用する場合、「ウェブＡＰＩ」という用語は、リモート・デバイス上において既定の１組の手順を呼び出すために利用可能とされたＵＲＬ（即ち、ウェブ・アドレス）の集合体を指す。
【背景技術】
【０００３】
[0003]  デバイス間の通信は、通例、インターネットまたはローカル・エリア・ネットワークのようなネットワークを通じて行われる。デバイス上で実行するアプリケーションも互いに通信することできる。異なるアプリケーションが相互作用することができる１つの方法は、ＡＰＩを介することである。例えば、ウェブＡＰＩが、第三者のアプリケーションに、既存のアプリケーションのためにデータをホストするサーバと通信することを可能にすることができる。
【０００４】
[0004]  ウェブＡＰＩは、サーバに送られる要求毎に、接続を開きそして閉じることをアプリケーションに要求する場合がある。これに関して、各要求とは、１つの切断され分離されたコールである。要求毎に接続を開きそして閉じることに付随するオーバーヘッドは、アプリケーションの実行能力(performance)を低下させるおそれがある。第三者アプリケーションとサーバとの間の通信が、例えば、第三者アプリケーションを実行するクライアントには遅く感じる可能性もある。通信が遅く感じること、および／またはロードに長時間かかることは、そうでなければアプリケーションを使用するであろう消費者を逃がす(turn away)おそれがある。
【発明の概要】
【０００５】
[0005]  デバイス間通信方法は、接続要求を受けるステップと、この接続要求に応答して接続を確立するステップと、この接続上において第１ウェブＡＰＩ要求を受けるステップとを含む。この方法は、更に、第１ウェブＡＰＩ要求に応答して第１手順を実行するステップと、接続上で第２ウェブＡＰＩ要求を受けるステップと、第２ウェブＡＰＩ要求に応答して第１手順または第２手順の内少なくとも１つを実行するステップとを含む。
【図面の簡単な説明】
【０００６】
[0006]  更に完全な理解は、詳細な説明および特許請求の範囲を参照し、図面と関連付けて検討することによって得ることができる。図面では、同様の参照番号は、図面全体を通じて同様のエレメントを指す。
【図１】図１は、本開示の種々の実施形態にしたがって、永続接続を用いてウェブＡＰＩを実装する(implement)システムの模式図を示す。
【図２】図２は、種々の実施形態にしたがって、サーバがクライアントとの接続を確立し、永続接続を使用して、サーバとクライアントとの間でウェブＡＰＩ要求および応答を送信するプロセスを示す。
【図３】図３は、種々の実施形態にしたがって、クライアントがサーバとの接続を確立し、永続接続を使用して、サーバとクライアントとの間でウェブＡＰＩ要求および応答を送信するプロセスを示す。
【図４】図４は、種々の実施形態にしたがって、接続を介してＡＰＩをサポートするために、サーバとの永続接続の種類を選択するロジックを示す。
【図５】図５は、種々の実施形態による、２つの通信デバイス間におけるＡＰＩ通信システムを経時的に示す。
【発明を実施するための形態】
【０００７】
[0012]  本明細書における例示的な実施形態の詳細な説明は、種々の実施形態を例示として示す添付図面(drawings and pictures)を参照する。これら種々の実施形態について、当業者が本開示を実施することを可能にする程度に十分詳細に説明するが、他の実施形態も実現できること、そして本開示の主旨および範囲から逸脱することなく論理的または機械的変更も行えることは理解されてしかるべきである。つまり、本明細書における詳細な説明は、限定ではなく、例示の目的に限って提示されることとする。例えば、方法またはプロセスの説明のいずれにおいても、列挙されるステップは、任意の順序で実行することができ、提示される順序に限定されるのではない。更に、機能またはステップの内任意のものを１つ以上の第三者に委託すること、または１つ以上の第三者によって実行することもできる。更に、単数形に言及するときはいずれも複数の実施形態も含むこととし、１つよりも多いコンポーネントに言及するときはいずれも、単数の実施形態(singular embodiment)も含むことができる。
【０００８】
[0013]  システム、方法、およびコンピュータ・プログラム製品を提供する。本明細書の詳細な説明では、「種々の実施形態」、「一実施形態」(one embodiment)、「実施形態」(an embodiment)、「実施形態例」(an example embodiment)等に言及するときは、記載される実施形態は、特定の特徴、構造、または特性を含むことができるが、あらゆる実施形態が必ずしもその特定の特徴、構造、または特性を含まなくてもよいことを示す。更に、このような語句は、必ずしも同じ実施形態を指すとは限らない。更に、特定の特徴、構造、または特性が実施形態と関連付けて説明されるとき、このような特徴、構造、または特性を他の実施形態と関連付けて実施することは、明示的に記載されているか否かには関係なく、当業者の知識の範囲内であることを具申する。説明を読んだ後には、関連技術（１つまたは複数）における当業者には、どのように本開示を代替実施形態において実現するかは明白であろう。
【０００９】
[0014]  本明細書では、電子通信デバイス間における通信のためのシステムおよび方法について開示する。本明細書において使用する場合、「通信デバイス」とは他のデバイスとの通信が可能な任意のデバイスを指すことができる。例えばそして限定ではなく、通信デバイスとは、スマートフォン、ＰＤＡ、ラップトップ、デスクトップ・コンピュータ、携帯電話、ＧＰＳデバイス、カー・ナビゲーション・システム、ワイヤレス・プリンタ、または任意の他のデバイスを指すことができる。
【００１０】
[0015]  図１を参照すると、種々の実施形態による、永続接続を介したウェブ・アプリケーション・プログラミング・インターフェース（ＡＰＩ）通信のためのシステム１００が示されている。システム１００は、第１通信デバイス１０２を含む。アプリケーション１０４が第１通信デバイス１０２上で実行している。また、システム１００は第２通信デバイス１０８も含む。第２通信デバイス１０８は、第２アプリケーション１０６を実行することができる。第１通信デバイス１０２および第２通信デバイス１０８は、ネットワーク１１０を介して通信することができる。アプリケーション１０４は、データを第２アプリケーション１０６に供給すること、および／または第２アプリケーション１０６によって供給されるデータを使用することができる。同様に、第２アプリケーション１０６はデータをアプリケーション１０４に供給すること、および／またはアプリケーション１０４によって供給されるデータを使用することができる。これに関して、アプリケーション１０４および第２アプリケーション１０６は、互いに通信するためにウェブＡＰＩを利用することができる。
【００１１】
[0016]  ウェブＡＰＩの手順は、ネットワーク１１０を通じて第２通信デバイス１０８と通信する第１通信デバイス１０２によってコールすることができる。例えば、フォルダを第２通信デバイス１０８に要求する手順は、http://fakeurl.com/api/getfolderというようにすればよい。第２通信デバイス１０８（例えば、サーバ）がこの要求を第１通信デバイス１０２（例えば、クライアント）から受けると、この通信デバイスは、要求されたデータ、この場合フォルダ情報を、所定のフォーマット（例えば、ＪＳＯＮまたはＸＭＬ）で第１通信デバイス１０２に供給することによって、応答することができる。
【００１２】
[0017]  種々の実施形態において、アプリケーション１０４はウェブＡＰＩを使用して第２アプリケーション１０６とインターフェースすることができる。第１通信デバイス１０２上で実行するアプリケーション１０４は、ネットワーク１１０を通じて、第２アプリケーション１０６を実行する第２通信デバイス１０８にＡＰＩ要求を送ることができる。第２アプリケーション１０６は、ＡＰＩ要求を受けて処理する。ＡＰＩ要求を受けたことに応答して、第２アプリケーション１０６は、受けた特定のＡＰＩ要求に対応する手順を実行することができる。
【００１３】
[0018]  ＡＰＩ要求を送りそして受けるために、以下で更に詳しく説明するが、第１通信デバイス１０２と第２通信デバイス１０８との間に接続を確立する。第１通信デバイス１０２と第２通信デバイス１０８との間に永続接続を維持することによって、システム１００は、ＡＰＩ要求毎に接続を開きそして閉じるシステムよりも素早く、ＡＰＩ要求を完了することができる。
【００１４】
[0019]  図２を参照すると、種々の実施形態にしたがって、第１通信デバイス１０２によって送られ第２通信デバイス１０８によって受け取られたウェブＡＰＩ要求を処理するプロセス２００が示されている。第１通信デバイス１０２上で実行するアプリケーション１０４は、データを供給するように、または第２通信デバイス１０８上で実行する第２アプリケーション１０６からデータを取得するようにプログラミングすることができる。第２通信デバイス１０８は、第１通信デバイス１０２から接続を受けることができる（ステップ２０２）。アプリケーション１０４は、例えば、サーバとして機能している第２通信デバイス１０８に接続要求を提出するウェブ・クライアントとしてもよい。要求を受けたことに応答して、第２通信デバイス１０８は第１通信デバイス１０２との接続を確立することができる（ステップ２０４）。一旦確立されると、接続を無期限に維持することができる。
【００１５】
[0020]  種々の実施形態において、第２通信デバイス１０８は、データが送られているアクティブな接続と、当面アクティブ状態にあるアクティブな接続との間におけるコンテキスト切り替えによって、通常このようなデバイスにおいて本来存在する限度を超えた数のアクティブな接続を維持することができる。第２通信デバイス１０８は、アクティブ状態にあるアクティブな接続を、ＳＱＬデータベース、データベース・ファーム、ハッシュ・テーブル、または接続情報を格納する任意の他の手段のような、データ記憶システムに切り替えることができる。アクティブ状態にあるアクティブな接続についての情報が受信され格納されると、このアクティブな接続はストレージからアクティブなメモリに切り替わることができる。
【００１６】
[0021]  本明細書において論ずるデータベースはいずれも、リレーショナル、階層、グラフィカル、またはオブジェクト指向構造および／または他の何らかのデータベース構成を含むことができる。このデータベースを実施するために使用することができ一般に利用されているデータベース製品には、ＩＢＭ社（ＮＹ州、Ａｒｍｏｎｋ）によるＤＢ２、Ｏｒａｃｌｅ社（ＣＡ州、Ｒｅｄｗｏｏｄ  Ｓｈｏｒｅｓ）から入手可能な種々のデータベース製品、Ｍｉｃｒｏｓｏｆｔ社（ワシントン州、Ｒｅｄｍｏｎｄ）によるＭｉｃｒｏｓｏｆｔ  ＡｃｃｅｓｓまたはＭｉｃｒｏｓｏｆｔ  ＳＱＬＳｅｒｖｅｒ、ＭｙＳＱＬ  ＡＢ社（スエーデン、Ｕｐｐｓａｌａ）によるＭｙＳＱＬ、または任意のその他の適したデータベース製品が含まれる。更に、データベースは、任意の適した方法で、例えば、データ・テーブルまたは参照テーブルとして編成することができる。各レコードは、１つのファイル、一連のファイル、リンクされた一連のデータ・フィールド、または任意の他のデータ構造であってもよい。ある種のデータの関連付けは、当技術分野において知られている技法または実施されている技法のような、任意の所望のデータ関連付け技法によって遂行することができる。例えば、関連付けは、手作業でまたは自動的に遂行することができる。自動関連付け技法は、例えば、データベース検索、データベース合併、ＧＲＥＰ、ＡＧＲＥＰ、ＳＱＬ、テーブルにおいてキー・フィールドを使用して検索を高速化すること、全てのテーブルおよびファイルにわたる順次検索、参照を簡略化するために既知の順序にしたがってファイルにおけるレコードを並び替えること等を含むことができる。関連付けステップは、データベース合併機能によって、例えば、予め選択されたデータベースまたはデータ・セクタにおける「キー・フィールド」を使用して遂行することができる。データベースの性能を最適化するために、種々のデータベース微調整ステップ(tuning step)も考えられる。例えば、インデックスのように頻繁に使用されるファイルは、入力／出力（「Ｉ／Ｏ」）ボトルネックを低減するために、別のファイル・システムに置くことができる。
【００１７】
[0022]  尚、セキュリティ上の理由のために、本システムのデータベース、システム、デバイス、サーバ、または他のコンポーネントはいずれも、１つの場所または複数の場所においてその任意の組み合わせから成り、各データベースまたはシステムは、ファイアウォール、アクセス・コード、暗号化、解読、圧縮、解凍等のような、種々の適したセキュリティ機能(features)の内任意のものを含むことも、当業者には認められよう。
【００１８】
[0023]  暗号化は、当技術分野において現在利用可能な技法、または利用可能になる可能性がある技法の内任意のものによって実行することができ、例えば、Ｔｗｏｆｉｓｈ、ＲＳＡ、Ｅｌ  Ｇａｍａｌ、Ｓｃｈｏｒｒ署名、ＤＳＡ、ＰＧＰ、ＰＫＩ、ＧＰＧ（ＧｎｕＰＧ）、ならびに対称および非対称暗号システムがある。
【００１９】
[0024]  種々の実施形態において、第２通信デバイス１０８は、次いで、第１ＡＰＩ要求を、確立された接続を介して受けることができる（ステップ２０６）。ＡＰＩ要求を受けたことに応答して、第２通信デバイス１０８は、確立された接続を介して、データを第１通信デバイス１０２に戻す（ステップ２０８）。データを戻した後、第２通信デバイス１０８は、第１通信デバイス１０２との確立された接続を維持することができる（ステップ２１０）。この接続は、図４を参照して以下で更に詳しく論ずる種々の方法を使用して、維持することができる。
【００２０】
[0025]  種々の実施形態において、第２通信デバイス１０８は第２ウェブＡＰＩ要求を、確立された接続を介して受けることができる（ステップ２１２）。第２ウェブＡＰＩ要求は、第２通信デバイス１０８と第１通信デバイス１０２との間に追加の接続を確立することなく、受けることができる。第２ウェブＡＰＩ要求を受けたことに応答して、第２通信デバイス１０８は、確立された接続を介して、データを第１通信デバイス１０２に戻す（ステップ２１４）。
【００２１】
[0026]  図３を参照すると、種々の実施形態にしたがって第１通信デバイス１０２から第２通信デバイス１０８にＡＰＩ要求を送るプロセス３００が示されている。第１通信デバイス１０２上で実行するアプリケーション１０４は、第２通信デバイス１０８にＡＰＩ要求を送ることによって、データを供給するように、または第２通信デバイス１０８上で実行する第２アプリケーション１０６からデータを取得するようにプログラミングすることができる。第１通信デバイス１０２は、接続要求を第２通信デバイス１０８に送ることができる（ステップ３０２）。アプリケーション１０４は、例えば、接続要求を、サーバとして機能している第２通信デバイス１０８に提出するウェブ・クライアントとしてもよい。要求を受けたことに応答して、第２通信デバイス１０８は、第１通信デバイス１０２との接続を確立することができる（ステップ３０４）。次いで、第２通信デバイス１０８は、確立された接続を介して、第１ＡＰＩ要求を送ることができる（ステップ３０６）。このＡＰＩ要求を受けたことに応答して、第１通信デバイス１０２は、確立された接続を介して、データを受信する（ステップ３０８）。データを受信した後、第１通信デバイス１０２は、第２通信デバイス１０８との確立された接続を維持することができる（ステップ３１０）。この接続は、図４〜図５を参照して以下で更に詳しく論ずる種々の方法を使用して維持することができる。
【００２２】
[0027]  種々の実施形態において、第１通信デバイス１０２は、確立された接続を介して、第２ウェブＡＰＩ要求を送ることができる（ステップ３１２）。第２ウェブＡＰＩ要求は、第１通信デバイス１０２と第２通信デバイス１０８との間に追加の接続を確立することなく、送ることができる。第２ウェブＡＰＩ要求を送ったことに応答して、第１通信デバイス１０２は、確立された接続を介して、第２通信デバイス１０８からデータを受信する（ステップ３１４）。
【００２３】
[0028]  ウェブＡＰＩ要求を受ける方法（図２）、およびウェブＡＰＩ要求を送る方法（図３）は、例えば、ウェブサイトにほぼ瞬時の応答時間を与えるために使用することができる。第１通信デバイス１０２と第２通信デバイス１０８との間に接続が確立された後、後続のウェブＡＰＩコールはもはや接続を確立するオーバーヘッドを課すことはない。つまり、ウェブＡＰＩコールの結果は、レイテンシを低減して実行される。これに関して、永続接続を使用するウェブＡＰＩコールは、多くの場合においてユーザには表面上は一瞬のように見えるであろう。
【００２４】
[0029]  図４を参照すると、図１の第１通信デバイス１０２と第２通信デバイス１０８との間に永続接続を確立するプロセス４００が示されている。第２通信デバイス１０８は、ウェブ・クライアントとして動作することができる第１通信デバイス１０２と相互作用しつつ、サーバとして動作することができる。第２通信デバイス１０８は、第１通信デバイス１０２から接続要求を受けることができる（ステップ４０２）。この要求に応答して、第２通信デバイス１０８は、接続要求を行っている第１通信デバイス１０２上で実行しているアプリケーション１０４（例えば、ブラウザ）を識別することができる（ステップ４０４）。第２通信デバイス１０８は、例えば、デバイス識別子、オペレーティング・システム識別子、および／またはアプリケーション識別子を使用して、ブラウザを識別することができる。ブラウザ識別子およびデバイス識別子は、接続要求と共に供給することができる。例えば、第２通信デバイス１０８は、ブラウザの名称、ブラウザのバージョン、オペレーティング・システムの名称、およびオペレーティング・バージョンを接続要求と共に受信することができる。また、第２通信デバイス１０８の構成によっては、第２通信デバイス１０８が、接続要求を受けたことに応答して、ブラウザの名称、ブラウザのバージョン、オペレーティング・システムの名称、およびオペレーティング・バージョンを要求することもできる。
【００２５】
[0030]  一旦第２通信デバイス１０８が識別情報を得たなら、第２通信デバイス１０８はこの識別情報をチェックして、確立すべき接続の種類を決定する。第２通信デバイス１０８は、識別されたブラウザがＷｅｂＳｏｃｋｅｔ接続をサポートするか否かチェックすることから開始することができる（ステップ４０６）。ＷｅｂＳｏｃｋｅｔとは、第１通信デバイス１０２と第２通信デバイス１０８との間に双方向通信を設けるためのプロトコルである。ＷｅｂＳｏｃｋｅｔ接続は、ＷｅｂＳｏｃｋｅｔ接続を処理するようにコード化されている最新のブラウザとしか互換性がないというおそれがある。ＷｅｂＳｏｃｋｅｔは永続接続のために完全な専用の解決策(clean, dedicated solution)を提供するが、使用中の多くのデバイスはＷｅｂＳｏｃｋｅｔ接続と互換性がない。このため、第１通信デバイス１０２上で実行するアプリケーション１０４がＷｅｂＳｏｃｋｅｔ接続と互換性がある場合、第２通信デバイス１０８は、第１通信デバイス１０２とＷｅｂＳｏｃｋｅｔベースの永続接続を確立する（ステップ４１４）。第１通信デバイス１０２上で実行するアプリケーション１０４がＷｅｂＳｏｃｋｅｔ接続と互換性がない場合、第２通信デバイス１０８は他の互換性がある接続の種類をチェックすることができる。
【００２６】
[0031]  また、第２通信デバイス１０８は、識別されたブラウザがＥｖｅｎｔＳｏｕｒｃｅ（即ち、サーバによって送られるイベント）接続をサポートするか否かについてもチェックすることができる（ステップ４０８）。ＥｖｅｎｔＳｏｕｒｃｅ接続も、サーバが通信をクライアントにプッシュできるようにすることによって、双方向通信を可能にする。ＥｖｅｎｔＳｏｕｒｃｅ接続は、ＷｅｂＳｏｃｋｅｔ接続とは異なる多数の(a list of)ブラウザおよびデバイスと互換性があるかもしれない。このため、第１通信デバイス１０２上で実行するアプリケーション１０４がＥｖｅｎｔＳｏｕｒｃｅと互換性がある場合、第２通信デバイス１０８は、第１通信デバイス１０２と、ＥｖｅｎｔＳｏｕｒｃｅベースの永続接続を確立する（ステップ４１６）。第１通信デバイス１０２上で実行するアプリケーション１０４がＥｖｅｎｔＳｏｕｒｃｅ接続と互換性がない場合、第２通信デバイス１０８は他の互換性がある接続の種類をチェックすることができる。
【００２７】
[0032]  次いで、第２通信デバイス１０８は、識別されたブラウザが永遠フレーム接続(forever frame connection)をサポートするか否かチェックすることができる（ステップ４１０）。永遠フレーム接続とは、サーバが通信をクライアントにプッシュできるようにすることによって、双方向通信を可能にする他の技法である。永遠フレーム接続は、ブラウザ内に隠れたフレーム・エレメントを作成し、この隠れたフレーム内部に接続を確立することによって、確立することができる。永遠フレーム接続は、ＷｅｂＳｏｃｋｅｔおよびＥｖｅｎｔＳｏｕｒｃｅ接続とは異なる多数のブラウザおよびデバイスと互換性があるかもしれない。このため、第１通信デバイス１０２上で実行するアプリケーション１０４が永遠フレーミング(forever framing)と互換性がある場合、第２通信デバイス１０８は、第１通信デバイス１０２との永遠フレーム・ベースの永続接続を確立する（ステップ４１８）。第１通信デバイス上で実行するアプリケーション１０４が永遠フレーム接続と互換性がない場合、第２通信デバイス１０８は他の互換性がある接続の種類をチェックすることができる。
【００２８】
[0033]  種々の実施形態において、第２通信デバイス１０８が永続接続を確立するためにどの接続技法を使用するか確認するために、追加の好ましい技法をチェックに組み込むこともできる。このために、第２通信デバイスは、識別されたブラウザが他の好ましい接続技法をサポートするか否かチェックすることができる（ステップ４１２）。第１通信デバイス１０２上で実行するアプリケーション１０４が好ましい接続技法と互換性がある場合、第２通信デバイス１０８は、この好ましい技法を使用して、第１通信デバイス１０２との永続接続を確立する（ステップ４２０）。第１通信デバイス１０２上で実行するアプリケーション１０４が好ましい接続技法と互換性がない場合、第２通信デバイス１０８はデフォルトの接続を使用することができる。図４に示すデフォルトの接続は、ロング・ポーリング(long-polling)ベースの永続接続を確立するステップ（ステップ４２２）を含む。
【００２９】
[0034]  図１を端的に参照すると、一旦第１通信デバイス１０２と第２通信デバイス１０８との間に永続接続が確立されたなら、アプリケーション１０４は、ネットワーク１１０を通じて第２アプリケーション１０６と、オーバーヘッドを低減して、通信することができる。図５を参照すると、それぞれ、第１通信デバイス１０２および第２通信デバイス１０８上で実行するアプリケーション１０４および第２アプリケーション１０６の間において永続接続を使用するＡＰＩ通信システム５００が、経時的に示されている。図示のように、タイムラインＴ上の位置が左から右に移るに連れて、時間は線形に過ぎる。アプリケーション１０４は、第２アプリケーション１０６への接続を求める要求５０２を送ることができる。アプリケーション１０４および第２アプリケーション１０６は、時間期間Ｐ０が経過した後、第２アプリケーション１０６からアプリケーション１０４への通信５０４によって、接続プロセスを完了することができる。接続を確立するための典型的な時間期間Ｐ０は、通信デバイス間のレイテンシに応じて、約５０ｍｓから５００ｍｓを要することもある。
【００３０】
[0035]  接続が確立された後、第１通信デバイス１０２および第２通信デバイス１０８上で実行するアプリケーションは、ウェブＡＰＩを使用して、確立された永続接続を介して通信することができる。アプリケーション１０４は、ＡＰＩ要求５０６を第２アプリケーション１０６に送る。第２アプリケーション１０６は、ＡＰＩ要求５０６に対応する機能をローカルに実行し、次いで対応するデータ５０８を戻すことができる。ＡＰＩ要求５０６を送ってから対応するデータ５０８を戻すまでの時間期間Ｐ１は、例えば、ほぼ１２ｍｓにすることができる。対応するデータ５０８を返した後１０ｍｓ以内に接続が閉鎖されるとすると、アプリケーション１０４と第２アプリケーション１０６との間における１回のＡＰＩ通信に対するオーバーヘッドは、Ｐ０＋Ｐ１＋１０ｍｓとなる。しかしながら、永続接続が確立されているので（例えば、図４に示すように）、この接続は、第２アプリケーション１０６が対応するデータ５０８を戻した後も開いたままとなっている。
【００３１】
[0036]  次いで、アプリケーション１０６を実行する第２通信デバイス１０８は、情報５１０が入手可能になると、確立された永続接続を介して、情報５１０をアプリケーション１０４にプッシュすることができる。例えば、アプリケーション１０４は、第２アプリケーション１０６を介してチャット・メッセージを送信および受信するテキスト・ベースのチャット・アプリケーションであってもよい。情報５１０は、ユーザが、アプリケーション１０４に向けたチャット・メッセージをタイプ入力していることを示すのでもよい。第２アプリケーション１０６は、アプリケーション１０４が、ユーザがメッセージをタイプ入力していることの指示(indicator)を表示できるように、情報５１０をアプリケーション１０４に提供することができる。アプリケーション１０４が直接情報５１０を要求することなく、情報５１０はアプリケーション１０４に渡される。これに関して、ＡＰＩ通信システム５００は、他の場合ではアプリケーション１０４が情報５１０を受信するために発生するオーバーヘッドを解消することができる。何故なら、アプリケーション１０４は、情報５１０を要求するために繰り返し新たな接続を確立する（毎回接続オーバーヘッド時間期間Ｐ０が発生する）のではなく、確立された永続接続において単に待ち受けていればよいからである。
【００３２】
[0037]  次いで、アプリケーション１０４は、ＡＰＩ通信システム５００を、確立された永続接続と共に使用して、第２ＡＰＩ要求５１２を第２アプリケーション１０６に送ることができる。アプリケーション１０４は、新たな接続を確立することなく（そして、接続を確立するためのオーバーヘッド時間期間Ｐ０を発生することなく）、第２ＡＰＩ要求５１２を送ることができる。第２アプリケーション１０６は、第２ＡＰＩ要求５１２を処理し、時間期間Ｐ２の後に結果５１４を戻すことができる。時間期間Ｐ２は、例えば、約１４ｍｓの期間を有するとしてもよい。この接続は、アプリケーション１０４と第２アプリケーション１０６との間において更に他の通信を待ちながら、期間Ｐ４の間開いたままでいることができる。第２通信デバイス１０８は、情報を求める要求５１６をアプリケーション１０４に、確立された接続を介して送ることができる。これに関して、サーバは直接情報をクライアントに要求することによって、クライアントと通信することができる。次いで、クライアントは、期間Ｐ３の後、要求された情報５１８をサーバに提供することができる。第２通信デバイス１０８によって要求された情報は、例えば、地理的位置または現地時間でもよい。永続接続（図２〜図４を参照して説明したような）は、ＡＰＩを使用するサーバとクライアントとの間における典型的な通信に付随するオーバーヘッドを低減することによって、サーバとクライアントとの間にほぼ瞬時的な通信を可能にする。具体的には、永続接続は、所与の通信に対する時間オーバーヘッドを、少なくとも、接続を確立するために通例使用される時間期間Ｐ０だけ低減することができる。
【００３３】
[0038]  種々の実施形態において、本明細書において説明した方法は、本明細書において説明した種々の特定の機械を使用して実現される。当業者には直ちに認められるように、本明細書において説明した方法は、以下の特定の機械、および今後開発される機械を使用して、任意の適した組み合わせで実現することができる。更に、本開示から明確であるように、本明細書において説明した方法が一定の項目(article)に種々の変形をもたらす場合もある。
【００３４】
[0039]  簡潔さのために、従来のデータ・ネットワーキング、アプリケーション開発、およびシステムの他の機能的態様(aspect)（ならびに、システムの個々の動作コンポーネントのコンポーネント）について、本明細書では詳細に説明しない場合もある。更に、本明細書に含まれる種々の図において示した接続線は、種々のエレメント間における例示的な機能関係および／または物理的結合を表すことを意図している。尚、実際のシステムにおいては、多くの代替または追加の機能関係または物理的接続が存在し得ることは注記してしかるべきである。
【００３５】
[0040]  本明細書において論じた種々のシステム・コンポーネントは、以下の内１つ以上を含むことができる。ディジタル・データを処理するためのプロセッサを含むホスト・サーバまたは他のコンピューティング・システム。ディジタル・データを格納するためにプロセッサに結合されたメモリ。ディジタル・データを入力するためにプロセッサに結合された入力ディジタイザ。メモリ内に格納され、プロセッサによるディジタル・データの処理を指令するためにプロセッサによってアクセス可能なアプリケーション・プログラム。プロセッサによって処理されたディジタル・データから導き出された情報を表示するためにプロセッサおよびメモリに結合されたディスプレイ・デバイス。ならびに複数のデータベース。本明細書において使用される種々のデータベースは、接続データ、および／またはシステムの動作において有用な同様のデータを含むことができる。当業者には認められようが、ユーザ・コンピュータは、オペレーティング・システム（例えば、Ｗｉｎｄｏｗｓ  ＮＴ、Ｗｉｎｄｏｗｓ  ９５／９８／２０００、Ｗｉｎｄｏｗｓ  ＸＰ、Ｗｉｎｄｏｗｓ  Ｖｉｓｔａ、Ｗｉｎｄｏｗｓ  ７、Ｗｉｎｄｏｗｓ  ８、ＯＳ２、ＵＮＩＸ（登録商標）、Ｌｉｎｕｘ（登録商標）、Ｓｏｌａｒｉｓ、ＭａｃＯＳ等）、ならびに通例コンピュータに付随する種々の従来からのサポート・ソフトウェアおよびドライバを含むことができる。
【００３６】
[0041]  本システムあるいはその任意の部分（１つまたは複数）または機能（１つまたは複数）は、ハードウェア、ソフトウェア、またはその組み合わせを使用して実現することができ、更に１つ以上のコンピュータ・システムまたは他の処理システムにおいて実現することもできる。しかしながら、実施形態によって実行される操作は、多くの場合、人間の操作者によって実行される精神的動作(mental operation)と関連付けられることが一般的な、照合(matching)または選択というような用語で引用した。人間の操作者のそのような能力は、殆どの場合、本明細書において説明した動作のいずれにおいても必要ではなく、また望ましくもない。むしろ、これらの動作は機械動作とするとよい。種々の実施形態を実行するために有用な機械には、汎用ディジタル・コンピュータまたは同様のデバイスが含まれる。
【００３７】
[0042]  実際、種々の実施形態において、実施形態は、本明細書において説明した機能を実行することができる１つ以上のコンピュータ・システムを対象とする。コンピュータ・システムは、１つ以上のプロセッサを含む。プロセッサは、通信インフラストラクチャ（例えば、通信バス、クロス・オーバー・バー、またはネットワーク）に接続される。種々のソフトウェアの実施形態は、この例示的なコンピュータ・システムに関して説明される。この説明を読んだ後には、他のコンピュータ・システムおよび／またはアーキテクチャを使用してどのように種々の実施形態を実現するのか、関連技術（１つまたは複数）における当業者には明白になるであろう。コンピュータ・システムは、グラフィクス、テキスト、およびその他のデータを、ディスプレイ・ユニット上における表示のために、通信インフラストラクチャから（または、図示しないフレーム・バッファから）転送するディスプレイ・インターフェースを含むことができる。
【００３８】
[0043]  また、コンピュータ・システムは、例えば、ランダム・アクセス・メモリ（ＲＡＭ）のような主メモリも含み、更に副メモリも含むことができる。副メモリは、例えば、ハード・ディスク・ドライブ、および／またはフロッピ・ディスク・ドライブ、磁気テープ・ドライブ、光ディスク・ドライブ等を表すリムーバブル記憶デバイスを含むことができる。リムーバブル記憶デバイスは、周知の方法で、リムーバブル記憶ユニットから読み出し、および／またはリムーバブル記憶デバイスに書き込む。リムーバブル記憶ユニットは、フロッピ・ディスク、磁気テープ、光ディスク、ソリッド・ステート・ディスク等を表し、これらはリムーバブル記憶ドライブによって読み出され、そして書き込まれる。認められるであろうが、リムーバブル記憶ユニットは、コンピュータ・ソフトウェアおよび／またはデータを内部に格納した、コンピュータ使用可能記憶媒体を含む。
【００３９】
[0044]  種々の実施形態において、副メモリは、コンピュータ・プログラムまたは他の命令をコンピュータ・システムにロードすることを可能にするために、他の同様のデバイスを含むことができる。このようなデバイスは、例えば、リムーバブル記憶ユニットおよびインターフェースを含むことができる。このようなものの例には、プログラム・カートリッジおよびカートリッジ・インターフェース（ビデオ・ゲーム・デバイスにおいて見られるもの等）、リムーバブル・メモリ・チップ（消去可能プログラマブル・リード・オンリー・メモリ（ＥＰＲＯＭ）またはプログラマブル・リード・オンリー・メモリ（ＰＲＯＭ）等）および関連するソケット、ならびにソフトウェアおよびデータをリムーバブル記憶ユニットからコンピュータ・システムに転送することを可能にするその他のリムーバブル記憶ユニットおよびインターフェースを含むことができる。
【００４０】
[0045]  また、コンピュータ・システムは通信インターフェースも含むことができる。通信インターフェースは、ソフトウェアおよびデータをコンピュータ・システムと外部デバイスとの間で転送することを可能にする。通信インターフェースの例には、モデム、ネットワーク・インターフェース（イーサネット（登録商標）・カード等）、通信ポート、パーソナル・コンピュータ・メモリ・カード国際連合（ＰＣＭＣＩＡ）スロットおよびカード等を含むことができる。通信インターフェースを介して転送されるソフトウェアおよびデータは、信号の形態となる。信号は、電子、電磁、光、または通信インターフェースによって受信可能なその他の信号であってもよい。これらの信号は、通信路（例えば、チャネル）を通じて通信インターフェースに供給される。このチャネルは信号を搬送し、ワイヤ、ケーブル、光ファイバ、電話線、セルラ・リンク、高周波（ＲＦ）リンク、ワイヤレス、およびその他の通信チャネルを使用して実現することができる。
【００４１】
[0046]  「コンピュータ・プログラム媒体」および「コンピュータ使用可能媒体」という用語は、一般に、リムーバブル記憶ドライブおよびハード・ディスク・ドライブ内にインストールされたハード・ディスクのような媒体を指すために使用される。これらのコンピュータ・プログラム製品はソフトウェアをコンピュータ・システムに供給する。
【００４２】
[0047]  コンピュータ・プログラム（コンピュータ制御ロジックとも呼ぶ）は、主メモリおよび／または副メモリに格納される。また、コンピュータ・プログラムは、通信インターフェースを介して受け取ることもできる。このようなコンピュータ・プログラムは、実行されると、コンピュータ・システムが本明細書において論じた機能(feature)を実行することを可能にする。具体的には、コンピュータ・プログラムは、実行されると、プロセッサが種々の実施形態の機能(feature)を実行することを可能にする。したがって、このようなコンピュータ・プログラムは、コンピュータ・システムのコントローラを表す。
【００４３】
[0048]  種々の実施形態において、ソフトウェアは、コンピュータ・プログラム製品内に格納され、リムーバブル記憶ドライブ、ハード・ディスク・ドライブ、または通信インターフェースを使用してコンピュータ・システムにロードすることができる。制御ロジック（ソフトウェア）は、プロセッサによって実行されると、本明細書において説明した種々の実施形態の機能をプロセッサに実行させる。種々の実施形態において、特定用途集積回路（ＡＳＩＣ）のようなハードウェア・コンポーネント。本明細書において説明した機能を実行するようなハードウェアの状態機械の実現は、関連技術（１つまたは複数）における当業者には明白であろう。
【００４４】
[0049]  種々の実施形態において、サーバはアプリケーション・サーバ（例えば、ＷＥＢ  ＳＰＨＥＲＥ、ＷＥＢ  ＬＯＧＩＣ、ＪＢＯＳＳ）を含むことができる。種々の実施形態において、サーバはウェブ・サーバ（例えば、ＡＰＡＣＨＥ、ＩＩＳ、ＧＷＳ、ＳＵＮ  ＪＡＶＡ（登録商標）  ＳＹＳＴＥＭ  ＷＥＢ  ＳＥＲＶＥＲ）を含むことができる。
【００４５】
[0050]  当業者には認められるであろうが、デバイスは、オペレーティング・システム、ならびに通例コンピュータに付随する種々の従来からのサポート・ソフトウェアおよびドライバを含むことができるが、そのように限定されるのではない。デバイスは、任意の適したパーソナル・コンピュータ、ネットワーク・コンピュータ、ワークステーション、パーソナル・ディジタル・アシスタント、セルラ・フォン、スマートフォン、ミニコンピュータ、メインフレーム等を含むことができるが、これらに限定されるのではない。デバイスは、ネットワークにアクセス可能な家庭環境または業務環境内に位置することができる。種々の実施形態において、アクセスはネットワークを通じて、または市販のウェブ・ブラウザ・ソフトウェア・パッケージによってインターネットを通じて行われる。デバイスは、セキュア・ソケット・レイヤ（ＳＳＬ）およびトランスポート・レイヤ・セキュリティ（ＴＬＳ）のような、セキュリティ・プロトコルを実装することができる。デバイスは、ｈｔｔｐ、ｈｔｔｐｓ、ｆｔｐ、およびｓｆｔｐを含む様々なアプリケーション・レイヤ・プロトコルを実装することができる。
【００４６】
[0051]  種々の実施形態において、システム１００のコンポーネント、モジュール、および／またはエンジンは、マイクロ・アプリケーションまたはマイクロ・アプリとして実装することができる。マイクロ・アプリは、通例、移動体オペレーティング・システムのコンテキストにおいてデプロイされ、例えば、Ｐａｌｍ移動体オペレーティング・システム、Ｗｉｎｄｏｗｓ移動体オペレーティング・システム、Ａｎｄｒｏｉｄオペレーティング・システム、Ａｐｐｌｅ  ｉＯＳ、Ｂｌａｃｋｂｅｒｒｙオペレーティング・システム等を含む。マイクロ・アプリは、もっと大きなオペレーティング・システムおよび関連するハードウェアのリソースを、種々のオペレーティング・システムおよびハードウェア・リソースの動作を統制する１組の所定の規則によって利用するように構成することができる。例えば、マイクロ・アプリが、移動体デバイスまたは移動体オペレーティング・システム以外のデバイスまたはネットワークと通信することを望む場合、マイクロ・アプリは、オペレーティング・システムの通信プロトコルおよび関連するデバイス・ハードウェアを、移動体オペレーティング・システムの所定の規則の下で利用することができる。更に、マイクロ・アプリがユーザからの入力を望む場合、マイクロ・アプリは、オペレーティング・システムに応答を要求するように構成することができ、オペレーティング・システムは、種々のハードウェア・コンポーネントを監視し、次いで検出された入力をハードウェアからマイクロ・アプリに伝達する。
【００４７】
[0052]  「クラウド」または「クラウド・コンピューティング」は、管理の手間またはサービス・プロバイダの相互作用を最小限に抑えて、迅速にプロビジョニングおよび解放することができる構成変更可能なコンピューティング・リソースの共有プール（例えば、ネットワーク、サーバ、ストレージ、アプリケーション、およびサービス）への便利なオンデマンド型ネットワーク・アクセスを可能にするモデルを含む。クラウド・コンピューティングは、場所に依存しないコンピューティングを含むことができ、これによって共有サーバが、要求に応じて、リソース、ソフトウェア、およびデータをコンピュータおよびその他のデバイスに提供する。クラウド・コンピューティングに関するこれ以上の情報については、http://csrc.nist.gov/groups/SNS/cloud-computing/cloud-def-vl5.doc（最後に訪問したのは２０１１年２月４日である）におけるクラウド・コンピューティングのＮＩＳＴ（アメリカ国立標準技術研究所）の定義を参照のこと。この文書をここで引用したことにより、その内容全体が本願にも含まれるものとする。
【００４８】
[0053]  本明細書において使用する場合、「送信する」は、電子データを１つのシステム・コンポーネントから他のものに送ることを含むことができる。加えて、本明細書において使用する場合、「データ」は、ディジタルまたは任意の他の形態としたコマンド、クエリー、ファイル、記憶用データ等のような包括的な情報(encompassing  information)を含むことができる。
【００４９】
[0054]  本システムは、ウェブ・サービス、ユーティリティ・コンピューティング(utility computing)、パーベイシブ・コンピューティングおよび個別化コンピューティング(pervasive and individualized computing)、セキュリティおよび識別に関する解決策(security and identity solutions)、自動コンピューティング、クラウド・コンピューティング、コモディティ・コンピューティング、モビリティおよびワイヤレス・ソリューション、オープン・ソース、生物計量、グリッド・コンピューティング、および／またはメッシュ・コンピューティングと関連付けた使用を想定している。
【００５０】
[0055]  本明細書において論じたコンピュータは、ユーザによるアクセスが可能な、適したウェブサイトまたは他のインターネット・ベースのグラフィカル・ユーザ・インターフェースを設けることができる。種々の実施形態において、Ｍｉｃｒｏｓｏｆｔインターネット情報サーバ（ＩＩＳ）、Ｍｉｃｒｏｓｏｆｔトランザクション・サーバ（ＭＴＳ）、およびＭｉｃｒｏｓｏｆｔ  ＳＱＬサーバが、Ｍｉｃｒｏｓｏｆｔオペレーティング・システム、Ｍｉｃｒｏｓｏｆｔ  ＮＴウェブ・サーバ・ソフトウェア、ＭｉｃｒｏｓｏｆｔＳＱＬサーバ・データベース・システム、およびＭｉｃｒｏｓｏｆｔ商用サーバ(commerce Server)と共に使用される。加えて、ＡｃｃｅｓｓまたはＭｉｃｒｏｓｏｆｔ  ＳＱＬサーバ、Ｏｒａｃｌｅ、Ｓｙｂａｓｅ、Ｉｎｆｏｒｍｉｘ、ＭｙＳＱＬ、Ｉｎｔｅｒｂａｓｅ等のようなコンポーネントを、アクティブ・データ・オブジェクト（ＡＤＯ）に準拠したデータベース管理システムを提供するために使用されてもよい。種々の実施形態において、Ａｐａｃｈｅウェブ・サーバが、7d[[[[[[[[[オペレーティング・システム、ＭｙＳＱＬデータベース、ならびにＰｅｒｌ、ＰＨＰ、および／またはＰｙｔｈｏｎプログラミング言語と合わせて使用される。
【００５１】
[0056]  本明細書において論じた通信、入力、記憶、データベース、または表示はいずれも、ウェブ・ページを有するウェブサイトを経由することによって、やりやすくすることができる。「ウェブ・ページ」という用語は、本明細書において使用する場合、ユーザと対話処理するために使用される可能性がある文書およびアプリケーションの種類を限定することは意図していない。例えば、典型的なウェブサイトは、標準的なＨＴＭＬ文書に加えて、種々の形式、Ｊａｖａアプレット、ＪａｖａＳｃｒｉｐｔ（登録商標）、アクティブ・サーバ・ページ（ＡＳＰ）、共通ゲートウェイ・インターフェース・スクリプト（ＣＧＩ）、拡張可能マークアップ言語（ＸＭＬ）、ダイナミックＨＴＭＬ、カスケード・スタイル・シート（ＣＳＳ：cascading style sheets）、ＡＪＡＸ（非同期Ｊａｖａｓｃｉｐｔ  Ａｎｄ  ＸＭＬ）、ヘルパー・アプリケーション、プラグイン等を含むことができる。サーバは、ウェブ・サーバから要求を受けるウェブ・サービスを含むことができ、この要求は、ＵＲＬ(http://yahoo.com/stockquotes/ge)およびＩＰアドレス（１２３．５６．７８９．２３４）を含む。ウェブ・サーバは、適切なウェブ・ページを引き出し、このウェブ・ページのためのデータまたはアプリケーションをＩＰアドレスに送る。ウェブ・サービスとは、インターネットのような通信手段を介して他のアプリケーションと相互作用することができるアプリケーションである。ウェブ・サービスは、通例、ＸＭＬ、ＳＯＡＰ、ＡＪＡＸ、ＷＳＤＬ、およびＵＤＤＩのような標準またはプロトコルに基づく。ウェブ・サービス方法は、当技術分野では良く知られており、多くの標準的な書籍において扱われている(cover)。例えば、ALEX NGHIEM, IT WEB SERVICES: A ROADMAP FOR THE ENTERPRISE （ＩＴウェブ・サービス：企業向けロードマップ）(2003)を参照のこと。この文献をここで引用したことにより、その内容が本願にも含まれるものとする。
【００５２】
[0057]  また、ブラウザ・ベースの文書内にデータを表示するためには多数の方法があることも、実行者(practitioner)は認めよう。データは、標準的なテキストとして表すことができ、または固定リスト、スクロール可能なリスト、ドロップ・ダウン・リスト、編集可能なテキスト・フィールド、固定テキスト・フィールド、ポップ・アップ・ウィンドウ等の内部に表示することができる。同様に、ウェブ・ページ内においてデータを修正するためには、例えば、キーボードを使用する自由なテキスト入力、メニュー項目の選択、チェック・ボックス、選択肢ボックス等のように、利用可能な多数の方法がある。
【００５３】
[0058]  本明細書では、本システムおよび方法は、機能ブロック・コンポーネント、スクリーン・ショット、随意の選択、および種々の処理ステップに関して説明することができる。尚、このような機能ブロックは、指定された機能を実行するように構成された任意の数のハードウェアおよび／またはソフトウェア・コンポーネントによって実現できることは認められてしかるべきである。例えば、システムは種々の集積回路コンポーネント、例えば、メモリ・エレメント、処理エレメント、ロジック・エレメント、参照テーブル等を採用することができ、１つ以上のマイクロプロセッサまたは他の制御デバイスの制御の下で種々の機能を実行することができる。同様に、システムのソフトウェア・エレメントは、Ｃ、Ｃ＋＋、Ｃ＃、Ｊａｖａ、ＪａｖａＳｃｒｉｐｔ、ＶＢＳｃｒｉｐｔ、Ｍａｃｒｏｍｅｄｉａ  Ｃｏｌｄ  Ｆｕｓｉｏｎ、ＣＯＢＯＬ、Ｍｉｃｒｏｓｏｆｔ  Ａｃｔｉｖｅ  Ｓｅｒｖｅｒ  Ｐａｇｅｓ、アセンブリ、ＰＥＲＬ、ＰＨＰ、ａｗｋ、Ｐｙｔｈｏｎ、Ｖｉｓｕａｌ  Ｂａｓｉｃ、ＳＱＬ  Ｓｔｏｒｅｄ  Ｐｒｏｃｅｄｕｒｅｓ、ＰＬ／ＳＱＬ、任意のＵＮＩＸシェル・スクリプト、および拡張可能マークアップ言語（ＸＭＬ）のような、任意のプログラミングまたはスクリプティング言語によって実装することができ、種々のアルゴリズムは、データ構造、オブジェクト、プロセス、ルーチン、またはその他のプログラミング・エレメントの任意の組み合わせによって実現される。更に、システムは、データ送信、シグナリング、データ処理、ネットワーク制御等のために任意の数の従来の技法も採用できることも注記してしかるべきである。更にその上、システムは、ＪａｖａＳｃｒｉｐｔ、ＶＢＳｃｒｉｐｔ等のようなクライアント側スクリプティング言語によるセキュリティ問題を検出または防止するために使用することができる。暗号およびネットワーク・セキュリティの基本的な導入については、以下の参考文献のいずれかを参照のこと。（１）John Wiley & Sonsによって出版された"Applied Cryptography: Protocols, Algorithms, And Source Code In C" by Bruce Schneier（ブルース・シュナイアーによる「応用暗号学：プロトコル、アルゴリズム、およびＣによるソース・コード」）（第２版、１９９５）、（２）O'Reilly & Associatesによって出版された "Java Cryptography" by Jonathan Knudson（ジョナサン・ナドソンによる「Ｊａｖａ暗号学」）（１９９８）、（３）Prentice Hallによって出版された "Cryptography & Network Security: Principles & Practice" by William Stallings（ウィリアム・ストーリングスによる「暗号学およびネットワーク・セキュリティ：原理と実際」）。これらの文献をここで引用したことにより、その内容が本願にも含まれるものとする。
【００５４】
[0059]  当業者には認められるであろうが、本システムは、既存のシステムのカスタム化、アドオン製品(add-on product)、アップグレードされたソフトウェアを実行する処理装置、単独システム、分散型システム、方法、データ処理システム、データ処理デバイス、および／またはコンピュータ・プログラム製品として具体化することができる。したがって、システムまたはモジュールのいずれの部分であっても、コードを実行する処理装置、インターネット・ベースの実施形態、完全にハードウェアの実施形態、またはインターネット、ソフトウェア、およびハードウェアの態様を組み合わせた実施形態という形態を取ることができる。更に、本システムは、コンピュータ読み取り可能記憶媒体上のコンピュータ・プログラム製品という形態を取ることができ、この記憶媒体内にコンピュータ読み取り可能プログラム・コード手段が具体化されている。ハード・ディスク、ＣＤ−ＲＯＭ、光記憶デバイス、磁気記憶デバイス、ソリッド・ステート記憶デバイス等を含む、任意の適したコンピュータ読み取り可能記憶媒体を利用することができる。
【００５５】
[0060]  本明細書では、種々の実施形態による方法、装置（例えば、システム）、およびコンピュータ・プログラム製品のスクリーン・ショット、ブロック図、およびフローチャート図(flowchart illustration)を参照しながらシステムおよび方法について説明した。尚、ブロック図およびフローチャート図の各機能ブロック、ならびにブロック図およびフローチャート図における機能ブロックの組み合わせは、それぞれ、コンピュータ・プログラム命令によって実現できることは理解されよう。
【００５６】
[0061]  これらのコンピュータ・プログラム命令は、コンピュータまたは他のプログラマブル・データ処理装置上で実行する命令が、フローチャートの１つまたは複数のブロックにおいて指定される機能を実現する手段を形成するように、汎用コンピュータ、特殊目的コンピュータ、または機械を生成するための他のプログラマブル・データ処理装置にロードすることができる。これらのコンピュータ・プログラム命令は、コンピュータ読み取り可能メモリに格納することもでき、コンピュータ読み取り可能メモリ内に格納されている命令が、フローチャートの１つまたは複数のブロックにおいて指定される機能を実現する命令手段を含む製品を生成するように、コンピュータまたは他のプログラマブル・データ処理装置に、特定の方法で機能するように指令することができる。また、コンピュータ・プログラム命令をコンピュータまたは他のプログラマブル・データ処理装置にロードして、一連の動作ステップをコンピュータまたは他のプログラマブル装置上で実行させると、コンピュータまたは他のプログラマブル装置上で実行する命令がフローチャートの１つまたは複数のブロックにおいて指定される機能を実現するステップとなるように、コンピュータ実装プロセスを生成することもできる。
【００５７】
[0062]  したがって、ブロック図およびフローチャート図の機能ブロックは、指定された機能を実行する手段の組み合わせ、指定された機能を実行するステップの組み合わせ、および指定された機能を実行するプログラム命令手段をサポートする。また、ブロック図およびフローチャート図の各機能ブロック、ならびにブロック図およびフローチャート図における機能ブロックの組み合わせは、指定された機能またはステップを実行する特殊目的ハードウェア・ベースのコンピュータ・システム、または特殊目的ハードウェアおよびコンピュータ命令の適した組み合わせのいずれかによって実現できることも理解されよう。更に、プロセス・フローの図およびその説明は、ユーザ・ウィンドウ、ウェブ・ページ、ウェブサイト、ウェブ・フォーム(web form)、プロンプト等を参照することもできる。本明細書において図示され説明されたステップは、ウィンドウ、ウェブ・ページ、ウェブ・フォーム、ポップ・アップ・ウィンドウ、プロンプト等の使用を含む、任意の数の構成で成り立っても(comprise)よいことは、実行者には認められよう。更に、図示および説明した複数のステップは、１つのウェブ・ページおよび／またはウィンドウに組み入れることもできるが、わかりやすくするために略さずに記載した(expand)場合もあることも認められてしかるべきである。他の場合では、１つのプロセス・ステップとして図示および説明したステップは、複数のウェブ・ページおよび／またはウィンドウに分離することもできるが、簡潔にするために組み合わされた場合もある。
【００５８】
[0063]  「非一時的な」という用語は、それ自体伝搬するだけの一時的信号を請求項の範囲から除去するという意味で理解されるのであり、それ自体伝搬するだけの一時的な信号ではない全ての標準的なコンピュータ読み取り可能媒体に対する権利を放棄するのではない。言い換えると、「非一時的なコンピュータ読み取り可能媒体」および「非一時的なコンピュータ読み取り可能記憶媒体」という用語の意味は、３５U.Ｓ.Ｃ.§１０１の下において特許可能な主題の範囲に該当しないIn Re Nuijtenにおいて見られた様式の一時的コンピュータ読み取り可能媒体のみを除外すると解釈してしかるべきである。
【００５９】
[0064]  本明細書では、具体的な実施形態に関して、便益、利点、および問題に対する解決策について説明した。しかしながら、これらの便益、利点、問題に対する解決策、および任意の便益、利点、または解決策を生ずるあるいは一層際立たせる可能性があるいずれのエレメントも、本開示の肝要な、必要な、または本質的な特徴あるいはエレメントであると解釈しないこととする。単数形になっているエレメントを引用するときは、明示的にそのように述べられているのでなければ、「１つのみ」を意味するのではなく「１つ以上」を意味することを意図している。更に、「Ａ、B、およびＣの内少なくとも１つ」または「Ａ、B、またはＣの内少なくとも１つ」と同様の語句が請求項または明細書において使用される場合、この語句は、実施形態にはＡだけが存在するのでもよいこと、実施形態にはＢだけが存在するのでもよいこと、実施形態にはＣだけが存在するのでもよいこと、あるいは、エレメントＡ、B、およびＣの任意の組み合わせが１つの実施形態において存在してもよいこと、例えば、ＡおよびＢ、ＡおよびＣ、ＢおよびC、またはＡおよびBおよびＣが存在してもよいことを意味することを意図している。
【００６０】
[0065]  本開示は方法を含むが、これは、磁気または光メモリあるいは磁気または光ディスクのような有形コンピュータ読み取り可能担体上にコンピュータ・プログラム命令として具体化され得ることが考えられる。以上で説明した例示的な実施形態のエレメントの、当業者には周知である、全ての構造的、化学的、および機能的均等物は、ここで引用したことによって本明細書に明示的に含まれるものとし、本願の特許請求の範囲に包含されることを意図している。更に、デバイスまたは方法が、本開示によって解決されることが求められる各々の問題を指定する(address)ことや、本願の特許請求の範囲によって包含されることは必要でない。更にまた、本開示におけるエレメント、コンポーネント、または方法ステップはいずれも、これらのエレメント、コンポーネント、または方法ステップが明示的に特許請求の範囲において列挙されているか否かには関係なく、発明が開放されることを意図するのではない。本明細書における請求項のエレメントはいずれも、そのエレメントが「ための手段」(means for)という語句を使用して明示的に列挙されるのではなければ、３５U.S.C.１１２（f）の規定にしたがって解釈されないこととする。本明細書において使用する場合、「備える」(comprises)、「備えている」(comprising)、またはそのあらゆる他の変形は、非排他的な包含が適用されることを意図しており、したがって、多数のエレメントを含むプロセス、方法、品目(article)、または装置がこれらのエレメントだけを含むのではなく、明示的に列挙されていない他のエレメントを含むことができ、あるいはこのようなプロセス、方法、品目、または装置に内在的な(inherent to)他のエレメントも含むことができる。
【図１】
0006754369.tif 000002
【図２】
0006754369.tif 000003
【図３】
0006754369.tif 000004
【図４】
0006754369.tif 000005
【図５】
0006754369.tif 000006