IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ スキルズ インコーポレイテッドの特許一覧

特表2025-501929クラウドベースのクライアントアプリケーションと遠隔で相互作用するためのシステムおよび方法
<>
  • 特表-クラウドベースのクライアントアプリケーションと遠隔で相互作用するためのシステムおよび方法 図1
  • 特表-クラウドベースのクライアントアプリケーションと遠隔で相互作用するためのシステムおよび方法 図2
  • 特表-クラウドベースのクライアントアプリケーションと遠隔で相互作用するためのシステムおよび方法 図3
  • 特表-クラウドベースのクライアントアプリケーションと遠隔で相互作用するためのシステムおよび方法 図4
  • 特表-クラウドベースのクライアントアプリケーションと遠隔で相互作用するためのシステムおよび方法 図5
  • 特表-クラウドベースのクライアントアプリケーションと遠隔で相互作用するためのシステムおよび方法 図6
  • 特表-クラウドベースのクライアントアプリケーションと遠隔で相互作用するためのシステムおよび方法 図7
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2025-01-24
(54)【発明の名称】クラウドベースのクライアントアプリケーションと遠隔で相互作用するためのシステムおよび方法
(51)【国際特許分類】
   H04L 65/1073 20220101AFI20250117BHJP
   H04L 67/141 20220101ALI20250117BHJP
   H04N 21/239 20110101ALI20250117BHJP
