本出願は、その全てを参照により本明細書に援用される、「METHODS AND SYSTEMS FOR IN−APP SEARCH AND APP BROWSERS」と題する、2013年8月7日出願の米国仮特許出願第61862967号、「METHODS AND SYSTEMS FOR GENERATING USER INTERFACES RELATING TO APP SEARCH」と題する、2014年1月1日出願の米国仮特許出願第61922860号、「METHODS AND SYSTEMS FOR GENERATING USER INTERFACE RELATING TO APP SEARCH」と題する、2014年3月12日出願の米国仮特許出願第61951548号、および「METHODS AND SYSTEMS FOR COMMUNICATIONS BETWEEN APPS AND VIRTUAL MACHINES」と題する、2014年3月27日出願の米国仮特許出願第61971029号の優先権を主張する。
本発明は、インターフェイスに提示されるアイテムの動的出力をユーザに提供する、電子デバイスにおけるユーザインターフェイスを生成する方法およびシステムを提供する。
したがって、第一の主要な実施形態において本発明は、1以上のクライアントと、前記1以上のクライアントとネットワーク接続される1以上のサーバと、前記1以上のサーバに存在する1以上のアプリケーションと、前記1以上のサーバに存在する1以上のロボットと、を備え、前記1以上のロボットは、前記1以上のアプリケーションを実行するよう構成され、前記1以上のサーバは前記1以上のアプリケーションの出力を、前記1以上のアプリケーションが前記1以上のロボットにより操作されている間、前記1以上のクライアントに提供するよう構成される、動的ユーザインターフェイスを生成するシステムを提供する。
さらなる実施形態によれば、本発明は、1以上のクライアントと、前記1以上のクライアントとネットワーク接続される1以上のサーバと、前記1以上のサーバに存在する1以上のアプリケーションと、前記1以上のクライアントに存在する1以上のクライアントアプリケーションと、を備え、前記1以上のクライアントを介した前記1以上のアプリケーションとのユーザインタラクションを可能にするために、前記1以上のクライアントアプリケーションが前記サーバに存在する前記1以上のアプリケーションと結合される、動的ユーザインターフェイスを生成するシステムを提供する。
本発明のいくつかの例において、前記システムは前記1以上のサーバに存在するスーパバイザをさらに備える。また、前記システムの出力は、前記1以上のアプリケーションの出力からとられたテキスト、スナップ写真または一連のスナップ写真、または一部または全部の低速度撮影映像データおよび/または音声データを備える。前記1以上のサーバは、前記1以上のクライアントから1以上の要求を受け取ってもよい。他の例において、前記要求は、オンライン検索、アプリケーションのレンタルの用途のための1以上のアプリケーションへの要求、またはアプリケーション購入の用途のための1以上のアプリケーションへの要求に関連してもよい。前記1以上のアプリケーションの出力は、前記1以上の要求に関連するアプリケーションから前記クライアントに送信される。また、前記関連はin−appデータを用いて決定されてもよい。
本発明のある例によれば、前記システムは前記1以上のアプリケーションからの出力を含むin−appデータを記憶するデータベースを備えてもよい。また、前記1以上のクライアントへの前記出力のソースは、前記データベースに記憶される出力を備える。前記システムは、前記メディア出力部を介して前記サーバから送信される前記1以上のアプリケーションの出力を表示するよう構成される前記クライアントに存在するクライアントアプリケーションをさらに備えてもよい。本発明のさらに別の例において、前記システムは、前記クライアントに存在するメディア出力部をさらに備える。また、前記システムは、前記メディア出力部を介して前記サーバから送信される前記1以上のアプリケーションの出力を表示するよう構成される前記クライアントに存在するクライアントアプリケーションも備える。
一の例において、前記メディア出力部に表示される前記クライアントアプリケーションにより示される前記アプリケーションの出力は、クライアントアプリケーションを介した前記1以上のアプリケーションとのユーザインタラクションを許可するよう構成されてもよい。前記メディア出力部に表示される前記クライアントアプリケーションにより示される前記1以上のアプリケーションの出力は、前記1以上の対応するアプリケーションに結合されてもよく、前記結合は、座標およびイベントタグペアの通信を含む。別の例において、前記システムは、前記メディア出力部における前記クライアントアプリケーションにより表示される前記1以上のアプリケーションの前記出力とのユーザインタラクションに基づくシミュレーションにより、前記1以上のアプリケーションとインタラクトするために要求される物理的動きをシミュレートする手段をさらに備えてもよい。
本発明のいくつかの例によれば、前記クライアントは1以上のハードウェアデバイスをさらに備える。また、前記1以上のアプリケーションは前記1以上のハードウェアデバイスと結合されてもよく、前記結合は、ハードウェア値の通信を含む。前記1以上のアプリケーションは、前記1以上のアプリケーションに結合される、前記1以上のハードウェアデバイス、前記ハードウェア値を受信するよう構成される疑似ドライバ、HALレイヤおよびライブラリに対応する前記クライアントの少なくとも1つのドライバから前記ハードウェア値を受信するよう構成されてもよい。
他の例において、前記システムは、前記1以上のサーバでネイティブに実行できない前記1以上のアプリケーションを補助するための1以上の仮想マシンをさらに備える。また、ユーザインタラクションを容易にするために前記1以上のアプリケーションのインスタンスが生成される。例えば、前記ユーザインタラクションのために生成される前記アプリケーションの前記インスタンスは、前記アプリケーションの開始時に開始してもよく、前記アプリケーションとの前記ユーザインタラクションが始動する際に、前記アプリケーションが実行される場所で、または、前記アプリケーションにおける、前記ユーザの要求に最も関連する場所で開始してもよい。
別の実施形態において、本発明は、1以上のロボットを用いて1以上のサーバの1以上のアプリケーションを実行することと、前記1以上のクライアントに前記1以上のアプリケーションの出力を送信することと、を備える、動的ユーザインターフェイスを生成する方法を提供する。前記1以上のアプリケーションの送信された出力は、前記1以上のアプリケーションのテキスト、スナップ写真または一連のスナップ写真、一部または全部の低速度撮影映像出力および/または音声出力を含む。
本発明のいくつかの例について、前記方法は、前記1以上のクライアントからの1以上の要求を受け取ることをさらに備える。また、前記1以上の要求は、1以上のオンライン検索クエリーを備え、前記1以上の要求は、アプリケーションのレンタルの用途またはアプリケーションの購入の用途のための1以上のアプリケーションへの1以上の要求を備える。ある例によれば、出力を送信することは、前記1以上の要求に関連する前記1以上のアプリケーションの出力を備え、前記1以上のアプリケーションの関連は、in−appデータを用いて決定される。さらに別の例において、前記1以上のアプリケーションの出力を送信することは、前記1以上のアプリケーションにより出力が生成されている間、ライブまたはほぼライブで行なわれてもよい。前記方法は、1以上のデータベースにおける前記1以上のアプリケーションからの出力を含む、in−appデータを記憶することをさらに備える。また、前記1以上のアプリケーションの出力を送信することは、前記1以上のデータベースに記憶される出力を送信することで行なわれてもよい。前記方法は、1以上のアプリケーションサーバを用いて前記1以上のアプリケーションの実行をサポートすることも備えても良い。一の例において、前記方法は、1以上のデータベースにおいて、前記1以上のアプリケーションと前記1以上の対応するアプリケーションサーバとの間で交換されるデータを含む、in−appデータを記憶することをさらに備える。別の例において、前記方法は、1以上のメディア出力部に前記1以上のアプリケーションの出力を表示することをさらに備える。
前記方法は、本発明のある例によれば、1以上のクライアントアプリケーションを用いて、1以上のメディア出力部に前記1以上のアプリケーションの出力を表示することをさらに備える。また別の例において、前記方法は、前記メディア出力部の前記クライアントアプリケーションにより表示される前記1以上のアプリケーションの出力を介した前記1以上のアプリケーションとのユーザインタラクションを許可することと、前記1以上のメディア出力部に表示される前記1以上のクライアントアプリケーションにより示される前記1以上のアプリケーションの出力を前記1以上の対応するアプリケーションに結合することと、をさらに備える。一の例によれば、前記1以上のメディア出力部に表示される前記1以上のクライアントアプリケーションにより示される前記1以上のアプリケーションの出力を前記1以上の対応するアプリケーションに結合することは、1以上の座標およびイベントタグペアの通信を備える。また前記方法は、前記メディア出力部における前記1以上のクライアントアプリケーションにより表示される前記1以上のアプリケーションの出力とのユーザインタラクションに基づくシミュレーションにより、前記1以上のアプリケーションとインタラクトするために要求される物理的動きをシミュレートすることをさらに備えてもよい。本発明のさらに別の例において、前記方法は、前記アプリケーションのインスタンスとのユーザインタラクションを可能にするため、前記アプリケーションのインスタンスを生成することを備える。
さらに別の実施形態において、本発明は、1以上のサーバにおいてアプリケーションのインスタンスを生成して始動することと、前記1以上のクライアントを用いて前記1以上のアプリケーションとのユーザインタラクションを可能にするために、1以上のサーバにおいてアプリケーションの前記インスタンスを前記1以上のサーバに対して遠くに位置する1以上のクライアントに結合することと、を備える動的ユーザインターフェイスを生成する方法を提供する。
本発明のさらなる利点は、以下の説明において部分的に記載され、一部は説明から明らかになるものであり、または本発明の実施によって知られてもよい。本発明の利点は、添付の特許請求の範囲に特に指摘される要素および組み合わせによって実現および達成される。前述の一般的な説明および以下の詳細な説明の両方は、例示および説明のみであり、発明を限定するものではないことは、理解されるところである。
本発明の典型的な動的ユーザインターフェイスは、1以上のアプリケーションに関連する情報を表示するインターフェイスを生成する方法およびシステムを好適に備え、アプリケーションについて、動的ユーザインターフェイスは、ユーザにアプリケーションのダウンロード、インストールまたは実行を要求することなくアプリケーションが実行されている間、アプリケーションのテキスト、1以上の画像、1以上のスナップ写真、部分的または全部の低速度撮影映像(time-lapsed visual)および/または音声を含むアプリケーションの出力を好適に表示する。図1は、出力の少なくとも一部が、ロボットによりアプリケーションが実行される遠隔サーバ(例えば、図3に照らして説明および図示されるサーバ10)から好適にストリームされる、本発明の動的ユーザインターフェイスの好ましい実施形態の出力を示す。アプリケーションが実行される間、アプリケーションの出力が表示されることにより、本発明の動的ユーザインターフェイスは、アプリケーションの見た目や操作感を含むアプリケーションに関する情報を提供する。加えて、本発明の好ましい実施形態において、動的ユーザインターフェイスは、ユーザがアプリケーションとインタラクトできるように構成される。また別の好ましい実施形態において、遠隔サーバにて実行するアプリケーションは、ハードウェア値がアプリケーションに転送されるように、ユーザデバイス内蔵のハードウェアデバイス(例えば、センサまたは入力デバイス)に結合されてもよい。
本発明の動的ユーザインターフェイスは、様々なアプリケーションを好適に処理可能である。例えば、アプリケーションがモバイルアプリを含む場合、モバイルアプリに関連する静的テキストの記述および/または、静的画像を提供することに加えて、本発明の動的ユーザインターフェイスは、アプリが実行されている間、モバイルアプリのテキスト、1以上のスナップ写真、または部分的または全部の低速度撮影映像および/または音声出力を好適に表示する。別の例において、アプリケーションがモバイルゲームを含む場合、モバイルゲームに関連する静的テキストの記述および/または静的画像を提供することに加えて、本発明の動的ユーザインターフェイスは、ゲームがユーザによってスマートデバイスにおいてプレイされているかのように1以上のロボットがゲームを操作する際にアプリケーションにより生成されるテキスト、1以上のスナップ写真または部分的または全部の低速度撮影映像および/または音声出力を好適に表示し、したがって、動的ユーザインターフェイスを見ているユーザは、ロボットによりプレイされている間、モバイルゲームを見ることができる。別の例において、アプリケーションが複数のウェブページを持つウェブサイトを含む場合、ウェブサイトに関する静的テキストの記述および/または静的画像を提供することに加えて、本発明の動的ユーザインターフェイスは、ユーザがウェブサイトの様々なウェブページをクリックして進んでいるかのように、ウェブサイトのテキスト、1以上のスナップ写真、または部分的または全部の低速度撮影映像および/または音声出力を好適に表示する。出力にテキスト、ビデオ、アニメーション、または写真やウェブページのような複数の静的画像等の動画および/または音声を含む、いずれのアプリケーションにも本発明を適用することができることは、当業者に識別されるところである。
別の例において、いくつかのアプリケーションには、どのようにアプリケーションが実行/操作されるかユーザに示すよう、少なくともアプリケーションの一部を実行するサブプログラムまたはアクティビティが既に付随してもよいため(すなわち、これらの種類のアプリケーションは、サブプログラム/アクティビティが開始された後に自動的に動的出力を生成することができる)、ロボットは本発明の動的ユーザインターフェイスを実行するのに必須ではない。この例において、本発明のシステムは、1以上のロボットにアプリケーションを操作することを要求することなく、このタイプのアプリケーションの開始/起動および動的ユーザインターフェイスの相当部分への出力のストリームのみを必要とする。
また、好ましい実施形態において、本発明の動的ユーザインターフェイスは、アプリケーションの出力を提供するだけでなく、ユーザにアプリケーションをダウンロード、インストールまたは実行するよう要求することなく、ユーザが動的ユーザインターフェイスを介してアプリケーションにインタラクトできるようにするものである。
図2は、ユーザインタラクションのために構成された本発明の好ましい実施形態を示す。図2に示すように、本発明の動的ユーザインターフェイスに表示されるアプリケーション900について、インターフェイスは、アプリケーション900をローカルにダウンロードする必要なしに、ユーザがボックス912にテキストメッセージを入力して、そのテキストメッセージをアプリケーションに好適に送信できるようにする。別の例において、ユーザは、インターフェイス上のホームボタン918または地図ボタン920を直接クリックすることで、本発明の動的ユーザインターフェイスを介して地図アプリケーション800を制御することができる。こうすることで、本発明の動的インターフェイスは、アプリケーションの出力を表示するだけでなく、ユーザに動的インターフェイスを介してアプリケーションとインタラクトする機会も提供する。
本発明の別の実施形態において、動的ユーザインターフェイスは、ユーザが、ユーザデバイスを回転させる、傾ける、または振り動かす等アプリケーションを制御するための物理的動きを必要とする、インターフェイスに表示されるアプリケーションとインタラクトできるように構成される。本発明のこの実施形態において、これらの物理的動きは、インターフェイスに表示されるアプリケーションの出力とのユーザインタラクションによって好適にシミュレートすることができる。具体的には、ユーザは、物理的動きをシミュレートするため1以上の方向にアプリケーションの映像出力をドラッグすることで、動的ユーザインターフェイスに表示されるアプリケーションとインタラクトすることができる。一例として、アプリケーションがゲームデバイスを左または右に物理的に傾けることでユーザにゲームにおける車の方向を制御させるスポーツカードライビングゲームである場合、動的インターフェイスにおいてアプリケーションの出力を右または左にドラッグすることがユーザにこの傾ける動作をシミュレートできるようにすることになる。同様に、ゲームが、ゲームとインタラクトするためにユーザに振り動かす動作の利用を許可する場合、検索結果とインタラクトするよう振り動かす動作をシミュレートするため、動的ユーザインターフェイスの範囲内で検索結果を間断なく左右にドラッグすることで、ユーザはアプリケーションとインタラクトすることができる。
別の好ましい実施形態において、本発明の動的ユーザインターフェイスは、本発明のインターフェイスが表示されるデバイスのハードウェアデバイスと結合し、くだんのアプリケーションへの入力としてハードウェアデバイスにより生成されたハードウェア値を使用するよう構成される。例えば、くだんのアプリケーションは、デバイスのGPSモジュール、またはIP2Location(登録商標)機能といった手段を介してさらにシミュレートされた位置情報、またはIPアドレスにより物理的位置を発見可能な他の機能を介して本発明のインターフェイスが表示されるユーザデバイスから、実際のまたはシミュレートされた座標(または物理的位置)を好適に受信可能である。別の例において、アプリケーションは、本発明のインターフェイス、または本発明のインターフェイスが存在するデバイスの方位の変更の収集および受信が可能であり、ユーザのより良いアプリケーションの制御/操作を補助するよう適宜回転する。物理的制御を必要とする複数のアプリケーションが存在する場合、ユーザインターフェイスは、例えば、動的ユーザインターフェイスに表示される他のアプリケーションを見えないようにしつつ、アプリケーション/アプリケーションのユーザインターフェイスまたは出力を強調させることで、特定のアプリケーションに焦点を絞るよう構成されることができる。本発明の動的ユーザインターフェイスは、検索結果がデバイスのローカルにインストールされた場合と同様の体験をユーザに提供するために、知的にデバイスと通信する能力を備える。
本発明の動的ユーザインターフェイスは、検索結果の提供関連において、特に有用である。現在、GoogleやYahoo等の一般に普及している検索エンジンにより提供される検索結果は、静的データおよび画像に限られている。従来の検索エンジンにより提供される静的データおよび画像に加えて、本発明の動的ユーザインターフェイスは、検索結果がロボットにより実行される間、検索結果のテキスト、1以上のスナップ写真、または部分的または全部の低速度撮影映像および/または音声出力の提供が可能である。さらに、本発明は、アプリケーションの実行中にアプリケーションにより生成されたデータ(このような動的データを「in−appデータ」と呼ぶ)へのアクセスを有するため、検索は検索結果の静的な記述に加えてin−appデータに基づいてもよい。in−appデータに基づく検索を行なうことで、より豊富な量のデータに検索をかけることとなり、結果として従来の検索方法およびシステムに比べてより正確な検索結果につながるのである。in−app検索方法およびシステムについて、より詳しくは、米国特許出願第13960779号に記載されている。さらに、本発明の一の実施形態において、本発明の動的ユーザインターフェイスは、ユーザが、図1および2に示されるような検索結果インターフェイスに表示されるアプリケーション出力とインタラクトできるようにする。検索コンテクストに本発明を適用することで、従来の検索結果に比べ、本発明は、ユーザにアプリケーションのダウンロード、インストールまたは実行を要求することなく、より多くの情報の検索におけるより高い正確性と、検索結果の見た目や操作感のより良い理解とをユーザに提供することができる。
加えて、本発明の動的ユーザインターフェイスは、アプリケーション購入での用途、またはアプリケーションのレンタルでの用途に有益となる可能性も有している。具体的には、本発明が、購入および/またはダウンロードする前にユーザがアプリケーションを体験できるようにする、Androidのアプリストア等のモバイルアプリマーケットプレイスに本発明を適用することができる。さらに本発明は、ユーザがアプリケーションをダウンロードするのではなく本発明の動的ユーザインターフェイスを介してアプリケーションをレンタルできる、アプリケーションの販売ではなくレンタルを望むビジネスにも有用となることもできる。本発明が大量のビジネスコンテキストに利用できることは、当業者に識別されるところである。
図3は、本発明の動的ユーザインターフェイスを生成するシステムの好ましい実施形態を示す。図3に示す通り、システムは、1以上のサーバ10、1以上のクライアント20および/または1以上のアプリケーションサーバ30を好適に備える。
各サーバ10は、スーパバイザ100、1以上のロボット110、1以上のアプリケーション120、1以上のプロセッサ130および/または1以上のネットワークインターフェイス140を好適にさらに備える。スーパバイザ100は、本発明の制御部として動作するソフトウェアプログラムを好適に備える。各ロボット110は、1以上のアプリケーション120を実行するよう構成されたソフトウェアプログラムを好適に備える。各アプリケーション120は、ソフトウェアアプリケーション、オンラインPCゲーム、モバイルアプリ、ウェブブラウザ等を好適に備える。プロセッサ130は、スーパバイザ100、ロボット110、アプリケーション120、ネットワークインターフェイス140、データベース150または1以上の仮想マシン160のうちの1つ等のサーバ10の要素のためのデータを処理するよう好適に構成される。データベース150はシステムにより要求されたときデータを好適に記憶する。
本発明のシステムは、サーバ10のオペレーションシステムにおいて、アプリケーション120のいずれかがネイティブに実行不可能である場合にサーバ10におけるアプリケーション120の実行を補助可能な1以上の仮想マシン160を好適にさらに備える。システム10がAndroid、Windows(登録商標)、iOS(登録商標)、UNIX(登録商標)等のオペレーションシステムの多様性をエミュレート可能となるよう、サーバ10は複数の仮想マシン160を好適に備えるという点に留意する必要がある。
アプリケーションサーバ30は、対応するアプリケーション120と通信するおよび/または実行を支援するよう構成されたサーバを好適に備える。例えば、本発明の一の好ましい実施形態において、アプリケーション120はオンラインPCゲームを備えてもよく、この場合において、対応するアプリケーションサーバ30はオンラインPCゲーム120をホストするサーバを備え、オンラインPCゲーム120のために、データの受信、データの提供および/またはデータの処理等の、だがこれに限られないタスクを好適に実行する。本発明の別の好ましい実施形態において、アプリケーション120は、モバイルアプリを備えてもよく、この場合において、対応するアプリケーションサーバ30は、モバイルアプリ120をホストし、また対応するモバイルアプリ120のデータ受信、データ提供および/またはデータ処理等の、だがこれに限られないタスクを実行するサーバを好適に備える。本発明の別の好ましい実施形態において、アプリケーション120は、ウェブサイトを表示可能なウェブブラウザを備えてもよく、この場合において、対応するアプリケーションサーバ30は、ウェブサイトをホストし、またウェブブラウザアプリケーション120のデータ受信、データ提供および/またはデータ処理等の、だがこれに限られないタスクを実行するウェブサーバを好適に備える。本発明の別の好ましい実施形態において、アプリケーション120は、この例のシステムにおける対応するアプリケーションサーバ30を必要としないよう、いずれのアプリケーションサーバ30の操作も必要としないスタンドアロンソフトウェアアプリケーションであってもよい。
1以上のクライアント20は、1以上の入力モジュール210、1以上のネットワークインターフェイス220、1以上のプロセッサ230、1以上のメディア出力部240、1以上のハードウェアデバイス250および/または1以上のクライアントアプリケーション260を備える。1以上の入力モジュール210は、ユーザの要求等の入力を受け取るよう構成される。入力モジュール210は、オンスクリーンキーボード、物理的なキーボード、手書き入力モジュール、マイクまたはその組み合わせ体等の音声入力を備えてもよい。1以上のネットワークインターフェイス220は、サーバ10とクライアント20との通信ができるようにする。メディア出力部240は、1以上のアプリケーション120に関連するサーバ10から受信される出力等のテキスト、映像および/または音声情報を好適に出力可能である。
加えて、アプリケーションとユーザインタラクションできるようにする本発明の好ましい実施形態において、メディア出力部240はユーザからの入力も受け取り可能である。例えば、メディア出力部240は、カーソル等のポインティングデバイスの位置、またはタッチスクリーンの場合においては、ユーザがスタイラスまたは指の先端等でメディア出力部240と物理的接触をする位置を検出可能である。
さらに、この好ましい実施形態において、クライアント20は、カメラ、マイク、GPS、加速度計、ジャイロスコープ、光検出子、温度計、磁気計、気圧計、接近センサ、湿度計、NFC、ラウドスピーカ、またはイメージセンサ(しかし、それに限られない)を有する1以上のハードウェアデバイス250を好適にさらに備える。一の例において、ハードウェアデバイス250は、画像、音、加速度、周囲温度、回転速度、周囲照度、地球磁場、周囲気圧、デバイスのスクリーンに対する物体の接近、関連する周囲湿度、座標(GPS/AGPSモジュール)等の環境値を探知するよう好適に構成される。本発明のシステムは、ハードウェアデバイス250とこれらの環境値を含むアプリケーション120が通信できるよう好適に構成される。そのような通信の処理フローは、図5Bに関連して以下に説明される。一の例において、クライアントアプリケーション260は、本発明の動的ユーザインターフェイスの出力を表示可能な、ウェブブラウザまたはカスタマイズされたソフトウェアアプリケーション(アプリ)等の、メディア出力部240を含むあるいは結合されるソフトウェアアプリケーションを好適に備えるまたは結合するよう構成されることができる。
図4は、ユーザが、動的ユーザインターフェイスに表示されるアプリケーションとインタラクトすることができる、本発明の好ましい実施形態におけるサーバ10およびクライアント20の好ましいソフトウェアおよび関連するハードウェアアーキテクチャを示す。図4を参照すると、サーバ10のアーキテクチャは、仮想マシン160(アプリケーション120に要求された場合)、カーネル410、ハードウェア抽象化レイヤ420、1以上のライブラリ430、アプリケーションフレームワーク440、アプリケーション450および/または疑似ドライバ460を好適に備える。クライアント20のアーキテクチャは、ハードウェアデバイス250、デバイスドライバ520、メモリ530、ハードウェア抽象化レイヤ540、1以上のライブラリ550、アプリケーションフレームワーク560および/またはアプリケーション260を好適に備える。
ハードウェア抽象化レイヤ(HAL)420および540は、ハードウェアリソースにアプリケーション450へのアクセスを提供する複数のソフトウェアを好適に備える。HALはAndroidオペレーティングシステムソフトウェアアーキテクチャの標準部品であるが、iOSおよびWindows等の他のオペレーティングシステムにおいて、HALは必ずしも同じ形式で存在しない、またはまったく存在しない場合があるという点に留意する必要がある。そのため、クライアント20が非Androidオペレーションシステムで実行する本発明の代替の実施形態は、Windows Driver Model等のハードウェア制御および通信を処理するための同様のソフトウェアアーキテクチャを好適に備える。別の好ましい実施形態において、HALは不要である。アプリケーション450は、スーパバイザ100、ロボット110および/またはアプリケーション120を好適に備える。一の好ましい実施形態において、アプリケーション260はウェブブラウザを備える。ライブラリ430および550ならびにアプリケーションフレームワーク440および560は、アプリケーション450および260が実行してもよいソフトウェアプラットフォームを好適に提供する。上述のとおり、アプリケーション120がネイティブにサーバ10で実行できる場合、仮想マシン160は必要とされないことがある。
メモリ530は、ハードウェアデバイス250により生成されるハードウェア値が記憶されてもよいランダムアクセスメモリを好適に備える。疑似ドライバ460は、好適には、クライアント20から受信したハードウェア値をアプリケーション120またはアプリケーション120のAPIが理解できるデータに変換し、変換済データをアプリケーション120またはAPIに送信するソフトウェアである。好ましい実施形態において、疑似ドライバは一組のハードウェア値において作動するよう構成されることができる(例えば、GPS座標のみを処理し、その値をロケーションに関連するAPIに転送するよう構成されることができる)。別の好ましい実施形態において、疑似ドライバ460は、1つのアプリケーション120を複数のハードウェアデバイス250で処理するよう好適に構成されることができ(例えば、様々なハードウェアデバイスから異なる種類のハードウェア値を変換/転送することが可能になるよう構成されることができる)、そのため、アプリケーション120と複数のハードウェアデバイスとの結合を容易にする。疑似ドライバは、以下に図5Bに関連してより詳細に説明される。
当業者に識別されるとおり、システムの様々な要素はより少数のサーバあるいは1つのコンピュータにさえも組み合わされてもよい。例えば、サーバ10およびサーバ30のいずれかは、どちらも1つのマシンに存在してもよい。その一方で、サーバ10の様々な要素、クライアント20および/またはアプリケーションサーバ30は、必ずしも1つのサーバまたはクライアントに存在することを必要とせず、しかし別々のサーバおよび/またはクライアントに位置してもよい。例えば、サーバ10のデータベース150は、別々だがサーバ10にネットワーク接続された自身のデータベースサーバに位置することができる。別の例として、クライアント20のメディア出力部240は、ビルトインスクリーンである必要はないが、クライアント20にネットワーク接続された別々のスタンドアロンモニタであってよい。
図5Aは、本発明の動的ユーザインターフェイスを生成する方法の好ましい実施形態を示すフローチャートである。ステップ1000において、スーパバイザ100は、1以上のアプリケーション120を実行するよう1以上のロボット110を好適に起動する。ロボット110は、アプリケーションを自動的に実行するため、ユーザの行動を真似るよう好適にプログラムされる。別の好ましい実施形態において、ロボット110は、アプリケーション120のユーザインターフェイスをランダムにプローブすることで、アプリケーション120をランダムに動作するよう構成されることができる。このタイプのロボット110は、幅広い種類のアプリケーション120を動作させるのに適している。ロボット110の様々な実施形態の例は、米国特許出願第13960779号に記載されている。発明の一の好ましい実施形態において、ロボット110は、アプリケーション120を実行するようあらかじめプログラムされたロジックを使用するソフトウェアプログラムを備える。発明の別の好ましい実施形態において、ロボット110は、アプリケーション120を制御するようOCRロジックを使用するソフトウェアプログラムを備える。発明のさらに別の好ましい実施形態において、ロボット110は、アプリケーション120の人間による操作から学習されたロジックの使用を含む、アプリケーション120のあらかじめ記録された人間による操作に応じてアプリケーション120を操作するソフトウェアプログラムを備える。
例えば、ユーザが動的ユーザインターフェイスに表示されたアプリケーションとインタラクトできる本発明の好ましい実施形態において、ユーザが検索結果を動的ユーザインターフェイスを介して実行および制御することで操作する場合、ユーザの行動(例えば、「タッチ/タップ」イベントをシミュレートするインターフェイス上でのクリック、または「スライド/移動」イベントをシミュレートするドラッグの動作)は、ロボットが後にスクリプトを使用して同じアプリケーションを動作/制御するのを補助するためのスクリプト(またはプログラミングコードの一部)を形成するよう記録するため、クライアントアプリケーション260および/または1以上のハードウェアデバイス250により好適に検出され、スーパバイザ100および/またはロボット110に好適に送信される。この教示/機械学習の仕組みを通し、ロボット110はより人間らしく行動するよう学習することで好適に、より「知的」になる。したがって、ロボット110がより「人間らしく」なることから、動的ユーザインターフェイスに示されるアプリケーション120の出力は、ユーザに、より意味のあるものになる。発明の第4の好ましい実施形態において、ロボット110は、説明してきた4つのタイプのロジックの2つ以上の組み合わせに応じてアプリケーション120を操作するソフトウェアプログラムを備える。
ステップ1010において、スーパバイザ100またはロボット110は、アプリケーション120のそれぞれがサーバ10のオペレーティングシステムでネイティブに動作可能か、またはステップ1020において、仮想マシン160上で実行される必要があるかを好適に決定する。好ましい実施形態において、アプリケーション120がサーバ10で実行する本来のOS以外の特定のOSでネイティブに実行することが既に知られている場合、仮想マシン160において対応するOS上でアプリケーション120が実行されるよう、ステップ1010をとばしてステップ1020に直接進むことができる。ステップ1030において、必要であれば、アプリケーション120は、ステップ1040において適切に実行するために、1以上の対応するアプリケーションサーバ30に接続する。ステップ1050において、アプリケーション120は、テキスト、映像および/または音声出力を含むが、これに限られないデータを出力する。ステップ1060において、スーパバイザ100は、データベース150におけるアプリケーション120からのデータ出力を記憶するか否か決定する。記憶することが求められる場合、アプリケーション120によるデータ出力はステップ1070においてデータベース150に好適に記憶される。
一の好ましい実施形態において、データベース150に記憶されるデータは、ロボット110により実行されている間、1以上のアプリケーション120の出力を備える。出力は、テキスト、映像および/または音声出力を好適に備える。本発明の別の好ましい実施形態において、データベース150に記憶されるデータは、アプリケーション120と対応するアプリケーションサーバ30との間で送信されるデータを備える。本発明のさらに別の好ましい実施形態において、データベース150に記憶されるデータは、説明された両方のタイプのデータを備える。
本発明の一の好ましい実施形態において、スーパバイザ100は、データベース150におけるアプリケーション120からの出力全てならびにアプリケーション120と対応するアプリケーションサーバ30との間の通信全体を記憶すると判定する。本発明の別の好ましい実施形態において、スーパバイザ100は一部のデータのみを記憶すると判定してもよい。これは、処理能力および/または記憶領域を含むサーバ10のリソースの保護等のために好適に行なわれる。例えば、くだんのアプリケーション120のうちの1つがノーカットのムービーを備える場合、本発明のシステムは、ムービー全体を記憶するのではなく、ムービーの一連のスナップ写真、ムービーの短い断片、一連のムービーの短い断片または低解像度のムービーのノーカットバージョンのみ記憶する。
好ましい実施形態において、ステップ1000から1070は連続して繰り返される。別の好ましい実施形態において、ステップ1000から1070は定期的にまたは必要に応じてだけ繰り返される。例えば本発明は、ユーザが存在する場合、データベース150において使用可能ではない情報を要求するユーザが存在する場合または十分なシステムリソースがある場合などでのみ実行する。
ステップ2000において、本発明のシステムのユーザは入力モジュール210を介して要求を生成することができる。本発明の一の好ましい実施形態において、入力モジュール210が物理的なキーボードを備える場合、要求は、ある指示/キーボードをタイプすることで生成されてもよい。本発明の別の好ましい実施形態において、入力モジュールがマイク等の音声入力デバイスを備える場合、要求を生成するよう指示/キーボードの音声形式が受信され音声形式が認識された後に要求が生成されてもよい。
アプリケーション260は、ステップ2010において、ネットワークインターフェイス220および140を介してスーパバイザ100に要求を送信する。スーパバイザ100は、ステップ2020においてその要求を受信する。ステップ2030において、スーパバイザ100は、当該要求に関連するアプリケーション120を識別する。本発明の好ましい実施形態において、アプリケーション120のうちの1つの、特定の要求との関連性を決定するためにデータベース150内に記憶されるデータがスーパバイザ100によって使用されてもよい。上述のとおり、データベース150内に記憶されるデータは、アプリケーション120と、対応するアプリケーションサーバ30との間で通信されるデータとともに、アプリケーション120のうちの1つが実行されている間の、アプリケーション120のうちの1つのテキスト、映像および/または音声出力を好適に備えるin−appデータを備えてもよい。適合性の決定は、様々なアルゴリズムを使用して行なわれてもよく、最もシンプルなアルゴリズムは根本的な検索データへの要求に一致する単語を備える。
ステップ2040において、スーパバイザ100は、くだんの要求に関連するアプリケーション120の出力を、ネットワークインターフェイス140および220を介してクライアント20に送信すると判定する。本発明の一の好ましい実施形態において、スーパバイザ100はアプリケーション120のうちの1つから出力をすべて送信する。本発明の別の好ましい実施形態において、スーパバイザ100は一部の出力のみ送信するよう好適に構成される。例えば、好ましい実施形態において、スーパバイザ100は処理能力および/または記憶領域等のシステムリソースを保護するため、クライアント20への送信を限定可能である。具体的には、くだんのアプリケーション120のうちの1つがノーカットのムービーを備える場合、スーパバイザ100は、ムービー全体を送信するのではなく、クライアントアプリケーション260への出力の送信をムービーの一連のスナップ写真、ムービーの短い断片またはムービーの一連の短い断片のみに好適に限定する。
ステップ2050においてくだんの要求に関連するアプリケーション120の出力を受信すると、クライアントアプリケーション260はステップ2060においてメディア出力部240に出力を表示する。発明の一の好ましい実施形態において、メディア出力部240は、1以上の関連するアプリケーション120からの1以上の出力を表示するよう構成される。上述のとおり、出力には、ほぼリアルタイムでアプリケーション120が実行されているかのような、アプリケーション120のテキスト、音声、1以上のスナップ写真および/または一部または全部の低速度撮影映像および/または音声出力が含まれることが好ましい。本発明の別の好ましい実施形態において、サーバ10からストリームされるデータはライブまたはライブに近い状態ではなく、むしろデータベース150にあらかじめ記憶されたデータから供給される。
図5Bは、ユーザが動的インターフェイスから1以上のアプリケーション120とインタラクトできる本発明の好ましい方法を示す。このインタラクションを容易にするため、ステップ3000において、ユーザがアプリケーション120のうちの特定の1つとインタラクションを開始する場合にスーパバイザ100が検出できるよう、スーパバイザ100はメディア出力部240および/または入力モジュール210に表示されるクライアントアプリケーション出力に好適に結合される。
これは、座標を用いてメディア出力部240に表示されるクライアントアプリケーション260のマッピング出力を好適に備える。例えば、メディア出力部240が解像度480×800のスクリーンを備える場合、デカルト座標[33,88]は、アプリケーション120のアクティビティを表示するウィンドウの左側上部から33行目のピクセルおよび88列目のピクセルの位置を好適に示す。生成される表示の左側上部の角および右側下部の角の位置を特定するよう、クライアントアプリケーション260の中心および/またはXY座標のペア、例えば[33,88]および[109,208]に対応する座標等の情報を提供することで、メディア出力部240に表示されるクライアントアプリケーション260の出力は、スーパバイザ100に結合されてもよい。デカルト座標システム以外の座標システムが、必要に応じて使用されてもよいという点に留意する必要がある。
別の好ましい実施形態において、メディア出力部240に表示されるクライアントアプリケーション260の出力を結合することは、座標に関連付けられたイベントを示す1以上のイベントタグの使用を好適にさらに備える。例えば、「TOUCH[33,66]」は、メディア出力部240において、ピクセルで[33,66]とアドレス指定されるユーザのスクリーンのクリックまたはタッチ位置を表す。スーパバイザ100がメディア出力部240の解像度に比べて異なる解像度に構成されてもよく、またはメディア出力部240の一部のみが動的ユーザインターフェイスを表示するのに使用される等の理由により、座標および/またはイベントタグがスーパバイザ100のための適切な翻訳または変換を要求してもよいことは、当業者に理解されるところである。座標およびイベントタグを提供することで、ユーザが本発明の動的ユーザインターフェイスに表示されるアプリケーション120の特定の1つとインタラクションを開始することを望んでいるとユーザのアクションが示す場合に、スーパバイザ100は好適に検出することができる。ユーザはステップ3010において、様々な方法で行うことができる、アプリケーション120とのインタラクションを好適に開始する。例えば、メディア出力部240がタッチ感知型スクリーンを備える場合、ユーザは指先等でメディア出力部240に表示されるアプリケーション120の特定の1つ出力との物理的接触を好適に行う。本発明の別の好ましい実施形態において、メディア出力部240に表示されるアプリケーション120のうちの1つの出力にマウスを向けてクリックすることにより、ユーザはオンスクリーンカーソルでアプリケーション120のうちの1つとインタラクトすることができる。どちらの場合においても、当該座標の位置に対応するアプリケーション120のうちの1つとインタラクトすることをユーザが望んでいると示すよう、一連の座標およびタッチイベントタグはスーパバイザ100に送られる。さらに別の好ましい実施形態において、入力モジュールがキーボードを備える場合、ナンバー9に対応するアプリケーション120のうちの1つとのインタラクションを開始するために、ユーザはシンプルにナンバー9等の特定のキーを打つことができる。
次に、ステップ3020において、特にそのユーザと単独でインタラクトするようスーパバイザ100はアプリケーション120の新しいインスタンスを作成する。アプリケーションのこの新しいインスタンスはユーザにより手動で好適に操作されることから、ロボット110に接続される必要はない。1つのアプリケーション120とのインタラクトを望むユーザが複数存在する場合、各ユーザがアプリケーション120のインスタンスに別個にインタラクトできるよう、当該アプリケーション120の複数のインスタンスがサーバ10に作成されることができる。アプリケーション120が仮想マシン160に実行するよう要求する場合、一の好ましい実施形態において、アプリケーション120の他のインスタンスとして、アプリケーション120の新しいインスタンスを同じ仮想マシン160内で作成することができるという点に留意する必要がある。別の好ましい実施形態において、アプリケーション120の他のいずれのインスタンスとも共有されない自身の仮想マシン160内で実行する、アプリケーション120の新しいインスタンスを作成することができる。
アプリケーション120の新しいインスタンスが作成される場合、ユーザがアプリケーションを開始したばかりのように、アプリケーション120の新しいインスタンスは最初から好適に初期化される。例えば、くだんのアプリケーションがゲームである場合、ユーザがゲームを最初から体験できるよう、アプリケーション120の新しいインスタンスはゲームの一番最初から実行開始することができる。別の例において、アプリケーション120がユーザにストリーム音声を聞くことができるようにするモバイルアプリである場合、モバイルアプリの新しいインスタンスは、ユーザが異なるカテゴリの音楽を閲覧できる最初のデフォルトページで実行開始することができる。
あるいはまた、アプリケーション120の新しいインスタンスが作成された場合、ユーザがアプリケーション120とのインタラクションを要求した正確なまたはおおよその箇所からアプリケーション120の新しいインスタンスは実行できる。例えば、くだんのアプリケーション120がアニメーションまたはビデオを表示するモバイルアプリである場合、モバイルアプリの新しいインスタンスは、ユーザがアプリケーション120とのインタラクションを要求した際に、アニメーションが再生された正確なまたはおおよその箇所から実行開始することができる。別の例において、くだんのアプリケーション120が、そのうちの1つが新車の紹介に関連する、複数のアクティビティまたはページ含むモバイルアプリであり、要求が新車を購入する場所等の情報に関するものである場合、アプリケーション120の新しいインスタンスは複数ページのモバイルアプリの新車の販売代理店の位置情報を示す特定ページにまでユーザを直接導く。本発明のさらに別の好ましい実施形態において、アプリケーション120の新しいインスタンスが作成された場合、アプリケーション120の新しいインスタンスは、アプリケーション120の、関連づけられた要求に最も関連する部分で実行開始することができる。例えば、くだんのアプリケーション120がレストランXの複数ページにわたるウェブサイトであり、要求がレストランXの場所に関するものである場合、ロボットはウェブページの新しいインスタンスを複数ページにわたるウェブサイトのレストランXの位置情報を示す特定のウェブページにまで直接導くことができる。同様に、くだんのアプリケーション120がレストランXのマルチスクリーンモバイルアプリであり、要求がレストランXの場所に関するものである場合、ロボットは新しいインスタンスをマルチスクリーンモバイルアプリのレストランXの位置情報を示す特定のスクリーンにまで直接導くことができる。
次に、アプリケーション120とのユーザインタラクションを容易にするため、クライアント20はサーバ10において実行するアプリケーション120と好適に結合される。これはアプリケーション120に結合するメディアモジュール240ならびにハードウェアデバイス250を好適に備える。
一の好ましい実施形態において、ステップ3030にて、スーパバイザ100との結合とともに、メディア出力部240に表示されるクライアントアプリケーション260の出力をアプリケーション120に結合することは、座標及び/またはイベントタグを利用するマッピングを好適に備える。アプリケーション120がメディア出力部240の解像度に比べて異なる解像度に構成される場合があること、および/またはアプリケーション120の出力がメディア出力部240におけるクライアントアプリケーション260の出力の一部のみを占めること等の理由によって、スーパバイザ100との結合とともに、座標がアプリケーション120のための適切な翻訳または変換を要求してもよいことは当業者に理解されるところである。クライアントアプリケーション260の出力をアプリケーション120に結合させることで、アプリケーション120に、メディア出力部240におけるユーザアクションを受け取らせることができるようにする。
メディア出力部240に表示されるクライアントアプリケーション260の出力がアプリケーション120に結合される場合、本発明の動的ユーザインターフェイスは、ユーザがアプリケーションを操作するために物理的動きを要求するアプリケーションとインタラクトできるよう構成されることができる。前述の例において、物理的動きをシミュレートするため、ユーザはアプリケーション120の映像出力を1以上の方向にドラッグすることで動的ユーザインターフェイスに表示されるアプリケーションと好適にインタラクトまたは操作および制御することができる。一の好ましい実施形態において、ドラッグ動作は、対応するアプリケーション120により、XおよびYの値の変化が特定の方向であると解釈できるようにする一連の「DRAG[X,Y]」座標およびイベントタグペアの生成を好適に生じさせることができる。代替の実施形態において、クライアントアプリケーション260は、一連の「DRAG[X,Y]」座標およびイベントタグペアを、アプリケーション120が、アプリケーション120と適切にインタラクトするための方向であると解釈できるデータに変換してもよい。
このドラッグの仕組みを利用するアプリケーションの例として、アプリケーションがゲームデバイスを物理的に左または右に傾けることでユーザにゲームにおける車の方向を制御できるようにするスポーツカードライビングゲームである場合、動的ユーザインターフェイスにおいてアプリケーションの出力を右または左にドラッグすることがユーザにこの傾ける動作をアプリケーション120においてシミュレートできるようにする。同様に、ゲームとインタラクトするために、ゲームがユーザに振り動かす動作を利用できるようにする場合、アプリケーション120とインタラクトするよう振り動かす動作をシミュレートするため、動的ユーザインターフェイスの範囲内で、検索結果を間断なく左右にドラッグすることで、ユーザは検索結果とインタラクトすることができる。
本発明の別の好ましい実施形態において、クライアント20のハードウェアデバイス250もアプリケーション120と結合することができる。センサデバイス250をアプリケーション120と結合させることは、クライアント20が、アプリケーション120が要求するハードウェア設定を得るステップ3040を好適に備える。
ハードウェアデバイス設定は、アプリケーション120に要求される、ハードウェアデバイス250を構成するため利用される一組の値であることが好ましい。本発明の一の好ましい実施形態において、クライアント20が合計8のハードウェアデバイスを有する場合、アプリケーション120のハードウェア値の要求を表すために、ハードウェア設定は好適に8ディジットの形式(各々「0」または「1」の値を有する)をとることができる。一例として、[0,1,1,0,0,0,0,0]のハードウェア設定は、第2および第3のドライバ/ハードウェアデバイスが要求されていることを表すのに使用されてもよく、またクライアント20からアプリケーション120に転送されるべきである。アプリケーション120のハードウェア設定は、アプリケーション120を分析することで得ることができる。Androidアプリの例において、AndroidManifest.xmlファイルは、アプリを実行するのにどれだけの数のアクティビティ、インテントフィルタ等が必要かを表し、したがってアプリのハードウェア要求の提供もする。この例において、仮想マシンにおいて実行される各アプリは少なくとも1つのハードウェア設定を有することができる。
ハードウェア設定を受信すると、ステップ3050において、スーパバイザ100は好適に開始して、要求されたハードウェアデバイス250をアプリケーション120に結合する。このステップは、疑似ドライバ460およびドライバ520の利用を好適に伴う。あるいはまた、アプリケーション120はアプリケーション120のハードウェア設定にかかわらず複数のドライバに結合し、ハードウェア設定により選択されたドライバから第2環境へハードウェア値を送信することができる。ドライバが常時実行する必要がないことは当業者に理解されるところである。それらはハードウェア設定を受信した後に起動するように構成されることができ、またドライバは、ユーザが他のアプリケーションに乗り換えたためアプリケーション120から必要とされなくなったまたはクライアント20が電源を切ることができる場合に停止されることができる。
一度ハードウェアデバイス250がアプリケーション120と結合されると、ステップ3060においてハードウェアデバイス250がトリガされた場合、メモリ530はステップ3060において1以上のハードウェア値をドライバ520から受信する。そしてクライアント20は、ステップ3070において、サーバ10のHAL420を介してハードウェア値をアプリケーション120に送信する。疑似ドライバ460はハードウェア値を受信し、ハードウェア値をアプリケーション120に適したフォーマットに変換し、処理のため、変換したハードウェア値をアプリケーション120に送信する。
本発明の別の好ましい実施形態において、疑似ドライバを実行する必要はない。ハードウェア値をHAL420に送信し、直接アプリケーション120に転送することができる。例えば、ユーザがナビゲーションアプリを操作するために動的ユーザインターフェイスを使用する場合、ナビゲーションアプリはGPS/AGPSモジュールに直接結合することなく実際に実行している。動的ユーザインターフェイス自身がアプリケーションでありハードウェア値を受信するよう構成されない場合があるため、クライアント20で生成されるGPS信号はナビゲーションアプリ120に送信できない(例えば、Androidアプリについて、アプリケーションパッケージファイル(例えば、Androidにおける.apkファイル)をパックする前に座標を取得するため、プログラマは、android.locationパッケージに「Gps Satellite」と呼ばれるクラスをロードするための行をプログラムコードに書き記すことを要求される。動的ユーザインターフェイスで実行できるアプリケーションを予測または制限することは不可能であるため、すべての潜在的なハードウェアから提供されるすべての機能を知ることは困難である。)本発明の一の例において、動的ユーザインターフェイスは処理のためにデフォルトですべてのクラスをロードしてもよい。本発明の別の例において、関連するハードウェア値を受信した後に、特定の種類のクラスをロードするためまたは特定のハードウェアと結合するために動的ユーザインターフェイスは自身を動的に構成することができる(すなわち、対応するクラスをロードするためハードウェア値に応じて動的ユーザインターフェイスにて実行されるプログラム)。
一の好ましい実施形態において、対応するハードウェア値/ハードウェアに生成されたファイルが、要求された際にはステップ3050を介していつでもアプリケーション120に送られることができるよう、ハードウェアデバイス250に対応するドライバは継続的にアプリケーション120に結合されることができる。別の好ましい実施形態において、ハードウェア値は、ネットワークサービスがない場合にメモリ560においてバッファされることができ、ネットワークサービスが再開した場合にだけアプリケーション120に送信されることができる。
本発明の好ましい実施形態において、ハードウェア値は、クライアント20のカメラ、マイク、加速度計、温度計、ジャイロスコープ、磁気計、気圧計、接近センサ、湿度計等のハードウェアからの画像、音、加速度、周囲温度、回転速度、周囲照度、地球磁場、周囲気圧、デバイスのスクリーンに対する物体の接近、関連する周囲湿度、座標(GPS/AGPSモジュール)等を備える。
本発明の方法の上記の説明にて示された通り、スーパバイザ100は多くのタスクを行う。スーパバイザ100は1つのソフトウェアモジュールとして構成されることができる、またはスーパバイザ100は、スーパバイザ100が行う様々な機能により分割された、いくつかのモジュールを備えることができるという点に留意する必要がある。例えば、特にアプリケーション120の出力を送信するスーパバイザ100のモジュールが存在でき、またデータベースストレージを制御するための異なるモジュール、またアプリケーションのインスタンスを生成するさらに別のモジュール等が存在できる。加えて、スーパバイザ100により行われるあるタスクを必要としない代替の実施形態において、スーパバイザ100のそれらのモジュールは本発明の方法およびシステムに含まれない。例えば、アプリケーション120の出力すべてが常にクライアント20に送信されている場合、クライアント20に何を送るか判定するスーパバイザ100のモジュールは不要である。極端な場合には、スーパバイザ100により行なわれるほとんどのタスクが必要ない場合、スーパバイザ100の残りの機能は、ロボット110等の本発明の方法およびシステムの他の要素に組み込まれてもよい。例えば、特定のユーザからの要求が常に唯一のアプリケーションを参照する場合、出力は常に当該アプリケーションのすべてであり、ユーザインタラクションの必要がなくなり、スーパバイザ100の制御および意思決定機能は必要ではなくなる。代わりに、ロボット110は、要求ステップ220の受信および、ステップ230および240において、要求されたアプリケーション120の送信を処理することができる。
一例として、図4、5Bおよび6は、アプリケーション120のためにユーザが写真を撮影するためハードウェアデバイス250としてカメラを使用する好ましい実施形態を説明するのに使用されてもよい。図5において、破線は関数呼び出しまたは指示(ハードウェアまたは対応するAPIへの呼び出し/指示)を表し、実線は実際のデータ送信、例えば写真または他の種類のハードウェア値を表す。
ステップ3000において、好適にはスーパバイザ100はメディア出力部240においてクライアントアプリケーション260の出力に結合し、ユーザアクションを聞く。ステップ3010において、アプリケーション120とインタラクションを開始するために、ユーザは、座標およびユーザイベントをスーパバイザ100に送る、本発明の動的ユーザインターフェイスに表示されるアプリケーション120を好適に選択する。座標およびタッチイベントを受信すると、スーパバイザ100はアプリケーション120を開始する。ステップ3020において、スーパバイザ100は特にユーザのためにアプリケーション120の新しいインスタンスを生成する。次に、ステップ3030において、スーパバイザ100は座標およびイベントタグを用いて、メディア出力部240に表示されるクライアントアプリケーション260の出力をアプリケーション120に結合する。ステップ3040において、スーパバイザ100は、要求されたハードウェア250の1つがカメラである、アプリケーション120のハードウェア設定を受信する。ステップ3050において、スーパバイザ100はカメラのドライバをアプリケーション120に結合する。これは、ドライバ520および疑似ドライバ460の開始を要求してもよい。ステップ3060において、ハードウェア250はトリガされる。これは、ユーザが図6のボタン610等の、動的ユーザインターフェイスに表示されるアプリケーションのビジュアルイメージにおけるカメラに対応するボタンを打つことを含んでもよい。タッチイベントを受信した後、スーパバイザ100はタッチイベントを認識してタッチイベントをアプリケーション120に適用する。解像度の差異に対するいずれかの適切な変換の後、タッチイベントが、タッチイベントがカメラトリガボタン内で発生したことを示しているため、アプリケーション120はユーザが写真の撮影を望んでいることを認識する。本発明の代替の実施形態において、アプリケーション120は、図6に示されるようにカメラをトリガするためのボタンに対応するメディア出力部240のエリア620を構成するために一組の座標を送ってもよい。例えば、クライアントアプリケーション260が最初のタッチイベントを生成するようユーザがスクリーンをタッチした位置を認識するように構成されてもよいため、一組の座標をアプリケーション120に送信するステップが必要ない。1つの例において、ボタンに対応するビューは動的出力インターフェイスによりローカルに生成されることができ、そのため解像度はローカルに固定されることができる。しかし、動的ユーザインターフェイスの残りのスクリーンはアプリケーション120からの出力を表示するためのものであり、解像度はネットワークの帯域幅に調整するよう構成されることができる(例えば、帯域幅が高い場合は1080Pになり、低い場合は360Pになる)。
一度カメラがトリガされると、ステップ3070においてハードウェア値がメモリ530に送られる。ハードウェア値は1以上の撮影された画像を好適に備える。そして、ステップ3080において、このデータはHAL420および540を介してアプリケーション120に送られる。
本発明の別の好ましい実施形態においては、ロボットがアプリケーション120を実行することは、必要とされない。代わりに、ユーザは、彼または彼女が使用を望んでいるアプリケーション120を簡単に要求することができ、その応答として、サーバ10が、アプリケーション120の出力をユーザに最初に見せる必要なく、アプリケーション120がロボット110に実行されている間、ユーザが使用するためのアプリケーション120の新しいインスタンスを生成する。したがって、図3に示されるこの特定の実施形態に対応するシステムはロボット110を必要としない。図5Cおよび5Dは、本発明のこの好ましい実施形態の処理を示す。
ステップ4000において、ユーザは入力モジュール210を介して要求を入力する。そしてクライアント20は、ステップ4010において、要求をサーバ10に送信する。次に、ステップ4020において要求を受信すると、スーパバイザ100はステップ4030において要求に関連するアプリケーション120を決定する。ステップ4040において、スーパバイザ100はアプリケーション120の新しいインスタンスを生成する。アプリケーション120のこの新しいインスタンスの生成において、スーパバイザ100は、ステップ4050から4080において、適正に実行するために、アプリケーション120が仮想マシンならびにアプリケーションサーバ30を要求するかを決定する。一度アプリケーション120の新しいインスタンスが生成されると、ステップ4090において、アプリケーション120は起動して出力の生成を開始する。この時点でのアプリケーション120の出力は、アプリケーション120の起動画面の表示等のアプリケーション120の通常の起動に関連し、ロボット110の実行によるものでないことは強調されなければならない。ステップ4100において、スーパバイザ100は、ステップ4110でクライアント20が受信する出力をクライアント20に送信する。ステップ4120において、クライアント20が、メディア出力部240に表示されるクライアントアプリケーション260を介してサーバ10から送信されるアプリケーション120の出力を表示する。
次に、ステップ4130において、スーパバイザは、メディア出力部240に表示されるクライアントアプリケーション260により示されるアプリケーション120の出力を介してユーザとアプリケーション120とをインタラクションできるようにするために、XY座標および/またはイベントタグを用いてメディア出力部240に表示されるアプリケーション260の出力とアプリケーション120を結合する。アプリケーション120とのインタラクションのためにハードウェアが要求される場合、クライアント20はアプリケーション120からハードウェア設定を得る。ステップ4150において、スーパバイザ100は、ドライバ520、HAL540、疑似ドライバ460およびHAL420を用いて、要求されたハードウェアデバイス250をアプリケーション120に結合する。一度アプリケーション120およびハードウェアデバイス250が結合されると、ステップ4160においてハードウェアデバイス250をトリガすることが可能になる。ステップ4170において、ハードウェアデバイス4160は、ハードウェア値をアプリケーション120が処理できる形式に変換する疑似ドライバ460を介してアプリケーション120に転送されることができるハードウェア値を生成する。デバイス20と完全に結合しているアプリケーション120を用いることで、ユーザは、デバイス20においてアプリケーション120を実際にダウンロード、インストールおよび/または実行することなく、クライアント20においてアプリケーション120が実行しているかのように、クライアント20を介してアプリケーション120を使用することができる。
本発明の広範な発明の概念から逸脱することなく、上述の例に変更を加えることが可能であることは当業者に識別されるところである。本発明は、したがって、特定の開示された例に限定されないものと理解されるが、添付の請求項により定義される本発明の範囲および趣旨から逸脱することない修正を含むことが意図されている。
さらに、本発明の代表的な例の説明において、本明細書は特定のステップのシークエンスとして、本発明の方法および/または処理を提示してもよい。しかし、方法または処理がここに定められた特定の順序に依拠しない場合においては、方法または処理は説明された特定のステップのシークエンスに限定されるべきではない。ステップの他のシークエンスが可能であることは当業者に識別されるところである。したがって、本明細書に定められたステップの特定の順序は請求項に記載の範囲に制限されると解釈されるべきではない。加えて、本発明の方法および/または処理は、記載の順序でのステップの実行に限定されるべきものではなく、シークエンスは変更されてもよく、本発明の範囲および趣旨から逸脱しないことは当業者に識別されるところである。
本発明のシステムは、サーバ10のオペレーションシステム において、アプリケーション120のいずれかがネイティブに実行不可能である場合にサーバ10におけるアプリケーション120の実行を補助可能な1以上の仮想マシン160を好適にさらに備える。システムがAndroid、Windows(登録商標)、iOS(登録商標)、UNIX(登録商標)等のオペレーションシステム の多様性をエミュレート可能となるよう、サーバ10は複数の仮想マシン160を好適に備えるという点に留意する必要がある。
本発明の方法の上記の説明にて示された通り、スーパバイザ100は多くのタスクを行う。スーパバイザ100は1つのソフトウェアモジュールとして構成されることができる、またはスーパバイザ100は、スーパバイザ100が行う様々な機能により分割された、いくつかのモジュールを備えることができるという点に留意する必要がある。例えば、特にアプリケーション120の出力を送信するスーパバイザ100のモジュールが存在でき、またデータベースストレージを制御するための異なるモジュール、またアプリケーションのインスタンスを生成するさらに別のモジュール等が存在できる。加えて、スーパバイザ100により行われるあるタスクを必要としない代替の実施形態において、スーパバイザ100のそれらのモジュールは本発明の方法およびシステムに含まれない。例えば、アプリケーション120の出力すべてが常にクライアント20に送信されている場合、クライアント20に何を送るか判定するスーパバイザ100のモジュールは不要である。極端な場合には、スーパバイザ100により行なわれるほとんどのタスクが必要ない場合、スーパバイザ100の残りの機能は、ロボット110等の本発明の方法およびシステムの他の要素に組み込まれてもよい。例えば、特定のユーザからの要求が常に唯一のアプリケーションを参照する場合、出力は常に当該アプリケーションのすべてであり、ユーザインタラクションの必要がなくなり、スーパバイザ100の制御および意思決定機能は必要ではなくなる。代わりに、ロボット110は、要求ステップ2020の受信および、ステップ2030および2040において、要求されたアプリケーション120の送信を処理することができる。
一例として、図4、5Bおよび6は、アプリケーション120のためにユーザが写真を撮影するためハードウェアデバイス250としてカメラを使用する好ましい実施形態を説明するのに使用されてもよい。図4において、破線は関数呼び出しまたは指示(ハードウェアまたは対応するAPIへの呼び出し/指示)を表し、実線は実際のデータ送信、例えば写真または他の種類のハードウェア値を表す。