(57)【要約】  インスタンス化可能なジェチャオブジェクトの技術を説明する。当該技術において、ネイティブのジェスチャ機能は、スクリプトベースの認識インタフェースを使用してアプリケーションに対して抽象化される。ジェスチャオブジェクトは、動的なスクリプト言語を使用してプログラムされるアプリケーションの指示で、異なる対話コンテキストについてインスタンス化され得る。ジェスチャオブジェクトは、ジェスチャ認識及び対応する認識されたジェスチャが適用可能なコンテンツのターゲット要素について考慮すべき、特定のタッチ接触及び／又は他の入力を指定するように構成され得る。作成後、ジェスチャオブジェクトは、アプリケーションの代わりに、ジェスチャ処理オペレーションを管理する。当該処理オペレーションは、ネイティブジェスチャシステムを有する認識装置を作成することと、処理用に入力データを供給することと、生のジェスチャデータをアプリケーション及び／又はターゲット要素に適切なフォーマットに変換することとを含む。したがって、スクリプトベースのアプリケーションは、ジェスチャオブジェクトを使用して、ジェスチャ認識に関連付けられる処理タスクをオフロードし、ネイティブジェスチャ機能を利用することができる。
2015512540.tif 000002
【特許請求の範囲】
【請求項１】
コンピューティングデバイスによって提供されるネイティブのジェスチャ機能によりアプリケーションのジェチャ認識に対処するように、アプリケーションについてジェスチャオブジェクトをインスタンス化するステップと、
前記ジェスチャオブジェクトを、前記アプリケーションによって指定された対話入力及びターゲット要素に関連付けるステップと、
前記アプリケーションの代わりに、前記コンピューティングデバイスによって提供される前記ネイティブのジェスチャ機能を通してジェスチャ認識を容易にする認識装置を作成するステップと、
前記対話入力のための対話入力データを前記認識装置に供給して、前記対話入力データに基づくジェスチャ認識を可能にするステップと、
認識されたジェスチャを示すジェスチャイベントメッセージを前記認識装置から取得するステップと、
前記ジェスチャイベントメッセージによって記述される生のジェスチャデータを、前記アプリケーションの代わりに処理するステップと、
前記アプリケーションについてコンテンツモデルに従って、処理されたジェスチャデータを有するジェスチャイベントを前記関連付けられたターゲット要素に対して発火するステップと
を含む、方法。
【請求項２】
前記ジェスチャオブジェクトは、前記コンピューティングデバイスによって提供される基礎となる絵ネイティブジェスチャ機能のスクリプトベースの抽象化である、請求項１に記載の方法。
【請求項３】
前記アプリケーションは、動的なスクリプト言語を使用してプログラムされる、請求項１に記載の方法。
【請求項４】
当該方法は、前記アプリケーションによって用いられる、前記アプリケーションについてコンテンツをレンダリングするレンダリングエンジンによって提示されるインタフェースを介して実行される、請求項１に記載の方法。
【請求項５】
前記対話入力は、前記コンピューティングデバイスに関連付けられたタッチスクリーンに適用されるタッチ接触を備える、請求項１に記載の方法。
【請求項６】
前記処理するステップは、前記生のジェスチャデータを前記アプリケーションによって指定される座標空間に変換することを備える、請求項１に記載の方法。
【請求項７】
前記認識装置は、前記ジェスチャオブジェクトによって指定された対話入力をトラックして、該対話入力を、サポートされるジェスチャのライブラリにマップして、特定のジェスチャが生じた時を認識するように構成される、請求項１に記載の方法。
【請求項８】
前記ジェスチャオブジェクトは、認識されるジェスチャについてのデータを、前記認識装置によって使用されるシステムフォーマットと、前記アプリケーションによって理解可能なスクリプトベースのフォーマットとの間で変換するように構成される、請求項１に記載の方法。
【請求項９】
前記対話入力は、前記対話入力がアクティブである限りにおいて前記ジェスチャオブジェクトが自身をコレクションするのを防ぐピン止め参照として構成される、請求項１に記載の方法。
【請求項１０】
前記ターゲット要素に対して発火される前記ジェチャイベントは、前記ジェスチャイベントへの参照が失われたときに該ジェスチャオブジェクトへの継続的なアクセスを可能にするように、前記ジェスチャオブジェクトを識別する情報を含む、請求項１に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、インスタン化可能なジェスチャオブジェクト（insitantiable  gesture  object）に関する。
【背景技術】
【０００２】
ユーザがコンテンツと対話する方法としてコンピューティングデバイスによってサポートされるジェスチャの数及びタイプは常に増加し続けている。ユーザは、様々な異なるアプリケーション及びコンテンツの対話に利用可能となるサポートされるジェスチャを、ユーザ経験を通じて予測することができる。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
しかし、伝統的に、ネイティブでサポートされるジェスチャ機能は複雑な構成を要することがあり、これは、一部の開発者が、自身のアプリケーションにジェスチャを組み込むのを困難にするか、そのコストが非常に高くなる。加えて、既存のシステムにおけるネイティブのジェスチャ機能は、ＪａｖａＳｃｒｉｐｔ（登録商標）及びＨＴＭＬのような動的なスクリプト言語を用いる「最近の」アプリケーション及び／又はコンテンツについて制限されるか、その全体が利用不可能なことがある。
【課題を解決するための手段】
【０００４】
インスタンス化可能なジェチャオブジェクトの技術を説明する。当該技術において、ネイティブのジェスチャ機能は、スクリプトベースの認識インタフェースを使用してアプリケーションに対して抽象化される。ジェスチャオブジェクトは、動的なスクリプト言語を使用してプログラムされるアプリケーションの指示で、異なる対話コンテキストについてインスタンス化され得る。ジェスチャオブジェクトは、ジェスチャ認識及び対応する認識されたジェスチャが適用可能なコンテンツのターゲット要素について考慮すべき、特定のタッチ接触及び／又は他の入力を指定するように構成され得る。作成後、ジェスチャオブジェクトは、アプリケーションの代わりに、ジェスチャ処理オペレーションを管理する。当該処理オペレーションは、ネイティブジェスチャシステムを有する認識装置を作成することと、処理用に入力データを供給することと、生のジェスチャデータをアプリケーション及び／又はターゲット要素に適切なフォーマットに変換することとを含む。したがって、スクリプトベースのアプリケーションは、ジェスチャオブジェクトを使用して、ジェスチャ認識に関連付けられる処理タスクをオフロードし、ネイティブジェスチャ機能を利用することができる。
【０００５】
この「発明の概要」の記載は、下記の「発明を実施するための形態」において更に説明される概念の選択を、簡略化した形で紹介するのに提供される。この「発明の概要」の記載は、特許請求に係る主題の主要な特徴又は本質的特徴を特定するようには意図されておらず、特許請求のかかる主題の範囲を決定する際の助けとして使用されるようにも意図されていない。
【０００６】
詳細な説明では、添付の図面を参照して説明される。図面において、参照符号の最も左の桁は、その参照符号が最初に現れる図面を識別する。説明及び図面内の異なる例における同じ参照符号の使用は、類似又は同一の項目を示すことがある。
【図面の簡単な説明】
【０００７】
【図１】本明細書で説明されるインスタンス化可能なジェスチャオブジェクトを用いるように動作可能な例示的環境の図である。
【図２】１つ又は複数の実施形態に係る例示のジェスチャオブジェクトの詳細を示すシナリオを示す図である。
【図３】ジェスチャ認識のために複数のジェスチャオブジェクトが用いられる例示のシナリオを示す図である。
【図４】１つ又は複数の実施形態に係るジェスチャオブジェクトをインスタンス化する例示のプロシージャを示すフロー図である。
【図５】１つ又は複数の実施形態に係るジェスチャ認識のためにアプリケーションを登録する、別の例示的なプロシージャを示すフロー図である。
【図６】本明細書で説明される技術の態様を実装するのに１つ又は複数の実施形態において用いられる例示のシステムの様々なコンポーネントを示す図である。
【発明を実施するための形態】
【０００８】
＜概要＞
伝統的に、プラットフォームによって提供されるネイティブにサポートされるジェスチャ機能は、複雑な構成を要することがあり、これは、一部の開発者が、自身のアプリケーションにジェスチャを組み込むのを困難にするか、そのコストが非常に高くなる。加えて、既存のプラットフォームにおけるネイティブのジェスチャ機能は、ＪａｖａＳｃｒｉｐｔ及びＨＴＭＬのような動的なスクリプト言語を用いるアプリケーションに利用不可能なことがある。
【０００９】
インスタンス化可能なジェチャオブジェクトの技術を説明する。当該技術において、ネイティブのジェスチャ機能は、スクリプトベースの認識インタフェースを使用してアプリケーションに対して抽象化される。ジェスチャオブジェクトは、動的なスクリプト言語を使用してプログラムされるアプリケーションの指示で、異なる対話コンテキストについてインスタンス化され得る。ジェスチャオブジェクトは、ジェスチャ認識及び対応する認識されたジェスチャが適用可能なコンテンツのターゲット要素について考慮すべき、特定のタッチ接触及び／又は他の入力を指定するように構成され得る。作成後、ジェスチャオブジェクトは、アプリケーションの代わりに、ジェスチャ処理オペレーションを管理する。当該処理オペレーションは、ネイティブジェスチャシステムを有する認識装置を作成することと、処理用に入力データを供給することと、生のジェスチャデータをアプリケーション及び／又はターゲット要素に適切なフォーマットに変換することとを含む。したがって、スクリプトベースのアプリケーションは、ジェスチャオブジェクトを使用して、ジェスチャ認識に関連付けられる処理タスクをオフロードし、ネイティブジェスチャ機能を利用することができる。
【００１０】
以下の議論では、まず、本明細書で説明されるインスタンス化可能なジェスチャオブジェクトの技術を使用するように動作可能な例示の環境を説明する。次いで、例示のシナリオとプロシージャを説明する。これは、例示する環境で用いられてもよく、他の環境で用いられてもよい。したがって、例示のシナリオ及びプロシージャは、例示する環境に限定されず、また例示する環境は、本明細書で説明される例示に対する追加のシナリオ及びプロシージャを組み込んでもよい。最後に、１つ又は複数の実施形態においてインスタンス化可能なジェスチャオブジェクト技術を実装するのに用いることが可能な例示のコンピューティングシステムを説明する。
【００１１】
＜動作環境＞
図１は、本明細書で説明される技術を用いるのに動作可能な例示的実装における環境１００の図である。図示される環境１００は、ネットワーク１０６を介して通信可能に結合されるコンピューティングデバイス１０２とウェブサービス１０４とを含む。コンピューティングデバイス１０２及びウェブサービス１０４はそれぞれ、広範なコンピューティングデバイスによって実装され得る。
【００１２】
例えばコンピューティングデバイス１０２は、デスクトップコンピュータ、モバイルステーション、娯楽用の機器、タブレット又はスレートデバイス、サーフェスコンピューティングデバイス、ディスプレイデバイスと通信可能に結合されるセットトップボックス、モバイル通信デバイス（例えば無線電話）、ゲームコンソール等のようなネットワーク１０６上で通信する能力を有するコンピュータとして構成され得る。コンピューティングデバイス１０２は、様々な処理システムを用いる任意の適切なコンピューティングシステム及び／又はデバイスとして構成されてもよく、その幾つかの追加の例は、図６の例示のシステムに関連して説明される。
【００１３】
コンピューティングデバイス１０２は更に、オペレーティングシステム１０８を含むように図示されている。一般的に言うと、オペレーティングシステム１０８は、コンピューティングデバイス１０２の基礎となる機能性を、該コンピューティングデバイス１０２上で実行可能なアプリケーション１１０に対して抽象化するように構成される。例えばオペレーティングシステム１０８は、この基礎となる機能性を「どのように」実装するかを知る必要なく、アプリケーション１１０を書くことができるように、コンピューティングデバイス１０２の処理、メモリ、ネットワーク及び／又はディスプレイ機能を抽象化することができる。アプリケーション１１０は、例えばディスプレイデバイスによってレンダリング及び表示されるべきデータをオペレーティングシステム１０８に提供することができ、このレンダリングがどのように実行されることになるかを理解する必要はない。オペレーティングシステム１０８は、システムの特性を利用するのにアプリケーションが起動することができる様々なサービス、インタフェース及び機能性を提供することができる。広範な機能性をコンピューティングデバイス１０２に提供する様々なアプリケーション１１０は、これらに限られないが、数例を挙げると、ウェブサービス及び／又は他のコンテンツにアクセスしてレンダリングするブラウザ、オフィス生産性アプリケーション、電子メールクライアント、ゲーム、マルチメディア管理プログラム、デバイス管理ソフトウェア及びソーシャルネットワーキングアプリケーションを含むことが考えられる。
【００１４】
オペレーティングシステム１０８は更に、異なる種類のアプリケーション用のサービス、インタフェース及び機能性を提供することができ、そのようなアプリケーションには、Ｃ＋＋、Ｃ＃のような静的にコンパイルされる言語を使用して書かれる「レガシー」アプリケーションと、ＪａｖａＳｃｒｉｐｔ、ハイパーテキストマークアップ言語のリビジョン５及び／又はカスケードスタイルシード（ＨＴＭＬ５／ＣＳＳ）、拡張アプリケーションマークアップ言語（ＸＡＭＬ）のような、ラインタイムに動的にコンパイルされる動的なスクリプト言語を使用して書かれる「最近の」アプリケーションとが含まれる。最近のアプリケーションは、オペレーティングシステム１０８によってサポートされる１つ又は複数のランタイムプラットフォームを通して動作することがある。ランタイムプラットフォームは、対応するアプリケーションにそれぞれの実行環境を提供するように構成される。ランタイムプラットフォームは、コンパイル可能なアプリケーションに対して特徴、ルーチン及び機能の共通のセットを提供し、これにより共通のタスクのコーディングを、アプリケーションの開発からオフロードすることができる。したがって、ランタイムのプラットフォームは、アプリケーション用の動的スクリプトに対して小さな変更しか必要としないか全く変更する必要なく、及び／又は再コンパイルする必要なしに、異なる種類のシステムへのアプリケーションの移植性を促進することができる。ランタイムプラットフォームの例は、数例を挙げると、ＪＡＶＡ（登録商標）ランタイム環境（ＪＲＥ）、Ａｄｏｂｅ（登録商標）Ｆｌａｓｈ（登録商標）、マイクロソフト（登録商標）ＮＥＴフレームワーク、マイクロソフトＳｉｌｖｅｒｌｉｇｈｔ（登録商標）及びＷｉｎＲＴ(登録商標)を含む。
【００１５】
図示される例において、コンピューティングデバイス１０２は、ディスプレイデバイス１１２を含むか使用し、ディスプレイデバイス１１２は、タッチスクリーン及びジェスチャ機能を可能にするようにタッチスクリーン／タッチデジタイザを含むよう構成され得る。コンピューティングデバイス１０２は、したがって、ディスプレイドライバと、ジェスチャモジュール１１４と、並びに／あるいはディスプレイデバイス１１２のタッチ機能により可能にされるタッチスクリーン及びジェスチャ機能を提供するように動作可能な他のモジュールとを含むことができる。したがって、コンピューティングデバイスは、対応するオペレーションを実行させる入力及びジェスチャを認識するように構成され得る。
【００１６】
例えばジェスチャモジュール１１４は、図１に示されるようにオペレーティングシステム１０８のコンポーネントとして実装されることがある。ジェスチャモジュール１１４は、ジェスチャのサポート及び認識のためのネイティブ機能（例えばネイティブジェスチャシステム）を表し、そのようなジェスチャは、オペレーティングシステム１０８を介して、アプリケーション１１０に対してアクセス可能にされ得る。例えばオペレーティングシステム１０８は、ジェスチャ認識機能を起動するように動作可能な１つ又は複数のアプリケーションプログラミングインタフェース（ＡＰＩ）を提供することがある。特に、ジェスチャモジュール１１４は、タッチスクリーン機能を使用して、コンピューティングデバイス１０２のディスプレイデバイス１１２上に又はディスプレイデバイス１１２に近接する、ユーザの手の指のようなタッチ入力を認識するように構成され得る。様々な異なるタイプのジェスチャがコンピューティングデバイスによって認識されることがあり、そのようなジェスチャは、限定ではなく例として、単一のタイプの入力（例えばタッチジェスチャ）から認識されるジェスチャだけでなく、複数のタイプの入力を伴うジェスチャを含む。例えば１つの指のジェスチャとベゼルジェスチャ、複数の指／同じ手のジェスチャとベゼルジェスチャ及び／又は複数の指／異なる手のジェスチャとベゼルジェスチャを認識することができる。さらに、ジェスチャモジュール１１４は、ジェスチャ、タッチ入力、カメラベースの入力、スタイラス入力及び他の異なるタイプの入力の間を検出し区分するように構成され得る。さらに、タッチスクリーン、マウス、タッチパッド、カメラ、ソフトウェア若しくはハードウェアキーボード及び／又はデバイスのハードウェアキー（例えば入力デバイス）を通じて得られる入力を含め、異なるソースから得られる様々な種類の入力を組み合わせて使用して、対応するデバイスのオペレーションを生じることもある。
【００１７】
コンピューティングデバイス１０２は更に、レンダリングエンジン１１６を含むように図示されている。レンダリングエンジン１１６は、コンテンツのディスプレイのために様々なコンテンツレンダリングオペレーションを扱うよう動作可能なコンピューティングデバイス１０２のコンポーネントを表す。例えばレンダリングエンジン１１６は、対応するマークアップ言語コンテンツを処理して、ディスプレイデバイス１１２上でのディスプレイのためにフォーマットされたコンテンツを出力することができる。少なくとも一部の実施形態において、レンダリングエンジン１１６は、ウェブページのレンダリング又はネットワーク１０６を介してウェブサービス１０４から取得され得る他のリソース１１８のレンダリングを容易にするブラウザのコンポーネントとして構成される。リソース１１８は、典型的にはネットワーク上で１又は複数のサービスプロバイタによって利用可能にされる、コンテンツ及び／又はサービスの任意の適切な組み合わせを含むことができる。レンダリングエンジン１１６は、スタンドアロンのアプリケーション又はオペレーティングシステムコンポーネントとして実装されることもある。コンピューティングデバイスのブラウザ及び他のアプリケーション１１０は、アプリケーションのために対応するコンテンツアイテムのレンダリングに対処するレンダリングエンジン１１６を起動することができる。例えば動的なスクリプト言語を用いる様々な種類の「最近の」アプリケーションは、対応するページ、ドキュメント、メディア、イメージ、フォーム、ユーザインタフェース及び／又は他の対応のアプリケーションコンテンツの処理及び表示のために、レンダリングエンジン１１６の機能性を使用することができる。
【００１８】
インスタンス化可能なジェスチャオブジェクト技術を実装するために、レンダリングエンジン１１６は、認識インタフェース１２０を含むか、あるいは使用するように構成され得る。認識インタフェース１２０は、レンダリングエンジン１１６を介してアプリケーション１１０に公開され、ジェスチャモジュール１１４によって表されるジェスチャのサポート及び認識のためにネイティブ機能との対話を可能にする機能性を表す。伝統的に、ジェスチャモジュール１１４によるジェスチャの直接構成は、複雑でリソース消費型のものであり得る。さらに既存のシステムにおけるネイティブジェスチャの機能性は、動的なスクリプト言語を用いる「最近の」アプリケーションには制限的であるか全体が利用不可能なことがある。したがって、ネイティブジェスチャの機能性を利用するアプリケーションを作るために、アプリケーションの開発者は、伝統的に、ジェスチャモジュール１１４によって提供される複雑な構成の管理オプションの詳細な知識を持つか、並びに／あるいは複雑な及び／又は静的なプログラミングを実行してアプリケーションコードからその機能を直接起動する必要がある。本明細書で詳細に説明されるように、認識インタフェース１２０は、アプリケーションの代わりに、様々なジェスチャ構成を実行し、オペレーションに対処して処理することによって、アプリケーションの開発を簡単にすることができる。したがって、認識インタフェース１２０は、ジェスチャ認識のための様々な処理及び取扱いオペレーションを、アプリケーションからオフロードし、これらのオペレーション用のコードを書かなければいけないこと及び／又はジェスチャ構成モジュールの詳細な知識を有しなければいけないことから、アプリケーション開発者を解放する。
【００１９】
あるアプローチにおいて、アプリケーション１１０は、認識インタフェース１２０を起動して、様々な対話のためにジェスチャモジュール１２２をインスタンス化することができる。ジェスチャオブジェクト１２２はその後、アプリケーションの代わりに、自動的にジェスチャモジュール１１４によりジェスチャ認識オペレーションに対処する。例えばジェスチャオブジェクト１２２は、アプリケーションの代わりにジェスチャモジュール１１４と通信して、異なる対話用の適切な認識装置１２４を作成し、ジェスチャ処理のために入力データを認識装置１２４に供給するように構成され得る。ジェスチャオブジェクト１２２は、一般的に言うと、基礎となる認識装置及びネイティブジェスチャ機能のスクリプトベースの表現及びその操作のためのインタフェースである。ジェスチャオブジェクト１２２及び対応する認識装置１２４は、それぞれの特定の対話コンテキストについて作成され得る。本明細書において使用されるとき、対話コンテキストは、ジェスチャ認識のためにジェスチャモジュール１１４によってトラックされる特定の入力又は入力のグループ（例えばタッチ接触、スタイラス入力、ポインタ入力、カメラ入力等）を指す。
【００２０】
認識装置１２４は、ネイティブジェスチャシステムのために作成されるコンポーネント／オブジェクトであり、これらは、異なる対話コンテキストについての入力をトラックし、該入力を、サポートされるジェスチャのライブラリにマップし、特定のジェスチャが起こった時を検出し、ジェスチャ認識用の適切なイベントを発火するように構成される。したがって、認識装置１２４は、異なるコンテキストにおけるジェスチャ認識について、システムレベルの処理に対処する機能性を表す。認識装置１２４は、指定されたシステムフォーマット及びプロトコルを使用して、入力のセットのためにネイティブのジェスチャ機能をどのように起動させるかを理解する。認識装置１２４は、サポートされる様々なジェスチャを検出するように構成される。そのようなジェスチャの例には、これらに限られないが、タップ、ホールド、回転、スケール、ズーム、パン及び変換ジェスチャが含まれる。
【００２１】
ジェスチャオブジェクト１２２は、アプリケーションの代わりに認識装置１２４によって生成された生のジェスチャイベントの処理を容易にする。ジェスチャオブジェクト１２２は、認識装置によって使用されるシステムフォーマットと、動的なスクリプト言語を使用してプログラムされるアプリケーションによって理解可能なスクリプトベースのフォーマットとの間の情報の変換を容易にすることができる。これは、認識装置によって発火されるイベントを検出すること、特定のアプリケーション用にジェスチャ情報／イベントをフォーマットすること、生のジェスチャデータをアプリケーション及び／又は対話コンテキスト／ジェスチャオブジェクトに関連付けられる要素の座標空間に変換すること等を含むことがある。その詳細は以下の議論からわかる。
【００２２】
例示的な動作環境について説明してきたので、次に、１つ又は複数の実施形態におけるインスタンス化可能なオブジェクトに関する一部の例示的な実装の詳細の議論を検討する。
【００２３】
＜インスタンス化可能なジェスチャオブジェクトの詳細＞
更に説明するため、次に図２を検討する。図２は、全体的に２００において、認識インタフェース１２０を起動して、アプリケーション１１０の代わりにジェスチャ認識を取り扱うジェスチャオブジェクト１２２をインスタンス化する例示のシナリオを示している。レンダリングエンジン１１６（あるいは他のもの）によって）アプリケーション用にレンダリングされるコンテンツは、対応するコンテンツモデル２０２に従って表されることができる。コンテンツモデル２０２は、ドキュメント、ページ又は他のアプリケーションコンテンツの構造の階層的表現である。コンテンツモデルは、コンテンツを消費して該コンテンツ内に含まれる様々な要素２０４を参照して操作するアプリケーションを可能にする。要素２０４は、例えばイメージ、コントロール、テキスト、グラフィクス等のコンテンツとともに含まれるものを含むことができる。ある特定の例において、ドキュメントオブジェクトモデル（ＤＯＭ）がアプリケーションによって使用され得る。ＤＯＭは、ブラウザ（又は他のアプリケーション）のためのページ内の要素を表し、該要素と対話するための標準的な勧告である。ページのＤＯＭは、ブラウザによって構築されて、ウェブページ内に含まれる要素２０４を参照し、修正し、エフェクトを適用し及び／又は他の方法で操作するのに使用され得る。他のアプリケーション用のコンテンツもＤＯＭに従って構成され、対応するページ、ファイル及び／又はドキュメントの要素２０４を表すことがある。他の種類のコンテンツモデル２０２を１つ又は複数の実施形態において用いてもよい。
【００２４】
図２に表されるように、アプリケーションは、認識インタフェース１２０と対話して、認識インタフェース１２０に、１つ又は複数の対話コンテンツについてジェスチャオブジェクト１２２を作成するように指示することがある。ジェスチャオブジェクト１２２は次いで、コンピューティングデバイス１０２のネイティブジェスチャ機能に関連付けられる、対応する認識装置１２４を作成してラップするように動作する。ジェスチャオブジェクトは、入力データを、ラップされた認識装置に供給し、認識装置及び／又はジェスチャモジュール１１４により実行された処理に基づいて、その認識装置から返される生のジェスチャ認識データ／イベントを受信する。ジェスチャオブジェクト１２２はまた、対応するコンテンツモデル２０２に基づいて特定の要素２０４にマップされ得る。このようにして、アプリケーションは、ジェスチャオブジェクトのジェスチャ処理の結果が適用されるべき要素を明示的に指定することができる。さらに、アプリケーションは、個別のアイテムの集合を、ジェスチャアプリケーションの目的の要素として指定することができる。これは、ジェスチャが提供される要素が、個々のアイテムに対するヒットテスト又は他の同等の選択技術を使用してヒューリスティックに推論される伝統的な技術とは対照的である。
【００２５】
＜ジェスチャオブジェクト＞
特に、ジェスチャオブジェクト１２２は、図２において、対話入力２０６と、ターゲット要素２０８と、所与の対話コンテキストについてオブジェクトを生成するようアプリケーションによって設定されるカスタムプロパティ２１０とを含むように図示されている。対話入力２０６（ポインタとも呼ばれる）は、タッチ接触、ポインタの位置／移動、スタイラス入力、マウス入力及び／又は対話コンテキストについてトラックされる他の入力のような入力である。ジェスチャオブジェクト１２２は、１つ又は複数の個々の入力／接触、例えばポインタを含むように構成され得る。ジェスチャオブジェクトは、同じ入力ソースからの同じタイプの複数のポインタ及び／又は異なる入力ソースからの異なるタイプのポインタの組み合わせを含むことができる。ジェスチャオブジェクト１２２に入力／接触を含めることにより、これらの入力／接触は、ジェスチャ検出のために考慮されることになる。ターゲット要素２０８は、ジェスチャオブジェクト１２２がマップされるコンテンツモデル２０２内の要素を表す。例えばコンテンツのＤＯＭ表現内の要素を、ジェスチャオブジェクトのターゲットとして指定してもよい。個々の要素が、レンダリングされているユーザインタフェース、ページ又はドキュメントの１つ又は複数の個々のコンポーネント／アイテムを含むように定義されてもよい。ジェスチャオブジェクト１２２についてターゲット要素２０８を指定することにより、ジェスチャオブジェクト１２２に関して生成されたジェスチャイベントが、指定された要素に対して明示的に向けられることになる。さらに、１つ又は複数の要素が前もってわかるので、ジェスチャモジュール１１４及び／又は認識装置１２４により取得される生のジェスチャデータを、特定の要素についてフォーマットすることができる。したがって、ジェスチャオブジェクトは、アプリケーションレベルでの追加の処理をほとんど必要としないか、全く必要とすることなく、フォーマットされたジェスチャデータを、対応する要素が提供され得るアプリケーションに供給することができる。加えて、カスタムプロパティ２１０を提供して、ジェスチャオブジェクトの挙動の拡張及びカスタマイズを可能にし、存続期間の管理を容易にすることができる。その詳細は本明細書において後述される。
【００２６】
少なくとも一部の実施形態において、ジェスチャオブジェクト１２２は、開発者に利用可能な組み込みオブジェクト型として、ＪａｖａＳｃｒｉｐｔのようなスクリプトベースのプログラミング言語で実装される。ジェスチャオブジェクト１２２は、対話入力２０６及びターゲット要素２０８をオブジェクトのプロパティとして含む。開発者は、オブジェクトに対してプロパティを設定するメソッドを使用して、認識インタフェース１２０に、所与の対話コンテキストについて適切なオブジェクトをインスタンス化させることができる。これらのメソッドは、開発者／アプリケーションがタッチ接触及び／又は他の入力をオブジェクトに追加して、ＤＯＭ又は別のコンテンツモデル内のターゲット要素を指定するのを可能にする。開発者は、カスタムプロパティ２１０を、提示されたメソッドにより同等の手法で設定することもできる。あるアプローチでは、認識インタフェース１２０は、ジェスチャ認識のためにジェスチャオブジェクト１２２を定義及び作成するのに使用されるメソッドを提示する、アプリケーションプログラミングインタフェースとして構成され得る。
【００２７】
限定ではなく例として、以下の疑似コードは、説明された技術に適したジェスチャオブジェクト及びメソッドのスクリプトベースの一実装を表す。
【００２８】
var  g  =  new  Gesture()  //  ジェスチャオブジェクトを作成する
g.target  =  element        //  ジェスチャイベントを受信する要素を指定する
g.addPointer(pointerId)      //  接触／入力をオブジェクト／認識装置に追加する
g.removePointer(pointerId)  //  接触／入力を除去する
g.stop()                    //  ジェスチャ処理を終了する
【００２９】
上記につき、ジェスチャオブジェクトは、認識インタフェース１２０によってサポートされる組み込みオブジェクト型を使用して作成され得る。要素及び対話入力（例えば接触／入力）を、作成されたオブジェクトのプロパティとして指定してもよい。接触／入力をｒｅｍｏｖｅメソッドによって除去してもよく、その結果、接触／入力は、ジェスチャ処理の一部とは見なされなくなる。ｓｔｏｐメソッドは、要求に応じた処理の終了を可能にする。ｓｔｏｐメソッドは、オブジェクトから接触／入力を除去して、処理を終了し、ジェスチャについての終了イベントを発火して、別のジェスチャを準備するようオブジェクト／認識装置をリセットする。そうでない場合、オブジェクトは持続して、以下に説明される存続期間管理技術に従って自動的に自身をクリーンアップしてもよい。
【００３０】
したがって、所与の対話コンテキストについてジェスチャイベントを開始するために、アプリケーションは、認識インタフェース１２０を起動し、ターゲット要素と１つ又は複数の対話入力を指定することができる。これは、認識インタフェース１２０を通して、対応するジェスチャオブジェクト１２２の作成を生じる。ジェスチャ認識のための処理の大部分は、次いでアプリケーションの代わりにジェスチャオブジェクト１２２により対処され、この処理には、入力データを認識装置に供給すること、ジェスチャイベントメッセージを処理すること、生のジェスチャデータを変換すること等が含まれる。効果として、アプリケーションは、例えば対話コンテキスト等の選択されたターゲット要素に関連する特定の入力／接触に対するジェスチャの更新について、認識インタフェース１２０に登録し、次いで認識インタフェース１２０が、その対話コンテキストについて適切な情報を返すのを待つ。例えば認識インタフェース１２０は、アプリケーションコンテンツについてＤＯＭ内のＤＯＭイベントとして、あるいはアプリケーションによって用いられる別のコンテンツモデルに適切な同等のイベントとして、対応する要素に関連して既に変換された、要素についてのジェスチャイベント／データを供給することができる。
【００３１】
ユーザが、自身の人差し指によるタッチで画像を選択し、その画像を、ディスプレイ上をドラッグさせるという例を検討する。画像の最初の選択が行われると、アプリケーションは、認識インタフェース１２０を通じて、ターゲット要素２０８としての画像及び対話要素２０６としての人差し指のタッチにより、対応するジェスチャオブジェクト１２２を形成するように動作し得る。アプリケーション自体は、指の位置における変化（例えばドラッグ）をモニタしてそのような情報を認識システムに供給する必要がなくなる。代わりに、このシナリオでインスタンス化されたジェスチャオブジェクトは、自動的にアプリケーションの代わりに対話入力２０６をトラックし、接触位置における変化に関する情報を、対応するドラッグジェスチャを検出する認識装置１２４に供給する。さらにジェスチャオブジェクト１２２及び／又は認識インタフェース１２０はまた、認識装置１２４によって生成されるジェスチャイベントメッセージを処理し、アプリケーションによって用いられるコンテンツモデルに従って、これらのイベントメッセージをアプリケーションに供給することができる。
【００３２】
＜座標変換＞
上記で簡潔に検討したように、ジェスチャ処理の結果は、特にターゲットとなる要素のために結果を変換するように、予め処理されることがある。ジェスチャオブジェクト１２２についてのターゲット要素２０８の指定は、システム要素を効果的に認識させる。したがって、認識インタフェース１２０は、ジェスチャ検出の結果を、ジェスチャが対象とする要素に関連付けられる座標空間に変換するように構成される。典型的に、ジェスチャ結果は、前の状態と新たな状態との間のデルタとして又は初期状態に対する累積値として表されることがある。ジェスチャについての生のデルタ又は累積データがアプリケーションに供給されると、アプリケーションは、特定の要素について生のデータを変換する作業を行わなければならない。例えば要素が以前に回転されていた場合、アプリケーションは、その既存の回転に関するジェスチャをどのように適用するかを決定しなければならない。要素がわからない伝統的なシステムにおいては、開発者は、開発を複雑にするアプリケーションコードにより、これらの状況に対処する以外に選択肢はない。一方、本明細書で説明される技術の通り、ジェスチャオブジェクト１２２についてターゲット要素２０８を明示的に定義することにより、認識インタフェース１２０は、要素の状態をトラックすることが可能になる。要素の状態は、適用された状態に基づいて更新され、更新された状態は、要素について定義された座標空間において、後続の認識されたジェスチャ（又はジェスチャの変化）についてデルタを計算するのに使用される。したがって、ジェスチャが検出される毎に、ジェスチャモジュール１１４によって提供される生のデルタ情報が、アプリケーションの代わりに、適切な座標空間に変換され得る。アプリケーションはしたがって、追加の処理をほとんど必要としないか全く必要とせずに、その結果を対応する要素に直接適用することができる。
【００３３】
少なくとも一部の実施形態において、アプリケーションは、ジェスチャデータが変換される特定の座標空間を明示的に指定してもよい。そのようにするため、アプリケーションは、ターゲット要素を設定してもよく、座標空間を指定するように構成されたジェスチャオブジェクトの別の指定の及び／又はカスタムのプロパティを設定してもよい。その座標空間は、ターゲット要素に対応するものであっても、対応しないものであってもよい。これにより、アプリケーションは、ジェスチャイベントが発火されるターゲット要素の座標空間とは異なる座標空間を選択することが可能になる。例えばジェスチャデータは、ターゲット要素ではなく、ページ／ドキュメントのグローバル座標空間に変換され得る。さらに、アプリケーションは、定義された座標空間においてアプリケーションによって選択されるように対応するジェスチャデータを変換して報告するよう、ジェスチャオブジェクトについて任意の又はグローバル座標空間の変換を定義することができる。
【００３４】
＜存続期間の管理＞
認識インタフェース１２０及びジェスチャオブジェクト１２２は更に、管理される存続期間スキームを実装するように構成され得る。この管理存続期間スキームは、オブジェクトの再使用を可能にし、アクティブな対話入力２０６を有するオブジェクトへアクセス／参照する能力を保持し、適切な時にオブジェクトをクリーンナップするよう自動収集を制御する。一般的に言うと、ＪａｖａＳｃｒｉｐｔ及び他のスクリプトベースのオブジェクトは、スコープ（例えば機能的又はグローバル）を有するように作成され、関連するスコープの期間の間、存続し得る。スコープは、特定の機能／モジュールに関連するか、ページ又はアプリケーションインスタンスの存続期間に関するものである。オブジェクトはその後、該オブジェクトが、もはや使用されなくなる時を認識して、自動的に自身をコレクションする（例えば自身を除去するか及び／又は他の方法で自身が削除されるのを可能にする）ことができる。
【００３５】
依然としてアクティブな対話入力２０６（例えば接触／入力）を有するジェスチャオブジェクト１２２が、自動的に自身をコレクション／除去するのを防ぐために、オブジェクトについての対話入力２０６は、ピン止め参照（pinning  reference）として構成され得る。ピン止め参照は、対話入力２０６がアクティブである限り、オブジェトを生かし続ける。これは、オブジェクトのスコープが有効ではない場合（例えばオブジェクトのスコープを定義する機能／モジュールが終了している場合）にも起こり得る。オブジェクトについてのターゲット要素２０８は、ターゲット要素がクリアされるまでそれぞれのオブジェクトを生かし続けるピン止め参照として機能してもよい。したがって、ジェスチャオブジェクト１２２は、ジェスチャを導出する対話入力２０６が存続している限り存続し、ジェスチャオブジェクト１２２を介してジェスチャイベントが供給され続けることがある。対話入力２０６が除去されると（例えばユーザが自身の指をディスプレイから外すと）、ジェスチャオブジェクト１２２は続けて、その入力が使用中ではなく自動的に自身をコレクションすると認識することがある。これは、アプリケーションが、該アプリケーションの代わりに作成されたジェスチャオブジェクト１２２を管理する必要なく生じる。
【００３６】
存続期間の間に、ジェスチャオブジェクト１２２への継続したアクセスを可能にするために、認識インタフェースによって供給されるジェスチャイベントは、対応するジェスチャオブジェクトへのアクセスを識別して提供する情報を含み得る。したがって、あるオブジェクトへの参照が失われる場合であっても、イベント内に含まれるプロパティを識別するオブジェクトを使用して、対応するジェスチャオブジェクトにアクセスすることができる。加えて、カスタムプロパティ２１０は、カスタム情報及び関数でさえも担持するように設定され得る。例えばイベントがオブジェクトによって発火されるごとに呼び出しを行う特定の関数が、カスタムプロパティ２１０を介して指定され得る。別の例において、プロパティは、所与のオブジェクトに現在関連付けられている接触／入力のリストをアプリケーションへ伝達するように構成される。様々な他の例も考えられる。
【００３７】
説明されるように、ジェスチャオブジェクト１２２も再使用され得る。オブジェクトが作成されて対話入力２０６及びターゲット要素２０８に関連付けられると、オブジェクトは、上述のように存続し得る。オブジェクトに関連付けられた対話入力２０６がアクティブの間、ターゲット要素２０８は、同じままである。追加の対話要素２０６がオブジェクトに追加されることもある。対話要素２０６は、ジェスチャを導出する接触／入力が完了する（例えば指が離れる）ときに、明示的に（ｒｅｍｏｖｅメソッドを使用して）又は自動的に除去されてもよい。したがって、ジェスチャオブジェクト１２２について考慮される特定の接触／入力は、オブジェクトの存続期間にわたって変化し得る。対話要素２０６の全てが除去されると、オブジェクトは自動的にリセットされる。オブジェクトは、上述の明示的な停止（ｓｔｏｐ）に応答してリセットすることもある。その後、同じ要素に適用される異なる対話要素２０６が、オブジェクトを再使用するためにジェスチャオブジェクト１２２に追加され得る。ジェスチャオブジェクト１２２は、オブジェクトが異なる要素にアクティブに使用されていない限りにおいて（例えばジェスチャが進行中）、異なる要素に関連付けられることも可能である。
【００３８】
ジェスチャオブジェクトの別の特徴は、アプリケーションについて、シームレスに慣性処理（inertia  processing）に対処する能力である。慣性処理は、ユーザが指を離すか他の方法でジェスチャを導出する入力を終えた後に、ユーザインタフェース要素が、自然の対話エフェクトを提供するジェスチャを通して操作されるときに慣性をシミュレートするのに使用される。したがって、ユーザ対話を終えた後の期間において、操作された要素は停止に進み、境界に反射し、スクロールを継続すること等がある。慣性は、ジェスチャをトリガするユーザ対話の速度に依存することがある（例えばユーザのパン、ズーム又は回転がどのくらい速い又は遅いか）。慣性処理は、速度に基づいてしばらくの間続き、次いで徐々に停止してよい。慣性処理は、最後の接触／入力が対話の終了に使用される時にタイマを設定することによって達成され得る。タイマが動作している間、慣性処理を通して生成されたジェスチャイベントは、イベントが直接対話によって生成されたように、アプリケーションに供給され続ける。慣性処理を通して生成されたジェスチャイベントは、ジェスチャイベントが直接対話を通して生成された手法と同じように、アプリケーション及び／又はターゲット要素に向けられる。
【００３９】
アプリケーションは、直接対話から慣性処理へとモード変更が生じたときを検出するように構成され得る。例えばモード識別子をジェスチャイベントに含めてもよく、及び／又はジェスチャについての接触が終了するときに通知メッセージを送信してもよい。したがって、アプリケーションは、慣性処理を通して生成されるジェスチャを選択的に使用するか無視することができる。例えばアプリケーションは、慣性処理に関連付けられたイベントを単に無視してもよく、その結果、要素は、直接ユーザ操作が終了すると、移動／反応を終了する。あるいはまた、アプリケーションは、慣性処理を切断して、ジェスチャイベントをアプリケーションに配信する、上述の停止メソッド「g.stop()」を呼び出してジェスチャをリセットすることができる。
【００４０】
図３は、全体的に３００において、本明細書で説明されるインスタンス化可能なジェスチャオブジェクト技術の追加の態様を例示する、例示の対話シナリオを示している。特に、図３のシナリオは、コンピューティングデバイス１０２のユーザインタフェース内に表示される第１の要素３０２と第２の要素３０４の操作を示している。複数の対話入力３０６も図示されており、これらはそれぞれＡからＤの文字を使用してラベル付けされている。この例において、対話入力３０６は、ディスプレイデバイス１１２とユーザの手のタッチ接触に対応する。このシナリオについて、ユーザの手のそれぞれとの対話に対して、異なる対話コンテキストを定義することができる。したがって、異なるジェスチャオブジェクト１２２を、前述の方法でそれぞれの手についてインスタンス化することができる。
【００４１】
図３に示されるように、ユーザの左の手に対応するジェスチャオブジェクト１２２は、接触ＡとＢをトラックするように構成され、ターゲット要素として第１の要素３０２に関連付けられる。ユーザの右の手に対応する別のジェスチャオブジェクト１２２は、接触ＣとＤをトラックするように構成され、ターゲット要素として第２の要素３０４に関連付けられる。異なるジェスチャオブジェクト１２２が同時にアクティブであり、相互に独立に管理／処理され得る。例えば接触ＡとＢのピンチは、第１の要素３０２に対するズームインを生じるズームジェスチャとして認識され、同時の接触Ｄは、第２の要素３０４に適用される選択及びホールドジェスチャとして認識される。この例において、接触Ｃは、第２の要素３０４と接続として考慮されるが、認識された選択及びホールドジェスチャに寄与しない可能性がある。
【００４２】
異なる対話を同時に制御する複数の異なるジェスチャオブジェクト１２２の使用は、様々な異なるマルチタッチ入力及びマルチジェスチャシナリオを可能にする。対応するジェスチャオブジェクト１２２によってトラックされる様々な異なるコンテキスト／ジェスチャが同時にアクティブになることがある。各オブジェクトを使用して１つ又は複数のそれぞれの接触／入力をトラックすることができる。加えて、個々の接触を同時に複数のジェスチャオブジェクトに追加してもよく、したがって、複数のジェスチャを同時に考慮することができる。
【００４３】
図３では異なる要素に関連付けられるオブジェクトが図示されているが、異なるジェスチャをトラックする複数の異なるジェスチャオブジェクト１２２が、同時に同じ要素に関連付けられてもよい。例えば、図３に示される両手が第１の要素３０２に適用される例を検討する。異なるジェスチャオブジェクト１２２がこの例において生じることがある。しかしながら、ここでは異なるオブジェクトに対するターゲット要素を同じ要素とすることができる。異なるジェスチャオブジェクト１２２が、同じ要素に対する異なるアクションを導出するように構成されてもよい。例えば左手がズームジェスチャを実行し、右手が同じ要素に対する回転ジェスチャを実行してもよい。
【００４４】
別の例において、左手が要素を大まかに回転するように構成され、右手がその要素の細かな回転を実行してもよい。これらの異なるジェスチャは、それぞれのジェスチャオブジェクト１２２を介して検出され、同時に第１の要素３０２に対して適用され得る。１つ又は複数のジェスチャオブジェクト１２２の使用を通じて可能になるマルチタッチ及びマルチジェスチャのシナリオの様々な他のシナリオも考慮される。そのようなシナリオには、異なる入力ソース（例えばタッチ、スタイラス、カメラ、マウス等）及び／又は複数の入力ソース（例えばタッチとマウス、スタイラスとカメラ、タッチとカメラ等）の組み合わせを用いるシナリオが含まれる。
【００４５】
インスタンス化可能なジェスチャオブジェクトに関する幾つかの詳細を説明したので、次に１つ又は複数の実施形態に係る一部の例示のプロシージャを検討する。
【００４６】
＜例示のプロシージャ＞
以下の議論では、上述のシステム及びデバイスを使用して実装され得るインスタンス可能なジェスチャオブジェクト技術を説明する。各プロシージャの態様は、ハードウェア、ファームウェア、ソフトウェア又はこれらの組み合わせで実装される。これらのプロシージャは、１つ又は複数のデバイスによって実行されるオペレーションを指定するブロックのセットとして示されているが、必ずしも、それぞれのブロックによるオペレーションを実行するのに図示された順序に限定されない。以下の議論の一部では、動作環境１００並びに図２の例示のシナリオ２００及び図３の例示のシナリオ３００を参照することがある。
【００４７】
図４は、ジェスチャオブジェクト１２２を用いて、アプリケーションの代わりにジェスチャ認識を実行する例示的なプロシージャ４００を示している。少なくとも一部の実施形態において、諸プロシージャは、インタフェース１２０を実装するレンダリングモジュール１１６を含むかこれを使用する図１の例示のコンピューティングデバイス１０２のように、適切に構成されるコンピューティングデバイスによって実行され得る。
【００４８】
アプリケーションについて、ジェスチャオブジェクトがインスタンス化される（ブロック４０２）。例えばレンダリングエンジン１１６は、レンダリングモジュール１１６に、コンピューティングデバイス１０２及び／又はオペレーティングシステム１０８のネイティブジェスチャ機能を起動させる、スクリプトベースのアプリケーションを可能にするインタフェースを提供することができる。インタフェースは、アプリケーションからジェスチャ用の処理をオフロードする、ＪａｖａＳｃｒｉｐｔのような動的なスクリプト言語で書かれたアプリケーションを有効にする。そのようにするために、レンダリングエンジン１１６は、アプリケーションによって指示されるように、ジェスチャオブジェクト１２２をインスタンス化することができる。ジェスチャオブジェクト１２２は、前述したように、アプリケーションの代わりにジェスチャ認識のためのオペレーションに対処するように構成される。
【００４９】
インスタンス化されたジェスチャオブジェクトは、アプリケーションによって指定される対話入力及びターゲット要素に関連付けられる（ブロック４０４）。例えばジェスチャオブジェクト１２２のプロパティは、図２に関して説明されたように、オブジェクトに関連付けられる、指定された特定の対話入力２０６及びターゲット要素２０８に対して設定され得る。オブジェクトに追加される対話入力２０６は、ジェスチャ認識について一緒に考慮することができ、ジェスチャモジュール１１４によって認識される任意の対応するジェスチャを、選択されるターゲット要素２０８に明示的に向けることができる。異なる対話入力２０６が、様々な時に、オブジェクトに追加されるかオブジェクトから除去されることがあり、該オブジェクト自体は、異なる対話コンテキストについて再使用され得る。
【００５０】
認識装置が、次いでアプリケーションの代わりに作成されてジェスチャ認識を容易にする（ブロック４０６）。対話入力データが次いで、認識処理のために認識装置に供給される（ブロック４０８）。上述のように、認識装置１２４は、ネイティブのジェスチャシステムを介してジェスチャ認識を容易にするシステムレベルのオブジェクト／抽象化である。ジェスチャオブジェクｔｐ１２２は、最近のアプリケーション１１０との対話のためにスクリプトベースのフォーマットを使用するように実装され、各オブジェクトは、ネイティブシステムフォーマットを用いてネイティブのジェスチャ機能を起動する、対応する認識装置１２４を作成することができる。ジェスチャオブジェクト１２２は次いで、対話入力に関する入力データを、処理のために対応する認識装置に供給する。対話コンテキストについて対話入力のセット２０６を所与とすると、認識装置１２４は、これらの入力のトラッキング及びジェスチャモジュール１１４を介したジェスチャの認識を管理する。例えば対話入力２０６は、上述のようにジェスチャモジュール１１４によってサポートされるジェスチャのライブラリにマップされ得る。
【００５１】
認識されたジェスチャを示すジェスチャイベントメッセージが、認識装置から取得され（ブロック４１０）、認識装置から取得されるジェスチャイベントメッセージ内の生のジェスチャデータが、アプリケーションの代わりに処理される（ブロック４１２）。例えば対応するジェスチャオブジェクト１２２によって供給される入力を使用するジェスチャの認識に応答して、認識装置１２４は、ジェスチャオブジェクト１２２による受信について、ジェスチャイベントメッセージを送信することができる。ジェスチャオブジェクト１２２は、一般にネイティブジェスチャシステムにより計算された生のジェスチャデータを含む、対応するジェスチャイベントメッセージを取得することができる。本明細書で説明される技術によると、ジェスチャオブジェクト１２２は、生のデータに対する処理を生じ、該データを、特に特定のターゲット要素及び／又はアプリケーション用に変換することができる。例えば生のデータを、上述の手法によりジェスチャオブジェクト１２２によって定義されるターゲット要素に対応する座標空間に変換することができる。したがって、アプリケーションは、そのような計算を実行しなければならないことから解放される。
【００５２】
ジェスチャイベントは、アプリケーションについてのコンテンツモデルに従ってターゲット要素に対して発火される（ブロック４１４）。ターゲット要素に対して発火されたジェスチャイベントは、アプリケーション及び／又はターゲット要素について変換された処理済みのジェスチャデータを含む。したがって、アプリケーションは単に、ジェスチャイベントを介して伝達されたジェスチャ／アプリケーションを適切な要素に適用すればよい。
【００５３】
図５は、アプリケーションが、ジェスチャオブジェクトを使用してジェスチャ認識について対話入力を登録する例示のプロシージャ５００を示す。少なくとも一部の実施形態において、プロシージャは、図１の適切に構成されたアプリケーション１１０によって実行され、コンピューティングデバイスのレンダリングモジュール１１６を介して実装される認識インタフェース１２０を起動するように構成される。
【００５４】
アプリケーションは、対応するコンテンツアイテムの選択されたターゲット要素について、ジェスチャオブジェクトの作成を指示し、スクリプトベースのインタフェースを介してジェスチャの認識を登録する（ブロック５０２）。例えば動的なスクリプト言語を使用してプログラムされたアプリケーションは、アプリケーションのためにコンテンツをレンダリングするのに使用されるレンダリングエンジン１１６によって公開される、認識インタフェース１２０と対話することができる。この対話により、認識インタフェース１２０は、所与の対話コンテンツについて、上述の手法でジェスチャオブジェクト１２２をインスタンス化することができる。対話コンテンツを定義するために、アプリケーションは、オブジェクトの様々なプロパティを設定することによって、オブジェクトを構成するメソッドをオブジェクトに対して使用することができる。一般に、これは、図２に関連して説明したように、少なくとも対話入力２０６とターゲット要素２０８を指定することを含む。アプリケーションは、カスタムプロパティ２１０を設定して、ジェスチャオブジェクト１２２の挙動を制御し及び／又は機能を拡張してもよい。そのようなカスタムの例には、これらに限られないが、特定のジェスチャに応答して呼び出す機能をトリガすること、コンテキストに適用可能であるか及び／又は無視され得る特定の種類のジェスチャを指定すること、ジェスチャ及び／又はジェスチャを計算するのに使用される入力に関する指定のデータ／プロパティを返すこと、ジェスチャを提供する構成パラメータ及び閾値を提供すること等が含まれ得る。
【００５５】
次いで、ターゲット要素に対して発火され、ターゲット要素とのユーザ対話に基づいて認識されるジェスチャを示すジェスチャイベントが取得され（ブロック５０４）、ジェスチャイベントがターゲット要素に適用されて、認識されたジェスチャに従ってターゲット要素のディスプレイを操作する（ブロック５０６）。上述のように、ジェスチャオブジェクト１２２は、アプリケーションが、ジェスチャ処理の負荷の多くをオフロードできるようにする。したがって、ブロック５０２においてブロックの作成を指示した後、アプリケーションは自動的に、対応する対話コンテキストについて、ジェスチャイベントを取得するのを開始する。これは、アプリケーションが、ジェスチャを認識するのに追加の作業を実行する必要なく行われる。アプリケーションは単に、ジェスチャイベントをリッスンするか、他の方法で取得するハンドラを組み込んで、これらを適切な要素に適用することができる。さらに、要素に対して発火されたジェスチャイベントによって記述されるジェスチャデータは、ジェスチャデータがアプリケーションによって理解可能なスクリプトフォーマットであって、対応するターゲット要素のために既に変換されるように、予め処理され得る。
【００５６】
例示のプロシージャを説明したので、次に、本明細書で説明されるインスタンス化可能なジェスチャ技術の態様を実装するのに１つ又は複数の実施形態において用いることができる例示のシステムを検討する。
【００５７】
＜例示のシステム＞
図６は、全体的に６００で例示のシステムを図示している。このシステムは、本明細書で説明される様々な技術を実装することができる１つ又は複数のコンピューティングシステム及び／又はデバイスを表す、例示のコンピューティングデバイス６０２を含む。コンピューティングデバイス６０２は、例えばサービスプロバイタのサーバ、クライアント（例えばクライアントデバイス）に関連付けられたデバイス、オンチップシステム及び／又は任意の他の適切なコンピューティングデバイス若しくはコンピュータシステムとすることができる。
【００５８】
例示のコンピューティングデバイス６０２は、１つ又は複数のプロセッサ又は処理デバイスを含み得る処理システム６０４と、１つ又は複数のメモリ及び／又はストレージコンポーネント６１２を含み得る１つ又は複数のコンピュータ読取可能媒体６０６と、入出力（Ｉ／Ｏ）デバイス用の１つ又は複数の入出力（Ｉ／Ｏ）インタフェース６０８とを含む。コンピュータ読取可能媒体６０６及び／又は１つ又は複数のＩ／Ｏデバイスは、コンピューティングデバイス６０２の一部として含まれてもよく、あるいはコンピューティングデバイス６０２に結合されてもよい。図示されるように、処理システム６０４は、１つ又は複数のハードウェア要素６１０も含むことができ、ハードウェア要素６１０は、本明細書で説明あされるプロシージャ及び技術の少なくとも一部の態様をハードウェアで実装する機能を表す。図示されていないが、コンピューティングデバイス６０２は更に、様々なコンポーネントを相互に結合するシステムバス又はデータ転送システムを含んでもよい。システムバスは、メモリバス若しくはメモリコントローラ、周辺バス、ユニバーサルシリアルバス及び／又は様々なバスアーキテクチャのいずれかを使用するプロセッサ若しくはローカルバスのような、異なるバス構造のうちのいずれか１つ又は組み合わせを含むことができる。
【００５９】
処理システム６０４、プロセッサ及びハードウェア要素６１０は、これらが形成される材料や用いられる処理機構に制限されない。例えばプロセッサは、半導体及び／又はトランジスタ（例えば電子集積回路（ＩＣ））から構成されることがある。そのようなコンテキストにおいて、プロセッサ実行可能命令は、電子的に実行可能な命令であってよい。メモリ／ストレージコンポーネント６１２は、１つ又は複数のコンピュータ読取可能媒体に関連付けられたメモリ／記憶機能を表す。メモリ／ストレージコンポーネント６１２は、揮発性媒体（ランダムアクセスメモリ（ＲＡＭ）等）及び／又は非揮発媒体（読取専用メモリ（ＲＯＭ）、フラッシュメモリ、光ディスク、磁気ディスク等）を含むことができる。メモリ／ストレージコンポーネント６１２は、固定の媒体（例えばＲＡＭ、ＲＯＭ、固定のハードドライブ等）並びに取外し可能媒体（例えばフラッシュメモリドライブ、取外し可能ハードドライブ、光ディスク等）を含むことができる。
【００６０】
入出力（Ｉ／Ｏ）インタフェース６０８は、ユーザがコマンド及び情報をコンピューティングデバイス６０２に入力することを可能にし、また様々な入出力デバイスを使用して、情報をユーザ及び／又は他のコンポーネント若しくはデバイスに提示することを可能にする。入力デバイスの例には、キーボード、カーソルコントロールデバイス（例えばマウス）、オーディオ／音声入力用のマイク、スキャナ、カメラ等が含まれる。出力デバイスの例には、ディスプレイデバイス（例えばモニタ又はプロジェクタ）、スピーカ、プリンタ、ネットワークカード等が含まれる。
【００６１】
本明細書では、様々な技術がソフトウェア、ハードウェア又はプログラムモジュールの一般的なコンテキストにおいて説明され得る。一般に、そのようなモジュールは、特定のタスクを実行するか特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、要素、コンポーネント、データ構造等を含む。本明細書で使用される時、「モジュール」、「機能（性）」及び「コンポーネント」という用語は、一般的に、ソフトウェア、ファームウェア、ハードウェア又はこれらの組み合わせを表す。本明細書で説明される技術の特徴はプラットフォーム独立であるが、これは、本技術が、様々な処理システム、ハードウェア要素、コンピュータ読取可能媒体及び／又はメモリ／ストレージコンポーネントを有する様々な市販のコンピューティングプラットフォームにおいて実装され得ることを意味する。
【００６２】
説明されるモジュール及び技術の実装は、何らかの形式のコンピュータ読取可能媒体に格納されるか、そのコンピュータ読取可能媒体によって伝送され得る。コンピュータ読取可能媒体は、コンピューティングデバイスによってアクセスされ得る様々な利用可能な媒体を含み得る。限定ではなく例として、コンピュータ読取可能媒体は、「コンピュータ読取可能記憶媒体」と「通信媒体」とを含むことがある。
【００６３】
「コンピュータ読取可能記憶媒体」は、単なる信号伝送や、搬送波又は信号自体等とは対照的に、情報の持続的及び／又は非一時的な記憶を可能にする媒体及び／又はデバイスを指すことができる。したがって、コンピュータ読取可能記憶バイチアは、非信号担持媒体を指す。コンピュータ読取可能媒体は、コンピュータ読取可能命令、データ構造、プログラムモジュール、ロジック要素／回路又は他のデータのような情報の記憶に適した方法又は技術で実装される、揮発性及び非揮発性、取外し可能及び取外し不可能の媒体及び／又はストレージデバイスを含む。コンピュータ読取可能記憶媒体の例には、これらに限られないが、ＲＡＭ，ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ若しくは他のメモリ技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）若しくは他の光ストレージ、ハードディスク、磁気カセット、磁気テープ、磁気ディスクストレージ若しくは他の磁気ストレージデバイス、あるいは所望の情報を格納するのに積雪であって、コンピュータによってアクセス可能な他の記憶デバイス、有形の媒体又は製品が含まれる。
【００６４】
「通信媒体」は、命令を、例えばネットワークを介してコンピューティングデバイスのハードウェアに伝送するように構成される信号担持媒体を指すことがある。通信媒体は典型的に、コンピュータ読取可能命令、データ構造、プログラムモジュール又は他のデータを、搬送波、データ信号又は他の伝送機構のような変調データ信号に具現化することができる。「変調データ信号」という用語は、情報を信号にエンコードするような方法で設定又は変更された特性の１つ又は複数を有する信号を意味する。限定ではなく例として、通信媒体は、有線ネットワーク又は直接有線接続のような有線媒体と、音響、ＲＦ、赤外線及び他の無線媒体のような無線媒体とを含む。
【００６５】
ハードウェア要素６１０は、一部の実施形態において、説明される技術の少なくとも一部の態様を実装するのに用いられるハードウェア形式で実装される命令、モジュール、プログラマブルデバイスロジック及び／又は固定のデバイスロジックを表す。ハードウェア要素には、集積回路若しくはオンチップシステム、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、結合プログラム可能論理回路（ＣＰＬＤ）等が含まれる。このコンテキストにおいて、ハードウェア要素は、命令、モジュール及び／又はハードウェア要素によって具現化されるロジックによって定義されるプログラムタスクを実行する処理デバイスとして動作することがある。
【００６６】
上述の組み合わせを用いて、本明細書で説明される様々な技術及びモジュールを実装することもできる。したがって、ジェスチャモジュール１１４、レンダリングモジュール１１６、認識インタフェース１２０、アプリケーション１１０、オペレーティングシステム１０８及び他のプログラムモジュールを含む、ソフトウェア、ハードウェア又はプログラムモジュールを、何らかの形式のコンピュータ読取可能媒体において及び／又は１つ又は複数のハードウェア要素６１２によって具現化される１つ又は複数の命令及び／又はロジックとして実装してもよい。コンピューティングデバイス６０２は、ソフトウェア及び／又はハードウェアモジュールに対応する特定の命令及び／又は機能を実装するように構成され得る。命令及び／又は機能は、本明細書で説明される技術、モジュール及び例示のプロシージャを実装するよう１つ又は複数の製品（例えば１つ又は複数のコンピューティングデバイス６０２及び／又は処理システム６０４）によって実行可能／動作可能である。
【００６７】
更に図６に図示されるように、例示システム６００は、アプリケーションをパーソナルコンピュータ（ＰＣ）、テレビジョンデバイス及び／又はモバイルデバイス上で実行するときに、シームレスなユーザ経験のためのユビキタス環境を可能にする。サービス及びアプリケーションは実質的に、アプリケーションを使用している間、ビデオゲームをプレイしている間、ビデオを観ている間等に、あるデバイスから次のデバイスに遷移する際に、共通のユーザ経験のために３つの全ての環境において同様に動作する。
【００６８】
例示システム６００において、複数のデバイスは中央コンピューティングデバイスを通して相互接続される。中央コンピューティングデバイスは、複数のデバイスにローカルであってもよく、複数のデバイスからリモートに配置されてもよい。一実施形態において、中央コンピューティングデバイスは、複数のデバイスにネットワーク、インターネット又は他のデータ通信リンクを通して接続される、１つ又は複数のサーバコンピュータのクラウドとすることができる。一実施形態において、この相互接続アーキテクチャは、複数のデバイスにまたがって配信され、複数のデバイスのユーザに共通でシームレスな経験を提供するのを可能にする。複数のデバイスの各々は、異なる物理的要件及び能力を有し、中央コンピューティングデバイスは、プラットフォームを使用して、デバイスへ、該デバイスに対して調整されているが、全てのデバイスに対しても共通の経験を配信するのを可能いする。一実施形態において、ターゲットデバイスのクラスを、物理的な特徴、利用のタイプ又はデバイスの他の共通の特性によって定義してもよい。
【００６９】
様々な実装において、コンピューティングデバイス６０２は、コンピュータ６１４用、モバイル６１６用及びテレビジョン６１８用の使用のような様々な異なる構成を想定してもよい。これらの構成の各々は、一般に異なる構成及び能力を有することがあるデバイスを含み、したがって、コンピューティングデバイス６０２は異なるデバイスクラスの１つ又は複数に従って構成され得る。例えばコンピューティングデバイス６０２は、パーソナルコンピュータ、デスクトップコンピュータ、マルチスクリーンコンピュータ、ラップトップコンピュータ、ネットブック等を含むデバイスのコンピュータ６１４クラスとして実装され得る。
【００７０】
コンピューティングデバイス６０２は、モバイルフォン、ポータブル音楽プレイヤ、ポータブルゲームデバイス、タブレットコンピュータ、マルチスクリーンコンピュータ等のモバイルデバイスを含むデバイスのモバイル６１６クラスとして実装されてもよい。コンピューティングデバイス６０２は、簡潔な視聴環境において一般的に大きなスクリーンを有するか、これと接続されるデバイスを含むテレビジョン６１８クラスとして実装されてもよい。これらのデバイスは、テレビジョン、セットトップボックス、ゲームコンソール等を含む。本明細書で説明される技術は、コンピューティングデバイス６０２のこれらの様々な構成によってサポートされ、本明細書で説明される特定の例示の技術に制限されない。これは、コンピューティングデバイス６０２上での認識インタフェース１２０の包含により例示される。認識インタフェース１２０の機能及び／又は他のアプリケーション／モジュールを、分散システムの使用を通して、プラットフォーム６２２を介して「クラウド」６２０上に全て又は一部を実装してもよい。
【００７１】
クラウド６２０は、リソース６２４のためのプラットフォーム６２２を含むか、これを表す。プラットフォーム６２２は、クラウド６２０のハードウェア（例えばサーバ）及びソフトウェアリソースの機能を抽象化する。リソース６２４は、コンピューティングデバイス６０２からリモートのサーバ上でコンピュータ処理が実行している間に用いることができるアプリケーション及び／又はデータを含み得る。リソース６２４は、インターネット上で及び／又はセルラ若しくはＷｉ−Ｆｉ（登録商標）ネットワークのような加入者ネットワークを通して提供されるサービスを含むこともできる。
【００７２】
プラットフォーム６２２は、コンピューティングデバイス６０２を他のコンピュー手シングデバイスに接続するリソース及び機能を抽出する。プラットフォーム６２２は、リソースのスケーリングを抽象化して、スケールの対応するレベルを、プラットフォーム６２２を介して実装されるリソース６２４について生じた要求に提供するように機能することもある。したがって、相互接続されるデバイスの実施形態において、本明細書で説明される機能性の実装を、システム６００にわたって分散してもよい。例えば機能性は、部分的にコンピューティングデバイス６０２内に実装されてもよく、クラウド６２０の機能性を抽象化するプラットフォーム６２２を介して実装されてもよい。
【００７３】
＜結論＞
本発明は、構造的特徴及び／又は方法的動作に特有の言語で説明してきたが、添付の特許請求の範囲において定義される本発明は、必ずしも説明される具体的な特徴又は動作に限定されないことが理解されよう。
むしろ、具体的な特徴及び動作は、特許請求に係る発明を実装する例示的な形式として開示される。
【図１】
2015512540.tif 000003
【図２】
2015512540.tif 000004
【図３】
2015512540.tif 000005
【図４】
2015512540.tif 000006
【図５】
2015512540.tif 000007
【図６】
2015512540.tif 000008
【国際調査報告】
2015512540.tif 000009
2015512540.tif 000010
2015512540.tif 000011