(57)【特許請求の範囲】
【請求項１】
コンピューティングデバイスにおいて実行可能なプログラムを実施する非一時的なコンピュータ可読媒体であって、前記プログラムが、
エミュレートされたコンピューティングデバイスの複数のモデルのうちの１つを決定するコードと、
クライアントから前記エミュレートされたコンピューティングデバイスにおいて実行可能なアプリケーションの選択を取得するコードと、
ホスト環境下で前記アプリケーションを実行するコードと、
前記アプリケーションにより生成されたビデオ信号およびオーディオ信号をメディアストリームに符号化するコードと、
前記エミュレートされたコンピューティングデバイスの前記モデルのうちの前記１つのグラフィック表示を含む、ユーザインターフェースを生成するコードであって、前記メディアストリームからの前記ビデオ信号が、前記エミュレートされたコンピューティングデバイスの前記モデルのうちの１つの画面のグラフィック表示上でレンダリングされるように構成される、コードと、
前記ユーザインターフェースおよび前記メディアストリームを前記クライアントに送信するコードと、
入力コマンドを前記クライアントから取得するコードであって、前記入力コマンドが、前記エミュレートされたコンピューティングデバイスの前記モデルのうちの前記１つの前記グラフィック表示とのユーザ相互作用を通して生成される、コードと、
前記入力コマンドを、前記ホスト環境下で実行する前記アプリケーションに提供するコードと、を備える、非一時的なコンピュータ可読媒体。
【請求項２】
前記エミュレートされたコンピューティングデバイスが、モバイルコンピューティングデバイスである、請求項１に記載の非一時的なコンピュータ可読媒体。
【請求項３】
少なくとも１つのコンピューティングデバイスと、
前記少なくとも１つのコンピューティングデバイスにおいて実行可能なサーバアプリケーションであって、
コンピューティングデバイスのモデルおよび前記コンピューティングデバイスにおいて実行可能なアプリケーションを識別する論理と、
ホスト環境において前記アプリケーションを実行し、前記アプリケーションのビデオ信号をメディアストリームに符号化する論理と、
クライアントにおいてレンダリングするために、ユーザインターフェースを符号化する論理であって、前記ユーザインターフェースが、前記コンピューティングデバイスの前記モデルのグラフィック表示を含み、前記コンピューティングデバイスの前記モデルの前記グラフィック表示の画面が、前記メディアストリームからの前記ビデオ信号の少なくとも一部をレンダリングするように構成される、論理と、を備える、サーバアプリケーションと、を備える、システム。
【請求項４】
前記コンピューティングデバイスの前記モデルの前記グラフィック表示が、前記コンピューティングデバイスの前記モデルと関連付けられた少なくとも１つの入力デバイスのグラフィック表示を含む、請求項３に記載のシステム。
【請求項５】
前記コンピューティングデバイスが、モバイルコンピューティングデバイスである、請求項３に記載のシステム。
【請求項６】
前記サーバアプリケーションが、
前記ユーザインターフェースおよび前記メディアストリームを前記クライアントに送信する論理と、
前記クライアントから入力コマンドを取得する論理であって、前記ユーザインターフェースが、入力デバイスのグラフィック表示とのユーザ相互作用に応答して、前記入力コマンドを生成するようにさらに構成される、論理と、
仮想化された入力デバイスにより前記アプリケーションに前記入力コマンドを提供する論理と、をさらに備える、請求項３に記載のシステム。
【請求項７】
前記コンピューティングデバイスの前記モデルが、前記コンピューティングデバイスの汎用モデルである、請求項３に記載のシステム。
【請求項８】
前記ユーザインターフェースが、前記アプリケーションの購入を開始するためのコンポーネントをさらに備える、請求項３に記載のシステム。
【請求項９】
前記ユーザインターフェースが、前記アプリケーションを項目リストに追加するためのコンポーネントをさらに備える、請求項３に記載のシステム。
【請求項１０】
前記ユーザインターフェースが、前記コンピューティングデバイスの前記モデルの前記グラフィック表示を回転させるためのコンポーネントをさらに備える、請求項３に記載のシステム。
【請求項１１】
前記サーバアプリケーションが、既定期間の満了時に、前記アプリケーションの実行を停止する論理をさらに備える、請求項３に記載のシステム。
【請求項１２】
前記アプリケーションが、前記クライアントにおいてネイティブには実行可能でない、請求項３に記載のシステム。
【請求項１３】
前記サーバアプリケーションが、前記アプリケーションにより生成されたオーディオ信号を前記メディアストリームに符号化する論理をさらに備え、前記ユーザインターフェースが、前記クライアントにおいて前記オーディオ信号を再生するように構成される、請求項３に記載のシステム。
【請求項１４】
前記ホスト環境が、少なくとも１つの入力デバイスを仮想化するように構成される仮想化された環境を含み、前記クライアントから得られた入力データが、前記少なくとも１つの入力デバイスにより前記アプリケーションに提供される、請求項３に記載のシステム。
【請求項１５】
少なくとも１つのコンピューティングデバイスと、
前記少なくとも１つのコンピューティングデバイスにおいて実行可能なサーバアプリケーションであって、
コンピューティングデバイスのモデルおよび前記コンピューティングデバイスにおいて実行可能なアプリケーションを識別する論理と、
ホスト環境において前記アプリケーションを実行し、前記アプリケーションの出力をメディアストリームに符号化する論理と、
クライアントにおいてレンダリングするために、ユーザインターフェースを符号化する論理であって、前記ユーザインターフェースが、前記コンピューティングデバイスの前記モデルのグラフィック表示を含み、前記グラフィック表示が、前記メディアストリームに応答して更新される、論理と、を備える、サーバアプリケーションと、を備える、システム。
【請求項１６】
前記コンピューティングデバイスの前記モデルの前記グラフィック表示が、ディスプレイデバイスのグラフィック表示を含み、前記メディアストリームが、ディスプレイデバイスの前記グラフィック表示を更新するためのデータを含む、請求項１５に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、遠隔エミュレートするコンピューティングデバイスに関する。
【背景技術】
【０００２】
コンピューティングデバイスには、例えば、スマートフォン、電子書籍リーダ、タブレットコンピュータ、ビデオゲームコンソール等の多くの専門化した形態がある。かかるデバイス間の物理的差異のため、アプリケーションは、デバイスによって異なる場合がある。スマートフォン等のデバイスカテゴリ内であっても、スマートフォンの異なるモデルは、異なるディスプレイおよび入力機能を有する場合がある。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
遠隔エミュレートするコンピューティングデバイスを提供する。
【課題を解決するための手段】
【０００４】
本開示の一態様は、コンピューティングデバイスにおいて実行可能なプログラムを実施する非一時的なコンピュータ可読媒体であって、前記プログラムが、エミュレートされたコンピューティングデバイスの複数のモデルのうちの１つを決定するコードと、クライアントから前記エミュレートされたコンピューティングデバイスにおいて実行可能なアプリケーションの選択を取得するコードと、ホスト環境において前記アプリケーションを実行するコードと、前記アプリケーションにより生成されたビデオ信号およびオーディオ信号をメディアストリームに符号化するコードと、前記エミュレートされたコンピューティングデバイスの前記モデルのうちの前記１つのグラフィック表示を含む、ユーザインターフェースを生成するコードであって、前記メディアストリームからの前記ビデオ信号が、前記エミュレートされたコンピューティングデバイスの前記モデルのうちの前記１つの画面のグラフィック表示上でレンダリングされるように構成される、コードと、前記ユーザインターフェースおよび前記メディアストリームを前記クライアントに送信するコードと、入力コマンドを前記クライアントから取得するコードであって、前記入力コマンドが、前記エミュレートされたコンピューティングデバイスの前記モデルのうちの前記１つの前記グラフィック表示とのユーザ相互作用を通して生成される、コードと、前記入力コマンドを、前記ホスト環境において実行する前記アプリケーションに提供するコードと、を備える。
【発明の効果】
【０００５】
コンピューティングデバイスの遠隔エミュレートができる。
【図面の簡単な説明】
【０００６】
【図１】本開示の種々の実施形態に従う、ネットワーク設定された環境の図である。
【図２Ａ】本開示の種々の実施形態に従う、図１のネットワーク設定された環境においてクライアントでレンダリングされたユーザインターフェースの例である。
【図２Ｂ】本開示の種々の実施形態に従う、図１のネットワーク設定された環境においてクライアントでレンダリングされたユーザインターフェースの例である。
【図３】本開示の種々の実施形態に従う、図１のネットワーク設定された環境においてコンピューティングデバイスで実行されたエミュレーションサーバアプリケーションの一部として実装された機能の一例を示すフローチャートである。
【図４】本開示の種々の実施形態に従う、図１のネットワーク設定された環境においてコンピューティングデバイスで実行された電子商取引アプリケーションの一部として実装された機能の一例を示すフローチャートである。
【図５】本開示の種々の実施形態に従う、図１のネットワーク設定された環境において採用されたコンピューティングデバイスの一例図を提供する略ブロック図である。
【発明を実施するための形態】
【０００７】
図面を参照することにより、本開示の多くの態様をより良く理解することができる。図中の構成要素について、必ずしも拡大縮小の比率は正確ではないが、むしろ本開示の原則を明確に示すことを重視している。さらに、図面において、同様の参照数字は、複数の図にまたがる対応する部分を指す。
【０００８】
本開示は、ネットワーク上でコンピューティングデバイスをエミュレートすることに関する。顧客は、ネットワーク上の種々のコンピューティングデバイスのアプリケーションを購入することを希望する場合がある。十分な情報を得た上で購入を決定するために、顧客は、それを購入する前にアプリケーションを試すことを希望する場合がある。しかしながら、顧客は、アプリケーションを実行することが意図されるコンピューティングデバイスとは異なるクライアントデバイスを使用しているかもしれない。例えば、顧客は、デスクトップコンピュータを使用して、スマートフォン等のモバイルデバイスのアプリケーションを検索しているかもしれない。本開示の種々の実施形態によって、顧客は、エミュレートされたコンピューティングデバイス上で遠隔的に実行しているアプリケーションを使用することができる。さらに、いくつかの実施形態において、顧客は、関連付けられたユーザインターフェースによりアプリケーションを購入することが可能になり得る。以下の記載において、システムおよびそのコンポーネントの概略的な説明、さらに、システムおよびそのコンポーネントの動作の説明を行う。
【０００９】
アプリケーションを遠隔的に実行することに関する種々の技術は、２０１０年１１月５日に出願され、出願番号第１２／９４０，１３２号を割り当てられた、表題「Ｐｒｏｖｉｄｉｎｇ  Ｒｅｍｏｔｅ  Ａｃｃｅｓｓ  ｔｏ  Ｇａｍｅｓ  Ｄｅｓｉｇｎｅｄ  ｆｏｒ  ａ  Ｓｉｎｇｌｅ−Ｍａｃｈｉｎｅ  Ｅｘｐｅｒｉｅｎｃｅ」の米国特許出願、２０１０年１２月９日に出願され、出願番号第１２／９６４，２２５号を割り当てられた、表題「Ｅｎｈａｎｃｉｎｇ  Ｕｓｅｒ  Ｅｘｐｅｒｉｅｎｃｅ  ｂｙ  Ｐｒｅｓｅｎｔｉｎｇ  Ｐａｓｔ  Ａｐｐｌｉｃａｔｉｏｎ  Ｕｓａｇｅ」の米国特許出願、２０１０年１２月１５日に出願され、出願番号第１２／９６８，８４５号を割り当てられた、表題「Ｓｅｎｄｉｎｇ  Ａｐｐｌｉｃａｔｉｏｎ  Ｉｎｐｕｔ  Ｃｏｍｍａｎｄｓ  ｏｖｅｒ  ａ  Ｎｅｔｗｏｒｋ」の米国特許出願、２０１０年１２月１４日に出願され、出願番号第１２／９６７，１７１号を割り当てられた、表題「Ｌｏａｄ  Ｂａｌａｎｃｉｎｇ  Ｂｅｔｗｅｅｎ  Ｇｅｎｅｒａｌ−Ｐｕｒｐｏｓｅ  Ｐｒｏｃｅｓｓｏｒｓ  ａｎｄ  Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｏｒｓ」の米国特許出願、２０１０年１２月１日に出願され、出願番号第１２／９５７，４５０号を割り当てられた、表題「Ａｌｔｅｒｉｎｇ  Ｓｔｒｅａｍｉｎｇ  Ｖｉｄｅｏ  Ｅｎｃｏｄｉｎｇ  Ｂａｓｅｄ  ｏｎ  Ｕｓｅｒ  Ａｔｔｅｎｔｉｏｎ」の米国特許出願、２０１０年１１月３０日に出願され、出願番号第１２／９５６，６９３号を割り当てられた、表題「Ａｔｔｅｎｔｉｏｎ  Ｍｉｓｄｉｒｅｃｔｉｏｎ  ｆｏｒ  Ｓｔｒｅａｍｉｎｇ  Ｖｉｄｅｏ」の米国特許出願に記載されており、これらのすべては、参照することによりその全体が本明細書に組み込まれる。
【００１０】
図１を参照すると、種々の実施形態に従う、ネットワーク設定された環境１００が示されている。ネットワーク設定された環境１００は、ネットワーク１０９によって１つ以上のクライアント１０６とデータ通信する１つ以上のコンピューティングデバイス１０３を含む。ネットワーク１０９は、例えば、インターネット、イントラネット、エクストラネット、広域ネットワーク（ＷＡＮ）、ローカルエリアネットワーク（ＬＡＮ）、有線ネットワーク、無線ネットワーク、または他の適したネットワーク等、あるいは２つ以上のかかるネットワークの任意の組み合わせを含む。
【００１１】
コンピューティングデバイス１０３は、例えば、サーバコンピュータまたはコンピューティング機能を提供する任意の他のシステムを備えてもよい。あるいは、例えば、１つ以上のサーババンクまたはコンピュータバンクあるいは他の配置において配置される複数のコンピューティングデバイス１０３を採用してもよい。例えば、複数のコンピューティングデバイス１０３は、共に、クラウドコンピューティングリソース、グリッドコンピューティングリソース、および／または任意の他の分散コンピューティングの配置を備えてもよい。かかるコンピューティングデバイス１０３は、単一の設置として配置されてもよく、または多くの異なる地理的な位置に分散されてもよい。便宜上、コンピューティングデバイス１０３は、本明細書では単数で言及される。コンピューティングデバイス１０３が単数で言及されていても、上記のように、種々の配置において、複数のコンピューティングデバイス１０３が採用されてもよいことが理解される。
【００１２】
種々の実施形態に従うコンピューティングデバイス１０３において、種々のアプリケーションおよび／または他の機能を実行してもよい。さらに、コンピューティングデバイス１０３にアクセス可能なデータストア１１２に、種々のデータが格納される。データストア１１２は、理解されるように、複数のデータストア１１２を表してもよい。例えば、データストア１１２に格納されたデータは、以下に記載される種々のアプリケーションおよび／または機能エンティティの動作に関連付けられる。
【００１３】
コンピューティングデバイス１０３上で実行されるコンポーネントは、例えば、エミュレーションサーバアプリケーション１１５、電子商取引アプリケーション１１７、複数のラッパ１１８ａ．．．１１８Ｎ、複数のアプリケーション１１９ａ．．．１１９Ｎ、複数のメディアエンコーダ１２０ａ．．．１２０Ｎ、および本明細書では詳細に記載されていない他のアプリケーション、サービス、プロセス、システム、エンジン、または機能を含む。エミュレーションサーバアプリケーション１１５は、１種類のアプリケーションセッションサーバに相当してもよい。エミュレーションサーバアプリケーション１１５は、ラッパ１１８内で実行されるアプリケーション１１９を開始するように実行される。エミュレーションサーバアプリケーション１１５は、クライアント１０６からアプリケーション入力データ１２２を取得し、それぞれのラッパ１１８にアプリケーション入力データ１２２を提供するようにも実行される。
【００１４】
エミュレーションサーバアプリケーション１１５は、キャプチャされるアプリケーション出力データ１２３をアプリケーション１１９からクライアント１０６へ送信するようにも実行される。エミュレーションサーバアプリケーション１１５は、例えば、ハイパーテキスト転送プロトコル（ＨＴＴＰ）、シンプルオブジェクトアクセスプロトコル（ＳＯＡＰ）、表現状態転送（ＲＥＳＴ）、リアルタイム転送プロトコル（ＲＴＰ）、リアルタイムストリーミングプロトコル（ＲＴＳＰ）、リアルタイムメッセージングプロトコル（ＲＴＭＰ）、ユーザデータグラムプロトコル（ＵＤＰ）、伝送制御プロトコル（ＴＣＰ）、および／またはネットワーク１０９上でデータを通信するための他のプロトコル等の種々のプロトコルによって、クライアント１０６と通信してもよい。実行中のアプリケーション１１９に関連付けられた状態情報１２４および入力待ち行列１２５を維持するようにエミュレーションサーバアプリケーション１１５が構成される。
【００１５】
種々の実施形態において、エミュレーションサーバアプリケーション１１５は、１つ以上のネットワークページを使用して、ユーザインターフェースを生成するように構成されてもよい。ネットワークページは、エミュレートされたアプリケーション１１９により生成されたストリーミングビデオおよび／またはオーディオを含んでもよい。種々の実施形態において、仮想入力デバイスのイメージは、ストリーミングビデオおよび／またはオーディオと共にレンダリングされてもよい。例えば、エミュレートされたコンピューティングデバイスの仮想キーボードが、ネットワークページ内に含まれてもよい。エミュレートされたコンピューティングデバイスがモバイルコンピューティングデバイスである場合、モバイルコンピューティングデバイスのイメージが、ネットワークページ内に含まれてもよい。エミュレーションサーバアプリケーション１１５は、アプリケーション１１９と共に、モバイルコンピューティングデバイスのイメージとの相互のやりとりを促進してもよい。エミュレートされたコンピューティングデバイスが、画面を有するモバイルコンピューティングデバイスに相当する場合、アプリケーション１１９からキャプチャされたビデオは、このビデオがモバイルコンピューティングデバイスの画面上に示されるかのように、モバイルコンピューティングデバイスのイメージにより取り囲まれてもよい。
【００１６】
電子商取引アプリケーション１１７は、ネットワーク１０９上の販売者からの、ダウンロードされたアプリケーション等の項目のオンライン購入を促進するために実行される。電子商取引アプリケーション１１７は、項目のオンライン購入を促進するために、販売者のオンラインプレゼンスに関連付けられた種々のバックエンド関数をさらに実行する。例えば、電子商取引アプリケーション１１７は、購入、レンタル、ダウンロード、リース、または他の消費形態のための項目を選択する目的で、クライアント１０６に提供される、ネットワークページまたはその一部を生成してもよい。いくつかの実施形態において、電子商取引アプリケーション１１７は、複数の販売者が参加する電子市場を含むネットワークサイトに関連付けられる。
【００１７】
アプリケーション１１９は、例えば、ゲームまたは他の種類のアプリケーションに相当してもよい。非制限的な例として、アプリケーション１１９は、一人称シューティングゲーム、アクションゲーム、アドベンチャーゲーム、パーティゲーム、ロールプレイングゲーム、シミュレーションゲーム、戦略ゲーム、カーシミュレーションゲーム、および／または他の種類のゲームに相当してもよい。アプリケーション１１９は、汎用コンピューティングデバイスまたは、例えば、スマートフォン、ビデオゲームコンソール、ハンドヘルドゲームデバイス、アーケードゲームデバイス等の専用のデバイスでの実行のために元々設計されていてもよい。アプリケーション１１９は、さらに、携帯電話アプリケーション、コンピュータ支援設計（ＣＡＤ）アプリケーション、コンピュータ支援製造（ＣＡＭ）アプリケーション、写真操作アプリケーション、ビデオ編集アプリケーション、オフィス生産性アプリケーション、オペレーティングシステムおよび関連付けられたアプリケーション、オペレーティングシステム、アーキテクチャ、およびコンシューマデバイス上に存在しない機能のエミュレータ、ならびに他のアプリケーションおよびアプリケーションの組み合わせに相当してもよい。
【００１８】
アプリケーション１１９は、実行されるデバイスのうちの１つ以上のリソースにアクセスすることを予期してもよい。かかるリソースは、ディスプレイデバイス、入力デバイス、または他のデバイスに相当してもよい。いくつかの場合において、アプリケーション１１９は、リソースのうちの１つ以上への排他的アクセスをリクエストすることができるため、他のアプリケーションは特定のリソースへのアクセス権がない可能性がある。
【００１９】
ラッパ１１８は、アプリケーション１１９の実行のためのホスト環境を提供するアプリケーションに相当する。種々の実施形態において、ラッパ１１８は、アプリケーション１１９がアクセスすることを予期するリソースのうちの１つ以上を仮想化することにより、アプリケーション１１９のために視覚化された環境を提供するように構成されてもよい。かかるリソースは、キーボード、マウス、ジョイスティック、ビデオデバイス、音声デバイス、グローバルポジショニングシステム（ＧＰＳ）デバイス、加速度計、タッチスクリーン、内蔵型ボタン、ファイルシステム、内蔵型バッテリ等を含んでもよい。このように、ラッパ１１８は、ラッパ１１８がキーボード、マウス、または別の種類のハードウェアデバイスをエミュレートするかのように、アプリケーション１１９へ入力コマンドおよび他のデータを提供することができる。
【００２０】
さらに、ラッパ１１８は、ラッパ１１８がディスプレイデバイス、オーディオデバイス、または別の種類の出力デバイスをエミュレートするかのように、アプリケーション１１９により生成されたビデオ信号および／またはオーディオ信号を取得することができる。本明細書に記載される例の多くは、ディスプレイを有するエミュレートされたコンピューティングデバイスに関連するが、エミュレートされたコンピューティングデバイスは、例えば、セットトップボックス、オーディオプレイヤ、および／または統合ディスプレイ画面を有しない他のデバイスをさらに含んでもよい。ラッパ１１８は、１つ以上のメディアエンコーダ１２０によってビデオ信号および／またはオーディオ信号をメディアストリームに符号化することができる。このため、ラッパ１１８は、例えば、Ｍｏｖｉｎｇ  Ｐｉｃｔｕｒｅｓ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ（ＭＰＥＧ）エンコーダ、Ｈ．２６４エンコーダ、Ｆｌａｓｈ（登録商標）ビデオエンコーダ等の種々の種類のメディアエンコーダ１２０を含んでもよい。かかるメディアエンコーダ１２０は、例えば、データ縮小、符号化品質、レイテンシ等の要素に従って選択されてもよい。いくつかの実施形態において、ラッパ１１８は、アプリケーション入力データ１２２を取得し、アプリケーション出力データ１２３を提供するように、クライアント１０６と直接通信してもよい。
【００２１】
異なるアプリケーション１１９またはアプリケーション１１９のクラスについて、異なる種類のラッパ１１８を提供してもよい。非制限的な例として、異なるラッパ１１８を、ＯｐｅｎＧＬ（登録商標）、ＤｉｒｅｃｔＸ（登録商標）、Ｇｒａｐｈｉｃｓ  Ｄｅｖｉｃｅ  Ｉｎｔｅｒｆａｃｅ（ＧＤＩ）等の異なるアプリケーションプログラミングインターフェース（ＡＰＩ）を使用するアプリケーション１１９に提供してもよい。専用のデバイスまたは別の種類のコンピューティングデバイスでの実行のためにアプリケーション１１９が構成される場合、ラッパ１１８は、デバイスをエミュレートするエミュレーションアプリケーションを含んでもよい。いくつかの実施形態において、アプリケーション１１９の出力は、ラッパ１１８によりデバイスレベルでキャプチャされてもよい。例えば、アプリケーション１１９は、物理的ゲームコンソールにおいて実行されてもよく、ビデオ出力は、ビデオグラフィックスアレイ（ＶＧＡ）接続、高解像度マルチメディアインターフェース（ＨＤＭＩ）接続、コンポーネントビデオ接続、全国テレビジョン方式委員会（ＮＴＳＣ）テレビジョン接続、および／または他の接続によってキャプチャされてもよい。他の実施形態において、アプリケーション１１９の出力は、グラフィックスＡＰＩまたは他のシステムコールの下で、描画コール等のシステムコールを傍受することにより、ラッパ１１８によってキャプチャしてもよい。
【００２２】
エミュレーションサーバアプリケーション１１５によって維持される状態情報１２４は、現在アクティブであるアプリケーションセッションに関する種々のデータを含む。例えば、状態情報１２４は、アプリケーションセッションに現在参加しているユーザ、ユーザに関連付けられた状態情報、アプリケーションセッションに関連付けられたセキュリティ許可（例えば、参加できる人または参加できない人）等を追跡してもよい。いくつかの実施形態において、状態情報１２４のうちのいくつかまたはすべてを、アプリケーションセッションが終了するときに破棄してもよい。入力待ち行列１２５は、所与のアプリケーション１１９について、アプリケーション入力データ１２２から入力コマンドを収集する。入力コマンドは、正しい順序に並べ替えてもよく、相当するアプリケーション１１９に提示されるときに、それらが正しく解釈されることを保証するように、遅延がコマンド間に挿入されてもよい。
【００２３】
データストア１１２に格納されたデータは、例えば、アプリケーション１２７、メディアエンコーダ１２９、ラッパ１３０、保存された状態データ１３３、ユーザデータ１３６、デバイスインターフェース１３７、およびおそらくは他のデータを含む。アプリケーション１２７は、アプリケーション１１９として開始されるように利用可能である異なるアプリケーションのライブラリに相当する。アプリケーション１２７は、コンピューティングデバイス１０３内の実行可能なコードに相当してもよい。あるいは、アプリケーション１２７は、別の種類のデバイス内で実行可能であるがコンピューティングデバイス１０３内では実行不可能であるコードに相当してもよい。かかるアプリケーション１２７は、「バイナリ」、読み込み専用メモリイメージ（ＲＯＭ）、および他の用語で言及されてもよい。特定のアプリケーション１２７を、複数のアプリケーションセッションのために、アプリケーション１１９の複数のインスタンスとして実行してもよい。
【００２４】
メディアエンコーダ１２９は、コンピューティングデバイス１０３において採用されてもよい種々の種類のメディアエンコーダ１２０に相当する。いくつかのメディアエンコーダ１２９は、例えば、Ｈ．２６４、ＭＰＥＧ−４、ＭＰＥＧ−２、および／または他のフォーマット等の指定のフォーマットに相当する。ラッパ１３０は、種々の種類のラッパ１１８を実装する実行可能なコードに相当してもよい。ラッパ１３０は、コンピューティングデバイス１０３において実行可能であり、複数のアプリケーションセッションのために、ラッパ１１８の複数のインスタンスとして実行されてもよい。
【００２５】
保存された状態データ１３３は、アプリケーション１１９によって保存されたゲーム状態に相当する。アプリケーション１１９は視覚化された環境で実行されてもよいため、アプリケーション１１９は、状態情報を仮想的な位置に書き込んでもよく、これは、次いで、保存された状態データ１３３としてデータストア１１２に格納するためにマッピングされる。保存された状態データ１３３は、アプリケーション１１９によって通常保存されるデータに相当してもよい、または、任意の時点で回復（ｒｅｓｕｍｅ）されてもよいアプリケーション１１９のメモリイメージに相当してもよい。ユーザデータ１３６は、例えば、ユーザに関連付けられたコンピューティングデバイスの種類、セキュリティ証明書、アプリケーションプリファレンス、請求情報、ユーザによって開始されるアプリケーションセッションに参加することが許可されている他のユーザのリスト等のアプリケーション１１９のユーザに関する種々のデータを含む。
【００２６】
デバイスインターフェース１３７は、イメージ、アニメーション、コード、ハイパーテキストマークアップ言語（ＨＴＭＬ）、拡張マークアップ言語（ＸＭＬ）、カスケーディングスタイルシート（ＣＳＳ）、および／または仮想化されたコンピューティングデバイスのグラフィック表示を生成するために使用されてもよい他のデータに相当する。特定のコンピューティングデバイスプラットフォーム上で実行可能なアプリケーション１１９は、多数のデバイスインターフェース１３７に関連付けられてもよいことに留意されたい。非制限的な例として、スマートフォン用のＡｎｄｒｏｉｄ（登録商標）プラットフォームは、スマートフォンの多数の異なるモデルによって支持されてもよい。モデルのうちのいくつかは、タッチスクリーンを有するミニキーボードを有してもよいが、他のモデルは、物理的ミニキーボードを有しないタッチスクリーンを単に有してもよい。モデルは、異なる制御およびケーシングを有してもよい。したがって、異なるデバイスインターフェース１３７は、Ａｎｄｒｏｉｄ（登録商標）スマートフォンの異なるモデルに提供されてもよい。
【００２７】
いくつかの実施形態において、多数の異なるデバイスインターフェース１３７が、１つのラッパ１３０と共に使用されてもよい。エミュレートされたコンピューティングデバイスが統合されたディスプレイを含まない場合、デバイスインターフェース１３７は、エミュレートされたコンピューティングデバイスによって生成されたビデオを示す外部ディスプレイデバイスの表示を含んでもよい。同様に、エミュレートされたコンピューティングデバイス（例えば、キーボード、マウス等）に接続してもよい他の統合されていない外部デバイスが、デバイスインターフェース１３７によって表示されてもよい。
【００２８】
クライアント１０６は、ネットワーク１０９に結合されてもよい複数のクライアントデバイスを表す。クライアント１０６は、地理的に散らばっていてもよい。クライアント１０６は、例えば、コンピュータシステム等のプロセッサベースのシステムを備えてもよい。かかるコンピュータシステムは、デスクトップコンピュータ、ラップトップコンピュータ、携帯情報端末、携帯電話、スマートフォン、セットトップボックス、アプリケーションを実行し、ネットワーク１０９にアクセスすることができるテレビ、音楽プレイヤ、ウェブパッド、タブレットコンピュータシステム、ゲームコンソール、電子書籍リーダ、または同様の機能を有する他のデバイスの形態で実施されてもよい。
【００２９】
クライアント１０６は、ディスプレイ１３９を含んでもよい。ディスプレイ１３９は、例えば、陰極線管（ＣＲＴ）、液晶ディスプレイ（ＬＣＤ）画面、ガスプラズマベースのフラットパネルディスプレイ、ＬＣＤプロジェクタ、または他の種類のディスプレイデバイス等の１つ以上のデバイスを備えてもよい。クライアント１０６は、１つ以上の入力デバイス１４２を含んでもよい。入力デバイス１４２は、例えば、キーボード、マウス、ジョイスティック、加速度計、ライトガン、ゲームコントローラ、タッチパッド、タッチスティック、プッシュボタン、光センサ、マイクロフォン、ウェブカム、および／またはユーザ入力を提供することができる任意の他のデバイス等のデバイスを備えてもよい。さらに、種々の入力デバイス１４２は、ユーザにフィードバックを提供するために、触覚技術を統合してもよい。
【００３０】
クライアント１０６は、クライアントアプリケーション１４５および／または他のアプリケーション等の種々のアプリケーションを実行するように構成されてもよい。クライアントアプリケーション１４５は、ユーザが、コンピューティングデバイス１０３において実行されるアプリケーション１１９を開始、参加、プレイ、あるいはこれと相互にやりとりができるように実行される。このため、クライアントアプリケーション１４５は、入力デバイス１４２のうちの１つ以上によって、ユーザによって提供される入力コマンドをキャプチャし、アプリケーション入力データ１２２としてネットワーク１０９によりコンピューティングデバイス１０３へこの入力を送信するように構成される。アプリケーション入力データ１２２は、アプリケーション１１９によって使用するために、クライアント１０６によって生成された他のデータ（例えば、ＧＰＳデータ、オーディオデータ等）をさらに統合してもよい。種々の実施形態において、クライアントアプリケーション１４５は、ブラウザアプリケーションに相当する。
【００３１】
クライアントアプリケーション１４５は、ネットワーク１０９上のアプリケーション出力データ１２３をコンピューティングデバイス１０３から取得し、ディスプレイ１３９上の画面１４８をレンダリングするようにさらに構成される。このため、クライアントアプリケーション１４５は、アプリケーション１１９によって生成されたメディアストリームを再生するために、１つ以上のビデオおよびオーディオプレイヤを含んでもよい。一実施形態において、クライアントアプリケーション１４５は、ブラウザアプリケーション内で実行されるプラグインまたは他のクライアント側コードを備える。クライアント１０６は、例えば、ブラウザアプリケーション、電子メールアプリケーション、インスタントメッセージアプリケーション、および／または他のアプリケーション等のクライアントアプリケーション１４５以外のアプリケーションを実行するように構成されてもよい。いくつかの実施形態において、アプリケーション１１９と相互にやりとりするために、複数のクライアント１０６が１人以上のユーザに採用されてもよい。非制限的な例として、いくつかのクライアント１０６は、ディスプレイ出力専用であってもよいが、他のクライアント１０６は、ユーザ入力の取得専用であってもよい。異なるクライアント１０６は、アプリケーション１１９に入力コマンドを提供する前に採用される遅延に影響を及ぼす可能性がある、異なるレイテンシ要件に関連付けられてもよいことに留意されたい。
【００３２】
ここで図２Ａを参照すると、ネットワーク設定された環境１００（図１）においてクライアント１０６（図１）で実行されるクライアントアプリケーション１４５（図１）においてレンダリングされたユーザインターフェース２００の一例が示されている。図２Ａに示されるユーザインターフェース２００は、電子商取引アプリケーション１１７（図１）によって生成されたネットワークページに相当する。ネットワークページは、電子商取引アプリケーション１１７によってダウンロードに利用可能なアプリケーション１２７（図１）のための詳細なネットワークページに相当する。ユーザインターフェース２００は、この例において、「Ｔｈｅ  Ｓｔｕｐｉｄ  Ｑｕｉｚ（愚かなクイズ）」というタイトルの価格０．９９ドルのアプリケーション１２７に関する記述２０１を含む。アプリケーション１２７は、Ａｎｄｒｏｉｄ（登録商標）デバイスのダウンロードに利用可能である。種々のスクリーンショットおよび他の記述的情報は、ユーザインターフェース２００において提供されてもよい。ユーザインターフェース２００は、類似する項目へのリンクをさらに含んでもよい。
【００３３】
エミュレーションリクエストツール２０３は、顧客がエミュレーションサーバアプリケーション１１５（図１）によりアプリケーション１２７のセッションを開始するために提供される。この場合、顧客がエミュレーションリクエストツール２０３を起動するときに、顧客は、実行することが意図されるコンピューティングデバイスに類似する仮想化された環境において、アプリケーション１２７を使用することができる。エミュレーションリクエストツール２０３を起動することによって、新しいネットワークページおよび／またはユーザインターフェース２００内のフレーム、ライトボックス、または他のコンポーネントがロードされてもよい。購入コンポーネント２０６は、特定のコンピューティングデバイス上で使用するためのアプリケーション１２７を購入するために提供されてもよい。この非制限的な例において、顧客は、アプリケーション１２７：「デバイス１」および「デバイス２」と互換性がある２つのコンピューティングデバイスに関連付けられる。他の例において、顧客に関連付けられた互換性のないデバイスは、互換性なしとしてリストされてもよい。アプリケーション１２７は、ショッピングカート、ウィッシュリスト、ギフトレジストリ、または他の種類の項目リストにさらに追加されてもよい。
【００３４】
引き続き図２Ｂを参照すると、ネットワーク設定された環境１００（図１）においてクライアント１０６（図１）で実行されるクライアントアプリケーション１４５（図１）においてレンダリングされたユーザインターフェース２００の別の例が示されている。図２Ｂに示されるユーザインターフェース２００は、図２Ａに示すように、電子商取引アプリケーション１１７（図１）によって生成されたが、ライトボックスであるユーザインターフェース２５０と重ね合されているネットワークページに相当する。他の例において、ユーザインターフェース２５０は、全画面フォーマットまたは別のフォーマットで提示されてもよい。ユーザインターフェース２５０の一部は、電子商取引アプリケーション１１７によって生成されてもよいが、ユーザインターフェース２５０の他の部分は、エミュレーションサーバアプリケーション１１５（図１）によって生成されてもよい。
【００３５】
ユーザインターフェース２５０は、エミュレートされたコンピューティングデバイスのグラフィック表示であるデバイスインターフェース２５３を含み、この例では、特定モデルのＡｎｄｒｏｉｄ（登録商標）スマートフォンである。いくつかの例において、デバイスインターフェース２５３は、エミュレートされたコンピューティングデバイスの汎用バージョン、例えば、Ａｎｄｒｏｉｄ（登録商標）スマートフォンの汎用バージョンに相当してもよい。どのモデルが使用されるかは、ユーザインターフェース２００またはユーザインターフェース２５０において顧客により特定されてもよい。さらに、エミュレートされたコンピューティングデバイスのモデルのプリファレンスは、ユーザデータ１３６に格納されてもよい。
【００３６】
デバイスインターフェース２５３は、適用可能なデバイスインターフェース１３７（図１）からエミュレーションサーバアプリケーション１１５によって生成される。デバイスインターフェース２５３は、入力ボタン２５４の仮想バージョンおよび／または実際のデバイス内に存在する他の制御を含む。アニメーションおよび／またはイメージを使用して、物理的経験を仮想経験に変換してもよい。デバイスインターフェース２５３内には、選択されたアプリケーション１２７（図１）に相当するアプリケーション１１９（図１）からラッパ１１８（図１）によってキャプチャされたメディアストリームのビデオ部分に相当する画面１４８（図１）がある。メディアストリームのオーディオ部分は、メディアストリームのビデオ部分と共に、クライアントアプリケーション１４５によって再生されてもよい。オーディオハードウェア制御２５５は、エミュレートされたコンピューティングデバイスからオーディオ再生を制御する、例えば、オーディオのボリュームを増減するように提供されてもよい。他の例において、他のハードウェア制御、例えば、録音、高速早送り、巻き戻し、停止、前のトラック、次のトラック、画面の明るさ、選択されたディスプレイデバイス等が提供されてもよい。
【００３７】
ユーザインターフェース２５０は、ユーザインターフェース２００において記述２０１（図２Ａ）の省略されたバージョンであってもよい記述的情報２５６をさらに含んでもよい。記述的情報２５６は、タイトル、出版者、価格、説明的記述、および／またはアプリケーション１２７に関する他の情報を含んでもよい。この非制限的な例において、可能性のある購入のためにアプリケーション１２７を試験するのに費やす時間が制限されているため、ユーザインターフェース２５０は、タイマー２５９を含む。他の例において、顧客がアプリケーション１２７を使用するための時間は、無制限であってもよい。
【００３８】
ユーザインターフェース２５０は、画面１４８の配向を回転させるように配向制御２６２を含んでもよい。かかる配向制御２６２を起動することにより、仮想化されたバージョンの加速度計または他のデバイスに、エミュレートされたコンピューティングデバイスの配向が、例えば、ポートレートからランドスケープ、およびその逆に変更されたことをアプリケーション１１９に通知させてもよい。ユーザインターフェース２５０は、理解されるように、アプリケーション１２７の購入を開始するか、またはアプリケーション１２７をショッピングカート、ウィッシュリスト、ギフトレジストリ、または他の項目リストに追加するための、１つ以上の購入コンポーネント２６５をさらに含んでもよい。
【００３９】
次に、図１、２Ａ、および２Ｂを参照すると、ネットワーク設定された環境１００の種々のコンポーネントの動作に関する一般的な記述が提供されている。まず、クライアント１０６において、顧客は、電子商取引アプリケーション１１７によって提供されたネットワークサイトをブラウズする。例えば、顧客は、カタログ分類をナビゲートする、検索クエリを実行する、リンクを選択する、および／または他のナビゲーション機能を実行してもよい。顧客は、図２Ａのユーザインターフェース２００に示されるもの等の詳細なネットワークページ、またはダウンロードのためのアプリケーション１２７を掲載する別の同様のネットワークページに到達してもよい。顧客は、顧客がアプリケーション１２７を探しているエミュレートされたコンピューティングデバイスの１つ以上の好適なモデルを特定してもよい。
【００４０】
アプリケーション１２７を購入および／またはダウンロードすることに加えて、顧客は、シミュレートされたインターフェースによりアプリケーション１２７を使用する機会が与えられてもよい。このために、クライアント１０６において、顧客は、例えば、エミュレーションリクエストツール２０３を起動することによって、エミュレーションサーバアプリケーション１１５へアプリケーション１１９を開始するリクエストを送信する。エミュレーションサーバアプリケーション１１５は、データストア１１２から相当するアプリケーション１２７、メディアエンコーダ１２９、ラッパ１３０、およびデバイスインターフェース１３７を取得する。エミュレーションサーバアプリケーション１１５は、次いで、相当するラッパ１１８のアプリケーション１１９を開始する。エミュレーションサーバアプリケーション１１５は、状態情報１２４内のアプリケーション１１９の状態を追跡する。
【００４１】
ラッパ１１８は、アプリケーション１１９を実行するためのホスト環境を提供する。いくつかの実施形態において、ホスト環境は、コンピューティングデバイス１０３の１つ以上のリソースを仮想化する、アプリケーション１１９の仮想化された環境を含んでもよい。かかるリソースは、排他的リソース、すなわち、アプリケーション１１９が排他的アクセスをリクエストするリソースを含んでもよい。例えば、通常、１つのアプリケーションしか全画面アクセスを有することができないため、アプリケーション１１９は、排他的リソースであるビデオデバイスから全画面アクセスをリクエストしてもよい。さらに、ラッパ１１８は、コンピューティングデバイス１０３に実際には存在しなくてもよい、例えば、キーボード、マウス、ＧＰＳデバイス、加速度計等の入力デバイスを仮想化してもよい。ラッパ１１８は、仮想ファイルシステムへのアクセスをアプリケーション１１９にさらに提供してもよい。種々の実施形態において、ラッパ１１８は、仮想マシンに相当してもよい、および／または仮想マシン内においてラッパ１１８を実行してもよい。
【００４２】
クライアント１０６において、ユーザは、クライアント１０６の入力デバイス１４２の使用によって、アプリケーション１１９の入力コマンドを入力する。非制限的な例として、ユーザは、左マウスボタンを押してもよい。したがって、クライアントアプリケーション１４５は、アプリケーション入力データ１２２内のネットワーク１０９上を伝送されてもよいフォーマットで、入力コマンドを符号化するように機能する。エミュレーションサーバアプリケーション１１５は、入力コマンドを受信し、これをアプリケーション１１９の入力待ち行列１２５に追加して、最終的にこれをラッパ１１８に受け渡す。ラッパ１１８は、次いで、仮想化されたマウスによって、アプリケーション１１９に対し、左マウスボタン押下を行う。
【００４３】
入力コマンドが受信されるとすぐにそれがアプリケーション１１９へ提供される場合、ネットワーク１０９の可変レイテンシ特徴によって、いくつかの入力コマンドがアプリケーション１１９により誤解される可能性があることに留意されたい。非制限的な例として、１回目の単一クリックが、２回目の単一クリックを超える量だけネットワーク１０９により遅延される場合、マウスボタンの２回の単一クリックは、ダブルクリックとして誤解される可能性がある。同様に、特定の入力コマンド間の相対時間的関係が保存されない場合、マウスクリックおよびマウスドラッグは誤解される可能性がある。
【００４４】
別の非制限的な例として、アプリケーション１１９が、格闘ゲームジャンル内のゲームアプリケーション、例えば、Ｍｏｒｔａｌ  Ｋｏｍｂａｔ、Ｓｔｒｅｅｔ  Ｆｉｇｈｔｅｒ等に相当すると仮定する。クライアント１０６において、ユーザは、一連の複雑な動きを迅速な入力コマンド列により行ってもよい。入力コマンドが、ネットワーク１０９上の可変レイテンシの影響を受ける場合、一連の動きは、アプリケーション１１９によって誤解される可能性があるため、ユーザによって制御されるキャラクターは、意図された動きを行わない。例えば、パンチの動きを成功裏に行うために、２つのボタンを特定期間内で押下する必要があるかもしれない。第２の入力コマンドがネットワーク１０９により遅延されたが、第１の入力コマンドは遅延されていない場合、ユーザの過失なく、動きが失敗に終わる可能性がある。これを解決するために、エミュレーションサーバアプリケーション１１５は、第１の入力コマンドを遅延させて、第１の入力コマンドと第２の入力コマンドとの間の相対時間的関係を保存してもよい。そうすることで、ユーザによって行われるジェスチャーまたはコマンド列は、アプリケーション１１９について保存される。
【００４５】
使用される追加の遅延は既定であってもよいが、クライアント１０６において生成されたときのコマンド間の期間と、コマンドがエミュレーションサーバアプリケーション１１５によって受信されたときのコマンド間の期間との間の差に基づいて計算されてもよい。クライアント１０６において生成されたときのコマンド間の期間は、コマンドに関連付けられたメタデータにおいて、タイムスタンプを参照することにより決定されてもよい。システムにおける種々の固定されたレイテンシ（例えば、ビデオ符号化遅延、最小ネットワークレイテンシ）は、アプリケーション１１９の機能に悪影響を及ぼさない可能性があることに留意されたい。
【００４６】
レイテンシを追加すること、およびレイテンシを適応させることに関する種々の技術は、２０１０年１０月２９日に出願され、出願番号第１２／９１６，１１１号が割り当てられた、表題「Ａｄｄｉｎｇ  Ｌａｔｅｎｃｙ  ｔｏ  Ｉｍｐｒｏｖｅ  Ｐｅｒｃｅｉｖｅｄ  Ｐｅｒｆｏｒｍａｎｃｅ」の米国特許出願、および２０１０年９月１７日に出願され、出願番号第１２／８８５，２９６号が割り当てられた、表題「Ａｃｃｏｍｍｏｄａｔｉｎｇ  Ｌａｔｅｎｃｙ  ｉｎ  ａ  Ｓｅｒｖｉｃｅ−Ｂａｓｅｄ  Ａｐｐｌｉｃａｔｉｏｎ」の米国特許出願に記載され、これらの両方が、参照することにより本明細書に組み込まれる。
【００４７】
いくつかの場合において、入力コマンドをアプリケーション１１９に提供する際の遅延は、少なくとも一部は、入力コマンドに関連付けられたビデオフレーム領域に依存してもよい。非制限的な例として、ゲームであるアプリケーション１１９を用いる場合、ゲームプレイに関連する入力コマンドを遅延させて、入力コマンドの意味を保存することが重要になるかもしれない。しかしながら、ゲーム画面１４８は、チャットウィンドウをさらに含んでもよく、入力コマンドは、このチャットウィンドウによって、ゲームの別のプレイヤに送信されるテキストであってもよい。入力コマンドがチャットウィンドウに関する場合、ラッパ１１８は、追加の遅延なく、アプリケーション１１９へ入力コマンドを提供するように構成されてもよい。つまり、他のユーザにできるだけ早くテキストを送信することが好ましいことがある。したがって、遅延は、入力コマンドが、チャットウィンドウである画面１４８の領域に関連するかどうかに依存し得る。また、アプリケーション１１９は、複数のモードを有してもよいことが理解され、１つのモードは、入力コマンドを提供する際に遅延と関連付けられるが、別のモードはそうではない。
【００４８】
クライアント１０６において、ユーザが入力コマンドを生成したときに、入力コマンドが、画面１４８上にユーザに対して提示されるビデオフレームと同期されることを保証することも重要であるかもしれない。非制限的な例として、システムの種々のレイテンシのために、格闘ゲームにおいてユーザにより制御されるキャラクターによって投げられることが意図される火の玉は、意図されるよりも遅れて投げられるかもしれない。いくつかの場合において、これは問題にならないかもしれない。例えば、ユーザは、単に火の玉を投げるだけでよく、火の玉を投げる際の短い遅延は、ユーザにとって完全に許容可能であり得る。しかしながら、より正確には、アプリケーション１１９は、ラッパ１１８がフレーム番号または他の時間識別子を入力コマンドに関連付けるのを可能にする、ＡＰＩを支持してもよい。したがって、アプリケーション１１９は、いつ入力コマンドが行われ、それに応じて反応したかを正確に知ることができる。フレーム番号または他の時間識別子は、クライアントアプリケーション１４５によって、入力コマンドのメタデータとしてエミュレーションサーバアプリケーション１１５に送信されてもよい。
【００４９】
いくつかの実施形態において、クライアント１０６によって生成されたものとは異なる入力コマンドがアプリケーション１１９に提示されてもよい。非制限的な例として、ユーザがマウスダウンコマンドを送信し、クライアントアプリケーション１４５が集中できなくなる場合、ラッパ１１８は、マウスダウンコマンド、次にマウスアップコマンドを送信するように構成されてもよい。種々の実施形態において、入力コマンドはできるだけ早くラッパ１１８に中継されてもよい、または別のアプローチに従い、入力コマンドが入力待ち行列１２５においてラッパ１１８によって行列待ちとなり（ｑｕｅｕｅｄ）、行列から順次、アプリケーション１１９へ中継されてもよい。
【００５０】
一方で、アプリケーション１１９のグラフィック出力は、ラッパ１１８によってキャプチャされ、メディアストリームに符号化される。さらに、アプリケーション１１９のオーディオ出力がキャプチャされ、メディアストリームに多重化されてもよい。アプリケーション１１９のグラフィック出力および／またはオーディオ出力は、いくつかの実施形態において、コンピューティングデバイス１０３のハードウェアデバイスによってキャプチャされてもよい。メディアストリームは、アプリケーション出力データ１２３として、エミュレーションサーバアプリケーション１１５によってネットワーク１０９上をクライアント１０６へと伝送される。クライアントアプリケーション１４５は、アプリケーション出力データ１２３を取得し、ユーザインターフェース２５０において、ディスプレイ１３９上の画面１４８をレンダリングする。画面１４８は、エミュレートされたコンピューティングデバイスの入力および出力を促進する、相当するデバイスインターフェース１３７から生成されたデバイスインターフェース２５３によって取り囲まれてもよい。
【００５１】
いくつかの実施形態において、顧客は、１つのクライアント１０６において、アプリケーション１１９を開始し、別のクライアント１０６において、アプリケーション１１９を継続してもよい。さらに、多様な位置において、複数のユーザは、アプリケーション１１９に参加してもよい。非制限的な例として、アプリケーション１１９は、複数のコントローラを有する１つのデバイスにおいて実行されるように開発されていてもよい。したがって、ラッパ１１８は、１つのクライアント１０６から入力コマンドを第１の仮想コントローラにマップし、別のクライアント１０６から入力コマンドを第２の仮想コントローラにマップするように構成されてもよい。別の非制限的な例として、アプリケーション１１９は、１つのデバイスにおいて実行されるように開発されていてもよく、キーボードの片側は第１のプレイヤを制御し、キーボードの反対側は第２のプレイヤを制御する。したがって、ラッパ１１８は、１つのクライアント１０６からの入力コマンドを、仮想キーボードの片側でキーにマップし、別のクライアント１０６からの入力コマンドを、仮想キーボードの反対側で、キーにマップするように構成されてもよい。
【００５２】
種々の実施形態により、クライアント１０６内の１種類の入力デバイス１４２によって生成された入力を、全く異なる種類の仮想入力デバイスによって、アプリケーション１１９へ提供される入力コマンドへと、ラッパ１１８によって変化させることを可能にする。非制限的な例として、クライアント１０６内の加速度計によって生成された入力は、仮想マウスによって提供される入力へ、ラッパ１１８によって変換されてもよい。このため、アプリケーション１１９が実装されたときに考慮されなかった可能性のあるアプリケーション１１９において、完全に異なる種類の入力デバイス１４２を使用してもよい。
【００５３】
入力デバイス１４２が触覚技術およびデバイスを統合する場合、力フィードバックは、アプリケーション出力データ１２３内の入力デバイス１４２へ提供されてもよい。非制限的な例として、シミュレートされた自動車ハンドルは、ユーザに道路の感覚を与えるように、力フィードバックによってプログラム化されてもよい。ユーザが曲がる、または加速するにつれて、ハンドルは、制御できないターンまたはスリップに耐え得る。別の非制限的な例として、入力デバイス１４２の温度は、力フィードバックに従って変化するように構成されてもよい。一実施形態において、１つのクライアント１０６のアプリケーション入力データ１２２から生成された力フィードバックは、別のクライアント１０６へ送信されたアプリケーション出力データ１２３に含まれてもよい。
【００５４】
アプリケーション１１９のハードウェア要件からクライアント１０６が分離されるため、ネットワーク１０９上で許容可能な帯域幅およびレイテンシを有するビデオのストリーミングを可能にする多様な種類のクライアント１０６により、アプリケーション１１９を遠隔的に使用してもよい。例えば、ゲームアプリケーション１１９が、スマートフォンであるクライアント１０６上でプレイされてもよい。このため、クライアント１０６は、アプリケーション１１９を実行するために必要であり得る複雑な３次元レンダリングを実行するために、高価なグラフィックスハードウェアを含む必要はない。対照的に、コンピューティングデバイス１０３のハードウェアを、最新のおよび最も計算的に集約的なアプリケーション１１９のハードウェア要件に適合するように、必要に応じてアップグレードしてもよい。種々の実施形態において、エミュレーションサーバアプリケーション１１５によって送信されたメディアストリーム内のビデオ信号は、ネットワーク１０９上のコンピューティングデバイス１０３とクライアント１０６との間の接続のビットレートおよび／または他の特性に従ってスケールされてもよい。
【００５５】
自身のコンピューティングデバイスに類似するインターフェースを有するアプリケーション１２７を完全にテストすることにより、顧客は、アプリケーション１２７を購入する準備が十分に整う。任意の時点で、顧客は、種々の購入コンポーネント２０６、２６５を選択することによって、アプリケーション１２７を購入、リース、および／またはダウンロードすることを選択してもよい。さらに、顧客が特定バージョンのエミュレートされたコンピューティングデバイスを所有しない場合、顧客は、その仮想バージョンと相互にやりとりした後で、エミュレートされたコンピューティングデバイスの物理的バージョンを購入することを決めてもよい。
【００５６】
次に図３を参照すると、種々の実施形態に従い、エミュレーションサーバアプリケーション１１５の一部の動作の一例を提供するフローチャートが示される。図３のフローチャートは、本明細書に記載されるように、エミュレーションサーバアプリケーション１１５の一部の動作を実装するように採用されてもよい多くの異なる種類の機能的な配置の一例を提供するにすぎないことが理解される。代替として、図３のフローチャートは、１つ以上の実施形態に従うコンピューティングデバイス１０３（図１）において実装された方法のステップの一例を表すものとして表示されてもよい。
【００５７】
まずボックス３０３を参照すると、エミュレーションサーバアプリケーション１１５は、クライアント１０６（図１）から特定のアプリケーション１２７（図１）のアプリケーションエミュレーションセッションを開始するリクエストを取得する。ボックス３０６において、エミュレーションサーバアプリケーション１１５は、クライアント１０６において顧客によって指定された、または他の方法で顧客に関連付けられたエミュレートされたコンピューティングデバイスの好適なモデルを判定する。ボックス３０９において、エミュレーションサーバアプリケーション１１５は、好適なモデルが示されるかどうかを判定する。好適なモデルが示されない場合、または好適なモデルのデバイスインターフェース１３７（図１）が利用可能でない場合、エミュレーションサーバアプリケーション１１５は、ボックス３１０に進み、アプリケーション１２７を実行して、デバイスインターフェース２５３（図２Ｂ）を提供するために、汎用モデルのエミュレートされたコンピューティングデバイスを使用する。エミュレーションサーバアプリケーション１１５は、次いで、ボックス３１２へと続く。好適なモデルが示される場合、エミュレーションサーバアプリケーション１１５は、ボックス３１２へとさらに続き、好適なモデルを使用する。
【００５８】
ボックス３１２において、エミュレーションサーバアプリケーション１１５は、カスタマイズされたデバイスインターフェース２５３を含むユーザインターフェース２５０（図２Ｂ）を生成し、相当するデータをクライアント１０６へ送信する。ボックス３１５において、エミュレーションサーバアプリケーション１１５は、アプリケーション１２７をロードし、エミュレートされたコンピューティングデバイスに相当するラッパ１１８（図１）内で、アプリケーション１１９（図１）の一例を実行する。ボックス３１８において、エミュレーションサーバアプリケーション１１５は、ラッパ１１８からメディアストリームをキャプチャし、これをメディアエンコーダ１２０（図１）および／または他のエンコーダによって符号化してもよい。エミュレーションサーバアプリケーション１１５は、カスタマイズされたデバイスインターフェース２５３においてレンダリングするために、アプリケーション出力データ１２３（図１）としてメディアストリームをクライアント１０６へ送信する。いくつかの実施形態において、デバイスインターフェース２５３は、メディアストリームのビデオ信号に埋め込まれてもよい。
【００５９】
ボックス３２１において、エミュレーションサーバアプリケーション１１５は、アプリケーション入力データ１２２（図１）において、クライアント１０６から入力コマンドを取得する。エミュレーションサーバアプリケーション１１５は、ラッパ１１８において実行するアプリケーション１１９に入力コマンドを提供する。ボックス３２４において、エミュレーションサーバアプリケーション１１５は、セッションが終了したかどうかを判定する。非制限的な例として、セッションはタイマーに関連付けられてもよく、タイマーは期限が切れていてもよい。別の非制限的な例として、セッションは、クライアント１０６において、ユーザとの相互のやりとりにより明示的に終了していてもよい。さらに別の非制限的な例として、セッションは、クライアント１０６において、ユーザとの相互のやりとりにより暗示的に終了していてもよい。
【００６０】
セッションが終了していない場合、エミュレーションサーバアプリケーション１１５はボックス３１８に戻り、アプリケーション１１９からメディアストリームのキャプチャを継続する。セッションが終了している場合、エミュレーションサーバアプリケーション１１５はボックス３２７に進み、セッションを終了させて、セッションによって消費されたリソースを公開する。その後、エミュレーションサーバアプリケーション１１５の一部が終了する。
【００６１】
図４に進むと、種々の実施形態に従う電子商取引アプリケーション１１７の一部の動作の一例を提供するフローチャートが示される。図４のフローチャートは、本明細書に記載されるように、電子商取引アプリケーション１１７の一部の動作を実装するように採用されてもよい多くの異なる種類の機能的配置の一例を提供するにすぎないことが理解される。代替として、図４のフローチャートは、１つ以上の実施形態に従う、コンピューティングデバイス１０３（図１）において実装された方法のステップの一例を示すものと考えられてもよい。
【００６２】
まず、ボックス４０３において、電子商取引アプリケーション１１７は、アプリケーション１２７（図１）に関する詳細なネットワークページについて、クライアント１０６（図１）からリクエストを取得する。ボックス４０６において、電子商取引アプリケーション１１７は、ネットワークページを生成し、そのネットワークページをクライアント１０６へ送信する。ボックス４０９において、電子商取引アプリケーション１１７は、クライアント１０６からリクエストを取得して、アプリケーションエミュレーションセッションを開始する。ボックス４１２において、電子商取引アプリケーション１１７は、エミュレーションサーバアプリケーション１１５と共に、アプリケーションエミュレーションセッションのユーザインターフェース２５０（図２Ｂ）またはユーザインターフェース２５０の一部を生成し、ディスプレイ１３９（図１）上でレンダリングするために、相当するデータをクライアント１０６へ送信する。
【００６３】
ボックス４１５において、電子商取引アプリケーション１１７は、アプリケーション１２７を購入するリクエストを取得する。ボックス４１８において、電子商取引アプリケーション１１７は、注文パイプラインにおいて種々のタスクを伴ってもよい、顧客によってアプリケーション１２７の注文を完了するための注文プロセスを開始する。その後、電子商取引アプリケーション１１７の一部が終了する。
【００６４】
図５を参照すると、本開示の実施形態に従うコンピューティングデバイス１０３の略ブロック図が示されている。コンピューティングデバイス１０３は、例えば、そのすべてがローカルインターフェース５０９に結合される、プロセッサ５０３、メモリ５０６、および随意に１つ以上のグラフィックスデバイス５０７を有する少なくとも１つのプロセッサ回路を含む。このため、コンピューティングデバイス１０３は、例えば、少なくとも１つのサーバコンピュータまたは同様のデバイスを備えてもよい。ローカルインターフェース５０９は、理解されるように、例えば、添付のアドレス／制御バスまたは他のバス構造を有するデータバスを備えてもよい。グラフィックスデバイス５０７は、１つ以上のグラフィックスプロセッサ５１２を含む、高性能のグラフィックスハードウェアに相当してもよい。グラフィックスデバイス５０７は、コンピューティングデバイス１０３において実行されるアプリケーション１１９に相当するグラフィックスをレンダリングするように構成される。
【００６５】
プロセッサ５０３によって実行可能なデータおよびいくつかのコンポーネントの両方がメモリ５０６に格納される。特に、エミュレーションサーバアプリケーション１１５、電子商取引アプリケーション１１７、ラッパ１１８、アプリケーション１１９、メディアエンコーダ１２０およびおそらくは他のアプリケーションがメモリ５０６に格納され、プロセッサ５０３によって実行可能である。さらに、データストア１１２および他のデータを、メモリ５０６に格納してもよい。加えて、オペレーティングシステムをメモリ５０６に格納して、プロセッサ５０３によって実行可能であってもよい。
【００６６】
理解されるように、メモリ５０６に格納され、プロセッサ５０３によって実行可能な他のアプリケーションが存在してもよいことが理解される。本明細書に記載される任意のコンポーネントがソフトウェアの形態で実装される場合、例えば、Ｃ、Ｃ＋＋、Ｃ＃、Ｏｂｊｅｃｔｉｖｅ  Ｃ、Ｊａｖａ（登録商標）、ＪａｖａＳｃｒｉｐｔ（登録商標）、Ｐｅｒｌ、ＰＨＰ、Ｖｉｓｕａｌ  Ｂａｓｉｃ（登録商標）、Ｐｙｔｈｏｎ（登録商標）、Ｒｕｂｙ、Ｄｅｌｐｈｉ（登録商標）、Ｆｌａｓｈ（登録商標）、または他のプログラミング言語等の多数のプログラミング言語のうちの任意の１つを採用してもよい。
【００６７】
メモリ５０６に多数のソフトウェアコンポーネントが格納され、プロセッサ５０３によって実行可能である。この点において、「実行可能な」という語は、プロセッサ５０３によって最終的に実行できる形態であるプログラムファイルを意味する。実行可能なプログラムの例は、例えば、メモリ５０６のランダムアクセス部分にロードすることができ、かつプロセッサ５０３によって実行できるフォーマットのマシンコード、メモリ５０６のランダムアクセス部にロードすることができ、かつプロセッサ５０３によって実行できるオブジェクトコード等の適正なフォーマットで表現されてもよいソースコード、またはプロセッサ５０３等によって実行されるメモリ５０６のランダムアクセス部において命令を生成するために別の実行可能なプログラムによって解釈されてもよいソースコードに変換することができる、コンパイルされたプログラムであってもよい。実行可能なプログラムは、例えば、ランダムアクセスメモリ（ＲＡＭ）、読み込み専用メモリ（ＲＯＭ）、ハードドライブ、ソリッドステートドライブ、ＵＳＢフラッシュドライブ、メモリカード、コンパクトディスク（ＣＤ）またはデジタル多用途ディスク（ＤＶＤ）等の光ディスク、フロッピーディスク、磁気テープ、または他のメモリコンポーネントを含む、メモリ５０６の任意の部分またはコンポーネントに格納されてもよい。
【００６８】
メモリ５０６は、揮発および不揮発メモリ、ならびにデータ格納コンポーネントの両方を含むものとして、本明細書で定義されている。揮発コンポーネントは、電力喪失の際にデータ値を保持しないコンポーネントである。不揮発コンポーネントは、電力喪失の際にデータを保持するコンポーネントである。このため、メモリ５０６は、例えば、ランダムアクセスメモリ（ＲＡＭ）、読み込み専用メモリ（ＲＯＭ）、ハードディスクドライブ、ソリッドステートドライブ、ＵＳＢフラッシュドライブ、メモリカードリーダによってアクセスされるメモリカード、関連付けられたフロッピーディスクドライブによってアクセスされるフロッピーディスク、光ディスクドライブによってアクセスされる光ディスク、適切なテープドライブによってアクセスされる磁気テープ、および／または他のメモリコンポーネント、あるいはこれらのメモリコンポーネントのうちの任意の２つ以上の組み合わせを含んでもよい。加えて、ＲＡＭは、例えば、静的ランダムアクセスメモリ（ＳＲＡＭ）、動的ランダムアクセスメモリ（ＤＲＡＭ）、または磁気ランダムアクセスメモリ（ＭＲＡＭ）、および他のかかるデバイスを含んでもよい。ＲＯＭは、例えば、プログラム可能な読み込み専用メモリ（ＰＲＯＭ）、消去可能なプログラム可能な読み込み専用メモリ（ＥＰＲＯＭ）、電気的に消去可能なプログラム可能な読み込み専用メモリ（ＥＥＰＲＯＭ）、または他の同様のメモリデバイスを含んでもよい。
【００６９】
さらに、プロセッサ５０３は複数のプロセッサ５０３を表してもよく、メモリ５０６は、それぞれ並列処理回路で動作する複数のメモリ５０６を表してもよい。かかる場合において、ローカルインターフェース５０９は、複数のプロセッサ５０３の任意の２つの間、任意のプロセッサ５０３とメモリ５０６のうちのいずれかとの間、またはメモリ５０６の任意の２つの間等の通信を促進する適切なネットワーク１０９（図１）にしてもよい。ローカルインターフェース５０９は、例えば、負荷平衡化の実行を含む、この通信を統合するように設計されたさらなるシステムを備えてもよい。プロセッサ５０３は、電気的またはいくつかの他の利用可能な構成であってもよい。
【００７０】
本明細書に記載されるエミュレーションサーバアプリケーション１１５、電子商取引アプリケーション１１７、ラッパ１１８、アプリケーション１１９、メディアエンコーダ１２０、クライアントアプリケーション１４５（図１）、および他の種々のシステムは、上記に記載されるように、汎用ハードウェアによって実行されるソフトウェアまたはコードで実施されてもよいが、代替として、同じものを、さらに、専用のハードウェアまたはソフトウェア／汎用ハードウェアおよび専用ハードウェアの組み合わせで実施してもよい。専用のハードウェアで実施される場合、それぞれは、多数の技術のいずれか１つまたは組み合わせを採用する回路またはステートマシンとして実装可能である。これらの技術は、１つ以上のデータ信号の適用時に種々の論理機能を実装するための論理ゲートを有する個別論理回路、適切な論理ゲートを有する特定用途向け集積回路、または他のコンポーネント等を含んでもよいが、これらに制限されない。かかる技術は、概して当業者には公知であるため、本明細書において詳細に記載しない。
【００７１】
図３および図４のフローチャートは、電子商取引アプリケーション１１７およびエミュレーションサーバアプリケーション１１５の一部の実装の機能および動作を示す。ソフトウェアで実施される場合、各ブロックは、指定された論理機能（複数可）を実装するためにプログラム命令を備えるコードのモジュール、セグメント、または部分を表してもよい。プログラム命令は、コンピュータシステムまたは他のシステム内のプロセッサ５０３等の適した実行システムによって認識可能な多数の命令を備えるプログラムミング言語またはマシンコードで記述される人間が読むことのできるステートメントを備えるソースコードの形態で実施されてもよい。マシンコードは、ソースコード等から変換されてもよい。ハードウェアにおいて実施される場合、各ブロックは、指定された論理機能（複数可）を実装するために、回路または多数の相互接続された回路を表してもよい。
【００７２】
図３および図４のフローチャートは指定の実行の順序を示すが、実行の順序は、図示されているものとは異なってもよいことが理解される。例えば、２つ以上のブロックの実行の順序は、示される順序に対してその通りでなくてもよい。さらに、図３および図４に連続して示される２つ以上のブロックを、同時にまたは部分的に同時に実行してもよい。さらに、いくつかの実施形態において、図３および図４に示されるブロックのうちの１つ以上をスキップまたは省略してもよい。加えて、実用性の向上、課金、パフォーマンス計測、またはトラブルシューティング支援の提供等のために、任意の数のカウンタ、状態変数、警告セマフォ（ｗａｒｎｉｎｇ  ｓｅｍａｐｈｏｒｅｓ）、またはメッセージを、本明細書に記載される論理の流れに追加してもよい。すべてのかかる変形は、本開示の範囲内にあると理解される。
【００７３】
さらに、ソフトウェアまたはコードを備える、エミュレーションサーバアプリケーション１１５、電子商取引アプリケーション１１７、ラッパ１１８、アプリケーション１１９、メディアエンコーダ１２０、およびクライアントアプリケーション１４５を含む、本明細書に記載される任意の論理またはアプリケーションは、例えば、コンピュータシステムまたは他のシステム内のプロセッサ５０３等の命令実行システムによって、またはこれに関連して、任意の非一時的コンピュータ可読媒体で実施することができる。この意味で、論理は、例えば、コンピュータ可読媒体からフェッチでき、命令実行システムによって実行できる命令および宣言を含むステートメントを備えてもよい。本開示の文脈において、「コンピュータ可読媒体」は、命令実行システムによって、またはこれと共に使用するために、本明細書に記載されている論理またはアプリケーションを含有、格納または維持することができる任意の媒体にすることができる。コンピュータ可読媒体は、例えば、磁気、光、または半導体媒体等の多くの物理的媒体のうちの任意の１つを含むことができる。適したコンピュータ可読媒体のより具体的な例は、磁気テープ、磁気フロッピーディスケット、磁気ハードドライブ、メモリカード、ソリッドステートドライブ、ＵＳＢフラッシュドライブ、または光ディスクを含むが、これらに制限されない。さらに、コンピュータ可読媒体は、例えば、静的ランダムアクセスメモリ（ＳＲＡＭ）および動的ランダムアクセスメモリ（ＤＲＡＭ）、または磁気ランダムアクセスメモリ（ＭＲＡＭ）を含む、ランダムアクセスメモリ（ＲＡＭ）であってもよい。加えて、コンピュータ可読媒体は、読み込み専用メモリ（ＲＯＭ）、プログラム可能な読み込み専用メモリ（ＰＲＯＭ）、消去可能なプログラム可能な読み込み専用メモリ（ＥＰＲＯＭ）、電気的に消去可能なプログラム可能な読み込み専用メモリ（ＥＥＰＲＯＭ）、または他の種類のメモリデバイスであってもよい。
【００７４】
「関連出願の相互参照」
本出願は、２０１１年３月２１日に出願された米国特許仮出願第６１／４５４，９８６号、表題「ＲＥＭＯＴＥＬＹ  ＥＭＵＬＡＴＩＮＧ  ＣＯＭＰＵＴＩＮＧ  ＤＥＶＩＣＥＳ」、および２０１１年５月２４日に出願された米国特許出願第１３／１１４，５３４号、表題「ＲＥＭＯＴＥＬＹ  ＥＭＵＬＡＴＩＮＧ  ＣＯＭＰＵＴＩＮＧ  ＤＥＶＩＣＥＳ」の優先権および利益を主張し、これらの両方は、参照することによりその全体が本明細書に組み込まれる。
【００７５】
付記
【００７６】
付記１
コンピューティングデバイスにおいて実行可能なプログラムを実施する非一時的なコンピュータ可読媒体であって、前記プログラムが、
エミュレートされたコンピューティングデバイスの複数のモデルのうちの１つを決定するコードと、
クライアントから前記エミュレートされたコンピューティングデバイスにおいて実行可能なアプリケーションの選択を取得するコードと、
ホスト環境において前記アプリケーションを実行するコードと、
前記アプリケーションにより生成されたビデオ信号およびオーディオ信号をメディアストリームに符号化するコードと、
前記エミュレートされたコンピューティングデバイスの前記モデルのうちの前記１つのグラフィック表示を含む、ユーザインターフェースを生成するコードであって、前記メディアストリームからの前記ビデオ信号が、前記エミュレートされたコンピューティングデバイスの前記モデルのうちの前記１つの画面のグラフィック表示上でレンダリングされるように構成される、コードと、
前記ユーザインターフェースおよび前記メディアストリームを前記クライアントに送信するコードと、
入力コマンドを前記クライアントから取得するコードであって、前記入力コマンドが、前記エミュレートされたコンピューティングデバイスの前記モデルのうちの前記１つの前記グラフィック表示とのユーザ相互作用を通して生成される、コードと、
前記入力コマンドを、前記ホスト環境において実行する前記アプリケーションに提供するコードと、を備える、非一時的なコンピュータ可読媒体。
【００７７】
付記２
前記エミュレートされたコンピューティングデバイスが、モバイルコンピューティングデバイスである、付記１に記載のシステム。
【００７８】
付記３  
少なくとも１つのコンピューティングデバイスと、
前記少なくとも１つのコンピューティングデバイスにおいて実行可能なサーバアプリケーションであって、
コンピューティングデバイスのモデルおよび前記コンピューティングデバイスにおいて実行可能なアプリケーションを識別する論理と、
ホスト環境において前記アプリケーションを実行し、前記アプリケーションのビデオ信号をメディアストリームに符号化する論理と
クライアントにおいてレンダリングするために、ユーザインターフェースを符号化する論理であって、前記ユーザインターフェースが、前記コンピューティングデバイスの前記モデルのグラフィック表示を含み、前記コンピューティングデバイスの前記モデルの前記グラフィック表示の画面が、前記メディアストリームからの前記ビデオ信号の少なくとも一部をレンダリングするように構成される、論理と、を備える、サーバアプリケーションと、を備える、システム。
【００７９】
付記４
前記コンピューティングデバイスの前記モデルの前記グラフィック表示が、前記コンピューティングデバイスの前記モデルと関連付けられた少なくとも１つの入力デバイスのグラフィック表示を含む、付記３に記載のシステム。
【００８０】
付記５
前記コンピューティングデバイスが、モバイルコンピューティングデバイスである、付記３に記載のシステム。
【００８１】
付記６
前記サーバアプリケーションが、
前記ユーザインターフェースおよび前記メディアストリームを前記クライアントに送信する論理と、
前記クライアントから入力コマンドを取得する論理であって、前記ユーザインターフェースが、入力デバイスのグラフィック表示とのユーザ相互作用に応答して、前記入力コマンドを生成するようにさらに構成される、論理と、
仮想化された入力デバイスにより前記アプリケーションに前記入力コマンドを提供する論理と、をさらに備える、付記３に記載のシステム。
【００８２】
付記７
前記コンピューティングデバイスの前記モデルが、前記コンピューティングデバイスの汎用モデルである、付記３に記載のシステム。
【００８３】
付記８
前記ユーザインターフェースが、前記アプリケーションの購入を開始するためのコンポーネントをさらに備える、付記３に記載のシステム。
【００８４】
付記９
前記ユーザインターフェースが、前記アプリケーションを項目リストに追加するためのコンポーネントをさらに備える、付記３に記載のシステム。
【００８５】
付記１０
前記ユーザインターフェースが、前記コンピューティングデバイスの前記モデルの前記グラフィック表示を回転させるためのコンポーネントをさらに備える、付記３に記載のシステム。
【００８６】
付記１１
前記ビデオ信号が、前記コンピューティングデバイスの前記モデルの前記グラフィック表示を含む、付記３に記載のシステム。
【００８７】
付記１２
前記サーバアプリケーションが、既定期間の満了時に、前記アプリケーションの実行を停止する論理をさらに備える、付記３に記載のシステム。
【００８８】
付記１３
前記入力コマンドの少なくとも一部が、クライアントのマウスデバイスにより生成される、付記３に記載のシステム。
【００８９】
付記１４
前記アプリケーションが、前記クライアントにおいてネイティブには実行可能でない、付記３に記載のシステム。
【００９０】
付記１５
前記サーバアプリケーションが、前記アプリケーションにより生成されたオーディオ信号を前記メディアストリームに符号化する論理をさらに備え、前記ユーザインターフェースが、前記クライアントにおいて前記オーディオ信号を再生するように構成される、付記３に記載のシステム。
【００９１】
付記１６
前記ホスト環境が、少なくとも１つの入力デバイスを仮想化するように構成される仮想化された環境を含み、前記クライアントから得られた入力データが、前記少なくとも１つの入力デバイスにより前記アプリケーションに提供される、付記３に記載のシステム。
【００９２】
付記１７
コンピューティングデバイスにおいて、サーバからユーザインターフェースを取得するステップであって、前記ユーザインターフェースが、モバイルコンピューティングデバイスのグラフィック表示を含む、ステップと、
前記コンピューティングデバイスにおいて、メディアストリームを前記サーバから取得するステップであって、前記メディアストリームが、前記モバイルコンピューティングデバイスをエミュレートする仮想化された環境において実行されるアプリケーションからキャプチャされる、ビデオ信号を含む、ステップと、
前記コンピューティングデバイスにおいて、前記ユーザインターフェースをレンダリングするステップであって、前記ビデオ信号が、前記モバイルコンピューティングデバイスの前記グラフィック表示の画面としてレンダリングされる、ステップと、を含む、方法。
【００９３】
付記１８
前記コンピューティングデバイスにおいて、前記モバイルコンピューティングデバイスの前記グラフィック表示に対するユーザ入力を取得するステップと、
前記コンピューティングデバイスにおいて、前記ユーザ入力に応答して少なくとも１つの入力コマンドを生成するステップと、
前記コンピューティングデバイスにおいて、前記少なくとも１つの入力コマンドを前記サーバへ送信するステップと、
をさらに含む、付記１７に記載の方法。
【００９４】
付記１９
前記ユーザ入力が、前記モバイルコンピューティングデバイスの入力デバイスのグラフィック表示に対して提供される、付記１８に記載の方法。
【００９５】
付記２０
前記コンピューティングデバイスにおいて、前記アプリケーションに関するネットワークページを取得するステップと、
前記コンピューティングデバイスにおいて、前記アプリケーションに対するエミュレーションセッションを開始するリクエストを前記サーバへ送信するステップと、
をさらに含む、付記１７に記載の方法。
【００９６】
付記２１
前記コンピューティングデバイスにおいて、前記アプリケーションの購入を開始するリクエストを前記サーバへ送信するステップをさらに含む、付記１７に記載の方法。
【００９７】
付記２２
少なくとも１つのコンピューティングデバイスと、
前記少なくとも１つのコンピューティングデバイスにおいて実行可能なサーバアプリケーションであって、
コンピューティングデバイスのモデルおよび前記コンピューティングデバイスにおいて実行可能なアプリケーションを識別する論理と、
ホスト環境において前記アプリケーションを実行し、前記アプリケーションの出力をメディアストリームに符号化する論理と、
クライアントにおいてレンダリングするために、ユーザインターフェースを符号化する論理であって、前記ユーザインターフェースが、前記コンピューティングデバイスの前記モデルのグラフィック表示を含み、前記グラフィック表示が、前記メディアストリームに応答して更新される、論理と、を備える、サーバアプリケーションと、を備える、システム。
【００９８】
付記２３
前記コンピューティングデバイスの前記モデルの前記グラフィック表示が、ディスプレイデバイスのグラフィック表示を含み、前記メディアストリームが、ディスプレイデバイスの前記グラフィック表示を更新するためのデータを含む、付記２２に記載のシステム。
【００９９】
付記２４
前記コンピューティングデバイスの前記モデルの前記グラフィック表示が、前記コンピューティングデバイスの前記モデルの少なくとも１つの統合入力デバイスのグラフィック表示を含む、付記２２に記載のシステム。
【０１００】
付記２５
前記コンピューティングデバイスの前記モデルの前記グラフィック表示が、前記コンピューティングデバイスの前記モデルの汎用バージョンに相当する、付記２２に記載のシステム。
【０１０１】
本開示の上記の実施形態は、本開示の原則の明確な理解のために述べられる可能な実装の例にすぎないことが強調されるべきである。多くの変形および修正を、本開示の精神および原則から実質的に逸脱せずに、上記の実施形態に行ってもよい。すべてのかかる修正および変形は、本開示の範囲内に含まれ、以下の特許請求の範囲によって保護されることが意図されている。
【図１】
0005827346.tif 000002
【図２Ａ】
0005827346.tif 000003
【図２Ｂ】
0005827346.tif 000004
【図３】
0005827346.tif 000005
【図４】
0005827346.tif 000006
【図５】
0005827346.tif 000007