特許第6050719号(P6050719)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

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

▶ ヴイエムウェア インコーポレイテッドの特許一覧

特許6050719リモートデバイスのためのユーザインターフェイス仮想化
<>
  • 特許6050719-リモートデバイスのためのユーザインターフェイス仮想化 図000002
  • 特許6050719-リモートデバイスのためのユーザインターフェイス仮想化 図000003
  • 特許6050719-リモートデバイスのためのユーザインターフェイス仮想化 図000004
  • 特許6050719-リモートデバイスのためのユーザインターフェイス仮想化 図000005
  • 特許6050719-リモートデバイスのためのユーザインターフェイス仮想化 図000006
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6050719
(24)【登録日】2016年12月2日
(45)【発行日】2016年12月21日
(54)【発明の名称】リモートデバイスのためのユーザインターフェイス仮想化
(51)【国際特許分類】
   G06F 3/0481 20130101AFI20161212BHJP
   G06F 13/00 20060101ALI20161212BHJP
   G06F 15/00 20060101ALI20161212BHJP
【FI】
   G06F3/0481
   G06F13/00 500D
   G06F15/00 410B
【請求項の数】14
【外国語出願】
【全頁数】21
(21)【出願番号】特願2013-91433(P2013-91433)
(22)【出願日】2013年4月24日
(65)【公開番号】特開2013-229028(P2013-229028A)
(43)【公開日】2013年11月7日
【審査請求日】2014年12月12日
(31)【優先権主張番号】61/638,469
(32)【優先日】2012年4月25日
(33)【優先権主張国】US
(31)【優先権主張番号】13/646,993
(32)【優先日】2012年10月8日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】510149482
【氏名又は名称】ヴイエムウェア インコーポレイテッド
【氏名又は名称原語表記】VMware,Inc.
(74)【代理人】
【識別番号】100105957
【弁理士】
【氏名又は名称】恩田 誠
(74)【代理人】
【識別番号】100068755
【弁理士】
【氏名又は名称】恩田 博宣
(74)【代理人】
【識別番号】100142907
【弁理士】
【氏名又は名称】本田 淳
(72)【発明者】
【氏名】ダニエル ジェイムス ベヴァリッジ
(72)【発明者】
【氏名】チャールズ アンドリュー ハースティウス
(72)【発明者】
【氏名】アンドレ レイボヴィシ
【審査官】 松田 岳士
(56)【参考文献】
【文献】 特表2005−506595(JP,A)
【文献】 特開2010−226737(JP,A)
【文献】 特開2012−079084(JP,A)
【文献】 特開2011−257988(JP,A)
【文献】 特開2001−100972(JP,A)
【文献】 Nao TOYAMA,“JavaScript+ブラウザ探検”,WEB+DB PRESS,日本,株式会社技術評論社,2009年 3月25日,初版,第49巻,pp.160-167
【文献】 福田 和宏,“簡単&格安で作る 最強のLinuxマシン”,日経Linux,日本,日経BP社,2012年 8月 8日,第14巻,第9号,pp.54-60
(58)【調査した分野】(Int.Cl.,DB名)
G06F 3/01
3/048−3/0489
3/14−3/153
13/00
15/00
(57)【特許請求の範囲】
【請求項1】
サーバデバイスに接続されたクライアントデバイスの画面上に表示されるローカルグラフィカルユーザインターフェイス(GUI)を生成する方法であって、
前記サーバデバイスのリモートGUIのベース画像、及び前記リモートGUI内のGUI要素を記述したユーザインターフェイスメタデータを前記サーバデバイスから受信すること、
前記リモート画像の前記ベース画像を前記クライアントデバイスの画面上に表示すること、
前記リモートGUI内の前記GUI要素に対応し、前記受信したUIメタデータに従って前記画面上に表示すべきネイティブGUI要素を前記クライアントデバイスにて生成すること、
前記サーバデバイスから受信した前記ベース画像の上に前記ネイティブGUI要素をオーバレイ表示することにより前記クライアントデバイスの画面上に表示すべき前記ローカルGUIを生成するこ
を備える方法。
【請求項2】
前記UIメタデータは前記リモートGUI内の前記GUI要素のコンテンツに関連した意味情報を備え、前記UIメタデータはツリー型構造に編成されている、請求項1に記載の方法。
【請求項3】
前記生成されたネイティブGUI要素は、前記リモートGUI内の前記対応するGUI要素とは、サイズ、形状、色、形式、対話方式、アニメーション、及び対話動作のうちの少なくとも1つにおいて異なっている、請求項1に記載の方法。
【請求項4】
前記ネイティブGUI要素を生成することはさらに、
前記クライアントデバイスに対しローカルなユーザインターフェイスフレームワークを使用して、前記受信したUIメタデータに基づいてシステム組み込みの制御要素を生成することを備える、請求項1に記載の方法。
【請求項5】
前記クライアントデバイスの画面はタッチスクリーンであり、
前記ローカルGUIを介して前記タッチスクリーンのタッチ入力を前記クライアントデバイスにて受信すること、
前記受信した入力によって前記ネイティブGUI要素が操作されたと判定することに応答して、前記リモートGUI内の前記対応するGUI要素が前記クライアントデバイスにて操作されたことを示す情報を前記サーバデバイスに伝送すること、
をさらに備える請求項1に記載の方法。
【請求項6】
前記サーバデバイスに伝送された前記情報は、前記リモートGUIの一部のアプリケーションの状態の変更に関する情報を備える、請求項に記載の方法。
【請求項7】
前記サーバデバイスに伝送された前記情報は、前記サーバデバイスのアクセス可能性を補助するアプリケーション・プログラミング・インターフェイスをトリガするように構成されたイベント情報を備え、前記アクセス可能性を補助するアプリケーション・プログラミング・インターフェイスは、前記サーバデバイスの前記リモートGUIをプログラムによって操作するように構成されている、請求項に記載の方法。
【請求項8】
前記サーバデバイスに伝送された前記情報は、前記リモートGUIのメニューUI要素のメニューナビゲーションを示す情報を備える、請求項に記載の方法。
【請求項9】
前記サーバデバイスはゲストオペレーティングシステムを実行しており、
前記サーバデバイスの前記GUIをプログラムによって操作するように構成された前記ゲストオペレーティングシステムのアプリケーション・プログラミング・インターフェイスを使用して、前記サーバデバイスの前記GUI内の前記GUI要素を特定する前記ユーザインターフェイスメタデータを生成すること、
前記GUIの前記ベース画像、及び前記生成されたUIメタデータを、前記サーバデバイスに接続された前記クライアントデバイスに伝送すること、
前記サーバデバイスの前記GUI内の前記GUI要素にリンクしたユーザ入力を示す情報を前記クライアントデバイスから受信すること、
前記受信した情報に従って前記サーバデバイスの前記GUIをプログラムによって操作するために、前記アプリケーション・プログラミング・インターフェイスを呼び出すこと、
をさらに備える請求項1に記載の方法。
【請求項10】
前記アプリケーション・プログラミング・インターフェイスを呼び出すことは、前記UIメタデータによって特定された前記GUI要素における特性値の変化を示すイベントを生成することを備える、請求項に記載の方法。
【請求項11】
前記サーバデバイスの前記GUI内の第2のGUI要素の状態変化を検知したときに、前記サーバデバイスの前記GUIをプログラムによって操作するように構成された前記ゲストオペレーティングシステムの前記アプリケーション・プログラミング・インターフェイスを使用して、前記第2のGUI要素の状態変化を特定する更新UIメタデータを生成することをさらに備える請求項に記載の方法。
【請求項12】
前記ゲストオペレーティングシステム上で実行中のアプリケーションのアプリケーション状態の変化を検知したときに、前記サーバデバイスの前記GUIをプログラムによって操作するように構成された前記ゲストオペレーティングシステムの前記アプリケーション・プログラミング・インターフェイスを使用して、前記アプリケーション状態の変化を特定する更新UIメタデータを生成することをさらに備える請求項に記載の方法。
【請求項13】
前記サーバデバイスの前記GUI上の前記GUI要素は、アプリケーションウィンドウのメニューバーを備え、
前記サーバデバイスの前記GUI内の前記GUI要素にリンクしたユーザ入力を示す前記受信した情報は、前記サーバデバイスの前記GUIの前記メニューバーのメニューナビゲーションを示す情報を備える、請求項に記載の方法。
【請求項14】
前記クライアントデバイスの入力デバイスを介して前記クライアントデバイスにて音声入力を受信すること、
前記音声入力を処理して、前記サーバデバイスの前記リモートGUIを操作するために入力されたコマンドを判定すること、
前記リモートGUIを操作するために、前記入力されたコマンドを示す情報を前記サーバデバイスに伝送すること、をさらに備える請求項1に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、リモートデバイスのためのユーザインターフェイス仮想化に関する。
【背景技術】
【0002】
サーバベースコンピューティングは、サーバコンピューティングシステムから遠隔に配置されてネットワーク接続されたクライアントデバイスが、サーバ上のコンピューティングリソースにアクセスすることを可能にする。例えば、クライアントデバイスは、リモート・デスクトップ・プロトコル(RDP)、仮想ネットワークコンピューティング(VNC)、パーソナルコンピュータ・オーバー・インターネットプロトコル(PCoIP)といったリモート・デスクトップ・プロトコルを使用してデスクトップに遠隔アクセスするデスクトップ・リモーティング・クライアント・ソフトウェアおよびハードウェアを実行することができる。デスクトップ・リモーティング・クライアント・ソフトウェアが、サーバコンピューティングシステムで実行中のオペレーティングシステムおよびアプリケーションが生成したグラフィカルユーザインターフェイスの画像を、例えば仮想マシンにおいて表示させる。用語「デスクトップ」は、ローカル(ユーザから見た場合)デスクトップまたはワークステーションコンピュータとしてエンドユーザによりアクセスされる仮想マシンまたは物理システムを意味し得る。用語「デスクトップ」はまた、ユーザが、アプリケーション、設定、及びデータの立ち上げ、対話、管理を行うことができるヒューマンインターフェイス環境を意味してもよい。ユーザは、リモート・デスクトップ・プロトコルおよびデスクトップリモーティングクライアントを使用して、リモートデスクトップにアクセスすることができる。典型的に、クライアントデバイスは、ローカル側の入力デバイスおよび出力デバイス(例えば、ディスプレイ、キーボード、マウス)のセットを備え、このローカル側のI/Oデバイスのセットを使用して、ユーザ入力(例えばキーボードまたはマウスでの入力)を処理するべくリモートシステムへ伝送し、さらにディスプレイデータおよび他のデータ(例えばサウンド)をユーザ用に提供するべく受信する。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】米国特許出願公開第2011/0314093号明細書
【非特許文献】
【0004】
【非特許文献1】「Remote Desktop Protocol:Graphics Device Interface Acceleration Extensions」マイクロソフト社
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかし、タッチスクリーンを設けたクライアントデバイスのユーザは、従来のデスクトップベースのアプリケーション(例えばマイクロソフト社Windows(登録)アプリケーション)やデスクトップと、リモートディスプレイプロトコルを通じてインターフェイスする場合にいくつかの課題に直面する。1つの課題は、一時停止またはジッタなどの現象を作り出す、タッチスクリーンデバイスとリモートデスクトップとの間のネットワーク接続の待機時間に関連している。別の課題は、従来の「ポイント&クリック」駆動型インターフェイス(例えば、Windows(登録)インターフェイス)を、それまでの「ポイント&クリック」対話用としてではなく、タッチスクリーンジェスチャおよび「フィンガスワイプ」形式の対話用として設計されたタッチスクリーンデバイスから遠隔制御する試みに関連している。
【0006】
これらの課題を検討する上で、タッチスクリーンデバイスで制御されたリモートデスクトップを、例えばリモートデスクトップのフォントサイズを自動調整することで修正することが当該技術分野で周知である。しかし、こうした大規模な表面的変更はリモートサーバから受信して表示されているコンテンツのみを修正するものであり、メニューナビゲーションおよびユーザフィードバックの待機時間の短縮には失敗しないものの、ユーザは依然として「ポイント&クリック」形式のインターフェイスによってデスクトップアプリケーションを誘導する必要がある。
【0007】
さらに当該技術では、マイクロソフト社より入手可能な「Remote Desktop Protocol:Graphics Device Interface Acceleration Extensions」(非特許文献1)に記載されているように、リモートサーバが自身のビデオドライバを使用してディスプレイ出力をレンダリングし、さらに、実際の画像を暗号化する代わりに画像を生成する絵画オペレーションを暗号化することも周知である。例えば、塗りつぶされた長方形のビットマップ画像をサーバからクライアントへ送信する代わりに、座標(X、Y)上で所与の幅、高さ、塗りつぶし色で長方形をレンダリングする命令をクライアントに送信することができる。次にクライアントは、目的のグラフィック結果を得るために描画命令を実行する。しかし、このアプローチでは、サーバ上のものと同一の対応するグラフィカルインターフェイスをクライアント上で生成するだけであり、これでは、タッチスクリーンまたは非ポインタベースの形式のインターフェイスを実装したクライアントデバイス上での使用が難しい。
【0008】
あるいは、米国特許出願公開第2011/0314093号(特許文献1)に記載されているように、クライアントデバイス上でのユーザジェスチャを、2ボタンマウスに共通の制御(例えば、クリック、ウィンドウスクロール、右クリック)のような、リモートコンピュータのネイティブ入力形式のデジタル表示に変換し、クライアントデバイスがコンピュータを制御できるようにすることも当該技術分野において周知である。しかし、このアプローチでは、新規のユーザインターフェイスを習得し、どのタッチスクリーンジェスチャがマウス入力に対応するのかを覚えることをユーザに強いるので、厄介で使用し難い可能性がある。さらにこのアプローチでは、依然としてリモートデスクトップから基礎画面データを取り込んで表示させる必要があり、ユーザとユーザインターフェイス間の対話の待機時間を改善することができない。
【0009】
したがって、1つのユーザインターフェイス形式を持ったリモートデスクトップへのアクセスを、別のユーザインターフェイス形式を持ったクライアントデバイスに提供するための改善されたシステムおよび方法が必要である。
【課題を解決するための手段】
【0010】
本発明は、添付の特許請求の範囲に記載の方法を提供する。さらに、この方法を実行するコンピュータシステムを提供する。本発明のその他の特徴は、従属形式の請求項および以降の説明から明らかになるであろう。
【0011】
概して、ここで説明されるユーザインターフェイス仮想化は、第1コンピューティングデバイスの、或る形式のコンピュータユーザインターフェイスのエルゴノミクスを、第2コンピューティングデバイスに適した別の形式のユーザインターフェイスのエルゴノミクスに変換しながら、第1コンピューティングデバイスから第2コンピューティングデバイスへのアクセスをユーザに供与する技術を提供する。リモートデスクトップ上で実行中のエージェントは、例えば「タッチ&スワイプ」形式の入力を受け入れるクライアントマシン上で実行中の対応するクライアントと協働する。エージェントとクライアントはユーザインターフェイスメタデータおよびユーザインターフェイス入力イベントを交換し、さらに、交換したこの情報を変換して、ネイティブグラフィカルユーザインターフェイス要素(クライアントマシン側)とシミュレーションされたユーザアクション(サーバデバイス上のリモートデスクトップ側)を提供する。リモートデスクトップ上で実行中のエージェントは、インターフェイス対話APIまたはライブラリを使用して、対応するクライアントに応答し、そのプロキシとして機能するリモートデスクトップのユーザインターフェイスをプログラムによって操作することができる。
【0012】
一例では、リモートGUIを実装したサーバデバイスに接続したクライアントデバイスのタッチスクリーン上で、ローカルグラフィカルユーザインターフェイス(GUI)を生成する方法を提供する。この方法は、リモートGUIのベース画像、及びリモートGUI内のGUI要素を記述したユーザインターフェイス(UI)メタデータをサーバデバイスから受信することを含む。方法はさらに、受信したUIメタデータに従ってタッチスクリーン上に表示すべきネイティブGUI要素をクライアントデバイスにて生成することを含む。このネイティブGUI要素は、リモートGUI内のGUI要素に対応する。方法はさらに、クライアントデバイスのタッチスクリーン上に表示すべきローカルGUIを生成することをさらに含み、ここで、ローカルGUIは、サーバデバイスから受信したベース画像と、ネイティブGUI要素とを含む。
【0013】
本出願の実施形態は、ゲストオペレーティングシステムを実行中のサーバデバイスのグラフィカルユーザインターフェイス(GUI)へのアクセスを供与する方法を提供する。この方法は、サーバデバイスのGUIをプログラムによって操作するように構成されたゲストオペレーティングシステムのアプリケーション・プログラミング・インターフェイスを使用して、サーバデバイスのGUI内のGUI要素を特定するユーザインターフェイス(UI)メタデータを生成することを含む。方法はさらに、GUIのベース画像、及び生成されたUIメタデータを、サーバデバイスに接続したタッチ入力クライアントデバイスに伝送することと、サーバデバイスのGUI内のGUI要素にリンクしたユーザ入力を示す情報をタッチ入力クライアントデバイスから受信することとを含む。方法はさらに、受信した情報に従い、サーバデバイスのGUIをプログラムによって操作するべく、アプリケーション・プログラミング・インターフェイスを呼び出すことを含む。
【0014】
本出願の実施形態は、リモートGUIを実装したサーバデバイスに接続したクライアントデバイス上に、ローカルグラフィカルユーザインターフェイス(GUI)を生成する方法をさらに提供する。この方法は、クライアントデバイスの入力デバイスを介してクライアントデバイスにおいて音声入力を受信することと、この音声入力を処理して、サーバデバイスのリモートGUIを操作するためのコマンド入力を判定することとを含む。方法はさらに、コマンド入力がリモートGUIを操作するように構成されたことを示す情報をサーバデバイスへ伝送することを含む。
【0015】
一例において、リモートGUIを実装したサーバデバイスに接続されているクライアントデバイスのタッチスクリーン上に、ローカルグラフィカルユーザインターフェイス(GUI)を生成する方法を提供し、この方法は、リモートGUIのベース画像、ならびにリモートGUI内のGUI要素を記述したユーザインターフェイス(UI)メタデータを、サーバデバイスから受信することと、リモートGUI内のGUI要素に対応し、受信したUIメタデータに従ってタッチスクリーン上に表示すべきネイティブGUI要素をクライアントデバイスにて生成することと、クライアントデバイスのタッチスクリーン上に表示すべきローカルGUIを生成することとを備え、ここで、ローカルGUIは、サーバデバイスから受信したベース画像、ならびにネイティブGUI要素を含む。
【0016】
一例において、UIメタデータは、リモートGUI内のGUI要素のコンテンツに関連した意味情報を備え、UIメタデータはツリー型構造に編成されている。
一例において、生成されたネイティブGUI要素は、リモートGUI内の対応するGUI要素とは、サイズ、形状、色、形式、対話方式、アニメーション、対話動作のうちの少なくとも1つにおいて異なっている。
【0017】
一例において、ネイティブGUI要素を生成するステップは、クライアントデバイスに対しローカルなユーザインターフェイスフレームワークを使用して、受信したUIメタデータに基づいてシステム組み込み(system−provided)の制御要素を生成することをさらに備えている。
【0018】
一例において、ローカルGUI要素は、サーバデバイスから受信したリモートGUIのベース画像の最上部に配置されたネイティブGUI要素を備えている。
一例において、方法はさらに、ローカルGUIを介してクライアントデバイスにてタッチ入力を受信することと、受信した入力によってネイティブGUI要素が操作されたと判定することに応答して、リモートGUI内の対応するGUI要素がクライアントデバイスにて操作されたことを示す情報をサーバデバイスに伝送することとを備えている。
【0019】
一例において、サーバデバイスに伝送された情報は、リモートGUIの一部であるアプリケーションの状態の変更に関する情報を備えている。
一例において、サーバデバイスに伝送された情報は、サーバデバイスのアクセス可能性を補助するアプリケーション・プログラミング・インターフェイスをトリガするように構成されたイベント情報を備え、当該アクセス可能性を補助するアプリケーション・プログラミング・インターフェイスは、サーバデバイスのリモートGUIをプログラムによって操作するように構成されている。
【0020】
一例において、サーバデバイスに伝送された情報は、リモートGUIのメニューUI要素のメニューナビゲーションを示す情報を備えている。
一例において、ゲストオペレーティングシステムを実行中であるサーバデバイスのグラフィカルユーザインターフェイス(GUI)へのアクセスを提供する方法を供与し、この方法は、サーバデバイスのGUIをプログラムによって操作するように構成されたゲストオペレーティングシステムのアプリケーション・プログラミング・インターフェイスを使用して、サーバデバイスのGUI内のGUI要素を特定するユーザインターフェイス(UI)メタデータを生成することと、GUIのベース画像、ならびに生成されたUIメタデータを、サーバデバイスに接続されたタッチ入力クライアントデバイスへ伝送することと、サーバデバイスのGUI内のGUI要素にリンクしたユーザ入力を示す情報をタッチ入力クライアントデバイスから受信することと、受信した情報に従ってサーバデバイスのGUIをプログラムによって操作するために、アプリケーション・プログラミング・インターフェイスを呼び出すこととを備えている。
【0021】
一例において、アプリケーション・プログラミング・インターフェイスを呼び出すステップは、UIメタデータによって特定されたGUI要素内における特性値の変化を示すイベントを生成することを備えている。
【0022】
一例において、方法はさらに、サーバデバイスのGUI内の第2のGUI要素の状態変化を検知したときに、サーバデバイスのGUIをプログラムによって操作するように構成されたゲストオペレーティングシステムのアプリケーション・プログラミング・インターフェイスを使用して、第2のGUI要素の状態変化を特定する更新UIメタデータを生成することを備えている。
【0023】
一例において、方法はさらに、ゲストオペレーティングシステム上で実行中のアプリケーションのアプリケーション状態の変化を検知したときに、サーバデバイスのGUIをプログラムによって操作するように構成されたゲストオペレーティングシステムのアプリケーション・プログラミング・インターフェイスを使用して、アプリケーション状態の変化を特定する更新UIメタデータを生成することを備えている。
【0024】
一例において、UIメタデータは、GUI要素のコンテンツに関連した意味情報を備え、ツリー型構造に編成されている。
一例において、アプリケーションプログラミングインターフェイスは、ゲストオペレーティングシステムのアクセス可能性を補助するアプリケーションプログラミングインターフェイスを備え、これは、GUIの機能をアプリケーションが生成したイベントに対して公開するように構成されている。
【0025】
一例において、サーバデバイスのGUI上のGUI要素は、アプリケーションウィンドウのメニューバーを備え、サーバデバイスのGUI内のGUI要素にリンクしているユーザ入力を示す受信した情報は、サーバデバイスのGUIのメニューバーのメニューナビゲーションを示す情報を備えている。
【0026】
一例において、リモートGUIを実装しているサーバデバイスに接続されたクライアントデバイス上でローカルグラフィカルユーザインターフェイス(GUI)を生成する方法を提供し、方法は、クライアントデバイスの入力デバイスを介してクライアントデバイスにて音声入力を受信することと、音声入力を処理して、サーバデバイスのリモートGUIを操作するために入力されたコマンドを判定することと、リモートGUIを操作するために、入力されたコマンドを示す情報をサーバデバイスに伝送することとを備えている。
【0027】
一例において、音声入力を処理するステップは、複数の所定のコマンドを、サーバデバイスで実行される対応する入力イベントと関連付ける複数の規則の一致に基づき、コマンド入力を生成するステップをさらに備えている。
【0028】
一例において、方法はさらに、リモートGUIのベース画像、およびリモートGUI内のGUI要素を記述したUIメタデータをサーバデバイスから受信することと、クライアントデバイスのタッチスクリーン上に表示すべきローカルGUIを生成することとを備える。ローカルGUIは、サーバデバイスから受信したベース画像、および受信したUIメタデータに従って生成されたネイティブGUI要素を含み、ネイティブGUI要素は、リモートGUI内のGUI要素に対応する。音声入力を処理することは、リモートGUIのネイティブGUI要素を操作するコマンド入力を決定するために音声入力を処理することを備え、この処理は、受信したUIメタデータからの情報に基づいて実行される。方法はさらに、リモートGUI内で対応するGUI要素がクライアントデバイスにて操作されたことを示す情報をサーバデバイスへ伝送することを備えている。
【0029】
一例において、音声入力を処理するステップは、リモートGUIのGUI要素を特定するUIメタデータからの情報と一致するコマンド入力に基づいて、複数の候補テキストの中からコマンド入力を決定することをさらに備えている。
【図面の簡単な説明】
【0030】
図1】本発明の1つ以上の実施形態を実現できる、仮想デスクトップインフラストラクチャ(VDI)システムのコンポーネントを示す。
図2】本発明の一実施形態による、図1のVDIシステムのより詳細なコンポーネントを示す。
図3】本発明の一実施形態による、複数のUI要素を設けたグラフィカルユーザインターフェイスと、これに対応するメタデータとを示す。
図4】本発明の一実施形態による、リモートデスクトップにて立ち上げられ、VDIクライアントにおいて表示されるアプリケーションのためのグラフィカルユーザインターフェイスを生成および更新するためのフロー図を示す。
図5】本発明の一実施形態による、リモートデスクトップを制御するための代替入力デバイスを実装したクライアントデバイスを設けた、図1のVDIシステムの代替実施形態を示す。
【発明を実施するための形態】
【0031】
本発明の実施形態は、1つのユーザインターフェイススキーム(例えばタッチスクリーン)を設けたクライアントシステム上でユーザ対話を行うことで、別のユーザインターフェイススキーム(例えば、「ポイント&クリック」デスクトップ)を設けたサーバシステムを遠隔操作する技術およびシステムを提供する。一実施形態では、仮想デスクトップインフラストラクチャ(VDI)は、サーバ側デスクトップのグラフィカルユーザインターフェイス(GUI)要素をプログラムによって操作して起動させるように構成されたアプリケーション・プログラミング・インターフェイス(API)を使用して、タッチスクリーン型のクライアントシステム(例えばタブレットコンピュータ、スマートフォン)とサーバ側デスクトップ間のユーザインターフェイススキームの違いをブリッジングする。
【0032】
例えば、アプリケーションフレームワークとアプリケーション・プログラミング・インターフェイス(API)(Microsoft Active Accessibility APIやMicrosoft UI Automation APIなど)は、サーバ側デスクトップで、メニューナビゲーションのようなUI要素のコンテンツを引き出し、ネットワーク接続上で(例えば、デスクトップ・リモーティング・プロトコルを介して)これをリモートクライアントシステム(タブレットコンピュータなど)へ送ることができる。メニューコンテンツはネイティブGUI要素としてレンダリングされ、リモートクライアントに直接関わる。リモートクライアントのユーザはタブレット上で、ローカル側でのこういったメニューのタッチフレンドリーな表示を用いてメニューオプションを選択し、アプリケーションおよびドキュメントを起動し、その他の共通の「ポイント&クリック」アクティビティを実行することができる。
【0033】
別の例では、サーバ側デスクトップにてファイルおよびファイルシステムを管理するように構成されたAPI(File Explorer APIなど)を使用すれば、クライアントデバイス上でドキュメントの直接起動やその他のファイル機能を実行するめに、ドキュメントフォルダのエクスポートが促進される。さらに別の例では、サーバ側デスクトップでプロセスおよびスレッドを管理するように構成されたAPI(Application Process APIなど)によって、クライアントデバイス上のアイコンを使いアプリケーションを遠隔起動および終了させることができる。メニュー操作、ドキュメント操作、アプリケーション起動のような主要なユーザインターフェイスアクティビティを、サーバで実行中のリモートデスクトップからクライアントへ移動させることで、本発明の実施形態は、タッチスクリーンデバイス上で使用されている従来のポイント&クリック・アプリケーションのユーザエクスペリエンスを劇的に改善し、従来のリモートディスプレイプロトコルによって生じるユーザエクスペリエンスを増大させる。
【0034】
以降の説明では、本発明の例示的実施形態を十分に理解できるよう、多数の特定の詳細点について述べる。しかし、当業者には、これらの特定の詳細点のいくつかを用いなくても本発明を実践できることが明らかになるであろう。その他の場合においては、本発明の新規態様を不必要に不明瞭化してしまうことを避けるために、十分に周知のプロセスオペレーションおよび実施詳細については詳細な説明を省いている。
【0035】
図1は、本発明の1つ以上の実施形態を実施できるVDIシステム100のコンポーネントを示す。VDIシステム100では、VDIクライアントソフトウェアプログラム(略して「VDIクライアント」とも呼ばれる)、例えばVDIクライアント110が、ローカルコンピューティングデバイスのオペレーティングシステム上、例えばオペレーティングシステム(OS)111の最上部にあるクライアントマシン108上で実行する。VDIクライアントは、ユーザの居場所から離れた場所にある、仮想マシン157の1つで、あるいはデータセンターのブレードサーバ(図示せず)で実行中のデスクトップにアクセスするためのインターフェイスをユーザに提供する。用語「デスクトップ」とは、コンピュータオペレーティングシステムとソフトウェアアプリケーションが提供する対話型動作環境の実例(典型的にはディスプレイ、音声出力部、キーボード、マウス入力部の形態)を意味することができる。VDIクライアントでは、ユーザは、既成のオペレーティングシステム、ならびにVDIクライアントソフトウェアプログラム(VMware(登録)View(商標)など)を実行している汎用コンピュータを使用し、あるいは専用のシンクライアント(Dell、HP、NEC、Sun Microsystems、Wyse、その他の製品)を使用して、あらゆる場所からリモートデータセンターで実行中のデスクトップにネットワーク120経由でアクセスすることができる。
【0036】
VDIシステム100は、ユーザログイン情報を含むユーザアカウント136を管理するドメインコントローラ135(例えばMicrosoft(登録)、Active Directory(登録))と、VDIクライアントと仮想マシン157または他のプラットホームで実行中のデスクトップとの間の接続を管理する接続ブローカ137とを含むことができる。ドメインコントローラ135と接続ブローカ137は別個のサーバ上で、または、同一あるいは別々のサーバ上で実行中の別個の仮想マシン内で実行することができる。ここで例証する本発明の実施形態では、デスクトップは、各々が仮想ソフトウェア158とハードウェア159を実装した複数の物理コンピュータ150、152、154上にインスタンス生成によって作成された仮想マシン157内で実行される。物理コンピュータ150、152、154は、仮想マシン管理サーバ140によって制御され、また共有永続ストレージシステム160につながれていてよい。
【0037】
VDIシステム100の全コンポーネントはネットワーク120を介して通信する。簡略化の目的で、単一のネットワークを示しているが、実際に実施する場合には、VDIシステム100のコンポーネントどうしは、同一のネットワークまたは異なる複数のネットワーク上で接続してもよいことが認識されるべきである。さらに、仮想デスクトップインフラストラクチャの特定の構成については上で述べ、図1に図示したが、本発明の1つ以上の実施形態は、他の構成の仮想デスクトップインフラストラクチャで実践することもできることが認識されるべきである。
【0038】
図2は、ユーザが、VM157上で実行中のデスクトップ250にネットワーク120経由でアクセスできるようにするためのVDIクライアント110を実装したVDIシステム100のコンポーネントをより詳細に示す。VDIクライアント110はクライアントマシン108上で実行し、また、VDIデータ212の交換や、リモートデスクトップ250へのユーザアクセスの供与を行うために、VM157内で実行中のVDIホストエージェント200と通信する。本明細書で述べる実施形態では、クライアントマシン108は、統合型のディスプレイ出力部とタッチスクリーン入力部を設けたあらゆるコンピューティング装置であってよい。しかし、本発明はこれらの特定の装置に限定されるものと理解されるべきではない。例えば、点字読取装置のような出力デバイスと、ボイスアクティベーションのような入力デバイス(以降でさらに説明する)とを、上記の代替として利用してもよい。典型的に、クライアントマシン108は、VM157上で実行中であるデスクトップの「ポイント&クリック」ユーザインターフェイスとは異なる「タッチ&ジェスチャ」形式のユーザインターフェイスを設けている。
【0039】
図2の付記に示すように、デスクトップ250は、アプリケーション210のUI要素254の操作またはこれとの対話をポインタ(例えばマウスカーソル252)からの入力に頼った、従来の「ポイント&クリック」形式のユーザインターフェイスを備えたアプリケーション210を設けていてよい。クライアントマシン108とデスクトップ250との間で形式の異なるユーザインターフェイスを使用すると、ユーザエクスペリエンスが低下し、ルーチンのユーザタスクが苛立たしいエクササイズになってしまう可能性がある。この問題は特に図2より明白である。ここでは、リモートデスクトップ250のグラフィカルユーザインターフェイスは、より小型で精密なポインタ(例えばマウスカーソル252)で操作され対話することを見込んであるために、タッチ入力では指すことが難しいほどの(サークル268に示すような)小型サイズにされたウィジェットおよび要素を設けていてよい。
【0040】
一実施形態によれば、VM157上で実行するユーザデスクトップの「ポイント&クリック」形式のユーザインターフェイスと、クライアントマシン108の「タッチ&ジェスチャ」ユーザインターフェイスの間の変換を行うために、VDIクライアント110は、VM157上で実行中の対応するUIVエージェント204と通信するように構成されたユーザインターフェイス仮想化(UIV)クライアント202を設けている。一実施形態では、UIVクライアント202およびUIVエージェント204は、UI入力イベント230形式およびUIメタデータ220形式のメッセージを交換し、このメッセージは、適当なエンドポイントで、リモートデスクトップへの入力要素およびネイティブGUI要素にそれぞれ変換される。
【0041】
一実施形態では、VM157上で実行するUIVエージェント204は、VM157のデスクトップ上に見られるユーザインターフェイス(UI)のウィジェットおよび要素に関連したメタデータを取得するために、インターフェイス対話API208を呼び出すように構成されている。一実施形態では、インターフェイス対話API208は、VM157のデスクトップ上に見られるユーザインターフェイス(UI)のウィジェットおよび要素に関連したメタデータを取得するために、ゲストOS206によって公開されるAPIであってよい。例えば、インターフェイス対話API208は、補助的なテクノロジー(例えばスクリーンリーダ)で従来使用されている、視力、聴力、動作に障害のある人物が、ゲストOS上で実行するアプリケーションまたはゲストOS自体にアクセスし易くするためのAPI(例えば、Microsoft Accessibility API)、あるいは、API自動ソフトウェアテスティング(Microsoft UI Automation API)であってよい。さらにインターフェイス対話API208は、ゲストOS206のUI要素ならびにゲストOS206上で実行するアプリケーション210を識別し、操作し、これと対話するために、(例えば、UIVエージェント204について)プログラムによるアクセスを可能にすることにより、UI要素の機能性を公開する構成になっている。
【0042】
代替の実施形態では、インターフェイス対話API208は、時間と共にアプリケーションモデルを構築してゆくように構成されたソフトウェアフレームワークであってよく、この構築には、あらゆるアプリケーション機能を アプリケーションのインターフェイスの他のあらゆる地点から起動する効率的な方法を決定するために、GPS形式の「再計算」を実行することが含まれる。このような「再計算」機能は、何かが上手くいかず、代理動作がデスクトップ側UIVエージェント204へ送られる時点でVDIクライアント110が予測した状態とはアプリケーションの状態が違ってしまった場合にも、ユーザ入力の注入を確実に行う上で役立つ。一実施形態では、インターフェイス対話API208は、UI要素を妨害し、アプリケーションおよびアプリケーションオブジェクトの状態を判断し、シミュレートされたユーザ動作をUI要素上で実行するように構成されている。
【0043】
VDIホストエージェント200は、従来のリモートデスクトップ技術に従って、ディスプレイおよび入力データを備えたVDIクライアント110に対してVDIデータ212を伝送するように構成されている。VDIデータ212は、クライアントマシン108にリモートデスクトップ250のGUIを表示するために使用されるベースGUI画像264を含んでいてよい。いくつかの実施形態では、ベースGUI画像264は、デスクトップ250でのディスプレイの一部または全体を示すグラフィカルビットマップあるいはフレームバッファであってよく、これはリモートデスクトップのスクリーンショットと類似している。別の実施形態では、ベースGUI画像264は、クライアントマシン108においてデスクトップ250のGUIを表す画像をレンダリングするための図面線、多角形、その他の形状、フォント、および基本図形のグラフィカル情報であってよい。
【0044】
VDIクライアント110とVDIホストエージェント200との間でVDIデータ212が伝送されることに加えて、VM157上で実行するUIVエージェント204は、クライアントデバイス108上のUIVクライアント202へUIメタデータ220を伝送するように構成されている。UIメタデータ220は、インターフェイス対話API208によって提供された、VM157上のユーザデスクトップの1つ以上のUI要素を記述する情報を含んでいる。UIメタデータ220で特定できるUI要素の例には、ウィンドウ、ボタン、メニュー、ダイアログまたはメッセージボックス、リスト、メニューバー、スクロールバー、タイトルバー、ステータスバー、サイズグリップ、ツールバー、ツリービューコントロール、リストビューコントロール、ドロップダウンリスト、入力キャレットがある。VDIクライアントでのレンダリングに基本図形または描画オペレーションを使用するこれまでのアプローチと異なり、UIメタデータ220は、ユーザデスクトップの1つ以上のUI要素のコンテンツおよびアプリケーション状態に関する意味情報を含む。例えば、UIメタデータ220は、ただ単に長方形メニューを描画するための基本図形を提供するのではなく、例えばメニュー内の選択可能なオプションといった、メニューのコンテンツを表す意味情報を提供する。VDIクライアント110は、UIメタデータ220に基づいて、これに対応する、VM157上で実行するユーザデスクトップ上のUI要素とは異なった表示、動作、対話を行うGUI要素を単独でレンダリングできる。このようにして、VDIクライアント110はUIメタデータ220により、クライアントマシン108(例えばタッチスクリーン)のインターフェイス形式およびフォームファクタに最も適したネイティブGUI要素の生成、レンダリング、表示を行えるようになる。一実施形態では、図3で詳細に示すように、UIメタデータ220内の情報を、ユーザデスクトップのUI要素に対応したルート要素および子要素を持つ階層的またはツリー型のデータ構造に編成することができる。
【0045】
図3は、対応するUIメタデータ220を設けたアプリケーション210のための、本発明の一実施形態によるグラフィカルユーザインターフェイス300を示す。グラフィカルユーザインターフェイス300はUI要素とサブ要素から成っていてよい。図に示すように、アプリケーション210のグラフィカルユーザインターフェイス300は、複数のメニューオプション(例えば「ファイル」、「編集」、「ビュー」、「ヘルプ」など)を有するメニューバー306を持ったウィンドウ304を含む。各メニューオプションは、さらなるオプション(例えば「新規」、「開く」、「保存」、「終了」など)およびポップアウトメニューまたはダイアログボックスを含むサブメニュー308を起動させることができる。
【0046】
一実施形態では、インターフェイス対話API208により、アプリケーション210が、グラフィカルユーザインターフェイス300の構造を表すUIメタデータ220のツリー構造を公開することが可能になる。ツリー内の要素は、デスクトップ250上のGUIのプログラムによる操作を促進する特性および方法を公開する。一実施形態では、UIメタデータ220は、特定された各UI要素について以下を含んでよい:事前に決定されたUI要素のためのラベル(例えば、アプリケーション210の開発者およびゲストOS206によりコード割り当てされる)、UI要素のタイプを記述したロール情報(例えば、ROLE_SYSTEM_PUSHBUTTON)、所与の瞬間におけるUI要素の状態を説明する特性(例えば、不可視、利用不可、フォーカス中、フォーカス可能、押された、など)、および、UI要素が表す情報を表示する、UI要素に含まれるその他の値(例えば、比率、整数、非整数、テキスト、ビジュアル)。例えば、UIメタデータ200は、識別子(例えばid=“982”)、リモートデスクトップ内でウィンドウ304が「フォーカス」状態にあることを示す状態特性を含む、ウィンドウ304のための情報と、ウィンドウ304内に含まれるUI要素のための情報(例えば、タイトルバーおよびメニューバー306)とを含んでいてよい。別の例では、メニュー308のメタデータは、メニュー308内の複数のメニューアイテムのための情報、例えば「新規」、「開く」、「保存」などのためのアイテムを含む。いくつかの実施形態では、UIメタデータ220は、デスクトップ250上のUI要素に関連したサムネイルまたはアイコンのようなグラフィックデータを含むことができる。
【0047】
再び図2を参照すると、UIVクライアント202は、UIVエージェント204から受信したUIメタデータ220に基づいたリモートデスクトップ上の、対応するUI要素またはウィジェットと同じ機能および情報を持った「ネイティブ」UI要素またはウィジェットを構築および表示するように構成されている。一実施形態では、UIVクライアント202は、インターフェイス対話API208からのUIメタデータ220に基づいた「ポイント&クリック」形式のUI要素254に対応する、ネイティブで「タッチ&ジェスチャ」形式のGUI要素262を生成できる。いくつかの実施形態では、UIVクライアント202が生成したネイティブGUI要素262は、対応するデスクトップのUI要素と、サイズ、形状、色、形式、対話方式、アニメーション、対話動作などにおいて異なっていてよい。例えば、UIVクライアント202は、リモートデスクトップ250上の従来のドロップダウンリストから引き出したUIメタデータ220を使用することで、スワイプジェスチャに反応して回転する大型車輪のように現れるネイティブGUI要素を生成できる。別の例では、UIVクライアント202は、クライアントマシン108のフォームファクタとタッチスクリーンエルゴノミクス用にを最適化した、再フォーマットバージョンのナビゲーションメニューを呈示することができる。図に示すように、ネイティブGUI要素262を、VDIデータ212に示されたGUI画像264の上部にオーバレイ表示して、クライアントGUI260を形成できる。一実施形態では、UIVクライアント202は、クライアントマシン108に対してローカルであるネイティブグラフィカルフレームワークまたはユーザインターフェイスフレームワークを使用し、受信したUIメタデータ220に基づいて、1つ以上のネイティブGUI要素をレンダリングするように構成されている。
【0048】
さらにUIVクライアント202は、構築したネイティブGUI要素262上のユーザ入力を取り込み、UI入力イベント230を、VM157内で実行中のUIVエージェント204へ伝送するように構成されている。一実施形態では、UIVクライアント202は、ネイティブGUI要素262との対話を表す、タッチ入力268に基づいて、UI入力イベント230を生成する構成になっている。一実施形態では、UI入力イベント230は、これに対応するVM157上のリモートデスクトップ250におけるGUI要素がクライアントマシン108にて操作されたことを示す情報を含む。いくつかの実施形態では、UI入力イベント230は、対応するリモートデスクトップ250でのUI要素またはオプションの選択、起動、状態変更、またはこれとの対話を示すことができる。別の実施形態では、UI入力イベント230は、リモートデスクトップ250でのUI要素に対応するオペレーションまたはオプションの実行あるいは呼び出しを示すことができる。UIVエージェント204は、VM157上のリモートデスクトップのユーザインターフェイスの入力をシミュレートし、プログラムでの操作を促進するために、UIVクライアント202から受信したUI入力イベント230に従い、インターフェイス対話API208を使用して、対応するアプリケーション210またはゲストOS206のUI要素に問合せ、これを呼び出すように構成される。
【0049】
図4は、リモートデスクトップにて立ち上げてVDIクライアントで表示するアプリケーションのGUIを生成し、更新する工程のフロー図を示す。ステップ410〜415は、リモートデスクトップをホストする仮想マシンで実行中のVDIホストエージェント200によって実施される。ステップ420〜427はVIDクライアント110によって実施される。図4は、本開示の実施形態によるメニューナビゲーションを提供するための例示的なステップを説明しているが、ここで述べる技術を、ダイアログ、クリップボード機能、アプリケーションおよびドキュメントの立ち上げ、デスクトップ、アプリケーション特化のエクスペリエンスを含むその他のUIエクスペリエンスにまで拡張できる点が理解されるべきである。
【0050】
ステップ420で、VDIクライアント110は、ユーザが操作するクライアントマシン108によって実行されたUIVトリガを検知する。一実施形態では、UIVトリガは、ユーザあるいはユーザが起動したUIボタンによって実行された所定のジェスチャ(例えば、一意のスワイプジェスチャ)であり、VDIクライアント110が、ネイティブGUI要素を使用して、リモートデスクトップ上で実行中のアクティブなアプリケーション(例えばアプリケーション210)の1つ以上のUI要素をレンダリングする必要がある旨を示している。ステップ421で、VDIクライアント110がUIVトリガの検知に応答して、VDIホストエージェント200からのUIメタデータを要求し、ステップ410で、VDIホストエージェント200がこの要求を受信する。
【0051】
ステップ411で、VDIホストエージェント200はUIメタデータ要求の受信に応答して、アプリケーション210にUIメタデータ(例えばUIメタデータ220)を取得するために、ゲストOS206のインターフェイス対話API208にAPIコールを行う。例えば、VDIホストエージェント200は、フォーカス中のアプリケーションのメニュー一覧、サブメニュー、メニューアイテムを持った階層メニュー構造を取得できる。一実施形態では、UIVエージェント204は、リモートデスクトップ上の各UI要素についてメタデータを戻すのではなく、ユーザデスクトップのUI要素のサブセットを識別し、UI要素のサブセットのみにUIメタデータ220を生成することができる。例えば、UIVエージェント204は、現在フォーカスされているアプリケーションについてのみUIメタデータを生成することができる。別の実施形態では、UIVエージェント204は、受信したUIメタデータ要求に基づき、リモートデスクトップ上の1つ以上のUI要素にUIメタデータを生成できる。例えば、UIVエージェント204は、メニューメタデータのみの要求を示したVDIクライアント110からの要求に基づいて、階層メニューバーにUIメタデータを生成できる。いくつかの実施形態において、VDIホストエージェント200は、アクティブなアプリケーションまたは基礎のゲストOS106における変化を検知すると、これに応答してゲストOS106からのUIメタデータをプロアクティブに要求できる(例えば、Windows Event callback機能経由で受信したイベントを介して行う)。
【0052】
ステップ412で、VDIホストエージェント200は、(例えば、VDIクライアント110とVDIホストエージェント200の間に確立されたVDIプロトコルに従って)GUIのベース画像を生成し、続いてステップ413で、このGUIのベース画像を、階層メニュー構造のコンテンツと共にVDIクライアント110へ伝送する。上で述べたように、ベース画像(例えばベースGUI画像264)は、リモートデスクトップの画像をクライアントマシンで表示するためのグラフィック情報を提供する。一例では、ベース画像は、クライアントマシンに表示するデスクトップ250全体の未処理の画素データ(スクリーンショットと類似)であってよい。別の例では、ベース画像は、先に伝送された未処理の画素データの少なくとも一部を変更するための、更新された画素データのセットであってよい。いくつかの実施形態において、ベース画像は、リモートデスクトップのディスプレイをクライアントマシンのクライアントGUI内に描画するための、描画オペレーションおよび基本図形であってよい。
【0053】
一実施形態では、UIVクライアント202およびUIVエージェント204は、メッセージングバスまたはメッセージパッシングサービスを使用して、ネットワーク120上でUI入力イベント230およびUIメタデータ220の送受信を行うことができる。別の実施形態では、VDIホストエージェント200は、リモートディスプレイチャネル(例えばPCoIP、HTML5)経由でVDIクライアント110へ送られたVDIデータ212にUIメタデータ220を組み込むことができる。同様に、VDIクライアント110は、VDIホストエージェント200へ伝送されたVDIデータ212にUI入力イベント230を組み込むことができる。
【0054】
ステップ422で、VDIクライアント110が、GUIのベース画像を階層メニュー構造のコンテンツと共に受信する。ステップ423で、VDIクライアント110が、受信したベース画像および階層メニュー構造のコンテンツに基づいてGUIをレンダリングし、次にステップ424でGUIを表示する。表示されたGUIには、VDIホストエージェント200から受信したベース画像と、VDIクライアント110がメニュー構造コンテンツに基づいて生成したネイティブGUI要素(つまり、VDIクライアント110を実行しているクライアントマシン108に対してネイティブである)とが含まれる。いくつかの実施形態では、ネイティブGUI要素は表示されたGUI内に、VDIホストエージェント200から受信したベース画像の上部にオーバレイ表示するUI要素として含まれる。いくつかの実施形態では、ネイティブGUI要素は表示されたGUI内に、VDIホストエージェント200から受信したベース画像内に組み込まれた半透明層として含まれる。一実施形態では、VDIクライアント110は、「タッチフレンドリー」構成のネイティブGUI要素を生成する。例えば、VDIクライアント110は、ポインタまたはマウスカーソルによって起動する構成のGUI要素と比べて、タッチオブジェクト(例えば人間の指、スタイラス)による起動をより簡単に促進するサイズおよび形状を持ったネイティブGUI要素を生成する。別の例では、VDIクライアント110は、タッチベースの入力およびジェスチャ(タップ、スワイプ、マルチポイントジェスチャなど)に反応するネイティブGUI要素を生成する。このようにして、VDIクライアント110によって、タッチフレンドリー方式にてレンダリング表示されながら、リモートデスクトップからのUI要素に対応するネイティブGUI要素との対話がユーザにとって可能になるため、ユーザは向上したユーザインターフェイスを体験できる。さらに、本発明の実施形態は、クライアントマシン108に対してローカルなネイティブグラフィックフレームワークまたはユーザインターフェイスフレームワークを使用できることで、作業をクライアントマシン108のグラフィック機能に任せ、依存することが可能になる。
【0055】
ステップ425で、ユーザがGUIを介してネイティブGUI要素に行った入力(例えば、タッチスクリーン入力)が、VDIクライアント110によって検知される。入力を検知したVDIクライアント110は、ステップ426でこの入力を処理する。階層メニュー構造の例において、この入力は、下層のメニューアイテムを表示させるタイプのもの、あるいは最終選択であってよい。前者の場合、流れはステップ423へ戻り、GUIが表示用に再び生成される。入力がメニューの最後の選択肢である場合には、ステップ426で、特定のメニュー項目が選択されたことを示す情報(例えばUI入力イベント230)がVDIホストエージェントへ伝送される。
【0056】
ステップ414で、VDIホストエージェントが、特定のメニュー項目が選択されたことを示すこの情報を受信する。ステップ415で、VDIホストエージェントがゲストOSにAPIコール(例えば、インターフェイス対話API208)を行い、特定のメニュー項目が選択されたことを通信する。その後、流れはステップ411へ戻り、GUIのベース画像が再生成される。
【0057】
いくつかの実施形態では、VDIホストエージェントは、ゲストOS206のオブジェクトモデルの中からオブジェクトを1つ特定する識別子を使用し、プログラムによってゲストOSのユーザインターフェイスを操作する。キーボードおよびマウスイベントのシミュレーションを行うために単純にサーバのキーボードおよびマウスドライバを呼び出す従来のアプローチと異なり、UIVエージェント204は、インターフェイス対話API208を使用し、VDIクライアントから受信したUI入力イベントに従って、デスクトップ250のUI要素を直接操作する。いくつかの実施形態において、UIVクライアント202が、既に構成されインターフェイス対話API208によって使用される状態となったUI入力イベントを伝送するケースでは、UIVエージェント204は、受信したUI入力イベントを直接インターフェイス対話API208に送る。別の実施形態では、1つ以上のUI要素のアプリケーション状態または特性値が変更されたことを示すために、UIVエージェント204が、受信したUI入力イベントをインターフェイス対話API208用のイベントまたはパラメータに変換する。一例として、UIVエージェント204は、インターフェイス対話API208を使用して、要素起動、要素選択、空間ナビゲーション、論理ナビゲーション、警告、フォーカス変更、およびその他の特性値の変更を、所与のUI要素に対して示すことができる。
【0058】
一実施形態によれば、VDIクライアント110は、ドロップダウンリスト、ナビゲーティングメニュー、サブメニュー内のアイテムのスクローリングのように、複数のユーザ対話を要するUI要素の待機時間と即応性を改善する。1つの使用例において、デスクトップ上のメニューナビゲーションでは、「編集」メニューボタン上をポイント&クリックしてドロップダウンメニューを表示させ、さらに、1つのメニューアイテム上をポイント&クリックしてさらなるメニューを表示させることができる(例えば「ペーストスペシャル」など)。この使用例を、従来のアプローチの下でリモートデスクトップに対して実行するには、VDIクライアントは、ウィンドウおよびメニューバーのGUI画像をリモートネットワーク上で受信し、このウィンドウメニューバーをレンダリング表示させ(これには複数フレームのGUIアニメーションを含むことがある)、クリック入力を伝送し、リモートネットワーク上でウィンドウ、メニューバー、及び現在の編集メニュー(now Edit menu)のGUI画像を受信し、これらウィンドウ、メニューバー、及び現在の編集メニューのGUI画像をレンダリング表示させ、(恐らくはメニューアイテムの1つについて)クリック入力を伝送する、などを行う必要があるかもしれない。これとは対照的に、本発明の実施形態によってVDIクライアント110は、ネットワーク要求を繰り返して待機時間を増大させることで「ラグの多い」ユーザエクスペリエンスを作り出すことなく、UIメタデータを使用してネイティブGUI要素を構築および修正できるようになる。実際に、本発明の実施形態は、ユーザがメニューオプションを選択する以前であってもアプリケーション内のメニューナビゲーションメタデータにアクセスする手段を提供する。ドラッグ&ドロップ、ボックスリサイズ、キーアニメーションのようなグラフィカルフィードバックを使用するインターフェイス関連のオペレーションは、例えばリモートセッションオーバレイとしてクライアントデバイス上でローカルに実行され、次いでリモートセッション内で実行される。
【0059】
本発明の実施形態は、クライアントデバイス上のタッチスクリーン用に構成された、タッチベースで、ジェスチャ駆動型インターフェイスのネイティブGUI要素を生成するリモートデスクトップシステムについて説明しているが、ここで述べているクライアントデバイスの様々な実施形態は、ここで述べている技術に従ってリモートデスクトップを制御するように構成された、例えばマイクロホン、加速度計、ジャイロスコープセンサ、近距離無線通信センサなどの代替的な非タッチベースの入力デバイスを含むことができる。図5には、図1の、リモートデスクトップを制御する代替的な入力デバイスを実装したクライアントデバイスを設けたVDIシステム100の1つの例示的な代替実施形態を示す。
【0060】
図5は、入力デバイス506を有し、VM157上で実行中のデスクトップ250にユーザをネットワーク120経由でアクセスさせるクライアントデバイス502を実装したVDIシステム500のコンポーネントを示す。ここで説明する実施形態では、クライアントデバイス502は、ユーザインターフェイスの形式を提供するディスプレイ出力部および入力デバイス506を装備した、あらゆるコンピューティングデバイスであってよく、ユーザインターフェイスの形式は、デスクトップ250内のポインタ入力(例えばマウスカーソル252)が供する「ポイント&クリック」ユーザインターフェイスとは違っていてよい。入力デバイス506の例には、マイクロホン、加速度計、ジャイロスコープセンサ、近距離無線通信センサ、光センサ、近接センサなどを含む。
【0061】
一実施形態によれば、クライアントデバイス502上で実行するVDIクライアント510は、リモートデスクトップ上の従来の「ポイント&クリック」駆動型インターフェイスを、入力デバイス506での操作が可能なインターフェイスに変形させるように構成されている。例えば、VDIクライアント510は、VDIデータ212からのベースGUI画像264と音声操作可能な(タッチベースのジェスチャではない)1つ以上のネイティブGUI要素514とを組み込むクライアントGUI512を生成するように構成されている。一実施形態では、VDIクライアント510は、ユーザより受信した音声入力からグラフィカルフィードバックを提供するネイティブGUI要素514(図5中のマイクロホンアイコンにて示す)を生成するように構成される。
【0062】
一実施形態では、VDIクライアント510は、ユーザが発声した音声コマンドを表すオーディオ入力信号516を、クライアントデバイス502の入力デバイス506(例えばマイクロホン)から受信するように構成されている。UIVクライアント504は、スピーチ・トゥ・テキスト・エンジンを用いてオーディオ入力信号516を復号し、この復号したオーディオ信号に基づいて、UI入力イベント230をUIVエージェント204へ伝送する。例えば、UIVクライアント504は、デスクトップ250上のアプリケーション(例えばアプリケーション210)を立ち上げるためにユーザが発生した「エクセルを開く」という音声コマンドを処理する。また、UIVクライアント504は、コマンドテキスト(例えば「エクセルを開く」)を生成し、この生成したコマンドテキストに基づいてUI入力イベント230を決定するために、オーディオ入力信号516を処理する。いくつかの実施形態では、スピーチ・トゥ・テキスト・エンジンは、所与の入力されたオーディオ信号とのベストマッチを表すテキスト値を生成できる。いくつかの実施形態では、スピーチ・トゥ・テキスト・エンジンは、内蔵タイプまたは外付けタイプでサードパーティ製の、オーディオ信号を処理する音声認識コンポーネントを利用できる。
【0063】
一実施形態では、UIVクライアント504は、所定のコマンドと一致するコマンドテキストを1つ以上のUI入力イベント230と関連付けするルールベースのエンジンを使用して、オーディオ入力信号516から生成したコマンドテキストを処理するように構成されている。所定のコマンドの例には、「(アプリケーション)を開く」、「ドキュメントを表示」、「(ファイル)を検索」を含む。VM157におけるUIVエージェントは、UIVクライアント504から受信したUI入力イベント230に基づいてVM157で1つ以上のコマンドを直接実行するように構成されている。上述したように、UIVエージェントは、ゲストOSの1つ以上のAPIを使用して、1つ以上のコマンドを実行できる。
【0064】
一実施形態では、UIVクライアント504は、UIメタデータ220が提供したコンテキストアウェアネスを使用して、入力デバイス506からの入力を処理する。例えば、UIVクライアント504は、デスクトップ250上で実行中のアプリケーション(例えばアプリケーション210)のメニューを誘導する、ユーザからの「ファイル、新規」という音声コマンドを処理することができる。UIVクライアント504は、コマンドテキスト(例えば「ファイル、新規」)を生成して、この生成したコマンドテキストに基づいてUI入力イベント230を決定するために、オーディオ入力信号516を処理する。一実施形態では、UIVクライアント504は、デスクトップ250の現行のコンテキストのルールおよびアプリケーション状態を含むルールベースのエンジンを使用して、UI入力イベント230を生成するために、コマンドテキストを処理することができる。いくつかの実施形態では、UIVクライアント504は、クライアントGUI512上の中間GUI要素518(ネイティブGUI要素262と類似)に基づいて、UI入力イベント230を決定することができる。例えば、UIVクライアント504は、コマンドテキスト「ファイル新規」が、クライアントGUI512で現在レンダリング中の中間GUI要素518(「ファイル」メニュー、および「新規」メニューアイテムとして示す)に対応していると決定する。
【0065】
一実施形態では、UIVクライアント504は、入力デバイス506からのオーディオ入力信号516の処理を、UIVエージェント204から受信したUIメタデータ220に基づいて修正するように構成されている。UIVクライアント504は、そのスピーチ・トゥ・テキスト・エンジンにUIメタデータ220からの情報を供給することで、スピーチ・トゥ・テキスト・エンジンから戻された値をデスクトップ250上の特定のコンポーネントへとバイアスさせることができる。例えば、UIVクライアント504は、どのアプリケーションがアクティブであるか、また、どのUI要素がスピーチ・トゥ・テキスト変換からの候補テキストとの一致の比率を増加あるいは減少させることにフォーカスしているかを示す、UIメタデータ220から取得した情報を使用できる。提示された例において、UIVクライアント504は、「開く」という言葉が入った音声コマンドは、所定のグローバルコマンド「開く」よりも、GUI要素518におけるメニューアイテム「開く」を参照する場合の方が多いということを、UIメタデータ220を使用して示すことができる。
【0066】
別の代替実施形態では、UIVクライアント504は、センサ入力(例えば加速度計からのもの)によって操作可能な、1つ以上のネイティブGUI要素514を生成するように構成されている。例えば、UIVクライアント504は、加速度計からの入力に応答する、スクロール可能なUI要素を生成できる。UIVクライアント504は、加速度計から動作入力またはその他の位置入力を受信し、これに対応するUI入力イベント230をUIVエージェント204へ伝送するように構成されている。一例では、伝送されたUI入力イベント230は、デスクトップ250上の対応するGUIを特定の方向へスクロールさせ、音声を発生させる(例えば、「スクロールアップ、高速」)ことができる。いくつかの実施形態では、UIVクライアント504を、所定の入力マッピングに従い、入力デバイス506からのセンサ入力を1つ以上のUI入力イベント230と関連付けするように構成できる。例えば、UIVクライアント504は、ユーザがその横長の向きを縦長にするようにクライアントデバイス502を操作したことを示す回転入力を入力デバイス506から受信できる。UIVクライアント504は、所定の入力マッピングに基づいて、この回転入力を、UIVエージェント204が行う「ウィンドウを最大化」というインターフェイスコマンドに対応したUI入力イベントに変換することができる。
【0067】
ここで述べた様々な実施形態は、コンピュータシステムに記憶されたデータが関与する、コンピュータで実施される様々な動作を採用することができる。例えば、これらの動作は物理的な量の物理的な操作を要することが通常であり、必ずということではないが、こうした量は電気信号もしくは磁気信号の形式を取り、この場合、これらの信号またはこれを表すものは、記憶、伝達、組み合わせ、比較、あるいは操作されることが可能である。さらに、こうした操作は、生成する、識別する、決定する、比較するといった用語で言及されることが多い。ここで説明される本発明の1つ以上の実施形態の一部を形成するあらゆる動作は、有用なマシン動作であってよい。さらに、本発明の1つ以上の実施形態は、これらの動作を実行するデバイスまたは装置にも関連する。こうした装置は、特定の必要な目的に合わせて特別に構築されたものであるか、あるいはコンピュータに記憶したコンピュータプログラムによって選択的に起動または構成される汎用コンピュータであってよい。特に、様々な汎用マシンを本明細書の教示に従って書かれたコンピュータプログラムと共に使用できる。あるいは、必要な動作を実行させるより特化された装置を構築することがより便利であるかもしれない。
【0068】
ここで説明した様々な実施形態は、この他にも、ハンドヘルド型デバイス、マイクロプロセッサシステム、マイクロプロセッサベースのまたはプログラム可能な個人用電化製品、ミニコンピュータ、メインフレームコンピュータといったコンピュータシステム構成と共に実施することが可能である。
【0069】
本発明の1つ以上の実施形態は、1つ以上のコンピュータ可読媒体に組み込まれた、1つ以上のコンピュータプログラムまたは1つ以上のコンピュータプログラムモジュールとして実施することができる。用語「コンピュータ可読媒体」は、後にコンピュータシステムに入力されるデータを記憶できるあらゆるデータ記憶デバイスを意味し、コンピュータ可読媒体は、コンピュータプログラムをコンピュータで読み取れる方式にて実現するための、あらゆる既存のまたは後に開発される技術に基づくものであってよい。コンピュータ可読媒体の例には、ハードドライブ、ネットワーク・アタッチト・ストレージ(NAS)、読み出し専用メモリ、ランダムアクセスメモリ(例えばフラッシュメモリデバイス)、CD(コンパクトディスク)、CD−ROM、CD−R、CD−RW、DVD(デジタルバーサタイルディスク)、磁気テープ、その他の光学式および非光学式データ記憶装置を含む。さらに、コンピュータ可読媒体をネットワークでつないだコンピュータシステムに分散させて、コンピュータ可読コードを分散方式で記憶および実行できるようにすることも可能である。
【0070】
本発明の1つ以上の実施形態について明瞭に理解できるようにある程度詳細に説明したが、特許請求の範囲内で特定の変更および変形が可能である。したがって、説明した実施形態は限定ではなく例示として考慮されるべきであり、特許請求の範囲はここで述べられた詳細に限定されず、特許請求の範囲およびその同等物内での変形が可能である。特許請求の範囲においては、特に明記されていない限り、要素および/またはステップは特定の動作順序を意味しない。
【0071】
ここで1つの例として述べたコンポーネント、動作、構造に、複数の例を提供することができる。最後に、様々なコンポーネント、動作、データストアの間の境界はいくぶん任意であり、また特定の動作は具体的な例示的構成の文脈にて例示される。これ以外の機能割り当ても想起されるが、これは本発明の特許請求の範囲に入り得る。一般に、例示的な構成の中の別個のコンポーネントとして呈示された構造と機能は、構造またはコンポーネントの組み合わせとして実施できる。同様に、1つのコンポーネントとして呈示された構造と機能は、別個のコンポーネントとして実施できる。これらおよびこれ以外の応用、修正、追加、改善も、付属の特許請求の範囲に入り得る。
図1
図2
図3
図4
図5