【文献】
越野亮,喜多啓介,ゼロからの Androidで動くWebアプリ開発,日経Linux,日本,日経BP社,2012年 3月 8日,第14巻,第4号,p.107-113
(58)【調査した分野】(Int.Cl.,DB名)
前記第2の種類の接続は、前記第2の種類の接続の、前記接続要求を送信する前記第1デバイスとの互換性に少なくとも部分的に基づいて前記サーバによって選択される、請求項2に記載の方法。
前記サーバによって、前記接続上で前記第2ウェブAPI要求を受け取ることに応答して前記接続をアクティブなメモリに切り替えるステップを更に含む、請求項7に記載の方法。
前記プロセッサによって、前記通信デバイス上で動作しているアプリケーションの、前記第2の種類の接続との互換性に少なくとも部分的に基づいて前記第2の種類の接続を選択するステップを更に含む、請求項11に記載のコンピュータ・ベース・システム。
前記プロセッサによって、前記接続が所定の期間アイドルであることに応答して前記接続をデータ記憶システムに切り替えるステップを更に含む、請求項10に記載のコンピュータ・ベース・システム。
前記プロセッサによって、前記接続上で前記第2ウェブAPI要求を受け取ることに応答して前記接続をアクティブなメモリに切り替えるステップを更に含む、請求項15に記載のコンピュータ・ベース・システム。
前記データ記憶システムは、データベース、データベース・ファーム、ハッシュ・テーブル、又は参照テーブルのうちの少なくとも1つを含む、請求項15に記載のコンピュータ・ベース・システム。
前記プロセッサによって、前記通信デバイス上で動作しているアプリケーションの、前記第2の種類の接続との互換性に少なくとも部分的に基づいて前記第2の種類の接続を選択するステップを更に含む、請求項19に記載の非一時的有形コンピュータ可読記憶媒体。
前記プロセッサによって、前記接続上で前記第2ウェブAPI要求を受け取ることに応答して前記接続をアクティブなメモリに切り替えるステップを更に含む、請求項23に記載の非一時的有形コンピュータ可読記憶媒体。
【発明を実施するための形態】
【0007】
[0012] 本明細書における例示的な実施形態の詳細な説明は、種々の実施形態を例示として示す添付図面(drawings and pictures)を参照する。これら種々の実施形態について、当業者が本開示を実施することを可能にする程度に十分詳細に説明するが、他の実施形態も実現できること、そして本開示の主旨および範囲から逸脱することなく論理的または機械的変更も行えることは理解されてしかるべきである。つまり、本明細書における詳細な説明は、限定ではなく、例示の目的に限って提示されることとする。例えば、方法またはプロセスの説明のいずれにおいても、列挙されるステップは、任意の順序で実行することができ、提示される順序に限定されるのではない。更に、機能またはステップの内任意のものを1つ以上の第三者に委託すること、または1つ以上の第三者によって実行することもできる。更に、単数形に言及するときはいずれも複数の実施形態も含むこととし、1つよりも多いコンポーネントに言及するときはいずれも、単数の実施形態(singular embodiment)も含むことができる。
【0008】
[0013] システム、方法、およびコンピュータ・プログラム製品を提供する。本明細書の詳細な説明では、「種々の実施形態」、「一実施形態」(one embodiment)、「実施形態」(an embodiment)、「実施形態例」(an example embodiment)等に言及するときは、記載される実施形態は、特定の特徴、構造、または特性を含むことができるが、あらゆる実施形態が必ずしもその特定の特徴、構造、または特性を含まなくてもよいことを示す。更に、このような語句は、必ずしも同じ実施形態を指すとは限らない。更に、特定の特徴、構造、または特性が実施形態と関連付けて説明されるとき、このような特徴、構造、または特性を他の実施形態と関連付けて実施することは、明示的に記載されているか否かには関係なく、当業者の知識の範囲内であることを具申する。説明を読んだ後には、関連技術(1つまたは複数)における当業者には、どのように本開示を代替実施形態において実現するかは明白であろう。
【0009】
[0014] 本明細書では、電子通信デバイス間における通信のためのシステムおよび方法について開示する。本明細書において使用する場合、「通信デバイス」とは他のデバイスとの通信が可能な任意のデバイスを指すことができる。例えばそして限定ではなく、通信デバイスとは、スマートフォン、PDA、ラップトップ、デスクトップ・コンピュータ、携帯電話、GPSデバイス、カー・ナビゲーション・システム、ワイヤレス・プリンタ、または任意の他のデバイスを指すことができる。
【0010】
[0015]
図1を参照すると、種々の実施形態による、永続接続を介したウェブ・アプリケーション・プログラミング・インターフェース(API)通信のためのシステム100が示されている。システム100は、第1通信デバイス102を含む。アプリケーション104が第1通信デバイス102上で実行している。また、システム100は第2通信デバイス108も含む。第2通信デバイス108は、第2アプリケーション106を実行することができる。第1通信デバイス102および第2通信デバイス108は、ネットワーク110を介して通信することができる。アプリケーション104は、データを第2アプリケーション106に供給すること、および/または第2アプリケーション106によって供給されるデータを使用することができる。同様に、第2アプリケーション106はデータをアプリケーション104に供給すること、および/またはアプリケーション104によって供給されるデータを使用することができる。これに関して、アプリケーション104および第2アプリケーション106は、互いに通信するためにウェブAPIを利用することができる。
【0011】
[0016] ウェブAPIの手順は、ネットワーク110を通じて第2通信デバイス108と通信する第1通信デバイス102によってコールすることができる。例えば、フォルダを第2通信デバイス108に要求する手順は、http://fakeurl.com/api/getfolderというようにすればよい。第2通信デバイス108(例えば、サーバ)がこの要求を第1通信デバイス102(例えば、クライアント)から受けると、この通信デバイスは、要求されたデータ、この場合フォルダ情報を、所定のフォーマット(例えば、JSONまたはXML)で第1通信デバイス102に供給することによって、応答することができる。
【0012】
[0017] 種々の実施形態において、アプリケーション104はウェブAPIを使用して第2アプリケーション106とインターフェースすることができる。第1通信デバイス102上で実行するアプリケーション104は、ネットワーク110を通じて、第2アプリケーション106を実行する第2通信デバイス108にAPI要求を送ることができる。第2アプリケーション106は、API要求を受けて処理する。API要求を受けたことに応答して、第2アプリケーション106は、受けた特定のAPI要求に対応する手順を実行することができる。
【0013】
[0018] API要求を送りそして受けるために、以下で更に詳しく説明するが、第1通信デバイス102と第2通信デバイス108との間に接続を確立する。第1通信デバイス102と第2通信デバイス108との間に永続接続を維持することによって、システム100は、API要求毎に接続を開きそして閉じるシステムよりも素早く、API要求を完了することができる。
【0014】
[0019]
図2を参照すると、種々の実施形態にしたがって、第1通信デバイス102によって送られ第2通信デバイス108によって受け取られたウェブAPI要求を処理するプロセス200が示されている。第1通信デバイス102上で実行するアプリケーション104は、データを供給するように、または第2通信デバイス108上で実行する第2アプリケーション106からデータを取得するようにプログラミングすることができる。第2通信デバイス108は、第1通信デバイス102から接続を受けることができる(ステップ202)。アプリケーション104は、例えば、サーバとして機能している第2通信デバイス108に接続要求を提出するウェブ・クライアントとしてもよい。要求を受けたことに応答して、第2通信デバイス108は第1通信デバイス102との接続を確立することができる(ステップ204)。一旦確立されると、接続を無期限に維持することができる。
【0015】
[0020] 種々の実施形態において、第2通信デバイス108は、データが送られているアクティブな接続と、当面アクティブ状態にあるアクティブな接続との間におけるコンテキスト切り替えによって、通常このようなデバイスにおいて本来存在する限度を超えた数のアクティブな接続を維持することができる。第2通信デバイス108は、アクティブ状態にあるアクティブな接続を、SQLデータベース、データベース・ファーム、ハッシュ・テーブル、または接続情報を格納する任意の他の手段のような、データ記憶システムに切り替えることができる。アクティブ状態にあるアクティブな接続についての情報が受信され格納されると、このアクティブな接続はストレージからアクティブなメモリに切り替わることができる。
【0016】
[0021] 本明細書において論ずるデータベースはいずれも、リレーショナル、階層、グラフィカル、またはオブジェクト指向構造および/または他の何らかのデータベース構成を含むことができる。このデータベースを実施するために使用することができ一般に利用されているデータベース製品には、IBM社(NY州、Armonk)によるDB2、Oracle社(CA州、Redwood Shores)から入手可能な種々のデータベース製品、Microsoft社(ワシントン州、Redmond)によるMicrosoft AccessまたはMicrosoft SQLServer、MySQL AB社(スエーデン、Uppsala)によるMySQL、または任意のその他の適したデータベース製品が含まれる。更に、データベースは、任意の適した方法で、例えば、データ・テーブルまたは参照テーブルとして編成することができる。各レコードは、1つのファイル、一連のファイル、リンクされた一連のデータ・フィールド、または任意の他のデータ構造であってもよい。ある種のデータの関連付けは、当技術分野において知られている技法または実施されている技法のような、任意の所望のデータ関連付け技法によって遂行することができる。例えば、関連付けは、手作業でまたは自動的に遂行することができる。自動関連付け技法は、例えば、データベース検索、データベース合併、GREP、AGREP、SQL、テーブルにおいてキー・フィールドを使用して検索を高速化すること、全てのテーブルおよびファイルにわたる順次検索、参照を簡略化するために既知の順序にしたがってファイルにおけるレコードを並び替えること等を含むことができる。関連付けステップは、データベース合併機能によって、例えば、予め選択されたデータベースまたはデータ・セクタにおける「キー・フィールド」を使用して遂行することができる。データベースの性能を最適化するために、種々のデータベース微調整ステップ(tuning step)も考えられる。例えば、インデックスのように頻繁に使用されるファイルは、入力/出力(「I/O」)ボトルネックを低減するために、別のファイル・システムに置くことができる。
【0017】
[0022] 尚、セキュリティ上の理由のために、本システムのデータベース、システム、デバイス、サーバ、または他のコンポーネントはいずれも、1つの場所または複数の場所においてその任意の組み合わせから成り、各データベースまたはシステムは、ファイアウォール、アクセス・コード、暗号化、解読、圧縮、解凍等のような、種々の適したセキュリティ機能(features)の内任意のものを含むことも、当業者には認められよう。
【0018】
[0023] 暗号化は、当技術分野において現在利用可能な技法、または利用可能になる可能性がある技法の内任意のものによって実行することができ、例えば、Twofish、RSA、El Gamal、Schorr署名、DSA、PGP、PKI、GPG(GnuPG)、ならびに対称および非対称暗号システムがある。
【0019】
[0024] 種々の実施形態において、第2通信デバイス108は、次いで、第1API要求を、確立された接続を介して受けることができる(ステップ206)。API要求を受けたことに応答して、第2通信デバイス108は、確立された接続を介して、データを第1通信デバイス102に戻す(ステップ208)。データを戻した後、第2通信デバイス108は、第1通信デバイス102との確立された接続を維持することができる(ステップ210)。この接続は、
図4を参照して以下で更に詳しく論ずる種々の方法を使用して、維持することができる。
【0020】
[0025] 種々の実施形態において、第2通信デバイス108は第2ウェブAPI要求を、確立された接続を介して受けることができる(ステップ212)。第2ウェブAPI要求は、第2通信デバイス108と第1通信デバイス102との間に追加の接続を確立することなく、受けることができる。第2ウェブAPI要求を受けたことに応答して、第2通信デバイス108は、確立された接続を介して、データを第1通信デバイス102に戻す(ステップ214)。
【0021】
[0026]
図3を参照すると、種々の実施形態にしたがって第1通信デバイス102から第2通信デバイス108にAPI要求を送るプロセス300が示されている。第1通信デバイス102上で実行するアプリケーション104は、第2通信デバイス108にAPI要求を送ることによって、データを供給するように、または第2通信デバイス108上で実行する第2アプリケーション106からデータを取得するようにプログラミングすることができる。第1通信デバイス102は、接続要求を第2通信デバイス108に送ることができる(ステップ302)。アプリケーション104は、例えば、接続要求を、サーバとして機能している第2通信デバイス108に提出するウェブ・クライアントとしてもよい。要求を受けたことに応答して、第2通信デバイス108は、第1通信デバイス102との接続を確立することができる(ステップ304)。次いで、第2通信デバイス108は、確立された接続を介して、第1API要求を送ることができる(ステップ306)。このAPI要求を受けたことに応答して、第1通信デバイス102は、確立された接続を介して、データを受信する(ステップ308)。データを受信した後、第1通信デバイス102は、第2通信デバイス108との確立された接続を維持することができる(ステップ310)。この接続は、
図4〜
図5を参照して以下で更に詳しく論ずる種々の方法を使用して維持することができる。
【0022】
[0027] 種々の実施形態において、第1通信デバイス102は、確立された接続を介して、第2ウェブAPI要求を送ることができる(ステップ312)。第2ウェブAPI要求は、第1通信デバイス102と第2通信デバイス108との間に追加の接続を確立することなく、送ることができる。第2ウェブAPI要求を送ったことに応答して、第1通信デバイス102は、確立された接続を介して、第2通信デバイス108からデータを受信する(ステップ314)。
【0023】
[0028] ウェブAPI要求を受ける方法(
図2)、およびウェブAPI要求を送る方法(
図3)は、例えば、ウェブサイトにほぼ瞬時の応答時間を与えるために使用することができる。第1通信デバイス102と第2通信デバイス108との間に接続が確立された後、後続のウェブAPIコールはもはや接続を確立するオーバーヘッドを課すことはない。つまり、ウェブAPIコールの結果は、レイテンシを低減して実行される。これに関して、永続接続を使用するウェブAPIコールは、多くの場合においてユーザには表面上は一瞬のように見えるであろう。
【0024】
[0029]
図4を参照すると、
図1の第1通信デバイス102と第2通信デバイス108との間に永続接続を確立するプロセス400が示されている。第2通信デバイス108は、ウェブ・クライアントとして動作することができる第1通信デバイス102と相互作用しつつ、サーバとして動作することができる。第2通信デバイス108は、第1通信デバイス102から接続要求を受けることができる(ステップ402)。この要求に応答して、第2通信デバイス108は、接続要求を行っている第1通信デバイス102上で実行しているアプリケーション104(例えば、ブラウザ)を識別することができる(ステップ404)。第2通信デバイス108は、例えば、デバイス識別子、オペレーティング・システム識別子、および/またはアプリケーション識別子を使用して、ブラウザを識別することができる。ブラウザ識別子およびデバイス識別子は、接続要求と共に供給することができる。例えば、第2通信デバイス108は、ブラウザの名称、ブラウザのバージョン、オペレーティング・システムの名称、およびオペレーティング・バージョンを接続要求と共に受信することができる。また、第2通信デバイス108の構成によっては、第2通信デバイス108が、接続要求を受けたことに応答して、ブラウザの名称、ブラウザのバージョン、オペレーティング・システムの名称、およびオペレーティング・バージョンを要求することもできる。
【0025】
[0030] 一旦第2通信デバイス108が識別情報を得たなら、第2通信デバイス108はこの識別情報をチェックして、確立すべき接続の種類を決定する。第2通信デバイス108は、識別されたブラウザがWebSocket接続をサポートするか否かチェックすることから開始することができる(ステップ406)。WebSocketとは、第1通信デバイス102と第2通信デバイス108との間に双方向通信を設けるためのプロトコルである。WebSocket接続は、WebSocket接続を処理するようにコード化されている最新のブラウザとしか互換性がないというおそれがある。WebSocketは永続接続のために完全な専用の解決策(clean, dedicated solution)を提供するが、使用中の多くのデバイスはWebSocket接続と互換性がない。このため、第1通信デバイス102上で実行するアプリケーション104がWebSocket接続と互換性がある場合、第2通信デバイス108は、第1通信デバイス102とWebSocketベースの永続接続を確立する(ステップ414)。第1通信デバイス102上で実行するアプリケーション104がWebSocket接続と互換性がない場合、第2通信デバイス108は他の互換性がある接続の種類をチェックすることができる。
【0026】
[0031] また、第2通信デバイス108は、識別されたブラウザがEventSource(即ち、サーバによって送られるイベント)接続をサポートするか否かについてもチェックすることができる(ステップ408)。EventSource接続も、サーバが通信をクライアントにプッシュできるようにすることによって、双方向通信を可能にする。EventSource接続は、WebSocket接続とは異なる多数の(a list of)ブラウザおよびデバイスと互換性があるかもしれない。このため、第1通信デバイス102上で実行するアプリケーション104がEventSourceと互換性がある場合、第2通信デバイス108は、第1通信デバイス102と、EventSourceベースの永続接続を確立する(ステップ416)。第1通信デバイス102上で実行するアプリケーション104がEventSource接続と互換性がない場合、第2通信デバイス108は他の互換性がある接続の種類をチェックすることができる。
【0027】
[0032] 次いで、第2通信デバイス108は、識別されたブラウザが永遠フレーム接続(forever frame connection)をサポートするか否かチェックすることができる(ステップ410)。永遠フレーム接続とは、サーバが通信をクライアントにプッシュできるようにすることによって、双方向通信を可能にする他の技法である。永遠フレーム接続は、ブラウザ内に隠れたフレーム・エレメントを作成し、この隠れたフレーム内部に接続を確立することによって、確立することができる。永遠フレーム接続は、WebSocketおよびEventSource接続とは異なる多数のブラウザおよびデバイスと互換性があるかもしれない。このため、第1通信デバイス102上で実行するアプリケーション104が永遠フレーミング(forever framing)と互換性がある場合、第2通信デバイス108は、第1通信デバイス102との永遠フレーム・ベースの永続接続を確立する(ステップ418)。第1通信デバイス上で実行するアプリケーション104が永遠フレーム接続と互換性がない場合、第2通信デバイス108は他の互換性がある接続の種類をチェックすることができる。
【0028】
[0033] 種々の実施形態において、第2通信デバイス108が永続接続を確立するためにどの接続技法を使用するか確認するために、追加の好ましい技法をチェックに組み込むこともできる。このために、第2通信デバイスは、識別されたブラウザが他の好ましい接続技法をサポートするか否かチェックすることができる(ステップ412)。第1通信デバイス102上で実行するアプリケーション104が好ましい接続技法と互換性がある場合、第2通信デバイス108は、この好ましい技法を使用して、第1通信デバイス102との永続接続を確立する(ステップ420)。第1通信デバイス102上で実行するアプリケーション104が好ましい接続技法と互換性がない場合、第2通信デバイス108はデフォルトの接続を使用することができる。
図4に示すデフォルトの接続は、ロング・ポーリング(long-polling)ベースの永続接続を確立するステップ(ステップ422)を含む。
【0029】
[0034]
図1を端的に参照すると、一旦第1通信デバイス102と第2通信デバイス108との間に永続接続が確立されたなら、アプリケーション104は、ネットワーク110を通じて第2アプリケーション106と、オーバーヘッドを低減して、通信することができる。
図5を参照すると、それぞれ、第1通信デバイス102および第2通信デバイス108上で実行するアプリケーション104および第2アプリケーション106の間において永続接続を使用するAPI通信システム500が、経時的に示されている。図示のように、タイムラインT上の位置が左から右に移るに連れて、時間は線形に過ぎる。アプリケーション104は、第2アプリケーション106への接続を求める要求502を送ることができる。アプリケーション104および第2アプリケーション106は、時間期間P
0が経過した後、第2アプリケーション106からアプリケーション104への通信504によって、接続プロセスを完了することができる。接続を確立するための典型的な時間期間P
0は、通信デバイス間のレイテンシに応じて、約50msから500msを要することもある。
【0030】
[0035] 接続が確立された後、第1通信デバイス102および第2通信デバイス108上で実行するアプリケーションは、ウェブAPIを使用して、確立された永続接続を介して通信することができる。アプリケーション104は、API要求506を第2アプリケーション106に送る。第2アプリケーション106は、API要求506に対応する機能をローカルに実行し、次いで対応するデータ508を戻すことができる。API要求506を送ってから対応するデータ508を戻すまでの時間期間P
1は、例えば、ほぼ12msにすることができる。対応するデータ508を返した後10ms以内に接続が閉鎖されるとすると、アプリケーション104と第2アプリケーション106との間における1回のAPI通信に対するオーバーヘッドは、P
0+P
1+10msとなる。しかしながら、永続接続が確立されているので(例えば、
図4に示すように)、この接続は、第2アプリケーション106が対応するデータ508を戻した後も開いたままとなっている。
【0031】
[0036] 次いで、アプリケーション106を実行する第2通信デバイス108は、情報510が入手可能になると、確立された永続接続を介して、情報510をアプリケーション104にプッシュすることができる。例えば、アプリケーション104は、第2アプリケーション106を介してチャット・メッセージを送信および受信するテキスト・ベースのチャット・アプリケーションであってもよい。情報510は、ユーザが、アプリケーション104に向けたチャット・メッセージをタイプ入力していることを示すのでもよい。第2アプリケーション106は、アプリケーション104が、ユーザがメッセージをタイプ入力していることの指示(indicator)を表示できるように、情報510をアプリケーション104に提供することができる。アプリケーション104が直接情報510を要求することなく、情報510はアプリケーション104に渡される。これに関して、API通信システム500は、他の場合ではアプリケーション104が情報510を受信するために発生するオーバーヘッドを解消することができる。何故なら、アプリケーション104は、情報510を要求するために繰り返し新たな接続を確立する(毎回接続オーバーヘッド時間期間P
0が発生する)のではなく、確立された永続接続において単に待ち受けていればよいからである。
【0032】
[0037] 次いで、アプリケーション104は、API通信システム500を、確立された永続接続と共に使用して、第2API要求512を第2アプリケーション106に送ることができる。アプリケーション104は、新たな接続を確立することなく(そして、接続を確立するためのオーバーヘッド時間期間P
0を発生することなく)、第2API要求512を送ることができる。第2アプリケーション106は、第2API要求512を処理し、時間期間P
2の後に結果514を戻すことができる。時間期間P
2は、例えば、約14msの期間を有するとしてもよい。この接続は、アプリケーション104と第2アプリケーション106との間において更に他の通信を待ちながら、期間P
4の間開いたままでいることができる。第2通信デバイス108は、情報を求める要求516をアプリケーション104に、確立された接続を介して送ることができる。これに関して、サーバは直接情報をクライアントに要求することによって、クライアントと通信することができる。次いで、クライアントは、期間P
3の後、要求された情報518をサーバに提供することができる。第2通信デバイス108によって要求された情報は、例えば、地理的位置または現地時間でもよい。永続接続(
図2〜
図4を参照して説明したような)は、APIを使用するサーバとクライアントとの間における典型的な通信に付随するオーバーヘッドを低減することによって、サーバとクライアントとの間にほぼ瞬時的な通信を可能にする。具体的には、永続接続は、所与の通信に対する時間オーバーヘッドを、少なくとも、接続を確立するために通例使用される時間期間P
0だけ低減することができる。
【0033】
[0038] 種々の実施形態において、本明細書において説明した方法は、本明細書において説明した種々の特定の機械を使用して実現される。当業者には直ちに認められるように、本明細書において説明した方法は、以下の特定の機械、および今後開発される機械を使用して、任意の適した組み合わせで実現することができる。更に、本開示から明確であるように、本明細書において説明した方法が一定の項目(article)に種々の変形をもたらす場合もある。
【0034】
[0039] 簡潔さのために、従来のデータ・ネットワーキング、アプリケーション開発、およびシステムの他の機能的態様(aspect)(ならびに、システムの個々の動作コンポーネントのコンポーネント)について、本明細書では詳細に説明しない場合もある。更に、本明細書に含まれる種々の図において示した接続線は、種々のエレメント間における例示的な機能関係および/または物理的結合を表すことを意図している。尚、実際のシステムにおいては、多くの代替または追加の機能関係または物理的接続が存在し得ることは注記してしかるべきである。
【0035】
[0040] 本明細書において論じた種々のシステム・コンポーネントは、以下の内1つ以上を含むことができる。ディジタル・データを処理するためのプロセッサを含むホスト・サーバまたは他のコンピューティング・システム。ディジタル・データを格納するためにプロセッサに結合されたメモリ。ディジタル・データを入力するためにプロセッサに結合された入力ディジタイザ。メモリ内に格納され、プロセッサによるディジタル・データの処理を指令するためにプロセッサによってアクセス可能なアプリケーション・プログラム。プロセッサによって処理されたディジタル・データから導き出された情報を表示するためにプロセッサおよびメモリに結合されたディスプレイ・デバイス。ならびに複数のデータベース。本明細書において使用される種々のデータベースは、接続データ、および/またはシステムの動作において有用な同様のデータを含むことができる。当業者には認められようが、ユーザ・コンピュータは、オペレーティング・システム(例えば、Windows NT、Windows 95/98/2000、Windows XP、Windows Vista、Windows 7、Windows 8、OS2、UNIX(登録商標)、Linux(登録商標)、Solaris、MacOS等)、ならびに通例コンピュータに付随する種々の従来からのサポート・ソフトウェアおよびドライバを含むことができる。
【0036】
[0041] 本システムあるいはその任意の部分(1つまたは複数)または機能(1つまたは複数)は、ハードウェア、ソフトウェア、またはその組み合わせを使用して実現することができ、更に1つ以上のコンピュータ・システムまたは他の処理システムにおいて実現することもできる。しかしながら、実施形態によって実行される操作は、多くの場合、人間の操作者によって実行される精神的動作(mental operation)と関連付けられることが一般的な、照合(matching)または選択というような用語で引用した。人間の操作者のそのような能力は、殆どの場合、本明細書において説明した動作のいずれにおいても必要ではなく、また望ましくもない。むしろ、これらの動作は機械動作とするとよい。種々の実施形態を実行するために有用な機械には、汎用ディジタル・コンピュータまたは同様のデバイスが含まれる。
【0037】
[0042] 実際、種々の実施形態において、実施形態は、本明細書において説明した機能を実行することができる1つ以上のコンピュータ・システムを対象とする。コンピュータ・システムは、1つ以上のプロセッサを含む。プロセッサは、通信インフラストラクチャ(例えば、通信バス、クロス・オーバー・バー、またはネットワーク)に接続される。種々のソフトウェアの実施形態は、この例示的なコンピュータ・システムに関して説明される。この説明を読んだ後には、他のコンピュータ・システムおよび/またはアーキテクチャを使用してどのように種々の実施形態を実現するのか、関連技術(1つまたは複数)における当業者には明白になるであろう。コンピュータ・システムは、グラフィクス、テキスト、およびその他のデータを、ディスプレイ・ユニット上における表示のために、通信インフラストラクチャから(または、図示しないフレーム・バッファから)転送するディスプレイ・インターフェースを含むことができる。
【0038】
[0043] また、コンピュータ・システムは、例えば、ランダム・アクセス・メモリ(RAM)のような主メモリも含み、更に副メモリも含むことができる。副メモリは、例えば、ハード・ディスク・ドライブ、および/またはフロッピ・ディスク・ドライブ、磁気テープ・ドライブ、光ディスク・ドライブ等を表すリムーバブル記憶デバイスを含むことができる。リムーバブル記憶デバイスは、周知の方法で、リムーバブル記憶ユニットから読み出し、および/またはリムーバブル記憶デバイスに書き込む。リムーバブル記憶ユニットは、フロッピ・ディスク、磁気テープ、光ディスク、ソリッド・ステート・ディスク等を表し、これらはリムーバブル記憶ドライブによって読み出され、そして書き込まれる。認められるであろうが、リムーバブル記憶ユニットは、コンピュータ・ソフトウェアおよび/またはデータを内部に格納した、コンピュータ使用可能記憶媒体を含む。
【0039】
[0044] 種々の実施形態において、副メモリは、コンピュータ・プログラムまたは他の命令をコンピュータ・システムにロードすることを可能にするために、他の同様のデバイスを含むことができる。このようなデバイスは、例えば、リムーバブル記憶ユニットおよびインターフェースを含むことができる。このようなものの例には、プログラム・カートリッジおよびカートリッジ・インターフェース(ビデオ・ゲーム・デバイスにおいて見られるもの等)、リムーバブル・メモリ・チップ(消去可能プログラマブル・リード・オンリー・メモリ(EPROM)またはプログラマブル・リード・オンリー・メモリ(PROM)等)および関連するソケット、ならびにソフトウェアおよびデータをリムーバブル記憶ユニットからコンピュータ・システムに転送することを可能にするその他のリムーバブル記憶ユニットおよびインターフェースを含むことができる。
【0040】
[0045] また、コンピュータ・システムは通信インターフェースも含むことができる。通信インターフェースは、ソフトウェアおよびデータをコンピュータ・システムと外部デバイスとの間で転送することを可能にする。通信インターフェースの例には、モデム、ネットワーク・インターフェース(イーサネット(登録商標)・カード等)、通信ポート、パーソナル・コンピュータ・メモリ・カード国際連合(PCMCIA)スロットおよびカード等を含むことができる。通信インターフェースを介して転送されるソフトウェアおよびデータは、信号の形態となる。信号は、電子、電磁、光、または通信インターフェースによって受信可能なその他の信号であってもよい。これらの信号は、通信路(例えば、チャネル)を通じて通信インターフェースに供給される。このチャネルは信号を搬送し、ワイヤ、ケーブル、光ファイバ、電話線、セルラ・リンク、高周波(RF)リンク、ワイヤレス、およびその他の通信チャネルを使用して実現することができる。
【0041】
[0046] 「コンピュータ・プログラム媒体」および「コンピュータ使用可能媒体」という用語は、一般に、リムーバブル記憶ドライブおよびハード・ディスク・ドライブ内にインストールされたハード・ディスクのような媒体を指すために使用される。これらのコンピュータ・プログラム製品はソフトウェアをコンピュータ・システムに供給する。
【0042】
[0047] コンピュータ・プログラム(コンピュータ制御ロジックとも呼ぶ)は、主メモリおよび/または副メモリに格納される。また、コンピュータ・プログラムは、通信インターフェースを介して受け取ることもできる。このようなコンピュータ・プログラムは、実行されると、コンピュータ・システムが本明細書において論じた機能(feature)を実行することを可能にする。具体的には、コンピュータ・プログラムは、実行されると、プロセッサが種々の実施形態の機能(feature)を実行することを可能にする。したがって、このようなコンピュータ・プログラムは、コンピュータ・システムのコントローラを表す。
【0043】
[0048] 種々の実施形態において、ソフトウェアは、コンピュータ・プログラム製品内に格納され、リムーバブル記憶ドライブ、ハード・ディスク・ドライブ、または通信インターフェースを使用してコンピュータ・システムにロードすることができる。制御ロジック(ソフトウェア)は、プロセッサによって実行されると、本明細書において説明した種々の実施形態の機能をプロセッサに実行させる。種々の実施形態において、特定用途集積回路(ASIC)のようなハードウェア・コンポーネント。本明細書において説明した機能を実行するようなハードウェアの状態機械の実現は、関連技術(1つまたは複数)における当業者には明白であろう。
【0044】
[0049] 種々の実施形態において、サーバはアプリケーション・サーバ(例えば、WEB SPHERE、WEB LOGIC、JBOSS)を含むことができる。種々の実施形態において、サーバはウェブ・サーバ(例えば、APACHE、IIS、GWS、SUN JAVA(登録商標) SYSTEM WEB SERVER)を含むことができる。
【0045】
[0050] 当業者には認められるであろうが、デバイスは、オペレーティング・システム、ならびに通例コンピュータに付随する種々の従来からのサポート・ソフトウェアおよびドライバを含むことができるが、そのように限定されるのではない。デバイスは、任意の適したパーソナル・コンピュータ、ネットワーク・コンピュータ、ワークステーション、パーソナル・ディジタル・アシスタント、セルラ・フォン、スマートフォン、ミニコンピュータ、メインフレーム等を含むことができるが、これらに限定されるのではない。デバイスは、ネットワークにアクセス可能な家庭環境または業務環境内に位置することができる。種々の実施形態において、アクセスはネットワークを通じて、または市販のウェブ・ブラウザ・ソフトウェア・パッケージによってインターネットを通じて行われる。デバイスは、セキュア・ソケット・レイヤ(SSL)およびトランスポート・レイヤ・セキュリティ(TLS)のような、セキュリティ・プロトコルを実装することができる。デバイスは、http、https、ftp、およびsftpを含む様々なアプリケーション・レイヤ・プロトコルを実装することができる。
【0046】
[0051] 種々の実施形態において、システム100のコンポーネント、モジュール、および/またはエンジンは、マイクロ・アプリケーションまたはマイクロ・アプリとして実装することができる。マイクロ・アプリは、通例、移動体オペレーティング・システムのコンテキストにおいてデプロイされ、例えば、Palm移動体オペレーティング・システム、Windows移動体オペレーティング・システム、Androidオペレーティング・システム、Apple iOS、Blackberryオペレーティング・システム等を含む。マイクロ・アプリは、もっと大きなオペレーティング・システムおよび関連するハードウェアのリソースを、種々のオペレーティング・システムおよびハードウェア・リソースの動作を統制する1組の所定の規則によって利用するように構成することができる。例えば、マイクロ・アプリが、移動体デバイスまたは移動体オペレーティング・システム以外のデバイスまたはネットワークと通信することを望む場合、マイクロ・アプリは、オペレーティング・システムの通信プロトコルおよび関連するデバイス・ハードウェアを、移動体オペレーティング・システムの所定の規則の下で利用することができる。更に、マイクロ・アプリがユーザからの入力を望む場合、マイクロ・アプリは、オペレーティング・システムに応答を要求するように構成することができ、オペレーティング・システムは、種々のハードウェア・コンポーネントを監視し、次いで検出された入力をハードウェアからマイクロ・アプリに伝達する。
【0047】
[0052] 「クラウド」または「クラウド・コンピューティング」は、管理の手間またはサービス・プロバイダの相互作用を最小限に抑えて、迅速にプロビジョニングおよび解放することができる構成変更可能なコンピューティング・リソースの共有プール(例えば、ネットワーク、サーバ、ストレージ、アプリケーション、およびサービス)への便利なオンデマンド型ネットワーク・アクセスを可能にするモデルを含む。クラウド・コンピューティングは、場所に依存しないコンピューティングを含むことができ、これによって共有サーバが、要求に応じて、リソース、ソフトウェア、およびデータをコンピュータおよびその他のデバイスに提供する。クラウド・コンピューティングに関するこれ以上の情報については、http://csrc.nist.gov/groups/SNS/cloud-computing/cloud-def-vl5.doc(最後に訪問したのは2011年2月4日である)におけるクラウド・コンピューティングのNIST(アメリカ国立標準技術研究所)の定義を参照のこと。この文書をここで引用したことにより、その内容全体が本願にも含まれるものとする。
【0048】
[0053] 本明細書において使用する場合、「送信する」は、電子データを1つのシステム・コンポーネントから他のものに送ることを含むことができる。加えて、本明細書において使用する場合、「データ」は、ディジタルまたは任意の他の形態としたコマンド、クエリー、ファイル、記憶用データ等のような包括的な情報(encompassing information)を含むことができる。
【0049】
[0054] 本システムは、ウェブ・サービス、ユーティリティ・コンピューティング(utility computing)、パーベイシブ・コンピューティングおよび個別化コンピューティング(pervasive and individualized computing)、セキュリティおよび識別に関する解決策(security and identity solutions)、自動コンピューティング、クラウド・コンピューティング、コモディティ・コンピューティング、モビリティおよびワイヤレス・ソリューション、オープン・ソース、生物計量、グリッド・コンピューティング、および/またはメッシュ・コンピューティングと関連付けた使用を想定している。
【0050】
[0055] 本明細書において論じたコンピュータは、ユーザによるアクセスが可能な、適したウェブサイトまたは他のインターネット・ベースのグラフィカル・ユーザ・インターフェースを設けることができる。種々の実施形態において、Microsoftインターネット情報サーバ(IIS)、Microsoftトランザクション・サーバ(MTS)、およびMicrosoft SQLサーバが、Microsoftオペレーティング・システム、Microsoft NTウェブ・サーバ・ソフトウェア、MicrosoftSQLサーバ・データベース・システム、およびMicrosoft商用サーバ(commerce Server)と共に使用される。加えて、AccessまたはMicrosoft SQLサーバ、Oracle、Sybase、Informix、MySQL、Interbase等のようなコンポーネントを、アクティブ・データ・オブジェクト(ADO)に準拠したデータベース管理システムを提供するために使用されてもよい。種々の実施形態において、Apacheウェブ・サーバが、7d[[[[[[[[[オペレーティング・システム、MySQLデータベース、ならびにPerl、PHP、および/またはPythonプログラミング言語と合わせて使用される。
【0051】
[0056] 本明細書において論じた通信、入力、記憶、データベース、または表示はいずれも、ウェブ・ページを有するウェブサイトを経由することによって、やりやすくすることができる。「ウェブ・ページ」という用語は、本明細書において使用する場合、ユーザと対話処理するために使用される可能性がある文書およびアプリケーションの種類を限定することは意図していない。例えば、典型的なウェブサイトは、標準的なHTML文書に加えて、種々の形式、Javaアプレット、JavaScript(登録商標)、アクティブ・サーバ・ページ(ASP)、共通ゲートウェイ・インターフェース・スクリプト(CGI)、拡張可能マークアップ言語(XML)、ダイナミックHTML、カスケード・スタイル・シート(CSS:cascading style sheets)、AJAX(非同期Javascipt And XML)、ヘルパー・アプリケーション、プラグイン等を含むことができる。サーバは、ウェブ・サーバから要求を受けるウェブ・サービスを含むことができ、この要求は、URL(http://yahoo.com/stockquotes/ge)およびIPアドレス(123.56.789.234)を含む。ウェブ・サーバは、適切なウェブ・ページを引き出し、このウェブ・ページのためのデータまたはアプリケーションをIPアドレスに送る。ウェブ・サービスとは、インターネットのような通信手段を介して他のアプリケーションと相互作用することができるアプリケーションである。ウェブ・サービスは、通例、XML、SOAP、AJAX、WSDL、およびUDDIのような標準またはプロトコルに基づく。ウェブ・サービス方法は、当技術分野では良く知られており、多くの標準的な書籍において扱われている(cover)。例えば、ALEX NGHIEM, IT WEB SERVICES: A ROADMAP FOR THE ENTERPRISE (ITウェブ・サービス:企業向けロードマップ)(2003)を参照のこと。この文献をここで引用したことにより、その内容が本願にも含まれるものとする。
【0052】
[0057] また、ブラウザ・ベースの文書内にデータを表示するためには多数の方法があることも、実行者(practitioner)は認めよう。データは、標準的なテキストとして表すことができ、または固定リスト、スクロール可能なリスト、ドロップ・ダウン・リスト、編集可能なテキスト・フィールド、固定テキスト・フィールド、ポップ・アップ・ウィンドウ等の内部に表示することができる。同様に、ウェブ・ページ内においてデータを修正するためには、例えば、キーボードを使用する自由なテキスト入力、メニュー項目の選択、チェック・ボックス、選択肢ボックス等のように、利用可能な多数の方法がある。
【0053】
[0058] 本明細書では、本システムおよび方法は、機能ブロック・コンポーネント、スクリーン・ショット、随意の選択、および種々の処理ステップに関して説明することができる。尚、このような機能ブロックは、指定された機能を実行するように構成された任意の数のハードウェアおよび/またはソフトウェア・コンポーネントによって実現できることは認められてしかるべきである。例えば、システムは種々の集積回路コンポーネント、例えば、メモリ・エレメント、処理エレメント、ロジック・エレメント、参照テーブル等を採用することができ、1つ以上のマイクロプロセッサまたは他の制御デバイスの制御の下で種々の機能を実行することができる。同様に、システムのソフトウェア・エレメントは、C、C++、C#、Java、JavaScript、VBScript、Macromedia Cold Fusion、COBOL、Microsoft Active Server Pages、アセンブリ、PERL、PHP、awk、Python、Visual Basic、SQL Stored Procedures、PL/SQL、任意のUNIXシェル・スクリプト、および拡張可能マークアップ言語(XML)のような、任意のプログラミングまたはスクリプティング言語によって実装することができ、種々のアルゴリズムは、データ構造、オブジェクト、プロセス、ルーチン、またはその他のプログラミング・エレメントの任意の組み合わせによって実現される。更に、システムは、データ送信、シグナリング、データ処理、ネットワーク制御等のために任意の数の従来の技法も採用できることも注記してしかるべきである。更にその上、システムは、JavaScript、VBScript等のようなクライアント側スクリプティング言語によるセキュリティ問題を検出または防止するために使用することができる。暗号およびネットワーク・セキュリティの基本的な導入については、以下の参考文献のいずれかを参照のこと。(1)John Wiley & Sonsによって出版された"Applied Cryptography: Protocols, Algorithms, And Source Code In C" by Bruce Schneier(ブルース・シュナイアーによる「応用暗号学:プロトコル、アルゴリズム、およびCによるソース・コード」)(第2版、1995)、(2)O'Reilly & Associatesによって出版された "Java Cryptography" by Jonathan Knudson(ジョナサン・ナドソンによる「Java暗号学」)(1998)、(3)Prentice Hallによって出版された "Cryptography & Network Security: Principles & Practice" by William Stallings(ウィリアム・ストーリングスによる「暗号学およびネットワーク・セキュリティ:原理と実際」)。これらの文献をここで引用したことにより、その内容が本願にも含まれるものとする。
【0054】
[0059] 当業者には認められるであろうが、本システムは、既存のシステムのカスタム化、アドオン製品(add-on product)、アップグレードされたソフトウェアを実行する処理装置、単独システム、分散型システム、方法、データ処理システム、データ処理デバイス、および/またはコンピュータ・プログラム製品として具体化することができる。したがって、システムまたはモジュールのいずれの部分であっても、コードを実行する処理装置、インターネット・ベースの実施形態、完全にハードウェアの実施形態、またはインターネット、ソフトウェア、およびハードウェアの態様を組み合わせた実施形態という形態を取ることができる。更に、本システムは、コンピュータ読み取り可能記憶媒体上のコンピュータ・プログラム製品という形態を取ることができ、この記憶媒体内にコンピュータ読み取り可能プログラム・コード手段が具体化されている。ハード・ディスク、CD−ROM、光記憶デバイス、磁気記憶デバイス、ソリッド・ステート記憶デバイス等を含む、任意の適したコンピュータ読み取り可能記憶媒体を利用することができる。
【0055】
[0060] 本明細書では、種々の実施形態による方法、装置(例えば、システム)、およびコンピュータ・プログラム製品のスクリーン・ショット、ブロック図、およびフローチャート図(flowchart illustration)を参照しながらシステムおよび方法について説明した。尚、ブロック図およびフローチャート図の各機能ブロック、ならびにブロック図およびフローチャート図における機能ブロックの組み合わせは、それぞれ、コンピュータ・プログラム命令によって実現できることは理解されよう。
【0056】
[0061] これらのコンピュータ・プログラム命令は、コンピュータまたは他のプログラマブル・データ処理装置上で実行する命令が、フローチャートの1つまたは複数のブロックにおいて指定される機能を実現する手段を形成するように、汎用コンピュータ、特殊目的コンピュータ、または機械を生成するための他のプログラマブル・データ処理装置にロードすることができる。これらのコンピュータ・プログラム命令は、コンピュータ読み取り可能メモリに格納することもでき、コンピュータ読み取り可能メモリ内に格納されている命令が、フローチャートの1つまたは複数のブロックにおいて指定される機能を実現する命令手段を含む製品を生成するように、コンピュータまたは他のプログラマブル・データ処理装置に、特定の方法で機能するように指令することができる。また、コンピュータ・プログラム命令をコンピュータまたは他のプログラマブル・データ処理装置にロードして、一連の動作ステップをコンピュータまたは他のプログラマブル装置上で実行させると、コンピュータまたは他のプログラマブル装置上で実行する命令がフローチャートの1つまたは複数のブロックにおいて指定される機能を実現するステップとなるように、コンピュータ実装プロセスを生成することもできる。
【0057】
[0062] したがって、ブロック図およびフローチャート図の機能ブロックは、指定された機能を実行する手段の組み合わせ、指定された機能を実行するステップの組み合わせ、および指定された機能を実行するプログラム命令手段をサポートする。また、ブロック図およびフローチャート図の各機能ブロック、ならびにブロック図およびフローチャート図における機能ブロックの組み合わせは、指定された機能またはステップを実行する特殊目的ハードウェア・ベースのコンピュータ・システム、または特殊目的ハードウェアおよびコンピュータ命令の適した組み合わせのいずれかによって実現できることも理解されよう。更に、プロセス・フローの図およびその説明は、ユーザ・ウィンドウ、ウェブ・ページ、ウェブサイト、ウェブ・フォーム(web form)、プロンプト等を参照することもできる。本明細書において図示され説明されたステップは、ウィンドウ、ウェブ・ページ、ウェブ・フォーム、ポップ・アップ・ウィンドウ、プロンプト等の使用を含む、任意の数の構成で成り立っても(comprise)よいことは、実行者には認められよう。更に、図示および説明した複数のステップは、1つのウェブ・ページおよび/またはウィンドウに組み入れることもできるが、わかりやすくするために略さずに記載した(expand)場合もあることも認められてしかるべきである。他の場合では、1つのプロセス・ステップとして図示および説明したステップは、複数のウェブ・ページおよび/またはウィンドウに分離することもできるが、簡潔にするために組み合わされた場合もある。
【0058】
[0063] 「非一時的な」という用語は、それ自体伝搬するだけの一時的信号を請求項の範囲から除去するという意味で理解されるのであり、それ自体伝搬するだけの一時的な信号ではない全ての標準的なコンピュータ読み取り可能媒体に対する権利を放棄するのではない。言い換えると、「非一時的なコンピュータ読み取り可能媒体」および「非一時的なコンピュータ読み取り可能記憶媒体」という用語の意味は、35U.S.C.§101の下において特許可能な主題の範囲に該当しないIn Re Nuijtenにおいて見られた様式の一時的コンピュータ読み取り可能媒体のみを除外すると解釈してしかるべきである。
【0059】
[0064] 本明細書では、具体的な実施形態に関して、便益、利点、および問題に対する解決策について説明した。しかしながら、これらの便益、利点、問題に対する解決策、および任意の便益、利点、または解決策を生ずるあるいは一層際立たせる可能性があるいずれのエレメントも、本開示の肝要な、必要な、または本質的な特徴あるいはエレメントであると解釈しないこととする。単数形になっているエレメントを引用するときは、明示的にそのように述べられているのでなければ、「1つのみ」を意味するのではなく「1つ以上」を意味することを意図している。更に、「A、B、およびCの内少なくとも1つ」または「A、B、またはCの内少なくとも1つ」と同様の語句が請求項または明細書において使用される場合、この語句は、実施形態にはAだけが存在するのでもよいこと、実施形態にはBだけが存在するのでもよいこと、実施形態にはCだけが存在するのでもよいこと、あるいは、エレメントA、B、およびCの任意の組み合わせが1つの実施形態において存在してもよいこと、例えば、AおよびB、AおよびC、BおよびC、またはAおよびBおよびCが存在してもよいことを意味することを意図している。
【0060】
[0065] 本開示は方法を含むが、これは、磁気または光メモリあるいは磁気または光ディスクのような有形コンピュータ読み取り可能担体上にコンピュータ・プログラム命令として具体化され得ることが考えられる。以上で説明した例示的な実施形態のエレメントの、当業者には周知である、全ての構造的、化学的、および機能的均等物は、ここで引用したことによって本明細書に明示的に含まれるものとし、本願の特許請求の範囲に包含されることを意図している。更に、デバイスまたは方法が、本開示によって解決されることが求められる各々の問題を指定する(address)ことや、本願の特許請求の範囲によって包含されることは必要でない。更にまた、本開示におけるエレメント、コンポーネント、または方法ステップはいずれも、これらのエレメント、コンポーネント、または方法ステップが明示的に特許請求の範囲において列挙されているか否かには関係なく、発明が開放されることを意図するのではない。本明細書における請求項のエレメントはいずれも、そのエレメントが「ための手段」(means for)という語句を使用して明示的に列挙されるのではなければ、35U.S.C.112(f)の規定にしたがって解釈されないこととする。本明細書において使用する場合、「備える」(comprises)、「備えている」(comprising)、またはそのあらゆる他の変形は、非排他的な包含が適用されることを意図しており、したがって、多数のエレメントを含むプロセス、方法、品目(article)、または装置がこれらのエレメントだけを含むのではなく、明示的に列挙されていない他のエレメントを含むことができ、あるいはこのようなプロセス、方法、品目、または装置に内在的な(inherent to)他のエレメントも含むことができる。