(57)【要約】【課題】リモートコンピューティングデバイスを介して、タブ付きウェブブラウジングをクライアントコンピューティングデバイスに提供することができる方法、システム、コンピュータ可読媒体及び装置を提供する。【解決手段】リモートコンピューティングデバイス410は、複数のセッションを含む。セッションは、ウェブブラウザ実行可能形式のインスタンスを含む。クライアントコンピューティングデバイス420は、表示アプリケーションでウェブブラウザ実行可能形式に対応する出力を表示する。リモートコンピューティングデバイス410は、クライアントコンピューティングデバイス420から、表示アプリケーションとは異なるアプリケーションを介して、新規なウェブページの指示を受信する。リモートコンピューティングデバイス410は、ウェブブラウザにウェブブラウザ実行可能形式で新規なタブに新規なウェブページを表示させることができる。【選択図】図４
2021528766.tif 000002
【特許請求の範囲】
【請求項１】
方法であって、
リモートコンピューティングデバイスによって、クライアントコンピューティングデバイスから、第１のウェブページの第１の指示を受信することと、
前記リモートコンピューティングデバイス上のセッションをインスタンス化することであって、前記セッションはウェブブラウザのインスタンスを含み、前記ウェブブラウザの前記インスタンスは第１のタブに前記第１のウェブページを表示するように構成されている、前記インスタンス化することと、
前記クライアントコンピューティングデバイスに、前記第１のタブと関連付けられた第１の出力を送信することであって、前記第１の出力は表示アプリケーションによって表示されるように構成されている、前記送信することと、
前記表示アプリケーションとは異なる第２のアプリケーションから、第２のウェブページの第２の指示を受信することと、
前記セッションにおいて、そして、前記第２の指示を受信することに基づいて、前記ウェブブラウザの第２のタブに前記第２のウェブページを表示させることと、
前記クライアントコンピューティングデバイスに、前記第２のタブと関連付けられた第２の出力を送信することと
を含む方法。
【請求項２】
前記クライアントコンピューティングデバイスから、そして、前記第２のアプリケーションを介して、第３のウェブページの第３の指示を受信することであって、前記第３の指示は新規なセッションに対する要求を含む、前記受信することと、
前記第３の指示に基づいて、前記新規なセッションをインスタンス化することであって、前記新規なセッションが前記ウェブブラウザの第２のインスタンスを含み、前記ウェブブラウザの前記第２のインスタンスは前記第３のウェブページを表示するように構成されている、前記インスタンス化することと
を更に含む、請求項１に記載の方法。
【請求項３】
前記クライアントコンピューティングデバイスから、そして、前記第２のアプリケーションを介して、第３のウェブページの第３の指示を受信することであって、前記第３の指示は前記ウェブブラウザの特定のタブの第４の指示を含む、前記受信することと、
前記特定のタブに前記第３のウェブページを表示させることと
を更に含む、請求項１に記載の方法。
【請求項４】
第２のアプリケーションが第２のクライアントコンピューティングデバイスまたは前記リモートコンピューティングデバイス上の第２のセッション上で実行される、請求項１に記載の方法。
【請求項５】
前記第２のウェブページの前記第２の指示がプロキシを介して受信され、前記プロキシは前記第２のアプリケーションから前記第２の指示を受信して、前記第２のウェブページの前記第２の指示を前記リモートコンピューティングデバイスに送信するように構成されている、請求項１に記載の方法。
【請求項６】
前記第２のアプリケーションが複数のウェブページの複数の指示を含み、前記第１のウェブページの前記第１の指示を受信することは前記複数の指示からの前記第１の指示のユーザ選択に応答するものである、請求項１に記載の方法。
【請求項７】
前記クライアントコンピューティングデバイスから、前記第１のタブの指示を受信することと、
前記クライアントコンピューティングデバイスに、前記第１のタブと関連付けられた出力を送信することと
を更に含む、請求項１に記載の方法。
【請求項８】
前記セッションが前記第２のウェブページに対する前記第２の指示を受信するように構成されているヘルパーアプリケーションを含み、前記ヘルパーアプリケーションは前記ウェブブラウザに、前記第２のタブに前記第２のウェブページを開かせる、請求項１に記載の方法。
【請求項９】
前記第１の指示及び前記第２の指示がハイパーテキストトランスファープロトコル（ＨＴＴＰ）を介して受信される、請求項１に記載の方法。
【請求項１０】
装置であって、
１つ以上のプロセッサと、
前記１つ以上のプロセッサによって実行されると、前記装置に、
クライアントコンピューティングデバイスから第１のウェブページの第１の指示を受信することと、
セッションをインスタンス化することであって、前記セッションはウェブブラウザのインスタンスを含み、前記ウェブブラウザの前記インスタンスは第１のタブに前記第１のウェブページを表示するように構成されている、前記インスタンス化することと、
前記クライアントコンピューティングデバイスに、前記第１のタブと関連付けられた第１の出力を送信することであって、前記第１の出力は表示アプリケーションによって表示されるように構成されている、前記送信することと、
前記表示アプリケーションとは異なる第２のアプリケーションから、第２のウェブページの第２の指示を受信することと、
前記セッションにおいて、かつ、前記第２の指示を受信することに基づいて、前記ウェブブラウザの第２のタブに前記第２のウェブページを表示させることと、
前記クライアントコンピューティングデバイスに、前記第２のタブと関連付けられた第２の出力を送信することと
を行わせる各命令を格納しているメモリと
を含む、前記装置。
【請求項１１】
前記命令が、前記１つ以上のプロセッサによって実行されると、前記装置に、
前記クライアントコンピューティングデバイスから、そして、前記第２のアプリケーションを介して、第３のウェブページの第３の指示を受信することであって、前記第３の指示は新規なセッションに対する要求を含む、前記受信することと、
前記第３の指示に基づいて、前記新規なセッションをインスタンス化することであって、前記新規なセッションが前記ウェブブラウザの第２のインスタンスを含み、前記ウェブブラウザの前記第２のインスタンスは前記第３のウェブページを表示するように構成されている、前記インスタンス化することと
を更に行わせる、請求項１０に記載の装置。
【請求項１２】
前記命令が、前記１つ以上のプロセッサによって実行されると、前記装置に、
前記クライアントコンピューティングデバイスから、そして、前記第２のアプリケーションを介して、第３のウェブページの第３の指示を受信することであって、前記第３の指示は前記ウェブブラウザの特定のタブの第４の指示を含む、前記受信することと、
前記特定のタブに前記第３のウェブページを表示させることと
を更に行わせる、請求項１０に記載の装置。
【請求項１３】
前記第２のアプリケーションが第２のクライアントコンピューティングデバイス上で実行される、請求項１０に記載の装置。
【請求項１４】
前記第２のアプリケーションが前記装置上の第２のセッションで実行される、請求項１０に記載の装置。
【請求項１５】
前記第２のアプリケーションが複数のウェブページの複数の指示を含み、前記第１のウェブページの前記第１の指示を受信することは前記複数の指示からの前記第１の指示のユーザ選択に応答するものである、請求項１０に記載の装置。
【請求項１６】
リモートコンピューティングデバイスと、
クライアントコンピューティングデバイスと
を含むシステムであって、
前記クライアントコンピューティングデバイスは、
前記リモートコンピューティングデバイスに、かつ、メニューアプリケーションを介して、第１のウェブページの第１の指示を送信することと、
前記リモートコンピューティングデバイスに、かつ、前記メニューアプリケーションを介して、第２のウェブページの第２の指示を送信することと
を行うように構成されており、
前記リモートコンピューティングデバイスは、
前記第１の指示を受信することと、
セッションをインスタンス化することであって、前記セッションはウェブブラウザのインスタンスを含み、前記ウェブブラウザの前記インスタンスは第１のタブに前記第１のウェブページを表示するように構成されている、前記インスタンス化することと、
前記クライアントコンピューティングデバイスに、前記第１のタブと関連付けられた第１の出力を送信することであって、前記第１の出力は前記メニューアプリケーションとは異なる表示アプリケーションによって表示されるように構成されている、前記送信することと、
前記第２の指示を受信することと、
前記セッションにおいて、かつ、前記第２の指示を受信することに基づいて、前記ウェブブラウザの第２のタブに前記第２のウェブページを表示させることと、
前記クライアントコンピューティングデバイスに、前記第２のタブと関連付けられた第２の出力を送信することと
を行うように構成されている、
前記システム。
【請求項１７】
前記リモートコンピューティングデバイスが、
前記クライアントコンピューティングデバイスから、そして、前記メニューアプリケーションを介して、第３のウェブページの第３の指示を受信することであって、前記第３の指示は新規なセッションに対する要求を含む、前記受信することと、
前記第３の指示に基づいて、前記新規なセッションをインスタンス化することであって、前記新規なセッションが前記ウェブブラウザの第２のインスタンスを含み、前記ウェブブラウザの前記第２のインスタンスは前記第３のウェブページを表示するように構成されている、前記インスタンス化することと
を行うように更に構成されている、請求項１６に記載のシステム。
【請求項１８】
前記リモートコンピューティングデバイスが、
前記クライアントコンピューティングデバイスから、かつ、前記メニューアプリケーションを介して、第３のウェブページの第３の指示を受信することであって、前記第３の指示は前記ウェブブラウザの特定のタブの第４の指示を含む、前記受信することと、
前記特定のタブに前記第３のウェブページを表示させることと
を行うように更に構成されている、請求項１６に記載のシステム。
【請求項１９】
前記メニューアプリケーションが第２のクライアントコンピューティングデバイス上で実行される、請求項１６に記載のシステム。
【請求項２０】
前記メニューアプリケーションが前記リモートコンピューティングデバイス上の第２のセッションで実行される、請求項１６に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の態様は、コンピュータのハードウェア及び／またはソフトウェアに関する。特に、本発明の１つ以上の態様は、概して広域ネットワーク上のウェブページなどのコンテンツを検索してアクセスするためのコンピュータハードウェア及びソフトウェアに関する。
【背景技術】
【０００２】
インターネットを閲覧するときに、ユーザは頻繁に多数のウェブページにアクセスする。同時に開かれた複数のウェブページは、ウェブブラウザ実行可能形式の同じインスタンスの様々なタブとして表すことができる。これらのタブを用いて、ユーザは、以前のウェブサイトを閉じることなく、現在開いているウェブページから別の現在開いているウェブページに表示を切り替えることができる。
【０００３】
ユーザは、リモートサーバ上の仮想ウェブブラウジングセッションを使用してウェブページを閲覧することがよくある。リモートサーバは、クライアントコンピューティングデバイスで実行することができるものと同一または類似のウェブブラウジングアプリケーションを実行することができる。リモートサーバは、コンピューティングデバイスにウェブブラウジングアプリケーションのビデオとオーディオフィードを送信して、コンピューティングデバイスを介してユーザから入力コマンドを受信することができる。ユーザは、このことにより、クライアントコンピューティングデバイス上で、リモートサーバを介して、自分が直接クライアントコンピューティングデバイス上のウェブページを閲覧することができるのと同様の方法でウェブページを閲覧することができる。これによって、より高速で、より安全なブラウジングサービスをユーザに提供することができ、例えば、認証証明書などのプライベートコンテンツは、比較的安全性の低いクライアントコンピューティングデバイスではなく、安全なリモートサーバに保持することができる。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかし、リモートサーバのリモート性によって、例えば、一度に多数のウェブサイトを閲覧することが困難になるという面もある。多くのリモートサーバ実装において、異なるウェブページはリモートサーバ上の異なるセッションに開かれる可能性があり、それは計算機的に無駄が多く、ユーザが管理するのが困難な場合がある。
【課題を解決するための手段】
【０００５】
以下は、本明細書で説明される様々な態様の簡略化された概要を提示する。この概要は、広範囲な概説ではなく、主要な要素もしくは重要な要素を識別すること、または特許請求の範囲を記述することを意図していない。以下の概要は、以下で提供される更なる詳細な説明への導入的な前置きとして簡略化された形式において一部の概念を提示するにすぎない。
【０００６】
本開示の態様は、リモートウェブブラウジングセッションで複数のウェブブラウザタブを受信及び処理する方法を提供する。
【０００７】
リモートコンピューティングデバイスは、クライアントコンピューティングデバイスに、セッションを提供することができる。リモートコンピューティングデバイスは、セッションを使用して、ウェブブラウザプログラムを実行し、ネットワークを介してクライアントコンピューティングデバイスから入力を受信し、及び／またはネットワークを介してクライアントコンピューティングデバイスにウェブブラウザプログラムに対応する出力を提供することができる。リモートコンピューティングデバイスは、命令を受信して新規なウェブページを開くように構成することができる。命令は、クライアントコンピューティングデバイス、リモートコンピューティングデバイスの別のセッション、またはプロキシなどの別のコンピューティングデバイスからのものであり得る。命令は、新規なウェブページがウェブブラウザプログラムの新規なタブ及び／またはリモートコンピューティングデバイス上の新規なセッションで開かれることを指示することができる。命令は、リモートコンピューティングデバイス上で実行されているヘルパーアプリケーションによって受信することができ、ヘルパーアプリケーションは、命令に対応するセッションを決定することができる。リモートコンピューティングデバイスは、命令に基づいて、セッションのウェブブラウザプログラムで新規なウェブページを開くように構成することができる。
【０００８】
これらの詳細及び他の特徴は、添付図面及び下記の説明において記載される。他の特徴及び利点は、説明及び図面、ならびに請求項から明らかになる。
【０００９】
本開示のこれら及び他の特徴、態様及び利点は、以下の説明、請求項及び図面を参照してよりよく理解されるであろう。本開示は、例証として例示されており、同様の数字が同様の要素を示す添付の図面に限定はされない。
【図面の簡単な説明】
【００１０】
【図１】本明細書で説明される１つ以上の例示的な態様に従って使用することができる例示的なコンピュータシステムアーキテクチャを示す。
【図２】本明細書で説明される１つ以上の例示的な態様に従って使用することができる例示的なリモートアクセスシステムアーキテクチャを示す。
【図３】本明細書で説明される１つ以上の例示的な態様に従って使用することができる例示的な仮想化（ハイパーバイザ）システムアーキテクチャを示す。
【図４】リモートコンピューティングデバイス及びクライアントコンピューティングデバイスを含む例示的なブロック図を示す。
【図５】リモートコンピューティングデバイスによって実行することができるフローチャートである。
【図６】クライアントコンピューティングデバイスによって実行することができる例示的なメニューアプリケーションを示す。
【発明を実施するための形態】
【００１１】
様々な実施形態の以下の説明では、上記で特定され、本明細書の一部を形成する添付図面が参照され、添付図面では、本明細書で説明される態様を実施することができる様々な実施形態を例として示している。本明細書で説明される範囲を逸脱することなく、他の実施形態が利用されてもよく、構造的及び機能的な修正が行われてもよいことを理解されたい。様々な態様は、他の実施形態を行うことができ、様々な異なる方法で実践または実行が可能である。
【００１２】
本明細書で使用されている表現及び用語は、説明を目的としており、限定的なものと見なすべきでないことも理解されたい。むしろ、本明細書で使用される語句及び用語は、それらの最も広い解釈及び意味を与えられるべきである。「ｉｎｃｌｕｄｉｎｇ（含む）」、「ｃｏｍｐｒｉｓｉｎｇ（含む）」、及びこれらの変形の使用は、その後に列挙される項目及びそれらの等価物、並びに、追加の項目及びそれらの等価物を包含することを意味する。「取り付けられた」、「接続された」、「結合された」、「配置された」、「係合された」という用語及び同様の用語の使用は、直接的な及び間接的な取り付け、接続、結合、配置、及び係合の両方を含むことを意味する。
【００１３】
図１は、本明細書で説明される１つ以上の例示的な態様をスタンドアロン及び／またはネットワーク環境において実装するために使用することができるシステムアーキテクチャ及びデータ処理デバイスの一例を示す。コンピュータソフトウェア、ハードウェア、及びネットワークは、スタンドアロン、ネットワーク、リモートアクセス（リモートデスクトップの別名でも知られる）、仮想、及び／または、クラウドベースの環境等を含む、様々な異なるシステム環境で利用されてもよい。データサーバ１０３、ウェブサーバ１０５、及びクライアントコンピュータ１０７を含むデバイスは、インターネットなどの広域ネットワーク（ＷＡＮ）１０１を介して相互接続することができる。プライベートイントラネット、企業ネットワーク、ローカルエリアネットワーク（ＬＡＮ）、メトロポリタンエリアネットワーク（ＭＡＮ）、ワイヤレスネットワーク、パーソナルエリアネットワーク（ＰＡＮ）等、他のネットワークも追加または代替として使用されてもよい。ＷＡＮ１０１は、例示を目的としたものであり、より少ないまたは追加のコンピュータネットワークで置き換えられてもよい。ローカルエリアネットワーク１４３は、任意の既知のＬＡＮトポロジの１つ以上を有してもよく、イーサネット等の様々な異なるプロトコルの１つ以上を使用してもよい。データサーバ１０３、ウェブサーバ１０５及びクライアントコンピュータ１０７を含むデバイスは、ツイストペア線、同軸ケーブル、光ファイバ、電波、または他の通信媒体を介してネットワークの１つ以上に接続されてもよい。
【００１４】
本明細書で使用され、図面に示される用語「ネットワーク」は、リモートストレージデバイスが１つ以上の通信パスを介して共に結合されるシステムだけでなく、記憶機能を有するそのようなシステムに随時結合することができるスタンドアロンデバイスも指す。したがって、用語「ネットワーク」は、「物理ネットワーク」だけでなく、全ての物理ネットワークにわたって存在する（単一のエンティティに起因する）データから構成される「コンテンツネットワーク」も含む。
【００１５】
コンポーネントは、データサーバ１０３、ウェブサーバ１０５、及びクライアントコンピュータ１０７、１０９を含み得る。データサーバ１０３は、本明細書で説明される１つ以上の例示的な態様を実行するためのデータベース及び制御ソフトウェアの全体的なアクセス、制御、及び管理を提供することができる。データサーバ１０３は、ウェブサーバ１０５に接続されてもよく、ウェブサーバ１０５を通じて、ユーザは要求に応じてデータと対話し、データを取得することができる。加えて、または、代わりに、データサーバ１０３は、それ自体がウェブサーバとして機能し、インターネットに直接接続されてもよい。データサーバ１０３は、ローカルエリアネットワーク１４３、ＷＡＮ１０１（例えば、インターネット）を介して、直接もしくは間接接続を介して、または他の何らかのネットワークを介して、ウェブサーバ１０５に接続されてもよい。ユーザは、クライアントコンピュータ１０７、１０９を使用して、例えば、ウェブサーバ１０５によってホストされる１つ以上の外部に公開されたウェブサイトを介してデータサーバ１０３に接続するウェブブラウザを使用して、データサーバ１０３と対話してもよい。クライアントコンピュータ１０７、１０９は、データサーバ１０３に記憶されたデータにアクセスするためにデータサーバ１０３と協力して使用されてもよく、または、他の目的のために使用されてもよい。例えば、ユーザは、クライアントコンピューティングデバイス１０７を介して、当技術分野で知られているように、インターネットブラウザを使用して、または、（インターネット等の）コンピュータネットワークを介してウェブサーバ１０５及び／またはデータサーバ１０３と通信するソフトウェアアプリケーションを実行することによって、ウェブサーバ１０５にアクセスしてもよい。
【００１６】
サーバ及びアプリケーションは、同一の物理マシン上で組み合わされてもよく、別個の仮想アドレスもしくは論理アドレスを保持してもよく、または別個の物理マシン上に常駐してもよい。図１は、使用することができるネットワークアーキテクチャの一例を示しているにすぎず、当業者は、本明細書で更に説明されるように、使用される特定のネットワークアーキテクチャ及びデータ処理デバイスは変わってもよく、それらが提供する機能に依存することを理解されよう。例えば、ウェブサーバ１０５及びデータサーバ１０３によって提供されるサービスは、単一のサーバ上で組み合わされてもよい。
【００１７】
各データサーバ１０３、ウェブサーバ１０５及びクライアントコンピュータ１０７、１０９は、任意のタイプの既知のコンピュータ、サーバ、またはデータ処理デバイスであってもよい。データサーバ１０３は、例えば、データサーバ１０３の全体的な動作を制御するプロセッサ１１１を含んでもよい。データサーバ１０３は更に、ランダムアクセスメモリ（ＲＡＭ）１１３、リードオンリメモリ（ＲＯＭ）１１５、ネットワークインタフェース１１７、入力／出力インタフェース１１９（例えば、キーボード、マウス、ディスプレイ、プリンタ等）、及びメモリ１２１を含んでもよい。入力／出力（Ｉ／Ｏ）１１９は、データまたはファイルの読み出し、書き込み、表示、及び／または印刷のための様々なインタフェースユニット及びドライブを含んでもよい。メモリ１２１は、データサーバ１０３の全体的な動作を制御するオペレーティングシステムソフトウェア１２３、データサーバ１０３に本明細書で説明される態様を実行するように命令する制御ロジック１２５、並びに二次的な機能性、サポート機能性、及び／または本明細書で説明される態様と併せて使用されてもよく、もしくは使用されなくてもよい他の機能性を提供する他のアプリケーションソフトウェア１２７を更に記憶してもよい。制御ロジック１２５は、本明細書ではデータサーバソフトウェアと呼ぶこともある。データサーバソフトウェアの機能性は、制御ロジックにコード化されたルールに基づいて自動的に行われた操作もしくは決定、システムに入力を提供するユーザによって手動で行われた操作もしくは決定、及び／またはユーザ入力に基づく自動処理の組み合わせ（クエリ、データ更新等）を指してもよい。
【００１８】
メモリ１２１はまた、第１のデータベース１２９及び第２のデータベース１４１を含む、本明細書で説明される１つ以上の態様の実行において使用されるデータを記憶してもよい。第１のデータベースは、（例えば、別個のテーブル、レポート等として）第２のデータベースを含んでもよい。つまり、情報は、システム設計に応じて、単一のデータベースに記憶でき、または、異なる論理データベース、仮想データベース、もしくは物理データベースに分離できる。データサーバ１０３、ウェブサーバ１０５及び／またはクライアントコンピュータ１０７、１０９は、データサーバ１０３について説明したものと同様であるかまたは異なるアーキテクチャを有してもよい。当業者は、本明細書で説明されるデータサーバ１０３（または、デバイス１０５、１０７及び／または１０９）の機能性が、例えば、複数のコンピュータにわたって処理負荷を分散し、地理的位置、ユーザアクセスレベル、サービス品質（ＱｏＳ）などに基づいてトランザクションを分けるよう、複数のデータ処理デバイスにわたって展開されてもよいことを理解されよう。
【００１９】
１つ以上の態様は、本明細書で説明される１つ以上のコンピュータまたは他のデバイスによって実行される、１つ以上のプログラムモジュール等、コンピュータ使用可能もしくは可読データ、及び／またはコンピュータ実行可能命令において具体化されてもよい。一般に、プログラムモジュールは、コンピュータまたは他のデバイスのプロセッサで実行されると、特定のタスクを実行する、または、特定の抽象的なデータタイプを実装する、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造等を含む。モジュールは、実行のために後にコンパイルされるソースコードプログラミング言語において記述されてもよく、またはハイパーテキストマークアップ言語（ＨＴＭＬ）もしくは拡張マークアップ言語（ＸＭＬ）など（それらに限定されない）のスクリプト言語において記述されてもよい。コンピュータ実行可能命令は、不揮発性記憶装置等のコンピュータ可読媒体に記憶されてもよい。ハードディスク、コンパクトディスク、光学記憶装置、磁気記憶装置、及び／またはそれらの任意の組み合わせを含む、任意の適切なコンピュータ可読記憶媒体が利用されてもよい。加えて、本明細書で説明されるデータまたはイベントを表す様々な伝送（非記憶）媒体は、金属線、光ファイバ、及び／または無線伝送媒体（例えば、空気及び／または空間）等、信号伝播媒体を通じて移動する電磁波の形式において、送信元と宛先の間で伝達されてもよい。本明細書に記載する様々な態様は、方法、データ処理システム、またはコンピュータプログラム製品として具体化されてもよい。したがって、様々な機能が、ソフトウェア、ファームウェア、及び／または、集積回路、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）等のハードウェアもしくはハードウェア同等物の形で全体的または部分的に具体化されてもよい。特定のデータ構造を使用して、本明細書に記載する１つ以上の態様をより効果的に実装してもよく、そのようなデータ構造は、本明細書に記載するコンピュータ実行可能命令及びコンピュータ使用可能データの範囲内で企図される。
【００２０】
更に図２を参照して、本明細書で説明される１つ以上の態様は、リモートアクセス環境において実装されてもよい。図２は、本明細書に記載する１つ以上の例示的な態様に従って使用され得るコンピューティング環境２００内のコンピューティングデバイス２０１を含む例示的なシステムアーキテクチャを示す。コンピューティングデバイス２０１は、クライアントアクセスデバイスに仮想マシンを提供するように構成された単一サーバまたはマルチサーバのデスクトップ仮想化システム（例えば、リモートアクセスまたはクラウドシステム）のサーバ（例えば、サーバ２０６ａ）として使用されてもよい。コンピューティングデバイス２０１は、ＲＡＭ２０５、ＲＯＭ２０７、入力／出力（Ｉ／Ｏ）モジュール２０９、及びメモリ２１５を含む、サーバ及びその関連コンポーネントの全体的な動作を制御するためのプロセッサ２０３を有してもよい。
【００２１】
Ｉ／Ｏモジュール２０９は、コンピューティングデバイス２０１のユーザが入力を提供し得るマウス、キーパッド、タッチスクリーン、スキャナ、光学式リーダ、及び／またはスタイラス（または他の入力デバイス（複数可））を含んでもよく、また、音声出力を提供するためのスピーカの１つ以上と、テキスト、オーディオビジュアル、及び／またはグラフィカル出力を提供するためのビデオディスプレイデバイスの１つ以上も含んでもよい。本明細書に記載する様々な機能を実行するために、コンピューティングデバイス２０１を専用コンピューティングデバイスに構成する命令をプロセッサ２０３に提供するソフトウェアがメモリ２１５及び／または他のストレージ内に記憶されてもよい。例えば、メモリ２１５は、オペレーティングシステム２１７、アプリケーションプログラム２１９、及び関連するデータベース２２１等、コンピューティングデバイス２０１によって使用されるソフトウェアを記憶してもよい。
【００２２】
コンピューティングデバイス２０１は、端末２４０（クライアントコンピューティングデバイスとも呼ばれる）等の１つ以上のリモートコンピュータへの接続をサポートするネットワーク環境において動作してもよい。端末２４０は、前述した要素の多くまたは全てを含むパーソナルコンピュータ、モバイルデバイス、ラップトップコンピュータ、タブレット、またはサーバであってもよい。図２に示すネットワーク接続は、ローカルエリアネットワーク（ＬＡＮ）２２５及び広域ネットワーク（ＷＡＮ）２２９を含むが、他のネットワークも含んでもよい。ＬＡＮネットワーキング環境で使用される場合、コンピューティングデバイス２０１は、ネットワークインタフェースまたはアダプタ２２３を介してＬＡＮ２２５に接続されてもよい。ＷＡＮネットワーキング環境で使用される場合、コンピューティングデバイス２０１は、コンピュータネットワーク２３０（例えば、インターネット）等のＷＡＮ２２９を介して通信を確立するためのモデム２２７または他の広域ネットワークインタフェースを含んでもよい。示されているネットワーク接続は例示的なものであり、コンピュータ間の通信リンクを確立する他の手段を使用してもよいことは理解されよう。コンピューティングデバイス２０１及び／または端末２４０は、バッテリ、スピーカ、及びアンテナ（図示せず）等の他の様々なコンポーネントを含むモバイル端末（例えば、携帯電話、スマートフォン、パーソナルデジタルアシスタント（ＰＤＡ）、ノートブック等）であってもよい。
【００２３】
本明細書で説明される態様は、他の多くの汎用または特殊目的コンピューティングシステム環境または構成により動作してもよい。本明細書で説明される態様による使用に適切であることができる他のコンピューティングシステム、環境、及び／または構成の例には、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルドもしくはラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラム可能な家電、ネットワークパーソナルコンピュータ、ミニコンピュータ、メインフレームコンピュータ、上記のシステムもしくはデバイスの任意のものを含む分散コンピューティング環境等が含まれるが、これらに限定されない。
【００２４】
図２に示すように、１つ以上のクライアントコンピューティングデバイス２４０は、１つ以上のサーバ２０６ａ〜２０６ｎ（本明細書では一般に「サーバ（複数可）２０６」と呼ばれる）と通信してもよい。一実施形態では、コンピューティング環境２００は、サーバ（複数可）２０６とクライアントコンピューティングデバイス２４０の間にインストールされたネットワークアプライアンスを含んでもよい。ネットワークアプライアンスは、クライアント／サーバ接続を管理してもよく、場合によっては、複数のサーバ２０６間でクライアント接続の負荷を分散できる。
【００２５】
クライアントコンピューティングデバイス２４０は、単一のクライアントコンピューティングデバイス２４０またはクライアントコンピューティングデバイス２４０の単一グループと呼ばれる場合があり、一方、サーバ（複数可）２０６は、単一のサーバ２０６またはサーバ２０６の単一のグループと呼ばれる場合がある。一実施形態では、単一のクライアントコンピューティングデバイス２４０は複数のサーバ２０６と通信し、別の実施形態では、単一のサーバ２０６は複数のクライアントコンピューティングデバイス２４０と通信する。更に別の実施形態では、単一のクライアントコンピューティングデバイス２４０は、単一のサーバ２０６と通信する。
【００２６】
クライアントコンピューティングデバイス２４０は、クライアントマシン（複数可）、クライアント（複数可）、クライアントコンピュータ（複数可）、クライアントコンピューティングデバイス（複数可）、クライアントコンピューティングデバイス（複数可）、ローカルマシン（複数可）、リモートマシン（複数可）、クライアントノード（複数可）、エンドポイント（複数可）、及び／またはエンドポイントノード（複数可）のいずれかによって言及できるが、これらの用語が全てではない。サーバ２０６は、サーバ（複数可）、リモートコンピューティングデバイス（複数可）、ローカルマシン（複数可）、リモートマシン（複数可）、サーバファーム（複数可）、及び／またはホストコンピューティングデバイス（複数可）のいずれかによって言及されてもよいが、これらの用語が全てではない。
【００２７】
一実施形態では、クライアントコンピューティングデバイス２４０は、仮想マシンであってもよい。仮想マシンは、任意の仮想マシンであってもよく、仮想マシンは、タイプ１またはタイプ２のハイパーバイザ、例えば、Ｃｉｔｒｉｘ  Ｓｙｓｔｅｍｓ、ＩＢＭ、Ｖｍｗａｒｅによって開発されたハイパーバイザ、または任意の他のハイパーバイザによって管理される任意の仮想マシンであってもよい。一部の態様では、仮想マシンはハイパーバイザによって管理されてもよく、他の態様では、仮想マシンは、サーバ２０６上で実行されるハイパーバイザまたはクライアントコンピューティングデバイス２４０上で実行されるハイパーバイザによって管理されてもよい。
【００２８】
クライアントコンピューティングデバイス２４０は、サーバ２０６または他のリモートに配置されたマシン上で、リモートで実行されるアプリケーションによって生成されたアプリケーション出力を表示してもよい。クライアントコンピューティングデバイス２４０は、仮想マシン受信機プログラムまたはアプリケーションを実行して、アプリケーションウィンドウ、ブラウザ、または他の出力ウィンドウに出力を表示してもよい。一例では、アプリケーションはデスクトップであるが、他の例では、アプリケーションはデスクトップを生成または提示するアプリケーションである。デスクトップは、ローカル及び／またはリモートのアプリケーションを統合できるオペレーティングシステムのインスタンスにユーザインタフェースを提供するグラフィカルシェルを含んでもよい。アプリケーションは、本明細書では、オペレーティングシステムのインスタンス（及びオプションでデスクトップも）がロードされた後に実行されるプログラムである。
【００２９】
サーバ２０６は、リモートプレゼンテーションプロトコルまたは他のプログラムを使用して、クライアント上で実行されるシンクライアントまたはリモート表示アプリケーションにデータを送信して、サーバ２０６上で実行されるアプリケーションによって生成される表示出力を提示してもよい。シンクライアントまたはリモートディスプレイプロトコルは、以下のプロトコルのいずれかであってもよいが、これらが全てではない。すなわち、フロリダ州フォートローダーデールのＣｉｔｒｉｘ  Ｓｙｓｔｅｍｓ社が開発した独立コンピューティングアーキテクチャ（ＩＣＡ）プロトコル、または、ワシントン州レドモンドのＭｉｃｒｏｓｏｆｔ  Ｃｏｒｐｏｒａｔｉｏｎによって製造されたリモートデスクトッププロトコル（ＲＤＰ）である。
【００３０】
リモートコンピューティング環境は、例えば、クラウドコンピューティング環境において、サーバ２０６ａ〜２０６ｎがサーバファームに論理的に共にグループ化されるように、２つ以上のサーバ２０６ａ〜２０６ｎを含み得る。サーバファームは、論理的に共にグループ化されながら地理的に分散しているサーバ２０６、または論理的に共にグループ化され、互いに近接して配置されたサーバ２０６を含んでもよい。サーバファーム内の地理的に分散したサーバ２０６ａ〜２０６ｎは、ＷＡＮ（広域）、ＭＡＮ（メトロポリタン）、またはＬＡＮ（ローカル）を使用して通信でき、異なる地理的領域は、異なる大陸、ある大陸の異なる地域、異なる国、異なる州、異なる都市、異なるキャンパス、異なる部屋、または前述の地理的位置の任意の組み合わせとして特徴付けることができる。サーバファームは、単一エンティティとして管理されてもよく、及び／または複数サーバファームを含んでもよい。
【００３１】
サーバファームは、類似のタイプのオペレーティングシステムプラットフォーム（例えば、ＷＩＮＤＯＷＳ（登録商標）、ＵＮＩＸ（登録商標）、ＬＩＮＵＸ、ｉＯＳ、ＡＮＤＲＯＩＤ（登録商標）、ＳＹＭＢＩＡＮ等）を実行するサーバ２０６を含んでもよい。サーバファームは、第１のタイプのオペレーティングシステムプラットフォームを実行する１つ以上のサーバの第１のグループと、第２のタイプのオペレーティングシステムプラットフォームを実行する１つ以上のサーバの第２のグループとを含んでもよい。
【００３２】
サーバ２０６は、必要に応じて、任意のタイプのサーバとして構成されてもよく、例えば、ファイルサーバ、アプリケーションサーバ、ウェブサーバ、プロキシサーバ、アプライアンス、ネットワークアプライアンス、ゲートウェイ、アプリケーションゲートウェイ、ゲートウェイサーバ、仮想化サーバ、展開サーバ、セキュアソケット層（ＳＳＬ）ＶＰＮサーバ、ファイアウォール、ウェブサーバ、アプリケーションサーバ、または、マスタアプリケーションサーバとしてのサーバ、アクティブディレクトリを実行するサーバ、または、ファイアウォール機能、アプリケーション機能、もしくは負荷分散機能を提供するアプリケーション加速プログラムを実行するサーバとして構成されてもよい。他の種類のサーバも使用されてもよい。
【００３３】
第１のサーバ２０６ａは、クライアントコンピューティングデバイス２４０から要求を受信し、要求を第２のサーバ２０６ｂ（図示せず）に転送し、クライアントコンピューティングデバイス２４０によって生成された要求に対して第２のサーバ２０６ｂ（図示せず）からの応答により応答することができる。第１のサーバ２０６ａは、クライアントコンピューティングデバイス２４０に対して利用可能なアプリケーションの列挙、並びにアプリケーションの列挙内で識別されたアプリケーションをホストするサーバ２０６と関連付けられたアドレス情報を取得することができる。次いで、第１のサーバ２０６ａは、ウェブインタフェースを使用してクライアントの要求に対する応答を提示し、クライアントコンピューティングデバイス２４０と直接通信して、識別されたアプリケーションへのアクセスをクライアントコンピューティングデバイス２４０に提供することができる。１つ以上のクライアントコンピューティングデバイス２４０及び／または１つ以上のサーバ２０６は、コンピュータネットワーク２３０、例えばＷＡＮ１０１を介してデータを送信してもよい。
【００３４】
図３は、例示的なデスクトップ仮想化システムの高レベルのアーキテクチャを示す。デスクトップ仮想化システムは、仮想デスクトップ及び／または仮想アプリケーションを１つ以上のクライアントコンピューティングデバイス２４０に提供するように構成された１つ以上の仮想化サーバ３０１を含む、単一サーバシステム、マルチサーバシステム、またはクラウドシステムであってもよい。本明細書で使用されるとき、デスクトップは、１つ以上のアプリケーションをホストすることができ、及び／または実行することができるグラフィカル環境または空間を指す。デスクトップは、ローカル及び／またはリモートのアプリケーションを統合できるオペレーティングシステムのインスタンスにユーザインタフェースを提供するグラフィカルシェルを含んでもよい。アプリケーションは、オペレーティングシステム（及びオプションでデスクトップ）のインスタンスがロードされた後に実行されるプログラムを含んでもよい。オペレーティングシステムの各インスタンスは、物理的（例えば、デバイスごとに１つのオペレーティングシステム）または仮想的（例えば、単一のデバイスで実行されているＯＳの多くのインスタンス）であってもよい。各アプリケーションはローカルデバイス上で実行されてもよく、リモート配置されたデバイス上で実行（例えば、リモート化）されてもよい。
【００３５】
仮想化サーバ３０１は、仮想化環境、例えば、単一サーバ、マルチサーバまたはクラウドコンピューティング環境におけるコンピューティングデバイスでもよい。図３に図示される仮想化サーバ３０１は、図２で例示されるサーバ２０６及び／または他の既知のコンピューティングデバイスとして展開され、及び／またはそれらによって実装され得る。仮想化サーバ３０１には、１つ以上の物理ディスク３０４、１つ以上の物理デバイス３０６、１つ以上の物理プロセッサ３０８、及び１つ以上の物理メモリ３１６を含むことができるハードウェア層が含まれる。ファームウェア３１２は、物理メモリ３１６のメモリ素子内に記憶されてもよく、物理プロセッサ３０８の１つ以上によって実行されてもよい。仮想化サーバ３０１は、オペレーティングシステム３１４を更に含んでもよく、オペレーティングシステム３１４は、物理メモリ３１６内のメモリ素子に記憶されてもよく、物理プロセッサ３０８の１つ以上によって実行されてもよい。ハイパーバイザ３０２は、物理メモリ３１６内のメモリ素子に記憶されてもよく、物理プロセッサ３０８のうちの１つ以上によって実行されてもよい。
【００３６】
物理プロセッサ３０８のうちの１つ以上で実行するのは、１つ以上の仮想マシン３３２Ａ〜３３２Ｃ（全体的に、３３２）であってもよい。各仮想マシン３３２は、仮想ディスク３２６Ａ〜３２６Ｃ及び／または仮想プロセッサ３２８Ａ〜３２８Ｃを有してもよい。例えば、第１の仮想マシン３３２Ａは、仮想プロセッサ３２８Ａを使用して、ツールスタック３２４を含む制御プログラム３２０を実行してもよい。制御プログラム３２０は、制御仮想マシン、Ｄｏｍ０、ドメイン０、またはシステム管理及び／または制御に使用される他の仮想マシンを指してもよい。１つ以上の仮想マシン３３２Ｂ〜３３２Ｃは、仮想プロセッサ３２８Ｂ〜３２８Ｃを使用して、オペレーティングシステム３３０Ａ〜３３０Ｂ（ゲストオペレーティングシステムとしても知られる）を実行することができる。
【００３７】
仮想化サーバ３０１は、仮想化サーバ３０１と通信するハードウェアのうちの１つ以上の部分を有するハードウェア層３１０を含んでもよい。ハードウェア層３１０は、１つ以上の物理ディスク３０４、１つ以上の物理デバイス３０６、１つ以上の物理プロセッサ３０８、及び１つ以上の物理メモリ３１６を含むことができる。物理コンポーネント、例えば、１つ以上の物理ディスク３０４、１つ以上の物理デバイス３０６、１つ以上の物理プロセッサ３０８、及び／または１つ以上の物理メモリ３１６は、例えば、上記のコンポーネントのいずれかを含むことができる。物理デバイス３０６は、例えば、ネットワークインタフェースカード、ビデオカード、キーボード、マウス、入力デバイス、モニタ、ディスプレイデバイス、スピーカ、光学ドライブ、ストレージデバイス、ユニバーサルシリアルバス接続、プリンタ、スキャナ、ネットワーク要素（例えば、ルータ、ファイアウォール、ネットワークアドレストランスレータ、ロードバランサ、仮想プライベートネットワーク（ＶＰＮ）ゲートウェイ、動的ホスト構成プロトコル（ＤＨＣＰ）ルータ等）、または、仮想化サーバ３０１に接続または通信する任意のデバイスを含んでもよい。ハードウェア層３１０内の物理メモリ３１６は、任意のタイプのメモリを含んでもよい。物理メモリ３１６は、データを記憶してもよく、１つ以上のプログラム、または実行可能命令のセットを記憶してもよい。ファームウェア３１２は、仮想化サーバ３０１の物理メモリ３１６の中に記憶されてもよい。物理メモリ３１６に記憶されたプログラムまたは実行可能命令は、仮想化サーバ３０１の１つ以上のプロセッサによって実行されてもよい。
【００３８】
仮想化サーバ３０１は、ハイパーバイザ３０２を含むこともできる。ハイパーバイザ３０２は、任意の数の仮想マシン３３２を作成及び管理するために仮想化サーバ３０１上の物理プロセッサ３０８によって実行されるプログラムであってもよい。ハイパーバイザ３０２は、仮想マシンモニタまたはプラットフォーム仮想化ソフトウェアと呼ばれる場合がある。ハイパーバイザ３０２は、実行可能命令と、コンピューティングマシン上で実行されている仮想マシンを監視するハードウェアとの任意の組み合わせであってもよい。ハイパーバイザ３０２は、タイプ２ハイパーバイザであってもよく、この場合、ハイパーバイザは、仮想化サーバ３０１上で実行されるオペレーティングシステム３１４内で実行される。その後、仮想マシンはハイパーバイザより上のレベルで実行してもよい。タイプ２ハイパーバイザは、タイプ２ハイパーバイザがユーザのオペレーティングシステムと対話するように、ユーザのオペレーティングシステムのコンテキスト内で実行されてもよい。加えて、または、代わりに、仮想化環境内の１つ以上の仮想化サーバ３０１は代わりに、タイプ１ハイパーバイザ（図示せず）を含んでもよい。タイプ１ハイパーバイザは、ハードウェア層３１０内のハードウェア及びリソースに直接アクセスすることにより、仮想化サーバ３０１上で実行されてもよい。すなわち、図に示すように、タイプ２ハイパーバイザ３０２は、オペレーティングシステム３１４を介してシステムリソースにアクセスするが、タイプ１ハイパーバイザは、オペレーティングシステム３１４無しで全てのシステムリソースに直接アクセスしてもよい。タイプ１ハイパーバイザは、仮想化サーバ３０１の１つ以上の物理プロセッサ３０８で直接実行されてもよく、物理メモリ３１６に記憶されたプログラムデータを含んでもよい。
【００３９】
ハイパーバイザ３０２は、システムリソースに直接アクセスするオペレーティングシステム３３０または制御プログラム３２０をシミュレーションする任意の方法で、仮想マシン３３２上で実行されるオペレーティングシステム３３０または制御プログラム３２０に仮想リソースを提供できる。システムリソースは、仮想化サーバ３０１及び／またはハードウェア層３１０に含まれる物理デバイス３０６、物理ディスク３０４、物理プロセッサ３０８、物理メモリ３１６、及び任意の他のコンポーネントを含むことができるが、これらに限定されない。ハイパーバイザ３０２を使用して、仮想ハードウェアのエミュレート、物理ハードウェアの分割、物理ハードウェアの仮想化、及び／またはコンピューティング環境へのアクセスを提供する仮想マシンの実行を行ってもよい。加えて、または、代わりに、ハイパーバイザ３０２は、仮想化サーバ３０１上で実行される仮想マシン３３２のプロセッサスケジューリング及びメモリ分割を制御してもよい。ハイパーバイザ３０２は、カリフォルニア州パロアルトのＶＭＷａｒｅ社によって製造されるハイパーバイザ、オープンソースのＸｅｎＰｒｏｊｅｃｔ．ｏｒｇコミュニティによって開発が監督されているオープンソース製品であるＸＥＮＰＲＯＪＥＣＴハイパーバイザ、Ｍｉｃｒｏｓｏｆｔ社によって提供されるＨｙｐｅｒＶ、ＶｉｒｔｕａｌＳｅｒｖｅｒ、または仮想ＰＣハイパーバイザ等を含んでもよい。仮想化サーバ３０１は、ゲストオペレーティングシステムが実行し得る仮想マシンプラットフォームを作成するハイパーバイザ３０２を実行してもよい。仮想化サーバ３０１は、ホストサーバと呼ばれてもよい。そのような仮想化サーバの例は、フロリダ州フォートローダーデールのＣｉｔｒｉｘ  Ｓｙｓｔｅｍｓ社が提供するＸＥＮＳＥＲＶＥＲである。
【００４０】
ハイパーバイザ３０２は、ゲストオペレーティングシステム３３０が実行される１つ以上の仮想マシン３３２Ｂ〜３３２Ｃ（全体的に３３２）を作成してもよい。ハイパーバイザ３０２は、仮想マシンイメージをロードして、仮想マシン３３２を作成してもよい。加えて、または、代わりに、ハイパーバイザ３０２は、仮想マシン３３２内でゲストオペレーティングシステム３３０を実行してもよい。加えて、または、代わりに仮想マシン３３２は、ゲストオペレーティングシステム３３０を実行してもよい。
【００４１】
仮想マシン３３２を作成することに加えて、ハイパーバイザ３０２は、１つ以上の仮想マシン３３２の実行を制御してもよい。ハイパーバイザ３０２は、仮想化サーバ３０１によって提供される１つ以上のハードウェアリソース（例えば、ハードウェア層３１０内で利用可能な任意のハードウェアリソース）の抽象化を１つ以上の仮想マシン３３２に提示してもよい。ハイパーバイザ３０２は、仮想マシン３３２が仮想化サーバ３０１において利用可能な物理プロセッサ３０８にアクセスする方法を制御してもよい。物理プロセッサ３０８へのアクセスの制御は、仮想マシン３３２がプロセッサ３０８にアクセスを有すべきか否か、及び物理プロセッサ機能が仮想マシン３３２にどのように提示されるかを決定することを含んでもよい。
【００４２】
図３に示すように、仮想化サーバ３０１は、１つ以上の仮想マシン３３２をホストするかまたは実行してもよい。仮想マシン３３２は、実行可能命令のセットであり、実行可能命令のセットは、プロセッサによって実行されると、物理コンピュータの動作を模倣して、仮想マシン３３２が物理コンピューティングデバイスのようにプログラム及びプロセスを実行できるようにする。図３は、仮想化サーバ３０１が３つの仮想マシン３３２をホストする実施形態を示す。仮想化サーバ３０１は、任意の数の仮想マシン３３２をホストすることができる。ハイパーバイザ３０２は、各仮想マシン３３２に、その仮想マシン３３２が利用可能な物理ハードウェア、メモリ、プロセッサ、及び他のシステムリソースの一意の仮想ビューを提供してもよい。一意の仮想ビューは、仮想マシンのパーミッション、１つ以上の仮想マシン識別子へのポリシーエンジンの適用、仮想マシンにアクセスするユーザ、仮想マシンで実行するアプリケーション、仮想マシンによってアクセスされるネットワーク、または任意の他の所望の基準のうちの１つ以上に基づくことができる。例えば、ハイパーバイザ３０２は、１つ以上の安全でない仮想マシン及び１つ以上の安全な仮想マシンを作成してもよい。安全な仮想マシンがアクセスすることを許可され得るリソース、ハードウェア、メモリ位置、及びプログラムに、安全でない仮想マシンがアクセスすることを防止してもよい。加えて、または、代わりに、ハイパーバイザ３０２は、仮想マシン３３２に対して利用可能な物理ハードウェア、メモリ、プロセッサ、及び他のシステムリソースの同様の仮想ビューを各仮想マシン３３２に提供してもよい。
【００４３】
各仮想マシン３３２は、仮想ディスク３２６Ａ〜３２６Ｃ（全体的に３２６）及び仮想プロセッサ３２８Ａ〜３２８Ｃ（全体的に３２８）を含んでもよい。仮想ディスク３２６は、仮想化サーバ３０１の１つ以上の物理ディスク３０４の仮想化ビュー、または仮想化サーバ３０１の１つ以上の物理ディスク３０４の一部の仮想化ビューであってもよい。物理ディスク３０４の仮想化ビューは、ハイパーバイザ３０２によって生成、提供、及び管理することができる。ハイパーバイザ３０２は、各仮想マシン３３２に物理ディスク３０４の一意のビューを提供してもよい。したがって、各仮想マシン３３２に含まれる仮想ディスク３２６は、他の仮想ディスク３２６と比較されるときに一意であってもよい。
【００４４】
仮想プロセッサ３２８は、仮想化サーバ３０１の１つ以上の物理プロセッサ３０８の仮想化ビューであってもよい。物理プロセッサ３０８の仮想化ビューは、ハイパーバイザ３０２によって生成、提供、及び管理することができる。仮想プロセッサ３２８は、１つ以上の物理プロセッサ３０８と同じ特性のいくつかまたはすべてを有することができる。加えて、または、代わりに、仮想プロセッサ３２８は、仮想プロセッサ３２８の特性の少なくとも一部が対応する物理プロセッサ３０８の特性とは異なるように、物理プロセッサ３０８の修正されたビューを提供する。
【００４５】
図４は、リモートコンピューティングデバイス及び複数のクライアントコンピューティングデバイスの簡略ブロック図を示す。リモートコンピューティングデバイス４１０は、１つ以上のセッション４１１．１〜ｎ及び／またはヘルパーアプリケーション４４０を含むことができる。各セッションは、１つ以上のウェブブラウザアプリケーション４１２．１〜ｎを含むことができる。リモートコンピューティングデバイス４１０は、例えば、ネットワーク４３０を介して、１つ以上のクライアントコンピューティングデバイス４２０．１〜ｎに、通信可能に結合することができる。各クライアントコンピューティングデバイスは、１つ以上の出力デバイス４２１．１〜ｎ及び１つ以上の入力デバイス４２２．１〜ｎに関連付けることができる。リモートコンピューティングデバイス４１０は、仮想化サーバ３１０、データサーバ１０３、ウェブサーバ１０５、及び／またはサーバ２０６のすべて、複数、または一部であってもよい。セッションは、仮想マシン３３２Ａ〜３３２Ｃのすべて、複数、または一部であってもよい。クライアントコンピューティングデバイス４２０．１〜ｎは、クライアントコンピュータ１０７、１０９、及び／またはクライアントコンピューティングデバイス２４０のすべて、複数、または一部であってもよい。リモートコンピューティングデバイス４１０及びクライアントコンピューティングデバイス４２０．１〜ｎは、ネットワーク４３０を介して接続することができ、ネットワーク４３０は、ＷＡＮ１０１、ＬＡＮ２２５、ＷＡＮ２２９、コンピュータネットワーク２３０等のすべて、複数、または一部であってもよい。セッション４１１．１〜ｎ、ウェブブラウザアプリケーション４１２．１〜ｎ、クライアントコンピューティングデバイス４２０．１〜ｎ、ディスプレイ４２１．１〜ｎ及び入力デバイス４２２．１〜ｎは複数として示されているが、図３において示されているいずれの要素も、単数でも複数でもよい。
【００４６】
リモートコンピューティングデバイス４１０は、１つ以上のセッション４１１．１〜ｎを管理するように構成され得る。セッションは、仮想マシン３３２Ａ〜３３２Ｃと同じであっても類似していてもよい。セッションは、ウェブブラウザアプリケーション４１２．１〜ｎなどの１つ以上のアプリケーションを含むことができる。アプリケーションは、セッションに実行することができる。各セッションは、同じサーバまたは複数のサーバによって実行されるなどによって論理的に分離することができ、任意の所与のセッションに対応するデータは、別のセッションとは分離されたメモリ、または同じメモリに格納される。セッションは、同じであるかまたは類似のアプリケーションを実行してもよい。リモートコンピューティングデバイス４１０上の各セッションは、１人以上のユーザに関連付けられてもよく、その結果、１人のユーザは、セッションの第１のセットにアクセスでき、別のユーザは、セッションの第２の異なるセットにアクセスでき得る。セッション４１１．１〜ｎは、保護されたものであってもよい。例えば、特にセキュリティの高いアプリケーションの場合、セッションを暗号化して、復号のためにクライアントコンピューティングデバイスに送信されてもよい。セッションは、リモートコンピューティングデバイス４１０によって作成または破棄されてもよい。例えば、リモートコンピューティングデバイスに接続及び／またはリモートコンピューティングデバイスによって認証されつつある新規なクライアントコンピューティングデバイスに応答して、新規なセッションがインスタンス化されてもよい。別の例として、特定のセッションに関連付けられたログオフイベントに応答して、特定のセッションが破棄されてもよい。
【００４７】
ウェブブラウザアプリケーション４１２．１〜ｎなどのアプリケーションは、リモートコンピューティングデバイス４１０上で実行するように構成された任意のコンピュータアプリケーションであってもよい。例えば、ウェブブラウザアプリケーション４１２．１〜ｎは、従来のパーソナルコンピュータ（クライアントコンピューティングデバイス４２０．１〜ｎを含む）上で実行するように構成された従来のウェブブラウザアプリケーションであってもよく、及び／またはリモートコンピューティングデバイス４１０上のセッションで実行するように特別に設計されていてもよい。アプリケーションは、例えば、アプリケーションをセッションで実行するように構成するように変更されてもよい。例えば、ウェブブラウザアプリケーション４１２．１−ｎは、セッションのユーザのプライバシーを保護するために、閲覧履歴を保持しないように構成されてもよい。各セッションは、グラフィカルユーザインタフェースに関連付けられてもよい。例えば、各セッションは、ユーザがアプリケーションを起動及び／または管理することを可能にし得るデスクトップ環境を含んでもよい。
【００４８】
ウェブブラウザアプリケーション４１２．１〜ｎは、ウェブページなどのコンテンツを検索して表示するように構成されてもよい。ウェブページは、ハイパーテキストマークアップ言語（ＨＴＭＬ）、カスケードスタイルシート（ＣＳＳ）、1つ以上の画像、オーディオ、またはビデオファイルなどの様々なフォーマットのコンテンツを含み得る。ウェブページは、ウェブサーバ１０５などのウェブサーバから取得することができる。ウェブブラウザアプリケーション４１２．１〜ｎは、そのようなコンテンツを検索し、コンテンツを処理するように構成することができ、例えば、表示のためにコンテンツを処理し、及び／または望ましくないコンテンツ（例えば、広告、安全でない要素）を削除する。次に、ウェブブラウザは、ウェブページのコンテンツの表示など、コンテンツに関連する出力を提供するように構成されてもよい。例えば、ウェブページは、ＨＴＭＬ及びＣＳＳコンテンツを含むことができ、その結果、リモートコンピューティングデバイス４１０は、最初に、ＣＳＳ設計設定を考慮してＨＴＭＬを処理し、次に、ウェブブラウザアプリケーションに出力を表示し得る。表示されるコンテンツには、異なるコンテンツに関連付けられている可能性のある１つ以上のリンクが含まれている場合がある。例えば、ウェブページ内のリンクは、異なるウェブページ、ビデオファイルなどに関連付けられてもよい。リンクは、第２のコンテンツにアクセスする方法の指示であってもよい。例えば、リンクは、第２のコンテンツが新規なタブで開かれること、特定のアプリケーションまたはセッションで開かれることなどを示してもよい。
【００４９】
リモートコンピューティングデバイス４１０は、セッションで実行されるアプリケーションに関連する出力をキャプチャするように構成されてもよい。出力は、グラフィカル出力（例えば、アプリケーションウィンドウ及び／または関連するグラフィカルユーザインタフェース（ＧＵＩ））、テキスト出力（例えば、テキストコンソール出力）、オーディオ出力（例えば、音声アシスタントフィードバック）等を含む、アプリケーションに関連する任意の出力を含み得る。単一のセッションで複数のアプリケーションが単一の出力を生成するように、出力をキャプチャしてもよい。例えば、出力は、同時に実行される複数のアプリケーションを含むビデオストリームを含んでもよい。別の例として、出力は、リモートコンピューティングデバイス４１０上のセッションにおいてウェブブラウザアプリケーション上で実行されているウェブページを表している画像を含んでもよい。
【００５０】
クライアントコンピューティングデバイス４２０．１〜ｎは、リモートコンピューティングデバイス４１０との間で入力を送信し出力を受信するように構成することができる。出力は、出力デバイス４２１．１〜ｎに提示することができ、リモートコンピューティングデバイス４１０に送信された入力は、入力デバイス４２２．１〜ｎから取得することができる。出力デバイス４２１．１〜ｎは、例えば、コンピュータモニタなどのディスプレイデバイス、スピーカなどのオーディオデバイスなどを含むことができる。入力デバイス４２２．１〜ｎは、例えば、キーボード、コンピュータマウス、タッチセンシティブスクリーンなどを含むことができる。新規なウェブページまたは他のコマンドの要求と同様に、入力及び出力は、プロキシなどの１つ以上の第２のコンピューティングデバイスを介して送信され得る。出力及び入力は、ネットワークの異なる部分（例えば、ネットワーク４３０）を使用して、及び／または異なるプロトコルを使用して送信されてもよい。例えば、ＵＲＬ要求は、ハイパーテキスト転送プロトコル（ＨＴＴＰ）及び／またはＷｅｂｓｏｃｋｅｔプロトコルを介して送信されてもよいが、マウスの動きのデータは、独自のプロトコルを使用して送信されてもよい。
【００５１】
リモートコンピューティングデバイス４１０は、ネットワーク４３０を介してクライアントコンピューティングデバイス４２０．１〜ｎと通信することができる。リモートコンピューティングデバイス４１０及びクライアントコンピューティングデバイス４２０．１〜ｎが通信する方法は、例えば、セッション４１１．１〜ｎ、セッション４１１．１〜ｎで実行されるアプリケーション、及び／またはクライアントコンピューティングデバイス４２０．１〜ｎの性質に依存し得る。例えば、第１のフォーマットでコマンドを受信し、コマンドを第２のフォーマットに変換するように構成された１つ以上のプロキシデバイスなどの、１つ以上の第２のコンピューティングデバイスを使用することができる。リモートコンピューティングデバイス４１０及びクライアントコンピューティングデバイス４２０．１〜ｎは、ＨＴＴＰなどの１つ以上のプロトコルを介して通信してもよい。例えば、ウェブページのコンテンツは、ビデオストリームとして、及び／または静止画像として、クライアントコンピューティングデバイスに送信することができる。別の例として、オーディオコンテンツはパケット化され、個別のオーディオファイルとして送信されてもよい。
【００５２】
リモートコンピューティングデバイス４１０及びクライアントコンピューティングデバイス４２０．１〜ｎは、ＷｅｂＳｏｃｋｅｔプロトコルまたはＨＴＴＰなどの同様の通信プロトコルを使用して通信してもよい。例えば、クライアントコンピューティングデバイス４２０．１〜ｎは、リモートコンピューティングデバイス４１０に、セッションの指示を含むＵＲＬに対するＨＴＴＰ及び／またはＷｅｂＳｏｃｋｅｔの要求（例えば、「ｗｗｗ．ｗｅｂｓｉｔｅ．ｃｏｍ／？ｒｅｍｏｔｅｓｅｓｓｉｏｎ＝２」）を送信することによって、既存のセッションの新規なタブの要求を送信してもよい。したがって、クライアントコンピューティングデバイス４２０．１〜ｎは、タブが新規なセッションまたは既存のセッションで要求されていること、あるいはセッションがまったく開かれていることさえも知るように構成する必要はない。同様に、ＵＲＬまたは他の通信方法を使用して、ウェブサイトをローカルに（例えば、クライアントコンピューティングデバイス４２０．１で実行されるソフトウェアにおいて）ではなく、リモートセッションで（例えば、セッション４１１．１で）で開く必要があることを示してもよい。例えば、クライアントコンピューティングデバイス４２０．２のユーザは、ヘルパーアプリケーション４４０によって傍受されることができるＵＲＬ（例えば、「ｗｗｗ．ｒｅｍｏｔｅｃｏｍｐｕｔｉｎｇｄｅｖｉｃｅ．ｃｏｍ／ｗｗｗ．ｗｅｂｓｉｔｅ．ｃｏｍ／ｎｅｗｔａｂ／ｓｅｓｓｉｏｎ２／」）にアクセスすることができて、リモートコンピューティングデバイス４１０に特定のセッション（例えばセッション４１１．２）の新規なタブにウェブサイト（例えば、「ｗｗｗ．ｗｅｂｓｉｔｅ．ｃｏｍ」）を開かせることができる。
【００５３】
ヘルパーアプリケーション４４０は、クライアントコンピューティングデバイス４２０１〜ｎから通信のすべてまたは一部を受信して、セッション４１１．１〜ｎに関して通信を実行するように構成されたリモートコンピューティングデバイス４１０のすべてまたは一部上で実行しているプログラムであってもよい。一例として、ヘルパーアプリケーション４４０は、仮想化サーバ３０１、ハイパーバイザ３０２、オペレーティングシステム３１４、リモートコンピューティングデバイス４１０などのすべてまたは一部に関連付けられたアプリケーションプログラミングインタフェース（ＡＰＩ）であってもよい。ヘルパーアプリケーション４４０は、それぞれがセッション４１１．１〜ｎの１つに関連付けられ、及び／またはその中で実行される複数のアプリケーションであってもよい。例えば、各セッションは、命令を受信するためのそれぞれのＷｅｂＳｏｃｋｅｔチャネルを備えたそれぞれのヘルパーアプリケーションを有してもよい。ヘルパーアプリケーション４４０は、チャネル（例えば、ＷｅｂＳｏｃｋｅｔチャネル）を開いてクライアントコンピューティングデバイス４２０．１〜ｎから命令（例えば、新規なタブを開くための命令）を受信するように構成されてもよい。このような命令に基づいて、ヘルパーアプリケーション４４０は、ウェブブラウザアプリケーション４１２．１〜ｎにおいて、新規なタブを開くことができる。通信の実施は、セッション４１１．１〜ｎの１つのセッションの指示を受信することを含んでもよい。例えば、ヘルパーアプリケーション４４０は、クライアントコンピューティングデバイス４２０．１から、ウェブサイトの指示及びクライアントコンピューティングデバイス４２０．１からのセッションＩＤの指示（例えば、「ｗｗｗ．ｗｅｂｓｉｔｅ．ｃｏｍ／ｎｅｗｔａｂ／ｓｅｓｓｉｏｎ／１」）を含む通信を受信し、セッションの指示に対応する通信の一部（例えば、「／ｓｅｓｓｉｏｎ／１」）を決定し、指示に対応する特定のセッション（例えば、セッション４１１．１）を決定し、ウェブサイト（例えば、「ｗｗｗ．ｗｅｂｓｉｔｅ．ｃｏｍ」）をそのセッションの新規なタブで開くようにさせることができる。
【００５４】
ヘルパーアプリケーション４４０は、クライアントコンピューティングデバイス４２０．１〜ｎ、リモートコンピューティングデバイス４１０、及び／またはセッション４１１．１〜ｎのいずれかによって使用される複数のプロトコルを処理するように構成されてもよい。例えば、ヘルパーアプリケーション４４０は、ＨＴＴＰを介してクライアントコンピューティングデバイス４２０．１〜ｎからコマンドを受信し、それらのコマンドが特定のセッションの新規なタブでウェブサイトを要求することを判断し、ＷｅｂＳｏｃｋｅｔプロトコルを使用して、特定のセッションに新規なタブのウェブサイトを開くように指示してもよい。１つ以上の追加のコンピューティングデバイス及び／またはサービスがヘルパーアプリケーション４４０に関与してもよい。例えば、クライアントコンピューティングデバイス４２０．１〜ｎからすべての入力を受信するためのサービスは、入力を受信し、新規なタブの要求を示すＨＴＴＰ要求のみをヘルパーアプリケーション４４０に送信してもよい。
【００５５】
ヘルパーアプリケーション４４０は、リモートコンピューティングデバイス４１０とは異なる１つ以上の第２のリモートコンピューティングデバイス上で実行されてもよい。ヘルパーアプリケーション４４０は、セッション（例えば、リモートコンピューティングデバイス４１０上で実行されるセッション）に関する情報を維持し、クライアントコンピューティングデバイス４２０．１〜ｎからの通信の全部または一部を受信し、セッション４１１．１〜ｎに関する通信を実装するように構成された外部サービスを含んでもよい。ヘルパーアプリケーション４４０は、プロキシを含んでもよい。例えば、１つ以上の第２のリモートコンピューティングデバイスは、第１のプロトコルを介して（例えば、ＨＴＴＰまたはＷｅｂＳｏｃｋｅｔを介して）、任意の他のコンピューティングデバイスからコマンドを受信し、コマンドが対応するリモートコンピューティングデバイス４１０上で実行している１つ以上のセッションを決定して、同一または異なるプロトコルを介して、決定された１つ以上のセッションによってコマンドを実行させることができる。したがって、本明細書において説明するように、クライアントコンピューティングデバイス４２０．１〜ｎから、及び、リモートコンピューティングデバイス４１０に対して送信される要求は、１つ以上の第２のリモートコンピューティングデバイスを介して送信されることができ、それは要求を解釈してリモートコンピューティングデバイスに関してそれを実行させるように構成され得る。例えば、クライアントコンピューティングデバイス４２０．１〜ｎは、第１のプロトコル（例えば、ＨＴＴＰ）を介して新規なウェブページに対する要求を１つ以上の第２のコンピューティングデバイスに発信するように構成されてもよく、１つ以上の第２のコンピューティングデバイスは、新規なウェブページが既存のセッションの新規なタブにおいて開かれなければならないと決定して、第２のプロトコル（例えば、ＷｅｂＳｏｃｋｅｔ）を介して新規なタブに新規なウェブページを開く命令をセッション４１１．１〜ｎの１つに発信してもよい。
【００５６】
図５は、リモートコンピューティングデバイス４１０によって取られ得るステップを示しているフローチャートである。ステップ５０１において、リモートコンピューティングデバイス４１０は、クライアントコンピューティングデバイスから、セッションの要求を受信することができる。要求は、ウェブページの指示及び／またはウェブページが新規なタブで開かれることを望むことを含むことができるが、そうである必要はない。要求は、デフォルトセッションを開始する要求、特定のセッションで１つ以上の特定のアプリケーションを開く要求、リモートコンピューティングデバイス４１０上の既存のセッションにアクセスする要求などを含んでもよい。例えば、セッションに対する要求は、クライアントコンピューティングデバイスからの特定のウェブアプリケーションへのアクセスの要求を含んでもよく、リモートコンピューティングデバイス４１０は、ウェブアプリケーションがセッションで開かれるべきであると決定してもよい。クライアントコンピューティングデバイスのユーザは、特定のアクションがセッションの要求を含むことを知る必要はない。例えば、ローカルプログラム（例えば、クライアントコンピューティングデバイス上で実行されるもの）とリモートプログラム（例えば、リモートコンピューティングデバイス４１０上で実行されるもの）との間の区別は、ユーザに隠されてもよく、及び／または同じまたは類似のインタフェースを介して利用可能であってもよい。
【００５７】
ステップ５０２において、リモートコンピューティングデバイス４１０は、要求に対応するセッションが存在するかどうかを決定することができる。要求が既存のセッションと関連付けられている場合、要求に対応するセッションが存在する可能性がある。例えば、ラップトップコンピュータのユーザは、それらが以前デスクトップコンピュータ上でアクセスしたセッションへのアクセスを要求することがある。別の例として、リモートコンピューティングデバイス４１０は、多くの永続的なセッションを維持することができ、要求は永続的なセッションにおいて実行しているアプリケーションと関連付けられている場合がある。セッションのリストはデータベースに（例えば、ヘルパーアプリケーション４４０の全体または一部に）維持されることができ、データベースには要求に対応するセッションが存在するかどうか判定するために問い合わせることができる。要求は新規なセッションに対する要求を含んでいてもよく、及び／または既存のセッションと関連していなくてもよく、リモートコンピューティングデバイス４１０に新規なセッションがインスタンス化されなければならないと決定させることになる。例えば、ユーザは既存のセッションを要求することができるが、セッションは期限切れになっている場合があり、その結果、リモートコンピューティングデバイス４１０はユーザのための新規なセッションをインスタンス化すると決定してもよい。要求に対応するセッションが存在する場合、既存のセッションに対するアクセスはステップ５０３で提供することができる。そうでない場合は、新規なセッションが、ステップ５０４でインスタンス化され得る。ステップ５０４でセッションをインスタンス化することは、例えばハイパーバイザ（例えばハイパーバイザ３０２）を用いて新規なセッションを作成して仮想マシンを作成することができる任意のステップを含み得る。既存であるにせよ新規であるにせよ、本明細書において用いる場合、このセッションは現行セッションと呼ぶことができる。
【００５８】
ステップ５０５において、リモートコンピューティングデバイス４１０は、現行セッションと関連した出力を提供することができる。出力は、セッションの要求がステップ５０１で受信された同じクライアントコンピューティングデバイスに対するものでもよく、または、異なるクライアントコンピューティングデバイスに対するものでもよい。例えば、セッションの要求は、スマートフォンからなされてもよいが、現行セッションからの出力はパーソナルコンピュータに送信されてもよい。
【００５９】
ステップ５０６において、リモートコンピューティングデバイス４１０は、クライアントコンピューティングデバイスからの入力を待つことができる。入力は、リンクをクリックする、マウスを移動する、マイクロフォンから音声データを送信する等の、表示されたウェブページと関連したコマンドを含むことができる。入力は、入力デバイス４２２．１〜ｎから受信することができる。入力は、現行セッションのウェブブラウザで現在表示されているウェブサイトとのインタラクション等の、セッションを介したものであってもよい。加えて、または、代わりに、入力は、セッション外のクライアントコンピューティングデバイスで実行しているソフトウェアを介したもの、または、別のコンピューティングデバイスを介したものであってもよい。入力は、ウェブページから受信したコマンド、例えばウェブページのＪａｖａＳｃｒｉｐｔアプリケーションから促される新規なウェブページにアクセスするコマンドを含んでもよい。入力は、新規なウェブページに対する要求を含んでもよい。要求は、ウェブページのＵｎｉｆｏｒｍ  Ｒｅｓｏｕｒｃｅ  Ｌｏｃａｔｏｒ（ＵＲＬ）などの新規なウェブページの指示を含む場合がある。入力は、新規なウェブページを開くことに必ずしも関連しないが、現行セッションの現在表示されているウェブページと対話する場合がある。入力が受信されない場合、リモートコンピューティングデバイスは入力を待ち続けることができる。入力は、現行セッションにアクセスしている同じクライアントコンピューティングデバイスから、異なるコンピューティングデバイスから、または、異なるセッションから受信することができる。例えば、１つのセッションでの入力は、別のセッションに、それが新規なタブの新規なウェブページを開くことを要求させる場合がある。入力が受信されると、フローチャートはステップ５０７に進む。
【００６０】
クライアントコンピューティングデバイスは、複数のアプリケーションのうちの１つを介して要求を送信することができる。要求は、リモートコンピューティングデバイス４１０からの出力を表示するために用いられる表示アプリケーションとは異なるアプリケーションから発信されてもよい。例えば、クライアントコンピューティングデバイスは、メニューアプリケーション及び表示アプリケーションを含むことができる。メニューアプリケーションは、ウェブページに対する要求をリモートコンピューティングデバイス４１０に送信するように構成することができて、リモートコンピューティングデバイス４１０の出力に関係なくそうすることができる。メニューアプリケーションは、例えば、興味があるウェブページへの複数のアイコンを含むことができ、メニューアプリケーションは、複数のアイコンのうちの１つのユーザ選択を受信するように構成することができる。表示アプリケーションは、リモートコンピューティングデバイス４１０からの出力を表示し、クライアントコンピューティングデバイスからの入力を受信するように構成することができる。このように、表示アプリケーションによってユーザが従来方式でウェブページと対話することができることができる一方で、メニューアプリケーションは、表示アプリケーションと対話することなく、表示アプリケーションの新規なタブに新規なウェブページを容易に開く能力をユーザに提供することができる。メニューアプリケーションは、表示アプリケーションとは異なるクライアントコンピューティングデバイスで実行してもよい。例えば、表示アプリケーションは、パーソナルコンピュータで実行することができるが、メニューアプリケーションはスマートフォンで実行してもよい。
【００６１】
要求はプロキシを介して受信することができ、プロキシは要求がリモートコンピューティングデバイス４１０上のセッションで実行されるとことを決定することができる。クライアントコンピューティングデバイスのユーザは、第１のウェブページを（例えば、クライアントコンピューティングデバイス上で実行されるウェブブラウザ及び／またはリモートコンピューティングデバイス４１０のセッションで実行されるウェブブラウザを介して）閲覧し、第２のウェブページを要求することができる。プロキシは、第２のウェブページに対する要求を受信し、要求に基づいて、その要求を、リモートコンピューティングデバイス４１０上の新規または既存のセッションの新規なタブの第２のウェブページに対する要求に変換することができる。一例として、クライアントコンピューティングデバイスのユーザは、クライアントコンピューティングデバイス上で直接実行されるブラウザ上の信頼できるウェブページ（例えば、信頼できる企業内イントラネットと関連付けられたウェブページ）を閲覧することができ、信頼できないウェブページ（例えば、信頼できる企業内イントラネットの外側のウェブページ）に至る信頼できるウェブページ上のリンクをクリックすることができる。プロキシ（例えば、ＨＴＴＰプロキシ）は、信頼できないウェブページに対する要求を受信して、新規または既存のセッションの新規なタブにおいて開かれる要求を送信することができる。このようにして、信頼できないウェブページは新規なセッションで開かれることができて、セキュリティがよりよく制御され得る。プロキシは、リモートコンピューティングデバイス４１０及び／または上記の１つ以上の第２のコンピューティングデバイスの全部または一部であってもよい。プロキシは、ウェブページ（例えば、信頼できるか信頼できないウェブページ）のリストを格納するように構成することができ、受信した要求をリストと比較して、ウェブページが現行または既存のセッションの新規なタブにおいて開かれなければならないかどうかを判定することができる。
【００６２】
ステップ５０７において、リモートコンピューティングデバイス４１０は、入力が新規なウェブページに対する要求と関連付けられているかどうかを判定することができる。新規なウェブページは、ウェブブラウザアプリケーションで現在開いているウェブページと異なる必要はない。例えば、ユーザはまったく同じウェブページの複数のコピーを開くことを望む場合があるので、新規なウェブページに対する要求は、ウェブブラウザアプリケーションの既存のタブにおいてすでに開かれている同じページに対するものであってもよい。要求は、別のウェブサイト上のリンクをクリックすること、クライアントコンピューティングデバイス上で実行されるアプリケーションを介する要求（例えば、アプリケーションメニューの「説明のページ（Ｏｐｅｎ  Ａｂｏｕｔ  Ｐａｇｅ）を開く」オプション）などを含んでもよい。要求が新規なウェブページに関連付けられていない場合、フローチャートはステップ５０８に進むことができ、そこでコンテンツ（例えば、入力への応答）を表示することができる。要求が新規なウェブページに関連付けられている場合、フローチャートはステップ５０９に進むことができる。
【００６３】
ステップ５０７のものなどの入力は、１つ以上のコンピューティングデバイス及び／またはプロセスによって処理され得る。例えば、サービスは、アクティブなセッションに関連付けられた情報を格納することができ、クライアントコンピューティングデバイスから適切なセッションに入力を送信することができる。サービスは、セッション及び／またはセッションで実行されているアプリケーションが使用するコマンドを変換するように構成してもよい。例えば、ユーザは、ＵＲＬのみをサービスに送信することにより、ＵＲＬがセッションの新規なタブで開くように要求してもよく、サービスは、ＵＲＬを処理し、それを使用して、セッションのウェブブラウザに、新規なタブを開いてそのＵＲＬをロードするように指示してもよい。
【００６４】
ステップ５０９において、リモートコンピューティングデバイス４１０は、要求が現行セッションの新規なタブの新規なウェブページに対するものであるかどうかを判定することができる。要求は、新規なウェブページが新規なタブにおいて開かれなければならないことを示す場合がある。例えば、ウェブページの設計者は、特定のページが新しいウェブブラウザアプリケーションウィンドウではなく新規なタブを開くことを好む場合があり、リンクは特定のウェブページが新規なタブで開かれることを示している場合がある。クライアントコンピューティングデバイスから送信された要求は、新規なウェブページが新規なタブで開かれることを示していない場合があるが、プロキシが要求を受信し、ウェブページを新規なタブで開く必要があるという指示を要求に追加してもよい。新規なタブのウェブページの要求は、セッションに現在表示されているウェブページから発信される必要はない。例えば、ユーザは、クライアントコンピューティングデバイスで実行されているメニューアプリケーションのメニューオプションを選択することができ、これにより、既存のウェブブラウザインスタンスの新規なタブのウェブページに対する要求がトリガーされてもよい。要求が新規なタブに対するものである場合、フローチャートはステップ５１０に進むことができる。そうでない場合は、ステップ５１１に進むことができる。
【００６５】
ステップ５１０において、リモートコンピューティングデバイス４１０は、要求されたウェブページを表示する新規なタブを、ステップ５０３または５０４からのセッションで表示させることができる。リモートコンピューティングデバイス４１０は、セッション内のアプリケーションに、ウェブブラウザアプリケーションを介して新規なタブを開かせてもよく、または命令をウェブブラウザアプリケーションに直接送信してもよい。セッション内のアプリケーションに新規なタブを開かせることは、例えば、セッション内のヘルパーアプリケーション（例えば、ヘルパーアプリケーション４４０）の全部または一部を実行することを含み得る。例えば、セッション内のタブ機能を備えた特定のウェブブラウザは、新規なタブを開くように直接指示されない場合があるため、セッション内のヘルパーアプリケーションが特定のキーストロークを実行して、ウェブブラウザに新規なタブを開かせてもよい。
【００６６】
ステップ５１１において、リモートコンピューティングデバイス４１０は、要求が新規なセッションに対するものであるかどうかを判定することができる。要求は、現行セッションではなく、新規なセッションでウェブページを開く必要があることを示していてもよい。新規なセッションでウェブページを開くことは、例えば、個人のウェブサイトをビジネスのウェブサイトから分離するように、特定のウェブサイトを隔離するために望ましい場合がある。要求が新規なセッションに対するものである場合、ステップ５１２において、リモートコンピューティングデバイス４１０は、新規なセッションをインスタンス化し、ウェブページが新規なセッションで開かれるようにさせることができる。
【００６７】
要求が新規なタブに対するものでも新規なセッションに対するものでもない場合、ステップ５１３で、リモートコンピューティングデバイス４１０は、現行セッションの既存のタブに新規なウェブページを表示することができる。新規なウェブページに対する要求は、新規なウェブページを開くための特定のタブの指示を含んでもよい。例えば、要求は、以前第３のウェブサイトを表示していた第３のタブが、現在は第４のウェブサイトを表示する必要があることを示していてもよい。
【００６８】
図６は、例示的なメニューアプリケーションを示す。メニューアプリケーション６０１は、ウェブページに対する要求をリモートコンピューティングデバイス４１０に送信するように構成することができ、リモートコンピューティングデバイス４１０の出力に関係なくそうすることができる。メニューアプリケーション６０１は、ウェブページリンク６０２ａ〜６０２ｄなどの複数のウェブページリンクを含むことができる。メニューアプリケーションは、例えば、スマートフォン、ウェブページなどで実行されるアプリケーションであってもよい。メニューアプリケーションは、新規または既存のセッションで新規なタブを開くプロセスを簡素化することができる。例えば、ユーザは、現在、クライアントコンピューティングデバイス上で表示アプリケーションとメニューアプリケーション６０１の両方を実行することができる。表示アプリケーションは第１のディスプレイ上にあってもよく、メニューアプリケーション６０１は第２のディスプレイ上にあってもよい。ユーザは、リモートコンピューティングデバイス４１０を使用して第１のウェブページを閲覧するために表示アプリケーションを使用していてもよいが、第２のウェブページで第２のタブを開くことに決めてもよい。ユーザは、メニューアプリケーション６０１上のウェブページリンク（例えば、ウェブページリンク６０２ｂ）をクリックすることができ、メニューアプリケーション６０１は、リモートコンピューティングデバイス４１０に、新規なタブを開き、新規なタブに第２のウェブページをロードする要求を送信することができる。
【００６９】
ウェブページリンク（例えば、ウェブページリンク６０２ｂ）は、セッション情報及び／または所与のセッションで新規なタブが要求されることの指示を送信するようにフォーマットすることができる。例えば、現行セッション（例えば、ＩＤが４２のセッション）の新規なタブでウェブブラウザのＵＲＬ（例えば、「ｗｗｗ．ｗｅｂｓｉｔｅ．ｃｏｍ／ｐａｇｅ／」）を開くために、メニューアプリケーション６０１において表されるウェブページのリンクは、ＵＲＬと、ＵＲＬ内部のセッションＩＤの指示の両方を送信するようにフォーマットすることができる（例えば、「ｗｗｗ．ｗｅｂｓｉｔｅ．ｃｏｍ／ｐａｇｅ／ｎｅｗｔａｂ／ｓｅｓｓｉｏｎ４２」）。このようなＵＲＬは、リモートコンピューティングデバイス４１０に、またヘルパーアプリケーション４４０への送信も含んで、送信することができ、それがセッションに対応するＵＲＬの一部を抽出することができる。このように、クライアントコンピューティングデバイス４２０．１〜ｎは、従来のプロトコル（例えば、ＨＴＴＰ、ＷｅｂＳｏｃｋｅｔ）を使用して既存のセッションに新規なタブを要求するように構成されてもよい。
【００７０】
本開示の１つ以上の態様は、１つ以上のプログラムモジュール内などの、１つ以上のコンピュータまたは他のデバイスによって実行される、コンピュータ使用可能な媒体及び／またはコンピュータ実行可能命令で具体化されてもよい。一般に、プログラムモジュールは、コンピュータまたは他のデータ処理デバイスのプロセッサで実行されると、特定のタスクを実行する、または、特定の抽象的なデータタイプを実装する、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造等を含む。コンピュータ実行可能命令は、ハードディスク、光ディスク、取外し可能な記憶媒体、ソリッドステートメモリ、ＲＡＭその他等の、１つ以上のコンピュータ可読媒体に記憶することができる。当業者によって理解されるように、プログラムモジュールの機能性は、様々な実施形態において必要に応じて組み合わせるかまたは分散することができる。加えて、機能性は、ファームウェアまたは、集積回路、フィールドプログラマブルゲートアレイ（「ＦＰＧＡ」）等のハードウェア等価物において全体的または部分的に具体化されてもよい。特定のデータ構造を使用して、本開示の１つ以上の態様をより効果的に実装してもよく、そのようなデータ構造は、本明細書に記載するコンピュータ実行可能命令及びコンピュータ使用可能データの範囲内で企図される。
【００７１】
本開示の態様は、例示の観点から説明されている。本開示の様々な態様を具体化する本明細書に記載の例示的なシステム及び方法が示されているが、本開示がこれらの実施形態に限定されないことは当業者によって理解されるであろう。特に前述の教示に照らして、当業者は修正を行うことができる。例えば、前述の例の特徴のそれぞれは、単独で、または他の実施例の要素と組み合わせて、またはサブコンビネーションで利用することができる。例えば、上記のシステム及び方法またはその一部のいずれかを、上記の他の方法及びシステムまたはその一部と組み合わせることができる。例えば、図に示されるステップは、記載された順序以外で実行されてもよく、そして示される１つ以上のステップは、本開示の態様に従って任意選択であり得る。また、本開示の真の精神及び範囲から逸脱することなく修正を行うことができることも認められ、理解されるであろう。したがって、この説明は、本開示を限定するのではなく、例示するものと見なされるべきである。
【００７２】
関連出願の相互参照
本出願は、２０１８年６月２５日に出願された米国非仮特許出願第１６／０１６，８４８号の優先権を主張し、その内容は参照によりその全体が本願明細書に明示的に援用される。
【図１】
2021528766.tif 000003
【図２】
2021528766.tif 000004
【図３】
2021528766.tif 000005
【図４】
2021528766.tif 000006
【図５】
2021528766.tif 000007
【図６】
2021528766.tif 000008
【国際調査報告】
2021528766.tif 000009
2021528766.tif 000010