【FI】
H04L65/1073
H04L67/141
H04N21/239
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2024539287
(86)(22)【出願日】2022-12-28
(85)【翻訳文提出日】2024-08-26
(86)【国際出願番号】 US2022054183
(87)【国際公開番号】W WO2023129613
(87)【国際公開日】2023-07-06
(31)【優先権主張番号】63/266,189
(32)【優先日】2021-12-30
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】517089798
【氏名又は名称】スキルズ プラットフォーム インコーポレイテッド
(74)【代理人】
【識別番号】100078282
【弁理士】
【氏名又は名称】山本 秀策
(74)【代理人】
【識別番号】100113413
【弁理士】
【氏名又は名称】森下 夏樹
(74)【代理人】
【識別番号】100181674
【弁理士】
【氏名又は名称】飯田 貴敏
(74)【代理人】
【識別番号】100181641
【弁理士】
【氏名又は名称】石川 大輔
(74)【代理人】
【識別番号】230113332
【弁護士】
【氏名又は名称】山本 健策
(72)【発明者】
【氏名】グローリー, メイダード
(72)【発明者】
【氏名】ワイスバーグ, アハロン
(72)【発明者】
【氏名】フィード, アンドリュー
【テーマコード(参考)】
5C164
【Fターム(参考)】
5C164SB29P
5C164TB35S
(57)【要約】
種々のデバイスがクラウドベースのクライアントアプリケーションと遠隔で相互作用することを有効にするためのシステムおよび方法が、提供される。方法は、第1の要求をユーザの第1のクライアントデバイスから受信し、クラウドベースのクライアントアプリケーションとの双方向セッションを開始することと、アプリケーションエンジンを予約することと、相互作用データを第1のクライアントデバイスから受信することと、予約されるアプリケーションエンジン内で実行されるクラウドベースのクライアントアプリケーションを修正することと、修正されるクラウドベースのクライアントアプリケーションとの双方向セッションを終了することと、予約されるアプリケーションエンジンを割り当て解除することとを含む。
【特許請求の範囲】
【請求項1】
方法であって、
少なくとも1つのデータプロセッサによって、第1の要求をユーザの第1のクライアントデバイスから受信し、クラウドベースのクライアントアプリケーションとの双方向セッションを開始することであって、前記クラウドベースのクライアントアプリケーションは、第2のクライアントデバイス上で実行されるように構成され、前記第2のクライアントデバイスは、前記第1のクライアントデバイスと異なるコンピューティングプラットフォームを備える、ことと、
前記少なくとも1つのデータプロセッサによって、前記第1の要求に応答して、前記第1のクライアントデバイスから遠隔で前記クラウドベースのクライアントアプリケーションを実行するために、アプリケーションエンジンを複数の事前にインスタンス化されたアプリケーションエンジンプールの事前にインスタンス化されたアプリケーションエンジンプールから予約することと、
前記少なくとも1つのデータプロセッサによって、前記ユーザが、前記クラウドベースのクライアントアプリケーションと関連付けられる第1のメディアデータに関与すると、相互作用データを前記第1のクライアントデバイスから受信することと、
前記少なくとも1つのデータプロセッサによって、前記第1のクライアントデバイスから受信される前記相互作用データに基づいて、予約される前記アプリケーションエンジン内で実行される前記クラウドベースのクライアントアプリケーションを修正することと、
前記少なくとも1つのデータプロセッサによって、第2の要求を前記第1のクライアントデバイスから受信し、修正される前記クラウドベースのクライアントアプリケーションとの双方向セッションを終了することと、
前記少なくとも1つのデータプロセッサによって、前記第2の要求に応答して、予約される前記アプリケーションエンジンを割り当て解除することであって、予約される前記アプリケーションエンジンは、前記第1のクライアントデバイスからリンク解除される、ことと
を含む、方法。
【請求項2】
前記少なくとも1つのデータプロセッサによって、前記第1のメディアデータを前記クラウドベースのクライアントアプリケーションから前記第1のクライアントデバイスにストリーミングすることをさらに含む、請求項1に記載の方法。
【請求項3】
前記少なくとも1つのデータプロセッサによって、前記第1のクライアントデバイス上で実行されるブラウザアプリケーションに、第2のメディアデータを、修正される前記クラウドベースのクライアントアプリケーションからストリーミングすることをさらに含む、請求項1に記載の方法。
【請求項4】
予約される前記アプリケーションエンジンは、前記双方向セッションの持続時間にわたって、前記第1のクライアントデバイスにリンクされ、事前にインスタンス化されたアプリケーションエンジンは、前記事前にインスタンス化されたアプリケーションエンジンプールに追加され、予約される前記アプリケーションエンジンを置き換え、前記複数の事前にインスタンス化されたアプリケーションエンジンプールの各事前にインスタンス化されたアプリケーションエンジンプールは、異なるクラウドベースのクライアントアプリケーションと関連付けられる、請求項1に記載の方法。
【請求項5】
前記第1の要求は、前記第1のクライアントデバイスと関連付けられる少なくとも1つの特性を含む、請求項1に記載の方法。
【請求項6】
前記少なくとも1つの特性は、前記第1のクライアントデバイスと関連付けられる地理的エリアを特徴付け、前記クラウドベースのクライアントアプリケーションの修正はさらに、
前記第1のクライアントデバイス上に、前記第1のクライアントデバイスと関連付けられる地理的エリアに特有の1つまたはそれを上回る視覚的特徴を提示すること
を含む、請求項5に記載の方法。
【請求項7】
前記第1のクライアントデバイスと関連付けられる地理的エリアに特有の1つまたはそれを上回る視覚的特徴は、インターフェース変化または広告のうちの1つまたはそれを上回るものを備える、請求項6に記載の方法。
【請求項8】
前記双方向セッションを終了するための前記第1のクライアントデバイスからの前記第2の要求に先立って、前記ユーザからの入力を受信することと、
前記入力に応答して、特定の位置において、前記クラウドベースのクライアントアプリケーションとの双方向セッションを一時停止することであって、前記一時停止することは、前記双方向セッションを終了することと異なる、ことと
をさらに含む、請求項1に記載の方法。
【請求項9】
第3のクライアントデバイス上で前記双方向セッションを再開するための付加的入力を受信することと、
前記付加的入力の受信に応答して、前記第3のクライアントデバイス上において、前記特定の位置で前記双方向セッションを再開することと
をさらに含む、請求項8に記載の方法。
【請求項10】
システムであって、
少なくとも1つのデータプロセッサと、
メモリであって、前記メモリは、命令を記憶しており、前記命令は、前記少なくとも1つのデータプロセッサによって実行されると、前記少なくとも1つのデータプロセッサに、
第1の要求をユーザの第1のクライアントデバイスから受信し、クラウドベースのクライアントアプリケーションとの双方向セッションを開始することであって、前記クラウドベースのクライアントアプリケーションは、第2のクライアントデバイス上で実行されるように構成され、前記第2のクライアントデバイスは、前記第1のクライアントデバイスと異なるコンピューティングプラットフォームを備える、ことと、
前記第1の要求に応答して、前記第1のクライアントデバイスから遠隔で前記クラウドベースのクライアントアプリケーションを実行するために、アプリケーションエンジンを複数の事前にインスタンス化されたアプリケーションエンジンプールの事前にインスタンス化されたアプリケーションエンジンプールから予約することと、
前記ユーザが、前記クラウドベースのクライアントアプリケーションと関連付けられる第1のメディアデータに関与すると、相互作用データを前記第1のクライアントデバイスから受信することと、
前記第1のクライアントデバイスから受信される前記相互作用データに基づいて、予約される前記アプリケーションエンジン内で実行される前記クラウドベースのクライアントアプリケーションを修正することと、
第2の要求を前記第1のクライアントデバイスから受信し、修正される前記クラウドベースのクライアントアプリケーションとの双方向セッションを終了することと、
前記第2の要求に応答して、予約される前記アプリケーションエンジンを割り当て解除することであって、予約される前記アプリケーションエンジンは、前記第1のクライアントデバイスからリンク解除される、ことと
を含む動作を実施させる、メモリと
を備える、システム。
【請求項11】
前記動作はさらに、
前記第1のメディアデータを前記クラウドベースのクライアントアプリケーションから前記第1のクライアントデバイスにストリーミングすること
を含む、請求項10に記載のシステム。
【請求項12】
前記動作はさらに、
前記第1のクライアントデバイス上で実行されるブラウザアプリケーションに、第2のメディアデータを、修正される前記クラウドベースのクライアントアプリケーションからストリーミングすること
を含む、請求項10に記載のシステム。
【請求項13】
予約される前記アプリケーションエンジンは、前記双方向セッションの持続時間にわたって、前記第1のクライアントデバイスにリンクされ、事前にインスタンス化されたアプリケーションエンジンは、前記事前にインスタンス化されたアプリケーションエンジンプールに追加され、予約される前記アプリケーションエンジンを置き換え、前記複数の事前にインスタンス化されたアプリケーションエンジンプールの各事前にインスタンス化されたアプリケーションエンジンプールは、異なるクラウドベースのクライアントアプリケーションと関連付けられる、請求項10に記載のシステム。
【請求項14】
前記第1の要求は、前記第1のクライアントデバイスと関連付けられる少なくとも1つの特性を含む、請求項10に記載のシステム。
【請求項15】
前記少なくとも1つの特性は、前記第1のクライアントデバイスと関連付けられる地理的エリアを特徴付け、前記クラウドベースのクライアントアプリケーションを修正する動作はさらに、
前記第1のクライアントデバイス上に、前記第1のクライアントデバイスと関連付けられる地理的エリアに特有の1つまたはそれを上回る視覚的特徴を提示すること
を含む、請求項14に記載のシステム。
【請求項16】
前記第1のクライアントデバイスと関連付けられる地理的エリアに特有の1つまたはそれを上回る視覚的特徴は、インターフェース変化または広告のうちの1つまたはそれを上回るものを備える、請求項15に記載のシステム。
【請求項17】
前記動作はさらに、
前記双方向セッションを終了するための前記第1のクライアントデバイスからの前記第2の要求に先立って、前記ユーザからの入力を受信することと、
前記入力に応答して、特定の位置において、前記クラウドベースのクライアントアプリケーションとの双方向セッションを一時停止することであって、前記一時停止することは、前記双方向セッションを終了することと異なる、ことと
を含む、請求項10に記載のシステム。
【請求項18】
前記動作はさらに、
第3のクライアントデバイス上で前記双方向セッションを再開するための付加的入力を受信することと、
前記付加的入力の受信に応答して、前記第3のクライアントデバイス上において、前記特定の位置で前記双方向セッションを再開することと
を含む、請求項17に記載のシステム。
【請求項19】
非一過性コンピュータプログラム製品であって、前記非一過性コンピュータプログラム製品は、実行可能命令を記憶しており、前記実行可能命令は、少なくとも1つのコンピューティングシステムの一部を形成する少なくとも1つのデータプロセッサによって実行されると、
第1の要求をユーザの第1のクライアントデバイスから受信し、クラウドベースのクライアントアプリケーションとの双方向セッションを開始することであって、前記クラウドベースのクライアントアプリケーションは、第2のクライアントデバイス上で実行されるように構成され、前記第2のクライアントデバイスは、前記第1のクライアントデバイスと異なるコンピューティングプラットフォームを備える、ことと、
前記第1の要求に応答して、前記第1のクライアントデバイスから遠隔で前記クラウドベースのクライアントアプリケーションを実行するために、アプリケーションエンジンを複数の事前にインスタンス化されたアプリケーションエンジンプールの事前にインスタンス化されたアプリケーションエンジンプールから予約することと、
前記ユーザが、前記クラウドベースのクライアントアプリケーションと関連付けられる第1のメディアデータに関与すると、相互作用データを前記第1のクライアントデバイスから受信することと、
前記第1のクライアントデバイスから受信される前記相互作用データに基づいて、予約される前記アプリケーションエンジン内で実行される前記クラウドベースのクライアントアプリケーションを修正することと、
第2の要求を前記第1のクライアントデバイスから受信し、修正される前記クラウドベースのクライアントアプリケーションとの双方向セッションを終了することと、
前記第2の要求に応答して、予約される前記アプリケーションエンジンを割り当て解除することであって、予約される前記アプリケーションエンジンは、前記第1のクライアントデバイスからリンク解除される、ことと
を含む動作を実施する、非一過性コンピュータプログラム製品。
【請求項20】
前記動作はさらに、
前記第1のメディアデータを前記クラウドベースのクライアントアプリケーションから前記第1のクライアントデバイスにストリーミングすること
を含む、請求項19に記載の非一過性コンピュータプログラム製品。
【発明の詳細な説明】
【背景技術】
【0001】
(関連出願の相互参照)
本願は、その全内容が、参照することによって本明細書に組み込まれる、2021年12月30日に出願された、米国仮出願第63/266,189号の利益を主張する。
【0002】
モバイルデバイス上で起動されるように設計される、クライアントアプリケーションの開発および配布は、モバイルデバイスの急増をサポートするために、著しく増加している。クライアントアプリケーションは、ユーザに、多種多様な機能および特徴および多数の情報へのアクセスを提供し、仮想的に任意の必要性または関心を充足させることができる。クライアントアプリケーションは、柔軟性および可搬性をユーザにもたらすが、クライアントアプリケーションは、モバイルデバイス上で起動するオペレーティングシステムおよびモバイルデバイス自体の両方によって限定され得る。例えば、そのようなクライアントアプリケーションは、そのためにそれらが設計される、モバイルデバイスオペレーティングシステム内でのみ起動されることができる。その結果、1つの特定のオペレーティングシステムを起動させるモバイルデバイスを用いる、ユーザは、別のモバイルデバイスオペレーティングシステム内および/または異なるモバイルデバイスハードウェア上で起動されるように設計される、クライアントアプリケーションへのアクセスを有していない、またはそれを使用することが可能であり得る。それらのモバイルデバイスユーザはまた、全体的に異なる(非モバイル)ハードウェアプラットフォームおよびオペレーティングシステム上で起動されるように設計される、クライアントアプリケーションにアクセスする、またはそれを使用することができない。加えて、ネイティブにインストールされるクライアントアプリケーションのためのハードウェアおよび/またはソフトウェア要件をサポートしない、モバイルデバイスを用いる、ユーザは、最新モバイルデバイスへのコストがかかるアップグレードを伴わずに、それらのクライアントアプリケーションにアクセスすることが不可能であり得る。クライアントアプリケーションはまた、本質的に、モバイルデバイスに結び付けられており、他の非モバイルデバイスを介して、起動またはアクセスされることができない。
【発明の概要】
【課題を解決するための手段】
【0003】
本発明は、クラウドベースのクライアントアプリケーションと遠隔で相互作用するためのシステムおよび方法を対象とする。本発明によると、クライアントアプリケーションは、サーバまたは他のクラウドベースのプラットフォーム上で遠隔でエミュレートされることができる。クラウドベースのクライアントアプリケーションからのビデオおよびオーディオは、リアルタイムで、ユーザのクライアントデバイス上で起動する、ブラウザアプリケーションにストリーミングされることができる。ユーザは、クラウドベースのクライアントアプリケーションが、ネイティブに、クライアントデバイス上で起動しているかのように、ローカルブラウザアプリケーションを通して、クラウドベースのクライアントアプリケーションと相互作用することができる。ユーザからの入力は、アプリケーションエンジン内で実行される、クラウドベースのクライアントアプリケーションに戻るように伝送され、ユーザが、リアルタイムで、クラウドベースのクライアントアプリケーションを制御し、それと相互作用することを可能にすることができる。本発明は、任意のタイプのオペレーティングシステムを起動する、任意のタイプのクライアントデバイス(例えば、スマートフォン、タブレット、ラップトップ、デスクトップコンピュータ、ゲーム用コンソール、および同等物)上で、クライアントデバイスの下層ハードウェアおよびデバイス特性から独立して、任意のタイプのクラウドベースのクライアントアプリケーションとの相互作用をサポートすることができる。本発明の実施形態はまた、クラウドベースのクライアントアプリケーションの第三者アプリケーションおよびウェブサイトへの統合をサポートすることができる。そのような統合は、第三者アプリケーションおよびウェブサイトとの相互作用および関与を補完および向上させる、統合されたクラウドベースのクライアントアプリケーションを介して、それらの第三者アプリケーションおよびウェブサイトが、異なる特徴および機能性をより容易にもたらすことを可能にすることができる。
【0004】
種々のデバイスがクラウドベースのクライアントアプリケーションと遠隔で相互作用することを有効にするためのシステムおよび方法が、提供される。関連装置、技法、および物品もまた、説明される。
【0005】
ある側面では、第1の要求が、ユーザの第1のクライアントデバイスから受信され、クラウドベースのクライアントアプリケーションとの双方向セッションを開始することができる。クラウドベースのクライアントアプリケーションは、第2のクライアントデバイス上で実行されるように構成されることができ、第2のクライアントデバイスは、第1のクライアントデバイスと異なる、コンピューティングプラットフォームを備えることができる。第1の要求に応答して、複数の事前にインスタンス化されたアプリケーションエンジンプールの事前にインスタンス化されたアプリケーションエンジンプールからのアプリケーションエンジンが、第1のクライアントデバイスから遠隔でクラウドベースのクライアントアプリケーションを実行するために、予約されることができる。さらに、相互作用データが、ユーザが、クラウドベースのクライアントアプリケーションと関連付けられる、第1のメディアデータに関与すると、第1のクライアントデバイスから受信されることができる。予約される、アプリケーションエンジン内で実行される、クラウドベースのクライアントアプリケーションは、第1のクライアントデバイスから受信される、相互作用データに基づいて、修正されることができる。第2の要求が、第1のクライアントデバイスから受信され、修正され得る、クラウドベースのクライアントアプリケーションとの双方向セッションを終了することができる。予約され得る、アプリケーションエンジンは、第2の要求に応答して、割り当て解除されることができる。予約され得る、アプリケーションエンジンは、第1のクライアントデバイスからリンク解除されることができる。
【0006】
さらに、第1のメディアデータが、クラウドベースのクライアントアプリケーションから第1のクライアントデバイスにストリーミングされることができる。加えて、修正され得る、クラウドベースのクライアントアプリケーションからの第2のメディアデータが、第1のクライアントデバイス上で実行される、ブラウザアプリケーションに、ストリーミングされることができる。さらに、予約され得る、アプリケーションエンジンは、双方向セッションの持続時間にわたって、第1のクライアントデバイスにリンクされることができ、事前にインスタンス化されたアプリケーションエンジンは、事前にインスタンス化されたアプリケーションエンジンプールに追加され、予約され得る、アプリケーションエンジンを置き換えることができる。複数の事前にインスタンス化されたアプリケーションエンジンプールの各事前にインスタンス化されたアプリケーションエンジンプールは、異なるクラウドベースのクライアントアプリケーションと関連付けられることができる。第1の要求は、第1のクライアントデバイスと関連付けられる、少なくとも1つの特性を含むことができる。少なくとも1つの特性は、第1のクライアントデバイスと関連付けられる、地理的エリアを特徴付けることができ、クラウドベースのクライアントアプリケーションの修正は、第1のクライアントデバイス上に、第1のクライアントデバイスと関連付けられる、地理的エリアに特有の1つまたはそれを上回る視覚的特徴を提示することを含むことができる。加えて、入力が、双方向セッションを終了するための第1のクライアントデバイスからの第2の要求に先立って、ユーザから受信されることができ、クラウドベースのクライアントアプリケーションとの双方向セッションは、入力に応答して、特定の位置において、一時停止されることができる。一時停止することは、双方向セッションを終了することと異なり得る。付加的入力が、第3のクライアントデバイス上で双方向セッションを再開するために、受信されることができる。双方向セッションは、付加的入力の受信に応答して、第3のクライアントデバイス上において、特定の位置で再開されることができることに留意されたい。
【0007】
別の側面では、システムは、少なくとも1つのデータプロセッサと、少なくとも1つのデータプロセッサによって実行されると、少なくとも1つのデータプロセッサに、動作を実施させ得る、命令を記憶する、メモリとを備えることができる。これらの動作は、第1の要求をユーザの第1のクライアントデバイスから受信し、クラウドベースのクライアントアプリケーションとの双方向セッションを開始することを含むことができ、クラウドベースのクライアントアプリケーションは、第2のクライアントデバイス上で実行されるように構成されることができ、第2のクライアントデバイスは、第1のクライアントデバイスと異なる、コンピューティングプラットフォームを備えることができる。さらに、動作は、第1の要求に応答して、第1のクライアントデバイスから遠隔でクラウドベースのクライアントアプリケーションを実行するために、アプリケーションエンジンを複数の事前にインスタンス化されたアプリケーションエンジンプールの事前にインスタンス化されたアプリケーションエンジンプールから予約することを含むことができる。動作はまた、ユーザが、クラウドベースのクライアントアプリケーションと関連付けられる、第1のメディアデータに関与すると、相互作用データを第1のクライアントデバイスから受信することを含むことができる。加えて、動作は、相互作用データに基づいて、予約され得る、アプリケーションエンジン内で実行される、クラウドベースのクライアントアプリケーションを修正することと、第2の要求を第1のクライアントデバイスから受信し、修正される、クラウドベースのクライアントアプリケーションとの双方向セッションを終了することと、第2の要求に応答して、予約され得る、アプリケーションエンジンを割り当て解除することとを含むことができる。予約され得る、アプリケーションエンジンは、第1のクライアントデバイスからリンク解除されることができる。
【0008】
さらに別の側面では、非一過性コンピュータプログラム製品は、少なくとも1つのコンピューティングシステムの一部を形成する、少なくとも1つのデータプロセッサによって実行されると、種々の動作を実施する、実行可能命令を記憶する。これらの動作は、第1の要求をユーザの第1のクライアントデバイスから受信し、クラウドベースのクライアントアプリケーションとの双方向セッションを開始することを含むことができ、クラウドベースのクライアントアプリケーションは、第2のクライアントデバイス上で実行されるように構成されることができ、第2のクライアントデバイスは、第1のクライアントデバイスと異なる、コンピューティングプラットフォームを備えることができる。さらに、動作は、第1の要求に応答して、第1のクライアントデバイスから遠隔でクラウドベースのクライアントアプリケーションを実行するために、アプリケーションエンジンを複数の事前にインスタンス化されたアプリケーションエンジンプールの事前にインスタンス化されたアプリケーションエンジンプールから予約することを含むことができる。動作はまた、ユーザが、クラウドベースのクライアントアプリケーションと関連付けられる、第1のメディアデータに関与すると、相互作用データを第1のクライアントデバイスから受信することを含むことができる。加えて、動作は、相互作用データに基づいて、予約され得る、アプリケーションエンジン内で実行される、クラウドベースのクライアントアプリケーションを修正することと、第2の要求を第1のクライアントデバイスから受信し、修正される、クラウドベースのクライアントアプリケーションとの双方向セッションを終了することと、第2の要求に応答して、予約され得る、アプリケーションエンジンを割り当て解除することとを含むことができる。予約され得る、アプリケーションエンジンは、第1のクライアントデバイスからリンク解除されることができる。
【0009】
コンピュータシステムもまた、説明され、これは、1つまたはそれを上回るデータプロセッサと、1つまたはそれを上回るデータプロセッサに結合される、メモリとを含むことができる。メモリは、一時的または恒久的に、少なくとも1つのプロセッサに、本明細書に説明される動作のうちの1つまたはそれを上回るものを実施させる、命令を記憶することができる。加えて、方法が、単一コンピューティングシステム内にあるか、または2つまたはそれを上回るコンピューティングシステム間に分散されるかのいずれかである、1つまたはそれを上回るデータプロセッサによって実装されることができる。そのようなコンピューティングシステムは、接続されることができ、ネットワーク(例えば、インターネット、無線広域ネットワーク、ローカルエリアネットワーク、広域ネットワーク、有線ネットワーク、または同等物)を経由したもの、複数のコンピューティングシステムのうちの1つまたはそれを上回るもの間の直接接続を介したもの等の接続を含む、1つまたはそれを上回る接続を介して、データおよび/またはコマンドまたは他の命令または同等物を交換することができる。
【図面の簡単な説明】
【0010】
上記に説明される実施形態は、付随の図面と関連して検討される、以下の詳細な説明からより完全に理解されるであろう。図面は、正確な縮尺で描かれることを意図するものではない。明確性の目的のために、全てのコンポーネントが、全ての図面において標識され得るわけではない。
【0011】
図1図1は、クラウドベースのクライアントアプリケーションと遠隔で相互作用するための例示的クラウドベースのクライアントアプリケーションプラットフォームを図示する、ブロック図である。
【0012】
図2図2は、クラウドベースのクライアントアプリケーションと遠隔で相互作用するための複数のアプリケーションエンジンモジュールプールを伴う、例示的クラウドベースのクライアントアプリケーションプラットフォームを図示する、ブロック図である。
【0013】
図3図3は、クラウドベースのクライアントアプリケーションと遠隔で相互作用するための複数のアプリケーションエンジンモジュールプールと、複数のアプリケーションインスタンスモジュールプールとを伴う、例示的クラウドベースのクライアントアプリケーションプラットフォームを図示する、ブロック図である。
【0014】
図4図4は、クラウドベースのクライアントアプリケーションと遠隔で相互作用するための例示的方法を図示する、フローチャートである。
【0015】
図5図5は、クラウドベースのクライアントアプリケーションと遠隔で相互作用するための例示的方法を図示する、フローチャートである。
【0016】
図6図6は、クラウドベースのクライアントアプリケーションと遠隔で相互作用するための例示的方法を図示する、別のフローチャートである。
【0017】
図7図7は、本実施形態による、本明細書に説明される動作のうちの1つまたはそれを上回るものを実施し得る、例示的コンピューティングデバイスのブロック図である。
【発明を実施するための形態】
【0018】
詳細な説明
ある例示的実施形態が、本明細書に開示されるデバイスおよび方法の構造、機能、製造、および使用の原理の全体的理解を提供するために、ここで説明されるであろう。これらの実施形態の1つまたはそれを上回る実施例は、付随の図面に図示される。当業者は、具体的に、本明細書に説明され、付随の図面に図示される、デバイスおよび方法が、非限定的例示的実施形態であって、本発明の範囲が、請求項によってのみ定義されることを理解するであろう。1つの例示的実施形態に関連して図示または説明される特徴は、他の実施形態の特徴と組み合わせられてもよい。そのような修正および変形例は、本発明の範囲内に含まれるように意図される。さらに、本開示では、実施形態の同様に命名されたコンポーネントは、概して、類似特徴を有し、したがって、特定の実施形態内では、各同様に命名されたコンポーネントの各特徴は、必ずしも、それについて完全に詳述されない。
【0019】
本発明は、クラウドベースのクライアントアプリケーションと遠隔で相互作用するためのシステムおよび方法を対象とする。本発明によると、クライアントアプリケーションは、クラウドベースのクライアントアプリケーションプラットフォーム上にエミュレートされたクライアントデバイス上に遠隔でレンダリングされることができる。クラウドベースのクライアントアプリケーションからのビデオおよびオーディオは、リアルタイムで、ユーザのクライアントデバイス上で起動するブラウザまたは他のアプリケーションにストリーミングされることができる。ユーザは、クライアントアプリケーションが、ネイティブに、クライアントデバイス上で起動しているかのように、ローカルブラウザまたはアプリケーションを通して、クラウドベースのクライアントアプリケーションと相互作用することができる。ユーザからの入力は、遠隔エミュレートされたデバイスに戻るように伝送され、ユーザが、リアルタイムで、クラウドベースのクライアントアプリケーションを制御し、それと相互作用することを可能にすることができる。本発明は、任意のタイプのオペレーティングシステムを起動する、任意のタイプのクライアントデバイス(例えば、スマートフォン、タブレット、ラップトップ、デスクトップコンピュータ、ゲーム用コンソール、および同等物)のために、クライアントデバイスの下層ハードウェアおよびデバイス特性から独立して、任意の好適なタイプのクラウドベースのクライアントアプリケーションとの遠隔相互作用をサポートすることができる。クラウドベースのクライアントアプリケーションは、例えば、クライアントデバイス上で動作するように設計されるが、本発明の実施形態に従って、クライアントデバイス上に遠隔でレンダリングされ、遠隔で制御されることが可能である、モバイルゲームまたは任意の他の好適なタイプのクライアントアプリケーションを含むことができる。本発明は、ユーザが、任意のクライアントデバイスまたはクライアントデバイスの組み合わせ上で、容易に、各クラウドベースのクライアントアプリケーションをインストールする必要がなく、多くの異なるクラウドベースのクライアントアプリケーションを容易に試行することができ、クラウドベースのクライアントアプリケーションを切り替え、それの間で移動することができるため、クライアントアプリケーション配布のプロセスを簡略化することができる。本発明のいくつかの実装はまた、クラウドベースのクライアントアプリケーションの第三者アプリケーションおよびウェブサイトへの統合をサポートすることができる。そのような統合は、それらの第三者アプリケーションおよびウェブサイトが、第三者アプリケーションおよびウェブサイトとの相互作用および関与を補完および向上させる、統合されたクラウドベースのクライアントアプリケーションを介して、異なる特徴および機能性をより容易にもたらすことを可能にすることができる。単に、議論の目的のために、限定ではなく、本開示は、本発明の種々の側面を例証するために、クラウドベースのモバイルゲームを例示的クラウドベースのクライアントアプリケーションとして参照し得る。しかしながら、本発明は、クライアントデバイス上に遠隔でレンダリングされ、遠隔で制御されることが可能である、任意の好適なタイプのクライアントアプリケーション内かつそれとともに使用されることができる。
【0020】
図1は、本開示の実施形態による、クラウドベースのクライアントアプリケーションと遠隔で相互作用するための例示的クラウドベースのクライアントアプリケーションプラットフォーム100を図示する、ブロック図である。クラウドベースのクライアントアプリケーションプラットフォーム100は、サーバシステム102を含むことができる。サーバは、クラウドベースの(例えば、AMAZONウェブサービス、Googleクラウド、MICROSOFT Azure、または他の好適なクラウドベースのインフラストラクチャプロバイダ)である、または専用サーバハードウェアから成ることができる。サーバシステム102は、アプリケーションエンジンモジュールコントローラ104を含むことができる。アプリケーションエンジンモジュールコントローラ104は、複数のアプリケーションエンジンモジュール106を含み、任意の適切なタイプのクラウドベースのクライアントアプリケーションをサポートすることができる。実施形態では、複数のアプリケーションエンジンモジュール106の各アプリケーションエンジンモジュールは、クラウドベースのクライアントアプリケーションを実行するために、特定のタイプおよび構成のクライアントデバイスをエミュレートするように構成されることができる。例えば、本発明のいくつかの実装では、アプリケーションエンジンモジュールのそれぞれまたはいずれかは、好適なクライアントデバイスエミュレータを備えることができる。各クラウドベースのクライアントアプリケーションは、クラウドベースのクライアントアプリケーションが、ネイティブに、所与のクライアントデバイス上で実行されているかのように、複数のアプリケーションエンジンモジュール106内の個別のアプリケーションエンジンモジュール内で実行されることができる。アプリケーションエンジンモジュールコントローラ104は、アプリケーションエンジンモジュールの登録/登録解除、アプリケーションエンジンモジュールのアトミック予約、アプリケーションエンジンモジュールのクエリ、および同等物を可能にすることができる。複数のアプリケーションエンジンモジュール106は、第1のアプリケーションエンジンモジュール108、第2のアプリケーションエンジンモジュール114、第3のアプリケーションエンジンモジュール120、…、およびN番目のアプリケーションエンジンモジュール126を含むことができ、Nは、任意の好適な自然数であることができ、下記に議論されるように、経時的に変動し得る。各アプリケーションエンジンモジュール108、114、120、…126は、個別のアプリケーションエンジンモジュール内で実行される、クラウドベースのクライアントアプリケーションによって発生される、ビデオおよび/またはオーディオメディアデータを管理し、ユーザへの表示のために、そのようなビデオおよび/またはオーディオメディアデータをクライアントデバイスに伝送または別様にストリーミングするために、ビデオ/オーディオモジュールを含むことができる。各アプリケーションエンジンモジュール108、114、120、…126はまた、ユーザがクラウドベースのクライアントアプリケーションと(遠隔で)相互作用する間に発生される、クライアントデバイスからの入力(例えば、ビデオ/オーディオストリームへのマッピング入力等)を受信および処理するために、状態モジュールを含むことができる。各状態モジュールはまた、個別のアプリケーションエンジンモジュール108、114、120、…126内で実行される、クラウドベースのクライアントアプリケーションの状態を維持することができる。例えば、第1のアプリケーションエンジンモジュール108は、第1の状態モジュール112と通信する、第1のビデオ/オーディオモジュール110を含むことができる。第2のアプリケーションエンジンモジュール114は、第2の状態モジュール118と通信する、第2のビデオ/オーディオモジュール116を含むことができる。第3のアプリケーションエンジンモジュール120は、第3の状態モジュール124と通信する、第3のビデオ/オーディオモジュール122を含むことができる。N番目のアプリケーションエンジンモジュール126は、N番目の状態モジュール120と通信する、N番目のビデオ/オーディオモジュール128を含むことができる。アプリケーションエンジンモジュールコントローラ104は、任意の好適な数のアプリケーションエンジンモジュールを維持し、必要に応じて、アプリケーションエンジンモジュールを登録(すなわち、インスタンス化、割り当て、または別様に生成)または登録解除(すなわち、削除または割り当て解除)することができる。ある実施形態では、サーバシステム102は、複数のアプリケーションエンジンモジュールコントローラ104を含むことができ、各アプリケーションエンジンモジュールコントローラ104は、個別の複数のアプリケーションエンジンモジュール106を管理し、1つまたはそれを上回るアプリケーションエンジンモジュールクラスタを形成する。
【0021】
本発明のいくつかの実装では、各アプリケーションエンジンモジュール108、114、120、…126は、例えば、webRTCブリッジ(ビデオ/オーディオメディアデータのためのメディアチャネル)、OpenGL、またはクライアントデバイス上で起動するブラウザまたは他の適切なアプリケーションとのリアルタイムメディア通信能力をサポートするための他の好適な技術を伴う、Kubernetesまたは同等物におけるReplicaSet内の必須コンテナとして起動することができる。ReplicaSetは、アプリケーションエンジンモジュールの複数のインスタンスを起動し、規定された数のアプリケーションエンジンモジュールを一定に保ち得る、プロセスである。ReplicaSetは、任意の所与の時間に、アプリケーションエンジンモジュールコントローラ104内で、またはそれとともに起動される、規定された数のアプリケーションエンジンモジュールインスタンスを維持し、アプリケーションエンジンモジュールが、失敗する、またはアクセス不能であるとき、ユーザが、それらのクラウドベースのクライアントアプリケーションへのアクセスを喪失しないように防止することができる。ある実施形態では、各アプリケーションエンジンモジュール108、114、120、…126はまた、健全性チェックおよび同等物と、例えば、CORS(オリジン間リソース共有)要求または他の同様の要求とをハンドリングし得る、エンボイプロキシ(イグレスプロキシまたはイングレスプロキシの一方または両方として)を含むことができる。加えて、または代替として、各アプリケーションエンジンモジュール108、114、120、…126は、(例えば、下記に議論される、アプリケーションエンジン予約コントローラ134からの)デバッグおよび他のアプリケーションエンジンコマンドを受信および処理するために、デバッグブリッジを含むことができる。
【0022】
ある実施形態では、アプリケーションエンジンモジュールコントローラ104は、ビデオ/オーディオ通信モジュール132を含み、複数のアプリケーションエンジンモジュール106のアプリケーションエンジンモジュールとクライアントデバイスとの間のメディア通信をサポートすることができる。代替実施形態では、ビデオ/オーディオ通信モジュール132は、サーバシステム102内に常駐するが、アプリケーションエンジンモジュールコントローラ104の外側にあって、それと通信することもできる。加えて、または代替として、複数のアプリケーションエンジンモジュール106の各または任意のアプリケーションエンジンモジュールは、個別のビデオ/オーディオ通信モジュール132を含む、またはそれと通信することができる。換言すると、複数のビデオ/オーディオ通信モジュール132のそれぞれまたはいずれかは、複数のアプリケーションエンジンモジュール106のアプリケーションエンジンモジュールのそれぞれまたはいずれか内に常駐する、またはそれと関連付けられることができる。本発明のいくつかの実装では、ビデオ/オーディオ通信モジュール132は、TURN(中継NATを使用するトラバーサル)サーバまたは同等物(例えば、STUN(NATのためのセッショントラバーサルユーティリティ)サーバ等)を備え、アプリケーションエンジンモジュールとクライアントデバイスとの間のビデオ/オーディオメディアデータの通信をサポートすることができる。加えて、または代替として、ビデオ/オーディオ通信モジュール132は、好適なエンコーダを備え、ビデオを、例えば、webRTCまたは同等物のためのh.264またはVP8にエンコーディングすることができる。しかしながら、ビデオ/オーディオメディアデータのための他の好適なサーバ通信プロトコル、エンコーディング技法、および/または伝送プロトコルも、可能性として考えられる。
【0023】
サーバシステム102は、アプリケーションエンジンモジュールコントローラ104と通信する、アプリケーションエンジン予約コントローラ134を含むことができる。実施形態では、アプリケーションエンジン予約コントローラ134は、例えば、アプリケーションエンジンモジュールスケーリングを連携させること、アプリケーションエンジンモジュールアクセスを制御すること、ユーザのためのアプリケーションエンジンモジュール初期化を管理すること、および同等物を含む、複数のアプリケーションエンジンモジュール106の種々の側面を制御することができる。アプリケーションエンジン予約コントローラ134は、アプリケーションエンジンインベントリおよび予約モジュール136を含むことができる。アプリケーションエンジンインベントリおよび予約モジュール136は、複数のアプリケーションエンジンモジュール106内の全てのアプリケーションエンジンモジュールのインベントリを追跡および管理することができる。アプリケーションエンジンインベントリおよび予約モジュール136はまた、アクティブセッションにおいて使用するためのアプリケーションエンジンモジュール予約を付与することができる。本発明のいくつかの実装では、ユーザが、クラウドベースのクライアントアプリケーションとのアクティブセッションの開始を要求すると、アプリケーションエンジンインベントリおよび予約モジュール136は、適切なアプリケーションエンジンモジュールを予約し、要求されるクラウドベースのクライアントアプリケーションを伴う、予約されたアプリケーションエンジンモジュールをロードし、またはロードさせ(すでにロードまたは事前にロードされていない場合)、ロードされたクラウドベースのクライアントアプリケーションに、適切なユーザおよび/またはアプリケーションデータ(例えば、クラウドベースのクライアントアプリケーションとのユーザ相互作用および関与をサポートするためのユーザプロファイル情報、ユーザアカウント情報、アプリケーション状態情報等)を取り込み、または取り込ませ、予約されたアプリケーションエンジンモジュールをそのアクティブセッションに結び付ける、または別様にリンクすることができる。アプリケーションエンジンモジュールが、アクティブセッションのために利用可能ではない場合、アプリケーションエンジンインベントリおよび予約モジュール136は、アプリケーションエンジンモジュールコントローラ104に(例えば、下記に議論される、アプリケーションエンジンスケーラモジュール138を介して)、要求されるアクティブセッションのための新しいアプリケーションエンジンモジュールを追加および登録するように命令することができる。
【0024】
本発明のいくつかの実装では、登録プロセスは、非同期して、実施されることができる。例えば、アプリケーションエンジンインベントリおよび予約モジュール136は、いったんタスクが完了されると、アプリケーションエンジンモジュールコントローラ104によって周期的にポーリングする、または適切なメッセージをアプリケーションエンジンモジュールコントローラ104から受信することによって、新しいアプリケーションエンジンモジュールが、追加および予約されることを待機することができる。いったんアプリケーションエンジンモジュールが、登録されると、これは、アクティブセッションのために、予約され、それに結び付けられることができる。本発明のいくつかの実装では、アクティブセッションのために予約されている、アプリケーションエンジンモジュールは、それを要求したユーザにのみ、かつアクティブセッションの存続期間にわたってのみ、アクセス可能であることができる。換言すると、特定のアクティブセッションにわたって予約されている、アプリケーションエンジンモジュールは、そのアクティブセッションの間、別のユーザによって使用またはアクセスされ得ない。本発明のいくつかの実装では、アクティブセッションの間、予約されたアプリケーションエンジンモジュール内に記憶される、または別様にそれによって使用される、データは、一時的であることができる。例えば、アプリケーションエンジンモジュールは、アクティブセッションの終了時に、登録解除されることができる。故に、そのアクティブセッションの間、アプリケーションエンジンモジュールによって記憶または別様に使用される、あらゆるデータは、例えば、アプリケーションエンジンモジュールの登録解除までに、削除されることができる。代替実施形態では、アクティブセッションの間、予約されたアプリケーションエンジンモジュール内に記憶される、または別様にそれによって使用される、データは、(例えば、データベース146内に)記憶され、読み出され、ユーザによって、後続アクティブセッション内において、かつそれとともに使用されることができる。いったんアプリケーションエンジンモジュールが、登録解除されると、これは、別のアクティブセッションのために再使用されることができる、またはそのコンピューティングリソースは、異なるアプリケーションエンジンモジュールに再割り当てされることができる。
【0025】
実施形態では、アプリケーションエンジン予約コントローラ134は、アプリケーションエンジンインベントリおよび予約モジュール136と通信する、アプリケーションエンジンスケーラモジュール138を含むことができる。アプリケーションエンジンスケーラモジュール138は、新しいアプリケーションエンジンモジュールを複数のアプリケーションエンジンモジュール106に追加し、それをインスタンス化することによって、インベントリおよび予約変化に応答することができる。アプリケーションエンジンスケーラモジュール138は、例えば、使用量傾向または他の好適なメトリックに基づいて、先を見越して、複数のアプリケーションエンジンモジュール106内のアプリケーションエンジンモジュールの数をスケーリングし、予約可能アプリケーションエンジンモジュールの十分なサイズのプールを維持することができる。例えば、アプリケーションエンジンスケーラモジュール138は、複数のアプリケーションエンジンモジュール106のプールのサイズに関する事前に決定された閾値(例えば、使用量傾向または他の適切なメトリックに基づいて、提供または発生される)を記憶することができる。予約可能アプリケーションエンジンモジュールの数が、事前に決定された閾値を下回って減少する場合、アプリケーションエンジンスケーラモジュール138は、新しいアプリケーションエンジンモジュールを複数のアプリケーションエンジンモジュール106に追加し、予約可能アプリケーションエンジンモジュールの数を事前に決定された閾値を上回るように増加させることができる。予約可能アプリケーションエンジンモジュールの数の増加が、あまりに多くなる(例えば、第2の事前に決定された閾値を上回る)場合、アプリケーションエンジンスケーラモジュール138は、何もし得ないか、または必要とされない余剰アプリケーションエンジンモジュールを複数のアプリケーションエンジンモジュール106から削除または別様に割り当て解除し得るかのいずれかとなる。加えて、または代替として、好適な機械学習/人工知能技法が、アプリケーションエンジンスケーラモジュール138によって、またはそれとともに使用され、複数のアプリケーションエンジンモジュール106内の予約可能アプリケーションエンジンモジュールの数を適切かつ動的にスケーリングすることができる。例えば、機械学習モデルは、ユーザからの使用量データ(例えば、使用量傾向、ピーク使用量、ピーク時間外使用量等)に基づいて、訓練されることができる。機械学習モデルは、次いで、複数のアプリケーションエンジンモジュール106内のアプリケーションエンジンモジュールを動的に追加および削除/割り当て解除するために使用されることができる。機械学習モデルは、使用量データが経時的に進化するにつれて、更新または別様に適合されることができる。
【0026】
本発明のいくつかの実装では、複数のアプリケーションエンジンモジュール106は、1つまたはそれを上回るアプリケーションエンジンモジュールプールと関連付けられ、または別様にそれに対応し、それと通信することができ、これは、例えば、アプリケーションエンジンインベントリおよび予約モジュール136および/またはアプリケーションエンジンスケーラモジュール138によって管理されることができる。例えば、クラウドベースのクライアントアプリケーションプラットフォーム100によってサポートされる、各または任意のエミュレートされるクライアントデバイスのためのアプリケーションエンジンモジュールは、単一の大規模アプリケーションエンジンモジュールプール内に維持されることができる。ユーザによって要求される、アクティブセッションのためのアプリケーションエンジンモジュールは、例えば、アプリケーションエンジンインベントリおよび予約モジュール136および/またはアプリケーションエンジンスケーラモジュール138によって、そのような単一アプリケーションエンジンモジュールプールから割り当て、予約、インスタンス化されることができる。しかしながら、そのような単一の大規模アプリケーションエンジンモジュールプールから各アプリケーションエンジンモジュールにアクセスし、それをインスタンス化することは、潜在的ボトルネックを生成し得る。例えば、これは、特に、そのために対応するアプリケーションエンジンモジュールが、任意の所与の時間において、クラウドベースのクライアントアプリケーションプラットフォーム100のためにインスタンス化されている、数万、数十万、またはさらに数百万人のユーザが存在し得るとき、各アプリケーションエンジンモジュールを別個にスピンアップするために、実質的時間量およびコンピューティングリソースを要し得る。結果として生じる割り当て遅延は、クラウドベースのクライアントアプリケーションプラットフォーム100の性能およびそれとのユーザ相互作用に悪影響を及ぼし得、これは、ユーザ不満およびユーザ解約さえもたらし得る。
【0027】
図2は、本開示の実施形態による、クラウドベースのクライアントアプリケーションと遠隔で相互作用するための複数のアプリケーションエンジンモジュールプールを伴う、例示的クラウドベースのクライアントアプリケーションプラットフォーム200を図示する、ブロック図である。本発明のいくつかの実装では、複数のアプリケーションエンジンモジュール206のそれぞれまたはいずれかは、例えば、アプリケーションエンジンインベントリおよび予約モジュール136および/またはアプリケーションエンジンスケーラモジュール138によって維持され得る、別個のアプリケーションエンジンモジュールプールと関連付けられ、それと通信することができ、各アプリケーションエンジンモジュールプールは、個々のタイプのアプリケーションエンジンモジュールまたは関連タイプのアプリケーションエンジンモジュールのセットをサポートする。複数のアプリケーションエンジンモジュール206は、図1における複数のアプリケーションエンジンモジュール106に関して議論および説明されるものに類似する様式で動作することができる。図2に図示される実施形態では、各クラウドベースのクライアントアプリケーションは、その独自の個々のアプリケーションエンジンモジュールプールを有する、またはそれと関連付けられることができる。例えば、複数のアプリケーションエンジンモジュールプールの各プールは、複数のアプリケーションエンジンモジュールプールの各プールが、クラウドベースのクライアントアプリケーション毎ベースで割り当てされ得るように、単一クラウドベースのクライアントアプリケーションをサポートするように構成されることができる。例証目的のために、限定ではないが、Android(登録商標)スマートフォン上で起動されるように設計される、クロンダイクソリティアモバイルゲームは、第1のアプリケーションエンジンモジュール108によってサポートされることができ、これは、第1のアプリケーションエンジンモジュールの第1のアプリケーションエンジンモジュールプール205と関連付けられることができる。PCラップトップ上で起動されるように設計される、クロンダイクソリティアPCゲームは、第2のアプリケーションエンジンモジュール114によってサポートされることができ、これは、第2のアプリケーションエンジンモジュールの第2のアプリケーションエンジンモジュールプール210と関連付けられることができる。iOSスマートフォン上で起動されるように設計される、クロンダイクソリティアモバイルゲームは、第3のアプリケーションエンジンモジュール120によってサポートされることができ、これは、第3のアプリケーションエンジンモジュールの第3のアプリケーションエンジンモジュールプール215と関連付けられることができる。ゲームコンソール上で起動されるように設計される、クロンダイクソリティアゲームは、N番目のアプリケーションエンジンモジュール126によってサポートされることができ、これは、N番目のアプリケーションエンジンモジュールのN番目のアプリケーションエンジンモジュールプール220と関連付けられることができる等となる。代替として、複数のアプリケーションエンジンモジュールプールの各プールは、複数のアプリケーションエンジンモジュールプールの各プールが、アプリケーションエンジンモジュールタイプ毎ベースで割り当てされ得るように、関連アプリケーションエンジンモジュール(例えば、特定のオペレーティングシステムバージョン等を用いて、Android(登録商標)スマートフォンをエミュレートする、アプリケーションエンジンモジュール)のセットをサポートするように構成されることができる。任意の好適な数のアプリケーションエンジンモジュールプールが、例えば、システムまたはその任意の適切なサブセットによってサポートされる、クラウドベースのクライアントアプリケーションの数(または、代替として、アプリケーションエンジンモジュールタイプ)に応じて、例えば、アプリケーションエンジンインベントリおよび予約モジュール136および/またはアプリケーションエンジンスケーラモジュール138によって、任意の適切な数のアプリケーションエンジンモジュールのために維持およびサポートされることができる。
【0028】
本発明のいくつかの実装では、複数のアプリケーションエンジンモジュールプールの各プール内のアプリケーションエンジンモジュールのそれぞれまたはいずれかは、「事前にウォームアップされる」ことができる。例えば、複数のアプリケーションエンジンモジュールプールの各プール内のアプリケーションエンジンモジュールは、アプリケーションエンジンモジュールプール内で事前に割り当ておよび事前にインスタンス化され、次いで、例えば、アプリケーションエンジンインベントリおよび予約モジュール136および/またはアプリケーションエンジンスケーラモジュール138によって、スタンバイまたはスリープモードに置かれることができる。各アプリケーションエンジンモジュールプール内のアプリケーションエンジンモジュールをバックグラウンドでスピンアップし、それらのスピンアップされたアプリケーションエンジンモジュールをスタンバイモードに維持することによって、アプリケーションエンジンモジュールは、スタンバイモードにある、アプリケーションエンジンモジュールをウェイクアップすることが、アプリケーションエンジンモジュールを最初からインスタンス化するよりも実質的に時間がかかり得ないため、殆どまたは全く付随する遅延を伴わずに、アクティブセッションの要求に応じて、直ちに(またはほぼ直ちに)、予約され、ユーザにあてがわれることができる。いったんアプリケーションエンジンモジュールプール内のアプリケーションエンジンモジュールが、予約され、あてがわれると、予約され、あてがわれたアプリケーションエンジンモジュールは、アクティブセッションを要求する次のユーザによる即座(またはほぼ即座)の予約およびそれへのあてがいの準備ができ得るように、直ちに(またはほぼ直ちに)、対応するアプリケーションエンジンモジュールプールからの別の「事前にウォームアップされた」アプリケーションエンジンモジュールによって置き換えられることができる。そのような「事前にウォームアップされた」置き換えプロセスは、アプリケーションエンジンモジュールプール内の各アプリケーションエンジンモジュールが、予約され、あてがわれるため、継続することができる。そのような様式において、複数のアプリケーションエンジンモジュールプールの各プールからのアプリケーションエンジンモジュールが、リアルタイムで、ユーザに割り当てされることができる。本開示では、「リアルタイム」は、要求が受信されたときと、要求が処理され、応答が提供されたときとの間に、最小限の遅延が存在するように、瞬間的または短時間周期(例えば、数秒)以内に生じ得る、処理を指し得る。アクティブセッションのために予約されたアプリケーションエンジンモジュールに割り当てされる、コンピューティングリソースは、いったんアクティブセッションが、終了し、予約されたアプリケーションエンジンモジュールが、もはやそのアクティブセッションのために必要とされなくなると、直ちに(またはほぼ直ちに)、削除または別様に割り当て解除されることができる。本発明のいくつかの実装では、そのような解放されたコンピューティングリソースは、もはや非アクティブセッションのために必要とされない、予約されたアプリケーションエンジンモジュールのためにコンピューティングリソースを維持するのではなく、例えば、アプリケーションエンジンインベントリおよび予約モジュール136および/またはアプリケーションエンジンスケーラモジュール138によって再割り当てされ、関連付けられるアプリケーションエンジンモジュールプールまたは異なるアプリケーションエンジンモジュールプール内に別のアプリケーションエンジンモジュールを追加し、事前にウォームアップすることができる。
【0029】
複数のアプリケーションエンジンモジュールプールのそれぞれまたはいずれかのサイズは、固定または動的であることができる。例えば、アプリケーションエンジンモジュールプールのサイズは、事前にウォームアップされるアプリケーションエンジンモジュールの事前に決定されたアプリケーションエンジンモジュールプールサイズ数が、プール内で維持され得るように、固定されることができる。アプリケーションエンジンモジュールプール内の事前にウォームアップされたアプリケーションエンジンモジュールが、割り当てされるにつれて、アプリケーションエンジンインベントリおよび予約モジュール136および/またはアプリケーションエンジンスケーラモジュール138は、割り当てされたアプリケーションエンジンモジュールと付加的な事前にウォームアップされたアプリケーションエンジンモジュールを置き換え、アプリケーションエンジンモジュールプールのサイズを事前に決定されたアプリケーションエンジンモジュールプールサイズ数またはそのおおよその数に維持することができる。事前に決定されたアプリケーションエンジンモジュールプールサイズ数は、例えば、特定のアプリケーションエンジンモジュールに関する使用量傾向、履歴使用量情報、または他の適切なメトリックおよび同等物に基づくことができる。故に、高度に使用されるアプリケーションエンジンモジュールは、より多くの事前に決定されたアプリケーションエンジンモジュールプールサイズ数を有することができる一方、あまり使用されないアプリケーションエンジンモジュールは、より少ない事前に決定されたアプリケーションエンジンモジュールプールサイズ数を有することができる。
【0030】
加えて、または代替として、アプリケーションエンジンモジュールプールのサイズは、動的であることができる。本発明のいくつかの実装では、アプリケーションエンジンインベントリおよび予約モジュール136および/またはアプリケーションエンジンスケーラモジュール138は、リアルタイムで、複数のアプリケーションエンジンモジュール206のそれぞれまたはいずれかの使用量傾向を監視することができる。例えば、使用量傾向が、特定のアプリケーションエンジンモジュールに関して増加するにつれて、アプリケーションエンジンスケーラモジュール138は、アプリケーションエンジンモジュール割り当てが、追加される遅延を伴わずに、リアルタイムで継続し得るように、関連付けられるアプリケーションエンジンモジュールプールのサイズ(したがって、アプリケーションエンジンモジュールプール内に維持される、事前にウォームアップされるアプリケーションエンジンモジュールの数)を増加させ、より多くの使用量に適応することができる。逆に言えば、使用量傾向が、特定のアプリケーションエンジンモジュールに関して減少するにつれて、アプリケーションエンジンスケーラモジュール138は、コンピューティングリソースが、不必要に酷使されず、いずれかの場所に割り当てされ得るように、関連付けられるアプリケーションエンジンモジュールプールのサイズ(したがって、アプリケーションエンジンモジュールプール内に維持される、事前にウォームアップされるアプリケーションエンジンモジュールの数)を減少させ、より少ない使用量に適応することができる。そのような実施形態では、アプリケーションエンジンモジュールプールのそれぞれまたはいずれかのサイズは、動的に改変され、増加された使用量(例えば、使用量におけるスパイク)および使用量における小閑の周期に適応し、アプリケーションエンジンモジュールのリアルタイム割り当てを維持することができる。
【0031】
本発明のいくつかの実装では、アプリケーションエンジンインベントリおよび予約モジュール136および/またはアプリケーションエンジンスケーラモジュール138は、好適な予測モデルを含み、または適切な機械学習/人工知能技法を使用して、複数のアプリケーションエンジンモジュールプールのアプリケーションエンジンモジュールプールのサイズを決定することができる。例えば、機械学習モデルは、サポートされるアプリケーションエンジンモジュール毎に、使用量傾向データに基づいて、訓練され、アプリケーションエンジンモジュールのためのアプリケーションエンジンモジュールプールサイズを修正し、アプリケーションエンジンモジュールを割り当てするための時間量を最小限にし、リアルタイムアプリケーションエンジンモジュール割り当てのための低減された割り当て時間を維持することができる。機械学習モデルは、次いで、そのアプリケーションエンジンモジュールのために特定の時間に呈された使用量に基づいて、アプリケーションエンジンモジュールと関連付けられる、アプリケーションエンジンモジュールプールのサイズを動的および適切に修正するために使用されることができる。機械学習モデルは、アプリケーションエンジンモジュールのための使用量傾向が、例えば、アプリケーションエンジンインベントリおよび予約モジュール136および/またはアプリケーションエンジンスケーラモジュール138によって監視されるように、経時的に変化および進化するにつれて、更新または別様に適合されることができる。本発明のいくつかの実装では、複数のアプリケーションエンジンモジュールプールのサブセット内の各アプリケーションエンジンモジュールプールのサイズは、固定されることができる一方、複数のアプリケーションエンジンモジュールプール内の他のアプリケーションエンジンモジュールプールのサイズは、動的であることができる。例えば、高度に使用される、アプリケーションエンジンモジュールは、そのサイズが動的である、アプリケーションエンジンモジュールプールと関連付けられることができる一方、あまり使用されない、アプリケーションエンジンモジュールは、そのサイズが固定される、アプリケーションエンジンモジュールプールと関連付けられることができる。加えて、または代替として、特定のアプリケーションインスタンスモジュールプールのサイズは、ある時間では、固定され、他の時間では、動的であることができる。例えば、概して、より低い使用量を被る、アプリケーションエンジンモジュールに関して、対応するアプリケーションエンジンモジュールプールのサイズは、固定されることができる。しかしながら、より高い使用量(例えば、使用量スパイク)の(例えば、断続)周期の間、対応するアプリケーションエンジンモジュールプールのサイズは、動的であることができる。アプリケーションエンジンインベントリおよび予約モジュール136および/またはアプリケーションエンジンスケーラモジュール138は、アプリケーションエンジンモジュールプールのサイズを、いったんより高い使用量の周期が終了すると、固定された状態に戻るように切り替えることができる。このように、アプリケーションエンジンインベントリおよび予約モジュール136および/またはアプリケーションエンジンスケーラモジュール138は、アプリケーションエンジンモジュールのリアルタイム割り当てのための低減された割り当て時間を維持するために、必要に応じて、使用量条件を変化させるように適合することができる。
【0032】
本発明のいくつかの実装では、1つまたはそれを上回るアプリケーションエンジンモジュールプールは、図2に図示されるように、複数のアプリケーションエンジンモジュール206内に、かつそれとともに維持されることができる。しかしながら、本発明のいくつかの実装では、1つまたはそれを上回るアプリケーションエンジンモジュールプールのそれぞれまたはいずれかは、複数のアプリケーションエンジンモジュール206の外側にあるが、サーバシステム102内にある、アプリケーションエンジンモジュールコントローラ104内に、かつそれとともに維持されることができる。加えて、または代替として、1つまたはそれを上回るアプリケーションエンジンモジュールプールのそれぞれまたはいずれかは、サーバシステム102内またはそれとともにであるが、アプリケーションエンジンモジュールコントローラ104の外側、例えば、データベース146内等に維持されることができる。加えて、または代替として、1つまたはそれを上回るアプリケーションエンジンモジュールプールのそれぞれまたはいずれかは、サーバシステム102から遠隔にあって、それと通信する、好適なクラウドまたはサーバ記憶システム内またはそれとともに維持されることができる。
【0033】
図1および2に図示されるように、サーバシステム102は、アクティブセッションを管理するために、セッション管理コントローラ140を含むことができる。セッション管理コントローラ140は、アプリケーションエンジン予約コントローラ134と通信することができる。本発明のいくつかの実装では、セッション管理コントローラ140はまた、アプリケーションエンジンモジュールコントローラ104に結合される、または別様にそれと通信することができる。セッション管理コントローラ140は、登録、登録解除、およびスケーリングを含む、アプリケーションエンジンモジュールの割り当てを管理する(例えば、アプリケーションエンジンインベントリおよび予約モジュール136およびアプリケーションエンジンスケーラモジュール138と通信および協調する)ために、セッションマネージャモジュール142を含むことができる。セッションマネージャモジュール142はまた、サーバシステム102が、例えば、ロードバランシングおよび待ち時間をサポートするために、コーディネータとして作用することができる。セッションマネージャモジュール142は、要求をクライアントデバイスから受信し、アクティブセッションを開始することができる。加えて、セッションマネージャモジュール142は、クライアントデバイスから、適切なアプリケーションエンジンモジュールを選択するために使用され得る、セッション情報を受信することができる(例えば、要求に加え、またはその一部として)。ある実施形態では、クライアントデバイスから受信される、セッション情報は、例えば、それに関してアクティブセッションが要求される、クラウドベースのクライアントアプリケーションの1つまたはそれを上回る特性、クライアントデバイスの1つまたはそれを上回る特性(例えば、クライアントデバイスタイプ、オペレーティングシステム等)、および他の同様の特性またはデータを含むことができる。
【0034】
セッション管理コントローラ140は、セッションマネージャモジュール142と通信する、アプリケーションエンジン選択器モジュール144を含むことができる。セッションマネージャモジュール142は、受信されたセッション情報をアプリケーションエンジン選択器モジュール144に通過させることができ、これは、そのような情報を使用して、要求されるアクティブセッションのための適切なアプリケーションエンジンモジュールを選択することができる。例証目的のために、限定ではないが、例えば、PCラップトップ等の非Android(登録商標)クライアントデバイスを用いる、ユーザが、Android(登録商標)スマートフォン上で起動されるように設計される、(クラウドベースの)クロンダイクソリティアモバイルゲームとのアクティブセッションを要求し得る。アプリケーションエンジン選択器モジュール144に通過される、セッション情報に基づいて、アプリケーションエンジン選択器モジュール144は、アクティブセッションのための(クラウドベースの)クロンダイクソリティアモバイルゲームのために、Android(登録商標)アプリケーションエンジンモジュールを選択することができる。アプリケーションエンジン選択器モジュール144は、アプリケーションエンジンインベントリおよび予約モジュール136と通信することができる。その結果、アプリケーションエンジン選択器モジュール144は、アプリケーションエンジンインベントリおよび予約モジュール136に、複数のアプリケーションエンジンモジュール106または206から(クラウドベースの)クロンダイクソリティアモバイルゲームのためのAndroid(登録商標)アプリケーションエンジンモジュールを予約するように命令することができる。いったん予約されると、Android(登録商標)クロンダイクソリティアモバイルゲームアプリケーションエンジンモジュールは、他のユーザが、アクティブセッションの間、その予約されたアプリケーションエンジンモジュールを使用することができないように、要求されるアクティブセッションに結び付けられることができる。アプリケーションエンジン選択器モジュール144は、コマンドを発行し(例えば、アプリケーションエンジンインベントリおよび予約モジュール136を介して、予約されたAndroid(登録商標)モバイルゲームアプリケーションエンジンモジュールに通過される)、Android(登録商標)アプリケーションエンジンモジュール内で(クラウドベースの)クロンダイクソリティアモバイルゲームを開始することができる。ユーザは、次いで、クロンダイクソリティアモバイルゲームが、ネイティブに、PCラップトップ自体上で実行されているかのように、それらのPCラップトップを介して、(クラウドベースの)クロンダイクソリティアモバイルゲームと遠隔で相互作用することを開始することができる。Android(登録商標)クロンダイクソリティアクラウドベースのモバイルゲームアプリケーションエンジンモジュールが、利用不可能である場合、アプリケーションエンジンインベントリおよび予約モジュール136は、上記に説明される様式において、アプリケーションエンジンスケーラモジュール138に、Android(登録商標)クロンダイクソリティアクラウドベースのクライアントゲームアプリケーションエンジンモジュールを複数のアプリケーションエンジンモジュール106または206に追加し、それを予約するように命令することができる。
【0035】
本発明のいくつかの実装では、セッション管理コントローラ140(例えば、セッションマネージャモジュール142およびアプリケーションエンジン選択器モジュール144)は、図2に関して図示および議論されるように、アプリケーションエンジン予約コントローラ134(例えば、アプリケーションエンジンインベントリおよび予約モジュール136およびアプリケーションエンジンスケーラモジュール138)と協調し、それを制御し、1つまたはそれを上回るアプリケーションエンジンモジュールプールを管理することができる。加えて、または代替として、セッション管理コントローラ140は、直接、アプリケーションエンジンモジュールコントローラ104と協調し、それを制御し、1つまたはそれを上回るアプリケーションエンジンモジュールプールを管理することができる。
【0036】
ある実施形態では、アプリケーションエンジン予約コントローラ134は、例えば、アプリケーションエンジンモジュールに関する使用量傾向を識別および維持し得る(例えば、ユーザ毎、全てのユーザ、またはその任意のサブセットに関して)ため、本発明のいくつかの実装はまた、クラウドベースのクライアントアプリケーションを各または任意のユーザに推奨することができる。ある実施形態では、セッションマネージャモジュール142は、推奨エンジンまたは同等物を含むことができる。推奨エンジンは、使用量傾向情報をアプリケーションエンジン予約コントローラ134から受信し、そのような情報を使用して、異なるクラウドベースのクライアントアプリケーションをユーザに推奨することができる。例えば、推奨エンジンは、最も一般的クラウドベースのクライアントアプリケーション(例えば、全体として、特定のジャンル内において、特定のタイプのクライアントデバイスを使用するユーザに関して等)、特定の時間における、またはある時間の範囲(例えば、過去の時間、過去の日、過去の週等)にわたる、最も一般的クラウドベースのクライアントアプリケーションのリスト、および同等物を推奨することができる。推奨エンジンはまた、それとユーザが以前に相互作用している、1つまたはそれを上回るクラウドベースのクライアントアプリケーションに類似する、またはそれを補完する、クラウドベースのクライアントアプリケーションを推奨することができる。例えば、ユーザが、クラウドベースのクロンダイクソリティアモバイルゲームをプレーしたことがある場合、推奨エンジンは、それにゲームが基づく、デバイスプラットフォームにかかわらず、同一または類似ジャンル内の他のクラウドベースのゲーム(例えば、スパイダーソリティア、トライピークスソリティア等)を推奨することができる(デバイスプラットフォームは、複数のアプリケーションエンジンモジュール106または206のうちの1つによって、エミュレートされるであろうため)。他の推奨も、可能性として考えられる。加えて、または代替として、好適な機械学習/人工知能技法が、推奨エンジンによって使用され、クラウドベースのクライアントアプリケーション推奨をユーザに動的に提供することができる。例えば、機械学習モデルは、ユーザからの使用量データ(例えば、全てのユーザまたはその任意のサブセットに関する使用量傾向、ピーク使用量、ピーク時間外使用量等)に基づいて、訓練されることができる。機械学習モデルは、次いで、使用量傾向に基づいて、クラウドベースのクライアントアプリケーションをユーザ動的に推奨するために使用されることができる。機械学習モデルは、使用量データが経時的に進化するにつれて、更新または別様に適合されることができる。そのような推奨は、クライアントデバイスに通信されることができる(例えば、モーダルウィンドウまたは他の適切な通知またはメッセージ内でURLまたは他のリンクまたはハイパーリンクとして)。ユーザが、推奨を承認する(例えば、クラウドベースのクライアントアプリケーションへのURLまたは他のリンクまたはハイパーリンクを選択することによって)場合、セッションマネージャモジュール142は、示されるアプリケーションエンジンモジュールを本明細書に説明される様式において選択および予約させ、ユーザのためにアクティブセッションを開始することができる。
【0037】
サーバシステム102は、アプリケーションエンジンモジュールコントローラ104、アプリケーションエンジン予約コントローラ134、およびセッション管理コントローラ140のうちの1つまたはそれを上回るものと通信し得る、1つまたはそれを上回るデータベース146を含むことができる。データベース146は、クラウドベースである、または1つまたはそれを上回る物理的記憶システム内に常駐することができる。データベース146は、例えば、アプリケーションエンジンモジュールに関連する任意の好適な情報、アプリケーションエンジンモジュールの管理、アクティブセッション情報、履歴セッション情報、使用量傾向または他のメトリックデータ、クラウドベースのクライアントアプリケーション状態データ、各または任意のクラウドベースのクライアントアプリケーションのコピー、クライアントデバイスからの入力、セッションログ、および他の同様のデータを含むことができる。
【0038】
本発明のいくつかの実装では、クラウドベースのクライアントアプリケーションプラットフォーム100または200は、サーバシステム102と通信する(例えば、インターネットまたは他の好適なネットワークを介して)、1つまたはそれを上回るクライアントデバイス148を含むことができる。実施形態によると、クライアントデバイス148は、例えば、スマートフォン、タブレット、ラップトップ、デスクトップコンピュータ、ゲームコンソール、スマートテレビ、スマートウォッチ、またはブラウザまたは他の好適なアプリケーションを通したそのようなユーザ入力および相互作用をサポートすることが可能である、任意の他の適切なデバイス等、それを通してユーザが相互作用し得る、適切なブラウザまたは他の好適なアプリケーションを起動することが可能である(例えば、タッチスクリーンまたはマウス、スタイラス、または同等物等のポインティングデバイスを介して)、任意の好適なタイプのデバイスであることができる。実施形態では、本発明は、それぞれ、任意の適切なタイプのオペレーティングシステムを起動し、クライアントデバイス148の下層ハードウェアおよびデバイス特性から独立して、任意の好適な数のクライアントデバイス148上での任意の適切なタイプのクラウドベースのクライアントアプリケーションとの相互作用をサポートすることができる。
【0039】
クラウドベースのクライアントアプリケーションは、本発明の実施形態による、ネイティブに、任意の好適なタイプのクライアントデバイス148上で実行されるように構成されるが、クラウド内において、サーバシステム102の複数のアプリケーションエンジンモジュール106または206のアプリケーションエンジンモジュール内で遠隔で実行およびレンダリングされ得る、任意の適切なクライアントアプリケーションであることができる。例えば、クラウドベースのモバイルゲームまたは他のウェブベースまたは好適なクラウドベースのクライアントアプリケーション等のクラウドベースのクライアントアプリケーションは、それとユーザがサーバシステム102を介して相互作用し得る、エンドユーザクライアントアプリケーションとして遠隔で提供されることができる。クラウドベースのクライアントアプリケーションは、例えば、エンターテインメント(例えば、ゲーム、音楽、ビデオ等)、ビジネス(例えば、ワード処理、会計、スプレッドシート等)、ニュース、天候、融資、スポーツ等を含む、多種多様な機能および情報に関連し、および/またはそれを提供することができる。ある実施形態では、クラウドベースのクライアントアプリケーションは、モバイルデジタルゲーム、PCゲーム、またはコンソールゲーム等のデジタルゲームを提供することができる。デジタルゲームは、例えば、スポーツゲーム、冒険ゲーム、仮想プレーカードゲーム、仮想ボードゲーム、パズルゲーム、レースゲーム、または任意の他の適切なタイプのデジタルゲームである、またはそれを含むことができる。ある実施形態では、デジタルゲームは、非同期競合的技能ベースのゲームであることができ、その中でプレーヤは、それぞれ、デジタルゲーム内の他者に対して競合することができるが、同時に、デジタルゲームをプレーする必要はない。代替実施形態では、デジタルゲームは、同期競合的技能ベースのゲームであることができ、その中でプレーヤは、同時に、デジタルゲームをプレーすることができ、リアルタイムで、デジタルゲーム内で相互に対して競合することができる。他の好適なクラウドベースのデジタルゲームも、モバイルベース、PCベース、コンソールベース、またはその他であるかどうかにかかわらず、可能性として考えられる。その中で2人またはそれを上回るユーザが、相互に対して競合する、または別様に関与し得る、クラウドベースのクライアントアプリケーションに関して、各ユーザは、個別の予約され、あてがわれたアプリケーションエンジンモジュール内でクラウドベースのクライアントアプリケーションと相互作用し、クラウドベースのクライアントアプリケーション(例えば、デジタルゲームのコンテキストでは、ゲームサーバおよび同等物)によってサポートされる、個別のアプリケーションエンジンモジュールおよびバックエンドアーキテクチャを使用して、相互に対して競合し、プレーし、または別様に関与または相互作用することができる。加えて、または代替として、個別の予約され、あてがわれたアプリケーションエンジンモジュール内でクラウドベースのクライアントアプリケーションと相互作用する、1人またはそれを上回るユーザが、そのクライアントデバイス上に、直接、インストールされ、ネイティブに、実行される(すなわち、アプリケーションエンジンモジュールを使用せずに)、クライアントアプリケーションと相互作用している、ユーザに対して競合し、プレーし、または別様に関与または相互作用することができる。その結果、本発明の実施形態は、ユーザが、そのクライアントデバイス148のために各または任意のユーザによって使用される、下層クライアントデバイス148およびオペレーティングプラットフォームから独立して、多種多様な異なるコンピューティングプラットフォームを横断して、相互に関与することを可能にすることができる。
【0040】
クライアントデバイス148は、ブラウザモジュール150を含むことができる。ブラウザモジュール150は、例えば、Google Chrome、Mozilla Firefox、MICROSOFT Edge、Apple Safari、DuckDuckGo、Opera、Brave、Vivaldi、Firefox Focus、専有ブラウザ、または同等物等の任意の好適なタイプのブラウザアプリケーションをサポートすることができる。加えて、または代替として、ブラウザモジュール150は、クラウドベースのクライアントアプリケーションをクライアントデバイス148からストリーミングされる(例えば、OpenGLまたは同等物を介して)、ビデオ/オーディオ情報のローカルレンダリングをサポートすることが可能な好適なアプリケーションであることができる。ある実施形態では、ブラウザモジュール150は、相互に通信する、ディスプレイモジュール152と、相互作用捕捉モジュール154と、セッション情報モジュール156とを含むことができる。ディスプレイモジュール152は、サーバシステム102上で実行される、対応するアプリケーションエンジンモジュール内で起動する、クラウドベースのクライアントアプリケーションからストリーミングされる、ビデオおよび/またはオーディオ情報の表示をサポートすることができる。ある実施形態では、アプリケーションエンジンモジュール内で起動する、クラウドベースのクライアントアプリケーションのビデオ/オーディオ出力は、リアルタイムで、インターネット(または他の好適なネットワーク)を介して、クライアントデバイス148上のブラウザモジュール150にストリーミングされ、ディスプレイモジュール152を介して、ユーザに表示されることができる。ディスプレイモジュール152は、ビデオ/オーディオ通信モジュール132を介してアプリケーションエンジンモジュールから出力される、ストリーミングされたビデオ/オーディオを受信し、それをクライアントデバイス148のディスプレイ画面上に適切にレンダリングすることができる。ユーザは、リアルタイムで、クラウドベースのクライアントアプリケーションのビデオ/オーディオストリームと相互作用することができる。本発明のいくつかの実装では、ユーザの入力は、相互作用捕捉モジュール154によって収集され、1つまたはそれを上回るシグナリング通信モジュール158(例えば、gRPCゲートウェイまたは同等物等の好適なデータおよびシグナリングチャネル)を介して、ユーザのアクティブセッションにあてがわれている、複数のアプリケーションエンジンモジュール106または206内のアプリケーションエンジンモジュールに通信される(インターネットまたは他の好適なネットワークを経由して)ことができる。ユーザの入力は、次いで、あてがわれたアプリケーションエンジンモジュールの状態モジュールによって、ビデオ/オーディオストリームにマッピングされ、ユーザが、リアルタイムで、クラウドベースのクライアントアプリケーションが、ネイティブに、クライアントデバイス148上で起動されているかのように、(遠隔で)クラウドベースのクライアントアプリケーションを制御し、それと相互作用することを可能にすることができる。
【0041】
ある実施形態では、ディスプレイモジュール152はまた、ユーザによる使用のために利用可能である、任意または全てのクラウドベースのクライアントアプリケーションの表示を提供することができる(例えば、ブラウザアプリケーション内のURLまたは他のリンクまたはハイパーリンクとして、クライアントデバイス148のユーザインターフェース内のデスクトップ上のリンクされたアイコンとして等)。相互作用捕捉モジュール154は、所望のクラウドベースのクライアントアプリケーションのユーザの選択を捕捉することができる(例えば、ユーザが、表示されるURL、リンク、ハイパーリンク、またはアイコンのうちの1つをクリックまたは別様に選択することによって)。いったんユーザが、所望のクラウドベースのクライアントアプリケーションを選択すると、セッション情報モジュール156は、要求をセッション管理コントローラ140に通信することによって、アクティブセッションを開始することができる(例えば、RESTコールまたは同等物を介して)。セッション管理コントローラ140は、次いで、上記に説明されるように、アクティブセッションのための適切なアプリケーションエンジンモジュールを予約するプロセスを開始することができる。セッション情報モジュール156は、アプリケーションエンジンモジュールが、アクティブセッションのために、予約され、あてがわれるまで、周期的に、セッション管理コントローラ140にポーリングする(例えば、RESTまたは同等物を介して)ことができる。代替として、セッション管理コントローラ140は、アプリケーションエンジンモジュールが、アクティブセッションのために、予約され、あてがわれると、好適なメッセージまたは通知をセッション情報モジュール156に伝送することができる。いったんアプリケーションエンジンモジュールが、予約され、ユーザのアクティブセッションにあてがわれると、クライアントデバイス148上のディスプレイモジュール152は、メディア(ビデオ/オーディオ)チャネルを通して(例えば、ビデオ/オーディオ通信モジュール132を介して)予約されたアプリケーションエンジンモジュールに接続し、ストリーミングされたビデオ/オーディオメディアデータをクラウドベースのクライアントアプリケーションから受信することを開始することができる。ユーザが、予約されたアプリケーションエンジンモジュール内で実行される、クラウドベースのクライアントアプリケーションからストリーミングされている、ビデオ/オーディオメディアデータと相互作用するにつれて、相互作用捕捉モジュール154は、シグナリング通信モジュール158を介して(例えば、webRTCシグナリング、OpenGL、または他の好適な技術を介して)、捕捉されたユーザ入力を予約されたアプリケーションエンジンモジュールに提供し、ユーザが、(遠隔で)クラウドベースのクライアントアプリケーションを制御し、それと相互作用することを可能にすることができる。
【0042】
図3は、本開示の実施形態による、クラウドベースのクライアントアプリケーションと遠隔で相互作用するための複数のアプリケーションエンジンモジュールプールと、複数のアプリケーションインスタンスプールとを伴う、例示的クラウドベースのクライアントアプリケーションプラットフォーム300を図示する、ブロック図である。上記に記載されるように、複数のアプリケーションエンジンモジュール206内のアプリケーションエンジンモジュールはそれぞれ、クラウドベースのクライアントアプリケーションを実行するために、特定のタイプおよび構成のクライアントデバイスをエミュレートするように構成されることができる。加えて、または代替として、サーバシステム102は、ネイティブに、サーバシステム102上のクラウド内で起動するように設計および構成され得る、クラウドベースのクライアントアプリケーションインスタンス(「アプリケーションインスタンス」とも称される)をサポートすることができる。したがって、アプリケーションインスタンスは、複数のアプリケーションエンジンモジュール206(または106)からのアプリケーションエンジンモジュールを使用せずに、ネイティブに、サーバシステム302上で起動するように構成され得る、クラウドベースのクライアントアプリケーションのインスタンスであることができる。故に、サーバシステム102は、モジュールコントローラ304を含むことができ、これは、図1および2のアプリケーションエンジンモジュールコントローラ104に関して議論および説明されるものに類似する様式において、動作することができる。モジュールコントローラ304は、複数のアプリケーションエンジンモジュール206を含み、任意の適切なタイプのクライアントデバイスをサポートおよびエミュレートし、任意の好適なタイプのクラウドベースのクライアントアプリケーション(図1および2に関して議論および説明されるような)および複数のアプリケーションインスタンスモジュール310を実行し、ネイティブに、サーバシステム102上で起動し得る、任意の適切なタイプのアプリケーションインスタンスをサポートおよび実行することができる。モジュールコントローラ304は、複数のアプリケーションエンジンモジュール206(および106)に関して説明されるものに類似する様式において、アプリケーションインスタンスモジュールの登録/登録解除、アプリケーションインスタンスモジュールのアトミック予約、アプリケーションインスタンスモジュールのクエリ、および同等物を可能にすることができる。複数のアプリケーションインスタンスモジュール310は、第1のアプリケーションインスタンスモジュール312、…、およびM番目のアプリケーションインスタンスモジュール320を含むことができ、Mは、任意の好適な自然数であることができ、経時的に変動し得る。各アプリケーションインスタンスモジュール312、…320は、アプリケーションインスタンスによって発生されたビデオおよび/またはオーディオメディアデータを管理し、ユーザへの表示のために、そのようなビデオおよび/またはオーディオメディアデータをクライアントデバイスに伝送するために、ビデオ/オーディオモジュールを含むことができる。各アプリケーションインスタンスモジュール312、…320はまた、ユーザがアプリケーションインスタンスと(遠隔で)相互作用する間に発生される、クライアントデバイス148からの入力(例えば、ビデオ/オーディオストリームへのマッピング入力等)を受信および処理するために、状態モジュールを含むことができる。各状態モジュールはまた、アプリケーションインスタンスの状態を維持することができる。例えば、第1のアプリケーションインスタンスモジュール312は、第1の状態モジュール316と通信する、第1のビデオ/オーディオモジュール314を含むことができる。M番目のアプリケーションインスタンスモジュール320は、M番目の状態モジュール324と通信する、M番目のビデオ/オーディオモジュール322を含むことができる。モジュールコントローラ304は、必要に応じて、任意の好適な数のアプリケーションインスタンスモジュールを維持し、アプリケーションインスタンスモジュールを登録(すなわち、インスタンス化、割り当て、または別様に生成)または登録解除(すなわち、削除または割り当て解除)することができる。ある実施形態では、サーバシステム102は、複数のモジュールコントローラ304を含むことができ、各モジュールコントローラ304は、個別の複数のアプリケーションエンジンモジュール206を管理し、アプリケーションエンジンモジュールクラスタおよび個別の複数のアプリケーションインスタンスモジュール310を形成し、アプリケーションインスタンスモジュールクラスタを形成する。サーバシステム102およびモジュールコントローラ304は、任意の好適な数および組み合わせのアプリケーションエンジンモジュールおよびアプリケーションインスタンスモジュールをサポートすることができる。
【0043】
図3に図示されるように、サーバシステム102は、モジュールコントローラ304と通信する、予約コントローラ328を含むことができ、これは、図1および2のアプリケーションエンジン予約コントローラ134に関して議論および説明されるものに類似する様式において、動作することができる。実施形態では、予約コントローラ134はまた、例えば、アプリケーションインスタンスモジュールスケーリングを連携させること、アプリケーションインスタンスモジュールアクセスを制御すること、ユーザのためのアプリケーションインスタンスモジュール初期化を管理すること、および同等物を含む、複数のアプリケーションインスタンスモジュール310の種々の側面を制御することができる。予約コントローラ328は、インベントリおよび予約モジュール330を含むことができ、これは、図1および2のアプリケーションエンジンインベントリおよび予約モジュール136に関して議論および説明されるものに類似する様式において、動作することができる。インベントリおよび予約モジュール330はまた、複数のアプリケーションインスタンスモジュール310内の全てのアプリケーションインスタンスモジュールのインベントリを追跡および管理することができる。インベントリおよび予約モジュール330は、アクティブセッションにおいて使用するためのアプリケーションインスタンスモジュール予約を付与することができる。本発明のいくつかの実装では、ユーザが、アプリケーションインスタンスモジュールとのアクティブセッションの開始を要求すると、インベントリおよび予約モジュール330は、適切なアプリケーションインスタンスモジュールを予約し、アプリケーションインスタンスモジュールに、適切なユーザおよび/またはアプリケーションデータ(例えば、アプリケーションインスタンスとのユーザ相互作用および関与をサポートするためのユーザプロファイル情報、ユーザアカウント情報、アプリケーションインスタンス状態データ等)を取り込み、または取り込ませ、予約されたアプリケーションインスタンスモジュールをそのアクティブセッションに結び付けることができる。アプリケーションインスタンスモジュールが、アクティブセッションのために利用可能ではない場合、インベントリおよび予約モジュール330は、モジュールコントローラ304に(例えば、下記に議論される、スケーラモジュール332を介して)、要求されるアクティブセッションにおいて使用するための新しいアプリケーションインスタンスモジュールを追加および登録するように命令することができる。本発明のいくつかの実装では、登録プロセスは、非同期して、実施されることができる。例えば、インベントリおよび予約モジュール330は、いったんタスクが完了されると、モジュールコントローラ304を周期的にポーリングする、または適切なメッセージをモジュールコントローラ304から受信することによって、新しいアプリケーションインスタンスモジュールが追加および予約されることを待機することができる。いったんアプリケーションインスタンスモジュールが、登録されると、これは、アクティブセッションのために予約され、それに結び付けられることができる。本発明のいくつかの実装では、アクティブセッションのために予約されている、アプリケーションインスタンスモジュールは、それを要求したユーザにのみ、かつアクティブセッションの存続期間にわたってのみ、アクセス可能であることができる。換言すると、特定のアクティブセッションにわたって予約されている、アプリケーションインスタンスモジュールは、そのアクティブセッションの間、別のユーザによって使用またはアクセスされ得ない。本発明のいくつかの実装では、アクティブセッションの間、予約されたアプリケーションインスタンスモジュール内に記憶される、または別様にそれによって使用される、データは、一時的であることができる。例えば、アプリケーションインスタンスモジュールは、アクティブセッションの終了時に、登録解除されることができる。故に、そのアクティブセッションの間、アプリケーションインスタンスモジュールによって記憶または別様に使用される、あらゆるデータは、例えば、アプリケーションインスタンスモジュールの登録解除までに、削除されることができる。代替実施形態では、アクティブセッションの間、予約されたアプリケーションインスタンスモジュール内に記憶される、または別様にそれによって使用される、データは、(例えば、データベース146内に)記憶され、読み出され、ユーザによって、後続アクティブセッション内において、かつそれとともに使用されることができる。いったんアプリケーションインスタンスモジュールが、登録解除されると、これは、別のアクティブセッションのために再使用されることができる、またはそのコンピューティングリソースは、異なるアプリケーションインスタンスモジュールに再割り当てされることができる。
【0044】
実施形態では、予約コントローラ328は、インベントリおよび予約モジュール330と通信する、スケーラモジュール332を含むことができ、これは、図1および2のアプリケーションエンジンスケーラモジュール138に関して議論および説明されるものに類似する様式において、動作することができる。スケーラモジュール332はまた、新しいアプリケーションインスタンスモジュールを複数のアプリケーションインスタンスモジュール310に追加およびインスタンス化することによって、インベントリおよび予約変化に応答することができる。スケーラモジュール332は、先を見越して、例えば、使用量傾向または他の好適なメトリックに基づいて、複数のアプリケーションインスタンスモジュール310内のアプリケーションインスタンスモジュールの数をスケーリングし、予約可能アプリケーションインスタンスモジュールの十分なサイズのプールを維持することができる。例えば、スケーラモジュール332は、複数のアプリケーションインスタンスモジュール310のプールのサイズに関する事前に決定された閾値(例えば、使用量傾向または他の適切なメトリックに基づいて、提供または発生される)を記憶することができる。予約可能アプリケーションインスタンスモジュールの数が、事前に決定された閾値を下回って減少する場合、スケーラモジュール332は、新しいアプリケーションインスタンスモジュールを複数のアプリケーションインスタンスモジュール310に追加し、予約可能アプリケーションインスタンスモジュールの数を事前に決定された閾値を上回るように増加させることができる。予約可能アプリケーションインスタンスモジュールの数の増加が、あまりに多くなる(例えば、第2の事前に決定された閾値を上回る)場合、スケーラモジュール332は、何もし得ないか、または必要とされない余剰アプリケーションインスタンスモジュールを複数のアプリケーションインスタンスモジュール310から削除または別様に割り当て解除し得るかのいずれかとなる。加えて、または代替として、好適な機械学習/人工知能技法が、スケーラモジュール332によって、またはそれとともに使用され、複数のアプリケーションインスタンスモジュール310内の予約可能アプリケーションインスタンスモジュールの数を適切かつ動的にスケーリングすることができる。例えば、機械学習モデルは、ユーザからの使用量データ(例えば、使用量傾向、ピーク使用量、ピーク時間外使用量等)に基づいて、訓練されることができる。機械学習モデルは、次いで、複数のアプリケーションインスタンスモジュール310内のアプリケーションインスタンスモジュールを動的に追加および削除/割り当て解除するために使用されることができる。機械学習モデルは、使用量データが経時的に進化するにつれて、更新または別様に適合されることができる。
【0045】
本発明のいくつかの実装では、複数のアプリケーションインスタンスモジュール310のそれぞれまたはいずれかは、例えば、インベントリおよび予約モジュール330および/またはスケーラモジュール332によって維持され得る、別個のアプリケーションインスタンスモジュールプールと関連付けられ、それと通信することができ、各アプリケーションインスタンスモジュールプールは、個々のタイプのアプリケーションインスタンスモジュールまたは関連タイプのアプリケーションインスタンスモジュールのセットをサポートする。そのような実施形態では、各アプリケーションインスタンスは、その独自の個々のアプリケーションインスタンスモジュールプールを有する、またはそれと関連付けられることができる。例えば、複数のアプリケーションインスタンスモジュールプールの各プールは、複数のアプリケーションインスタンスモジュールプールの各プールが、アプリケーションインスタンス毎ベースで割り当てされ得るように、単一クラウドベースのクライアントアプリケーションをサポートするように構成されることができる。例証目的のために、限定ではないが、ネイティブに、サーバシステム102上で起動されるように設計される、クロンダイクソリティアゲームは、第1のアプリケーションインスタンスモジュール312によってサポートされることができ、これは、第1のアプリケーションインスタンスモジュールの第1のアプリケーションインスタンスモジュールプール318と関連付けられることができる。ネイティブに、サーバシステム102上で起動されるように設計される、ビンゴゲームは、N番目のアプリケーションインスタンスモジュール320によってサポートされることができ、これは、N番目のアプリケーションインスタンスモジュールのN番目のアプリケーションインスタンスモジュールプール326と関連付けられることができる等となる。任意の好適な数のアプリケーションインスタンスモジュールプールが、例えば、システムまたはその任意の適切なサブセットによってサポートされる、アプリケーションインスタンスの数に応じて、例えば、インベントリおよび予約モジュール330および/またはスケーラモジュール332によって、任意の適切な数のアプリケーションインスタンスモジュールのために維持およびサポートされることができる。
【0046】
本発明のいくつかの実装では、複数のアプリケーションインスタンスモジュールプールの各プール内のアプリケーションインスタンスモジュールのそれぞれまたはいずれかは、「事前にウォームアップされる」ことができる。例えば、複数のアプリケーションインスタンスモジュールプールの各プール内のアプリケーションインスタンスモジュールは、アプリケーションインスタンスモジュールプール内で事前に割り当ておよび事前にインスタンス化され、次いで、例えば、インベントリおよび予約モジュール330および/またはスケーラモジュール332によって、スタンバイまたはスリープモードに置かれることができる。各アプリケーションインスタンスモジュールプール内のアプリケーションインスタンスモジュールをバックグラウンドでスピンアップし、それらのスピンアップされたアプリケーションインスタンスモジュールをスタンバイモードに維持することによって、アプリケーションインスタンスモジュールは、スタンバイモードにある、アプリケーションインスタンスモジュールをウェイクアップすることが、アプリケーションインスタンスモジュールを最初からインスタンス化するよりも実質的に時間がかかり得ないため、殆どまたは全く付随する遅延を伴わずに、アクティブセッションの要求に応じて、直ちに(またはほぼ直ちに)、予約され、ユーザにあてがわれることができる。いったんアプリケーションインスタンスモジュールプール内のアプリケーションインスタンスモジュールが、予約され、あてがわれると、予約され、あてがわれたアプリケーションインスタンスモジュールは、アクティブセッションを要求する次のユーザによる即座(またはほぼ即座)の予約およびそれへのあてがいの準備ができ得るように、直ちに(またはほぼ直ちに)、対応するアプリケーションインスタンスモジュールプールからの別の「事前にウォームアップされた」アプリケーションインスタンスモジュールによって置き換えられることができる。そのような「事前にウォームアップされた」置き換えプロセスは、アプリケーションインスタンスモジュールプール内の各アプリケーションインスタンスモジュールが、予約され、あてがわれるため、継続することができる。そのような様式において、複数のアプリケーションインスタンスモジュールプールの各プールからのアプリケーションインスタンスモジュールが、リアルタイムで、ユーザに割り当てされることができる。アクティブセッションのために予約されたアプリケーションインスタンスモジュールに割り当てされる、コンピューティングリソースは、いったんアクティブセッションが、終了し、予約されたアプリケーションインスタンスモジュールが、もはやそのアクティブセッションのために必要とされなくなると、直ちに(またはほぼ直ちに)、削除または別様に割り当て解除されることができる。本発明のいくつかの実装では、そのような解放されたコンピューティングリソースは、もはや非アクティブセッションのために必要とされない、予約されたアプリケーションインスタンスモジュールのためにコンピューティングリソースを維持するのではなく、例えば、インベントリおよび予約モジュール330および/またはスケーラモジュール332によって再割り当てされ、関連付けられるアプリケーションインスタンスモジュールプールまたは異なるアプリケーションインスタンスモジュールプール内に別のアプリケーションインスタンスモジュールを追加し、事前にウォームアップすることができる。
【0047】
複数のアプリケーションインスタンスモジュールプールのそれぞれまたはいずれかのサイズは、固定または動的であることができる。例えば、アプリケーションインスタンスモジュールプールのサイズは、事前にウォームアップされるアプリケーションインスタンスモジュールの事前に決定されたアプリケーションインスタンスモジュールプールサイズ数が、プール内で維持され得るように、固定されることができる。アプリケーションインスタンスモジュールプール内の事前にウォームアップされたアプリケーションインスタンスモジュールが、割り当てされるにつれて、インベントリおよび予約モジュール330および/またはスケーラモジュール332は、割り当てされたアプリケーションインスタンスモジュールと付加的事前にウォームアップされたアプリケーションインスタンスモジュールを置き換え、アプリケーションインスタンスモジュールプールのサイズを事前に決定されたアプリケーションインスタンスモジュールプールサイズ数またはそのおおよその数に維持することができる。事前に決定されたアプリケーションインスタンスモジュールプールサイズ数は、例えば、特定のアプリケーションインスタンスモジュールに関する使用量傾向、または他の履歴使用量情報、および同等物に基づくことができる。故に、高度に使用されるアプリケーションインスタンスモジュールは、より多くの事前に決定されたアプリケーションインスタンスモジュールプールサイズ数を有することができる一方、あまり使用されないアプリケーションインスタンスモジュールは、より少ない事前に決定されたアプリケーションインスタンスプールサイズ数を有することができる。
【0048】
加えて、または代替として、アプリケーションインスタンスモジュールプールのサイズは、動的であることができる。本発明のいくつかの実装では、インベントリおよび予約モジュール330および/またはスケーラモジュール332は、リアルタイムで、複数のアプリケーションインスタンスモジュール310のそれぞれまたはいずれかの使用量傾向を監視することができる。例えば、使用量傾向が、特定のアプリケーションインスタンスモジュールに関して増加するにつれて、スケーラモジュール332は、アプリケーションインスタンスモジュール割り当てが、追加される遅延を伴わずに、リアルタイムで継続し得るように、関連付けられるアプリケーションインスタンスモジュールプールのサイズ(したがって、アプリケーションインスタンスモジュールプール内に維持される、事前にウォームアップされるアプリケーションインスタンスモジュールの数)を増加させ、より多くの使用量に適応することができる。逆に言えば、使用量傾向が、特定のアプリケーションインスタンスモジュールに関して減少するにつれて、スケーラモジュール332は、コンピューティングリソースが、不必要に酷使されず、いずれかの場所に割り当てされ得るように、関連付けられるアプリケーションインスタンスモジュールプールのサイズ(したがって、アプリケーションインスタンスモジュールプール内に維持される、事前にウォームアップされるアプリケーションインスタンスモジュールの数)を減少させ、より少ない使用量に適応することができる。そのような実施形態では、アプリケーションインスタンスモジュールプールのそれぞれまたはいずれかのサイズは、動的に改変され、増加された使用量(例えば、使用量におけるスパイク)および使用量における小閑の周期に適応し、アプリケーションインスタンスモジュールのリアルタイム割り当てを維持することができる。
【0049】
本発明のいくつかの実装では、インベントリおよび予約モジュール330および/またはスケーラモジュール332は、好適な予測モデルを含み、または適切な機械学習/人工知能技法を使用して、複数のアプリケーションインスタンスモジュールプールのアプリケーションインスタンスモジュールプールのサイズを決定することができる。例えば、機械学習モデルは、サポートされるアプリケーションインスタンスモジュール毎に、使用量傾向データに基づいて、訓練され、アプリケーションインスタンスモジュールのためのアプリケーションインスタンスモジュールプールサイズを修正し、アプリケーションインスタンスモジュールを割り当てするための時間量を最小限にし、リアルタイムアプリケーションインスタンスモジュール割り当てのための低減された割り当て時間を維持することができる。機械学習モデルは、次いで、そのアプリケーションインスタンスモジュールのために特定の時間に呈された使用量に基づいて、アプリケーションインスタンスモジュールと関連付けられる、アプリケーションインスタンスモジュールプールのサイズを動的および適切に修正するために使用されることができる。機械学習モデルは、アプリケーションインスタンスモジュールのための使用量傾向が、例えば、インベントリおよび予約モジュール330および/またはスケーラモジュール332によって監視されるように、経時的に変化および進化するにつれて、更新または別様に適合されることができる。本発明のいくつかの実装では、複数のアプリケーションインスタンスモジュールプールのサブセット内の各アプリケーションインスタンスモジュールプールのサイズは、固定されることができる一方、複数のアプリケーションインスタンスモジュールプール内の他のアプリケーションインスタンスモジュールプールのサイズは、動的であることができる。例えば、高度に使用される、アプリケーションインスタンスモジュールは、そのサイズが動的である、アプリケーションインスタンスモジュールプールと関連付けられることができる一方、あまり使用されない、アプリケーションインスタンスモジュールは、そのサイズが固定される、アプリケーションインスタンスモジュールプールと関連付けられることができる。加えて、または代替として、特定のアプリケーションインスタンスモジュールプールのサイズは、ある時間では、固定され、他の時間では、動的であることができる。例えば、概して、より低い使用量を被る、アプリケーションインスタンスモジュールに関して、対応するアプリケーションインスタンスモジュールプールのサイズは、固定されることができる。しかしながら、より高い使用量(例えば、使用量スパイク)の(例えば、断続)周期の間、対応するアプリケーションインスタンスモジュールプールのサイズは、動的であることができる。インベントリおよび予約モジュール330および/またはスケーラモジュール332は、アプリケーションインスタンスモジュールプールのサイズを、いったんより高い使用量の周期が終了すると、固定された状態に戻るように切り替えることができる。このように、インベントリおよび予約モジュール330および/またはスケーラモジュール332は、アプリケーションインスタンスモジュールのリアルタイム割り当てのための低減された割り当て時間を維持するために、必要に応じて、使用量条件を変化させるように適合することができる。
【0050】
本発明のいくつかの実装では、1つまたはそれを上回るアプリケーションインスタンスモジュールプールは、図3に図示されるように、複数のアプリケーションインスタンスモジュール310内に、かつそれとともに維持されることができる。しかしながら、本発明のいくつかの実装では、1つまたはそれを上回るアプリケーションインスタンスモジュールプールのそれぞれまたはいずれかは、複数のアプリケーションインスタンスモジュール310の外側にあるが、サーバシステム102内にある、モジュールコントローラ304内に、かつそれとともに維持されることができる。加えて、または代替として、1つまたはそれを上回るアプリケーションインスタンスモジュールプールのそれぞれまたはいずれかは、サーバシステム102内またはそれとともにであるが、モジュールコントローラ304の外側、例えば、データベース146内等に維持されることができる。加えて、または代替として、1つまたはそれを上回るアプリケーションインスタンスモジュールプールのそれぞれまたはいずれかは、サーバシステム102から遠隔にあって、それと通信する、好適なクラウドまたはサーバ記憶システム内またはそれとともに維持されることができる。
【0051】
本発明のいくつかの実装では、予約され、あてがわれたアプリケーションエンジンモジュールおよび/または予約され、あてがわれたアプリケーションインスタンスモジュールはそれぞれ、アクティブセッションの間、予約され、あてがわれたアプリケーションエンジンモジュールおよび/または予約され、あてがわれたアプリケーションインスタンスモジュールを一意に識別する、異なる一意のモジュール識別(ID)番号または他の好適な識別子(例えば、数値または英数字文字または同等物から成る)と関連付けられることができる。モジュールID番号は、例えば、セッション管理コントローラ140によって、アクティブセッションの間、予約され、あてがわれたアプリケーションエンジンモジュールおよび/または予約され、あてがわれたアプリケーションインスタンスモジュールを追跡および管理するために、アクティブセッションの間、クライアントデバイス148からの通信が、正しいアプリケーションエンジンモジュールまたはアプリケーションインスタンスモジュールに、およびその逆に、アドレス指定および自動転送されることを確実にするために、および同等物のために、使用されることができる。ある実施形態では、アクティブセッションが、完了されると、セッション情報モジュール156は、セッション管理コントローラ140が、アクティブセッションから接続解除し、アクティブセッションの間に使用される、アプリケーションエンジンモジュールまたはアプリケーションインスタンスモジュールを登録解除し得るように、適切なメッセージをセッション管理コントローラ140に送信することができる。本発明のいくつかの実装では、そのアクティブセッションの間、登録されたアプリケーションエンジンモジュールまたは登録されたアプリケーションインスタンスモジュールによって記憶または別様に使用される、あらゆるデータは、アプリケーションエンジンモジュールまたはアプリケーションインスタンスモジュールの登録解除に応じて、削除されることができる。代替実施形態では、アクティブセッションの間、予約されたアプリケーションエンジンモジュールまたは予約されたアプリケーションインスタンスモジュール内に記憶される、または別様にそれによって使用される、データは、記憶され(例えば、データベース146内に)、読み出され、ユーザによって、後続アクティブセッションにおいて使用されることができる。いったんアプリケーションエンジンモジュールまたはアプリケーションインスタンスモジュールが、登録解除されると、これは、別のアクティブセッションのために再使用されることができる、またはそのコンピューティングリソースは、異なるアプリケーションエンジンモジュールまたはアプリケーションインスタンスモジュールに再割り当てされることができる。
【0052】
本発明のいくつかの実装では、クラウドベースのクライアントアプリケーション(アプリケーションエンジンモジュールまたはアプリケーションインスタンスモジュールのいずれかにおいて実行される)は、アクティブセッションの間、一時停止されることができる。例えば、ユーザは、クラウドベースのクライアントアプリケーションとのアクティブセッションの間、任意の特定または所望の位置、点、または時間において、クラウドベースのクライアントアプリケーションを一時停止することができる(例えば、ブラウザアプリケーション内またはそれとともにユーザに表示される、好適な「一時停止」ボタンを押下することによって)。加えて、または代替として、クラウドベースのクライアントアプリケーションは、ブラウザモジュール150とサーバシステム102との間の接続が、アクティブセッションの間、中断または喪失される場合、一時停止されることができる。加えて、または代替として、クラウドベースのクライアントアプリケーションは、ユーザが、アクティブセッションを終了する(例えば、ブラウザ「戻る」ボタンを押下する、またはブラウザアプリケーションを閉じることによって)場合、一時停止されることができる。本発明のいくつかの実装では、1つまたはそれを上回る好適なクッキーが、クライアントデバイス148上に記憶される(例えば、ブラウザモジュール150内に、またはそれと関連付けられる)ことができ、そのブラウザモジュール150は、ユーザのための任意のアクティブセッションが存在するかどうかを決定するようにチェックすることができる。そのような情報は、セッション情報モジュール156を介して、セッション管理コントローラ140に通信されることができる。クラウドベースのクライアントアプリケーションとのユーザの相互作用は、一時停止された点において、再開することができる。いったん接続が、再確立される、またはユーザが、アクティブセッションに戻る(例えば、ブラウザ内またはそれとともにユーザに表示される、好適な「再生」ボタンを押下する、「自動転送」ボタンを押下する、またはブラウザアプリケーションを再び開くことによって)。ある実施形態では、アクティブセッションは、アクティブセッションが、一時停止される間、またはユーザが、アクティブセッションから退出する、またはそこから接続解除する場合、事前に決定された時間周期(例えば、1時間、2時間、1日等)にわたって、オープンのまま保持される、または別様に維持されることができる。事前に決定された時間周期が、満了した後、アクティブセッションは、終了されることができ、アプリケーションエンジンモジュールまたはアプリケーションインスタンスモジュールは、登録解除されることができる。ユーザが、事前に決定された時間周期の満了前に、アクティブセッションを継続することを所望する場合、ユーザは、例えば、「再生」ボタンを押下する、ブラウザアプリケーション内のウェブページをリフレッシュする、またはオリジナルアクティブセッションを開始し、以前にあてがわれ、予約されたアプリケーションエンジンモジュールまたはアプリケーションインスタンスモジュールに再び加わるために使用される、同一URL、リンク、またはハイパーリンクを選択することができる。本発明のいくつかの実装では、アクティブセッションは、ユーザが、アクティブセッションから退出する、または別様にそれを終了するまで、無限にオープンのまま保持または別様に維持されることができる。
【0053】
そのような一時停止の間、予約されたアプリケーションエンジンモジュールまたは予約されたアプリケーションインスタンスモジュールおよびクラウドベースのクライアントアプリケーションの状態を維持することによって、本発明のいくつかの実装は、ユーザが、1つのクライアントデバイス148上でアクティブセッションを開始し、特定または所望の位置、点、または時間において、アクティブセッションを一時停止し、次いで、1つまたはそれを上回る他の(異なる)クライアントデバイス148上で、一時停止された位置、点、または時間から、アクティブセッションを継続することを可能にすることができる。例証目的のために、限定ではないが、ユーザは、アクティブセッションを第1のクライアントデバイス148(例えば、スマートフォン)上で開始することを要求することができる。ユーザは、次いで、特定または所望の位置、点、または時間において、アクティブセッションを一時停止することができる(例えば、スマートフォン上のブラウザアプリケーションを閉じることによって)。クラウドベースのクライアントアプリケーションの状態は、そのアクティブセッションのためにあてがわれ、登録される、アプリケーションエンジンモジュールまたはアプリケーションインスタンスモジュールの状態モジュール内に保存されることができる。ユーザは、次いで、第2のクライアントデバイス148(例えば、デスクトップコンピュータ)に切り替え、オリジナルアクティブセッションを第1のクライアントデバイス148上で開始するために使用された、同一URL、リンク、またはハイパーリンクを選択することができる(第2のクライアントデバイス148上で起動する、ブラウザモジュール150内のディスプレイモジュール152を通して)。そのようなアクションは、アクティブセッションを第2のクライアントデバイス148のブラウザモジュール150内で再開させることができる。したがって、ユーザは、第1のクライアントデバイス148からの同一位置、点、または時間において一時停止された、クラウドベースのクライアントアプリケーションのアクティブセッションの同一デジタルページを提示されることができる。ユーザは、ユーザが、第1のクライアントデバイス148上でクラウドベースのクライアントアプリケーションと相互作用し続けているかのように、同一または類似様式において、一時停止された位置、点、または時間から、第2のクライアントデバイス148を介して、同一クラウドベースのクライアントアプリケーションとシームレスに相互作用し続けることができる(例えば、ブラウザアプリケーション内の適切な「再生」ボタンを押下することによって)。そのようなプラットフォーム切替をサポートするために、セッション管理コントローラ140は、モジュールIDに加え、ユーザを一意に識別する、ユーザIDまたは他の適切な識別子を維持することができる。ユーザIDおよびモジュールIDの両方を、ユーザからのクラウドベースのクライアントアプリケーション選択(第2のクライアントデバイス148から受信される)およびクラウドベースのクライアントアプリケーションの保存された状態と組み合わせて使用して、セッション管理コントローラ140は、正しい(一時停止された)アプリケーションエンジンモジュールまたはアプリケーションインスタンスモジュールを識別し、第2のクライアントデバイス148に再びあてがい、ユーザが、第1のクライアントデバイス148上で一時停止された、同一位置、点または時間から、アクティブセッションを第2のクライアントデバイス148上で継続することを可能にすることができる。代替実施形態では、ユーザが、第2のクライアントデバイス148上で、同一クラウドベースのクライアントアプリケーションを同一URL、リンク、またはハイパーリンクから選択する場合、ユーザは、同一の一時停止された位置、点、または時間から、クラウドベースのクライアントアプリケーションの同一アクティブセッションを継続するか、またはクラウドベースのクライアントアプリケーションとの新しいアクティブセッションを開始するかのいずれかの選択肢を提示されることができる。
【0054】
アクティブセッションの間、停電またはアプリケーションエンジンモジュールまたはアプリケーションインスタンスモジュールのクラッシュの場合、セッション管理コントローラ140は、新しいアプリケーションエンジンモジュールまたは新しいアプリケーションインスタンスモジュールを予約し(停電またはクラッシュ前に、アクティブセッションのために使用されていたものに応じて)、ユーザに割り当てすることができる。アプリケーションエンジンモジュールまたはアプリケーションインスタンスモジュール内で起動する、クラウドベースのクライアントアプリケーションは、前のアクティブセッションからの情報を取り込まれ(例えば、データベース146から読み出されたクラウドベースのクライアントアプリケーション状態および他のセッション情報を使用して)、アクティブセッションが単に一時停止されたようにユーザに現れるように、停電またはクラッシュ直前の時間におけるクラウドベースのクライアントアプリケーションの状態を反映させることができる。ユーザは、次いで、前述の様式において、アクティブセッションに戻り、再関与することができる。
【0055】
本発明のいくつかの実装では、セッション管理コントローラ140(例えば、セッションマネージャモジュール142を介して)は、ブラウザモジュール150(例えば、ディスプレイモジュール152または相互作用捕捉モジュール154の一方または両方を介して)と併せて動作し、アクティブセッションの間、クライアントデバイス148とサーバシステム102との間の通信のネットワーク待ち時間情報または他の好適な特性を測定および監視し、そのようなネットワーク待ち時間情報をセッション管理コントローラ140に通信することができる(例えば、セッション情報モジュール156を介して)。ネットワーク待ち時間情報は、セッション管理コントローラ140によって、ネットワーク待ち時間が、事前に決定された、または動的である、ある閾値(例えば、ネットワーク待ち時間傾向、使用量傾向等に基づく)を上回る場合、一時的に、アクティブセッションを一時停止し、次いで、いったんネットワーク待ち時間が閾値を下回ると、アクティブセッションを再開するために使用されることができる。加えて、または代替として、ネットワーク待ち時間情報は、サーバシステム102(例えば、ビデオ/オーディオ通信モジュール132を介して)によって、ネットワーク接続品質管理のために使用されることができる。例えば、ビデオ/オーディオ通信モジュール132は、ネットワーク待ち時間情報を使用して、クライアントデバイス148へのネットワーク接続品質を決定することができる。ネットワーク接続品質が、事前に決定された、または動的である、閾値(例えば、ネットワーク待ち時間傾向、使用量傾向等に基づく)を下回る場合、ビデオ/オーディオ通信モジュール132は、クライアントデバイス148にストリーミングされている、ビデオ/オーディオメディアデータの品質および/または特性を修正することができる。例えば、ネットワーク接続品質が、閾値を下回る場合、ビデオ/オーディオ通信モジュール132は、アクティブセッションが一時停止または別様に中断される必要がないように、アクティブセッションの間、クライアントデバイス148上のクラウドベースのクライアントアプリケーションのために、平滑表示および相互作用を維持するように、ストリーミングされるビデオ/オーディオメディアデータのフレームレートを低下させる、分解能を低下させる、および同等物を行うことができる(例えば、クラウドベースのモバイルゲームのコンテキストでは、クライアントデバイス148上での平滑ゲームプレーを維持するために)。ビデオ/オーディオ通信モジュール132は、アクティブセッション全体を通して、周期的または持続的に、ビデオ/オーディオメディアデータのストリームの品質および/または特性を更新する(例えば、ネットワーク接続品質がアクティブセッションの過程にわたって変動するにつれて、ビデオ/オーディオメディアデータストリームのフレームレート、分解能等を低下および/または上昇させる)ことができる。その結果、サーバシステム102は、ネットワーク待ち時間情報を使用して、クライアントデバイス148へのビデオ/オーディオストリーミング品質を決定する、変動させる、および制御し、ユーザのために、クラウドベースのクライアントアプリケーションのための平滑表示および相互作用を維持することができる。
【0056】
加えて、または代替として、ネットワーク待ち時間情報は、セッション管理コントローラ140によって、ユーザのための適切なアプリケーションエンジンモジュールまたはアプリケーションインスタンスモジュールを決定および選択するために使用されることができる。例えば、本発明のいくつかの実装では、サーバシステム102は、複数のアプリケーションエンジンモジュールコントローラ104を含むことができ、各アプリケーションエンジンモジュールコントローラ104は、図1および2に関して図示および議論されるように、個別の複数のアプリケーションエンジンモジュール106を管理し、1つまたはそれを上回るアプリケーションエンジンモジュールクラスタを形成する。本発明のいくつかの実装では、サーバシステム102は、図3に関して図示および議論されるように、複数のモジュールコントローラ304を含むことができ、各モジュールコントローラ304は、個別の複数のアプリケーションエンジンモジュール206を管理し、1つまたはそれを上回るアプリケーションエンジンモジュールクラスタを形成し、および/または個別の複数のアプリケーションインスタンスモジュール310を管理し、1つまたはそれを上回るアプリケーションインスタンスモジュールクラスタを形成する。アプリケーションエンジンモジュールクラスタおよび/またはアプリケーションインスタンスモジュールクラスタは、個別の複数のアプリケーションエンジンモジュール106または206および/または個別の複数のアプリケーションインスタンスモジュール310がそれぞれ、異なる地理的場所に位置し得るように、地理的に分散されることができる。ユーザが、クラウドベースのクライアントアプリケーションとのアクティブセッションを要求すると、ネットワーク待ち時間情報は、セッション管理コントローラ140によって、ユーザのクライアントデバイス148に対して、地理的に最近接する、または別様に最小ネットワーク待ち時間を有する、アプリケーションエンジンモジュールまたはアプリケーションインスタンスモジュールを予約させ、あてがうために使用されることができる。全てのクライアントデバイス148に関するネットワーク待ち時間情報を測定および監視することによって、サーバシステム102は、個別のアクティブセッションの間、クライアントデバイス148上のクラウドベースのクライアントアプリケーションのための平滑表示および相互作用を維持するように、最適アプリケーションエンジンモジュールまたは最適アプリケーションインスタンスモジュール(例えば、ネットワーク待ち時間またはネットワーク接続品質の観点から最適である)を予約し、各ユーザにあてがうために使用され得る、クラウドベースのクライアントアプリケーションプラットフォーム100、200、または300全体を通して、ネットワーク待ち時間のヒートマップまたは同等物を生成することができる。
【0057】
実施形態によると、クラウドベースのクライアントアプリケーションが、サーバシステム102内で遠隔で起動され得、任意の好適なクライアントデバイス148上に表示され得るため、本発明はまた、クラウドベースのクライアントアプリケーションが、1つまたはそれを上回るクラウドベースのクライアントアプリケーションへのURLまたはリンクまたはハイパーリンクを第三者プラットフォームの中に埋め込む、または別様に提供することによって、第三者ウェブサイトおよびアプリケーションを含む、第三者プラットフォームの中に統合されることを可能にすることができる。そのような統合は、それらの第三者が、統合されたクラウドベースのクライアントアプリケーションを介して、それらの第三者プラットフォームとの相互作用および関与を補完および向上させる、異なる特徴および機能性をより容易にもたらすことを可能にすることができる。例証目的のために、限定ではないが、小売店は、URLまたは他のリンクまたはハイパーリンクをクラウドベースのクライアントアプリケーションに埋め込む、または別様に提供することによって、任意の好適なクラウドベースのクライアントアプリケーションをそれらの消費者接点内に組み込むことができる。例えば、小売店は、本発明の実施形態によると、クラウドベースのモバイルゲームを小売店のウェブサイトまたはアプリケーションの中に組み込むことができる。ユーザは、本明細書に説明される様式において、クラウドベースのモバイルゲームが、ユーザのクライアントデバイス上で実行されているかのように、小売店のウェブサイトまたはアプリケーション内のクラウドベースのモバイルゲームと相互作用することができる。ユーザが、統合されたクラウドベースのモバイルゲームで勝利する場合、ユーザは、小売店自体の通貨における賞品(例えば、ポイント報酬、クーポン、製品/サービスにおけるディスカウント、無料商品等)を授与されることができる。賞品情報は、第三者プラットフォームに統合されたクラウドベースのモバイルゲームから通信され(例えば、サーバシステム102を介して)、ユーザによる使用のために、小売店のウェブサイトまたはアプリケーション内に維持されることができる。例えば、ファストフードレストランは、本発明の実施形態によると、クラウドベースのモバイルゲームをそれらのウェブサイトまたはアプリケーションの中に統合することができる。ユーザは、例えば、適切な内蔵または別様に提供されるURLまたは他のリンクまたはハイパーリンクをクラウドベースのモバイルゲームを選択し、次いで、クラウドベースのモバイルゲームと(遠隔で)相互作用することによって、ウェブサイトまたはアプリケーションを介して、統合されたクラウドベースのモバイルゲームを選択し、それに関与することができる。ユーザが、統合されたクラウドベースのモバイルゲームに勝利する場合、ユーザは、ファストフードレストランにおいて引き換えられ得る、食品の無料の追加注文(または小売店にとって適切な他の好適な賞品または提案)を授与されることができる。ユーザが、敗北する場合、ユーザは、再び競合することを可能にされる、より安価な賞品を提案される、プレーするための別の機会を提案される等となることができる。本発明は、任意の適切な第三者プラットフォームの中への任意の好適なタイプのクラウドベースのクライアントアプリケーションの統合をサポートすることができる。こユーザが、本発明に従って、第三者のウェブサイトまたはアプリケーションの中に、かつそれを通して統合される、クラウドベースのクライアントアプリケーションと相互作用するとを可能にすることによって、第三者は、ユーザがクラウドベースのクライアントアプリケーションをそれらのクライアントデバイス148にダウンロードおよびインストールすることを要求せずに、それらのプラットフォームとのユーザ関与メトリックを増加させることができる。
【0058】
1つまたはそれを上回るクラウドベースのクライアントアプリケーションを第三者のプラットフォームの中に統合することによって、クラウドベースのクライアントアプリケーションの非統合されたバージョンにアクセスする、または異なるウェブサイトまたはアプリケーションからそれにアクセスする、一般的母集団に利用可能ではあり得ない、明確に異なる体験が、第三者プラットフォーム上でユーザのために調整されることができる。例えば、第三者プラットフォーム上の統合されたクラウドベースのクライアントアプリケーションは、統合されたクラウドベースのクライアントアプリケーションのユーザに利用可能である、特徴、機能性、インターフェース修正、および同等物を提供することができる。例えば、統合されたクラウドベースのクライアントアプリケーションが、クラウドベースのモバイルゲームである場合、統合されたクラウドベースのモバイルゲームと相互作用する、ユーザは、クラウドベースのモバイルゲームの一般的ユーザに利用不可能である、特別または宣伝トーナメントへのアクセスを有することができる。加えて、または代替として、統合されたクラウドベースのクライアントアプリケーションと相互作用する、ユーザは、クラウドベースのクライアントアプリケーションの一般的ユーザに利用不可能である、特別期間限定提案(LTO)、広告、または他の宣伝を提示されることができる。加えて、または代替として、統合されたクラウドベースのクライアントアプリケーションと相互作用する、ユーザは、クラウドベースのクライアントアプリケーションの一般的ユーザに利用不可能である、修正または向上されたユーザインターフェース(例えば、異なる画面、カスタマイズ、第三者ブランド情報等)を提示されることができる。第三者プラットフォームをサポートするための統合されたクラウドベースのクライアントアプリケーションのユーザ体験への他の修正(統合されたクラウドベースのクライアントアプリケーションの内側および/または外側のグラフィカルユーザインターフェースへの修正を含む)も、可能性として考えられる。
【0059】
本発明のいくつかの実装では、統合されたクラウドベースのクライアントアプリケーションと相互作用する、ユーザから収集されたデータはまた、加えて、または代替として、統合されたクラウドベースのクライアントアプリケーションのユーザ体験を調整するために使用されることができる。ある実施形態では、第三者プラットフォーム上の統合されたクラウドベースのクライアントアプリケーションの特徴、機能性、および能力は、第三者プラットフォームユーザデータ、ユーザのクライアントデバイス148からの、またはそれと関連付けられる、データ、および同等物に基づいて、個々のユーザに標的化されることができる。例えば、サーバシステム102は、クライアントデバイス148のGPS(例えば、セッション情報モジュール156を介して、セッション管理コントローラ140に通過される)を介して、ユーザのアカウントプロファイル情報から(例えば、データベース146から読み出される)、または同等物等によって、各ユーザの地理的場所を識別することができる。統合されたクラウドベースのクライアントアプリケーションに1つの地理的場所(例えば、第1の州または領域)からアクセスする、ユーザは、統合されたクラウドベースのクライアントアプリケーションに異なる地理的場所(例えば、異なる州または領域)からアクセスする、そのユーザと異なる、ユーザ体験を提示されることができる。異なるユーザ体験は、例えば、異なるユーザインターフェース、異なるトーナメント(例えば、クラウドベースのモバイルゲームのコンテキストでは)、異なる特徴および機能性、および同等物を含むことができる。例えば、統合されたクラウドベースのクライアントアプリケーションが、クラウドベースのモバイルゲームである場合、ユーザデータは、統合されたクラウドベースのモバイルゲームのためのプレーヤをマッチングさせるために使用されることができる。例えば、競合的技能ベースの統合されたクラウドベースのモバイルゲームに関して、ユーザ情報が、ユーザと、(非統合された)クラウドベースのモバイルゲームの一般的母集団からのユーザとではなく、統合されたクラウドベースのモバイルゲームと相互作用する、他のユーザをマッチングさせるために使用されることができる。そのようなプレーヤマッチングは、統合されたクラウドベースのモバイルゲームのユーザが、(非統合された)クラウドベースのモバイルゲームのユーザの一般的母集団に利用不可能である、特徴および機能性へのアクセスを有し得るため、競合における公平性を確実にし、および/または詐欺防止/不正防止手段を施行することを補助することができる。
【0060】
本発明のいくつかの実装は、クラウドベースのクライアントアプリケーションをオンラインまたはデジタル広告の中に統合するために使用されることができる。例証目的のために、限定ではないが、クラウドベースのモバイルゲームは、デジタル広告の中に統合され、再生可能広告等の双方向広告ユニットを生成することができる。本発明のいくつかの実装では、統合されたクラウドベースのモバイルゲームは、ユーザに、再生可能広告内に内蔵または別様に提供される、URL、リンク、またはハイパーリンクをクリックさせることによって、再生可能広告からアクセスされることができる。代替として、クラウドベースのモバイルゲームは、ユーザへの再生可能広告の表面化、提示、または表示に応じて、再生可能広告内で自動的に開始することができる。ユーザは、デジタル広告キャンペーンの一部として、再生可能広告内かつそれを通して、統合されたクラウドベースのモバイルゲームと相互作用し、例えば、賞品、宣伝、および他の同様の報酬を獲得することができる。ある実施形態では、そのような報酬は、クラウドベースのモバイルゲーム自体(例えば、仮想通貨または報酬)が、再生可能広告と相互作用するようにユーザを動機付けるために使用され得る。例えば、ユーザは、再生可能広告と相互作用しながら、アプリ内購入を行うために、またはクラウドベースのモバイルゲーム自体内での他のタイプの引換または購入のために、そのような報酬を使用することができる。代替実施形態では、そのような報酬は、デジタル広告キャンペーンと関連付けられる、別のアプリケーションまたはウェブサイトのために、またはそれとともに使用され、ユーザ関与を促すことができる。しかしながら、任意の好適なクラウドベースのクライアントアプリケーションは、デジタル広告の中に統合され、双方向広告ユニットを生成することができる。例えば、クラウドベースのクライアントアプリケーション製品のための双方向広告ユニットまたは他のデジタル広告は、双方向広告ユニットまたは他のデジタル広告の中に統合される、クラウドベースのクライアントアプリケーション製品の試験バージョン(またはさらに、完全に有効にされるが、時間が限定されたバージョン)を含むことができる。その結果、ユーザは、評価前に、それをダウンロードおよびインストールすることを待機する、または別様にそれを購入することを必要とせずに、クラウドベースのクライアントアプリケーション製品に関与し、それを評価することができる(例えば、双方向広告ユニットまたは他のデジタル広告内で、およびそれを通して)。
【0061】
図4は、本開示の実施形態による、例えば、図1のサーバシステム102を使用して、クラウドベースのクライアントアプリケーションと遠隔で相互作用するための例示的方法400を図示する、フローチャートである。ブロック405では、サーバシステム102は、第1の要求をユーザのクライアントデバイス(例えば、クライアントデバイス148)から受信し、クラウドベースのクライアントアプリケーションとの双方向セッションを開始することができる。第1の要求は、クライアントデバイスの少なくとも1つの特性を含むことができる。例証目的のために、限定ではないが、クライアントデバイス特性は、例えば、クライアントデバイスの地理的場所であることができるが、他の特性も、可能性として考えられる。クラウドベースのクライアントアプリケーションは、クライアントデバイスと異なり、そこから遠隔のコンピューティングプラットフォーム上で実行されるように構成されることができる。例証目的のために、限定ではないが、クライアントデバイスは、例えば、Android(登録商標)ベースのスマートフォンであることができる一方、コンピューティングプラットフォームは、例えば、デスクトップPCであることができる。ブロック410では、サーバシステム102(例えば、アプリケーションエンジンインベントリおよび予約モジュール136を介して)は、第1の要求に応答して、クラウドベースのクライアントアプリケーションをクライアントデバイスから遠隔で実行するために、アプリケーションエンジンモジュールを複数のアプリケーションエンジンモジュール(例えば、複数のアプリケーションエンジンモジュール106)から予約することができる。アプリケーションエンジンモジュールは、双方向セッションの持続時間にわたって、ユーザに結び付けられることができる。ある実施形態では、各アプリケーションエンジンモジュールは、各アプリケーションエンジンモジュールが、双方向セッションの間、最大で単一(結び付けられた)ユーザによって使用され得るように、1人のユーザのために予約されることができる。ブロック415では、サーバシステム102は、クライアントデバイスの少なくとも1つの特性に基づいて、予約されたアプリケーションエンジンモジュール内で実行される、クラウドベースのクライアントアプリケーションを修正することができる。ある実施形態では、クライアントデバイスの特性は、予約されたアプリケーションエンジンモジュール内で実行される、クラウドベースのクライアントアプリケーションを改変するために使用されることができる。例証目的のために、限定ではないが、クライアントデバイスの特性が、地理的場所である場合、サーバシステム102は、異なる地理的場所におけるユーザが、それらの特定の場所または他の適切なクライアントデバイス特性に調整され得る、クラウドベースのクライアントアプリケーションを体験し得るように、クラウドベースのクライアントアプリケーションを修正し、その中にクライアントデバイスが位置する、地理的エリアに特有である、視覚的特徴(例えば、インターフェース変化、期間限定提案、広告等)を提示することができる。ブロック420では、サーバシステム102は、予約されたアプリケーションエンジンモジュール内で修正されたクラウドベースのクライアントアプリケーションを実行することができる。ブロック425では、サーバシステム102は、メディア(例えば、ビデオおよび/またはオーディオ)データを、修正されたクラウドベースのクライアントアプリケーションから、ユーザのクライアントデバイス上で実行される、ブラウザアプリケーションまたは他の好適なアプリケーションにストリーミングすることができる(例えば、ブラウザモジュール150内のディスプレイモジュール152を介して)。ブロック430では、サーバシステム102は、ユーザが、クライアントデバイス148上のブラウザアプリケーションを介して、修正されるクラウドベースのクライアントアプリケーションからストリーミングされたメディアデータに関与すると、相互作用データ(例えば、入力、応答、フィードバック等)をクライアントデバイスから受信することができる(例えば、相互作用捕捉モジュール154を介して)。ブロック435では、サーバシステム102は、第2の要求をクライアントデバイスから受信し(例えば、セッション情報モジュール156を介して、セッション管理コントローラ140に)、修正されたクラウドベースのクライアントアプリケーションとの双方向セッションを終了することができる。ある実施形態では、第2の要求は、双方向セッションを終了するためのクライアントデバイスからの具体的要求ではなく、それに対してクライアントデバイスが接続される、メディアストリームの終了であることができる。ブロック440では、サーバシステム102は、第2の要求に応答して、予約されたアプリケーションエンジンモジュールを登録解除または割り当て解除することができる(例えば、アプリケーションエンジンインベントリおよび予約モジュール136を介して)。ある実施形態では、予約されたアプリケーションエンジンモジュールは、インベントリおよびプロセッサから登録解除または割り当て解除されることができ、予約されたアプリケーションエンジンモジュールをサポートする、プロセスは、アプリケーションエンジンモジュールが複数のユーザのために再使用されないように、スピンダウンまたは別様に終了されることができる。代替実施形態では、予約されたアプリケーションエンジンモジュールは、ユーザから結び付け解除され、第2の(または後続)ユーザによる使用のために利用可能となることができる。
【0062】
図5は、本開示の実施形態による、例えば、図2または図3のサーバシステム102を使用して、クラウドベースのクライアントアプリケーションと遠隔で相互作用するための例示的方法500を図示する、フローチャートである。ブロック505では、サーバシステム102は、第1の要求をユーザのクライアントデバイス(例えば、クライアントデバイス148)から受信し、クラウドベースのクライアントアプリケーションとの双方向セッションを開始することができる。クラウドベースのクライアントアプリケーションは、第2のクライアントデバイス上で実行されるように構成されることができる。第2のクライアントデバイスは、クライアントデバイスと異なり、そこから遠隔である、コンピューティングプラットフォームを備えることができる。例証目的のために、限定ではないが、クライアントデバイスは、例えば、Android(登録商標)ベースのスマートフォンであることができる一方、第2のクライアントデバイスは、例えば、デスクトップPCであることができる。ブロック510では、サーバシステム102は、第1の要求に応答して、クラウドベースのクライアントアプリケーションをクライアントデバイスから遠隔で実行するために、アプリケーションエンジンモジュールを複数の事前にインスタンス化されたアプリケーションエンジンモジュールプールの事前にインスタンス化されたアプリケーションエンジンモジュールプールから予約することができる(例えば、アプリケーションエンジンインベントリおよび予約モジュール136を介して)。予約されたアプリケーションエンジンモジュールは、双方向セッションの持続時間にわたって、クライアントデバイスに結び付けられることができる。事前にインスタンス化されたアプリケーションエンジンモジュールは、事前にインスタンス化されたアプリケーションエンジンモジュールプールに追加され、予約されたアプリケーションエンジンモジュールを置き換えることができる。本発明のいくつかの実装では、複数の事前にインスタンス化されたアプリケーションエンジンモジュールプールの各事前にインスタンス化されたアプリケーションエンジンモジュールプールは、異なるクラウドベースのクライアントアプリケーションと関連付けられることができる。ブロック515では、クラウドベースのクライアントアプリケーションは、予約されたアプリケーションエンジンモジュール内で実行されることができる。ブロック520では、第1のメディアデータが、予約されたアプリケーションエンジンモジュール内で実行される、クラウドベースのクライアントアプリケーションから、クライアントデバイス上で実行される、ブラウザアプリケーションにストリーミングされることができる(例えば、ブラウザモジュール150のディスプレイモジュール152を介して)。ブロック525では、相互作用データが、ユーザが、ブラウザアプリケーションを介して、クラウドベースのクライアントアプリケーションからストリーミングされる第1のメディアデータに関与すると、クライアントデバイスから受信されることができる(例えば、相互作用捕捉モジュール154を介して)。ブロック530では、クラウドベースのクライアントアプリケーションが、クライアントデバイスから受信される、相互作用データに基づいて、予約されたアプリケーションエンジンモジュール内で修正されることができる。ブロック535では、第2のメディアデータは、修正されたクラウドベースのクライアントアプリケーションからブラウザアプリケーションにストリーミングされることができる。ブロック540では、第2の要求が、クライアントデバイスから受信され(例えば、セッション情報モジュール156を介して、セッション管理コントローラ140に)、修正されたクラウドベースのクライアントアプリケーションとの双方向セッションを終了することができる。ブロック545では、予約されたアプリケーションエンジンモジュールは、第2の要求に応答して、割り当て解除されることができる。予約されたアプリケーションエンジンモジュールは、クライアントデバイスから結び付け解除されることができる。類似プロセスは、図3に関して図示および議論されるように、アプリケーションインスタンスモジュールのために実施されることができる。
【0063】
図6は、クラウドベースのクライアントアプリケーションと遠隔で相互作用するための例示的方法600を図示する、別のフローチャートである。ブロック602では、ユーザの第1のクライアントデバイスからの第1の要求が、クラウドベースのクライアントアプリケーションとの双方向セッションを開始するために、受信され得る。クラウドベースのクライアントアプリケーションは、第2のクライアントデバイス上で実行されるように構成されることができる。第1のクライアントデバイスは、第2のクライアントデバイスが、第1のクライアントデバイスと異なる、コンピューティングプラットフォームを備え得るため、第2のクライアントデバイスから変動し得ることに留意されたい。本発明の側面では、第1のクライアントデバイスは、スマートフォンであってもよく、第2のクライアントデバイスは、デスクトップコンピュータであってもよい。本発明の側面では、クラウドベースのクライアントアプリケーションは、本明細書に説明されるように、第2のクライアントデバイス上で動作してもよく、メディア(すなわち、ビデオおよび/またはオーディオ)データは、第1のクライアントデバイスにストリーミングされ、その上に表示される、クラウドベースのクライアントアプリケーションから出力される。上記に述べられるように、第1の要求は、クライアントデバイスの特性を含むことができ、これは、例えば、クライアントデバイスに特有の地理的場所に対応し得る。例えば、地理的場所は、都市、都市の街区、特定の住所等に対応し得る。
【0064】
ブロック604では、複数の事前にインスタンス化されたアプリケーションエンジンプールの事前にインスタンス化されたアプリケーションエンジンプールからのアプリケーションエンジンが、第1のクライアントデバイスから遠隔でクラウドベースのクライアントアプリケーションを実行する目的のために、予約され得る。上記に説明されるように、そのような予約動作は、クラウドベースのクライアントアプリケーションが、事前に定義された持続時間にわたって、第1のクライアントデバイスのみと併せて、動作するように、アプリケーションエンジン内で実行される、クラウドベースのクライアントアプリケーションの、第1のクライアントデバイスへのリンクを具体的に有効にする。
【0065】
ブロック606では、第1のクライアントデバイスからの相互作用データが、ユーザが、クラウドベースのクライアントアプリケーションと関連付けられる、第1のメディアデータに関与すると、受信され得る。例えば、相互作用データは、ユーザが(遠隔で)クラウドベースのクライアントアプリケーションに関与するにつれた、ユーザからの入力、応答、フィードバック等に対応し得る。第1のメディアデータは、クラウドベースのクライアントアプリケーションから第1のクライアントデバイス上でユーザにストリーミングされる、ビデオおよび/またはオーディオデータを含むことができる。
【0066】
ブロック608では、予約される、アプリケーションエンジン内で実行される、クラウドベースのクライアントアプリケーションが、第1のクライアントデバイスから受信される、相互作用データに基づいて、修正され得る。上記に説明されるように、側面では、修正は、第1のクライアントデバイスのディスプレイモジュール152を介して、ユーザがクラウドベースのクライアントアプリケーションに関与すると更新される、1つまたはそれを上回る視覚的特徴を提示することを伴ってもよい。加えて、または代替として、クラウドベースのクライアントアプリケーションの視覚的特徴は、その中に第1のクライアントデバイスが位置する、地理的エリア、または第1のクライアントデバイスの他の好適な特性に基づいて、またはそれに特有であるように、修正されることができる。例えば、そのような視覚的特徴は、第1のクライアントデバイスの場所に関連する、またはある程度特有である、広告または提案に対応し得る。
【0067】
ブロック610では、第1のクライアントデバイスからの第2の要求が、修正される、クラウドベースのクライアントアプリケーションとの双方向セッションを終了するために受信され得る。例えば、ユーザは、第1のクライアントデバイス上のアイコンを選択し、またはボタンと相互作用し、クラウドベースのクライアントアプリケーションとの双方向セッションを終了してもよい。双方向セッションを終了する種々の方法も、検討される。
【0068】
ブロック612では、予約される、アプリケーションエンジンが、割り当て解除され得る。予約される、アプリケーションエンジンは、第1のクライアントデバイスからリンク解除または別様に結び付き解除され得る。例えば、割り当て解除は、アプリケーションエンジンが、もはや動作のために、第1のクライアントデバイスと具体的にリンクされない、結合されない、または別様に結び付けられないように、アプリケーションエンジンから登録解除することを伴ってもよい。換言すると、割り当て解除後、アプリケーションエンジンは、第1のクライアントデバイスと異なる、クライアントデバイスにリンクされる、結び付けられる、または割り当てされてもよい。
【0069】
本発明の実施形態は、ユーザが、それらのクライアントデバイスに、それと彼らが相互作用することを所望するであろう、多数の(例えば、数十、数百、またはそれを上回る)異なるクライアントアプリケーションをダウンロードおよびインストールすることを要求しないことによって、ネットワーク効率を改良することができる。代わりに、本発明は、サーバシステム102とクライアントデバイス148との間で通信されるのが、クライアントアプリケーション自体全体ではなく、ビデオ/オーディオデータおよびユーザ入力であるため、ネットワークトラフィックおよびネットワーク帯域幅利用を改良することができる。加えて、本発明は、クライアント側およびサーバ側の両方上におけるコンピュータ記憶装置要件を低減させることができる。例えば、ユーザは、任意のクライアントアプリケーションをそれらのクライアントデバイス上およびそれに対してダウンロードおよびインストールすることを要求されないであろう。本発明のいくつかの実装では、サーバシステム102は、クラウドベースのクライアントアプリケーションの単一バージョンを記憶することができ、これは、クライアントアプリケーションの多数の異なるバージョンを記憶し、多数のクライアントデバイスをサポートする必要がある代わりに、任意のタイプのクライアントデバイスからアクセスされ、そこに分散されることができる。
【0070】
本発明の実施形態はまた、クライアントデバイス148が、クライアントアプリケーション自体全体をネイティブにクライアントデバイス上で実行するより迅速かつより効率的にクラウドベースのクライアントアプリケーションからのビデオ/オーディオデータを処理し得るため、クライアントデバイス148の処理効率を改良することができる。本発明の実施形態はまた、サーバシステム102の処理効率を改良することができる。サーバシステム102は、コンピューティングリソースの持続的実行を維持し、サーバシステム102上のクラウドベースのクライアントアプリケーションをサポートするのではなく、アプリケーションエンジンモジュールおよび/またはアプリケーションインスタンスモジュールが、アクティブセッションのために登録されると、コンピューティングリソースを割り当てし、アクティブセッションが、完了されると、それらのリソースを割り当て解除することができる。換言すると、サーバシステム102は、クライアントデバイス毎に、各クラウドベースのクライアントアプリケーションを継続的に維持および処理することを必要とせずに、必要に応じて、それぞれ、アプリケーションエンジンモジュールおよび/またはアプリケーションインスタンスを登録および登録解除することができる。その結果、サーバシステム102は、より効果的に、コンピュータ処理リソースを、使用されている、それらのアプリケーションエンジンモジュール(およびそれらのアプリケーションエンジンモジュール内で起動する、クラウドベースのクライアントアプリケーション)および/またはアプリケーションインスタンスに割り当てし、使用されていない、それらのアプリケーションエンジンモジュールおよび/またはアプリケーションインスタンスから離れることができる。本発明のいくつかの実装では、アプリケーションエンジンモジュールプール内のアプリケーションエンジンモジュールおよび/またはアプリケーションインスタンスプール内のアプリケーションインスタンスの事前ウォームアップもまた、アクティブセッションを確立するための応答時間を実質的に低減させることができる。その結果、本発明の実施形態は、特に、例えば、数百または数千のクラウドベースのクライアントアプリケーション、およびそれらのクラウドベースのクライアントアプリケーションと並行して相互作用する、百万、数千万、またはそれを上回るユーザが存在するとき、クラウドベースのクライアントアプリケーションとの瞬時(またはほぼ瞬時)始動および相互作用(例えば、クラウドベースのモバイルゲームのコンテキストでは、「瞬時再生」)を維持するようなスケールにおいて、アクティブセッション内のユーザを管理することができる。
【0071】
図7は、本実施形態による、本明細書に説明される動作のうちの1つまたはそれを上回るものを実施し得る、例示的コンピューティングデバイス700のブロック図である。コンピューティングデバイス700は、LAN、イントラネット、エクストラネット、および/またはインターネット内の他のコンピューティングデバイスに接続されてもよい。コンピューティングデバイス700は、クライアント-サーバネットワーク環境内のサーバ機械の容量内で、またはピアツーピアネットワーク環境内のクライアントの容量内で、動作してもよい。コンピューティングデバイス700は、パーソナルコンピュータ(PC)、セットトップボックス(STB)、サーバ、ネットワークルータ、スイッチまたはブリッジ、またはその機械によってとられるアクションを規定する、命令のセットを実行する(シーケンシャルまたは別様に)ことが可能な任意の機械によって提供されてもよい。さらに、単一コンピューティングデバイス700のみが、図示されるが、用語「コンピューティングデバイス」はまた、個々に、または、ともに、本明細書で議論される方法を実施するための命令のセット(または複数のセット)を実行する、コンピューティングデバイスの任意の集合を含むように捉えられるものとする。
【0072】
例示的コンピューティングデバイス700は、コンピュータ処理デバイス702(例えば、汎用プロセッサ、ASIC等)と、メインメモリ704と、静的メモリ706(例えば、フラッシュメモリまたは同等物)と、データ記憶デバイス708とを含んでもよく、これは、バス730を介して、相互に通信してもよい。コンピュータ処理デバイス702は、マイクロプロセッサ、中央処理ユニット、または同等物等の1つまたはそれを上回る汎用処理デバイスによって提供されてもよい。例証的実施例では、コンピュータ処理デバイス702は、複合命令セットコンピューティング(CISC)マイクロプロセッサ、縮小命令セットコンピューティング(RISC)マイクロプロセッサ、超長命令語(VLIW)マイクロプロセッサ、または他の命令セットを実装するプロセッサまたは命令セットの組み合わせを実装するプロセッサを備えてもよい。コンピュータ処理デバイス702はまた、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、デジタル信号プロセッサ(DSP)、ネットワークプロセッサ、または同等物等の1つまたはそれを上回る特殊目的処理デバイスを備えてもよい。コンピュータ処理デバイス702は、本明細書で議論される動作およびステップを実施するために、本開示の1つまたはそれを上回る側面による、本明細書に説明される動作を実行するように構成されてもよい。
【0073】
コンピューティングデバイス700はさらに、ネットワークインターフェースデバイス712を含んでもよく、これは、ネットワーク714と通信してもよい。データ記憶デバイス708は、機械可読記憶媒体728を含んでもよく、その上に、1つまたはそれを上回る命令のセット、例えば、本開示の1つまたはそれを上回る側面による、本明細書に説明される動作を行うための命令が記憶されてもよい。コア論理命令726を実装する、命令718はまた、その実行の間、コンピュータ可読媒体を同様に構成する、コンピューティングデバイス700、メインメモリ704、およびコンピュータ処理デバイス702によって、完全にまたは少なくとも部分的に、メインメモリ704内および/またはコンピュータ処理デバイス602内に常駐してもよい。命令はさらに、ネットワークインターフェースデバイス712を介して、ネットワーク714を経由して、伝送または受信されてもよい。
【0074】
機械可読記憶媒体728は、単一媒体であるように例証的実施例に示されるが、用語「コンピュータ可読記憶媒体」は、1つまたはそれを上回る命令のセットを記憶する、単一媒体または複数の媒体(例えば、一元型または分散型データベースおよび/または関連付けられるキャッシュおよびサーバ)を含むものと捉えられるべきである。用語「コンピュータ可読記憶媒体」はまた、機械による実行のために、命令のセットを記憶、エンコーディング、または搬送することが可能であって、機械に本明細書に説明される方法を実施させる、任意の媒体を含むように捉えられるものとする。用語「コンピュータ可読記憶媒体」は、故に、限定ではないが、ソリッドステートメモリ、光学メディア、磁気媒体、および同等物を含むように捉えられるものとする。
【0075】
本開示に説明される主題および動作の実施形態は、デジタル電子回路網で、または本開示に開示される構造およびそれらの構造均等物を含む、コンピュータソフトウェア、ファームウェア、またはハードウェアで、またはそれらのうちの1つまたはそれを上回るものの組み合わせで、実装されることができる。本開示に説明される主題の実施形態は、1つまたはそれを上回るコンピュータプログラム、すなわち、データ処理装置による実行のために、またはその動作を制御するために、コンピュータ記憶媒体上にエンコードされる、コンピュータプログラム命令の1つまたはそれを上回るモジュールとして、実装されることができる。代替として、または加えて、プログラム命令は、人工的に発生される伝搬信号、例えば、データ処理装置による実行のために好適な受信機装置に伝送するための情報をエンコードするように発生される、機械で発生される電気、光学、または電磁信号上で、エンコードされることができる。コンピュータ記憶媒体は、コンピュータ可読記憶デバイス、コンピュータ可読記憶基板、ランダムまたはシリアルアクセスメモリアレイまたはデバイス、またはそれらのうちの1つまたはそれを上回るものの組み合わせである、またはその中に含まれることができる。また、コンピュータ記憶媒体は、伝搬信号ではないが、コンピュータ記憶媒体は、人工的に発生される伝搬信号でエンコードされる、コンピュータプログラム命令のソースまたは宛先であり得る。コンピュータ記憶媒体はまた、1つまたはそれを上回る別個の物理的コンポーネントまたは媒体(例えば、複数のCD、ディスク、または他の記憶デバイス)である、またはそれに含まれることができる。
【0076】
本開示に説明される動作は、1つまたはそれを上回るコンピュータ可読記憶デバイス上に記憶される、または他のソースから受信されるデータ上でデータ処理装置によって実施される、動作として実装されることができる。
【0077】
用語「データ処理装置」は、実施例として、プログラマブルプロセッサ、コンピュータ処理デバイス、コンピュータ、チップ上のシステム、または前述の複数のものまたは組み合わせを含む、データを処理するためのあらゆる種類の装置、デバイス、および機械を包含する。コンピュータ処理デバイスは、特殊用途論理回路網、例えば、FPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)、中央処理ユニット(CPU)、マルチコアプロセッサ等を含み得る、1つまたはそれを上回るプロセッサを含むことができる。装置はまた、ハードウェアに加えて、当該コンピュータプログラムのための実行環境を生成するコード、例えば、プロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、クロスプラットフォームランタイム環境、仮想マシン、またはそれらのうちの1つまたはそれを上回るものの組み合わせを構成するコードを含むことができる。装置および実行環境は、ウェブサービス、分散コンピューティング、およびグリッドコンピューティングインフラストラクチャ等の種々の異なるコンピューティングモデルインフラストラクチャを実現することができる。
【0078】
コンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、スクリプト、またはコードとしても公知である)は、コンパイラ型またはインタープリタ型言語、宣言型、手続型、または機能型言語を含む、任意の形態のプログラミング言語で書き込まれることができ、これは、独立型プログラムとして、またはコンピューティング環境内の使用のために好適なモジュール、コンポーネント、サブルーチン、オブジェクト、または他のユニットとしてを含む、任意の形態で展開されることができる。コンピュータプログラムは、ファイルシステム内のファイルに対応し得るが、その必要はない。プログラムは、他のプログラムまたはデータを保持するファイル(例えば、マークアップ言語リソース内に記憶された1つまたはそれを上回るスクリプト)の一部内に、当該プログラム専用の単一のファイル内に、または複数の協調ファイル(例えば、1つまたはそれを上回るモジュール、サブプログラム、またはコードの一部を記憶するファイル)内に記憶されることができる。コンピュータプログラムは、1つのコンピュータ上で、または1つの地点に位置し、または複数の地点を横断して分散され、通信ネットワークによって相互接続される複数のコンピュータ上で、実行されるように展開されることができる。
【0079】
本開示に説明されるプロセスおよび論理フローは、入力データに作用し、出力を発生させることによってアクションを実施するように、1つまたはそれを上回るコンピュータプログラムを実行する、1つまたはそれを上回るプログラマブルプロセッサによって、実施されることができる。プロセスおよび論理フローはまた、特殊用途論理回路網、例えば、FPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)によって、実施されることができ、装置もまた、それとして実装されることができる。
【0080】
コンピュータプログラムの実行のために好適なプロセッサは、実施例として、汎用および特殊用途マイクロプロセッサの両方、および任意の種類のデジタルコンピュータのいずれか1つまたはそれを上回るプロセッサを含む。概して、プロセッサは、読取専用メモリまたはランダムアクセスメモリまたは両方から、命令およびデータを受信するであろう。コンピュータの不可欠な要素は、命令に従ってアクションを実施するためのプロセッサ、および命令およびデータを記憶するための1つまたはそれを上回るメモリデバイスである。概して、コンピュータはまた、データを記憶するための1つまたはそれを上回る大容量記憶デバイス、例えば、磁気ディスク、磁気光学ディスク、または光ディスク、ソリッドステートデバイス、または同等物を含む、またはそこからデータを受信する、またはそこにデータを転送する、または両方を行うように、動作的に結合されるであろう。しかしながら、コンピュータは、そのようなデバイスを有する必要はない。また、コンピュータは、別のデバイス、例えば、ほんの数例を挙げると、スマートフォン、モバイルオーディオまたはメディアプレーヤ、ゲーム機、全地球測位システム(GPS)受信機、またはポータブル記憶デバイス(例えば、ユニバーサルシリアルバス(USB)フラッシュドライブ)に埋設されることができる。コンピュータプログラム命令およびデータを記憶するために好適なデバイスは、実施例として、半導体メモリデバイス、例えば、EPROM、EEPROM、およびフラッシュメモリデバイス、磁気ディスク、例えば、内部ハードディスクまたはリムーバブルディスク、磁気光学ディスク、およびCD-ROMおよびDVD-ROMディスクを含む、あらゆる形態の不揮発性メモリ、媒体、およびメモリデバイスを含む。プロセッサおよびメモリは、特殊用途論理回路網によって補完される、またはそれに組み込まれることができる。
【0081】
ユーザとの相互作用を提供するために、本明細書に説明される主題の実施形態が、情報をユーザに表示するためのディスプレイデバイス、例えば、CRT(陰極線管)、LCD(液晶ディスプレイ)モニタ、発光ダイオード(LED)モニタ、または同等物と、それによってユーザが入力をコンピュータに提供し得る、キーボードおよびポインティングデバイス、例えば、マウス、トラックボール、タッチパッド、スタイラス、または同等物とを有する、コンピュータ上で実装されることができる。他の種類のデバイスも、同様にユーザとの相互作用を提供するために使用されることができ、例えば、ユーザに提供されるフィードバックは、任意の形態の感覚フィードバック、例えば、視覚フィードバック、聴覚フィードバック、または触覚フィードバックであり得、ユーザからの入力は、音響、発話、または触覚入力を含む、任意の形態で受信されることができる。他の可能性として考えられる入力デバイスは、タッチスクリーンまたは単一またはマルチポイント抵抗または容量トラックパッド等の他のタッチセンサ式デバイス、音声認識ハードウェアおよびソフトウェア、光学スキャナ、光学ポインタ、デジタル画像捕捉デバイスおよび関連付けられる解釈ソフトウェア、および同等物を含む。加えて、コンピュータは、ユーザによって使用されるデバイスにリソースを送信し、そこからリソースを受信することによって、例えば、ウェブブラウザから受信される要求に応答して、ウェブページをユーザのクライアントデバイス上のウェブブラウザに送信することによって、ユーザと相互作用することができる。
【0082】
本開示に説明される主題の実施形態は、例えば、データサーバとして、バックエンドコンポーネントを含む、またはミドルウェアコンポーネント、例えば、アプリケーションサーバを含む、またはフロントエンドコンポーネント、例えば、それを通してユーザが本開示に説明される主題の実装と相互作用し得るグラフィカルユーザインターフェースまたはウェブブラウザを有する、クライアントコンピュータ、または1つまたはそれを上回るそのようなバックエンド、ミドルウェア、またはフロントエンドコンポーネントの任意の組み合わせを含む、コンピューティングシステムで実装されることができる。システムのコンポーネントは、任意の形態または媒体のデジタルデータ通信、例えば、通信ネットワークによって、相互接続されることができる。通信ネットワークの実施例は、ローカルエリアネットワーク(「LAN」)および広域ネットワーク(「WAN」)、インターネットワーク(例えば、インターネット)、ピアツーピアネットワーク(例えば、アドホックピアツーピアネットワーク)、および同等物を含む。
【0083】
コンピューティングシステムは、クライアントと、サーバとを含むことができる。クライアントおよびサーバは、概して、相互から遠隔にあり、典型的には、通信ネットワークを通して相互作用する。クライアントおよびサーバの関係は、個別のコンピュータ上で起動し、相互にクライアント-サーバ関係を有する、コンピュータプログラムにより、生じる。いくつかの実施形態では、サーバは、(例えば、クライアントデバイスと相互作用するユーザにデータを表示し、ユーザからユーザ入力を受信する目的のために)データ(例えば、HTMLページ)をクライアントデバイスに伝送する。クライアントデバイスにおいて発生されるデータ(例えば、ユーザ相互作用の結果)が、サーバにおいてクライアントデバイスから受信されることができる。
【0084】
1つまたはそれを上回るコンピュータのシステムは、動作時、システムにアクションを実施させる、システム上にインストールされたソフトウェア、ファームウェア、ハードウェア、またはそれらの組み合わせを有することにより、特定の動作またはアクションを実施するように構成されることができる。1つまたはそれを上回るコンピュータプログラムは、データ処理装置によって実行されると、装置にアクションを実施させる、命令を含むことにより、特定の動作またはアクションを実施するように構成されることができる。
【0085】
本開示全体を通して、「一実施形態」または「ある実施形態」の言及は、特定の特徴、構造、または特性が、少なくとも一実施形態に含まれる、実施形態に関連して説明されることを意味する。したがって、本開示全体を通した種々の場所における語句「一実施形態では」または「ある実施形態では」の表出は、必ずしも、全て同一の実施形態を参照するわけではない。加えて、用語「または」は、排他的「または」ではなく、包含的「または」を意味するように意図される。
【0086】
本開示は、多くの具体的実装詳細を含有するが、これらは、任意の発明または請求され得るものの範囲への限定としてではなく、むしろ、特定の発明の特定の実施形態に特有の特徴の説明として解釈されるべきである。別個の実施形態の文脈において本開示に説明されるある特徴はまた、単一の実施形態において組み合わせて実装されることができる。逆に、単一の実施形態の文脈で説明される種々の特徴もまた、複数の実施形態において別個に、または任意の好適な副次的組み合わせで実装されることができる。また、特徴が、ある組み合わせにおいて作用するものとして上記に説明され、さらに、そのようなものとして最初に請求され得るが、請求される組み合わせからの1つまたはそれを上回る特徴が、ある場合では、その組み合わせから削除されることができ、請求される組み合わせは、副次的組み合わせまたは副次的組み合わせの変形例を対象とし得る。
【0087】
同様に、動作および/または論理フローは、特定の順序で図面に描写および/または本明細書に説明されるが、これは、望ましい結果を達成するために、そのような動作および/または論理フローが示される特定の順序で、または順次順序で実施される、または全ての図示される動作が実施されることを要求するものとして理解されるべきではない。ある状況では、マルチタスクおよび並列処理が、有利であり得る。また、上記に説明される実施形態における種々のシステムコンポーネントの分離が、全ての実施形態におけるそのような分離を要求するものとして理解されるべきではなく、説明されるプログラムコンポーネントおよびシステムが、概して、単一のソフトウェア製品においてともに統合される、または複数のソフトウェア製品にパッケージ化され得ることを理解されたい。
【0088】
したがって、主題の特定の実施形態が、説明されている。他の実施形態も、以下の請求項の範囲内である。ある場合には、請求項に列挙されるアクションは、異なる順序で実施され、依然として、望ましい結果を達成することができる。加えて、付随する図に描写されるプロセスは、望ましい結果を達成するために、必ずしも示される特定の順序または順次順序を要求するわけではない。ある実装では、マルチタスクおよび並列処理が、有利であり得る。
【0089】
単語「実施例」または「例示的」は、本明細書では、実施例、事例、または例証としての役割を果たすことを意味するために使用される。「実施例」または「例示的」として本明細書に説明される、任意の側面または設計は、必ずしも、他の側面または設計より好ましいまたは有利であるものとして解釈されるわけではない。むしろ、単語「実施例」または「例示的」の使用は、概念を具体的方式において提示するように意図される。本願で使用されるように、用語「または」は、排他的「または」ではなく、包含的「または」を意味するように意図される。すなわち、別様に規定されない、または文脈から明白ではない限り、「Xは、AまたはBを含む」は、自然包含的順列のいずれかを意味するように意図される。すなわち、Xが、Aを含む、Xが、Bを含む、またはXが、AおよびBの両方を含む場合、「Xは、AまたはBを含む」は、前述のいずれかの事例下で充足される。加えて、本願および添付の請求項で使用されるような冠詞「a」および「an」は、概して、単数形を対象とすることが別様に規定されない、または文脈から明白ではない限り、「1つまたはそれを上回る」を意味するように解釈されるべきである。さらに、全体を通した用語「ある実施形態」または「一実施形態」または「ある実装」または「1つの実装」の使用は、そのように説明されない限り、同一実施形態または実装を意味することを意図するものではない。さらに、本明細書で使用されるような用語「第1」、「第2」、「第3」、「第4」等は、標識として異なる要素間で区別することを意味し、必ずしも、それらの数値指定に従った序数意味を有するとは限らない。
【0090】
上記の説明および請求項では、「~のうちの少なくとも1つ」または「~のうちの1つまたはそれを上回るもの」等の語句は、その後、要素または特徴の接続的リストが続くように生じ得る。用語「および/または」はまた、2つまたはそれを上回る要素または特徴のリスト内で生じ得る。別様に暗示的または明示的に、その中でそれが使用される文脈によって矛盾されない限り、そのような語句は、列挙された要素または特徴のいずれかを個々に、または他の列挙される要素または特徴のいずれかと組み合わせて、列挙される要素または特徴のいずれかを意味するように意図される。例えば、語句「AおよびBのうちの少なくとも1つ」、「AおよびBのうちの1つまたはそれを上回るもの」、および「Aおよび/またはB」はそれぞれ、「Aのみ、Bのみ、またはAおよびBをともに」を意味するように意図される。類似解釈はまた、3つまたはそれを上回るアイテムを含む、リストに関して意図される。例えば、語句「A、B、およびCのうちの少なくとも1つ」、「A、B、およびCのうちの1つまたはそれを上回るもの」、および「A、B、および/またはC」はそれぞれ、「Aのみ、Bのみ、Cのみ、AおよびBをともに、AおよびCをともに、BおよびCをともに、またはAおよびBおよびCをともに」を意味するように意図される。加えて、上記および請求項における用語「~に基づいて」の使用は、列挙されない特徴または要素もまた許容可能であるように、「少なくとも部分的に、~に基づいて」を意味するように意図される。
【0091】
本発明の例証される実装の上記の説明は、包括的であること、または本発明を開示される精密な形態に限定することを意図するものではない。本発明の具体的実装およびそれに関する実施例が、例証目的のために、本明細書に説明されるが、種々の均等物修正が、当業者が認識するであろうように、本発明の範囲内で可能性として考えられる。本明細書に説明される主題は、所望の構成に応じて、システム、装置、方法、および/または物品内に具現化されることができる。前述の説明に記載される実装は、本明細書に説明される主題と一致する、全ての実装を表すわけではない。代わりに、それらは、単に、説明される主題に関連する側面と一致する、いくつかの実施例にすぎない。いくつかの変形例が、上記に詳細に説明されているが、他の修正または追加も、可能性として考えられる。特に、さらなる特徴および/または変形例が、本明細書に記載されるものに加え、提供されることができる。例えば、上記に説明される実装は、開示される特徴の種々の組み合わせおよび副次的組み合わせおよび/または上記に開示されるいくつかのさらなる特徴の組み合わせおよび副次的組み合わせを対象とすることができる。他の実装も、以下の請求項の範囲内であり得る。
図1
図2
図3
図4
図5
図6
図7
【国際調査報告】