(57)【要約】  本開示は、クライアントデバイスを制御するための技法に関する。本技法は、クライアントデバイスから、ウェブリソースについての要求を受信することと、クライアントデバイスの１つまたは複数の機能性に関連する制御データを生成することと、クライアントデバイスの１つまたは複数の機能性を制御するために、クライアントデバイスにウェブリソースと制御データとを含む応答を送信することとを含み得る。【選択図】図２
2020529655.tif 000002
【特許請求の範囲】
【請求項１】
クライアントデバイスから、ウェブリソースについての第１の要求を受信することと、
前記第１の要求に基づいて、第２の要求を生成することと、
前記ウェブリソースについて、ウェブサーバに前記第２の要求を送信することと、
前記クライアントデバイスの１つまたは複数の機能性に関連する制御データを生成することと、
前記ウェブサーバから前記ウェブリソースを含む第１の応答を受信することと、
前記制御データと前記ウェブリソースとを含む第２の応答を生成することと、
前記クライアントデバイスの前記１つまたは複数の機能性を制御するために、前記クライアントデバイスに前記第２の応答を送信することと
を含む、コンピュータ実装制御方法。
【請求項２】
前記方法が、サーバプロキシによって実施され、
前記クライアントデバイスが、アプリとローカルプロキシとを含み、
前記第１の要求が、前記アプリによって受信されたウェブアクセス要求に基づいて、前記ローカルプロキシによって生成される、
請求項１に記載の方法。
【請求項３】
前記第１の要求と前記第２の要求とが、ＨＴＴＰ要求であり、
前記第１の応答と前記第２の応答とが、ＨＴＴＰ応答であり、
前記制御データが、前記第２の応答の１つまたは複数のヘッダ中に含まれる、
請求項２に記載の方法。
【請求項４】
前記１つまたは複数の機能性が、前記アプリに関連する、請求項２に記載の方法。
【請求項５】
前記制御データが、前記アプリ上にウェブページを表示するための設定、前記アプリを用いて検索を実施するための設定、または前記アプリのユーザインターフェース設定のうちの少なくとも１つを含む情報を含む、請求項４に記載の方法。
【請求項６】
前記１つまたは複数の機能性が、前記ローカルプロキシに関連する、請求項２に記載の方法。
【請求項７】
前記第１の要求が、前記ローカルプロキシと前記サーバプロキシとの間に確立された第１のＴＣＰ接続を通して前記ローカルプロキシから受信され、
前記制御データが、前記ウェブサーバとの第２のＴＣＰ接続を確立することと、前記第２のＴＣＰ接続を通して前記ウェブサーバに第３の要求を送信することとを行うように前記ローカルプロキシを制御する、請求項６に記載の方法。
【請求項８】
前記制御データが、アクティブ化可能インターフェース要素を提供するように前記アプリを制御し、
前記制御データが、前記第２のＴＣＰ接続を確立することと、前記アクティブ化可能インターフェース要素がアクティブ化されることを検出することに基づいて、前記第３の要求を送信することとを行うように前記ローカルプロキシを制御する、請求項７に記載の方法。
【請求項９】
前記制御データが、前記第１の要求に基づいて生成される、請求項１に記載の方法。
【請求項１０】
前記制御データが、シグネチャで暗号化される、請求項１に記載の方法。
【請求項１１】
１つまたは複数のプロセッサと、
命令を記憶する非一時的コンピュータ可読媒体と
を備えるシステムであって、前記命令が、前記１つまたは複数のプロセッサによって実行されたとき、前記１つまたは複数のプロセッサに、
クライアントデバイスから、ウェブリソースについての第１の要求を受信することと、
前記第１の要求に基づいて、第２の要求を生成することと、
前記ウェブリソースについて、ウェブサーバに前記第２の要求を送信することと、
前記クライアントデバイスの１つまたは複数の機能性に関連する制御データを生成することと、
前記ウェブサーバから前記ウェブリソースを含む第１の応答を受信することと、
前記制御データと前記ウェブリソースとを含む第２の応答を生成することと、
前記クライアントデバイスの前記１つまたは複数の機能性を制御するために、前記クライアントデバイスに前記第２の応答を送信することと
を含む動作を実施させる、
システム。
【請求項１２】
前記システムが、サーバプロキシの一部であり、
前記クライアントデバイスが、アプリとローカルプロキシとを含み、
前記第１の要求が、前記アプリによって受信されたウェブアクセス要求に基づいて、前記ローカルプロキシによって生成される、
請求項１１に記載のシステム。
【請求項１３】
前記第１の要求と前記第２の要求とが、ＨＴＴＰ要求であり、
前記第１の応答と前記第２の応答とが、ＨＴＴＰ応答であり、
前記制御データが、前記第２の応答の１つまたは複数のヘッダ中に含まれる、
請求項１２に記載のシステム。
【請求項１４】
前記１つまたは複数の機能性が、前記アプリに関連する、請求項１２に記載のシステム。
【請求項１５】
前記制御データが、前記アプリ上にウェブページを表示するための設定、前記アプリを用いて検索を実施するための設定、または前記アプリのユーザインターフェース設定のうちの少なくとも１つを含む情報を含む、請求項１４に記載のシステム。
【請求項１６】
前記１つまたは複数の機能性が、前記ローカルプロキシに関連する、請求項１２に記載のシステム。
【請求項１７】
前記第１の要求が、前記ローカルプロキシと前記サーバプロキシとの間に確立された第１のＴＣＰ接続を通して前記ローカルプロキシから受信され、
前記制御データが、前記ウェブサーバとの第２のＴＣＰ接続を確立することと、前記第２のＴＣＰ接続を通して前記ウェブサーバに第３の要求を送信することとを行うように前記ローカルプロキシを制御する、請求項１６に記載のシステム。
【請求項１８】
前記制御データが、アクティブ化可能インターフェース要素を提供するように前記アプリを制御し、
前記制御データが、前記第２のＴＣＰ接続を確立することと、前記アクティブ化可能インターフェース要素がアクティブ化されることを検出することに基づいて、前記第３の要求を送信することとを行うように前記ローカルプロキシを制御する、請求項１７に記載のシステム。
【請求項１９】
前記制御データが、前記第１の要求に基づいて生成される、請求項１１に記載のシステム。
【請求項２０】
１つまたは複数のプロセッサによって実行可能な複数の命令を記憶する非一時的コンピュータ可読記憶媒体であって、前記複数の命令が、前記１つまたは複数のプロセッサによって実行されたとき、前記１つまたは複数のプロセッサに、
クライアントデバイスから、ウェブリソースについての第１の要求を受信することと、
前記第１の要求に基づいて、第２の要求を生成することと、
前記ウェブリソースについて、ウェブサーバに前記第２の要求を送信することと、
前記クライアントデバイスの１つまたは複数の機能性に関連する制御データを生成することと、
前記ウェブサーバから前記ウェブリソースを含む第１の応答を受信することと、
前記制御データと前記ウェブリソースとを含む第２の応答を生成することと、
前記クライアントデバイスの前記１つまたは複数の機能性を制御するために、前記クライアントデバイスに前記第２の応答を送信することと
を行わせる、
非一時的コンピュータ可読記憶媒体。
【請求項２１】
クライアントデバイスから、ウェブリソースについての第１の要求を受信することと、
前記第１の要求に基づいて、第２の要求を生成することと、
前記ウェブリソースについて、ウェブサーバに前記第２の要求を送信することと、
前記クライアントデバイスの１つまたは複数の機能性に関連する制御データを生成することと、
前記ウェブサーバから前記ウェブリソースを含む第１の応答を受信することと、
前記制御データと前記ウェブリソースとを含む第２の応答を生成することと、
前記クライアントデバイスの前記１つまたは複数の機能性を制御するために、前記クライアントデバイスに前記第２の応答を送信することと
を含む、コンピュータ実装制御方法。
【請求項２２】
前記方法が、サーバプロキシによって実施され、
前記クライアントデバイスが、アプリとローカルプロキシとを含み、
前記第１の要求が、前記アプリによって受信されたウェブアクセス要求に基づいて、前記ローカルプロキシによって生成される、
請求項２１に記載の方法。
【請求項２３】
前記第１の要求と前記第２の要求とが、ＨＴＴＰ要求であり、
前記第１の応答と前記第２の応答とが、ＨＴＴＰ応答であり、
前記制御データが、前記第２の応答の１つまたは複数のヘッダ中に含まれる、
請求項２２に記載の方法。
【請求項２４】
前記１つまたは複数の機能性が、前記アプリに関連し、
随意に、前記制御データが、前記アプリ上にウェブページを表示するための設定、前記アプリを用いて検索を実施するための設定、または前記アプリのユーザインターフェース設定のうちの少なくとも１つを含む情報を含む、請求項２２または２３に記載の方法。
【請求項２５】
前記１つまたは複数の機能性が、前記ローカルプロキシに関連し、
随意に、前記第１の要求が、前記ローカルプロキシと前記サーバプロキシとの間に確立された第１のＴＣＰ接続を通して前記ローカルプロキシから受信され、
前記制御データが、前記ウェブサーバとの第２のＴＣＰ接続を確立することと、前記第２のＴＣＰ接続を通して前記ウェブサーバに第３の要求を送信することとを行うように前記ローカルプロキシを制御し、および／または
随意に、前記制御データが、アクティブ化可能インターフェース要素を提供するように前記アプリを制御し、
前記制御データが、前記第２のＴＣＰ接続を確立することと、前記アクティブ化可能インターフェース要素がアクティブ化されることを検出することに基づいて、前記第３の要求を送信することとを行うように前記ローカルプロキシを制御する、請求項２２から２４のいずれか一項に記載の方法。
【請求項２６】
前記制御データが、前記第１の要求に基づいて生成される、請求項２１から２５のいずれか一項に記載の方法。
【請求項２７】
前記制御データが、シグネチャで暗号化される、請求項２１から２６のいずれか一項に記載の方法。
【請求項２８】
１つまたは複数のプロセッサと、
命令を記憶する非一時的コンピュータ可読媒体と
を備えるシステムであって、前記命令が、前記１つまたは複数のプロセッサによって実行されたとき、前記１つまたは複数のプロセッサに、
クライアントデバイスから、ウェブリソースについての第１の要求を受信することと、
前記第１の要求に基づいて、第２の要求を生成することと、
前記ウェブリソースについて、ウェブサーバに前記第２の要求を送信することと、
前記クライアントデバイスの１つまたは複数の機能性に関連する制御データを生成することと、
前記ウェブサーバから前記ウェブリソースを含む第１の応答を受信することと、
前記制御データと前記ウェブリソースとを含む第２の応答を生成することと、
前記クライアントデバイスの前記１つまたは複数の機能性を制御するために、前記クライアントデバイスに前記第２の応答を送信することと
を含む動作を実施させる、
システム。
【請求項２９】
前記システムが、サーバプロキシの一部であり、
前記クライアントデバイスが、アプリとローカルプロキシとを含み、
前記第１の要求が、前記アプリによって受信されたウェブアクセス要求に基づいて、前記ローカルプロキシによって生成される、
請求項２８に記載のシステム。
【請求項３０】
前記第１の要求と前記第２の要求とが、ＨＴＴＰ要求であり、
前記第１の応答と前記第２の応答とが、ＨＴＴＰ応答であり、
前記制御データが、前記第２の応答の１つまたは複数のヘッダ中に含まれる、
請求項２９に記載のシステム。
【請求項３１】
前記１つまたは複数の機能性が、前記アプリに関連し、
随意に、前記制御データが、前記アプリ上にウェブページを表示するための設定、前記アプリを用いて検索を実施するための設定、または前記アプリのユーザインターフェース設定のうちの少なくとも１つを含む情報を含む、請求項２９または３０に記載のシステム。
【請求項３２】
前記１つまたは複数の機能性が、前記ローカルプロキシに関連し、
随意に、前記第１の要求が、前記ローカルプロキシと前記サーバプロキシとの間に確立された第１のＴＣＰ接続を通して前記ローカルプロキシから受信され、
前記制御データが、前記ウェブサーバとの第２のＴＣＰ接続を確立することと、前記第２のＴＣＰ接続を通して前記ウェブサーバに第３の要求を送信することとを行うように前記ローカルプロキシを制御し、および／または
随意に、前記制御データが、アクティブ化可能インターフェース要素を提供するように前記アプリを制御し、
前記制御データが、前記第２のＴＣＰ接続を確立することと、前記アクティブ化可能インターフェース要素がアクティブ化されることを検出することに基づいて、前記第３の要求を送信することとを行うように前記ローカルプロキシを制御する、請求項２９から３１のいずれか一項に記載のシステム。
【請求項３３】
前記制御データが、前記第１の要求に基づいて生成される、請求項２８から３２のいずれか一項に記載のシステム。
【請求項３４】
１つまたは複数のプロセッサによって実行可能な複数の命令を記憶する非一時的コンピュータ可読記憶媒体であって、前記複数の命令が、前記１つまたは複数のプロセッサによって実行されたとき、前記１つまたは複数のプロセッサに、
クライアントデバイスから、ウェブリソースについての第１の要求を受信することと、
前記第１の要求に基づいて、第２の要求を生成することと、
前記ウェブリソースについて、ウェブサーバに前記第２の要求を送信することと、
前記クライアントデバイスの１つまたは複数の機能性に関連する制御データを生成することと、
前記ウェブサーバから前記ウェブリソースを含む第１の応答を受信することと、
前記制御データと前記ウェブリソースとを含む第２の応答を生成することと、
前記クライアントデバイスの前記１つまたは複数の機能性を制御するために、前記クライアントデバイスに前記第２の応答を送信することと
を行わせる、
非一時的コンピュータ可読記憶媒体。
【発明の詳細な説明】
【背景技術】
【０００１】
コンピューティングデバイスの遠隔制御は、一般に、制御データを搬送するための新しいまたは追加の通信能力の使用を必要とする。たとえば、コンピューティングデバイス（たとえば、コンピュータ、スマートフォンなど）が、機能性のセットを提供するように設定され得る。機能性は、コンピューティングデバイス上で動作するソフトウェアアプリケーションによって、および／またはコンピューティングデバイスのハードウェア構成要素によって提供され得る。設定は、設定の対象に関連する制御データに基づいて実施され得る。制御データは、たとえば、ソフトウェアパッチ、ソフトウェアアプリケーションに提供されるべきパラメータのセット、ハードウェアレジスタに記憶されるべき値のセットなどであり得る。
【０００２】
データネットワークでは、コンピューティングデバイスは、遠隔設定プロセスにおいて別のデバイス（たとえば、サーバ）から制御データを受信し得る。設定プロセスを始動するために、コンピューティングデバイスは、更新または追加されるべきターゲット機能性と、ターゲット機能性のための制御データとを決定する。コンピューティングデバイスは、次いで、（たとえば、伝送制御プロトコル（ＴＣＰ）に基づいて）サーバとのクライアントサーバ通信チャネルを確立し、次いで、制御データについての要求を、通信チャネルを介してサーバに送信することができる。サーバは、要求を処理し、要求された制御データを含む応答を、通信チャネルを介してコンピューティングデバイスに送信することができる。コンピューティングデバイスは、次いで、応答が、要求された制御データを含むことを検証し、次いで、制御データに基づいてターゲット機能性を更新する。
【０００３】
この構成ではいくつかの欠点がある。たとえば、通信チャネルの管理、ならびに制御データを取得するための要求および応答が、設定プロセスの複雑さを増加させ、より多くのコンピューティングリソースを必要とする。その上、これらの要求および応答の送信はまた、かなりの量のネットワーク帯域幅を消費し、ネットワークインフラストラクチャの追加の負担をもたらし得る。
【発明の概要】
【０００４】
本開示は、クライアントデバイスを制御するための技法に関する。より詳細には、本開示のいくつかの態様では、コンピュータ実装制御方法が提供される。本方法は、クライアントデバイスから、ウェブリソースについての第１の要求を受信することと、第１の要求に基づいて、第２の要求を生成することと、ウェブリソースについて、ウェブサーバに第２の要求を送信することと、クライアントデバイスの１つまたは複数の機能性に関連する制御データを生成することと、ウェブサーバからウェブリソースを含む第１の応答を受信することと、制御データとウェブリソースとを含む第２の応答を生成することと、クライアントデバイスの１つまたは複数の機能性を制御するために、クライアントデバイスに第２の応答を送信することとを含み得る。
【０００５】
本コンピュータ実装方法のいくつかの実施形態は、サーバプロキシによって実施され得る。いくつかの実施形態では、クライアントデバイスは、アプリとローカルプロキシとを含み得、第１の要求は、アプリによって受信されたウェブアクセス要求に基づいて、ローカルプロキシによって生成され得る。
【０００６】
本開示のいくつかの実施形態によれば、第１の要求と第２の要求とは、ＨＴＴＰ要求であり得、第１の応答と第２の応答とは、ＨＴＴＰ応答であり得、制御データは、第２の応答の１つまたは複数のヘッダ中に含まれ得る。
【０００７】
本開示のいくつかの実施形態によれば、１つまたは複数の機能性は、アプリに関連し得る。いくつかの実施形態では、制御データは、アプリ上にウェブページを表示するための設定、アプリを用いて検索を実施するための設定、またはアプリのユーザインターフェース設定のうちの少なくとも１つを含む情報を含み得る。
【０００８】
本開示のいくつかの実施形態によれば、１つまたは複数の機能性は、ローカルプロキシに関連し得る。いくつかの実施形態では、第１の要求は、ローカルプロキシとサーバプロキシとの間に確立された第１のＴＣＰ接続を通してローカルプロキシから受信され得、制御データは、ウェブサーバとの第２のＴＣＰ接続を確立することと、第２のＴＣＰ接続を通してウェブサーバに第３の要求を送信することとを行うようにローカルプロキシを制御し得る。いくつかの実施形態では、制御データは、アクティブ化可能インターフェース要素を提供するようにアプリを制御し得、制御データは、第２のＴＣＰ接続を確立することと、アクティブ化可能インターフェース要素がアクティブ化されることを検出することに基づいて、第３の要求を送信することとを行うようにローカルプロキシを制御し得る。
【０００９】
いくつかの実施形態によれば、制御データは、第１の要求に基づいて生成され得る。いくつかの実施形態では、制御データは、シグネチャで暗号化され得る。
【００１０】
本開示のいくつかの実施形態によれば、システムが提供される。本システムは、１つまたは複数のプロセッサと、命令を記憶する非一時的コンピュータ可読媒体とを含み得、命令は、１つまたは複数のプロセッサによって実行されたとき、１つまたは複数のプロセッサに、クライアントデバイスから、ウェブリソースについての第１の要求を受信することと、第１の要求に基づいて、第２の要求を生成することと、ウェブリソースについて、ウェブサーバに第２の要求を送信することと、クライアントデバイスの１つまたは複数の機能性に関連する制御データを生成することと、ウェブサーバからウェブリソースを含む第１の応答を受信することと、制御データとウェブリソースとを含む第２の応答を生成することと、クライアントデバイスの１つまたは複数の機能性を制御するために、クライアントデバイスに第２の応答を送信することとを含む動作を実施させる。
【００１１】
本開示のいくつかの実施形態によれば、本システムは、サーバプロキシの一部であり得る。クライアントデバイスは、アプリとローカルプロキシとを含み得、第１の要求は、アプリによって受信されたウェブアクセス要求に基づいて、ローカルプロキシによって生成され得る。
【００１２】
本開示のいくつかの実施形態によれば、第１の要求と第２の要求とは、ＨＴＴＰ要求であり得、第１の応答と第２の応答とは、ＨＴＴＰ応答であり得、制御データは、第２の応答の１つまたは複数のヘッダ中に含まれ得る。
【００１３】
本開示のいくつかの実施形態によれば、１つまたは複数の機能性は、アプリに関連し得る。いくつかの実施形態では、制御データは、アプリ上にウェブページを表示するための設定、アプリを用いて検索を実施するための設定、またはアプリのユーザインターフェース設定のうちの少なくとも１つを含む情報を含み得る。
【００１４】
本開示のいくつかの実施形態によれば、１つまたは複数の機能性は、ローカルプロキシに関連し得る。いくつかの実施形態では、第１の要求は、ローカルプロキシとサーバプロキシとの間に確立された第１のＴＣＰ接続を通してローカルプロキシから受信され得、制御データは、ウェブサーバとの第２のＴＣＰ接続を確立することと、第２のＴＣＰ接続を通してウェブサーバに第３の要求を送信することとを行うようにローカルプロキシを制御し得る。いくつかの実施形態では、制御データは、アクティブ化可能インターフェース要素を提供するようにアプリを制御し得、制御データは、第２のＴＣＰ接続を確立することと、アクティブ化可能インターフェース要素がアクティブ化されることを検出することに基づいて、第３の要求を送信することとを行うようにローカルプロキシを制御し得る。
【００１５】
本開示のいくつかの実施形態によれば、制御データは、第１の要求に基づいて生成され得る。
【００１６】
本開示のいくつかの実施形態では、非一時的コンピュータ可読記憶媒体が提供される。本非一時的コンピュータ可読記憶媒体は、１つまたは複数のプロセッサによって実行可能な複数の命令を記憶し得る。複数の命令は、１つまたは複数のプロセッサによって実行されたとき、１つまたは複数のプロセッサに、クライアントデバイスから、ウェブリソースについての第１の要求を受信することと、第１の要求に基づいて第２の要求を生成することと、ウェブリソースについて、ウェブサーバに第２の要求を送信することと、クライアントデバイスの１つまたは複数の機能性に関連する制御データを生成することと、ウェブサーバからウェブリソースを含む第１の応答を受信することと、制御データとウェブリソースとを含む第２の応答を生成することと、クライアントデバイスの１つまたは複数の機能性を制御するために、クライアントデバイスに第２の応答を送信することとを行わせ得る。
【００１７】
本開示のいくつかの態様では、コンピュータ実装制御方法が提供される。本コンピュータ実装制御方法は、クライアントデバイスから、ウェブリソースについての第１の要求を受信することと、第１の要求に基づいて、第２の要求を生成することと、ウェブリソースについて、ウェブサーバに第２の要求を送信することと、クライアントデバイスの１つまたは複数の機能性に関連する制御データを生成することと、ウェブサーバからウェブリソースを含む第１の応答を受信することと、制御データとウェブリソースとを含む第２の応答を生成することと、クライアントデバイスの１つまたは複数の機能性を制御するために、クライアントデバイスに第２の応答を送信することとを含み得る。
【００１８】
本コンピュータ実装方法のいくつかの実施形態は、サーバプロキシによって実施され得る。いくつかの実施形態では、クライアントデバイスは、アプリとローカルプロキシとを含み得、第１の要求は、アプリによって受信されたウェブアクセス要求に基づいて、ローカルプロキシによって生成され得る。いくつかの実施形態では、１つまたは複数の機能性は、アプリに関連し得る。いくつかの実施形態では、１つまたは複数の機能性は、ローカルプロキシに関連し得る。
【００１９】
本開示のいくつかの実施形態によれば、第１の要求と第２の要求とは、ＨＴＴＰ要求であり得、第１の応答と第２の応答とは、ＨＴＴＰ応答であり得、制御データは、第２の応答の１つまたは複数のヘッダ中に含まれ得る。
【００２０】
本開示のいくつかの実施形態によれば、１つまたは複数の機能性は、アプリに関連し得る。随意に、制御データは、アプリ上にウェブページを表示するための設定、アプリを用いて検索を実施するための設定、またはアプリのユーザインターフェース設定のうちの少なくとも１つを含む情報を含む。
【００２１】
本開示のいくつかの実施形態によれば、１つまたは複数の機能性は、ローカルプロキシに関連し得る。随意に、第１の要求は、ローカルプロキシとサーバプロキシとの間に確立された第１のＴＣＰ接続を通してローカルプロキシから受信され、制御データは、ウェブサーバとの第２のＴＣＰ接続を確立することと、第２のＴＣＰ接続を通してウェブサーバに第３の要求を送信することとを行うようにローカルプロキシを制御し得る。随意に、制御データは、アクティブ化可能インターフェース要素を提供するようにアプリを制御し得、制御データは、第２のＴＣＰ接続を確立することと、アクティブ化可能インターフェース要素がアクティブ化されることを検出することに基づいて、第３の要求を送信することとを行うようにローカルプロキシを制御し得る。
【００２２】
本開示のいくつかの実施形態によれば、制御データは、第１の要求に基づいて生成され得る。いくつかの実施形態では、制御データは、シグネチャで暗号化され得る。
【００２３】
本開示のいくつかの実施形態によれば、システムが提供される。本システムは、１つまたは複数のプロセッサと、命令を記憶する非一時的コンピュータ可読媒体とを含み得、命令は、１つまたは複数のプロセッサによって実行されたとき、１つまたは複数のプロセッサに、クライアントデバイスから、ウェブリソースについての第１の要求を受信することと、第１の要求に基づいて、第２の要求を生成することと、ウェブリソースについて、ウェブサーバに第２の要求を送信することと、クライアントデバイスの１つまたは複数の機能性に関連する制御データを生成することと、ウェブサーバからウェブリソースを含む第１の応答を受信することと、制御データとウェブリソースとを含む第２の応答を生成することと、クライアントデバイスの１つまたは複数の機能性を制御するために、クライアントデバイスに第２の応答を送信することとを含む動作を実施させる。
【００２４】
本開示のいくつかの実施形態によれば、本システムは、サーバプロキシの一部であり得る。クライアントデバイスは、アプリとローカルプロキシとを含み得、第１の要求は、アプリによって受信されたウェブアクセス要求に基づいて、ローカルプロキシによって生成され得る。
【００２５】
本開示のいくつかの実施形態によれば、第１の要求と第２の要求とは、ＨＴＴＰ要求であり得、第１の応答と第２の応答とは、ＨＴＴＰ応答であり得、制御データは、第２の応答の１つまたは複数のヘッダ中に含まれ得る。
【００２６】
本開示のいくつかの実施形態によれば、１つまたは複数の機能性は、アプリに関連し得る。随意に、制御データは、アプリ上にウェブページを表示するための設定、アプリを用いて検索を実施するための設定、またはアプリのユーザインターフェース設定のうちの少なくとも１つを含む情報を含み得る。
【００２７】
本開示のいくつかの実施形態によれば、１つまたは複数の機能性は、ローカルプロキシに関連し得る。随意に、第１の要求は、ローカルプロキシとサーバプロキシとの間に確立された第１のＴＣＰ接続を通してローカルプロキシから受信され得、制御データは、ウェブサーバとの第２のＴＣＰ接続を確立することと、第２のＴＣＰ接続を通してウェブサーバに第３の要求を送信することとを行うようにローカルプロキシを制御し得る。随意に、制御データは、アクティブ化可能インターフェース要素を提供するようにアプリを制御し得、制御データは、第２のＴＣＰ接続を確立することと、アクティブ化可能インターフェース要素がアクティブ化されることを検出することに基づいて、第３の要求を送信することとを行うようにローカルプロキシを制御し得る。
【００２８】
本開示のいくつかの実施形態によれば、制御データは、第１の要求に基づいて生成され得る。
【００２９】
いくつかの実施形態によれば、１つまたは複数のコンピュータ可読非一時的記憶媒体は、ソフトウェアを具現し得、ソフトウェアは、実行されたとき、開示される実施形態による方法を実施するように動作可能である。
【００３０】
いくつかの実施形態によれば、システムは、１つまたは複数のプロセッサと、プロセッサに結合され、プロセッサによって実行可能な命令を備える少なくとも１つのメモリとを備え得、プロセッサは、命令を実行したとき、開示される実施形態による方法を実施するように動作可能である。
【００３１】
いくつかの実施形態によれば、好ましくはコンピュータ可読非一時的記憶媒体を備えるコンピュータプログラム製品は、データ処理システム上で実行されたとき、開示される実施形態による方法を実施するように動作可能であり得る。
【００３２】
以下の図を参照しながら、例示的な実施形態が以下で詳細に説明される。
【図面の簡単な説明】
【００３３】
【図１】コンピューティングデバイス上にインストールされたソフトウェアアプリケーションを設定することの一例を示す図である。
【図２】本開示のいくつかの態様による、データネットワークシステムの簡略ブロック図である。
【図３】本開示のいくつかの態様による、制御データを含むＨＴＴＰ応答の一例の簡略ブロック図である。
【図４】本開示のいくつかの態様による、設定を異なる制御データ値にマッピングする例示的なマッピングテーブルの簡略ブロック図である。
【図５】本開示のいくつかの態様による、制御データの送信のためのサーバプロキシの一例の簡略ブロック図である。
【図６】本開示のいくつかの態様による、制御データをクライアントデバイスに提供するための例示的な方法を示す簡略フローチャートである。
【図７】本明細書で開示される例のうちのいくつかを実装するための例示的なコンピューティングシステムの簡略ブロック図である。
【発明を実施するための形態】
【００３４】
Ｉ．コンピューティングデバイスの遠隔設定
コンピューティングデバイス（たとえば、コンピュータ、スマートフォンなど）が、機能性のセットを提供するように設定され得る。機能性は、コンピューティングデバイス上にインストールされたソフトウェアアプリケーションによって、および／またはコンピューティングデバイスのハードウェア構成要素によって提供され得る。
【００３５】
図１は、コンピューティングデバイス上で動作するソフトウェアアプリケーションを設定することの一例を示す。図１に示されているように、コンピューティングデバイス１００は、「ＭＹ＿ＡＰＰ」とラベリングされたソフトウェアアプリケーション（「アプリ」）を動作させる。アプリは、入力を受信するための、および情報を出力するためのインターフェース１０２を提供する。図１に示されている例では、アプリは、インターフェース１０２が、ウェブアドレスを入力するためのテキストボックス１０４と、テキストボックス１０４中のウェブアドレスに向けられたウェブアクセス要求の送信をトリガするためのアクティブ化可能要素１０６と、ウェブアドレスに関連するコンテンツを表示するための出力インターフェース１０８とを含む、ウェブブラウジング機能を提供し得る。コンテンツはまた、ウェブアクセス要求の送信をトリガするための１つまたは複数のアクティブ化可能要素（たとえば、ユニバーサルリソースリンク（ＵＲＬ）１１０および１１１）を含み得る。インターフェース１０２は、たとえば、バージョン情報１１２を含む他の情報をも表示し得る。
【００３６】
コンピューティングデバイス１００は、設定プロセスを通して、アプリの様々な態様を更新するための制御データを受信する。たとえば、図１に示されているように、アプリのバージョンは、アクティブ化可能検索要素１１４が提供される、検索機能を含むために更新され得る。アプリのウェブブラウジング機能も更新され得る。たとえば、更新の結果としてナビゲーション要素１１６が提供され得る。さらに、アプリ（またはコンピューティングデバイス１００の他の態様）も、異なるウェブブラウジング機能を提供すること、異なるコンテンツを表示することなどを行うために更新され得る。たとえば、図１に示されているように、アプリは、可変アクセスポリシーを実装するように設定され得る。ポリシーの一部として、アプリは、ゼロレートのウェブサービスへのアクセスを提供し得る。そのようなゼロレートウェブサービスは、ユーザが、アプリを通して、ある制限を伴ってインターネットにアクセスすることを可能にし得る。たとえば、アクセスの数が上限に到達し、これが、設定プロセスをトリガすることができるまで、アクセスは利用可能であり得る。設定プロセスの後に、アプリは、ゼロレートのウェブサービスへのアクセスを提供することを停止し、無料アクセスが終了したことを示すページを表示し得る。
【００３７】
コンピューティングデバイス１００は、サーバから制御データを受信し得る。現在、コンピューティングデバイスは、たとえば、（たとえば、ＴＣＰに基づいて）サーバとのＴＣＰパケットベース通信チャネルを確立することによって、制御データの送信を始動し得る。コンピューティングデバイスは、次いで、制御データについての要求を含むＴＣＰパケットを、通信チャネルを介してサーバに送信する。サーバは、要求を処理し、要求された制御データを含むＴＣＰパケットを、通信チャネルを介してコンピューティングデバイスに送信することができる。コンピューティングデバイスは、そのような構成を通して、要求された制御データを受信し得るが、通信チャネルの管理、ならびに制御データを取得するための要求および応答が、設定プロセスの複雑さを増加させ、より多くのコンピューティングリソースを必要とする。その上、これらの要求および応答の送信はまた、かなりの量のネットワーク帯域幅を消費し、ネットワークインフラストラクチャの追加の負担をもたらし得る。
【００３８】
本明細書では、コンピューティングデバイスに制御データを提供するために、コンピューティングデバイスとサーバとの間の既存の通信を活用する、コンピューティングデバイスの遠隔設定のための技法が開示される。サーバは、コンピューティングデバイスといくつかのウェブリソース（たとえば、ドキュメントファイル、メディアファイルなどを含み得るウェブコンテンツ）のホストとの間の媒介として動作するサーバプロキシを含むことができる。コンピューティングデバイスは、サーバとのＴＣＰ通信チャネルを確立し得る。コンピューティングデバイスは、ＴＣＰ通信チャネルを介して、ウェブリソースを要求するためのウェブアクセス要求（たとえば、ハイパーテキスト転送プロトコル（ＨＴＴＰ）要求）をサーバに送信し得る。ウェブアクセス要求に基づいて、サーバは、同じくＴＣＰ通信チャネルを介して、要求されたウェブリソースを含んでいるウェブアクセス応答（たとえば、ＨＴＴＰ応答）をコンピューティングデバイスに送信し得る。サーバはまた、ウェブアクセス応答の一部として制御データをコンピューティングデバイスに送信する。
【００３９】
サーバは、様々な状況において制御データをコンピューティングデバイスに送信するように設定され得る。たとえば、再び図１を参照すると、サーバは、「ＭＹ＿ＡＰＰ」アプリを異なるバージョンに更新するために１つまたは複数の外部イベントによってトリガされ得る。外部イベントは、たとえば、タイマーの満了（たとえば、サーバは、ある時点においてアプリを更新するように設定される）、別のサーバからのアプリについての更新パッチの受信などを含むことができる。外部イベントによってトリガされた後に、サーバプロキシは、更新されるべきアプリによって送信されるウェブアクセス要求を監視し得る。そのようなウェブアクセス要求が、たとえば、ＴＣＰ通信チャネルを介してコンピューティングデバイス１００から受信されたとき、サーバは、ウェブアクセス応答中に、要求されたウェブリソース（たとえば、ウェブコンテンツ）、ならびに制御データを含めることができる。サーバは、次いで、制御データを含むウェブアクセス応答を、ウェブアクセス要求を送信する同じＴＣＰ通信チャネルを介してコンピューティングデバイス１００に送信することができる。
【００４０】
サーバはまた、たとえば、ウェブアクセス要求によって要求されたウェブリソースを含む他の情報に基づいて、送信されるべき制御データを決定し得る。たとえば、図１を参照しながら上記で説明されたように、コンピューティングデバイス１００は、可変アクセスポリシーを実装するためにサーバと通信していることがある。コンピューティングデバイス１００は、ゼロレートのウェブサービスへのアクセス（たとえば、ニュースコンテンツへの無料アクセス）を提供し、次いで、いくつかの条件が満たされたとき、ウェブサービスへのアクセスを変更し得る。たとえば、ニュースコンテンツへの無料アクセスは、ウェブサイト「ＸＹＺｎｅｗｓ．ｃｏｍ」上にホストされたコンテンツに向けられた所定の数のウェブアクセス要求に達したとき、停止され得る。サーバは、コンピューティングデバイス１００から受信されたそのようなウェブアクセス要求の数を追跡し、上記数に達したときにコンテンツへのアクセスを拒否するために、コンピューティングデバイス１００に制御データを送信し得る。図１の例を参照すると、ユーザは、「米国ニュース」に関連するコンテンツにアクセスするために、ＵＲＬ１１０（または他のアクティブ化可能要素）をアクティブ化し得る。ＵＲＬ１１０の選択は、コンピューティングデバイスに、サーバにＨＴＴＰ要求を送信させ得る。ＨＴＴＰ要求を受信した後に、サーバは、コンピューティングデバイス１００から受信されたそのような要求の数が限界に達したと決定し得る。サーバは、コンピューティングデバイス１００に送信されるべきＨＴＴＰ応答中に、要求されたコンテンツ（または他のコンテンツ）を含め得る。しかしながら、サーバは、要求されたコンテンツへのユーザアクセスを拒否するために、ＨＴＴＰ応答中に、インターフェース１０２の要素のうちのいくつかを変更する制御データを含め得る。たとえば、図１に示されているように、制御データは、要求されたコンテンツをレンダリングするとき、出力インターフェース１０８に不透明レイヤを表示させ得る。制御データはまた、出力インターフェース１０８に、アクセスが拒否されることを示すためにメッセージ１１８を表示することと、ユーザが有料ウェブサービスにサブスクライブすることができるサブスクリプションページへのリンク１２０を提供することとを行わせ得る。
【００４１】
開示される技法では、制御データを受信するために別個の通信チャネルを確立する代わりに、コンピューティングデバイス（たとえば、コンピューティングデバイス１００）は、制御データと要求されたウェブリソースの両方を受信するために同じ通信チャネルを使用することができる。その上、要求されたリソースをも含むウェブアクセス応答の一部として制御データを含めることによって、コンピューティングデバイスは、制御データを受信するためにウェブアクセス応答とは別個の追加の応答をハンドリングする必要がない。これらのすべては、コンピューティングデバイスの動作とサーバの動作とを簡略化し、制御データの送信によって引き起こされるネットワークトラフィックを低減し、コンピューティングリソースおよびネットワーキングリソースのより効率的な使用につながることがある。
【００４２】
その上、開示される技法はまた、コンピューティングデバイスが通常ウェブアクセス要求以外に制御データについての固有の要求を送信することを必要とすることなしに、サーバが制御データをコンピューティングデバイスに単方向にプッシュすることを可能にする。その結果、アプリの更新は、特に、常にウェブアクセス要求を送信し、ウェブアクセス応答を受信する、内蔵ウェブブラウジング機能（たとえば、Ｗｅｂ  Ｖｉｅｗ）をもつアプリについて、複数のコンピューティングデバイスの間で、より均一で同期された様式で実施され得る。
【００４３】
ＩＩ．データネットワークシステム
図２は、本開示のいくつかの態様による、データネットワークシステム２００の簡略ブロック図である。データネットワークシステム２００は、通信ネットワーク２０６を通してクライアントデバイス２０４に接続されたウェブサーバ２０２を含み得、これは、イーサネット、ＩＥＥＥ８０２．１１、ワールドワイドインターオペラビリティフォーマイクロウェーブアクセス（ＷｉＭＡＸ）、３Ｇ、４Ｇ、５Ｇ、符号分割多元接続（ＣＤＭＡ）、デジタル加入者回線（ＤＳＬ）などの技術を使用する通信リンクを含み得る。（１つまたは複数の）ウェブサーバは、ウェブリソースのセットを提供し得る。たとえば、ウェブサーバ２０２は、ウェブページ、ならびにＪＡＶＡ（登録商標）、ＦＬＡＳＨ（登録商標）、ＸＭＬなどの他のコンテンツをサーブし得る。ユーザは、ウェブサーバ２０２上にホストされた情報（たとえば、ウェブコンテンツ、画像、ビデオ、ポストなど）をアップロードおよび／または検索するために、ウェブサーバ２０２に要求を送り得る。ウェブサーバ２０２は、たとえば、受信およびルーティングメッセージを含む他のウェブリソースをも提供し得る。メッセージは、たとえば、インスタントメッセージ、キューイングされたメッセージ（たとえば、電子メール）、テキストメッセージ、ショートメッセージサービス（ＳＭＳ）メッセージ、または任意の他の好適なメッセージング技法を使用して送られるメッセージを含むことができる。
【００４４】
クライアントデバイス２０４は、ユーザに対応し得、プロセッサ、（揮発性メモリおよび／または不揮発性記憶ドライブをもつ）メモリ、入力および出力インターフェース、あるいは当技術分野で知られている他のハードウェアまたはソフトウェアを備え得る。クライアントデバイス２０４はアプリ２０８を含み得る。アプリ２０８は、図１で説明されたアプリと同様の要素を含み得る。たとえば、アプリ２０８は、ウェブブラウジング能力を提供することができ、ウェブアドレスを入力するための入力インターフェース（たとえば、図１のテキストボックス１０４）と、ウェブコンテンツを出力するための出力インターフェース（たとえば、図１の出力インターフェース１０８）とを含み得る。ウェブブラウジング能力を提供するために、アプリ２０８はまた、入力インターフェースにおいて受信されたウェブアドレスに基づいてウェブアクセス要求を生成し、いくつかのウェブリソース（たとえば、ウェブコンテンツ）について要求するために、ウェブアクセス要求をウェブサーバ２０２に送信し得る。アプリ２０８はまた、要求されたウェブリソースを含むウェブアクセス応答を処理し、ウェブアクセス応答からウェブリソースを抽出し、出力インターフェースにウェブリソースを提供し得る。その上、アプリ２０８はまた、上記で説明されたように、ウェブアクセス応答中に含まれる制御データを抽出し、制御データに基づいて、アプリの１つまたは複数の要素を更新し得る。
【００４５】
クライアントデバイス２０４は、ローカルプロキシ２１０をさらに含み得、ローカルプロキシ２１０は、ソフトウェアアプリケーションであり得る。ローカルプロキシ２１０は、アプリ２０８によって生成されたウェブアクセス要求をどこにルーティングすべきかを決定することができる。第１の動作モードでは、ローカルプロキシ２１０は、ウェブアクセス要求をウェブサーバ２０２に送信し得る。ローカルプロキシ２１０は、ウェブサーバ２０２との通信チャネル２２０を確立し得る。ローカルプロキシ２１０は、アプリ２０８によって生成されたウェブアクセス要求２２１を、通信チャネル２２０を介してウェブサーバ２０２に送信し得る。ローカルプロキシ２１０はまた、通信チャネル２２０を介してウェブサーバ２０２からウェブアクセス応答２２２を受信し得る。ローカルプロキシ２１０は、アプリ２０８にウェブアクセス応答２２２を提供することができ、アプリ２０８は、応答中に含まれるウェブリソース（たとえば、ウェブコンテンツ）を抽出し、出力インターフェースにウェブリソースを提供することができる。いくつかの実施形態では、通信チャネル２２０はＴＣＰ通信チャネルであり得、ウェブアクセス要求２２１はＨＴＴＰ要求であり得、ウェブアクセス応答２２２はＨＴＴＰ応答であり得る。
【００４６】
第２の動作モードでは、ローカルプロキシ２１０は、ウェブアクセス要求をサーバプロキシ２１２にも送信し得る。サーバプロキシ２１２は、プロセッサとメモリとをもつコンピューティングデバイスであり得る。サーバプロキシ２１２は、図２に示されているように、通信ネットワーク２０６の一部であるか、またはウェブサーバ２０２の一部であり得る。サーバプロキシ２１２は、アプリ２０８に代わってウェブサーバ２０２にウェブリソースを要求し得る。その場合、ローカルプロキシ２１０は、サーバプロキシ２１２との通信チャネル２２４を確立し得、サーバプロキシ２１２はまた、ウェブサーバ２０２との通信チャネル２２６を確立する。ローカルプロキシ２１０は、アプリ２０８によって生成されたウェブアクセス要求２３０を、通信チャネル２２４を介してサーバプロキシ２１２に送信し得る。サーバプロキシ２１２は、（たとえば、ウェブアクセス要求２３０によって要求されたものと同じウェブリソースを要求するために）ウェブアクセス要求２３０に基づいてウェブアクセス要求２３２を生成し、ウェブアクセス要求２３２を、通信チャネル２２６を介してウェブサーバ２０２に送信し得る。サーバプロキシ２１２はまた、通信チャネル２２６を介してウェブサーバから、要求されたウェブリソースを含むウェブアクセス応答２３４を受信し得る。サーバプロキシ２１２は、ウェブアクセス応答２３４に基づいて（たとえば、ウェブアクセス応答２３４中に含まれるウェブリソースを含めることによって）ウェブアクセス応答２３６を生成し、ウェブアクセス応答２３６をローカルプロキシ２１０に送信し得る。ローカルプロキシ２１０はまた、アプリ２０８にウェブアクセス応答２３６を提供することができ、アプリ２０８は、応答中に含まれるウェブリソース（たとえば、ウェブコンテンツ）を抽出し、出力インターフェースにウェブリソースを提供することができる。いくつかの実施形態では、通信チャネル２２４および２２６は、ＴＣＰ通信チャネルであり得る。ウェブアクセス要求２３０および２３２はＨＴＴＰ要求であり得、ウェブアクセス応答２３４および２３６はＨＴＴＰ応答であり得る。
【００４７】
サーバプロキシ２１２は、ウェブサーバ２０２とクライアントデバイス２０４との間の媒介として働くことができる。サーバプロキシ２１２は、制御データに基づいて第１の動作モードまたは第２の動作モードを実施するようにローカルプロキシ２１０に指示するために、制御データをローカルプロキシ２１０に送信することによって、ウェブサーバ２０２によってホストされるウェブリソースへのクライアントデバイス２０４のアクセスを制御し得る。たとえば、図１の例を参照すると、ユーザは、アプリ２０８を介してゼロベースのウェブサービスにアクセスすることを試み得、アプリ２０８はウェブアクセス要求２３０を生成する。ゼロベースのウェブサービスへのアクセス要求に基づいて、ローカルプロキシ２１０は、第２のモード下で動作し、ウェブアクセス要求２３０をサーバプロキシ２１２に送信し得、サーバプロキシ２１２は、アプリ２０８からのゼロベースのウェブサービスに関連するウェブアクセス要求の数を追跡することができる。ウェブアクセス要求の数がしきい値を超えない場合、サーバプロキシ２１２は、（たとえば、ウェブアクセス要求２３２を送信することによって）アプリ２０８に代わってウェブリソースを要求し得る。サーバプロキシ２１２が、ウェブサーバ２０２から、要求されたウェブリソースを受信した後に、サーバプロキシ２１２は、要求されたウェブリソースを含むウェブアクセス応答（たとえば、ウェブアクセス応答２３６）を、ローカルプロキシ２１０に送信することができる。一方、ゼロベースのウェブサービスに関連するウェブアクセス要求の数がしきい値に達した場合、サーバプロキシ２１２は、ウェブアクセス応答２３６の一部として、制御データをローカルプロキシ２１０に送信し得、ローカルプロキシ２１０は、次いで、アプリ２０８に制御データ（およびウェブアクセス応答２３６）をフォワーディングする。制御データは、ユーザが、アプリ２０８を介して、要求されたウェブリソースにアクセスすることを防ぐために、アプリ２０８のインターフェースを更新することができる（たとえば、ウェブページのレンダリング、メッセージを表示するなど）。
【００４８】
その上、サーバプロキシ２１２はまた、ユーザが有料ウェブサービスにサブスクライブした場合、第１のモード下で動作するようにローカルプロキシ２１０に指示するために、制御データを送信すること（すなわち、ウェブサーバ２０２と直接通信すること）によって、ウェブサーバ２０２上にホストされたウェブリソースへの異なる程度のアクセス（たとえば、無制限アクセス）をクライアントデバイス２０４に許可し得る。サーバプロキシ２１２は、ユーザが有料ウェブサービスにサブスクライブしたと決定するために、（たとえば、サブスクリプションリンク１２０の選択によって引き起こされるウェブアクセス要求を検出することによって）サブスクリプションアクティビティを検出し得る。この決定に基づいて、サーバプロキシ２１２は、ローカルプロキシ２１０に、ウェブサーバ２０２との通信チャネル２２０を確立させるために、制御データをローカルプロキシ２１０に送信し得る。ローカルプロキシ２１０は、次いで、アプリ２０８を動作させるユーザに、ウェブサーバ２０２上にホストされたウェブリソースへの無制限アクセスを許可するために、サーバプロキシ２１２を通ることなしに、ウェブサーバ２０２に後続のウェブアクセス要求を送信することができる。
【００４９】
ＩＩＩ．制御データ
図３は、本開示のいくつかの態様による、制御データを含むＨＴＴＰ応答３００の一例の簡略ブロック図である。ＨＴＴＰ応答３００は、たとえば、図２のサーバプロキシ２１２によって生成され得る。サーバプロキシ２１２は、たとえば、アプリ２０８および／またはローカルプロキシ２１０のいくつかの態様を制御するために、ＨＴＴＰ応答３００をクライアントデバイス２０４に送信することができる。ここでは説明の目的でＨＴＴＰが説明されるが、代替実施形態では他のプロトコルおよび通信技法が使用され得る。図３に戻ると、ＨＴＴＰ応答３００は、たとえば、図２のウェブアクセス応答２３６であり得る。図３に示されているように、ＨＴＴＰ応答３００は、開始行３１０と、ヘッダ３２０と、本文３３０とを含む。開始行３１０は、たとえば、ＨＴＴＰバージョン情報３１２、ステータスコード３１４、および理由フレーズ（ｒｅａｓｏｎ  ｐｈｒａｓｅ）３１６を含み得る。ＨＴＴＰバージョン情報３１２は、メッセージが関連するＨＴＴＰプロトコルのバージョンを提供する。図３の例では、ＨＴＴＰ応答３００は、ＨＴＴＰバージョン１．０に関連する。ステータスコード３１４と理由フレーズ３１６とは、ＨＴＴＰ応答３００につながる先行ＨＴＴＰ要求を処理することのステータスを提供することができる。図３の例では、ステータスコード３１４と理由フレーズ３１６との組合せは、処理が成功したことを示し得る。本文３３０は、その先行ＨＴＴＰ要求によって要求されたウェブリソースを含み、たとえば、文書、画像データ、メディアデータなどを含み得る。
【００５０】
ヘッダ３２０は、ヘッダ３２２および３２４を含む、１つまたは複数のヘッダを含み得る。ヘッダ３２２および３２４の各々は、名前ストリングと値とを含み得る。図３の例では、ヘッダ３２２は、名前ストリング「アプリＩＤ」と値「ＭＹ＿ＡＰＰ」とを含み、ヘッダ３２４は、名前ストリング「アプリアクション」と値「Ｃｏｄｅ＿０」とを含む。本開示のいくつかの態様によれば、制御データは、名前ストリングと値との組合せとしてヘッダ３２０中に挿入され得る。名前ストリングと値との組合せは、制御データの所定のセマンティックおよび構造に基づいて決定され得る。図３の例では、ヘッダ３２２とヘッダ３２４の両方は、制御データの一部であり得る。たとえば、ヘッダ３２２の「アプリＩＤ」名前ストリングは、ヘッダ３２２が、制御データによって設定されるべきアプリの識別子（「ＭＹ＿ＡＰＰ」）を搬送することを示し得る。また、ヘッダ３２４の「アプリアクション」名前ストリングは、ヘッダ３２４が、アプリのどの要素が更新されるべきであるか、およびどんな（１つまたは複数の）更新が行われるべきであるかを示すコードを搬送することを示し得る。
【００５１】
ヘッダ３２０を含むＨＴＴＰ応答３００を受信すると、アプリ２０８は、制御データの同じ所定のセマンティックおよび構造に基づいて、ヘッダ３２２および３２４を処理することができる。たとえば、アプリ２０８は、ＨＴＴＰ応答３００がそのアプリについての制御データを含んでいるのか他のアプリについての制御データを含んでいるのかを決定するために、ヘッダ３２２の「アプリＩＤ」名前ストリングを識別し、値「ＭＹ＿ＡＰＰ」を抽出し、抽出された値をアプリ２０８の識別子と比較し得る。さらに、アプリ２０８はまた、ヘッダ３２４の「アプリアクション」名前ストリングを識別し、値「Ｃｏｄｅ＿０」に基づいて設定更新を決定し得る。
【００５２】
図４は、本開示のいくつかの態様による、設定を異なる制御データ値にマッピングする例示的なマッピングテーブル４００の簡略ブロック図である。マッピングテーブル４００は、サーバプロキシ２１２とアプリ２０８の両方に記憶されるか、またはさもなければサーバプロキシ２１２とアプリ２０８の両方によってアクセス可能であり得る。図４の例では、値「Ｃｏｄｅ＿０」、「Ｃｏｄｅ＿１」、および「Ｃｏｄｅ＿２」のセットの各々は、アプリ要素および設定セッティングに関連する。設定セッティングは、たとえば、アプリ上にウェブページを表示するための設定、アプリを用いて検索を実施するための設定、またはアプリのユーザインターフェース設定を含み得る。たとえば、「Ｃｏｄｅ＿０」と「Ｃｏｄｅ＿１」の両方は、アプリ２０８の検索要素（たとえば、図１の検索要素１１４）の動作に関連し、「Ｃｏｄｅ＿２」は、アプリ２０８の出力インターフェース（たとえば、図１の出力インターフェース１０８）の動作に関連する。さらに、「Ｃｏｄｅ＿０」、「Ｃｏｄｅ＿１」および「Ｃｏｄｅ＿２」の各々は、異なる設定セッティングを表し得る。たとえば、「Ｃｏｄｅ＿０」を受信すると、アプリ２０８は、検索クエリを受信するための検索入力テキストボックスを表示することができる。また、「Ｃｏｄｅ＿１」を受信すると、アプリ２０８は、検索クエリを「ＤＯＯＤＬＥ」検索エンジンに向けることができる。さらに、「Ｃｏｄｅ＿２」を受信すると、アプリ２０８は、（たとえば、ユーザが、インターフェースにおいてレンダリングされたウェブコンテンツを読み取ることを防ぐために）出力インターフェース１０８において不透明レイヤを表示することができる。
【００５３】
サーバプロキシ２１２はまた、上述のトリガリングイベントに基づいて、ヘッダ３２４に書き込まれるべき値を決定するためにマッピングテーブル４００を参照することができる。たとえば、サーバプロキシ２１２が、アプリ２０８に検索入力テキストボックスを表示させるようにとの命令を受信した場合、サーバプロキシ２１２は、アプリ２０８に送信されるべきＨＴＴＰ応答ヘッダ中に「Ｃｏｄｅ＿０」を含め得る。さらに、サーバプロキシ２１２が、アプリ２０８に検索クエリを「ＤＯＯＤＬＥ」検索エンジンに向けさせるようにとの命令を受信した場合、サーバプロキシ２１２は、ＨＴＴＰ応答ヘッダ中に「Ｃｏｄｅ＿１」を含め得る。その上、サーバプロキシ２１２が、アプリ２０８に、ＨＴＴＰ応答中に含まれるウェブリソースへのアクセスを与えないことを決定した場合、サーバプロキシ２１２は、ＨＴＴＰ応答ヘッダ中に「Ｃｏｄｅ＿２」を含め得る。
【００５４】
ＩＶ．制御データの提供のためのシステムおよび方法
図５は、本開示のいくつかの態様による、制御データの送信のためのサーバプロキシ５００の一例の簡略ブロック図である。サーバプロキシ５００は、図２のサーバプロキシ２１２であり得る。サーバプロキシ５００は、１つまたは複数のプロセッサ５０２と、ネットワークインターフェースカード（ＮＩＣ）５０４と、サーバ側インターフェースモジュール５３０、クライアント側インターフェースモジュール５４０、アクセス要求モジュール５５０、アクセス応答モジュール５６０、および制御データ生成モジュール５７０を記憶するコンピュータ可読媒体５２０とを含み得る。サーバプロキシ５００は、制御データマッピングストア５８０をさらに含み得る。
【００５５】
（１つまたは複数の）プロセッサ５０２は、任意の好適な処理デバイスまたはそのようなデバイスの任意の組合せを含み得る。例示的なプロセッサは、所望の機能を達成するために協働する１つまたは複数のマイクロプロセッサを備え得る。プロセッサは、ユーザおよび／またはシステム生成された要求を実行するためのプログラム構成要素を実行するのに十分な少なくとも１つの高速データプロセッサを備える中央処理ユニット（ＣＰＵ）を含み得る。
【００５６】
ＮＩＣ５０４は、ローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）（たとえば、インターネット）、および様々なワイヤレス電気通信ネットワークを含む、１つまたは複数の通信ネットワークを介した、サーバプロキシ５００から他のデバイス（たとえば、クライアントデバイス、サーバなど）への通信インターフェースを提供し得る。ＮＩＣ５０４は、イーサネットカード、非同期転送モードＮＩＣ、トークンリングＮＩＣ、ワイヤレスネットワークインターフェースコントローラ（ＷＮＩＣ）、ワイヤレスネットワークアダプタなどを備え得る。ＮＩＣ５０４は、ソーシャルネットワーキングシステムへの入力コンテンツの送信および受信を可能にし得る。
【００５７】
コンピュータ可読媒体５２０は、電子データを記憶することができる任意の好適な１つまたは複数のデバイスであり得る。コンピュータ可読媒体は、ランダムアクセスメモリ（ＲＡＭ）または読取り専用メモリ（ＲＯＭ）デバイスを含み得る、ワーキングメモリを含む、１つまたは複数のメモリデバイスによって具現され得る。メモリデバイスの例は、メモリチップ、ディスクドライブなどを含み得る。そのようなメモリデバイスは、任意の好適な電気、光および／または磁気動作モードを使用して動作し得る。コンピュータ可読媒体５２０は、１つまたは複数のプロセッサ５０２によって実行可能な複数の命令を記憶する非一時的コンピュータ可読記憶媒体を備え得る。複数の命令は、１つまたは複数のプロセッサ５０２によって実行されたとき、１つまたは複数のプロセッサ５０２に、本明細書で説明される方法のいずれかを実施させ得る。複数の命令は、サーバ側インターフェースモジュール５３０、クライアント側インターフェースモジュール５４０、アクセス要求モジュール５５０、アクセス応答モジュール５６０、および制御データ生成モジュール５７０に対応する命令を含み得、ランタイム中にコンピュータ可読媒体５２０にロードされる。
【００５８】
サーバ側インターフェースモジュール５３０は、別のサーバ（たとえば、ウェブサーバ２０２、サブスクリプションサーバなど）とサーバプロキシ５００の他の構成要素との間のインターフェースを提供し得る。サーバ側インターフェースモジュール５３０は、別のサーバに送信されるべきウェブアクセス要求（たとえば、図２のウェブアクセス要求２３２）を生成するための論理と、別のサーバから受信されたウェブアクセス応答（たとえば、図２のウェブアクセス応答２３４）を処理するための論理とを含み得る。以下でより詳細に説明されるように、サーバ側インターフェースモジュール５３０は、アクセス要求モジュール５５０から、ウェブアクセス要求を生成するようにとの命令を受信し得る。サーバ側インターフェースモジュール５３０はまた、別のサーバからウェブアクセス応答を受信し、処理のために、受信されたウェブアクセス応答をアクセス応答モジュール５６０にフォワーディングし得る。サーバプロキシ５００とサーバとが、通信ネットワーク（たとえば、イーサネット）を介して接続される場合、サーバ側インターフェースモジュール５３０は、ＮＩＣ５０４を介して、サーバにウェブアクセス要求を送信し、サーバからウェブアクセス応答を受信し得る。
【００５９】
クライアント側インターフェースモジュール５４０は、クライアントデバイス（たとえば、図１のコンピューティングデバイス１００、図２のクライアントデバイス２０４など）とサーバプロキシ５００の他の構成要素との間のインターフェースを提供し得る。サーバ側インターフェースモジュール５４０は、クライアントデバイスから受信されたウェブアクセス要求（たとえば、図２のウェブアクセス要求２３０）を処理するための論理と、クライアントデバイスに送信されるべきウェブアクセス応答（たとえば、図２のウェブアクセス応答２３６）を生成するための論理とを含み得る。以下でより詳細に説明されるように、クライアント側インターフェースモジュール５４０は、アクセス応答モジュール５６０および制御データ生成モジュール５７０から、ウェブアクセス応答を生成するようにとの命令を受信し得る。クライアント側インターフェースモジュール５４０はまた、クライアントデバイスからウェブアクセス要求を受信し、処理のために、受信されたウェブアクセス要求をアクセス要求モジュール５５０にフォワーディングし得る。クライアント側インターフェースモジュール５４０はまた、ＮＩＣ５０４を介して、クライアントデバイスにウェブアクセス応答を送信し、クライアントデバイスからウェブアクセス要求を受信し得る。
【００６０】
アクセス要求モジュール５５０は、（クライアント側インターフェースモジュール５４０を介して）クライアントデバイスから受信されたウェブアクセス要求を処理し、ウェブアクセス要求を別のサーバに送信するようにとの命令をサーバ側インターフェースモジュール５３０に与え得る。アクセス要求モジュール５５０は、たとえば、要求されたウェブリソースを識別する情報（たとえば、ＨＴＴＰ要求中に含まれるユニバーサルリソース識別子（ＵＲＩ）または部分ＵＲＩ）を抽出することによって、ウェブアクセス要求を処理し得る。アクセス要求モジュール５５０は、上記で説明されたように、可変アクセスポリシーを実装するために、特定のウェブリソースに向けられたウェブアクセス要求の数を累積し得る。アクセス要求モジュール５５０はまた、クライアントデバイスが、アクセスポリシーに基づいて、要求されたウェブリソースへのアクセスを許可される場合、受信されたウェブアクセス要求に基づいて（たとえば、受信されたウェブアクセス要求から抽出されたＵＲＩまたは部分ＵＲＩを含めることによって）、第２のウェブアクセス要求を生成し得る。アクセス要求モジュール５５０は、次いで、クライアントデバイスに代わってウェブリソースを要求するために、第２のウェブアクセス要求をターゲットサーバに送信するようにサーバ側インターフェースモジュール５３０に命令することができる。
【００６１】
アクセス応答モジュール５６０は、（サーバ側インターフェースモジュール５３０を介して）別のサーバから受信されたウェブアクセス応答を処理し、ウェブアクセス応答をクライアントデバイスに送信するようにとの命令をクライアント側インターフェースモジュール５４０に与え得る。アクセス応答モジュール５６０は、たとえば、応答中に含まれるウェブリソース（たとえば、ＨＴＴＰ応答の本文）および他の設定情報（たとえば、ＨＴＴＰ応答の開始行）を抽出することによって、ウェブアクセス応答を処理し得る。アクセス応答モジュール５６０はまた、制御データ生成モジュールから制御データを受信し、抽出されたウェブリソースおよび制御データを含むように、アクセス応答を生成し得る。たとえば、アクセス応答モジュール５６０は、ＨＴＴＰ応答として第２のウェブアクセス応答を生成し得、開始行が、抽出された設定情報を組み込み、ヘッダが制御データを組み込み、本文が、抽出されたウェブリソースを組み込む。アクセス応答モジュール５６０は、次いで、上記で説明されたように、クライアントデバイスの１つまたは複数の機能性を制御／設定するために、第２のウェブアクセス応答をクライアントデバイスに送信するようにクライアント側インターフェースモジュール５４０に命令することができる。
【００６２】
制御データ生成モジュール５７０は、クライアントデバイスに送信されるべきウェブアクセス応答中に含まれるべき制御データを決定し得る。制御データ生成モジュール５７０は、制御データを生成するための１つまたは複数のトリガリングイベントを検出するための（図５に示されていない）トリガモジュールを含み得る。トリガリングイベントは、たとえば、ソフトウェア更新をプッシュするようにとの別のサーバからの命令、（たとえば、ゼロレートのウェブサービスについての）ウェブアクセス要求の数がしきい値に達することなどを含み得る。制御データ生成モジュール５７０はまた、トリガリングイベントに基づいて、クライアントデバイスにおいて実現されるべき設定を決定し得る。たとえば、上記で説明されたように、要求されたウェブリソースへのアクセスを阻止するために、制御データ生成モジュール５７０は、クライアントデバイスのウェブブラウジングアプリの出力インターフェースの動作を設定し得る。また、無制限アクセスを許可するために、制御データ生成モジュール５７０は、ローカルプロキシが、後続のウェブアクセス要求をサーバプロキシではなくウェブサーバに向けるように、クライアントデバイスのローカルプロキシの動作を設定し得る。制御データ生成モジュール５７０はまた、制御データマッピングテーブル（たとえば、図４のマッピングテーブル４００）を参照して、決定された設定に基づいて、クライアントデバイスに送信されるべきウェブアクセス応答中に含まれるべき制御データを決定し、制御データをアクセス応答モジュール５６０に提供し得る。
【００６３】
いくつかの実施形態では、制御データ生成モジュール５７０はまた、制御データを暗号化し、暗号化された制御データをアクセス応答モジュール５６０に提供し得る。たとえば、制御データ生成モジュール５７０は、マッピングテーブル４００から制御データ値（たとえば、「Ｃｏｄｅ＿０」）を取得し、制御データ値に基づいてハッシュ値を生成し得る。制御データ生成モジュール５７０はまた、鍵（たとえば、ＵＭＡＣ鍵）を生成し、次いで、シグネチャを生成するために鍵を使用して制御データを暗号化し得る。識別子は、クライアントデバイスに関連するか、またはクライアントデバイスとサーバプロキシとの間のＴＣＰ通信チャネル（たとえば、セッションＩＤ）に関連し得る。制御データ生成モジュール５７０は、ウェブアクセス要求中に、暗号化された制御データとともにハッシュ値を含め得る。クライアントデバイスは、ウェブアクセス要求およびウェブアクセス要求中に含まれる暗号化された制御データを受信すると、ＵＭＡＣ鍵を用いて制御データを解読し、解読された制御データに基づいてハッシュ値を算出し、そのハッシュ値をウェブアクセス要求中に含まれるハッシュ値と比較することができる。２つのハッシュ値が一致する場合、クライアントデバイスは、制御データが、信用できるソースから来たと決定し、制御データ値に従って、設定をアプリおよび／またはローカルプロキシに適用し得る。
【００６４】
制御データマッピングストア５８０は、制御データを異なる設定にマッピングする１つまたは複数のマッピングテーブル（たとえば、図４のマッピングテーブル４００）を備え得る。制御データ生成モジュール５７０は、上記で説明されたように、制御データ生成のためにマッピングテーブルを取得するために、制御データマッピングストア５８０にアクセスし得る。
【００６５】
図６は、本開示のいくつかの態様による、制御データをクライアントデバイスに提供するための例示的な方法６００を示す簡略フローチャートである。本方法は、たとえば、図２のサーバプロキシ２１２および図５のサーバプロキシ５００によって実施され得る。
【００６６】
６０２において、システムは、クライアントデバイス（たとえば、図１のコンピューティングデバイス１００、図２のクライアントデバイス２０４など）から、ウェブリソースについての第１の要求を受信し得る。第１の要求は、ウェブリソースのＵＲＩまたは部分ＵＲＩを含むＨＴＴＰ要求であり得、ウェブリソースは、たとえば、ウェブサーバ（たとえば、図２のウェブサーバ２０２）上にホストされたウェブコンテンツであり得る。
【００６７】
６０４において、システムは、第１の要求に基づいて、第２の要求を生成し得る。第２の要求は、第１の要求中に含まれるＵＲＩ（または部分ＵＲＩ）を含むＨＴＴＰ要求であり得る。システムは、クライアントデバイスが、要求されたウェブリソースへのアクセスを許可されるという決定に基づいて、第２の要求を生成し得る。システムは、次いで、６０６において、第２の要求をウェブサーバに送信する。
【００６８】
６０８において、システムは、クライアントデバイスの１つまたは複数の機能性に関連する制御データを生成し得る。１つまたは複数の機能性は、たとえば、出力インターフェースの動作、後続のウェブアクセス要求を送信するための宛先（たとえば、後続のウェブアクセス要求をサーバプロキシに送信すべきなのか、ウェブサーバに送信すべきなのか）などを含み得る。制御データは、たとえば、別のサーバからソフトウェアパッチを受信すること、サブスクリプショントランザクションの完了など、外部イベントの検出に基づいて生成され得る。外部イベントに基づいて、システムは、クライアントデバイスの様々な構成要素（たとえば、アプリ２０８、ローカルプロキシ２１０など）に適用されるべき設定のセットを決定し得る。システムは、制御データマッピングテーブル（たとえば、図４のマッピングテーブル４００）を参照し、設定のセットに基づいて制御データを決定し得る。
【００６９】
６１０において、システムは、ウェブサーバから、要求されたウェブリソースを含む第１の応答を受信し得る。第１の応答はＨＴＴＰ応答であり得る。
【００７０】
６１２において、システムは、制御データとウェブリソースとを含む第２の応答を生成し得る。第２の応答は、制御データから生成された１つまたは複数のヘッダをもつＨＴＴＰ応答であり得る。制御データも暗号化され得る。
【００７１】
６１４において、システムは、クライアントデバイスの１つまたは複数の機能性を制御するために、第２の応答をクライアントデバイスに送信し得る。たとえば、第２の応答中に含まれる制御データに基づいて、クライアントデバイスは、ウェブコンテンツへのユーザアクセスを拒否するために、不透明レイヤを表示する、サーバプロキシの代わりにウェブサーバに後続のウェブアクセス要求を送信する、などを行い得る。
【００７２】
Ｖ．例示的なコンピューティングシステム
図７は、コンピューティングシステムのブロック図の一例を示す。図７に示されているコンピューティングシステムは、提供される説明の代替でまたは提供される説明を補足するために、本明細書で説明される任意のコンピューティングデバイス（たとえば、図１のコンピューティングデバイス１００、図２のクライアントデバイス２０４およびサーバプロキシ２１２、ならびに図５のサーバプロキシ５００など）を実装するために使用され得る。この例では、コンピューティングシステム７００は、プロセッサ７１０と、バス７２０と、ストレージ７３０と、メモリ７４０と、ランダムアクセスメモリ（ＲＡＭ）７４２と、読取り専用メモリ（ＲＯＭ）７４４と、ファイルシステム７５０と、ユーザ入力デバイス７６０と、出力デバイス７７０と、ネットワークインターフェース７８０と、通信ネットワーク７９０とを含む。本例では、ユーザ入力デバイス７６０は、一般に、コンピュータマウス、トラックボール、トラックパッド、ジョイスティック、ワイヤレス遠隔制御装置、描画タブレット、音声コマンドシステム、アイトラッキングシステムなどとして具現される。ユーザ入力デバイス７６０は、一般に、ユーザが、ボタンのクリックなど、コマンドを介して出力デバイス７７０上に現れるオブジェクト、アイコン、テキストなどを選択することを可能にする。出力デバイス７７０は、コンピューティングデバイスに関連するスクリーン、バーチャルリアリティ環境、投影システム、スピーカーなどを含み得る。
【００７３】
ネットワークインターフェース７８０の例は、一般に、イーサネットカード、モデム（電話、衛星、ケーブル、統合サービスデジタルネットワーク（ＩＳＤＮ））、非同期デジタル加入者回線（ＤＳＬ）ユニット、ＦｉｒｅＷｉｒｅ（登録商標）インターフェース、ユニバーサルシリアルバス（ＵＳＢ）インターフェースなどを含む。たとえば、ネットワークインターフェース７８０は、通信ネットワーク７９０、ＦｉｒｅＷｉｒｅ（登録商標）バスなどに結合され得る。他の実施形態では、ネットワークインターフェース７８０は、プロセッサ７１０上に物理的に組み込まれ得、ソフトデジタル加入者回線（ＤＳＬ）など、ソフトウェアプログラムであり得る。ネットワークインターフェース７８０は、図５のＮＩＣ５０４に対応し得る。
【００７４】
様々な例では、コンピューティングシステム７００は、一般に、プロセッサ７１０、およびＲＡＭ７４２、ＲＯＭ７４４などのメモリ７４０デバイス、ファイルシステム７５０および上記の構成要素を相互接続するシステムバス７２０など、周知のコンピュータ構成要素を含む。プロセッサ７１０は、図５のプロセッサ５０２に対応し得る。メモリ７４０は、たとえば、図５のサーバ側モジュール５３０、クライアント側インターフェースモジュール５４０、アクセス要求モジュール５５０、アクセス応答モジュール５６０、および制御データ生成モジュール５７０を記憶し得る。それらのモジュールは、本明細書で説明される方法のいずれかを実施するために、プロセッサ７１０によって実行され得る。
【００７５】
ＲＡＭ７４２およびＲＯＭ７４４は、実行可能コンピュータコード、人間可読コードなどを含む、本開示の実施形態など、データを記憶するように設定された有形、非一時的媒体の例である。他のタイプの有形媒体は、フロッピーディスク、リムーバブルハードディスク、ＣＤ−ＲＯＭ、ＤＶＤ、およびバーコードなどの光記憶媒体、フラッシュメモリなどの半導体メモリ、バッテリーバックアップ付き揮発性メモリ、ネットワーク化された記憶デバイスなどを含む。
【００７６】
様々な例では、コンピューティングシステム７００は、ハイパーテキスト転送プロトコル（ＨＴＴＰ）、伝送制御プロトコル／インターネットプロトコル（ＴＣＰ／ＩＰ）、リアルタイムストリーミングプロトコル（ＲＴＰ／ＲＴＳＰ）など、ネットワークを介した通信を可能にするソフトウェアをも含み得る。本開示の代替実施形態では、たとえば、インターネットワークパケット交換（ＩＰＸ）、ユーザデータグラムプロトコル（ＵＤＰ）など、他の通信ソフトウェアおよび転送プロトコルも使用され得る。
【００７７】
実施形態は、特に、方法、システムおよび記憶媒体を対象とする添付の特許請求の範囲において開示され、１つの請求項カテゴリー、たとえば、方法において言及された特徴はいずれも、別の請求項カテゴリー、たとえば、システムまたはコンピュータプログラム製品においても請求され得る。添付の特許請求の範囲における従属関係または参照は、形式的理由で選定されるにすぎない。ただし、前の請求項への意図的な参照（特に複数の従属関係）から生じる主題も請求され得、その結果、請求項とその特徴との任意の組合せが、開示され、添付の特許請求の範囲で選定された従属関係にかかわらず請求され得る。請求され得る主題は、添付の特許請求の範囲に記載の特徴の組合せだけでなく、特許請求の範囲における特徴の任意の他の組合せをも含み、特許請求の範囲において述べられた各特徴は、特許請求の範囲における任意の他の特徴または他の特徴の組合せと組み合わせられ得る。さらに、本明細書で説明または示される実施形態および特徴のいずれかは、別個の請求項において、ならびに／あるいは、本明細書で説明もしくは示される任意の実施形態もしくは特徴との、または添付の特許請求の範囲の特徴のいずれかとの任意の組合せで請求され得る。
【００７８】
特定の実施形態が説明されたが、様々な変更形態、改変形態、代替構成および等価物が可能である。実施形態は、ある特定のデータ処理環境内での動作に制限されず、複数のデータ処理環境内で自由に動作することができる。さらに、いくつかの実施形態が特定の一連のトランザクションおよびステップを使用して説明されたが、これは、限定するものではないことが当業者には明らかであろう。いくつかのフローチャートが動作を連続プロセスとして説明するが、動作の多くは、並列にまたはコンカレントに実施され得る。さらに、動作の順序が並べ替えられ得る。プロセスは、図中に含まれない追加のステップを有し得る。上記で説明された実施形態の様々な特徴および態様が、個々にまたは一緒に使用され得る。
【００７９】
また、フローチャート、流れ図、データフロー図、構造図、またはブロック図として示されている個々の例は、プロセスとして説明され得ることに留意されたい。フローチャートは動作を連続プロセスとして説明し得るが、動作の多くは、並列にまたはコンカレントに実施され得る。さらに、動作の順序が並べ替えられ得る。プロセスは、その動作が完了したとき終了するが、図中に含まれない追加のステップを有し得る。プロセスは、メソッド、関数、プロシージャ、サブルーチン、サブプログラムなどに対応し得る。プロセスが関数に対応するとき、その終了は、呼出し関数またはメイン関数への関数のリターンに対応することができる。
【００８０】
「機械可読記憶媒体」または「コンピュータ可読記憶媒体」という用語は、限定はしないが、ポータブルまたは非ポータブル記憶デバイス、光記憶デバイス、ならびに（１つまたは複数の）命令および／またはデータを記憶するか、含んでいるか、または搬送することが可能な様々な他の媒体を含む。機械可読記憶媒体またはコンピュータ可読記憶媒体は、データが記憶され得る非一時的媒体を含み得、ワイヤレスにまたはワイヤード接続を介して伝搬する搬送波および／または一時的電子信号を含まない。非一時的媒体の例は、限定はしないが、磁気ディスクまたはテープ、コンパクトディスク（ＣＤ）またはデジタル多用途ディスク（ＤＶＤ）などの光記憶媒体、フラッシュメモリ、メモリまたはメモリデバイスを含み得る。コンピュータプログラム製品は、プロシージャ、関数、サブプログラム、プログラム、ルーチン、サブルーチン、モジュール、ソフトウェアパッケージ、クラス、あるいは命令、データ構造、またはプログラム文の任意の組合せを表し得る、コードおよび／または機械実行可能命令を含み得る。
【００８１】
さらに、例は、ハードウェア、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、ハードウェア記述言語、またはそれらの任意の組合せによって実装され得る。ソフトウェア、ファームウェア、ミドルウェアまたはマイクロコードで実装されるとき、必要なタスクを実施するためのプログラムコードまたはコードセグメント（たとえば、コンピュータプログラム製品）は、機械可読媒体に記憶され得る。必要なタスクを実施するために、１つまたは複数のプロセッサが、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、プログラムコード、またはコードセグメントを実行し得る。
【００８２】
図のうちのいくつかに示されているシステムは、様々な設定において提供され得る。いくつかの例では、システムは、分散型システムとして設定され得、システムの１つまたは複数の構成要素が、クラウドコンピューティングシステムにおいてなど、１つまたは複数のネットワークにわたって分散される。
【００８３】
構成要素が、ある動作を実施するように「設定されて」いるものとして説明される場合、そのような設定は、たとえば、その動作を実施するように電子回路または他のハードウェアを設計することによって、その動作を実施するようにプログラマブル電子回路（たとえば、マイクロプロセッサまたは他の好適な電子回路）をプログラムすることによって、あるいはそれらの任意の組合せで達成され得る。
【００８４】
さらに、いくつかの実施形態が、ハードウェアおよびソフトウェアの特定の組合せを使用して説明されたが、ハードウェアおよびソフトウェアの他の組合せも可能であることを認識されたい。いくつかの実施形態が、ハードウェアのみで、またはソフトウェアのみで、あるいはそれらの組合せを使用して実装され得る。一例では、ソフトウェアは、本開示で説明されるステップ、動作、またはプロセスいずれかまたはすべてを実施するための１つまたは複数のプロセッサによって実行可能なコンピュータプログラムコードまたは命令を含んでいるコンピュータプログラム製品として実装され得、コンピュータプログラムは、非一時的コンピュータ可読媒体に記憶され得る。本明細書で説明される様々なプロセスは、任意の組合せで同じプロセッサまたは異なるプロセッサ上に実装され得る。
【００８５】
デバイス、システム、構成要素またはモジュールが、ある動作または機能を実施するように設定されているものとして説明される場合、そのような設定は、たとえば、その動作を実施するように電子回路を設計することによって、コンピュータ命令またはコード、あるいは非一時的メモリ媒体に記憶されたコードまたは命令を実行するようにプログラムされたプロセッサまたはコアを実行することによってなど、その動作を実施するようにプログラマブル電子回路（マイクロプロセッサなど）をプログラムすることによって、あるいはそれらの任意の組合せで達成され得る。プロセスは、限定はしないが、プロセス間通信のための従来の技法を含む様々な技法を使用して通信することができ、プロセスの異なるペアが異なる技法を使用し得るか、または、プロセスの同じペアが異なる時間において異なる技法を使用し得る。
【００８６】
実施形態の完全な理解を与えるために、具体的な詳細が本開示で与えられる。ただし、実施形態は、これらの具体的な詳細なしに実施され得る。たとえば、よく知られている回路、プロセス、アルゴリズム、構造、および技法は、実施形態を不明瞭にすることを回避するために、不要な詳細なしに示された。この説明は、例示的な実施形態を提供するにすぎず、他の実施形態の範囲、適用可能性、または設定を限定するものではない。むしろ、実施形態の先行する説明は、様々な実施形態を実装することを可能にする説明を当業者に提供することになる。要素の機能および構成において様々な変更が行われ得る。
【００８７】
したがって、本明細書および図面は、限定的な意味ではなく例示的な意味で考慮されるべきである。しかしながら、特許請求の範囲に記載のより広い趣旨および範囲から逸脱することなく、追加、差し引き、削除、ならびに他の修正および変更がそれに行われ得ることは明らかであろう。したがって、特定の実施形態が説明されたが、これらは限定するものではない。様々な変更形態および等価物が、以下の特許請求の範囲内に入る。
【図１】
2020529655.tif 000003
【図２】
2020529655.tif 000004
【図３】
2020529655.tif 000005
【図４】
2020529655.tif 000006
【図５】
2020529655.tif 000007
【図６】
2020529655.tif 000008
【図７】
2020529655.tif 000009
【国際調査報告】
2020529655.tif 000010
2020529655.tif 000011
2020529655.tif 000012
2020529655.tif 000013
2020529655.tif 000014
2020529655.tif 000015