(57)【要約】  パーベイシブコンピューティングのための方法及びシステムが開示される。一実施形態によれば、コンピュータに実装された方法は、クラウドコンピューティング環境内で、周辺装置を検出し得る第１装置と通信するサーバと、サーバによって実行可能なアプリケーションプログラムとを備え、アプリケーションプログラムは、第１装置によって制御され、アプリケーションプログラムの出力は、第１装置によって検出される装置の１つに導かれる。【選択図】図３Ａ
2013506170.tif 000002
【特許請求の範囲】
【請求項１】
クラウドコンピューティング環境内で、周辺装置を検出し得る第１装置と通信するサーバと、前記サーバによって実行可能なアプリケーションプログラムとを備え、前記アプリケーションプログラムは、前記第１装置によって制御され、前記アプリケーションプログラムの出力は、前記第１装置によって検出される装置の１つに導かれるシステム。
【請求項２】
前記アプリケーションプログラムの出力が前記第１装置に導かれる請求項１に記載のシステム。
【請求項３】
前記周辺装置は、他の周辺装置を検出し得る請求項１に記載のシステム。
【請求項４】
前記クラウドコンピューティング環境は、
スーパバイザと、
データプロバイダと、
認証ゲートウェイと、
ネームサービスと、
を備える請求項１に記載のシステム。
【請求項５】
前記クラウドコンピューティング環境は、バーチャル演算装置プロバイダをさらに備える請求項４に記載のシステム。
【請求項６】
前記クラウドコンピューティング環境は、支払いエンジンとライセンスマネジメントエンジンとをさらに備える請求項４に記載のシステム。
【請求項７】
装置は、装置エージェントとネットワークスタックとを備える請求項１に記載のシステム。
【請求項８】
装置は、入力性能、出力性能、演算性能、入力キュー、入力キャプチャラ、入力エンコーディング、入力デコーディング、出力レンダリング、出力エンコーディング、及び出力デコーディングのうちの１以上をさらに含む請求項７に記載のシステム。
【請求項９】
装置は、ユーザインターフェースシェルをさらに備える請求項７に記載のシステム。
【請求項１０】
装置は、周辺装置を制御し得る請求項１に記載のシステム。
【請求項１１】
前記アプリケーションプログラムの出力は、装置のハードウェア及びソフトウェア性能から独立して、装置に導かれ得る請求項１に記載のシステム。
【請求項１２】
前記アプリケーションプログラムの前記出力は、前記第１装置により検出される２以上の前記装置に前記サーバによって同時に導かれる請求項１に記載のシステム。
【請求項１３】
前記アプリケーションプログラムの前記出力は、前記サーバによって、第１装置により検出される一方の装置から他の装置へと途切れなく導かれ、前記アプリケーションプログラムの前記出力は、前記装置に以前に表示されていた状態と同じ状態を示す請求項１に記載のシステム。
【請求項１４】
前記データプロバイダは、ユーザへの共同アクセス及び共同データを提供する請求項４に記載のシステム。
【請求項１５】
クラウドコンピューティング環境内において、アプリケーションプログラムを制御しかつ周辺装置を検出し得る第１装置と通信することと、前記アプリケーションプログラムの出力を前記第１装置によって検出される装置の１つに導くこと、とを備えるコンピュータに実装された方法。
【請求項１６】
前記アプリケーションプログラムの出力は、第１装置に導かれる請求項１５に記載のコンピュータに実装された方法。
【請求項１７】
周辺装置は他の周辺装置を検出し得る請求項１５に記載のコンピュータに実装された方法。
【請求項１８】
前記クラウドコンピューティング環境は、
スーパバイザと、
データプロバイダと、
認証ゲートウェイと、
ネームサービスと
を備える請求項１２に記載のコンピュータに実装された方法。
【請求項１９】
前記クラウドコンピューティング環境は、バーチャル演算装置プロバイダをさらに備える請求項１８に記載のコンピュータに実装された方法。
【請求項２０】
前記クラウドコンピューティング環境は、支払いエンジンと、ライセンスマネジメントエンジンとをさらに備える請求項１８に記載のコンピュータに実装された方法。
【請求項２１】
装置は、装置エージェントとネットワークスタックとをさらに備える請求項１５に記載のコンピュータに実装された方法。
【請求項２２】
装置は、入力性能、出力性能、演算性能、入力キュー、入力キャプチャラ、入力エンコーディング、入力デコーディング、出力レンダリング、出力エンコーディング、及び出力デコーディングのうちの１以上をさらに含む請求項２１に記載のコンピュータに実装された方法。
【請求項２３】
装置は、ユーザインターフェースシェルをさらに備える請求項２１に記載のコンピュータに実装された方法。
【請求項２４】
装置は、周辺装置を制御し得る請求項１５に記載のコンピュータに実装された方法。
【請求項２５】
前記アプリケーションプログラムの出力は、装置のハードウェア及びソフトウェア性能から独立して、装置に導かれ得る請求項１５に記載のコンピュータに実装された方法。
【請求項２６】
前記アプリケーションプログラムの前記出力は、第１装置により検出される２以上の装置に前記サーバによって同時に導かれる請求項１５に記載のシステム。
【請求項２７】
前記アプリケーションプログラムの前記出力は、前記サーバによって、第１装置により検出される一方の装置から他の装置へと途切れなく導かれ、前記アプリケーションプログラムの前記出力は、前記装置に以前に表示されていた状態と同じ状態を示す請求項１５に記載のシステム。
【請求項２８】
前記データプロバイダは、ユーザへの共同アクセス及び共同データを提供する請求項１８に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、コンピュータアプリケーション、より詳細には、パーベイシブコンピューティングのためのシステム及び方法に関する。
【背景技術】
【０００２】
ユーザは、多数のコンピュータ及び電子装置に益々囲まれるようになっている。ユーザは、典型的に、自宅に多数のコンピュータ、職場で多数のコンピュータ、多数のディスプレイ、様々な携帯電話、ポータブルコンピュータ、ミュージックプレーヤ、テレビ、ゲームコンソール、カメラ、及びリーデング装置を有する。
【０００３】
最近開発されている制御装置のための方法は、マルチタッチフォン又は画面、音声指令、モーションセンシングコントローラ（例えば、Ｗｉｉリモート）、ボディトラッキングシステム（たとえば、Ｐｒｏｊｅｃｔ  Ｎａｔａｌ）、ゲイズトラッキング、及びゲームコンソール状のコントローラを含む。
【０００４】
既存のユーザインターフェースは、同時に、単一のコンピュータ又はモバイル装置のユーザを想定している。ＧＵＩパラダイムは、未だに大抵はデスクトップである。デスクトップＧＵＩ及び伝統的な単一のマシンオペレーティングシステムは、マウスやキーボードを越えた多数の装置及び新たなＵＩ性能の新たな世界では、うまく機能しない。
【０００５】
演算装置には、そのほとんどが使用されない多くのソフトウェアアプリケーションがロードされる。アプリケーションは、特定のハードウェアマシンに連係し、移動可能ではなく、維持及びアップグレードすることが難しくかつコストのかかるものである。
【０００６】
多数の装置を有するユーザは、使用する１つの装置の機能（例えばｉＰｈｏｎｅのマルチタッチ機能）を、他の装置（例えば大きなスクリーンのプラズマテレビ）と組み合わせることができない。
【０００７】
コンピュータ及び装置は、数十万のプライベートローカルネットーワーク内に又はインターネットの一部として接続されるのであるが、装置は、その大部分が互いに認識していない。それらの間でのデータ（すなわち写真）を転送すること及び同期させることは、しばしば長く苦痛を伴う作業である。
【０００８】
既存のウェブアプリケーションは、これらの問題のいくつかを解決することを目的とする。ウェブアプリケーションは、伝統的なソフトウェアアプリケーションと同様な機能を提供するために作成されるが、それらのインストールの必要性と物理的なコンピュータのスローダウンを取り除く。ウェブアプリケーションはまた、サーバ上に保存されるデータに全てのユーザの装置からアクセスできるように構築され、それ故、データの同期の必要性を取り除く。
【０００９】
しかしながら、ウェブアプリケーション及びブラウザベースのモデルは、以下を含むいくつかの制限を有する。
・ｈｔｍｌ／ジャバスクリプトで形成されるユーザの体験は、基礎的なものであり、かつ制限される。
・フラッシュ／シルバーライトは、マルチスレッディングモデルを有しておらず、フル装備のアプリケーションを構築することができない。
【００１０】
ウェブアプリケーションモデル又はＲＩＡモデルを使用する通信／協調ソフトウェアは、効果的に構築されない。
【００１１】
マルチマシンコンピューティング環境は、最近、ソフトウェア開発、プロビジョニング、及びマネージメント及び／又はデータセンタ（VMWare vSphere, Citrix Cloud Center. Amazon Elastic Compute Cloud, Microsoft Windows Azure他）を運営するための企業ニーズに対処するために開発されてきている。
【発明の概要】
【発明が解決しようとする課題】
【００１２】
しかしながら、これらのコンピューティング環境のいずれもが、消費者／多数の装置シナリオを想定しておらず、ユーザインターフェースも提供しない（その環境が、ウェブアプリケーション又はデスクトップオペレーティングシステムで仮想マシンを駆動するように使用される）。
【課題を解決するための手段】
【００１３】
パーベイシブコンピューティングのための方法及びシステムが開示される。一実施形態によれば、コンピュータに実装される方法は、クラウドコンピューティング環境内の周辺装置を検出することができる第１装置と通信するサーバと、サーバによって実行され得るアプリケーションプログラムとを備え、アプリケーションプログラムは、第１装置によって制御され、アプリケーションプログラムの出力が、サーバによって、第１装置により検出される装置の１つに導かれる。
【００１４】
本発明は、２００９年８月２７日の出願米国特許仮出願第６１／２３７６１１号、発明の名称「パーベイシブコンピューティングのためのオペレーティング環境及びユーザインターフェース」の利益を求め、参照によってここに組み入れられる。
【図面の簡単な説明】
【００１５】
【図１】図１は、一実施形態による本システムで用いる例示的なコンピュータアーキテクチャを示す。
【図２】図２は、一実施形態によるパーベイシブコンピューティング環境の例示的なシステムレベルダイアグラムである。
【図３Ａ】図３Ａは、一実施形態による単独のサーバを利用するパーベイシブコンピューティング環境の例示的なシステムレベルダイアグラムである。
【図３Ｂ】図３Ｂは、一実施形態による多数のサーバを利用するパーベイシブコンピューティング環境の例示的なシステムレベルダイアグラムである。
【図４Ａ】図４Ａは、一実施形態によるパーベイシブコンピューティング環境内での例示的な装置通信グラフを例示する。
【図４Ｂ】図４Ｂは、一実施形態によるパーベイシブコンピューティング環境内の、アプリケーション転送の前及び後の例示的な装置通信グラフを示す。
【図４Ｃ】図４Ｃは、一実施形態によるパーベイシブコンピューティング環境内の、アプリケーション転送の前及び後の例示的な装置通信グラフを示す。
【図５】図５は、一実施形態によるパーベイシブコンピューティング環境内で用いる例示的なクライアントアーキテクチャを示す。
【図６Ａ】図６Ａは、一実施形態によるパーベイシブコンピューティング環境内で用いる例示的で単純な出力装置アーキテクチャを示す。
【図６Ｂ】図６Ｂは、一実施形態によるパーベイシブコンピューティング環境内で用いる例示的な装置コントローラアーキテクチャを示す。
【図６Ｃ】図６Ｃは、一実施形態によるパーベイシブコンピューティング環境内で用いる例示的なパフォーマンス演算装置アーキテクチャを示す。
【図６Ｄ】図６Ｄは、一実施形態によるパーベイシブコンピューティング環境内で用いる例示的なネットブック状の装置アーキテクチャを示す。
【図６Ｅ】図６Ｅは、一実施形態によるパーベイシブコンピューティング環境内で用いる例示的で単純なオペレーティングシステムアーキテクチャを示す。
【図７】図７は、一実施形態によるパーベイシブコンピューティング環境内で用いる例示的なクラウドアーキテクチャを示す。
【図８Ａ】図８Ａは、一実施形態による、任意のコンピュータが任意のユーザによって使用され得る例示的なパーベイシブコンピューティング環境シナリオを示す。
【図８Ｂ】図８Ｂは、一実施形態による、任意のコンピュータが任意のユーザによって使用され得る例示的なパーベイシブコンピューティング環境シナリオを示す。
【図８Ｃ】図８Ｃは、一実施形態による、任意のコンピュータが任意のユーザによって使用され得る例示的なパーベイシブコンピューティング環境シナリオを示す。
【図９Ａ】図９Ａは、一実施形態による、アプリケーションがユーザに従う例示的なパーベイシブコンピューティング環境シナリオを示す。
【図９Ｂ】図９Ｂは、一実施形態による、アプリケーションがユーザに従う例示的なパーベイシブコンピューティング環境シナリオを示す。
【図９Ｃ】図９Ｃは、一実施形態による、アプリケーションがユーザに従う例示的なパーベイシブコンピューティング環境シナリオを示す。
【図１０Ａ】図１０Ａは、一実施形態による、ソフトウェアアプリケーションがハードウェア装置から独立している例示的なパーベイシブコンピューティング環境シナリオを示す。
【図１０Ｂ】図１０Ｂは、一実施形態による、ソフトウェアアプリケーションがハードウェア装置から独立している例示的なパーベイシブコンピューティング環境シナリオを示す。
【図１０Ｃ】図１０Ｃは、一実施形態による、ソフトウェアアプリケーションがハードウェア装置から独立している例示的なパーベイシブコンピューティング環境シナリオを示す。
【図１１Ａ】図１１Ａは、一実施形態による、アプリケーションが電子新聞からテーブル面に移動する例示的なパーベイシブコンピューティング環境シナリオを示す。
【図１１Ｂ】図１１Ｂは、一実施形態による、アプリケーションが電子新聞からテーブル面に移動する例示的なパーベイシブコンピューティング環境シナリオを示す。
【図１１Ｃ】図１１Ｃは、一実施形態による、アプリケーションが電子新聞からテーブル面に移動する例示的なパーベイシブコンピューティング環境シナリオを示す。
【図１１Ｄ】図１１Ｄは、一実施形態による、アプリケーションが電子新聞からテーブル面に移動する例示的なパーベイシブコンピューティング環境シナリオを示す。
【図１１Ｅ】図１１Ｅは、一実施形態による、アプリケーションが電子新聞からテーブル面に移動する例示的なパーベイシブコンピューティング環境シナリオを示す。
【図１２】図１２は、一実施形態による、制御装置が他の装置及びアプリケーションを制御する例示的なパーベイシブコンピューティング環境シナリオを示す。
【図１３Ａ】図１３Ａは、一実施形態による、装置が制御装置からの入力に応答する例示的なパーベイシブコンピューティング環境シナリオを示す。
【図１３Ｂ】図１３Ｂは、一実施形態による、装置が制御装置からの入力に応答する例示的なパーベイシブコンピューティング環境シナリオを示す。
【図１３Ｃ】図１３Ｃは、一実施形態による、装置が制御装置からの入力に応答する例示的なパーベイシブコンピューティング環境シナリオを示す。
【図１３Ｄ】図１３Ｄは、一実施形態による、装置が制御装置からの入力に応答する例示的なパーベイシブコンピューティング環境シナリオを示す。
【図１４Ａ】図１４Ａは、さらに他の実施形態による、装置が制御装置からの入力に応答する例示的なパーベイシブコンピューティング環境シナリオを示す。
【図１４Ｂ】図１４Ｂは、さらに他の実施形態による、装置が制御装置からの入力に応答する例示的なパーベイシブコンピューティング環境シナリオを示す。
【発明を実施するための形態】
【００１６】
本明細書の一部として含まれる添付図面は、現在、望ましい実施形態と上記の一般的な記載とを例示し、以下に与えられる望ましい実施形態の詳細な説明は、本発明の原理を説明及び示唆する役割を果たす。
【００１７】
パーベイシブコンピューティングのための方法及びシステムが開示される。一実施形態によれば、方法が実行されるコンピュータは、クラウドコンピューティング環境内で周辺装置を検出し得る第１装置と通信するサーバと、サーバによって実行されるアプリケーションプログラムとを備え、アプリケーションプログラムは、第１装置によって制御され、アプリケーションプログラムの出力が、第１装置によって検出される装置の１つにサーバによって導かれる。
【００１８】
本方法及びシステムは、２００９年９月２９日出願の米国特許出願第１２／５６９８７６号に記述される転送プロトコルを包含し、これによって、参照によってその全体に組み入れられる。
【００１９】
書類全体にわたって使用される添付の用語及び付随する定義は、以下を含む。
【００２０】
装置：入力、出力又は演算が可能な電子工学、生物電子工学、又はナノ電子工学装置。装置の例は、限定されることなく、ラップトップコンピュータ、サーバ、パーソナルコンピュータ、ネットブック、モバイル装置、スマートフォン、プロジェクタ、テレビを含む。
【００２１】
アプリケーション：クライアントによって使用されるソフトウェア。アプリケーションの例は、限定されることなく、マイクロソフトオフィスアプリケーション、写真編集ソフトウェア、及びメディアプレーヤを含む。
【００２２】
入力性能：人又は装置又は他のアプリケーションからの入力情報を受信する装置の能力。入力性能の例は、限定されることなく、人の声、ビデオデータ、モーション検出、加速度計センサ、温度センサ、圧力センサ（例えば、大気圧又は接触圧力）、目の動き、キーボード及びマウス、データファイル、他のアプリケーションから受信されるデータストリームを含む。
【００２３】
出力性能：データを出力として他の装置又は他のアプリケーションに送信するため、又は、人によって知覚され得るように出力を提供するための、ある装置の能力。出力性能の例は、大又は小スクリーン上での表示性能、３Ｄ表示、音響を含む。
【００２４】
演算性能：プログラミング言語の１つにおいて作成されるプログラムを実行することによって演算を行う装置の能力。
【００２５】
Ｉ／Ｏ／Ｃグラフ：入力、出力及び演算の性能グラフ。グラフは、いかなるときでもユーザ又はその関係によって使用される全ての装置の論理的表現である。Ｉ／Ｏ／Ｃグラフは、いかなる所与のユーザによってもどのコンピュータが使用されるかを明確にする。それはまた、どの装置が演算性能を与えるか、どの装置が入力及び出力性能を与えるか、及び、これらの装置（また、おそらく入力及び出力ストリームを複製する）が互いの間で如何にして入力及び出力を送るか、を明確にする。Ｉ／Ｏ／Ｃグラフは、パーベイシブオペレーティング環境を使用する全ての機会にシステム内の全てのユーザのために作成されるグラフである。
【００２６】
Ｉ／Ｏ／Ｃスーパバイザ：装置が通信する構成要素。装置は、性能をスーパバイザに伝え、さらにスーパバイザは、各ユーザに対して特有のものである。スーパバイザは、パーベイシブコンピューティング環境を使用しているいかなるときも各ユーザについてのＩ／Ｏ／Ｃグラフを維持し統合する。Ｉ／Ｏ／Ｃスーパバイザは、各ユーザについてのデータ、アプリケーション及び装置へのアクセスを維持する。
【００２７】
ネームサービス：物理ネットワークアドレス（ＩＰアドレスのような）から取り出すために、装置に固定ネームを結合させる能力をユーザに与える。
【００２８】
装置エージェント：本システム内で用いる各装置のパーベイシブコンピューティングエージェント。
【００２９】
データプロバイダ：ユーザデータを回収するためにデータストレージプロバイダと通信することについて責任を負う構成要素。
【００３０】
データストレージプロバイダ：ユーザデータストレージサービスを遠隔操作する。
【００３１】
認証及びセキュリティゲートウェイ：ユーザを認証するための構成要素。
【００３２】
バーチャル（仮想）演算装置プロバイダ：ユーザのＩ／Ｏ／Ｃスーパバイザのようなシステムの他の要素からの要求に仮想演算装置を提供することについて責任を負う要素。
【００３３】
アプリケーションストリーマ：アプリケーションストリーミング技術を使用する仮想又は物理演算装置にアプリケーションを展開することに責任を負う構成要素。
【００３４】
アプリケーションイメージストレージ：アプリケーションストリーミング技術を使用する物理又は仮想演算装置に展開されるアプリケーションのイメージのためのストレージ。代わりに、アプリケーションイメージストレージは、所定のオペレーティングシステム内で、ソフトウェアインストレーションの標準プロセスを経由して仮想又は物理演算装置にインストールされるパッケージ化されたアプリケーションを含み得る。
【００３５】
バーチャル（仮想）マシンプロバイダ：要求に応じて仮想マシンを提供することに責任を負う構成要素。
【００３６】
入力エンコーダ：受信された入力をエンコードする能力のある構成要素。
【００３７】
入力デコーダ：受信された入力をデコードする能力のある構成要素。
【００３８】
入力キュー：受信された入力に関するバッファ。
【００３９】
出力キャプチャラ：出力を補足する能力のある構成要素。
【００４０】
出力レンダラ：出力を適切に提供する能力のある構成要素。
【００４１】
出力エンコーダ：送信される出力をエンコードする能力のある構成要素。
【００４２】
出力デコーダ：送信される出力をデコードする能力のある構成要素。
【００４３】
ネットワークスタック：パーベイシブコンピューティング環境内での装置通信のための構成要素。ネットワークスタックは、データ送信の高性能かつ低遅延性を可能にする。
【００４４】
ユーザインターフェース（ＵＩ）シェル：パーベイシブコンピューティング環境での、ユーザインタラクションのための装置上のユーザインターフェース。
【００４５】
装置取得：各装置が、周辺装置を見つけ出し、それらを取得（クライアント要求によるか否かに関わらず）できる。取得は、装置をユーザの個人的なパーベイシブコンピューティング環境内に配置する。
【００４６】
パーベイシブコンピューティングのための本システムは、装置が、それらのＯＳ及びハードウェアに関係なくアプリケーションを作動させることを可能にする。ユーザは、あらゆる装置からのそのデータ、アプリケーション及び仮想マシンにもアクセスでき、そして、幅広い様々な演算装置が支援され得る。アプリケーションは、ほとんど瞬時に（すなわち、ネットワークの状況及び他の要因により、数百ミリ秒から数秒の範囲で、非常に短い期間で）装置間を移動できる。パーベイシブコンピューティングシステム内で、個人的なコンピューティング環境は、データ、アプリケーション、仮想及び物理装置を処理するためのユーザインターフェース（ＵＩ）シェルを提供する。装置は、互いに発見し合うことができ、他の装置に内在する性能を利用できる。アプリケーションストリーミング技術との組み合わせで、「ホット（ｈｏｔ）」な仮想マシンの使用は、待機状態にあるべき仮想機器（すなわち、特定のアプリケーションを駆動する仮想マシン）の数を最小化する。
【００４７】
本パーベイシブコンピューティング環境は、ロボティック装置と同様に、多数の入力、出力及び演算装置を扱うことができる。装置は、例えば、限定されないが、ラップトップ、コンピュータ（ｍａｃ及びｐｃｓ）、テレビ、折り畳み可能な電子スクリーン、ロボティック装置、モバイル装置、携帯電話、アイフォン、タブレット、トラッキングカメラ、モーションセンシング、サングラス、ヘルメット、コンタクトレンズ内に構築される拡張現実ディスプレイ、加速度センシング、モーショントラッキングシステム、マルチタッチ画面、３Ｄディスプレイシステム（ホログラフィックか否かに限らず）、コンピューティングユニットが取り付けられる投影テーブル及びウォール、及びＲＦＩＤリーダ及びタグといった物理及び仮想のものであり得る。
【００４８】
本システムによれば、ユーザは、無制限の数の装置をそのコンピューティング環境内に有し得る。
【００４９】
本システムのユーザインターフェースは、一実施形態によれば、モーションセンシング、ボディトラッキング、マルチタッチ、ボイス及び伝統的な入力性能によるゲイズ入力性能を支援する。
【００５０】
ユーザデータ及びアプリケーションは、いかなる装置からもアクセス可能であり、スクリーン、コンピュータ及び装置の間を移動できる。アプリケーションは、多数のユーザの間で共有され、すなわち、かなりのユーザが同時にアプリケーションを見ることができ、一緒に仕事をすることができる。これは、途切れのない協力を可能にし、その例は、プレゼンテーションを伴うビデオチャットである。他の例としては、オーディオチャット及びテキストチャットを含む。
【００５１】
装置は、互いに見つけ出し、及び、互いの表示、入力及び演算性能を見つけ出すことができる。装置は、それらの入力性能及び表示性能を互いに共有できる。
【００５２】
本システムは、オペレーティングシステムを伴わない装置を支援する多数のオペレーティングシステムを支援する。本システムはまた、多数のデータストレージプロバイダ及びコンピューティングプロバイダを支援する。ユーザは、地理、コスト、バンド幅及び他の要因に基づいて、それらの個人的なパーベイシブコンピューティング環境に関してコンピューティングプロバイダを選択する。
【００５３】
上で議論されたレシーバの一実施形態は、コンタクトレンズディスプレイであり得るということが理解されるであろう。コンタクトレンズディスプレイは、参照によってここに組み入れられる「Augmented Reality in a Contact Lens」、IEEE Spectrum September 2009において議論される。そのようなコンタクトレンズは、着用者に情報を表示でき、無線装置に通信できる。これらの装置は、上で議論されたレシーバとして機能でき、そして、着用者の視野における配置されるグラフィックを配置することによってユーザの現実性を増加させることができる。小型の装置になると、これらの装置は、機能性、例えばグラフィック、指令、及びテキストのみを提供するというように制限され得る。そのような装置の一実施形態は、着用者がその環境で対象物に焦点を合わせるように、関係するテキストを表示できる。
【００５４】
上で議論されるグラフィカル出力は、３Ｄグラフィックを含み得るということが理解されるであろう。３Ｄグラフィックは、多数のカメラによって撮られ、その後にホログラム又は他の３Ｄグラフィックを創るために共に結合される特定のグラフィックであり得る。そのような３Ｄグラフィックは、上のシステムによって容易に支援され、３Ｄグラフィックは、サーバによって適切に圧縮され、レンダリングのためにレシーバに送信される。レシーバが適切な演算資源レンダリング性能を有すると仮定すると、３Ｄグラフィックは、ユーザに提供される。３Ｄグラフィックは、ここで参照によって組み入れられる、「３Ｄ：It's Nearly There」、The Economist - Technology Quarterly、２００９年９月５日、第２２頁、において議論される。
【００５５】
以下の記述において、説明の目的のために、ここで開示される様々な発明の概念の全体的な理解を提供すべく、特定の用語体系が設定される。しかしながら、これらの特定の詳細が、ここに開示される様々な発明の概念を実施するために要求されるのではないということは、当業者にとって明白であろう。
【００５６】
以下の詳細な記載のいくつかの部分は、コンピュータメモリ内のデータビットにおける操作のアルゴリズム及び記号による表示に関して示される。これらのアルゴリズムの記述及び表示は、最も効果的に当業者がその作業の材料を他の当業者に最も効率良く運ぶために、データ処理分野における当業者によって使用される手段である。ここでの方法は、一般に、所望の結果を導く一貫した処理であると考えられる。その処理は、物理量の物理的な操作を含む。通常、必須ではないが、これらの量は、保存され、送信され、結合され、比較され、そして、その他、操作されることが可能な電気又は磁気の信号の形式をとる。主に共通の用法の理由のために、これらの信号をビット、値、要素、記号、文字、用語、数等として参照することが、時には便利であると証明されている。
【００５７】
しかしながら、全てのこれらの及び類似の用語は、適切な物理量に関係し、そして、これらの量に適用される単に便利なラベルであるということが留意されるべきである。他に明確に述べられない限り、下記の議論から明らかなように、詳細な説明全体にわたり、「処理（プロセッシング）」、又は「演算（コンピューティング）」、又は「計算」、又は「決定」、又は「表示」等の用語を用いる議論が、コンピュータシステムのレジスタ及びメモリ内で、物理（電子）量として表わされるデータを、コンピュータシステムのメモリ又はレジスタ又はそのような他の情報ストレージ、変換又は表示装置内で、物理量として同様に表示される他のデータに操作及び変換するコンピュータシステム又は類似の電子演算装置の動作及び処理を参照するということが理解される。
【００５８】
本方法及びシステムはまた、ここでオペレーションを実行する装置に関する。この装置は、要求される目的のために特別に構成され、又は、選択的に動作され若しくはコンピュータ内に保存されるコンピュータプログラムによって選択的に作動させられ又は再構成される汎用コンピュータを備え得る。そのようなコンピュータプログラムは、限定されることなく、フロッピーディスク、光ディスク、ＣＤ−ＲＯＭ、及び光磁気ディスクのあらゆる種類のディスク、リードオンリーメモリ（「ＲＯＭ」）、ランダムアクセスメモリ（「ＲＡＭ」）、ＥＰＲＯＭ、ＥＥＰＲＯＭ、磁気又は光カード、又は、電気指令を保存し、それぞれシステムバスに接続されるあらゆる媒体といったコンピュータ読み込み可能なストレージ媒体内に保存され得る。
【００５９】
ここで示されるアルゴリズム及び表示は、いかなる特定のコンピュータ又は他の装置にも本質的に関係するものではない。様々な汎用システムが、ここでの示唆に従うプログラムとともに使用され、または、要求される方法ステップを実行するためのより特別な装置を構成することが便利であることを証明し得る。これらの様々なシステムの要求される構造は、以下の記述から明らかとなるであろう。加えて、本発明は、あらゆる特定のプログラミング言語への参照を伴って記述されてはいない。様々なプログラミング言語が、ここで記述される方法及びシステムの示唆を実行するために使用され得るということが理解されるであろう。
【００６０】
図１は、一実施形態による本システムを伴う使用のための例示的なコンピュータアーキテクチャを示す。アーキテクチャ１００の一実施形態は、情報を通信するためのシステムバス１２０と、情報を処理するための、バス１２０に接続されるプロセッサ１１０とを備える。アーキテクチャ１００は、ランダムアクセスメモリ（ＲＡＭ）又は、プロセッサ１１０によって実行される情報及び指令を保存するためにバス１２０に接続される他の動的ストレージ装置１２５（ここではメインメモリとして参照される）とをさらに備える。メインメモリ１２５はまた、プロセッサ１１０によって指令の実行する間に、一時変数又は他の中間情報を保存するために使用され得る。アーキテクチャ１００はまた、プロセッサ１１０によって使用される静的な情報及び指令を保存するためのバス１２０に接続される、リードオンリーメモリ（ＲＯＭ）及び／又は他の静的な記憶装置１２６を含み得る。
【００６１】
磁気ディスク又は光ディスク及びその対応するドライブのようなデータストレージ装置１２７もまた、情報及び指令を保存するためのコンピュータシステム１００に接続され得る。アーキテクチャ１００はまた、インターフェース１３０を経由して、第２のＩ／Ｏバス１５０に接続され得る。ディスプレイ装置１４３、入力装置（例えば英数字入力装置１４２及び／又はカーソル制御装置１４１）を含む複数のＩ／Ｏ装置が、Ｉ／Ｏバス１５０に接続され得る。
【００６２】
通信装置１４０は、ネットワークを経由した他のコンピュータ（サーバ又はクライアント）へのアクセスを許容する。通信装置１４０は、１以上のモデム、ネットワークインターフェースカード、無線ネットワークインターフェース、又は、イーサネット、トークンリング、又は他の種類のネットワークへの接続のために使用される他のよく知られたインターフェース装置を備えていてもよい。
【００６３】
図２は、一実施形態によるパーベイシブコンピューティング環境の例示的なシステムレベルダイアグラムである。パーベイシブコンピューティングシステム２００は、インターネット２０７を経由してデータセンタ（「クラウド」）２０８に通信するクライアント２０９を有する。クライアント２０９は、ユーザエンジン２０２を作動させる装置２０１を有し、その装置は、装置２０１にインストールされていないアプリケーション２０４を表示している。クラウド２０８は、クラウドエンジン２０５及びアプリケーション２０４を作動させるサーバ２０３を有する。クラウドはまた、サーバ２０３又は装置２０１に保存されていないユーザデータ２０６へのアクセスを有する。
【００６４】
図３Ａは、単独のサーバを利用するパーベイシブコンピューティング環境の例示的な一実施形態によるシステムレベルダイアグラムである。パーベイシブコンピューティング環境３００は、クラウド３１１と、１以上の装置（装置＿１  ３０１、装置＿２  ３０２、装置＿Ｎ  ３０３）とを有する。装置＿１  ３０１は、入力性能３０４、出力性能３０５、演算性能３０６、入力エンコーダ及びデコーダ３０７、出力エンコーダ及びデコーダ３０８、装置エージェント３０９、及びネットワークスタック３１０を有し得る。一実施形態による装置は、参照される構成のあらゆる組み合わせを有することができ、それらの全てを有することは要求されない。クラウド３１１は、スーパバイザ３１３（入力、出力、及び演算のためのＩ／Ｏ／Ｃスーパバイザとして参照される）、ネームサービス３１２、ストレージプロバイダ（３１６，３１７）と通信するデータプロバイダ３１４、及び認証及びセキュリティゲートウェイ３１５を有する。
【００６５】
図３Ｂは、多数のサーバを利用するパーベイシブコンピューティング環境の例示的な一実施形態によるシステムレベルダイアグラムである。パーベイシブコンピューティング環境３４０は、クラウド３０８と、１以上の装置（装置＿１  ３１８、装置＿２  ３１９、装置＿Ｎ  ３２０）とを有する。装置＿１  ３１８は、入力性能３２１、出力性能３２４、出力エンコーダ及びデコーダ３２５、装置エージェント３２６、及びネットワークスタック３２７を有し得る。一実施形態による装置は、参照される構成のあらゆる組み合わせを有することができ、そして、それらの全てを有することは要求されない。クラウド３２８は、スーパバイザ３２９（入力、出力、及び演算のためのＩ／Ｏ／Ｃスーパバイザとして参照される）、ネームサービス３３０、ストレージプロバイダ（３３６，３３７）と通信するデータプロバイダ３３１、及び認証及びセキュリティゲートウェイ３３５を有する。クラウド３２８はまた、仮想マシンマネージャ３３３及びアプリケーションストリーマ３３４と通信する仮想コンピューティング装置プロバイダ３３２を有する。仮想マシンマネージャ３３３は、仮想マシン（ＶＭ）プロバイダ３３８に通信し、アプリケーションストリーマ３３４は、アプリケーションイメージストレージ３３９に通信する。
【００６６】
図４Ａは、一実施形態によるパーベイシブコンピューティング環境内での例示的な装置通信グラフを示す。入力／出力／演算スーパバイザ４０１（ここでは「スーパバイザ」として参照される）は、全てが互いに近接する多数の装置（４０２，４０３，４０４，４０５，４０６，４０７）と通信する。装置は、入力、出力及び／又は演算性能を有し得る。装置は、互いに発見し合うことができ、既存の機能性を他の装置に活用するために、選択的に互いに取得し合うことができる。装置４  ４０２は、出力装置であり、取得されていない。装置１  ４０６は、入力装置であり、取得されている。装置２  ４０７も入力装置であり、取得されている。装置３  ４０５は、演算装置であり、取得されている。装置５  ４０７は、出力装置であり、取得されている。装置６  ４０４は、入力及び出力装置であり、取得されている。
【００６７】
装置１のために使用される入力装置の例は、入力エンコーダを伴うアップルのアイフォンであり得る。装置２のために使用される入力装置の例は、入力エンコーダを伴うフルボディモーションセンシングカメラであり得る。装置３のために使用される演算装置の例は、出力エンコーダ及び入力エンコーダを伴う８コアＣＰＵ及びパワフルＧＰＵを伴うサーバであり得る。装置４のために使用され得る出力装置は、出力エンコーダを伴うプロジェクタを有する投影面であり得る。装置５のために使用される出力装置の例は、出力デコーダを伴うテレビセットであり得る。装置６のために使用される入力及び出力装置の例は、入力エンコーダ及び出力デコーダを有するマルチタッチラップトップ画面であり得る。
【００６８】
図４Ｂ及び４Ｃは、一実施形態によるパーベイシブコンピューティング環境内で、アプリケーションの転送前及び後の、例示的な装置通信グラフを示す。図４Ｂにおいて、スーパバイザ４０８は、全てが取得されている４つの装置（４０９，４１０，４１１，４１２）と通信する。入力装置の装置１４０９（例えばアップルのアイフォン）は、入力／出力装置の装置２４１０（例えばネットブック）に近接している。演算装置の装置４４１２（例えば８コアＣＰＵ及びパワフルＧＰＵを伴うサーバ）は、アプリケーションを駆動し、装置２４１０への又は装置２４１０からのストリーミングを行っている。入力及び出力装置（例えばネットブック）の装置３４１１は、取得されているが、アクティブなアプリケーションを表示していない。
【００６９】
図４Ｃもまた、全てが取得されている４つの装置（４０９，４１０，４１１，４１２）と通信するスーパバイザ４０８を含む。しかしながら、装置１  ４０９は、装置３  ４１０に代わりに表示されるように、装置２  ４１０に表示されるアプリケーションを送信する要求を行っている。装置４  ４１２は、ここで、装置３  ４１１に対してストリーミングを行っている。
【００７０】
図５は、一実施形態によるパーベイシブコンピューティング環境内で用いる例示的なクライアントアーキテクチャを示す。装置５０１は、装置エージェント５１６及びネットワークスタック５１７を有する。装置５０１はまた、入力キャプチャラ５０８、入力エンコーダ５１２、入力デコーダ５１３、入力キュー５０９、出力キャプチャラ５１０、出力レンダラ５１１、出力エンコーダ５１４、出力デコーダ５１５、及び演算要素（５０２，５０３，５０４，５０５）の少なくとも１つを有する。装置５０１は、ユーザインターフェース（ＵＩ）シェル５０６及びアプリケーション５０７を選択的に有し得る。
【００７１】
図６Ａは、一実施形態によるパーベイシブコンピューティング環境で用いる例示的な単純な出力装置アーキテクチャを示す。単純な出力装置６０１は、装置エージェント６０４とネットワークスタック６０５とを有する。単純な出力装置はまた、出力デコーダ６０３と出力リーダラ６０２の少なくとも１つを有する。
【００７２】
図６Ｂは、一実施形態によるパーベイシブコンピューティング環境で用いる例示的な装置コントローラアーキテクチャを示す。装置コントローラ６０６は、装置エージェント６１０とネットワークスタック６１１とを有する。装置コントローラ６０６はまた、入力キャプチャラ６０７と入力エンコーダ６０８の少なくとも１つを有する。装置コントローラは、ユーザインターフェース（ＵＩ）シェル６０９を選択的に有し得る。
【００７３】
図６Ｃは、一実施形態によるパーベイシブコンピューティング環境内で用いる例示的なパフォーマンスコンピューティング（演算）装置を示す。パフォーマンスコンピューティング装置（又はクラウドサーバ）６１２は、装置エージェント６２０とネットワークスタック６２１とを有する。パフォーマンスコンピューティング装置は、ＣＰＵ６１３、ＧＰＵ６１４、入力デコーダ６１６、入力キュー６１８、出力キャプチャラ６１７、及び出力エンコーダ６１９の少なくとも１つを有する。パフォーマンスコンピューティング装置６１２は、アプリケーション６１５を選択的に有し得る。
【００７４】
図６Ｄは、一実施形態によるパーベイシブコンピューティング環境内で用いる例示的な装置アーキテクチャを示す。ネットブック状の装置６２２は、装置エージェント６２９とネットワークスタック６３０とを有する。ネットブック状の装置６２２はまた、入力デコーダ６２７、入力エンコーダ６２４、ＣＰＵ６２５、グラフィック６２６、及び出力レンダラ６２３の少なくとも１つを有する。ネットブック状の装置６２２は、ユーザインターフェース（ＵＩ）シェル６２８を選択的に有し得る。
【００７５】
図６Ｅは、一実施形態によるパーベイシブコンピューティング環境内で用いる例示的で単純なオペレーティングシステムアーキテクチャを示す。単純なオペレーティングシステム６３１は、装置エージェント６３４とネットワークスタック６３３とを有する。単純なオペレーティングシステム６３１は、ビデオコーデック６３２を有し、ユーザインターフェース（ＵＩ）シェル６３５を選択的に有する。
【００７６】
図７は、一実施形態によるパーベイシブコンピューティング環境内で用いる例示的なクラウドアーキテクチャを示す。クラウドアーキテクチャ７００は、スーパバイザ７０１とネームサービス７０２とを有する。クラウドアーキテクチャ７００は、ストレージプロバイダ（７０５，７０７）と通信する仮想コンピューティング装置プロバイダ７１０とデータプロバイダ７０６とを有する。バーチャル（仮想）コンピューティング装置プロバイダ７１０は、バーチャル（仮想）マシンマネージャ７０９及びアプリケーションストリーマ７１１と通信する。バーチャル（仮想）マシンマネージャ７０９は、バーチャルマシンプロバイダ７０８と通信し、アプリケーションストリーマ７１１は、アプリケーションイメージストレージ７１２と通信する。クラウドアーキテクチャ７００は、認証及びセキュリティゲートウェイ７１３を有する。
【００７７】
クラウドアーキテクチャ７００はまた、一実施形態による支払いエンジン７０３と、ライセンスマネジメントエンジン７０４とを有する。支払いエンジン７０３は、サービスのためのクライアントからの支払いをコーディネートし、ライセンスマネジメントエンジン７０４は、パーベイシブコンピューティング環境内で利用されるアプリケーションのためのライセンシングプロトコル及び要求を管理する。
【００７８】
図８Ａ−８Ｃは、一実施形態によるパーベイシブコンピューティング環境シナリオを例示し、あらゆるコンピュータがあらゆるユーザによって使用され得る。コンピュータは、データ、アプリケーション、仮想又は物理演算装置及びロボットを管理すべく、ユーザのためのユーザインターフェースシェルを表示する。ユーザは、仕事を完了し、認証を解除し、そして、コンピュータは、ユーザのコンピューティング環境を隠す。次のユーザは、コンピュータにアクセスでき、認証され、そして、ローカル及びパブリック装置と同様に、その人のデータ、アプリケーション、仮想コンピュータにアクセスする。シナリオは、クラウドオペレーティング環境及び上記の参照されるプロトコルによって可能になる。コンピュータにとって、全てのユーザのデータを保存し、ユーザのアプリケーションを有効にすることは不可能であろう。
【００７９】
例示的なパーベイシブコンピューティング環境８００は、認証装置８０２を有するコンピュータ１  ８０１を含む。コンピュータ１  ８０１は、無線ネットワークアダプタ８０３を使用するネットワークに接続される。例示的なパーベイシブコンピューティング環境８１０は、認証装置８０２を有するコンピュータ１  ８０１を含み、コンピュータ１  ８０１は、無線ネットワークアダプタ８０３を使用するネットワークに接続される。環境８１０は、認証装置８０５を有するユーザ１  ８０４を含む。ユーザ１  ８０４は、認証装置８０５を、認証装置８０２に適切に近接させて配置し、そして、８０４のユーザ１のデータは、コンピュータ１  ８０１内に導入される。結果としての環境８１１は、ユーザ１のデータ、アプリケーション、及びコンピュータ８０１における装置８０６の表示を含む。ユーザ１  ８０４が、近接位置から離れる場合（より詳しくは、８０４のユーザ１の認証装置８０５がもはや認証装置８０２に近接していない場合）、８０４のユーザ１のデータは、もはや表示されず、コンピュータ１  ８０１にアクセス可能ではなく、そして、環境は、８００で例示される状態に戻る。
【００８０】
その後、ユーザ２  ８０７が、例示的なコンピューティング環境８１２内でコンピュータ１  ８０１にアクセスできる。例示的なコンピューティング環境８１２は、認証装置８０２を有するコンピュータ１  ８０１を含み、コンピュータ１  ８０１は、無線ネットワークアダプタ８０３を使用するネットワークに接続される。環境８１０は、認証装置８０８を有するユーザ２  ８０７を含む。ユーザ２  ８０７は、認証装置８０８を認証装置８０２を適切に近接させて配置し、８０７のユーザ２のデータは、コンピュータ１  ８０１内に導入される。結果としての環境８１３は、ユーザ２のデータ、アプリケーション、コンピュータ１  ８０１における装置８０９の表示を含む。８０７のユーザ２が、近接位置から離れる場合（より詳しくは、８０７のユーザ２の認証装置８０８がもはや認証装置８０２に近接していない場合）、８０７のユーザ２のデータは、もはや表示されず、コンピュータ１  ８０１にアクセス可能ではなく、そして、環境は、８００で例示される状態に戻る。
【００８１】
図９Ａ−９Ｃは、一実施形態による例示的なパーベイシブコンピューティングシナリオを示し、アプリケーションはユーザに従う。ユーザが、ラップトップにおける自分の個人的なコンピューティング環境にログインし、そして、ユーザは、作動中のアプリケーションを有する。アプリケーションは、実際にクラウドオペレーティング環境内で作動しており、あらゆるオペレーティングシステム又はアプリケーションであり得る。ユーザは、自分のラップトップから離れ、テレビに接近（ＲＦＩＤリーダが、ユーザを感知し、取り付けられたＰＣがユーザを認証）し、アプリケーションは、瞬時にテレビへと移動する。例示的なパーベイシブコンピューティング環境９００は、認証装置９０５を有するユーザ１  ９０４を含む。ユーザ１  ９０４は、認証装置９０６によって（認証装置９０５を認証装置９０６に適切に近接して配置することによって）認証され、コンピュータ１  ９０２におけるアプリケーション１  ９０２を作動させている。コンピュータ１  ９０１は、無線ネットワークアダプタ９０３を使用するネットワークに接続される。
【００８２】
ユーザ１  ９０４は、コンピュータ１  ９０１から離れ、パーベイシブコンピューティング環境９０７内のコンピュータ２  ９０８に向かう。コンピュータ１  ９０８は、ネットワークアダプタ９０３を使用するネットワークに接続される。ユーザ１  ９０４は、認証装置９０５を認証装置９１１に適切に近接して配置することによって認証され、アプリケーション１  ９０２は、ユーザ１  ９０４が離れる前にコンピュータ１  ９０１内にあったように、同じ状態で自動的にコンピュータ１  ９０８に移動する。
【００８３】
ユーザ１  ９０４は、他の環境９０９に向かってさらに近づくことができ、環境９０９は、無線ネットワークアダプタ９０３を使用するネットワークに接続されるＨＤＴＶ９１０を含む。ＨＤＴＶ９１０は、認証装置９１２を有し、９０４のユーザ１の認証装置が近接すると、ユーザ１  ９０４が認証される。一旦、ユーザ１  ９０４が認証されると、アプリケーション１  ９０２は、ユーザ１  ９０４が離れる前に、コンピュータ２  ９０８上にあるように、同様にＨＤＴＶ９１０に表示される。
【００８４】
図１０Ａ−１０Ｃは、例示的なパーベイシブコンピューティングシナリオを示し、ソフトウェアアプリケーションがハードウェア装置から独立している。ラップトップは、アプリケーションを「作動させ」ていることが可能であり、シャットダウン可能であり、そして、アプリケーションは、操作中のままである。例示的なパーベイシブオペーレーション環境１０００は、制御装置１００４（例えば、アイフォン又はウィーモート）、コンピュータ１  １００１、及びコンピュータ２１００３を含む。コンピュータ１  １００１は、アプリケーション１１００２を「作動」している。制御装置１００４は、入力、例えば、コンピュータ２  １００３に向かうウェイビングモーションを提供でき、環境は、１００５において例示されるようにシフトする。環境１００５は、コンピュータ１  １００１、制御装置１００４、及びコンピュータ２１００３を含むが、しかし、コンピュータ２  １００３は、ここでは、アプリケーション１  １００２を「作動」させている。アプリケーション１  １００２は、コンピュータ１  １００１をそのままにする場合と同様に、同じ状態で、表示され／作動している。
【００８５】
さらに他の例示的な環境１００６は、コンピュータ１  １００１、コンピュータ２  １００３、及び制御装置１００４を含む。コンピュータ１  １００１は、シャットダウン可能であり、アプリケーション１  １００２は、さらにコンピュータ２  １００３上で作動する。
【００８６】
図１１Ａ−１１Ｅは、一実施形態による例示的なパーベイシブコンピューティング環境を示し、アプリケーションが、電子新聞からテーブル画面に移動する。ユーザが、個人的なコンピューティング環境に入り、クラウドオペレーティング環境内に休眠状態で保存されたアプリケーション（プレゼンテーション）を再開させる。それはレガシーアプリケーションであり、フレキシブルスクリーンは、それにおけるレガシーオペレーティングシステムの欠如を理由として、通常、それを作動させることができない。しかしながら、それは、クラウドオペレーティング環境から視覚的にストリームされ、電子新聞のビルトインデコーダディスプレイでは可能である。ユーザインターフェース（ＵＩ）シェルにより、スクリーン上のオブジェクトの応答性の良いローカルドラッギング及びリサイジングが、リモートアプリケーションの作動の遅延の影響を軽減可能にする。ユーザは、発見された共同の投影装置（それに取り付けられる演算ユニットを有し、ユニットは、ネットワーク接続性を有する）に対してアプリケーションをドラッグする。クラウドオペレーティング環境は、これを認識し、新たな装置に対するアプリケーションのストリーミングを開始する。
【００８７】
例示的な環境１１００は、ユーザ１  １１０２、フレキシブルスクリーン１１０１（例えば電子新聞）、及び、無線ネットワークアダプタ１１０３を含む。例示的な環境１１０４において、１１０２のユーザ１のデータ１１０５は、上記の参照プロトコル及びクラウドオペレーティング環境をフレキシブルスクリーン１１０１に使用してストリームされる。例示されるように、例示的な環境１１０６に示されるように、ユーザ１  １１０２は、フレキシブルスクリーン１１０１に対してストリームされるアプリケーション１１０９を有し得る。
【００８８】
さらなる他の例示的な環境１１１０及び１１１４が、追加のプロジェクタ１１０７及び投影面１１０８を含む。ユーザ１は、アプリケーション１  １１０９を投影面１１０８に対してドラッグし、クラウドオペレーティング環境は、上記の参照プロトコルを投影装置１１０８に使用してアプリケーションをストリーミングすることを開始する。ユーザ１  １１０２は、入力１１１２を制御装置１１１１に提供でき、プロジェクション画面１１０８に対するアプリケーションストリーミングが１１１３に応答する。
【００８９】
図１２は、一実施形態による例示的なパーベイシブコンピューティング環境シナリオを示し、制御装置が他の装置及びアプリケーションを制御する。例示的な制御装置は、アイフォンであり得る。アプリケーションは、投影テーブル上で作動している。ユーザは、アイフォンをアプリケーションのための入力装置として設定し、ユーザは、アプリケーション内でタイプするためにアイフォンキーボードを起動する。アイフォン入力は、文字や文章を表示するクラウドオペレーティング環境に、仮想マシンに、そしてその後、アプリケーションコードに対してリダイレクトされる。この新たな視覚的情報は、傍受され、投影装置に送信される。プロジェクタに取り付けられるコンピューティング装置におけるデコーダは、テーブルに表示される視覚的情報をデコードする。例示的なパーベイシブ環境１２００が、入力手段（例えばキーボード）を有する制御装置１  １２０１を使用するユーザ１  １２０２を含み、制御装置１２０１は、無線ネットワークアダプタ１２０３を使用する無線ネットワークに接続される。無線ネットワークアダプタ１２０３を使用する無線ネットワークはまた、プロジェクタ（投影装置）１２０７及び投影面１２０５である。ユーザ１  １２０２によって制御装置１  １２０１に入力される入力１２０４は、投影面１２０５に表示１２０６される。
【００９０】
図１３Ａ−１３Ｄは、一実施形態による例示的なパーベイシブコンピューティング環境シナリオを示し、装置が制御装置からの入力に応答する。例示的なパーベイシブコンピューティング環境１３００は、無線ネットワークアダプタ１３０３を使用する無線ネットワークに接続される制御装置１３０１を使用するユーザ１  １３０２を含む。ＨＤＴＶ１３０４もまた、無線ネットワーク１３０３に接続される。他の例示的な環境１３０７が、入力１  １３０５を制御装置１３０１に入力するユーザ１  １３０２と、ＨＤＴＶ１３０４上で表示される入力１  １３０６の表示とを含む。
【００９１】
他の例示的な環境１３１２は、入力２  １３１０を制御装置２  １３１０（例えばウィーモート）に入力するユーザ１  １３０２を含む。制御装置トラッカ１３０８が、制御装置２  １２１０の移動をトラックし、入力２  １３１１の表示が、ＨＤＴＶ１３０４に現れる。さらに他の例示的な環境は、入力３  １３１５を制御装置３  １３１４に入力するユーザ１  １３０２を含み、入力３    １３１６への応答がＨＤＴＶ１３０４に表示される。例示的な入力３  １３１６は、アプリケーション内のフレームをリサイジングし、マルチタッチとして参照されるアイフォンの例示的な特徴を利用している。
【００９２】
図１４Ａ−１４Ｂは、一実施形態による例示的なパーベイシブコンピューティング環境シナリオを示し、装置が、制御装置からの入力に応答する。例示的なパーベイシブコンピューティング環境１４００は、無線ネットワークアダプタ１４０３を使用する無線ネットワークに接続される制御装置１  １４０１を使用するユーザ１  １４０２を含む。ユーザ１  １４０２は、制御装置１１４０１を使用する装置２  １４０４を制御し、装置２  １４０４は、無線ネットワークアダプタ１４０３を使用する無線ネットワークに接続される。例示的な環境１４０５において、ユーザ１  １４０２は、入力１  １４０６を制御装置１  １４０１に与え、装置２は、入力１４０７に応答する。この装置シナリオの例は、アイフォン及びルンバを含む。ユーザは、アイフォンを振り、又は、身振りをして、ルンバは、それに応じて移動する。このシナリオは、上記の参照プロトコル及びクラウドオペレーティング環境を使用して可能になる。
【００９３】
以下は、本システムの多数の実施形態によるシナリオの例である。当業者は、本発明が２つの例示的な実施形態を使用して記載された一方で、他のシナリオが本発明の開示の範囲において可能である旨を理解する。例えば、要素の役割及び関係が、本発明の原理に従って交換されかつ拡張される。用例及び定義は以下を含む。
【００９４】
〈ｉｄ〉−持続的な特性を有するオブジェクト
【００９５】
［ｉｄ］−システム内の何処かで現在作動中の指名されたエージェント
【００９６】
output = [sender]=>[receiver](args) −［sender］エージェントがメッセージを［receiver］に送り、［receiver］エージェントが出力とともに応答する。
【００９７】
シナリオ１
【００９８】
参加者
○  id〈user〉を伴うユーザ及びそのスーパバイザ[supervisor]。
○  id〈phone〉を伴うｉＰｈｏｎｅ及びそこで作動中のエージェント［phone］。
○  装置〈dev〉及びそこで作動中のエージェント［dev］。
○  ヴァーチャルマシンマネージャ［VMManager］。
○  アプリケーションid〈app〉。
○  アプリケーションが動作中であるバーチャルアプライアンス〈va〉。
【００９９】
シナリオ
・  ユーザがｉＰｈｏｎｅを立ち上げ、ユーザが認証情報を入力する。
・  アイフォンは、id〈Phone〉を有し、ユーザはid〈user〉を有する。
・  アイフォンは、アクセスポイントに接続し、ユーザのスーパバイザに要求を送信する：
・  [phone]=>[supervisor]('acquire', [device: <phone>]) 
・  スーパバイザは以下を行う：
・  return acquire(<phone>) 
・  アイフォンは、要求をスーパバイザに「現状の〈user〉を取得する」旨の要求を送信する。
・  state = [phone]=>[supervisor]('getState') 
・  スーパバイザは以下を行う：
・  return getState()
・  アイフォンは、ユーザに既知のオンラインで利用可能な全ての装置のリストを示す。
・  アイフォンは、上記で取得された状況における情報を使用する。
・  ユーザは、現在利用可能な装置を選択し、「アプリケーションの立ち上げ」を選択する。
・  選択された装置は、id〈dev〉を有する。
・  アイフォンは、「〈dev〉で立ち上げられ得るアプリケーションをリストにする」旨の要求を送信する：
・  apps = [phone]=>[supervisor]('getApps', [device:<dev>]) 
・  スーパバイザは以下を行う：
・  capabilities = <dev>.capabilities['consume', 'output']
・  appList = [supervisor]=>[VMManager]('compatibleApps', capabilities) 
・  return appList
・  アイフォンは、この装置上で立ち上げられ得る利用可能なアプリケーションのリストを示す。
・  アイフォンは上記で取得されたアプリを使用する。
・  ユーザは、アプリケーションを選択し、それを立ち上げる。
・  選択されたアプリケーションは、id〈app〉を有する。
・  アイフォンは、スーパバイザに「〈dev〉での〈app〉の立ち上げ」を求める：
・  [phone]=>[supervisor]('launch', [app:<app>, device:<dev>])
・  スーパバイザは、ＶＭマネージャに、〈user〉のために〈app〉を立ち上げることを求める。
・  acquire(<dev>)
・  <va> = [supervisor]=>[VMManager]('launch', [app:<app>, user:<user>])
・  acquire(<va>) 
・  return Ok 
・  スーパバイザは、「〈va〉への接続」を〈dev〉に伝える：
・  connect('output', <va>, <dev>)
・  アプリケーションが、装置のスクリーンに出現する。
・  アイフォンの入力が、装置に、そして最終的にアプリケーションにリダイレクトされる。
・  スーパバイザは、入力を〈dev〉にリダイレクトすることを〈phone〉に伝える。
・  connect('input', <phone>, <dev>)
・  〈dev〉上の装置エージェントが受信された入力を、ＨＤＴＶを通じて、システム及び遠隔のアプリケーションに送信（ブロードキャスト）する。
【０１００】
シナリオ２
【０１０１】
参加者
・  id〈user〉を伴うユーザ及びそのスーパバイザ[supervisor]。
・  id〈phone〉を伴うアイフォン及びそこで作動中のエージェント［phone］。
・  リモートアプリケーションを示し、アイフォンの入力を維持する、id〈mac〉を伴うＭａｃ及びエージェント［mac］。
・  id〈pc〉を伴うＰＣ及びエージェント［pc］
【０１０２】
シナリオ：
・  ユーザは、装置（Ｍａｃ）上で作動中のアプリケーションを有し、アイフォンの入力が同様にこの装置にリダイレクトされる。
・  ユーザは、id〈user〉と、関係するスーパバイザ［supervisor］とを有する。
・  装置idは、〈mac〉であり、エージェントidは、［mac］である。
・  アイフォンは〈phone〉であり、エージェントは［phone］である。
・  アプリケーションは、ヴァーチャルアプライアンス〈va〉上で動作している。
・  ユーザは、他の装置（ＰＣ）の近くを歩き、この装置上で認証するための自己のＲＦＩＤカードを使用する。
・  装置のidは〈pc〉であり、そこで作動中のエージェント［pc］を有する。
・  ＲＦＩＤハードウェアは、ユーザid〈user〉を含む［pc］に信号を送信する。
・  ［pc］は、ユーザが近くのＰＣを有することをスーパバイザに通知する：
・  state = [pc]=>[supervisor]('acquire', [device:<pc>])
・  … (same steps as in "Launch application from iPhone")
・  ＰＣは、全てのユーザの装置の現在の状況を表示する。
・  アプリケーションは、ＭａｃからＰＣへと移動する。
・  ＰＣは、スーパバイザに全ての出力をＰＣ自体に移動させるよう求める：
・  [pc]=>[supervisor]('redirectAll', [type:'output', device:<pc>]) 
・  Supervisor redirects output from all owned devices to PC: 
・  redirectAll('output', <pc>)
・  アイフォンの入力は、この段階でＰＣにリダイレクトされている。
・  ＰＣは、全ての所有される装置から入力を取得するよう、スーパバイザに求める：
・  [pc]=>[supervisor]('redirectAll', [type:'input', device:<pc>])
・  スーパバイザは、全ての入力装置に、ＰＣと接続するよう求める。
・  redirectAll('input', <pc>)
【０１０３】
一実施形態によれば、スーパバイザは、以下のような限定されない、いくつかの機能を利用できる：
・  acquire(device):
・    <device>.online = True
・    <device>.currentOwner = <user>
・    <user>.ownedDevices.append(<device>)
・    return Ok
・  release(device):
・    if <device>.currentOwner != <user>: return Ok 
・    <device>.currentOwner = None
・    <user>.ownedDevices.remove(<device>)
・    return Ok
・  getState(): 
・    devices = <user>.knownDevices 
・    output = [] 
・    for each <device> in devices: output.append([id:<device>, location:<device>.location, name:<device>.name, available: <device>.online and <device>.currentOwner == None, …])
・    return output
・  connect(type, producer, consumer):
・    secret = randomString() 
・    if <producer>.role[type] == Both and <consumer>.role[type] == Both: server = <producer>, client = <consumer>
・    if <producer>.role[type] == Both and <consumer>.role[type] == Passive: server = <consumer>, client = <producer> 
・    if <producer>.role[type] == Both and <consumer>.role[type] == Active: server = <producer>, client = <consumer>
・    …
・    if <producer>.role[type] == <consumer>.role[type]: return Error 
・    [supervisor]=>[server]('acceptConnection', [type:type, from:client, secret:secret]) 
・    [supervisor]=>[client]('makeConnection', [type:type, to:server, secret:secret]) 
・    <user>.connections.append([type:type, producer:<producer>, consumer:<consumer>] 
・    return Ok
・  disconnect(type, producer, consumer): 
・    [supervisor]=>[producer]('disconnect', [role:'producer', type:type, with:<consumer>]) 
・    [supervisor]=>[consumer]('disconnect', [role:'consumer', type:type, with:<producer>]) 
・    <user>.connections.remove([type:type, producer:<producer>, consumer:<consumer>] 
・    return Ok
・  redirectAll(type, consumer):
・    for each [conType, conProducer, conConsumer] in <user>.connections: if conType == type and conConsumer != consumer: disconnect(conType, conProducer, conConsumer); connect(conType, conProducer, consumer)
【０１０４】
パーベイシブコンピューティングのための方法及びシステムが開示されている。ここで記述される実施形態は、説明のためのものであり、本実施形態の主題を限定すると考えられるべきではないということが理解される。様々な変更、使用、代用、再結合、改良、製品の方法が、本発明の範囲又は思想から逸脱することなく、当業者にとって明白となるであろう。
【図１】
2013506170.tif 000003
【図２】
2013506170.tif 000004
【図３Ａ】
2013506170.tif 000005
【図３Ｂ】
2013506170.tif 000006
【図４Ａ】
2013506170.tif 000007
【図４Ｂ】
2013506170.tif 000008
【図４Ｃ】
2013506170.tif 000009
【図５】
2013506170.tif 000010
【図６Ａ】
2013506170.tif 000011
【図６Ｂ】
2013506170.tif 000012
【図６Ｃ】
2013506170.tif 000013
【図６Ｄ】
2013506170.tif 000014
【図６Ｅ】
2013506170.tif 000015
【図７】
2013506170.tif 000016
【図８Ａ】
2013506170.tif 000017
【図８Ｂ】
2013506170.tif 000018
【図８Ｃ】
2013506170.tif 000019
【図９Ａ】
2013506170.tif 000020
【図９Ｂ】
2013506170.tif 000021
【図９Ｃ】
2013506170.tif 000022
【図１０Ａ】
2013506170.tif 000023
【図１０Ｂ】
2013506170.tif 000024
【図１０Ｃ】
2013506170.tif 000025
【図１１Ａ】
2013506170.tif 000026
【図１１Ｂ】
2013506170.tif 000027
【図１１Ｃ】
2013506170.tif 000028
【図１１Ｄ】
2013506170.tif 000029
【図１１Ｅ】
2013506170.tif 000030
【図１２】
2013506170.tif 000031
【図１３Ａ】
2013506170.tif 000032
【図１３Ｂ】
2013506170.tif 000033
【図１３Ｃ】
2013506170.tif 000034
【図１３Ｄ】
2013506170.tif 000035
【図１４Ａ】
2013506170.tif 000036
【図１４Ｂ】
2013506170.tif 000037
【手続補正書】
【提出日】平成24年5月8日(2012.5.8)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
クラウドコンピューティング環境に接続される複数のクライアント装置と、
前記クラウドコンピューティング環境にわたって前記複数のクライアント装置と通信するサーバであって、複数のオペレーションを実行するためのプロセッサハードウェアを含むサーバとを備え、
前記複数のオペレーションは、
前記複数のクライアント装置の第１クライアント装置においてアプリケーションプログラムを実行すること、
前記第１クライアント装置の付近で検出される第２クライアント装置の表示を前記第１クライアント装置から受信すること、ここで、前記第１及び第２クライアント装置は、前記クラウドコンピューティング環境と通信でき、かつさらに地理的な近接範囲内で他のクライアント装置の存在を検出できる装置エージェントを含む、
前記クラウドコンピューティング環境に関して前記第２クライアント装置を認証すること、及び、
前記第２クライアント装置の認証の後に、前記アプリケーションプログラムの実行を前記第１クライアント装置から前記第２クライアント装置へと移動させること
を備えるシステム。
【請求項２】
前記アプリケーションプログラムの実行の前記移動は、
前記認証の後に、前記第１クライアント装置又は前記第２クライアント装置のユーザからのいかなる入力の要求も伴わずに、前記アプリケーションプログラムの実行を前記第１クライアント装置から前記第２クライアント装置へと自動的に移動させること
をさらに含む請求項１に記載のシステム。
【請求項３】
前記アプリケーションプログラムの実行の前記移動は、
前記第１クライアント装置から前記第２クライアント装置への前記アプリケーションプログラムの前記実行を移動させる意図を示すユーザ起動のジェスチャを前記第１クライアント装置から受信すること
をさらに含む請求項１又は２に記載のシステム。
【請求項４】
第２クライアント装置の表示の前記受信は、
前記第１クライアント装置が前記第２クライアント装置から特定の物理的距離内にあるときに、前記第１クライアント装置によって、前記第２クライアント装置の存在を自動的に認識すること
をさらに含む請求項１から３のいずれか１項に記載のシステム。
【請求項５】
前記アプリケーションプログラムの実行の前記移動は、
前記移動に先立って停止した前記アプリケーションプログラムの実行の、前記アプリケーションプログラムの状態点を、前記サーバによって検出すること、及び、
前記サーバによって、前記第２クライアント装置での前記アプリケーションプログラムの実行を起動すること、ここで、起動された実行は、検出された前記状態点で開始する、
をさらに含む請求項１から４のいずれか１項に記載のシステム。
【請求項６】
前記複数のオペレーションは、
前記第１クライアント装置が事前に検出された前記第２クライアント装置に近接する範囲内にないことの表示を前記サーバによって受信すること、および、
前記アプリケーションプログラムの実行を前記第１クライアント装置に戻すように移動させること
をさらに含む請求項１から５のいずれか１項に記載のシステム。
【請求項７】
パーベイシブコンピューティング環境を機能させる方法であって、
複数のクライアント装置をクラウドコンピューティング環境に接続すること、ここで、前記クラウドコンピューティング環境は、前記クラウドコンピューティング環境にわたって前記複数のクライアント装置と通信するサーバであってプロセッサハードウェアをさらに含むサーバを含む、
前記複数のクライアント装置の第１クライアント装置内のアプリケーションプログラムを前記サーバによって実行すること、
前記第１クライアント装置の付近で検出される第２クライアント装置の表示を前記第１クライアント装置から受信すること、ここで、前記第１及び第２クライアント装置は、前記クラウドコンピューティング環境と通信でき、かつさらに地理的な近接範囲内で他のクライアント装置の存在を検出できる装置エージェントを含む、
前記クラウドコンピューティング環境に関して前記第２クライアント装置を認証すること、及び、
前記第２クライアント装置の認証の後に、前記アプリケーションプログラムの実行を前記第１クライアント装置から前記第２クライアント装置へと移動させること
を備える方法。
【請求項８】
前記アプリケーションプログラムの実行の前記移動は、
前記認証の後に、前記第１クライアント装置又は前記第２クライアント装置のユーザからのいかなる入力の要求も伴わずに、前記アプリケーションプログラムの実行を前記第１クライアント装置から前記第２クライアント装置へと自動的に移動させること
をさらに含む請求項７に記載の方法。
【請求項９】
前記アプリケーションプログラムの実行の前記移動は、
前記第１クライアント装置から前記第２クライアント装置への前記アプリケーションプログラムの前記実行を移動させる意図を示すユーザ起動のジェスチャを前記第１クライアント装置から受信すること
をさらに含む請求項７又は８に記載の方法。
【請求項１０】
第２クライアント装置の表示の前記受信は、
前記第１クライアント装置が前記第２クライアント装置から特定の物理的距離内にあるときに、前記第１クライアント装置によって、前記第２クライアント装置の存在を自動的に認識すること
をさらに含む請求項７から９のいずれか１項に記載の方法。
【請求項１１】
前記アプリケーションプログラムを実行の前記移動は、
前記移動に先立って停止した前記アプリケーションプログラムの実行の、前記アプリケーションプログラムの状態点を、前記サーバによって検出すること、及び、
前記サーバによって、前記第２クライアント装置での前記アプリケーションプログラムの実行を起動すること、ここで、起動された実行は、検出された前記状態点で開始する、
をさらに含む請求項７から１０のいずれか１項に記載の方法。
【請求項１２】
前記第１クライアント装置が事前に検出された前記第２クライアント装置に近接する範囲内にないことの表示を前記サーバによって受信すること、および、
前記アプリケーションプログラムの実行を前記第１クライアント装置に戻すように移動させること
をさらに含む請求項７から１１のいずれか１項に記載の方法。
【請求項１３】
以下のステップ、
複数のクライアント装置をクラウドコンピューティング環境に接続すること、ここで、前記クラウドコンピューティング環境は、前記クラウドコンピューティング環境にわたって前記複数のクライアント装置と通信するサーバであってプロセッサハードウェアをさらに含むサーバを含む、
前記複数のクライアント装置の第１クライアント装置内のアプリケーションプログラムを前記サーバによって実行すること、
前記第１クライアント装置の付近で検出される第２クライアント装置の表示を前記第１クライアント装置から受信すること、ここで、前記第１及び第２クライアント装置は、前記クラウドコンピューティング環境と通信でき、かつさらに地理的な近接範囲内で他のクライアント装置の存在を検出できる装置エージェントを含む、
前記クラウドコンピューティング環境に関して前記第２クライアント装置を認証すること、
前記第２クライアント装置の認証の後に、前記アプリケーションプログラムの実行を前記第１クライアント装置から前記第２クライアント装置へと移動させること、
前記第１クライアント装置が事前に検出された前記第２クライアント装置に近接する範囲内にないことの表示を前記サーバによって受信すること、および、
前記アプリケーションプログラムの実行を前記第１クライアント装置に戻すように移動させること、を備え、
第２クライアント装置の表示の前記受信は、
前記第１クライアント装置が前記第２クライアント装置から特定の物理的距離内にあるときに、前記第１クライアント装置によって、前記第２クライアント装置の存在を自動的に認識すること
をさらに備えるプロセスによって作り出されるパーベイシブコンピューティング環境。
【国際調査報告】
2013506170.tif 000038