(57)【要約】  本明細書に記載のユーザインタフェースを生成するシステムは、システム内に存在する、又はシステムに結合されたハードウェアコンポーネントに基づいて、システムのタイプを検出し、及びシステムのタイプに基づいて、実行するユーザインタフェースマネージャを決定するためのプロセッサを含み得る。このプロセッサは、システムのユーザインタフェースを生成するために、ユーザインタフェースマネージャを実行することもでき、ユーザインタフェースマネージャのタイプは、ユーザインタフェースのレイアウトを示すための複数のルールを有する。
2020529055.tif 000002
【特許請求の範囲】
【請求項１】
ユーザインタフェースを生成するシステムであって、
前記システム内に存在する、又は前記システムに結合されたハードウェアコンポーネントに基づいて、前記システムのタイプを検出することと、
前記システムの前記タイプに基づいて、実行するユーザインタフェースマネージャを決定することと、
前記システムのユーザインタフェースを生成するために、前記ユーザインタフェースマネージャを実行することであって、前記ユーザインタフェースマネージャが、前記ユーザインタフェースのレイアウトを示すための複数のルールを有する、ことと、
を行うためのプロセッサを有するシステム。
【請求項２】
前記ユーザインタフェースが、少なくとも１つのアクティブアプリケーション及び少なくとも１つの可視アプリケーションを有する、請求項１に記載のシステム。
【請求項３】
前記システムの前記タイプが、モバイルシステム、ゲーム機システム、拡張現実システム、タブレットシステム、又はデスクトップシステムを含む、請求項１又は２に記載のシステム。
【請求項４】
前記プロセッサが、前記ユーザインタフェースマネージャに対応する少なくとも１つの表示特徴に基づいて、前記ユーザインタフェースを表示するものである、請求項１又は２に記載のシステム。
【請求項５】
前記ユーザインタフェースマネージャが、少なくとも２つの下位ユーザインタフェースマネージャを管理するものであり、前記少なくとも２つの下位ユーザインタフェースマネージャのそれぞれが、別個のアプリケーションを実行するものである、請求項１に記載のシステム。
【請求項６】
前記ユーザインタフェースマネージャが、エクスペリエンスをサポートするシェルアプリケーションを管理するものでもある、請求項１又は２に記載のシステム。
【請求項７】
前記ユーザインタフェースマネージャが、エクスペリエンスをサポートするシェルエクスペリエンスホストを管理するものでもある、請求項１又は２に記載のシステム。
【請求項８】
前記プロセッサが、入力デバイスが前記システムに結合されていることを検出し、及び前記入力デバイスに基づいて、新しいユーザインタフェースマネージャを生成するものである、請求項１に記載のシステム。
【請求項９】
前記入力デバイスが、ゲームコントローラであり、及び前記新しいユーザインタフェースマネージャが、ゲーム機ユーザインタフェースを提供するものである、請求項８に記載のシステム。
【請求項１０】
前記プロセッサが、前記ユーザインタフェースマネージャから前記新しいユーザインタフェースマネージャへの移行に応答して、前記ユーザインタフェースの状態を保存するものである、請求項８に記載のシステム。
【請求項１１】
ユーザインタフェースを生成する方法であって、
システムのタイプを、前記システム内に存在する、又は前記システムに結合されたハードウェアコンポーネントに基づいて検出することと、
前記システムの前記タイプに基づいて、実行するユーザインタフェースマネージャを決定することと、
前記システムのユーザインタフェースを生成するために、前記ユーザインタフェースマネージャを実行することであって、前記ユーザインタフェースマネージャが、前記ユーザインタフェースのレイアウトを示すための複数のルールを有する、ことと、
を含む方法。
【請求項１２】
前記ユーザインタフェースが、少なくとも１つのアクティブアプリケーション及び少なくとも１つの可視アプリケーションを含む、請求項１１に記載の方法。
【請求項１３】
前記システムの前記タイプが、モバイルシステム、ゲーム機システム、拡張現実システム、タブレットシステム、又はデスクトップシステムを含む、請求項１１又は１２に記載の方法。
【請求項１４】
入力デバイスが前記システムに結合されていることを検出すること、及び前記入力デバイスに基づいて、新しいユーザインタフェースマネージャを生成することを含み、前記入力デバイスが、ゲームコントローラであり、及び前記新しいユーザインタフェースマネージャが、ゲーム機ユーザインタフェースを提供するものである、請求項１１又は１２に記載の方法。
【請求項１５】
ユーザインタフェースを生成するシステムであって、
プロセッサと、
プロセッサによる実行に応答して、
前記システム内に存在する、又は前記システムに結合されたハードウェアコンポーネントに基づいて、前記システムのタイプを検出することと、
前記システムの前記タイプに基づいて、ユーザインタフェースマネージャのビジュアルツリーから実行するユーザインタフェースマネージャを選択することであって、前記ビジュアルツリーがユーザインタフェースホストに存在することと、
前記システムのユーザインタフェースを生成するために、前記選択されたユーザインタフェースマネージャを実行することであって、前記選択されたユーザインタフェースマネージャが、前記ユーザインタフェースのレイアウトを示すための複数のルールを有する、ことと、
を前記プロセッサに行わせる複数の命令を保存するストレージデバイスと、
を有するシステム。
【発明の詳細な説明】
【背景技術】
【０００１】
背景
[0001]  どのようなサイズのコンピュータデバイスも、一般的に意図された設計に固定されたユーザエクスペリエンスを生じさせることができる。各デバイスは、個別に、固定されたアプリケーション機能に基づいて、ユーザインタフェースを生成し得る。例えば、各デバイスは、ハードコーディングによって、又はアプリケーションを表示するための固定フォーマットを使用して、ユーザインタフェースを個別に生成し得る。
【発明の概要】
【課題を解決するための手段】
【０００２】
概要
[0002]  以下は、本明細書に記載する幾つかの局面の基本的理解をもたらすための簡略化した概要を提示する。この概要は、クレームされた特定事項の詳細な概説ではない。この概要は、クレームされた特定事項の主要又は必須の要素を識別すること、又はクレームされた特定事項の範囲を明確化することを意図したものではない。この概要の唯一の目的は、後に示されるより詳細な説明への準備段階として、クレームされた特定事項の幾つかの概念を簡略化した形式で提示することである。
【０００３】
[0003]  本明細書に記載の一実施形態は、システム内に存在する、又はシステムに結合されたハードウェアコンポーネントに基づいて、システムのタイプを検出するプロセッサを含む、ユーザインタフェースを生成するシステムを含む。このプロセッサは、システムのタイプに基づいて、実行するユーザインタフェースマネージャを決定し、及びシステムのユーザインタフェースを生成するために、ユーザインタフェースマネージャを実行することもでき、ユーザインタフェースマネージャは、ユーザインタフェースのレイアウトを示すための複数のルールを有する。
【０００４】
[0004]  本明細書に記載の別の実施形態では、ユーザインタフェースを生成する方法は、システム内に存在する、又はシステムに結合されたハードウェアコンポーネントに基づいて、システムのタイプを検出することを含み得る。この方法は、システムのタイプに基づいて、実行するユーザインタフェースマネージャを決定すること、及びシステムのユーザインタフェースを生成するために、ユーザインタフェースマネージャを実行することも含んでもよく、ユーザインタフェースマネージャは、ユーザインタフェースのレイアウトを示すための複数のルールを有する。
【０００５】
[0005]  本明細書に記載のさらに別の実施形態では、ユーザインタフェースを生成するシステムは、プロセッサと、プロセッサによる実行に応答して、システム内に存在する、又はシステムに結合されたハードウェアコンポーネントに基づいて、システムのタイプを検出すること、及びシステムのタイプに基づいて、ユーザインタフェースマネージャのビジュアルツリーから実行するユーザインタフェースマネージャを選択することであって、ビジュアルツリーがユーザインタフェースホストに存在することをプロセッサに行わせる複数の命令を保存するストレージデバイスとを含み得る。複数の命令は、システムのユーザインタフェースを生成するために、選択されたユーザインタフェースマネージャを実行することであって、選択されたユーザインタフェースマネージャが、ユーザインタフェースのレイアウトを示すための複数のルールを有することもプロセッサに行わせ得る。
【０００６】
[0006]  以下の説明及び添付の図面は、クレームされた特定事項のある特定の例示的局面を詳細に記載する。ただし、これらの局面は、本革新技術の原理が用いられ得る様々な方法のほんの幾つかを示すものであり、及びクレームされた特定事項は、そのような局面及びそれらの均等物の全てを含むことが意図される。クレームされた特定事項の他の利点及び新規の特徴は、図面と併せて考慮すると、本革新技術の以下の詳細な説明から明らかとなるだろう。
【０００７】
図面の簡単な説明
[0007]  以下の詳細な説明は、開示される特定事項の多数の特徴の具体的な例を包含する添付の図面を参照することによって、より理解され得る。
【図面の簡単な説明】
【０００８】
【図１】[0008]ルールに基づいてユーザインタフェースを生成し得るコンピューティングシステムの一例のブロック図である。
【図２】[0009]ルールに基づいてユーザインタフェースを生成する方法例のプロセスフロー図である。
【図３】[0010]ルールに基づいて複数のユーザアプリケーション用のユーザインタフェースを生成し得るシステム例のブロック図である。
【図４】[0011]ルールに基づいてユーザインタフェースを生成し得るコンピュータ可読ストレージ媒体例のブロック図である。
【図５】[0012]ユーザインタフェースマネージャ内でユーザインタフェースマネージャをホスティングするためのシステム例のブロック図である。
【発明を実施するための形態】
【０００９】
詳細な説明
[0013]  ユーザインタフェースは、様々な静的再使用不可能な技術を使用して生成され得る。例えば、異なるデバイスに対するユーザインタフェースは、異なる機能セット、異なるデータ経路、及び異なるビジュアルコンポジションを用いて生成され得る。従って、アプリケーションは、デバイスのタイプごとにユーザインタフェースを生成するために、異なるコードを含むことが多い。これらのアプリケーションは、アプリケーションが実行されているデバイスに関する深いコンテキストも備え、及びユーザインタフェース制御部を直接ディスプレイデバイス上の画素座標にマッピングすることが多い。例えば、アプリケーションは、特にテキストフィールドなどのユーザ制御要素を表示させるために画素座標を指定し得る。
【００１０】
[0014]  本明細書に記載する技術は、ルールに基づいてユーザインタフェースを生成するシステムを提供する。幾つかの例では、ルールは、ある特定のデバイスのタイプに対応し得る。例えば、デスクトップコンピューティングデバイスのユーザインタフェースを生成するためのルールは、モバイルデバイスのユーザインタフェースを生成するためのルールとは異なり得る。幾つかの実施形態では、システムは、システム内に存在するハードウェアコンポーネントに基づいてシステムのタイプを検出し、及びシステムのタイプに基づいて、実行するユーザインタフェースマネージャのタイプを決定し得る。システムは、ユーザインタフェースマネージャを実行して、システムのユーザインタフェースを生成することもでき、ユーザインタフェースマネージャは、ユーザインタフェースのレイアウトを示すための複数のルールを有する。
【００１１】
[0015]  本明細書に記載の技術は、任意の数の異なるデバイスのユーザインタフェースを作成しながら、共有されるユーザインタフェースを生成するコードを可能にする。例えば、本明細書に記載の技術は、特に、共有コードがデスクトップデバイス、タブレットデバイス、モバイルデバイス、電話機器、ゲーム機デバイス、及び拡張現実デバイスのユーザインタフェースを生成するのを可能にし得る。共有コードは、デバイスの各タイプに対応したルールに基づいて、異なるユーザインタフェースを生成し得る。例えば、あるルールを用いてユーザアプリケーションを表示するコードは、デバイスの異なるタイプに対応した任意の数の異なるユーザインタフェースマネージャ間で共有され得る。
【００１２】
[0016]  予備事項として、図の幾つかは、機能性、モジュール、特徴、要素などと呼ばれる１つ又は複数の構造コンポーネントの文脈における概念を示す。図に示す様々なコンポーネントは、任意の態様で、例えば、ソフトウェア、ハードウェア（例えば、個別論理コンポーネントなど）、ファームウェアなど、又はこれらの実施の任意の組み合わせによって実施され得る。ある実施形態では、様々なコンポーネントは、実際の実施における対応するコンポーネントの使用を反映し得る。他の実施形態では、図に示されるどの単一のコンポーネントも、幾つかの実際のコンポーネントによって実施され得る。図における何れの２つ以上の個別のコンポーネントの描写も、単一の実際のコンポーネントによって行われる異なる機能を反映し得る。以下に述べる図１は、図に示す機能を実施するために使用され得る異なるシステムに関する詳細を提供する。
【００１３】
[0017]  他の図は、フローチャート形式で概念を示す。この形式では、ある複数の動作は、ある順序で行われる異なるブロックを構成するものとして示される。このような実施は、例示的及び非限定的なものである。本明細書に記載のある複数のブロックは、一緒にグループ化され、及び単一の動作で行われてもよく、ある複数のブロックは、複数のコンポーネントブロックに分割されてもよく、並びにある複数のブロックは、ブロックの並列実施態様を含む、本明細書に示される順序とは異なる順序で行われてもよい。フローチャートに示すブロックは、ソフトウェア、ハードウェア、ファームウェアなど、又はこれらの実施の任意の組み合わせによって実施され得る。本明細書では、ハードウェアは、コンピュータシステム、特定用途向け集積回路（ＡＳＩＣ）などの個別論理コンポーネントなど、及びこれらの任意の組み合わせを含み得る。
【００１４】
[0018]  専門用語に関しては、「構成された（configured to）」という表現は、ある種類の構造コンポーネントが識別された動作を行うように構築され得るあらゆるやり方を網羅する。構造コンポーネントは、ソフトウェア、ハードウェア、ファームウェアなど、又はこれらの任意の組み合わせを用いて動作を行うように構成され得る。例えば、「構成された」という表現は、関連付けられた機能性を実施するためのハードウェア要素の論理回路構造を指し得る。「構成された」という表現は、ファームウェア又はソフトウェアの関連付けられた機能性のコーディング設計を実施するためのハードウェア要素の論理回路構造も指し得る。「モジュール」という用語は、任意の適切なハードウェア（例えば、特にプロセッサ）、ソフトウェア（例えば、特にアプリケーション）、ファームウェア、又はハードウェア、ソフトウェア、及びファームウェアの任意の組み合わせを用いて実施され得る構造要素を指す。
【００１５】
[0019]  「論理」という用語は、タスクを行うためのあらゆる機能性を網羅する。例えば、フローチャートに示す各動作は、その動作を行うための論理に対応する。動作は、ソフトウェア、ハードウェア、ファームウェアなど、又はこれらの任意の組み合わせを用いて行われ得る。
【００１６】
[0020]  本明細書では、「コンポーネント」、「システム」、「クライアント」などの用語は、ハードウェア、ソフトウェア（例えば、実行中の）、及び／又はファームウェア、又はこれらの組み合わせの何れかであるコンピュータ関連エンティティを指すことが意図される。例えば、コンポーネントは、プロセッサ上で実行中のプロセス、オブジェクト、実行ファイル、プログラム、関数、ライブラリ、サブルーチン、及び／又はコンピュータ若しくはソフトウェア及びハードウェアの組み合わせでもよい。例示として、サーバ上で実行中のアプリケーション及びサーバの両方が、コンポーネントでもよい。１つ又は複数のコンポーネントが、プロセス内に存在してもよく、並びにコンポーネントは、１つのコンピュータ上でローカライズされてもよく、及び／又は２つ以上のコンピュータ間で分散されてもよい。
【００１７】
[0021]  さらに、クレームされた特定事項は、開示した特定事項を実施するようにコンピュータを制御するためのソフトウェア、ファームウェア、ハードウェア、又はこれらの任意の組み合わせを作るための標準プログラミング及び／又はエンジニアリング技術を使用して、方法、装置、又は製品として実施され得る。本明細書における「製品」という用語は、どのような有形コンピュータ可読デバイス又は媒体からもアクセス可能なコンピュータプログラムを網羅することが意図される。
【００１８】
[0022]  コンピュータ可読ストレージ媒体は、限定されないが、磁気ストレージデバイス（例えば、特にハードディスク、フロッピーディスク、及び磁気ストライプ）、光ディスク（例えば、特にコンパクトディスク（ＣＤ）及びデジタル多用途ディスク（ＤＶＤ））、スマートカード、並びにフラッシュメモリデバイス（例えば、特にカード、スティック、及びキードライブ）を含み得る。対照的に、コンピュータ可読媒体一般（すなわち、ストレージ媒体ではない）は、無線信号などのための伝送媒体などの通信媒体を追加的に含み得る。
【００１９】
[0023]  図１は、ルールに基づいてユーザインタフェースを生成し得るコンピューティングシステムの一例のブロック図である。例示的システム１００は、コンピューティングデバイス１０２を含む。コンピューティングデバイス１０２は、処理装置１０４、システムメモリ１０６、及びシステムバス１０８を含む。幾つかの例では、コンピューティングデバイス１０２は、他のコンピューティングデバイスの中でも、ゲーム機、パーソナルコンピュータ（ＰＣ）、付属コンソール、ゲームコントローラでもよい。幾つかの例では、コンピューティングデバイス１０２は、クラウドネットワークにおけるノードでもよい。
【００２０】
[0024]  システムバス１０８は、限定されないがシステムメモリ１０６を含むシステムコンポーネントを処理装置１０４に結合させる。処理装置１０４は、様々な利用可能なプロセッサの何れであってもよい。処理装置１０４として、デュアルマイクロプロセッサ及び他のマルチプロセッサアーキテクチャも用いられ得る。
【００２１】
[0025]  システムバス１０８は、当業者に知られている任意の各種の利用可能なバスアーキテクチャを使用した、メモリバス又はメモリコントローラ、周辺機器用バス又は外部バス、及びローカルバスを含む、幾つかのタイプのバス構造の何れであってもよい。システムメモリ１０６は、揮発性メモリ１１０及び不揮発性メモリ１１２を含むコンピュータ可読ストレージ媒体を含む。
【００２２】
[0026]  幾つかの実施形態では、起動中などにコンピュータ１０２内の要素間で情報を転送する基本ルーチンを包含する、統一拡張可能ファームウェアインタフェース（ＵＥＦＩ）マネージャ又は基本入出力システム（ＢＩＯＳ）が、不揮発性メモリ１１２に保存される。限定ではなく例示として、不揮発性メモリ１１２は、読出し専用メモリ（ＲＯＭ）、プログラマブルＲＯＭ（ＰＲＯＭ）、電気的プログラマブルＲＯＭ（ＥＰＲＯＭ）、電気的消去可能プログラマブルＲＯＭ（ＥＥＰＲＯＭ）、又はフラッシュメモリを含み得る。
【００２３】
[0027]  揮発性メモリ１１０は、外部キャッシュメモリとして機能するランダムアクセスメモリ（ＲＡＭ）を含む。限定ではなく例示として、ＲＡＭは、スタティックＲＡＭ（ＳＲＡＭ）、ダイナミックＲＡＭ（ＤＲＡＭ）、シンクロナスＤＲＡＭ（ＳＤＲＡＭ）、ダブルデータレート方式ＳＤＲＡＭ（ＤＤＲ  ＳＤＲＡＭ）、エンハンストＳＤＲＡＭ（ＥＳＤＲＡＭ）、SynchLink（商標）ＤＲＡＭ（ＳＬＤＲＡＭ）、Rambus（登録商標）ダイレクトＲＡＭ（ＲＤＲＡＭ）、ダイレクトRambus（登録商標）ダイナミックＲＡＭ（ＤＲＤＲＡＭ）、及びRambus（登録商標）ダイナミックＲＡＭ（ＲＤＲＡＭ）などの多くの形式で利用可能である。
【００２４】
[0028]  コンピュータ１０２は、取り外し可能／固定型、揮発性／不揮発性コンピュータストレージ媒体などの他のコンピュータ可読媒体も含む。図１は、例えば、ディスクストレージ１１４を示す。ディスクストレージ１１４は、限定されないが、磁気ディスクドライブ、フロッピーディスクドライブ、テープドライブ、Jazドライブ、Zipドライブ、LS-210ドライブ、フラッシュメモリカード、又はメモリスティックのようなデバイスを含む。
【００２５】
[0029]  加えて、ディスクストレージ１１４は、個別に、又は限定されないが、コンパクトディスクＲＯＭデバイス（ＣＤ−ＲＯＭ）、ＣＤ記録可能ドライブ（ＣＤ−Ｒドライブ）、ＣＤ書換え可能ドライブ（ＣＤ−ＲＷドライブ）、又はデジタル多用途ディスクＲＯＭドライブ（ＤＶＤ−ＲＯＭ）などの光ディスクドライブを含む他のストレージ媒体と組み合わせてストレージ媒体を含み得る。システムバス１０８に対するディスクストレージデバイス１１４の接続を容易にするために、インタフェース１１６などの取り外し可能又は固定型インタフェースが一般的に使用される。
【００２６】
[0030]  図１は、ユーザと、適切な動作環境１００に示された基本コンピュータ資源との間の仲介者として機能するソフトウェアを示すと理解されるものとする。このようなソフトウェアは、オペレーティングシステム１１８を含む。ディスクストレージ１１４に保存され得るオペレーティングシステム１１８は、コンピュータ１０２の資源の制御及び割振りを行うように機能する。
【００２７】
[0031]  システムアプリケーション１２０は、プログラムモジュール１２２及びシステムメモリ１０６又はディスクストレージ１１４に保存されたプログラムデータ１２４を用いたオペレーティングシステム１１８による資源の管理を利用する。開示される特定事項は、様々なオペレーティングシステム又はオペレーティングシステムの組み合わせを用いて実施され得ることが理解されるものとする。
【００２８】
[0032]  ユーザは、入力デバイス１２６を用いて、コマンド又は情報をコンピュータ１０２に入力する。入力デバイス１２６は、限定されないが、マウス、トラックボール、スタイラスなどのポインティングデバイス、キーボード、マイクロフォン、ジョイスティック、サテライトディッシュ、スキャナ、ＴＶチューナカード、デジタルカメラ、デジタルビデオカメラ、ウェブカメラ、任意の適切なダイヤルアクセサリ（物理的又は仮想）などを含む。幾つかの例では、入力デバイスは、ナチュラルユーザインタフェース（ＮＵＩ）デバイスを含み得る。ＮＵＩは、マウス、キーボード、遠隔制御装置などの入力デバイスによって課せられる人工的な制約のない「自然な」態様で、ユーザがデバイスとインタラクトすることを可能にするあらゆるインタフェース技術を指す。幾つかの例では、ＮＵＩデバイスは、会話認識、接触及びスタイラス認識、スクリーン上及びスクリーンに隣接したジェスチャ認識、エアジェスチャ、頭部及び目の追跡、音声及び会話、視覚、接触、ジェスチャ、及び機械知能に依存したデバイスを含む。例えば、ＮＵＩデバイスは、タッチセンサ式ディスプレイ、音声及び会話認識、意図及び目標の理解、並びに立体カメラシステム、赤外線カメラシステム、ＲＧＢカメラシステム、及びこれらの組み合わせなどのデプスカメラを使用したモーションジェスチャ検出を含み得る。ＮＵＩデバイスは、加速度計又はジャイロスコープを用いたモーションジェスチャ検出、顔認識、３次元（３Ｄ）ディスプレイ、頭部、目、及び視線の追跡、没入型拡張現実及び仮想現実システムも含むことができ、これらは全て、より自然なインタフェースを提供する。ＮＵＩデバイスは、電界感知電極を使用して脳活動を感知する技術も含み得る。例えば、ＮＵＩデバイスは、脳の電気活動を検出するための脳波記録（ＥＥＧ）及び関連の方法を使用し得る。入力デバイス１２６は、インタフェースポート１２８を介してシステムバス１０８を通して処理装置１０４に接続する。インタフェースポート１２８は、例えば、シリアルポート、パラレルポート、ゲームポート、及びユニバーサルシリアルバス（ＵＳＢ）を含む。
【００２９】
[0033]  出力デバイス１３０は、入力デバイス１２６と同じタイプのポートの幾つかを使用する。従って、例えば、ＵＳＢポートは、入力をコンピュータ１０２に提供するため、及びコンピュータ１０２からの情報を出力デバイス１３０に出力するために使用され得る。
【００３０】
[0034]  出力アダプタ１３２は、出力デバイス１３０の中でも、アダプタを介してアクセス可能なモニタ、スピーカ、及びプリンタのような幾つかの出力デバイス１３０が存在することを示すために提供される。出力アダプタ１３２は、限定ではなく例示として、出力デバイス１３０とシステムバス１０８との間の接続手段を提供するビデオ及びサウンドカードを含む。遠隔コンピューティングデバイス１３４などの他のデバイス及びデバイスのシステムは、入力能力及び出力能力の両方を提供することが注目され得る。
【００３１】
[0035]  コンピュータ１０２は、遠隔コンピューティングデバイス１３４などの１つ又は複数の遠隔コンピュータへの論理接続を使用したネットワーク化環境において様々なソフトウェアアプリケーションをホスティングするサーバでもよい。遠隔コンピューティングデバイス１３４は、ウェブブラウザ、ＰＣアプリケーション、携帯電話アプリケーションなどを用いて構成されたクライアントシステムでもよい。遠隔コンピューティングデバイス１３４は、パーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ワークステーション、マイクロプロセッサベースの電化製品、携帯電話、ピアデバイス、又は他の共通ネットワークノードなどでもよく、及び一般的に、コンピュータ１０２に関連して記載される要素の多く又は全てを含む。
【００３２】
[0036]  遠隔コンピューティングデバイス１３４は、ネットワークインタフェース１３６を通してコンピュータ１０２に論理的に接続され、及び次に、無線でもよい通信接続１３８を介して接続され得る。ネットワークインタフェース１３６は、ローカルエリアネットワーク（ＬＡＮ）及び広域ネットワーク（ＷＡＮ）などの無線通信ネットワークを網羅する。ＬＡＮ技術は、光ファイバ分散データインタフェース（ＦＤＤＩ）、銅線配線インタフェース（ＣＤＤＩ）、イーサネット、トークンリングなどを含む。ＷＡＮ技術は、限定されないが、二地点間リンク、サービス総合デジタル網（ＩＳＤＮ）のような回線交換網及びそれらのバリエーション、パケット交換網、並びにデジタル加入者回線（ＤＳＬ）を含む。
【００３３】
[0037]  通信接続１３８は、ネットワークインタフェース１３６をバス１０８に接続するために用いられるハードウェア／ソフトウェアを指す。通信接続１３８は、コンピュータ１０２内の図示の明瞭さのために示されるが、これは、コンピュータ１０２の外部にあってもよい。ネットワークインタフェース１３６への接続を行うためのハードウェア／ソフトウェアは、例示目的で、携帯電話スイッチ、通常の電話等級のモデム、ケーブルモデム、及びＤＳＬモデムを含むモデム、ＩＳＤＮアダプタ、及びイーサネットカードなどの内部及び外部技術を含み得る。
【００３４】
[0038]  コンピュータ１０２は、さらに無線機１４０を含み得る。例えば、無線機１４０は、１つ又は複数の無線帯域で動作し得る無線ローカルエリアネットワーク無線機でもよい。例えば、無線機１４０は、２．４ＧＨｚ又は５ＧＨｚの工業、科学、及び医療（ＩＳＭ）無線帯域で動作し得る。幾つかの例では、無線機１４０は、任意の無線周波数の任意の適切な無線帯域で動作し得る。
【００３５】
[0039]  コンピュータ１０２は、システム分析器１４２、ユーザインタフェース選択器１４４、及びユーザインタフェース生成器１４６などの１つ又は複数のモジュール１２２を含む。幾つかの実施形態では、システム分析器１４２は、システム内に存在する、又はシステムに結合されたハードウェアコンポーネントに基づいて、システムのタイプを検出し得る。例えば、閾値サイズ未満のディスプレイスクリーンを含むデバイスは、モバイルデバイスとして識別することができ、又はゲームコントローラに結合されたデバイスは、ゲーム機として識別することができる。幾つかの実施形態では、ユーザインタフェース選択器１４４は、システムのタイプに基づいて実行するユーザインタフェースマネージャのタイプを決定し得る。幾つかの例では、各タイプのデバイスは、別のユーザインタフェースマネージャに関連付けられ得る。本明細書で言及されるように、ユーザインタフェースマネージャは、オペレーティングシステムの外観を生成し得る任意の適切なアプリケーションを含み得る。幾つかの実施形態では、ユーザインタフェース生成器１４６は、システムのユーザインタフェースを生成するためにユーザインタフェースマネージャを実行することができ、ユーザインタフェースマネージャのタイプは、ユーザインタフェースのレイアウトを示すための複数のルールを有する。本明細書で言及されるように、レイアウトは、可視アプリケーション及びシステム制御部の２次元表現を含み得る。複数のルールは、特に、アプリケーションウィンドウがオーバーラップされ得るか否か、アプリケーションが全画面モードで、又は様々なオペレーティングシステムのメニュー及び機能に対応したディスプレイスクリーン上のある場所で見えるか否かを含み得る。ルールセットは、３Ｄユーザエクスペリエンス、又は音声のみのエクスペリエンスなどの非ビジュアルユーザエクスペリエンスさえも定義し得ることが分かる。
【００３６】
[0040]  図１のブロック図は、コンピューティングシステム１０２が図１に示すコンポーネントの全てを含むものであることを示す意図はないことが理解されるものとする。代わりに、コンピューティングシステム１０２は、より少ない数のコンポーネント、又は図１に示されない追加のコンポーネント（例えば、追加のアプリケーション、追加のモジュール、追加のメモリデバイス、追加のネットワークインタフェースなど）を含み得る。さらに、システム分析器１４２、ユーザインタフェース選択器１４４、及びユーザインタフェース生成器１４６の機能性の何れも、ハードウェアにおいて、及び／又は処理装置（本明細書ではプロセッサとも呼ばれる）１０４において、部分的又は完全に実施され得る。例えば、機能性は、特定用途向け集積回路を用いて実施され得る（論理的に、処理装置１０４において、又はその他のデバイスにおいて実施され得る）。
【００３７】
[0041]  図２は、ルールに基づいてユーザインタフェースを生成する方法例のプロセスフロー図である。方法２００は、図１のコンピューティングシステム１０２などの任意の適切なコンピューティングデバイスを用いて実施され得る。
【００３８】
[0042]  ブロック２０２では、システム分析器１４２は、システム内に存在する、又はシステムに結合されたハードウェアコンポーネントに基づいて、システムのタイプを検出し得る。例えば、システムのタイプは、特に、拡張現実デバイス、タブレットデバイス、モバイルデバイス、電話機器、ゲーム機デバイス、又はデスクトップデバイスを含み得る。幾つかの実施形態では、システム分析器１４２は、ディスプレイスクリーン、プロセッサ、グラフィックプロセッサ、セルラー無線機などの任意の適切なハードウェアコンポーネントに基づいて、システムのタイプを検出し得る。幾つかの例では、システム分析器１４２は、セルラー無線機を含むシステムが電話機器であると決定し得る。幾つかの実施形態では、システム分析器１４２は、デバイスのディスプレイスクリーンのサイズに基づいて、デバイスのタイプを決定し得る。例えば、所定の閾値サイズよりも小さいディスプレイスクリーンを含むデバイスは、モバイルデバイスとして識別され得る。幾つかの実施形態では、システム分析器１４２は、３次元ユーザインタフェースをサポートするデバイスが拡張現実デバイスであり、及びゲームコントローラに接続するデバイスがゲーム機デバイスであることを決定し得る。幾つかの実施形態では、システム分析器１４２は、電源、グラフィックプロセッサ、メモリデバイスなどの他のハードウェアコンポーネントに基づいて、デバイスのタイプを検出し得る。これらの実施形態のそれぞれにおいて、システム分析器１４２は、モバイルデバイスに使用されるモジュール１２２の特定の組み合わせ、又はデスクトップデバイスに使用されるモジュール１２２の別の組み合わせの存在などの所定の条件の組み合わせ、並びに、現在のシステムのタイプ及び構成の最終決定を行うためにここで呼び出されるヒューリスティックを使用し得る。
【００３９】
[0043]  ブロック２０４では、ユーザインタフェース選択器１４４は、システムのタイプに基づいて実行するユーザインタフェースマネージャを決定し得る。幾つかの実施形態では、ユーザインタフェースマネージャ（本明細書ではコンポーザとも呼ばれる）は、システムのタイプに基づいてユーザインタフェースを生成し得る。例えば、ユーザインタフェースは、オーバーラップするウィンドウをデスクトップデバイス上では有効にするが、モバイルデバイス上では有効にしないことが可能である。加えて、ユーザインタフェースマネージャは、特徴の中でも、実行中のアプリケーションに対応するアイコンと共に情報端末へのリンクを含むアプリケーションスイッチャを含み得る。ユーザインタフェース選択器１４４は、デバイスに対応するユーザエクスペリエンスを生じさせるように実行するユーザインタフェースマネージャを決定し得る。幾つかの実施形態では、デバイスの各タイプは、特定のユーザインタフェースマネージャに関連付けられる。例えば、拡張現実デバイスは、第１のユーザインタフェースマネージャを備えてもよく、及びゲーム機デバイスは、第２のユーザインタフェースマネージャを備えてもよい。以下により詳細に述べるように、各ユーザインタフェースマネージャは、実行中のアプリケーションに関するユーザインタフェースがどのように生成されるかを示し得る。
【００４０】
[0044]  ブロック２０６では、ユーザインタフェース生成器１４６は、システムのユーザインタフェースを生成するためにユーザインタフェースマネージャを実行することができ、ユーザインタフェースマネージャのタイプは、ユーザインタフェースのレイアウトを示すための複数のルールを有する。複数のルールは、実行中のアプリケーション、並びに特に、アプリケーションランチャ、アプリケーションスイッチャ、及びウィンドウリストなどの他のビジュアル（これらは、独立したアプリケーション、又は例えばクロックを示す方法を定義するユーザマネージャルールの一群であってもよいし、或いはそうでなくてもよい）を表示する方法を示し得る。本明細書で言及されるように、アプリケーションランチャは、システムにインストールされた実行可能アプリケーションのリスト、最近アクセスされ、システムにインストールされたアプリケーションのリスト、システムにインストールされる推奨アプリケーションなどを含み得る。幾つかの例では、アプリケーションランチャは、プログラム、文書、及び設定にアクセスし得るコマンドを含み得る。これらのコマンドは、ローカルに保存されたアプリケーション及びファイルに基づいた検索機能、デバイス上でローカルに、又は遠隔サーバ上で利用可能な文書のリスト、デバイスのコンポーネントを構成するための制御パネル、デバイスの電源状態を変更するための電源機能コマンドなどを含み得る。本明細書で言及されるように、プリケーションスイッチャは、情報端末へのリンク、全ての開いたアプリケーションを示すタスクビュー、実行中のアプリケーションに対応したアイコンセット、並びにデバイスが電力を受け取るたびに有効にされるアプリケーション及びハードウェア特徴に対応する様々なアイコンを含み得る。
【００４１】
[0045]  幾つかの実施形態では、複数のルールは、アプリケーションランチャ、アプリケーションスイッチャ、及び実行中のアプリケーションに対応したウィンドウによって占有されるスクリーンのエリアを示し得る。複数のルールは、実行中のアプリケーションによる画素ごとのマッピングに依存しなくてもよい。例えば、ユーザインタフェース制御部は、ルールに基づいて、ディスプレイスクリーンの領域に表示され得る。幾つかの例では、テキストフィールドが、アプリケーションの中心に表示されてもよく、及びテキストフィールドの場所は、複数のルールに基づいて、ユーザインタフェース生成器１４６によって決定されてもよい。例えば、テキストフィールドの場所は、アプリケーションウィンドウが互いにオーバーラップしているか否か、２つ以上のアプリケーションウィンドウが見えるかどうかなどに依存し得る。ユーザインタフェース制御部の場所は、アプリケーションスイッチャのサイズ及び場所に基づいて調節することもできる。例えば、アプリケーションスイッチャは、ディスプレイスクリーンの上部、下部、左側、又は右側に沿って表示され得る。各タイプのユーザインタフェースマネージャは、アプリケーションスイッチャの場所との関連でアプリケーションウィンドウの場所を決定し得る。幾つかの実施形態では、ユーザインタフェース生成器１４６は、ユーザインタフェースマネージャに対応する少なくとも１つの表示特徴に基づいて、ユーザインタフェースを表示し得る。例えば、ゲーム機デバイスのユーザインタフェースマネージャは、フレーム又はアドーンメントなしの全画面モードでアプリケーションを表示し得る。幾つかの実施形態では、ユーザインタフェースマネージャ１４６は、アプリケーションスイッチャ及びデスクトップ背景も表示し得る。以下により詳細に記載するように、アプリケーションスイッチャは、ハードウェア制御アプリケーション、実行アプリケーション、情報端末などに対応する任意の数のアイコンを含み得る。デスクトップ背景は、任意の適切な画像、任意の数のローカルに保存されたファイルへのリンク、ディレクトリへのリンクなどを含み得る。
【００４２】
[0046]  アプリケーションランチャ、アプリケーションスイッチャ、ウィンドウアドーンメント、アクションセンター、及び本明細書で述べるユーザインタフェースエクスペリエンスの他の例などのユーザインタフェース概念は、本質的に例示的なものであることが分かる。ユーザインタフェース生成器１４６に提示された複数のルールは、望まれるどのようなユーザエクスペリエンスも生じさせ得る。また、このようなルールの複雑さに制限はない。あるルールは、単に、テキストの要素が何時及びどのようにスクリーン上に置かれるかを示し、他のルールは、多数の可能性のある結果を有する多段３Ｄエクスペリエンスを定義し得る。
【００４３】
[0047]  ある実施形態では、図２のプロセスフロー図は、方法２００のブロックが特定の順序で実行されることを示すことが意図される。代替的に、他の実施形態では、方法２００のブロックは、任意の適切な順序で実行することができ、及び方法２００の任意の適切な数のブロックが含まれ得る。さらに、特定のアプリケーションに応じて、方法２００内で任意の数の追加のブロックが含まれてもよい。幾つかの実施形態では、方法２００は、システム又はデバイスが、第１のタイプのデバイスから第２のタイプのデバイスへと変わったことを検出することを含み得る。例えば、モバイルデバイスは、より大きなディスプレイスクリーンを提供するドッキングステーションに挿入され得る。ユーザインタフェース生成器１４６は、モバイルデバイスの利用可能なハードウェア資源への変更を検出し、及びモバイルデバイスベースのユーザインタフェースに代わるデスクトップベースのユーザインタフェースを生成し得る。幾つかの実施形態では、方法２００は、外部モニタがモバイルデバイス又は電話機器に結合されたことを検出することも含み得る。ユーザインタフェースマネージャ１４６は、外部モニタのサイズが所定の閾値を超える場合には、デスクトップユーザインタフェースに基づいて、別個のユーザインタフェースを生成し得る。
【００４４】
[0048]  幾つかの実施形態では、方法２００は、少なくとも１つのアクティブアプリケーション及び少なくとも１つの可視アプリケーションを含むユーザインタフェースを生成することを含み得る。アクティブアプリケーションは、アプリケーションがユーザ入力を受け付けていることを示すことができ、一方、可視アプリケーションは、表示され得るが、ユーザ入力は受け付けていない。幾つかの実施形態では、方法２００は、第２のユーザインタフェースマネージャを実行することも含むことができ、第２のユーザインタフェースマネージャは、アクションセンター及び通知検出器アプリケーションを実行するものである。幾つかの実施形態では、方法２００は、少なくとも２つの下位ユーザインタフェースマネージャを管理することも含むことができ、少なくとも２つの下位ユーザインタフェースマネージャのそれぞれは、別個のアプリケーションを実行するものである。
【００４５】
[0049]  幾つかの実施形態では、方法２００は、入力デバイスがシステムに結合されたことを検出すること、及び入力デバイスに基づいて、新しいユーザインタフェースマネージャを生成することも含むことができ、入力デバイスは、ゲームコントローラであり、及び新しいユーザインタフェースマネージャは、ゲーム機ユーザインタフェースを提供するものである。加えて、方法２００は、ユーザインタフェースマネージャから新しいユーザインタフェースマネージャへの移行に応答して、ユーザインタフェースの状態を保存することを含み得る。
【００４６】
[0050]  幾つかの実施形態では、ユーザインタフェースマネージャは、様々な構成を用いて実施され得る。例えば、ユーザインタフェースマネージャは、特に、ビジュアル及びアドーンメントを含む実行アプリケーション、ユーザインタフェースマネージャのメインスレッドにおける持続的ユーザインタフェース、ユーザインタフェースマネージャの非メインスレッドにおける持続的ユーザインタフェース（プロセスアプリケーション外のホストシェルエクスペリエンスとして）、又は再帰的に作成されたユーザインタフェースマネージャを用いて実施され得る。ユーザインタフェースマネージャの様々な構成が、図３に関連して以下に例示及び説明される。
【００４７】
[0051]  図３は、ルールに基づいて複数のユーザアプリケーション用のユーザインタフェースを生成し得るシステム例のブロック図である。ルールは、ある領域の中心にテキストブロックを表示するなどの高レベル概念、又はルール作成者が、ある領域のサイズを決定し、及びその領域においてテキストを数学的中心に置くことを必要とする概念などの低レベル概念として表すことができる。ユーザインタフェースマネージャ３００は、任意の適切な数のアプリケーション及びソフトウェアコンポーネントを用いて実行され得る。例えば、ユーザインタフェースマネージャ３００は、Windows.UI.Composition又はExtensible Application Markup Language（ＸＡＭＬ）を使用して、ユーザインタフェース又はビジュアルツリーのルート３０２で開始するシェルの作成をもたらす様々なルールを命令的又は宣言的に記述することができる。他の実施形態では、ユーザインタフェースマネージャ３００は、様々な形式の何れかのＨＴＭＬ、OpenGL、Vulkan、Collada、又はオンスクリーンエクスペリエンスを記述するビジュアルツリーを生成するためにユーザエクスペリエンスルールが変換されるやり方の定義及び管理を行うための他の既存のユーザエクスペリエンスフレームワークなどの任意の利用可能な技術を使用し得る。ユーザインタフェースマネージャ３００は、他のシェルコンポーネントアプリケーション又は他のアプリケーションエクスペリエンスの他のトップレベルビジュアルなどにおける、プロセスの外で実行中のビジュアルを作成するためにこれらのルールを使用することが可能となる。幾つかの実施形態では、ユーザインタフェースマネージャ３００は、シェルエクスペリエンス全体を反映するやり方で、シェルの異なるより小さな共通コンポーネントを一緒に作成することによって、特定のユーザインタフェース又はシェルエクスペリエンスを実施し得る。また、ユーザインタフェースマネージャ３００は、システム分析器１４２に基づいて、ある特定のシェルエクスペリエンスを実現するためにコンポーネントの特性を構成し得る。
【００４８】
[0052]  幾つかの実施形態では、ユーザインタフェースマネージャ３００は、プライベートアプリケーションプログラミングインタフェース（ＡＰＩ）のセットを用いて、基礎となるシェル又はユーザインタフェースと通信し得る。これらのプライベートＡＰＩは、ユーザインタフェースマネージャがシェルに関連付けられたシェルタスクに対応する命令を実行することを可能にし得る。シェルタスクは、アプリケーションの起動及び寿命管理、アプリケーション又はプロセスロック、アプリケーションのサイズ変更、アプリケーションの可視性の変更、シャットダウン、並びに他のシェル特徴を含み得る。幾つかの実施形態では、ユーザインタフェースマネージャ３００は、シェルの現在の状態も反映し得る。シェルの状態は、アクティブビュー、実行中アプリケーション、現在のスクリーン解像度、及び他のシェル状態情報を含み得る。
【００４９】
[0053]  幾つかの実施形態では、ユーザインタフェースマネージャ３００は、シェルエクスペリエンスの他に、ユーザアプリケーションのビジュアルをユーザに提示し得る。これらのアプリケーションは、アプリケーションの選択のフレームワークを使用して、バッファ（ＤＣＯＭＰビジュアル面又は他の類似の技術によって表現される）内にペイントし得る。このような例においては、バッファは、スクリーンに直接ペイントせず、及びデフォルト設定で、スクリーン上に単独でのることはない。より正確に言えば、ユーザインタフェースマネージャ３００は、アプリケーションのビジュアルを選択し、及びそのアプリケーションを表示することができる。幾つかの実施形態では、ユーザインタフェースマネージャ３００は、ユーザアプリケーションのトップレベルのビジュアルの上に、タイトルバー又はドロップシャドウなどのアドーンメントも追加し得る。幾つかの実施形態では、ユーザインタフェースマネージャ３００は、特にスプラッシュスクリーンなどの任意のアプリケーションごとのウィンドウコンテンツも示し得る。
【００５０】
[0054]  一例では、ユーザインタフェースマネージャ３００は、システム上で実行中のアプリケーションのリストを提供するウィンドウリスト制御部３０４の機能と通信し得る。ユーザインタフェースマネージャ３００によって適用されるユーザインタフェースルールに基づいて、リスト中の各アプリケーションは、タイトルバー３１０又は３１２、及びウィンドウコンテンツホスト３１４又は３１６にも関連付けられる、ウィンドウユーザインタフェース制御部３０６又は３０８に関連付けられ得る。結果として得られるユーザインタフェースルールは、例えば、ドラッグされたウィンドウが、移動のレンダリング変換が偶然協調的にアプリケーションのコンポジションビジュアルである子ビジュアルに適用されるため、ウィンドウのコンテンツも移動させることを可能にする。図３の例では、ウィンドウコンテンツホスト３１４は、アクティブユーザアプリケーション１（３１８）を表示し、及びウィンドウ制御ホスト３１６は、可視ユーザアプリケーション２（３２０）を表示する。アクティブアプリケーション３１８を包むタイトルバー３１０と、アクティブアプリケーション３２０を包むタイトルバー３１２との間のビジュアル表現の差も示され、及びユーザインタフェース生成器１４６によって処理されたユーザインタフェースルールにより管理される。ユーザインタフェースマネージャ３００は、ユーザアプリケーション１（３１８）及びユーザアプリケーション２（３２０）がオーバーラップされ得るかどうか、サイドバイサイドで見られ得るかどうか、サイズ変更され得るかどうかなどを示し得る。
【００５１】
[0055]  図３のブロック図は、ユーザインタフェースマネージャ３００が図３に示すコンポーネントの全てを包含するビジュアル表現を作成するものであることを示すことが意図されないことが理解されるものとする。より正確に言えば、ユーザインタフェースマネージャ３００は、より少ない数のコンポーネント、又は図３に示されない追加のコンポーネント（例えば、追加のアプリケーション、追加のモジュール、追加のエクスペリエンスなど）をビジュアルツリーに含ませることができる。
【００５２】
[0056]  図４は、ルールに基づいてユーザインタフェースを生成し得るコンピュータ可読ストレージ媒体例のブロック図である。有形コンピュータ可読ストレージ媒体４００は、コンピュータバス４０４上でプロセッサ４０２によってアクセスされ得る。さらに、有形コンピュータ可読ストレージ媒体４００は、プロセッサ４０２に本方法のステップを行うように指示するコードを含み得る。
【００５３】
[0057]  本明細書で述べる様々なソフトウェアコンポーネントは、図４に示すように、有形コンピュータ可読ストレージ媒体４００に保存され得る。例えば、有形コンピュータ可読ストレージ媒体４００は、システム内に存在するハードウェア及びソフトウェアコンポーネントに基づいてシステムのタイプを検出し得るシステム分析器４０６を含み得る。幾つかの実施形態では、ユーザインタフェース選択器４０８は、システムのタイプに基づいて実行するユーザインタフェースマネージャを決定し得る。幾つかの実施形態では、ユーザインタフェース生成器４１０は、システムのユーザインタフェースを生成するためにユーザインタフェースマネージャの上記タイプを実行することができ、このユーザインタフェースマネージャのタイプは、ユーザインタフェースのレイアウトを示すための複数のルールを有する。
【００５４】
[0058]  特定のアプリケーションに応じて、有形コンピュータ可読ストレージ媒体４００内に、図４に示されない任意の数の追加のソフトウェアコンポーネントが含まれ得ることが理解されるものとする。
【００５５】
[0059]  図５は、ユーザインタフェースマネージャ内でユーザインタフェースマネージャをホスティングするためのシステム例のブロック図である。幾つかの実施形態では、複数のユーザインタフェースマネージャは、同時にアクティブになることが可能であり、並びにシステムは、システムの状態及び任意の数のルールに基づいて、これらのユーザインタフェースマネージャの１つ又は複数間でモーフィングし得る。幾つかの例では、ユーザインタフェースマネージャは、同時に表現されることも可能であり、その場合、複数のユーザインタフェースマネージャが互いに独立して使用される。例えば、デスクトップＰＣなどのデバイスのユーザインタフェースは、より効率的にタブレットモードへと、及びタブレットモードからモーフィングし得る。幾つかの例では、モーフィングが可能となるようにこれらのエクスペリエンスにおいてホスティングされる要素を理解し、及び表現するグローバルデータモデル及びビューモデルが存在する。
【００５６】
[0060]  図５に示すように、ユーザインタフェースホスト５００は、システムのタイプに基づいて実行するユーザインタフェースマネージャを決定するためにシステム分析器１４２によって使用及び解釈され得る、製品ポリシー、並びに表示及び入力ポリシー５０２などのルールを含み得る。ユーザインタフェースホスト５００は、製品ポリシー、表示及び入力ポリシー５０２、及びシステムの状態に基づいて、ビジュアルツリー５０４を生成し得る。ビジュアルツリー５０４は、ルートビジュアル５０６、ユーザインタフェースマネージャ１（５０８）、ユーザインタフェースマネージャ２（５１０）、及びユーザインタフェースマネージャ３（５１２）を含み得る。ルール及びシステムの状態に応じて、ユーザインタフェースを生成するために、ユーザインタフェースマネージャ１（５０８）、ユーザインタフェースマネージャ２（５１０）、又はユーザインタフェースマネージャ３（５１２）の何れかが使用され得る。ユーザインタフェースホスト５００が、それぞれが１つ若しくは複数のユーザインタフェースマネージャ、又はユーザインタフェースマネージャ自体が他のユーザインタフェースマネージャをカプセル化し得る状況を有する複数のビジュアルルートを作成する代替実施形態が存在する。
【００５７】
[0061]  ある実施形態では、図５のユーザインタフェースホスト５００は、ツーインワンポータブルコンピュータ用のユーザエクスペリエンスを提示することが可能なユーザインタフェースホストを表し得る。キーボードを取り付け、且つアクティブにすると、このようなデバイスは、従来のラップトップコンピュータのように挙動するが、キーボードを取り外すと、同じデバイスがタブレットコンピュータのように挙動する。ユーザインタフェースホスト５００は、特に、キーボードがアクティブであるとき、又はアクティブではないときを決定するためにシステム分析器４０６を使用する。キーボードがアクティブであるとユーザインタフェースホスト５００が決定すると、ユーザインタフェースホスト５００は、ユーザインタフェースマネージャ５０８を有効にする。前述の通り、ユーザインタフェースマネージャ５０８は、ラップトップコンピュータのユーザに適したユーザエクスペリエンスを生じさせるために、ユーザインタフェース生成器４１０と共に複数のルールを使用する。このようなユーザエクスペリエンスは、アプリケーションのオーバーラップするウィンドウの使用、並びに特にマウス及びキーボードの使用に最適化されたユーザエクスペリエンスを含み得る。
【００５８】
[0062]  後で、ユーザは、キーボードを取り外す（これは、キーボードがもはやアクティブではないことをシステム分析器４０６に認識させ、及びユーザインタフェースマネージャ５０８がもはやユーザに提示する正しいエクスペリエンスではないことをユーザインタフェースホスト５００に決定させる）などのアクションを行い得る。ここに記載する能力により、ユーザインタフェースホスト５００は、システムとインタラクトするユーザの能力に影響を与えることなく、よりタブレットに適したエクスペリエンスを表現するユーザマネージャ５１０へとユーザマネージャ５０８をモーフィングさせることが可能となる。タブレットモードエクスペリエンスは、オーバーラップするウィンドウの使用を単一の全画面エクスペリエンス及び特にタッチ使用に最適化されたユーザエクスペリエンスに置き換え得る。本明細書で言及されるように、モーフィングのプロセスは、全て、ユーザ入力をサポートするため、又は他のタスクを行うためのタイトルバー３１０又はタイトルバー３１２などのコンポーネント化ビジュアル要素の能力を維持しながら、アニメーション技術などを使用した、システムのあるビジュアル状態から別のビジュアル状態への滑らかなビジュアル移行を示唆する。このような実施形態の１つでは、これは、トップレベルアプリケーションビジュアル及びシステム全体を通して提示される他の主要ビジュアルコンポーネントの状態に関する情報の中央集中リポジトリを備えることによって達成される。このリポジトリに保存されたこの状態は、これらのトップレベルアプリケーションビジュアル及び他の要素を提示するために各ユーザインタフェースマネージャによって使用されるルール及び情報から独立している。リポジトリ内のこの状態情報の一部は、これらのビジュアル要素と、それらをスクリーン上に示す責任を負うユーザインタフェースマネージャとの間に存在する関連性である。キーボードがもはやアクティブではないことをシステム分析器４０６が決定し、及びユーザインタフェースマネージャ５０８がユーザインタフェースマネージャ５１０に置き換えられることを示すことによってユーザインタフェースホスト５００が応答すると、この状態リポジトリ内の情報、及びユーザインタフェースマネージャとのゆるい結合の組み合わせにより、ユーザインタフェースマネージャ５１０へのユーザインタフェースマネージャ５０８の迅速且つ効率的な置き換えが可能となる。加えて、アニメーション及び他の挙動のルールを同時に解釈するためのユーザインタフェース生成器４１０の使用は、ユーザインタフェースマネージャ５０８からユーザインタフェースマネージャ５１０へのビジュアル及び入力の滑らかな移行をもたらす。トップレベルアプリケーションビジュアルのための共通状態リポジトリの使用などの、ここで呼び出される方法及び技術は、単なる例であり、並びに他の実施形態は、同様の効果を得るために、異なるアプローチや、ハードウェア及びソフトウェアの異なる組み合わせを用い得ることが分かる。
【００５９】
[0063]  代替実施形態では、ユーザインタフェースホスト５００は、ユーザインタフェースマネージャが再帰的に互いに埋め込まれる環境を生じさせることが可能となる。オーバーラップするウィンドウを使用し、及び仮想デスクトップパラダイムを含む従来のデスクトップコンピュータを考察する。仮想デスクトップは、ユーザが別のデスクトップを作成することを可能にする、多くの近代オペレーティングシステムユーザエクスペリエンスの１つの特徴である。この場合、ユーザは、異なるタスクを分離する方法として、これらのデスクトップをそれぞれ切り替えることができる。例えば、ユーザは、あるプロジェクトに関連した仕事関連アプリケーションを管理するためのあるデスクトップ、別のプロジェクト用の仕事関連アプリケーションを管理するための別のデスクトップ、及び私生活に関連したアプリケーションを管理するための別のデスクトップを使用し得る。多くの場合、このような仮想デスクトップの実施は、各仮想デスクトップ上で、デスクトップ背景などの異なるカスタマイズを適用することを可能にする。幾つかの例では、それらは、相互排他的であり、これは、仕事用仮想デスクトップ及び個人用仮想デスクトップの両方を同時に見ることはできないことを意味する。図５及びユーザインタフェースホスト５００に戻り、ユーザインタフェースマネージャ５０８、５１０、及び５１２の各インスタンスが、デスクトップエクスペリエンスを表現する適宜のルールセットを用いてユーザインタフェース生成器４１０によって構成されることを考察する。次に、ユーザによって、ユーザインタフェースマネージャ５０８が第１の仕事プロジェクト用のアプリケーションと関連付けられ、ユーザインタフェースマネージャ５１０が第２の仕事プロジェクト用のアプリケーションと関連付けられ、及びユーザインタフェースマネージャ５１２が第３の仕事プロジェクト用のアプリケーションと関連付けられると仮定する。上述の例に記載したような技術を使用して、ユーザの選択に応じて適宜のユーザインタフェースマネージャ５０８、５１０、又は５１２を提示するために、システム分析器４０６によって提供されるユーザフィードバックをユーザインタフェースホスト５００が使用することが可能である。この機能性は、仮想デスクトップ実施にマッチする。
【００６０】
[0064]  ある実施形態では、ユーザインタフェースマネージャ５１０がデスクトップエクスペリエンスの独立したインスタンスである（これ自体が、ユーザインタフェースマネージャ５０８及び５１２から分離している）という事実により、ユーザが、ユーザインタフェースマネージャ５０８、５１０、及び５１２の任意の組み合わせを同時にユーザに提示させることを可能にする。これにより、例えば、ユーザがユーザインタフェースマネージャ５０８及びユーザインタフェースマネージャ５１０の両方を同時に示し、及びそれらとインタラクトすることが可能となり、ユーザが両デスクトップエクスペリエンスと同時にインタラクトすることが可能となる。このようなこのエクスペリエンスの実施形態の１つは、ユーザマネージャ５０８内で、別個のオーバーラップウィンドウとして、ユーザマネージャ５１０をホスティングすることを可能にする。同様に、個人情報を含んでいるユーザインタフェースマネージャ５１２は、ユーザエクスペリエンスマネージャ５０８によってウィンドウでホスティングされ得る。このような構成では、図５に示すようなルートビジュアル５０６と、ユーザインタフェースマネージャ５１０及び５１２との間の接続が除去され、並びにそれらは、代わりに、ユーザインタフェースマネージャ５０８の子として接続される。前述したような技術を使用して、ユーザインタフェースマネージャ５１０及び５１２は、それらがユーザインタフェースマネージャ５０８の下でホスティングされるため、滑らかにそれらのエクスペリエンスを適切にモーフィングすることが可能となるであろう。
【００６１】
[0065]  ある代替実施形態では、システム４００は、システム分析器、並びに他の適宜のハードウェア及びソフトウェアアフォーダンスにより、システムの区分化を生じさせるために、図１に示すような入力デバイス１２６及び出力デバイス１３０の異なる関連性を生じさせることが可能となり得る。例えば、４つの入力デバイス１２６（２つのマウス及び２つのキーボードなど）、並びに取り付けられた２つの出力デバイス１３０（コンピュータモニタなど）を備えたデスクトップコンピュータを考察する。これらのハードウェア及びソフトウェアアフォーダンスを使用して、システムは、マウス、キーボード、及びモニタの２つの異なる群に区分することができる。これらの区分のそれぞれは、システム分析器４０６を介してユーザインタフェースホスト５００に可視となるであろう。ユーザインタフェースホスト５００によって提供されるアフォーダンスを使用して、別個のユーザエクスペリエンスをこれらの区分のそれぞれと関連付けることができる。例えば、ユーザインタフェースホスト５００は、ユーザインタフェース５０８を第１の区分と関連付け、及びユーザインタフェース５１０を第２の区分と関連付けることにより、１人又は複数のユーザがこれらのユーザインタフェースと同時にインタラクトすることが可能となり得る。
【００６２】
[0066]  本明細書に記載のこれらの例のそれぞれにおいて、ユーザインタフェースホスト５００がこれらの構成においてユーザエクスペリエンス５０８及び５１０を同時に示すことができる環境を生じさせることができる（これは、ユーザエクスペリエンス５０８及び５１０を相互排他的に示すために必要とされる環境と異なるものでなくてもよい）。ユーザインタフェースマネージャ及びユーザインタフェース生成器の使用により、これらの状況の複雑さを生じさせ、且つそれを管理する負担は、効果的に大幅に単純化されており、より大きな全体的エクスペリエンスのコンポーネントとしてのシステムユーザエクスペリエンス全体の再利用を可能にする。さらに、本明細書で用いた例は、いかなる形式又は機能にも限定されないことが分かる。ある代替実施形態では、ユーザインタフェースマネージャ５０８、５１０、及び５１２は、全てが同じエクスペリエンスであるのではなく、デスクトップエクスペリエンス、ゲーム機エクスペリエンス、及びメディア室エンターテイメントエクスペリエンスなどの異なる別のエクスペリエンスを表し得る。
【００６３】
例１
[0067]  ある実施形態では、システム内に存在する、又はシステムに結合されたハードウェアコンポーネントに基づいて、システムのタイプを検出するプロセッサを含むユーザインタフェースを生成するシステム。プロセッサは、システムのタイプに基づいて、実行するユーザインタフェースマネージャを決定し、及びシステムのユーザインタフェースを生成するためにユーザインタフェースマネージャを実行することもでき、ユーザインタフェースマネージャは、ユーザインタフェースのレイアウトを示すための複数のルールを有する。
【００６４】
[0068]  代替的又は追加的に、ユーザインタフェースは、少なくとも１つのアクティブアプリケーション及び少なくとも１つの可視アプリケーションを含み得る。代替的又は追加的に、システムのタイプは、モバイルシステム、ゲーム機システム、拡張現実システム、タブレットシステム、又はデスクトップシステムを含む。代替的又は追加的に、プロセッサは、ユーザインタフェースマネージャに対応する少なくとも１つの表示特徴に基づいて、ユーザインタフェースを表示するものである。代替的又は追加的に、ユーザインタフェースマネージャは、少なくとも２つの下位ユーザインタフェースマネージャを管理するものであり、少なくとも２つの下位ユーザインタフェースマネージャのそれぞれは、別個のアプリケーションを実行するものである。代替的又は追加的に、ユーザインタフェースマネージャは、エクスペリエンスをサポートするシェルアプリケーションを管理するものでもある。代替的又は追加的に、ユーザインタフェースマネージャは、エクスペリエンスをサポートするシェルエクスペリエンスホストを管理するものでもある。代替的又は追加的に、プロセッサは、入力デバイスがシステムに結合されていることを検出し、及び入力デバイスに基づいて新しいユーザインタフェースマネージャを生成するものである。代替的又は追加的に、入力デバイスは、ゲームコントローラであり、及び新しいユーザインタフェースマネージャは、ゲーム機ユーザインタフェースを提供するものである。代替的又は追加的に、プロセッサは、ユーザインタフェースマネージャから新しいユーザインタフェースマネージャへの移行に応答して、ユーザインタフェースの状態を保存するものである。
【００６５】
例２
[0069]  本明細書に記載の別の実施形態では、ユーザインタフェースを生成する方法は、システム内に存在する、又はシステムに結合されたハードウェアコンポーネントに基づいて、システムのタイプを検出することを含み得る。この方法は、システムのタイプに基づいて、実行するユーザインタフェースマネージャを決定すること、及びシステムのユーザインタフェースを生成するためにユーザインタフェースマネージャを実行することも含んでもよく、ユーザインタフェースマネージャは、ユーザインタフェースのレイアウトを示すための複数のルールを有する。
【００６６】
[0070]  代替的又は追加的に、ユーザインタフェースは、少なくとも１つのアクティブアプリケーション及び少なくとも１つの可視アプリケーションを含み得る。代替的又は追加的に、システムのタイプは、モバイルシステム、ゲーム機システム、拡張現実システム、タブレットシステム、又はデスクトップシステムを含む。代替的又は追加的に、この方法は、ユーザインタフェースマネージャに対応する少なくとも１つの表示特徴に基づいて、ユーザインタフェースを表示することを含み得る。代替的又は追加的に、ユーザインタフェースマネージャは、少なくとも２つの下位ユーザインタフェースマネージャを管理するものであり、少なくとも２つの下位ユーザインタフェースマネージャのそれぞれは、別個のアプリケーションを実行するものである。代替的又は追加的に、ユーザインタフェースマネージャは、エクスペリエンスをサポートするシェルアプリケーションを管理するものでもある。代替的又は追加的に、ユーザインタフェースマネージャは、エクスペリエンスをサポートするシェルエクスペリエンスホストを管理するものでもある。代替的又は追加的に、この方法は、入力デバイスがシステムに結合されていることを検出すること、及び入力デバイスに基づいて新しいユーザインタフェースマネージャを生成することを含み得る。代替的又は追加的に、入力デバイスは、ゲームコントローラであり、及び新しいユーザインタフェースマネージャは、ゲーム機ユーザインタフェースを提供するものである。代替的又は追加的に、この方法は、ユーザインタフェースマネージャから新しいユーザインタフェースマネージャへの移行に応答して、ユーザインタフェースの状態を保存することを含み得る。
【００６７】
例３
[0071]  本明細書に記載のさらに別の実施形態では、ユーザインタフェースを生成するシステムは、プロセッサと、プロセッサによる実行に応答して、システム内に存在する、又はシステムに結合されたハードウェアコンポーネントに基づいて、システムのタイプを検出すること、及びシステムのタイプに基づいてユーザインタフェースマネージャのビジュアルツリーから実行するユーザインタフェースマネージャを選択することをプロセッサに行わせる複数の命令を保存するストレージデバイスとを含んでもよく、ビジュアルツリーは、ユーザインタフェースホスト内に存在するものである。複数の命令は、システムのユーザインタフェースを生成するために選択されたユーザインタフェースマネージャを実行することをプロセッサに行わせることもでき、選択されたユーザインタフェースマネージャは、ユーザインタフェースのレイアウトを示すための複数のルールを有する。
【００６８】
[0072]  代替的又は追加的に、ユーザインタフェースは、少なくとも１つのアクティブアプリケーション及び少なくとも１つの可視アプリケーションを含み得る。代替的又は追加的に、システムのタイプは、モバイルシステム、ゲーム機システム、拡張現実システム、タブレットシステム、又はデスクトップシステムを含む。代替的又は追加的に、複数の命令は、ユーザインタフェースマネージャに対応する少なくとも１つの表示特徴に基づいて、ユーザインタフェースを表示することをプロセッサに行わせ得る。代替的又は追加的に、ユーザインタフェースマネージャは、少なくとも２つの下位ユーザインタフェースマネージャを管理するものであり、少なくとも２つの下位ユーザインタフェースマネージャのそれぞれは、別個のアプリケーションを実行するものである。代替的又は追加的に、ユーザインタフェースマネージャは、エクスペリエンスをサポートするシェルアプリケーションを管理するものでもある。代替的又は追加的に、ユーザインタフェースマネージャは、エクスペリエンスをサポートするシェルエクスペリエンスホストを管理するものでもある。代替的又は追加的に、複数の命令は、入力デバイスがシステムに結合されていることを検出すること、及び入力デバイスに基づいて新しいユーザインタフェースマネージャを生成することをプロセッサに行わせ得る。代替的又は追加的に、入力デバイスは、ゲームコントローラであり、及び新しいユーザインタフェースマネージャは、ゲーム機ユーザインタフェースを提供するものである。代替的又は追加的に、複数の命令は、ユーザインタフェースマネージャから新しいユーザインタフェースマネージャへの移行に応答して、ユーザインタフェースの状態を保存することをプロセッサに行わせ得る。
【００６９】
[0073]  特に、及び上記のコンポーネント、デバイス、回路、システムなどによって行われる様々な機能に関して、このようなコンポーネントを表現するために使用される用語（「手段」への言及を含む）は、別段の記載のない限り、記載されたコンポーネントの指定の機能を行うどのようなコンポーネント（例えば、開示した構造とは構造的に同等ではないとしても、クレームされた特定事項の本明細書に示した例示的局面においてその機能を行う機能的均等物）にも対応することが意図される。この点において、この革新技術が、システム、並びにクレームされた特定事項の様々な方法の動作及びイベントを行うためのコンピュータ実行可能命令を備えたコンピュータ可読ストレージ媒体を含むことも認識されるだろう。
【００７０】
[0074]  アプリケーション及びサービスが本明細書に記載の技術を使用することを可能にする、例えば、適宜のＡＰＩ、ツールキット、ドライバコード、オペレーティングシステム、制御部、スタンドアロン型又はダウンロード可能ソフトウェアオブジェクトなどのクレームされた特定事項を実施する複数のやり方が存在する。クレームされた特定事項は、ＡＰＩ（又は他のソフトウェアオブジェクト）の観点から、及び本明細書に記載の技術に従って動作するソフトウェア又はハードウェアオブジェクトの観点から使用を企図する。従って、本明細書に記載のクレームされた特定事項の様々な実施は、完全にハードウェア、部分的にハードウェア及び部分的にソフトウェア、並びにソフトウェアの局面を備え得る。
【００７１】
[0075]  上述のシステムは、幾つかのコンポーネント間のインタラクションに関して説明を行った。このようなシステム及びコンポーネントは、これらのコンポーネント又は指定されたサブコンポーネント、指定されたコンポーネント又はサブコンポーネントの一部、及び追加のコンポーネントを、並びに上記の様々な変更及び組み合わせに従って含み得ることが分かるだろう。サブコンポーネントは、親コンポーネント内に含まれる（階層的）のではなく、他のコンポーネントと通信可能に結合されたコンポーネントとしても実施され得る。
【００７２】
[0076]  加えて、１つ又は複数のコンポーネントが、集約的機能性を提供する単一コンポーネントにまとめられてもよく、又は幾つかの別個のサブコンポーネントに分割されてもよく、及び管理層などの任意の１つ又は複数の中間層が、統合機能性を提供するために、このようなサブコンポーネントに通信可能に結合するように設けられてもよいことが留意され得る。本明細書に記載の何れのコンポーネントも、本明細書に具体的に記載されないが、一般的に当業者に知られている１つ又は複数の他のコンポーネントとインタラクトすることも可能である。
【００７３】
[0077]  加えて、クレームされた特定事項のある具体的な特徴を幾つかの実施の１つについて開示したかもしれないが、このような特徴は、所与のアプリケーション又は特定のアプリケーションに関して望まれ得るように、及び有利となり得るように、他の実施の１つ又は複数の他の特徴と組み合わせられ得る。さらに、「含む（includes）」という用語、「含んだ（including）」という用語、「備える（has）」という用語、「包含する（contains）」という用語、これらの変形形態、及び他の類似の語が、詳細な説明又は特許請求の範囲で使用される限り、これらの用語は、どのような追加又は他の要素も排除することなく、オープンな移行語としての「有する（comprising）」という用語と同様に包含的であることが意図される。
【図１】
2020529055.tif 000003
【図２】
2020529055.tif 000004
【図３】
2020529055.tif 000005
【図４】
2020529055.tif 000006
【図５】
2020529055.tif 000007
【国際調査報告】
2020529055.tif 000008
2020529055.tif 000009