(57)【要約】  制御公開技法が説明される。１つ又は複数の実装形態で、複数の制御のうちのどれが、１つ又は複数の磁力計、カメラ、又はマイクロフォンを使用して検出される１つ又は複数の入力に対応するかに関して、判定が、コンピューティングデバイスによって行われる。その判定の結果は、そのコンピューティングによって実行される１つ又は複数のアプリケーションにそのコンピューティングデバイスによって公開される。
2015501049.tif 000002
【特許請求の範囲】
【請求項１】
コンピューティングデバイスによって、複数の制御のうちのどれが、１つ又は複数の磁力計、カメラ、又はマイクロフォンを使用して検出される１つ又は複数の入力に対応するかを判定するステップと、
前記コンピューティングデバイスによる前記判定の結果を前記コンピューティングデバイスによって実行される１つ又は複数のアプリケーションに公開するステップと
を含む、方法。
【請求項２】
前記１つ又は複数のカメラが、深度感知を実行するように構成された、請求項１に記載の方法。
【請求項３】
前記１つ又は複数の入力が、前記判定された結果の前記制御に対応する動作を起動させるように構成されたジェスチャーとして前記コンピューティングデバイスによって認識可能である、請求項１に記載の方法。
【請求項４】
前記結果が、前記１つ又は複数のアプリケーションへの事象又はコマンドとして公開される、請求項１に記載の方法。
【請求項５】
前記結果が、キーボード事象である、請求項４に記載の方法。
【請求項６】
前記判定するステップが、前記１つ又は複数のアプリケーションが前記１つ又は複数の入力の目標であることを確かめるステップを含み、前記公開するステップが前記判定するステップに応答して実行される、請求項１に記載の方法。
【請求項７】
前記判定するステップが、前記１つ又は複数の入力を前記１つ又は複数のアプリケーションと互換性のある前記判定されたコマンドに変換するステップを含む、請求項６に記載の方法。
【請求項８】
前記判定するステップおよび前記公開するステップが、前記コンピューティングデバイスシステムによるオペレーションシステムの実行を介して実行される、請求項１に記載の方法。
【請求項９】
前記１つ又は複数のアプリケーションに前記１つ又は複数の入力を出力するステップをさらに含む、請求項１に記載の方法。
【請求項１０】
コンピューティングデバイスによって実装されたシステムであって、
前記コンピューティングデバイスのハードウェアで実行可能な１つ又は複数のアプリケーションと、
前記コンピューティングデバイスの前記ハードウェアを少なくとも部分的に使用して実装されるモジュールであって、タッチを使用することなしに検出されるユーザー対話を記述する１つ又は複数の入力を受信し、前記１つ又は複数のアプリケーションのうちのどれが前記１つ又は複数の入力の目標であるかを判定し、前記１つ又は複数の入力を前記目標とされるアプリケーションによって消費可能な事象に変換し、前記事象を前記目標とされるアプリケーションに公開するように構成された、モジュールと
を備える、システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御公開（Ｃｏｎｔｒｏｌ  Ｅｘｐｏｓｕｒｅ）に関する。
【背景技術】
【０００２】
[0001]ユーザーがコンピューティングデバイスと対話することができる方法は、増え続けている。たとえば、コンピューティングデバイスとの対話は、テキストを使用して最初に実行された。したがって、ユーザーは、通常は、キーボードを使用してテキストを入力し、やはりテキストであったコンピューティングデバイスによる出力を見た。
【０００３】
[0002]これらの技法は、次いで、ユーザーがマウスなどのカーソル制御デバイスで対話することができたグラフィカルユーザーインターフェースに拡張された。グラフィカルユーザーインターフェースは、コンピューティングデバイスへの入力を提供するためにユーザーによって行われるジェスチャーを認識するように構成されたので、その技法は拡張を続けた。たとえば、ジェスチャーは、オブジェクトを選択する、ビデオゲームで対話するためなどに使用され得る。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかし、これらの技法は、従来は、どの動きがどのジェスチャーに対応するかを認識するためなどに、アプリケーション自体によって実行される動作に依存し、したがって、アプリケーション開発者によるアプリケーションの符号化を複雑にし得る。
【課題を解決するための手段】
【０００５】
[0003]制御公開（Ｃｏｎｔｒｏｌ  Ｅｘｐｏｓｕｒｅ）技法が、説明される。１つ又は複数の実装形態で、複数の制御のうちのどれが、１つ又は複数の磁力計、カメラ、又はマイクロフォンを使用して検出される１つ又は複数の入力に対応するかに関して、判定がコンピューティングデバイスによって行われる。その判定の結果は、コンピューティングデバイスによって、そのコンピューティングによって実行される１つ又は複数のアプリケーションに公開される。
【０００６】
[0004]１つ又は複数の実装形態で、システムが、コンピューティングデバイスによって実装される。本システムは、そのコンピューティングデバイスのハードウェアで実行可能な１つ又は複数のアプリケーションと、そのコンピューティングデバイスのハードウェアを少なくとも部分的に使用して実装されるモジュールとを含む。そのモジュールは、タッチを使用することなしに検出されるユーザー対話を記述する１つ又は複数の入力を受信し、その１つ又は複数のアプリケーションのうちのどれがその１つ又は複数の入力の目標であるかを判定し、その１つ又は複数の入力をその目標とされたアプリケーションによって消費可能な事象に変換し、その事象をその目標とされたアプリケーションに公開するように構成される。
【０００７】
[0005]１つ又は複数の実装形態で、１つ又は複数のコンピューター可読記憶媒体が、コンピューティングデバイスによる実行に応答して、そのコンピューティングデバイスの１つ又は複数のカメラから受信される入力からのオペレーティングシステムによって識別される１つ又は複数の制御のためのアプリケーションプログラミングインターフェースを介して１つ又は複数の事象を公開するように構成されたオペレーティングシステムをそのコンピューティングデバイスに実装させる、そこに記憶された命令を備える。
【０００８】
[0006]本概要は、発明を実施するための形態で以下にさらに説明される概念の選択を簡略化された形で紹介するために提供される。本概要は、本特許請求の対象の重要な特徴又は本質的特徴を識別するものではなく、本特許請求の対象の範囲を判定する際の助けとして使用されるものでもない。
【０００９】
[0007]詳細な説明が、添付の図面を参照して説明される。図面において、参照番号の最も左の数字（複数可）は、その参照番号が最初に現れる図面を識別する。本説明および図面における異なる事例における同じ参照番号の使用は、同様の又は同一の項目を示し得る。
【図面の簡単な説明】
【００１０】
【図１】[0008]本明細書に記載の技法を使用するために動作可能な例示的実施形態における環境を示す図である。
【図２】[0009]図１のＮＵＩ入力モジュールとアプリケーションの間の例示的システム通信を説明する図である。
【図３】[0010]ネイティブレイヤー（ｎａｔｉｖｅ  ｌａｙｅｒ）からマネージドレイヤー（ｍａｎａｇｅｄ  ｌａｙｅｒ）に制御を公開するときの図２のＮＵＩ入力モジュールの例示的実装形態におけるシステムを示す図である。
【図４】[0011]複数の制御のうちのどれが１つ又は複数の入力に対応するかに関して判定が行われ、その判定の結果がアプリケーションに公開される、例示的実装形態における手順を示す流れ図である。
【図５】[0012]事象が、タッチを使用することなしに検出される１つ又は複数の入力の目標であるアプリケーションに公開される、例示的実装形態における手順を示す流れ図である。
【図６】[0013]本明細書に記載の技法の実施形態を実装するために、図１〜３を参照して説明されるような任意のタイプのポータブルおよび／又はコンピューティングデバイスとして実装され得る例示的デバイスの様々な構成要素を示す図である。
【発明を実施するための形態】
【００１１】
概説
[0014]コンピューティングデバイスと対話するために使用され得る入力技法は、キーボードを使用して通常は実装されるテキスト入力技法からカメラを使用してキャプチャーされ得るジェスチャーに発展した。しかし、従来の技法は、アプリケーション自体に依存してジェスチャーを認識し、したがって、拡張可能ではなく、アプリケーションを横断する重複した符号化をもたらすことなどがあった。
【００１２】
[0015]制御公開（Ｃｏｎｔｒｏｌ  Ｅｘｐｏｓｕｒｅ）技法が、説明される。１つ又は複数の実装形態で、モジュールは、コンピューティングデバイスのオペレーティングシステムの部分として組み込まれ得る。そのモジュールは、入力を処理するように構成され得る。その入力は、磁力計、カメラ、マイクロフォンなどの様々な入力デバイスに由来し得る。したがって、いくつかの事例で、これらの入力は、タッチを伴わないナチュラルユーザーインターフェースをサポートするために使用され得る。その入力は、１つ又は複数の制御に関連するものなどとして、事象など、コンピューティングデバイスのアプリケーションへの公開のためのモジュールによって、処理され得る。これは、拡張可能システムをサポートするために使用することができ、そして、システム一貫性を維持しながらそれを行うことができ、たとえば、ユーザー体験が損なわれないような形で拡張可能である。したがって、本モジュールは、これらの事象および／又は制御がどのように実装されたかをアプリケーションが「知る必要」なしにアプリケーションにこの機能を提供することができ、そのさらなる論考は、以下の図面に関して見つけることができる。
【００１３】
[0016]以下の論考で、本明細書の記載事項を使用するように動作可能な、例示的環境が、最初に説明される。その例示的環境でならびに他の環境で使用され得る、本技法および手順の例示的説明が、次いで記載される。したがって、本例示的環境は、それらの例示的技法および手順の実行に限定されない。同様に、それらの例示的技法および手順は、その例示的環境における実装に限定されない。
例示的環境
[0017]図１は、本明細書に記載の技法を使用するように動作可能な例示的実装形態における環境１００の図解である。図示された環境１００は、表示デバイス１０４（たとえば、テレビジョン）に通信で結合されたゲーム機として示されるが様々な他の方法で構成され得るコンピューティングデバイス１０２の一例を含む。たとえば、コンピューティングデバイス１０２は、図６に関してさらに説明するように、従来のコンピューター（たとえば、デスクトップパーソナルコンピューター、ラップトップコンピューターなど）、移動局、エンターテインメント機器、ワイヤレス電話、タブレット、ネットブックなどとして構成され得る。したがって、コンピューティングデバイス１０２は、かなりの量のメモリーおよびプロセッサーリソースを有する十分なリソースのデバイス（たとえば、パーソナルコンピューター、ゲーム機）から限定されたメモリーおよび／又は処理リソースを有する低リソースのデバイス（たとえば、従来のセットトップボックス、ハンドヘルドゲーム機）にわたり得る。コンピューティングデバイス１０２はまた、コンピューティングデバイス１０２に１つ又は複数の動作を実行させるソフトウェアに関連し得る。
【００１４】
[0018]コンピューティングデバイス１０２はまた、処理システム１０６と、この場合にはメモリー１０８であるコンピューター可読記憶媒体の一例とを含むものとして示される。処理システム１０６は、それらが形成される材料又はそこで使用される処理機構によって限定されない。たとえば、処理システム１０６は、システムオンチップ、ＣＰＵ、機能ブロックなど、半導体（複数可）および／又はトランジスター（たとえば、電子集積回路（ＩＣ））で構成され得る。そのような文脈で、実行可能命令は、電子的に実行可能な命令でもよい。別法として、処理システム１０６の又はそのための機構、ひいてはコンピューティングデバイスの又はそのための機構は、量子計算、光計算、機械的計算（たとえば、ナノテクノロジーを使用する）などを含み得るが、これらに限定されない。加えて、単一メモリー１０８が示されるが、ランダムアクセスメモリー（ＲＡＭ）、ハードディスクメモリー、取外し可能媒体メモリー、および他のタイプのコンピューター可読媒体などの様々なタイプのおよび組合せのメモリーが使用され得る。
【００１５】
[0019]コンピューティングデバイス１０２はさらに、オペレーティングシステム１１０を含むものとして示される。オペレーティングシステム１１０は、コンピューティングデバイス１０２の基本的機能をコンピューティングデバイス１０２で実行可能なアプリケーション１１２に抽象化するように構成される。たとえば、オペレーティングシステム１１０は、アプリケーション１１２がこの基本的機能が「どのように」実装されるかを知ることなしに書かれ得るように、コンピューティングデバイス１０２の処理システム１０６、メモリー１０８、ネットワーク、入力／出力、および／又は表示機能を抽象化することができる。アプリケーション１１２は、たとえば、表示デバイス１０４によってレンダリングおよび表示されることになるオペレーティングシステム１１０へのデータを、どのようにこのレンダリングが実行されることになるかを理解することなしに、提供することができる。オペレーティングシステム１０８はまた、ファイルシステム、およびコンピューティングデバイス１０２のユーザーによってナビゲート可能なユーザーインターフェースを管理するためなどに、様々な他の機能性を表すことができる。
【００１６】
[0020]オペレーティングシステム１０８はまた、オペレーティングシステム１１０によってサポートされる入力／出力機能の部分として含まれ得るＮＵＩ入力モジュール１１４を含むものとして示される。したがって、ＮＵＩ入力モジュール１１４は、コンピューティングデバイス１０２による入力の認識および／又は出力の提供に関する機能を代表する。たとえば、ＮＵＩ入力モジュール１１４は、ジェスチャーを識別する、そのジェスチャーに対応する動作を実行させる、などのように構成され得る。入力は、様々な異なる方法でＮＵＩ入力モジュール１１４による処理のために検出され得る。
【００１７】
[0021]たとえば、オペレーティングシステム１１０は、図示するようなコントローラー１１６などのハードウェアデバイスでのタッチ対話を介して１つ又は複数の入力を受信するように構成され得る。タッチ対話は、ボタンを押すこと、ジョイスティックを動かすこと、トラックパッドを横切る動き、表示デバイス１０４のタッチスクリーンの使用（たとえば、ユーザーの手１１８の指又はスタイラスの検出）などを伴い得る。タッチ入力の認識は、ゲーム、アプリケーションと対話する、インターネットを閲覧する、コンピューティングデバイス１０２の１つ又は複数の設定を変更するなどのために、コンピューティングデバイス１０２によるユーザーインターフェース出力と対話するために、オペレーティングシステム１１０によって活用され得る。デバイスでのタッチ対話を伴う、様々な他のハードウェアデバイスもまた、企図される。そのようなハードウェアデバイスの例は、カーソル制御デバイス（たとえば、マウス）、遠隔制御（たとえば、テレビジョン遠隔制御）、移動体通信デバイス（たとえば、コンピューティングデバイス１０２の１つ又は複数の動作を制御するように構成されたワイヤレス電話）、および、ユーザー又はオブジェクトの部分へのタッチを伴う他のデバイスを含む。
【００１８】
[0022]ＮＵＩ入力モジュール１１４は、タッチを伴わないことがある対話を認識することができるナチュラルユーザーインターフェース（ＮＵＩ）をサポートするために、オペレーティングシステム１１０によって活用され得る。たとえば、コンピューティングデバイス１０２は、ＮＵＩ入力デバイス１２０を含み得る。ＮＵＩ入力デバイス１２０は、マイクロフォンの使用を介する音声入力を認識するようになど、特定のデバイスをユーザーに触れさせることなしに入力を検出するように様々な方法で構成され得る。たとえば、ＮＵＩ入力モジュール１１４は、音声認識を実行して特定の発話（たとえば、口頭のコマンド）を認識するならびにその発話を提供した特定のユーザーを認識するように構成され得る。
【００１９】
[0023]もう１つの例では、ＮＵＩ入力デバイス１２０が、カメラの使用を介してジェスチャー、提示されたオブジェクト、画像などの認識をサポートするように構成することができる。そのカメラは、異なる視点がキャプチャーされ、それによって深度を判定することができるように、たとえば、複数のレンズを含むように構成され得る。それらの異なる視点は、たとえば、ＮＵＩ入力デバイス１２０からの相対距離、ひいてはその相対距離の変化を判定するために、使用され得る。異なる視点は、奥行感覚としてＮＵＩ入力モジュール１１４によって活用され得る。画像はまた、特定のユーザー（たとえば、顔認識を介する）、オブジェクトなどを識別するための技法などの様々な他の機能を提供するために、ＮＵＩ入力モジュール１１４によって活用され得る。
【００２０】
[0024]ＮＵＩ入力モジュール１１４は、ＮＵＩ入力デバイス１２０を活用して、人体の特定のポイント（たとえば、４８の骨格のポイント）の特徴抽出とともに骨格マッピングを実行して１人又は複数のユーザー（たとえば、４人のユーザーを同時に）を追跡して動き分析を実行することができる。たとえば、ＮＵＩ入力デバイス１２０は、どの体の部分がその動きを行うために使用されたかならびにどのユーザーがその動きを行ったかを含めて、ユーザーによって行われた１つ又は複数の動きを認識するためにＮＵＩ入力モジュール１１４によって分析される画像をキャプチャーすることができる。一例が、ユーザーの手１１８の１本又は複数の指の位置決めおよび運動、および／又は、ユーザーの手１１８全体の運動の認識を介して示される。その動きは、ＮＵＩ入力モジュール１１４によるジェスチャーとして識別されて、対応する動作を起動することができる。
【００２１】
[0025]単一タイプの入力（たとえば、動きジェスチャー）から認識されるジェスチャーならびに複数のタイプの入力、たとえば動きジェスチャーおよびオブジェクトを使用して行われるオブジェクトジェスチャー、を伴うジェスチャーなど、様々な異なるタイプのジェスチャーが、認識され得る。したがって、ＮＵＩ入力モジュール１１４は、入力間の区分を認識および活用することによって、様々な異なるジェスチャー技法をサポートすることができる。ナチュラルユーザーインターフェース（ＮＵＩ）における入力を区別することによって、これらの入力の各々のみによって可能にされるジェスチャーの数もまた増やされることに留意されたい。たとえば、動きは同じでもよいが、異なるジェスチャー（又は、類似のコマンドへの異なるパラメーター）が、異なるタイプの入力を使用して、指示され得る。したがって、ＮＵＩ入力モジュール１１４は、タッチを伴わない様々なユーザー対話のものをサポートするナチュラルユーザーインターフェースを提供することができる。
【００２２】
[0026]したがって、以下の論考は入力の特定の例を説明することがあるが、複数の事例で、異なるタイプの入力が、その趣旨および範囲を逸脱することなしに、使用され得る。さらに、以下の論考における複数の事例で、ジェスチャーはＮＵＩを使用する入力として示されるが、それらのジェスチャーは、タブレットコンピューターのタッチスクリーン機能を使用することなどの様々な異なるデバイスによる様々な異なる技法を使用して入力され得る。
【００２３】
[0027]１つ又は複数の実装形態で、ＮＵＩ入力モジュール１１４は、１つ又は複数のアプリケーション１１２による消費のためにＮＵＩ入力デバイス１２０から受信される入力の処理の結果を公開するように構成され得る。それにより、この例で、アプリケーション１１２の開発者は、アプリケーション１１２自体の部分としてこの処理を具体的に符号化することなしにこの機能にアクセスし、活用することができる。さらに、ＮＵＩ入力モジュール１１４によるこの機能の公開の論考は、以下の図面に関連して見つけられ得る。
【００２４】
[0028]図２は、ＮＵＩ入力モジュール１１４とアプリケーション１１２の間の通信を示す例示的実装形態におけるシステム２００を示す。この例で、ＮＵＩ入力モジュール１１４は、１つ又は複数のアプリケーション１１２による使用のためにＮＵＩを構築するためのメインストリームパラダイムとしてのＮＵＩ入力モジュール１２０（たとえば、音声および画像）などからの、センサーを統合するために、第三者拡張性モデルに従う。
【００２５】
[0029]この部分として、ＮＵＩ入力モジュール１１４は、アプリケーション１１２によって使用可能な制御２０２を提供することができる。制御２０２は、たとえば、その例は磁力、動きデータ、音声コマンドなどを含む予め準備された行動（ｃａｎｎｅｄ  ｂｅｈａｖｉｏｒｓ）を伴う一般に使用されるパラダイムのデフォルトセットをサポートすることができる。ＮＵＩ入力モジュール１１４はまた、第三者の拡張性をサポートするために公開され得る磁力およびデータ構造体のためのアルゴリズムとともに第三者スケーラビリティをサポートするプログラミングモデル、たとえばアプリケーション１１２、に従い得る。
【００２６】
[0030]１つ又は複数の実装形態で、ＮＵＩ入力モジュール１１４は、前述のようなＮＵＩ入力モジュール１２０のカメラおよび／又はマイクロフォンなどの１つ又は複数の入力デバイスからの入力を受信するように構成される。ＮＵＩ入力モジュール１１４は、次いで、アプリケーション１１２がサブスクライブすることができる事象のセット２０４を作り出すことができる。事象２０４は、たとえば、カメラを使用して検出される動き、コンピューティングデバイス１０２のマイクロフォン、磁力計、又は他のセンサーを使用して検出される音声に関連し得る。
【００２７】
[0031]たとえば、オペレーティングシステム１１０は、これらの入力をＮＵＩ入力モジュール１１４に経路指定することができる。ＮＵＩ入力モジュール１１４は、次いで、アプリケーション１１２のうちの１つ又は複数の現在の状態、たとえば、そのアプリケーションが現在使用されているか、事象２０４を「聞いている」かなど、を判定することができる。この状態から、ＮＵＩ入力モジュール１１４は、その入力の目標を判定し、それによって、その目標、たとえばアプリケーション１１２のうちの１つ又は複数、と互換性のあるようにその入力を変換することができる。
【００２８】
[0032]これらの入力は、次いで、コマンドなどとして、アプリケーションプログラミングインターフェースを介して、事象２０４として、制御２０２のうちの特定の１つと関連するなど、様々な方法でアプリケーション１１２に公開され得る。事象２０４は、たとえば、キーボード事象（たとえば、ＮＵＩ入力ジェスチャーがキーボード入力に変換されるような）としてなど、ＮＵＩ入力デバイス１２０に特有なものとして構成され得る。
【００２９】
[0033]入力がアプリケーション１１２との互換性のためにどのように変換されるべきかを判定するために、ＮＵＩ入力モジュール１１４は、アプリケーション１１２と１つ又は複数のハンドシェーキング動作を実行することができる。たとえば、ＮＵＩ入力モジュール１１４は、アプリケーション状態に関する問題のランタイムとハンドシェークを実行して、アプリケーション１１２と互換性のある結果を交渉することができる。使用され得るデータポイントの例は、磁力、フォーカス、所定のジェスチャー、アプリケーション状態などに関連する。
【００３０】
[0034]図３は、ネイティブレイヤーからマネージドレイヤーに制御を公開するものとしてのＮＵＩ入力モジュール１１４の例示的実装形態におけるシステム３００を示す。ネイティブおよびマネージドがこの例には記載されるが、様々な他の非マネージドの実装形態もまた企図されることが容易に明らかとなろう。図示するように、ＮＵＩ入力モジュール１１４は、ネイティブレイヤーで動作する、および、アプリケーション１１２などの目標による消費のためのマネージドレイヤーを介して制御２０２を公開するものとして示される。ＮＵＩ入力モジュール１１４は、入力を受信し、それらの入力の目標を判定し、前述のように結果を公開するために、コンピューティングデバイス１０２の様々な機能を活用するものとして示される。
【００３１】
[0035]たとえば、ＮＵＩ入力モジュール１１４は、ＮＵＩハンドル３０２と、制御パック行動３０４と、ダッシュボード３０８およびコンテンツプレーヤー３１０をそれ自体が使用する制御パック体験ユーザーインターフェース（ＸＵＩ）３０６とを活用することができる。これらのモジュールは、リビングルーム体験の部分として考えることができる。ＮＵＩ入力モジュール１１４はまた、その例がＮＵＩ音声ライブラリー３１２、ＮＵＩ入力ライブラリー３１４、および音響／映像（ＡＶ）３１６として図示される、判定の基礎ならびに入力のソースに使用されるモジュールを含み得る。したがって、ＮＵＩ入力モジュール１１４は、これらのモジュールを使用してアプリケーションランタイムの現在の状態を検査し、入力の目標を判定し、それを、新しい（たとえば、動きに基づく）又はレガシー（たとえば、キーボード）事象の使用を介するなどして、制御２０２を介して公衆表面（ｐｕｂｌｉｃ  ｓｕｒｆａｃｅ）で公開されるパラダイムに変換することができる。
【００３２】
[0036]ＮＵＩ入力モジュール１１４によってサポートされるプログラム可能性の様々な異なるモードが存在する。第１のモードで、ＮＵＩ入力モジュール１１４は、ＮＵＩ入力モジュール１１４によって処理されない未加工のストリームを出力することができ、したがって、アプリケーション開発者は、この未加工のストリームを使用して、ＮＵＩ入力モジュール１１４によって他の方法でサポートされない動作（たとえば、ジェスチャー）を開発することができる。第２のモードは、制御２０２およびユーザーインターフェース内のそのレイアウトをサポートするために使用される。このモードは、「ベークした（ｂａｋｅｄ  ｉｎ）」行動を含むことができ、および／又は、ＮＵＩ入力モジュール１１４によってサポートされる設計仕様に基づくアプリケーション１１２に組み込まれ得る。さらに、ＮＵＩ入力モジュール１１４は、目標による消費のためのＮＵＩ入力モジュール１１４によって計算される結果をどのように構成するかを判定するために、ヒューリスティックスをサポートすることができる。前述のように、これは、「どのように」その結果が出力されるべきかを交渉するために、問題のアプリケーションランタイム間のハンドシェークを伴い得る。
例示的手順
[0037]以下の論考は、前述のシステムおよびデバイスを使用して実装され得る技法を説明する。これらの手順の各々の態様は、ハードウェア、ファームウェア、ソフトウェア、又はそれらの組合せで実装され得る。これらの手順は、１つ又は複数のデバイスによって実行される動作を指定する、そして、それぞれのブロックによる動作の実行について示された順番に必ずしも限定されない、ブロックのセットとして示される。以下の論考の部分で、図１の環境１００と、図２および３のシステム２００〜３００とが参照されることになる。
【００３３】
[0038]図４は、複数の制御のうちのどれが１つ又は複数の入力に対応するかに関して判定が行われ、その判定の結果がアプリケーションに公開される、例示的実装形態における手順４００を示す。判定は、複数の制御のうちのどれが、１つ又は複数の磁力計、カメラ、又はマイクロフォンを使用して検出される１つ又は複数の入力に対応するかに関して、コンピューティングデバイスによって行われる（ブロック４０２）。ＮＵＩ入力モジュール１１４は、たとえば、磁力計、カメラ、又はマイクロフォンから入力を受信することができる。ＮＵＩ入力モジュール１１４は、次いで、どの制御２０２がこれらの入力に対応するかを判定することができる。これらの入力は、グラフィカルユーザーインターフェースの部分としての制御出力などの様々な異なるタイプの制御と連動して使用されて、コンピューティングデバイス１０２の１つ又は複数の動作（たとえば、アプリケーション１１２との対話を介する）を開始することなどができる。
【００３４】
[0039]判定の結果は、そのコンピューティングによって実行される１つ又は複数のアプリケーションにそのコンピューティングデバイスによって公開される（ブロック４０４）。その結果は、たとえば、制御ならびに実行されることになる動作、たとえば、特定のボタンを押すこと、スライダー制御の動き、パニング、内容の選択、「カットアンドペースト」など、を識別することができる。それにより、ＮＵＩ入力モジュール１１４は、アプリケーション１１２の開発者がこの機能性を効率的に活用することができるような、様々な機能性を公開することができる。様々な他の例もまた企図される。
【００３５】
[0040]図５は、タッチを使用することなしに検出される１つ又は複数の入力の目標であるアプリケーションに事象が公開される例示的実装形態における手順５００を示す。タッチを使用することなしに検出されるユーザー対話を記述する１つ又は複数の入力が、受信される（ブロック５０２）。そのユーザー入力は、たとえば、ＮＵＩ入力デバイス１２０の部分としてのカメラ（たとえば、深度感知カメラ）又はマイクロフォンを使用し、検出され得る。様々な他の例もまた、コンピューティングデバイス１０２の方位を検出するため（たとえば、磁力計）などに、企図される。
【００３６】
[0041]その１つ又は複数のアプリケーションのうちのどれがその１つ又は複数の入力によって目標とされるかに関して、判定が行われる（ブロック５０４）。前述のように、ＮＵＩ入力モジュール１１４は、「ハンドシェーク」を実行してアプリケーション１１２の状態を判定し、それにより、どのアプリケーション１１２が事象２０２を受信するために使用可能であるか、どの事象をアプリケーション１１２は「探している」かなどを判定することができる。
【００３７】
[0042]その１つ又は複数の入力は、その目標とされるアプリケーションによって消費可能な事象に変換される（ブロック５０６）。前述の例を続けると、ＮＵＩ入力モジュール１１４は、そのハンドシェークの結果を使用して、１つ又は複数の入力２０２をどのように公開するか、たとえば、どの事象２０２、制御２０２などがアプリケーション１１２によってサポートされるか、を判定することができる。その事象は、次いで、たとえばアプリケーションプログラミングインターフェースを介して、目標とされたアプリケーションに公開される（ブロック５０８）。様々な他の例もまた、前述のように企図される。
例示的システムおよびデバイス
[0043]図６は、本明細書に記載の様々な技法を実装することができる１つ又は複数のコンピューティングシステムおよび／又はデバイスを代表する例示的コンピューティングデバイス６０２を含む全体的に６００にある例示的システムを示す。コンピューティングデバイス６０２は、サービスプロバイダーのサーバー、クライアントに関連するデバイス（たとえば、クライアントデバイス）、オンチップシステム、および／又は、任意の他の適切なコンピューティングデバイスもしくはコンピューティングシステムでもよい。ＮＵＩ入力モジュール１１４は、この機能性が多種多様な異なるコンピューティングデバイス１０２構成に組み込まれ得ることを示すために、コンピューティングデバイス１０２の部分として図示される。この機能性はまた、システム６００を介して、たとえば、複数のデバイスを使用して実装された「クラウドを介する」などして、分散され得る。
【００３８】
[0044]図示するような例示的コンピューティングデバイス６０２は、処理システム６０４、１つ又は複数のコンピューター可読媒体６０６、および、互いに通信で結合された１つ又は複数のＩ／Ｏインターフェース６０８を含む。図示されないが、コンピューティングデバイス６０２はさらに、互いに、様々な構成要素を結合させるシステムバスあるいは他のデータおよびコマンド転送システムを含み得る。システムバスは、メモリーバス又はメモリーコントローラー、周辺バス、ユニバーサルシリアルバス、および／又は、様々なバスアーキテクチャのいずれかを使用するプロセッサーもしくはローカルバスなど、異なるバス構造体のうちの任意の１つ又は組合せを含み得る。制御およびデータラインなど、様々な他の例もまた、企図される。
【００３９】
[0045]処理システム６０４は、ハードウェアを使用して１つ又は複数の動作を実行するための機能を代表する。したがって、処理システム６０４は、プロセッサー、機能ブロックなどとして構成され得るハードウェア要素６１０を含むものとして示される。これは、特定用途向け集積回路又は１つもしくは複数の半導体を使用して形成された他の論理デバイスとしてのハードウェア内の実装形態を含み得る。ハードウェア要素６１０は、それらが形成される材料又はそこで使用される処理機構によって限定されない。たとえば、プロセッサーは、半導体（複数可）および／又はトランジスター（たとえば、電子集積回路（ＩＣ））で構成され得る。そのような文脈で、プロセッサー実行可能命令は、電子的に実行可能な命令でもよい。
【００４０】
[0046]コンピューター可読記憶媒体６０６は、メモリー／記憶装置６１２を含むものとして示される。メモリー／記憶装置６１２は、１つ又は複数のコンピューター可読媒体に関連するメモリー／記憶装置容量を表す。メモリー／記憶装置構成要素６１２は、揮発性媒体（ランダムアクセスメモリー（ＲＡＭ）など）、および／又は、不揮発性媒体（読取り専用メモリー（ＲＯＭ）、フラッシュメモリー、光ディスク、磁気ディスクなど）を含み得る。メモリー／記憶装置構成要素６１２は、固定媒体（たとえば、ＲＡＭ、ＲＯＭ、固定ハードドライブなど）ならびに取外し可能媒体（たとえば、フラッシュメモリー、取外し可能ハードドライブ、光ディスクなど）を含み得る。コンピューター可読媒体６０６は、以下にさらに説明するように様々な他の方法で構成され得る。
【００４１】
[0047]入力／出力インターフェース（複数可）６０８は、ユーザーがコンピューティングデバイス６０２にコマンドおよび情報を入力することを可能にし、情報が様々な入力／出力デバイスを使用してユーザーおよび／又は他の構成要素もしくはデバイスに提示されることを可能にするための機能を代表する。入力デバイスの例は、キーボード、カーソル制御デバイス（たとえば、マウス）、マイクロフォン、スキャナー、タッチ機能性（たとえば、物理的タッチを検出するように構成された容量性又は他のセンサー）、カメラ（たとえば、赤外振動数などの可視の又は非可視の波長を使用して、タッチを伴わないジェスチャーの動きを認識することができる）などを含む。出力デバイスの例は、表示デバイス（たとえば、モニター又はプロジェクター）、スピーカー、プリンター、ネットワークカード、触覚応答（ｔａｃｔｉｌｅ−ｒｅｓｐｏｎｓｅ）デバイスなどを含む。それにより、コンピューティングデバイス６０２は、ユーザー対話をサポートするために、以下にさらに説明されるような様々な方法で構成され得る。
【００４２】
[0048]様々な技法が、ソフトウェア、ハードウェア要素、又はプログラムモジュールとの一般的な関連で本明細書に記載され得る。概して、そのようなモジュールは、特定のタスクを実行する又は特定の抽象化するデータタイプを実装する、ルーチン、プログラム、オブジェクト、要素、構成要素、データ構造体などを含む。本明細書では、「モジュール」、「機能性」、および「構成要素」という用語は、概して、ソフトウェア、ファームウェア、ハードウェア、又はその組合せを表す。本明細書に記載の技法の特徴はプラットフォームに依存せず、本技法が、様々なプロセッサーを有する様々な商用コンピューティングプラットフォームで実装され得ることを意味する。
【００４３】
[0049]記載されたモジュールおよび技法の実装形態は、いくつかの形のコンピューター可読媒体で記憶する又はそれらを横切って送信することができる。そのコンピューター可読媒体は、コンピューティングデバイス６０２によってアクセスされ得る様々な媒体を含み得る。例として、但し限定ではなく、コンピューター可読媒体は、「コンピューター可読記憶媒体」および「コンピューター可読信号媒体」を含み得る。
【００４４】
[0050]「コンピューター可読記憶媒体」は、単なる信号伝送、搬送波、又は信号自体とは対照的に情報の永続的および／又は非一時的記憶を可能にする媒体および／又はデバイスを指し得る。したがって、コンピューター可読記憶媒体は、非信号付き媒体を指す。コンピューター可読記憶媒体は、コンピューター可読命令、データ構造体、プログラムモジュール、論理要素／回路、又は他のデータなどの情報の記憶に適した方法又は技術で実装された、揮発性および非揮発性の、取外し可能および取外し不能な媒体および／又は記憶装置などのハードウェアを含む。コンピューター可読記憶媒体の例は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリーもしくは他のメモリー技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）もしくは他の光記憶装置、ハードディスク、磁気カセット、磁気テープ、磁気ディスク記憶装置もしくは他の磁気記憶装置、又は他の記憶装置、有形的表現媒体、あるいは、所望の情報を記憶するのに適し、コンピューターによってアクセスされ得る製造品を含み得るが、これらに限定されない。
【００４５】
[0051]「コンピューター可読信号媒体」は、ネットワークを介するなど、コンピューティングデバイス６０２のハードウェアに命令を送信するように構成された、信号をもつ媒体を指し得る。信号媒体は、通常は、搬送波、データ信号、又は他の移送機構などの変調されたデータ信号内で、コンピューター可読命令、データ構造体、プログラムモジュール、あるいは、他のデータを実施することができる。信号媒体はまた、任意の情報配信媒体を含む。「変調されたデータ信号」という用語は、それの特性集合のうちの１つ又は複数を有する、あるいは信号内で情報を符号化するような形で変更された、信号を意味する。例として、但し限定ではなく、通信媒体は、ワイヤードネットワーク又は直接ワイヤード接続などのワイヤード媒体と、音響、ＲＦ、赤外線、および他のワイヤレス媒体などのワイヤレス媒体とを含む。
【００４６】
[0052]前述のように、ハードウェア要素６１０およびコンピューター可読媒体６０６は、１つ又は複数の命令を実行するためなどに、本明細書に記載の技法の少なくともいくつかの態様を実装ためにいくつかの実施形態で使用され得る、モジュール、プログラマブルデバイス論理および／又はハードウェアの形で実装された固定デバイス論理を代表する。ハードウェアは、集積回路又はオンチップシステムの構成要素、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、複合プログラマブル論理デバイス（ｃｏｍｐｌｅｘ  ｐｒｏｇｒａｍｍａｂｌｅ  ｌｏｇｉｃ  ｄｅｖｉｃｅ、ＣＰＬＤ）、および、シリコン又は他のハードウェアでの他の実装形態を含み得る。この文脈において、ハードウェアは、そのハードウェアによって実施される命令および／又は論理によって定義されるプログラムタスクを実行する処理デバイス、ならびに、実行のための命令を記憶するために使用されるハードウェア、たとえば前述のコンピューター可読記憶媒体、として動作し得る。
【００４７】
[0053]前述の組合せはまた、本明細書に記載の様々な技法を実装するために使用され得る。したがって、ソフトウェア、ハードウェア、又は実行可能モジュールは、何らかの形のコンピューター可読記憶媒体でおよび／又は１つもしくは複数のハードウェア要素６１０によって実施される１つ又は複数の命令および／又は論理として実装され得る。コンピューティングデバイス６０２は、ソフトウェアおよび／又はハードウェアモジュールに対応する特定の命令および／又は機能を実装するように構成され得る。したがって、ソフトウェアとしてのコンピューティングデバイス６０２によって実行可能なモジュールの実装形態は、たとえば、コンピューター可読記憶媒体および／又は処理システム６０４のハードウェア要素６１０を介して、少なくとも部分的にハードウェア内で実現され得る。その命令および／又は機能は、本明細書に記載の技法、モジュール、および例を実装するために、１つ又は複数の製造品（たとえば、１つもしくは複数のコンピューティングデバイス６０２および／又は処理システム６０４）によって実行可能／動作可能でもよい。
【００４８】
[0054]図６にさらに示すように、例示的システム６００は、パーソナルコンピューター（ＰＣ）、テレビジョンデバイス、および／又はモバイルデバイスでアプリケーションを実行するときにシームレスユーザー体験のためのユビキタス環境を可能にする。サービスおよびアプリケーションは、アプリケーションを使用する、ビデオゲームをする、ビデオを見るなどの間に１つのデバイスから次に移行するときに共通のユーザー体験のためにすべての３つの環境で実質的に同様に動作する。
【００４９】
[0055]例示的システム６００で、複数のデバイスは、中央コンピューティングデバイスを介して相互接続される。その中央コンピューティングデバイスは、複数のデバイスに対してローカルでもよく、又は、複数のデバイスから遠隔に置かれてもよい。一実施形態で、その中央コンピューティングデバイスは、ネットワーク、インターネット、又は他のデータ通信リンクを介してそれらの複数のデバイスに接続された１つ又は複数のサーバーコンピューターのクラウドでもよい。
【００５０】
[0056]一実施形態で、この相互接続アーキテクチャは、複数のデバイスのユーザーに共通のシームレスな体験を提供するために、機能がそれらの複数のデバイスにわたって配信されることを可能にする。それらの複数のデバイスの各々は、異なる物理的要件および能力を有することができ、そして、その中央コンピューティングデバイスは、プラットフォームを使用して、そのデバイスに適合され、さらにすべてのデバイスに共通でもあるデバイスへの体験の配信を可能にする。一実施形態で、目標デバイスのクラスが作成され、そして、体験はデバイスの一般的クラスに適合される。デバイスのクラスは、そのデバイスの物理的特徴、使用のタイプ、又は他の共通の特性によって定義され得る。
【００５１】
[0057]様々な実装形態で、コンピューティングデバイス６０２は、コンピューター６１４、モバイル６１６、およびテレビジョン６１８使用などのための様々な異なる構成を仮定し得る。これらの構成の各々は、一般に異なる構成体および能力を有し得るデバイスを含み、したがって、コンピューティングデバイス６０２は、その異なるデバイスクラスのうちの１つ又は複数に従って構成され得る。たとえば、コンピューティングデバイス６０２は、パーソナルコンピューター、デスクトップコンピューター、マルチスクリーンコンピューター、ラップトップコンピューター、ネットブックなどを含むデバイスのコンピューター６１４クラスとして実装され得る。
【００５２】
[0058]コンピューティングデバイス６０２はまた、携帯電話、携帯用音楽プレーヤー、携帯用ゲーム機、タブレットコンピューター、マルチスクリーンコンピューターなどのモバイルデバイスを含むモバイル６１６クラスのデバイスとして実装され得る。コンピューティングデバイス６０２はまた、略式表示環境（ｃａｓｕａｌ  ｖｉｅｗｉｎｇ  ｅｎｖｉｒｏｎｍｅｎｔｓ）で概してより大きな画面を有する又はそれに接続されるデバイスを含むテレビジョン６１８クラスのデバイスとして実装され得る。これらのデバイスは、テレビジョン、セットトップボックス、ゲーム機などを含む。
【００５３】
[0059]本明細書に記載の技法は、コンピューティングデバイス６０２のこれらの様々な構成によってサポート可能であり、本明細書に記載の技法の特定の例に限定されない。この機能性はまた、以下に記載のようにプラットフォーム６２２を介する「クラウド」６２０を介するなどして、分散システムの使用をすべて又は部分的に介して実装され得る。
【００５４】
[0060]クラウド６２０は、リソース６２４のプラットフォーム６２２を含む、および／又は、それを代表する。プラットフォーム６２２は、クラウド６２０のハードウェア（たとえば、サーバー）およびソフトウェアリソースの基本的機能性を抽象化する。リソース６２４は、コンピューター処理がコンピューティングデバイス６０２から遠隔のサーバーで実行される間に使用され得るアプリケーションおよび／又はデータを含み得る。リソース６２４はまた、インターネットを介しておよび／又はセルラーもしくはＷｉ−Ｆｉネットワークなどの加入者ネットワークを介して提供されるサービスを含み得る。
【００５５】
[0061]プラットフォーム６２２は、コンピューティングデバイス６０２を他のコンピューティングデバイスと接続するためのリソースおよび機能を抽象化し得る。プラットフォーム６２２はまた、プラットフォーム６２２を介して実装されるリソース６２４に対する遭遇する需要に対応するレベルのスケールを提供するために、リソースのスケーリングを抽象化する役割をすることができる。したがって、相互接続されたデバイスの一実施形態で、本明細書に記載の機能の実装形態は、システム６００を介して分散され得る。たとえば、その機能性は、コンピューティングデバイス６０２で部分的に、ならびに、クラウド６２０の機能性を抽象化するプラットフォーム６２２を介して、実装され得る。
結論
[0062]本発明は、構造的特徴および／又は方法論的動作に特有の言語で説明されたが、添付の特許請求の範囲で定義される本発明は、記載された特定の特徴又は動作に必ずしも限定されないことを理解されたい。そうではなくて、それらの特定の特徴および動作は、特許請求されている本発明を実装する例示的形として開示される。
【図１】
2015501049.tif 000003
【図２】
2015501049.tif 000004
【図３】
2015501049.tif 000005
【図４】
2015501049.tif 000006
【図５】
2015501049.tif 000007
【図６】
2015501049.tif 000008
【国際調査報告】
2015501049.tif 000009
2015501049.tif 000010