(57)【要約】  サービス提供ユーザインターフェースシェル（ＵＩＳ）（１１６）と連携する、提示ユーザインターフェースシェル（ＵＩＳ）（１１４）を提示する方法を容易にする一組の具現化されたアプリケーションプログラムインターフェース（１１２）を提供する。この方法は、１つまたは複数のタスクが完了することを示すデータを受信すること、前記１つまたは複数のタスクの完了を調整すること、および前記提示ＵＩＳ（１１４）に制御権を返すことを含む。
2009505235.tif 000002
【特許請求の範囲】
【請求項１】
サービス提供ＵＩＳ（１１６）と連携する提示ユーザインターフェースシェル（ＵＩＳ）（１１４）のコンポーネントを提示する方法を容易にする１つまたは複数のコンピュータ可読媒体上に具現化される１つまたは複数のアプリケーションプログラムインターフェース（「ＡＰＩ」と総称する）（１１２）の一組のアプリケーションプログラムインターフェースであって、前記方法は、
完了すべき１つまたは複数のタスクを示すデータを受信するステップと、
前記１つまたは複数のタスクの前記完了を調整するステップと、
制御権を前記提示ＵＩＳ（１１６）に返却するステップと
を備えることを特徴とするＡＰＩ。
【請求項２】
調整するステップは、
前記サービス提供ＵＩＳ（１１６）に結合される１つまたは複数のアプリケーション（１２４）に一組のコマンドを発行するステップと、
前記一組のコマンドを発行することに関連して１つまたは複数のアプリケーション（１２４）から返却データを受信するステップと
を含むことを特徴とする請求項１に記載のＡＰＩ（１１２）。
【請求項３】
前記１つまたは複数のタスクは、
ソフトウェアアプリケーション（１２４）から返却された返却データを処理してユーザへ前記返却データに基づいて提示を描写するステップと、
前記提示ＵＩＳ（１１４）が前記サービス提供ＵＩＳ（１１６）に命令してアプリケーションを起動させることを可能にするステップと、
前記提示ＵＩＳ（１１４）がアプリケーションへの参照を指定することを可能にするステップと、
前記提示ＵＩＳ（１１４）が環境パラメータを指定することを可能にするステップと、
前記サービス提供ＵＩＳ（１１６）の態様を制御するステップと、
前記クライアントＵＩＳへの追加ＡＰＩ用のコールバックルーチンを容易にするステップと、
前記サービス提供ＵＩＳ（１１６）と互換性のあるアプリケーションを列挙するステップと、
前記互換性のあるアプリケーションに関連付けられる１つまたは複数の属性に基づいて前記互換性のあるアプリケーションをフィルタリングするステップと、
前記提示ＵＩＳ（１１４）が前記サービス提供ＵＩＳ（１１６）の機能的態様を補う方法を提供するステップと、
前記サービス提供ＵＩＳ（１１６）と前記提示ＵＩＳ（１１４）との間の１つまたは複数のシステムリソースの使用をネゴシエートするステップと、
前記提示ＵＩＳ（１１４）の提示変更が生じるときにメディア・エクスペリエンスの持続的提示を提供するステップと、
アプリケーション起動ルーティングに関連付けられている初回実行エクスペリエンス（ｆｉｒｓｔ−ｒｕｎ  ｅｘｐｅｒｉｅｎｃｅ）を容易にするステップ、
からの少なくとも１つのセクションを含むことを特徴とする請求項２に記載のＡＰＩ（１１２）。
【請求項４】
前記提示ＵＩＳ（１１４）がアプリケーションへの参照を指定することを可能にするステップは、前記アプリケーションのロケーションを指定することを含み、
前記環境パラメータは、ウィンドウを最小化するか、最大化するか、モーダルか、サイズ変更可能か、または与えられたサイズにするかどうかを含むウィンドウモード属性、オブジェクトを提示する画面ロケーション、のうちの１つまたは複数を含むことを特徴とする請求項３に記載のＡＰＩ（１１２）。
【請求項５】
前記サービス提供ＵＩＳ（１１６）の態様を制御するステップは、アイテムをサイズ変更すること、アイテムの視覚的属性を変更すること、および／またはＵＲＬを含む代替参照を指定することを含むことを特徴とする請求項３に記載のＡＰＩ（１１２）。
【請求項６】
１つまたは複数の属性に基づいて前記互換性のあるアプリケーションをフィルタリングするステップは、他のリソースに対する依存関係に基づいて前記アプリケーションをフィルタリングすることを含み、前記他のリソースは周辺機器デバイスまたは他のアプリケーションの１つまたは複数を有することを特徴とする請求項３に記載のＡＰＩ（１１２）。
【請求項７】
メディア・エクスペリエンスの持続的提示を提供するステップは、
スライドショーの提示と、
カメラフィードの提示を含むビデオの提示と、
オーディオの提示と、
データの提示と
のうちの１つまたは複数の持続を提供することを含むことを特徴とする請求項３に記載のＡＰＩ（１１２）。
【請求項８】
初回実行エクスペリエンスを容易にするステップは、
メディア・プログラミング・ガイドを初期化すること、
リソースデバイスを構成すること、
のうちの１つまたは複数を含むことを特徴とする請求項３に記載のＡＰＩ（１１２）。
【請求項９】
コンピュータネットワーク上のデスティネーションと請求項１のＡＰＩ（１１２）との間の電子的通信を容易にするように構成されることを特徴とするコンピュータコンポーネント。
【請求項１０】
前記電子的通信は、ダウンロードを含み、前記ネットワークは、インターネットの少なくとも一部を含むことを特徴とする請求項９に記載のコンピュータコンポーネント。
【請求項１１】
第２のユーザインターフェースシェル（ＵＩＳ）（１１６）で第１のグラフィカルユーザインターフェースシェル（ＵＩＳ）（１１４）をサービスするステップを含む方法を実行するコンピュータ使用可能命令を有することを特徴とする１つまたは複数のコンピュータ可読媒体。
【請求項１２】
前記第１のグラフィカルＵＩＳ（１１４）は、クライアントＵＩＳであり、
前記第２のＵＩＳは、サービス提供ＵＩＳ（１１６）であり、
前記第１のＵＩＳ（１１４）は、前記第２のＵＩＳ（１１６）によるサービスを受け、
サービスするステップは、
（１）前記クライアントＵＩＳの提示を容易にするステップと、
（２）前記クライアントＵＩＳに従って入力を受信し、前記入力は１つまたは複数の所望のタスクが完了されるべきであることを示すステップと、
（３）前記サービス提供ＵＩＳ（１１６）と相互にやり取りすることにより前記１つまたは複数の所望のタスクを完了するステップと
を含むことを特徴とする請求項１１に記載の媒体。
【請求項１３】
完了するステップは、前記受信した入力に基づいて１つまたは複数のコマンドを前記サービス提供ＵＩＳ（１１６）に伝達するステップを含むことを特徴とする請求項１２に記載の媒体。
【請求項１４】
前記伝達するステップは、前記受信した入力に基づくデータを前記サービス提供ＵＩＳ（１１６）に渡すステップを含むことを特徴とする請求項１３に記載の媒体。
【請求項１５】
さらに、
前記サービス提供ＵＩＳ（１１６）から返されるデータを受信するステップと、
前記受信したデータに基づいて情報を提示するステップと
を含むことを特徴とする請求項１２に記載の媒体。
【請求項１６】
請求項１１のコンピュータ使用可能命令のコピーを第１のロケーションから第２のロケーションへ伝達することを容易にすることを特徴とするシステム。
【請求項１７】
１つまたは複数のコンピューティングデバイスとの相互のやり取りを容易にする方法を実行するように具現化されたコンピュータ使用可能命令を有する１つまたは複数のコンピュータ使用可能媒体であって、前記方法はサービス提供ＵＩＳ（１１６）に関連してクライアントユーザインターフェースシェル（ＵＩＳ）（１１４）の提示を提供するステップを備えることを特徴とするコンピュータ使用可能媒体。
【請求項１８】
サービスするステップは、
前記クライアントＵＩＳ（１１４）を前記コンピューティングデバイス（１１８）のうちの少なくとも１つに提示するステップと、
前記クライアントＵＩＳ（１１４）に従って入力を受信するステップと、
前記クライアントＵＩＳ（１１４）が前記サービス提供ＵＩＳ（１１６）と相互にやり取りすることにより１つまたは複数のタスクを完了するステップと
を含むことを特徴とする請求項１７に記載の媒体。
【請求項１９】
１つまたは複数のタスクを完了するステップは、データを前記クライアントＵＩＳ（１１４）から前記サービス提供ＵＩＳ（１１６）に伝達するステップを含み、前記クライアントＵＩＳ（１１４）は前記データを参照し、前記サービス提供ＵＩＳ（１１６）に結合された一組のリソースと通信して前記１つまたは複数のタスクを完了することを特徴とする請求項１８に記載の媒体。
【請求項２０】
前記クライアントＵＩＳ（１１４）は、第１のデバイス上に常駐し、前記第２のデバイス上に常駐する前記サービス提供ＵＩＳ（１１６）によるサービスを受け、前記第１のデバイスは、ネットワークにより前記第２のデバイスに結合されることを特徴とする請求項１８に記載の媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
パーソナルコンピュータ（コンピューティングデバイスのアレイを考察するために本明細書で使用される）は、オフィスはもちろん、それ以上に家庭のリビングルームにふさわしいデバイスへと発展し続けている。例えば、ＰＣの一般的な用途は、ＰＶＲ（パーソナルビデオレコーダ）として知られるＤＶＲ（デジタルビデオレコーダ）として使用することである。このような形で使用されるＰＣは、興味のあるテレビ番組などのメディア番組を後から再生するために録画したり、または外部デバイスにダウンロードすることができる。用途を広げていく、コンピュータに関連する進化的側面の１つに、そのユーザインターフェース（ＵＩ）の進化がある。
【背景技術】
【０００２】
従来、コンピュータは、２フィートＵＩ（長さ約６１ｃｍ）と本明細書で呼ばれるＵＩ、つまり近接ＵＩと情報のやり取りを行ってきた。２フィートＵＩは、コンピュータ画面から、約２フィート（６１ｃｍ）離れている、またはほぼ腕の長さ分だけ離れているユーザに関連して使用されるように設計されている。コンピュータ用に設計されたグラフィカルユーザインターフェース（ＧＵＩ）のほとんどすべては、２フィートＵＩである。しかし近年、１０フィートＵＩ（長さ約３ｍ）というアイデアが具体化した。１０フィートＵＩを使用すると、さらに遠い距離−テレビを見る距離程度−からコンピュータとの情報のやり取りが容易になる。このＵＩのタイプに対する他の記述的用語として、「遠隔ユーザインターフェース（Ｄｉｓｔａｎｃｅ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）」（ＤＵＩ）がある。もちろん、「１０フィートＵＩ」または「ＤＵＩ」という用語は、ちょうど１０フィート（３ｍ）のところにあるコンピュータと相互にやり取りすることを考慮しておらず、むしろ、ほぼテレビ視聴距離のところからＰＣを操作するという概念を記述するために本明細書では使用される。
【０００３】
このようなＤＵＩの一実施例は、名称「User Interface for Operating a Computer From A Distance」の同時係属出願第１０／１７４，６１９号において説明されている。他のこのようなシステムの一実施例およびその相互のやり取りは、名称「User Friendly Remote System Interface」の米国特許第６，３１３，８５１号および名称「User-Friendly Remote System Interface With Menu Highlighting」の米国特許第６，８９８，７６５号において説明されている。これらの参考文献それぞれは、参照により本明細書に明示的に組み込まれている。
【０００４】
ユーザインターフェースシェル（ＵＩＳ）は、ユーザへのデータの提示を制御するために様々なアプリケーション（コンピュータのオペレーティングシステムを含む）と相互にやり取りする環境の一種である。一般に、１０フィートＵＩアプリケーションは、１０フィートＵＩを提示するシステムと互換性があるわけではない。２フィートＵＩに関連して動作するように構成される必要があるのとまったく同様に、アプリケーションは、１０フィートＵＩに関連して動作するように構成されなければならない。このような構成は、ソフトウェアおよびＵＩ開発者の両方にとって特に問題となる可能性がある。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
これが問題である理由の１つは、相互運用性を保証することに関連している。つまり、ＵＩは、所望のアプリケーションとの互換性を有していなければならない。ソフトウェアベンダは、アプリケーションに関連付けられているデータを提示するために使用されることになっているＵＩとの互換性を自分達のアプリケーションに持たせなければならない。相互にやり取りすべきシェルが多いほど、ソフトウェアベンダが多数の人々により使用できるアプリケーションを開発する際に直面する負担が増大する。
【０００６】
この課題に対し可能性のある解決策の１つは、単一のＵＩ、本明細書で規定しているように、単一の１０フィートＵＩのみを備えることである。このシナリオは、独立系ソフトウェアベンダ（ＩＳＶ）にとっては重要なものとなる。なぜならば、彼らは、単一の１０フィートＵＩのみと相互にやり取りするように自分達のアプリケーションをプログラムする必要があるからである。しかし、このシナリオには、他のソフトウェアベンダ、特に、代替ＵＩシェル（第１シェル、またはデフォルトのシェルの代替）を開発することに従事しているベンダにとって遺憾な点が多い。特定のソフトウェアベンダが、カスタマイズされた１０フィートＵＩを備えることを望む場合がある。しかし、カスタマイズされた１０フィートＵＩを開発することを望むその企業は、本発明がなければ、そのＵＩが他の様々なソフトウェアベンダにより提供される様々な製品との互換性を有することを保証する厄介な仕事に直面する。
【０００７】
さらに、ベンダが、代替１０フィートＵＩＳなどの代替ＵＩＳを独立に開発しようとした場合には、機能、ブランドなどでそのシェルをカスタマイズすることができるだろうけれども、ＵＩＳ（他のアプリケーションおよびハードウェアデバイスなどと通信する）のタスクすべてを実行できる必要がある。このような試みは、資源集約的であるだけでなく、市場によってどれだけ受け入れられ、様々なハードウェアおよびソフトウェア製品とどの程度互換性があるかについて、かなりの不確定性を伴う。現行技術は、とりわけ、完全相互運用性を持つＵＩを開発することに関連する負担を担うことなく所望のソフトウェアベンダがカスタマイズされた１０フィートＵＩを実現することができる方法およびシステムを提供することによって、改善することが可能であろう。
【課題を解決するための手段】
【０００８】
本発明の実施形態は、とりわけ、第１のＵＩＳを使用して第２のＵＩＳをサービスすることにより、１つまたは複数のコンピューティングデバイスとの相互のやり取りを容易にするシステムおよび方法を提供することで、少なくとも上記の問題点を解決する。本発明は、クライアント／サーバのタイプまたは関係をユーザインターフェースに拡大適用する。本発明は、ＵＩシェルの開発を容易にすること、およびそれにより、動作しているコンピューティングシステムで代替ＵＩシェルを利用できるようにすることに関連する資源を低減することを含む当業のいくつかの実用的応用を有する。
【０００９】
第１の例示的な態様において、サービス提供ユーザインターフェースシェル（ＵＩＳ）と連携する提示ＵＩ（presented UI）を提示する方法を容易に実行できるようにするアプリケーションプログラムインターフェース（ＡＰＩ）（複数のコンポーネントインターフェースから構成することができる）が備えられる。この方法は、タスクが完了することを示すデータを受信すること、タスクの完了を調整すること、および提示ＵＩに制御権を返却することを含む。
【００１０】
第２の例示的な態様において、本発明の一実施形態は、第２のＵＩＳで第１のグラフィカルＵＩＳをサービスすることを含むコンピュータ実装方法の形態をとる。第１のＵＩＳは、クライアントＵＩＳとすることができ、第２のＵＩＳは、サービス提供ＵＩＳであり、第１のＵＩＳは、第２のＵＩＳによるサービスを受ける。
【００１１】
第３の例示的な一態様では、本発明の一実施形態は、第２のＵＩ環境で第１のＵＩ環境をサービスすることを含む。
【００１２】
第４の例示的な一態様では、本発明の一実施形態は、少なくとも２つのＵＩシェルを有する１つまたは複数のコンピューティングデバイスとの相互のやり取りを容易にする方法を実行するためのコンピュータプログラム製品である。この方法は、ユーザには提示されない第１のＵＩＳを使用して、ユーザに提示される第２のＵＩＳをサービスすることを含む。
【００１３】
最後の例示的な一態様では、本発明の一実施形態は、非表示ＵＩＳによるサービスを受ける１つまたは複数のコンピュータ可読媒体上に具現化される表示可能ＵＩＳである。
【００１４】
本発明は、参照により本明細書に組み込まれている、付属の図面を参照しつつ以下で詳しく説明される。
【発明を実施するための最良の形態】
【００１５】
すでに述べたように、ＵＩ開発者は、様々なオペレーティングシステム、サードパーティ製アプリケーション、ハードウェアデバイスなどと互換性のある独立のＵＩを作成することに関連する作業を行うことなく、１０フィートＵＩの独自ルック・アンド・フィール（look and feel）をデザインし、そのようなルック・アンド・フィールをユーザに提示することを望む場合がある。本明細書で説明されている解決策では、第１のユーザインターフェースシェル（ＵＩＳ）に、第２のＵＩＳ（代替またはカスタマイズされたＵＩＳ）をサービスさせ、その結果、コンピュータユーザにはカスタマイズされたＵＩが見えるが、カスタマイズされたＵＩは、独立のＵＩと関連する従来の「力仕事」を行うサービス提供ＵＩと連携して動作するようになる。ＵＩシェルは、ＵＩ環境の一種である。
【００１６】
ある意味で、本発明の一実施形態の一態様は、見せかけ（facade）として説明することも可能であろう。クライアントＵＩは、ユーザに提示される一種の見せかけである。そのため、クライアントシェルが提示されるが、サービス提供シェルは、一実施形態にはない。本発明の様々な実施形態によれば、サービス提供ＵＩＳは、一端のクライアントＵＩとのデータ交換、および様々なアプリケーションと他端の他のコンポーネントとの間のデータ交換を容易にするユニバーサルＵＩ（表示されないが、必要とあれば表示可能である）となる。
【００１７】
本発明の説明全体を通して、関連するシステムおよびサービスに関係するいくつかの概念を理解しやすくするために複数の頭字語と簡略表記が使用される。これらの頭字語および簡略表記は、本明細書で明らかにされるアイデアを伝達する簡便な方法を提供することのみを目的としており、決して、本発明の範囲を制限することを意図していない。これらの頭字語のリストを以下に掲載する。
ＡＰＩ：アプリケーションプログラムインターフェース
サービス提供ＵＩＳ：クライアントＵＩシェルと呼ばれる他のユーザインターフェースシェルをサービスするユーザインターフェースシェル。
クライアントＵＩＳ：サービス提供ＵＩＳと呼ばれる他のユーザインターフェースシェルによるサービスを受けるユーザインターフェースシェル。
ＩＳＶ：独立系ソフトウェアベンダ
１０フィートＵＩ／ＤＵＩ：１０フィート（約３ｍ）のユーザインターフェース／遠隔ユーザインターフェース（ほぼテレビ視聴距離のところからコンピュータを操作する）。
２フィートＵＩ／ＤＵＩ：２フィート（約６１ｃｍ）のユーザインターフェース（ほぼテレビ視聴距離のところからコンピュータを操作する）。
ＵＩ：ユーザインターフェース
ＵＩＳ：ユーザインターフェースシェル
【００１８】
図１に戻ると、本発明の例示的な一実施形態が示されており、全体として番号１１０で参照される。ＡＰＩ  １１２が参照される。ＡＰＩ  １１２は、方法などで様々な機能的態様を公開する構成要素の集合で構成することができるが、本明細書では、本発明をわかりにくくしないため、また読みやすくするために、単数形で主に参照される。ＡＰＩ  １１２を使用すると、一実施形態においてサービス提供ＵＩＳ  １１６によるサービスを受けるクライアントＵＩＳ  １１４間の通信が容易に行える。
【００１９】
サービス提供ＵＩＳ  １１６は、一種のサーバコンポーネントとして、ＵＩＳ  １１６に関して一種のクライアントとして動作するクライアントＵＩＳ  １１４の要求をサービスすることを求める。それぞれのＵＩＳは、本発明のいくつかの実施形態により、直接的に、または間接的に他のアプリケーションをホストすることができる。
【００２０】
様々なネットワークは、本発明をわかりにくくしないために図１に示されていないが、それは、そのようなネットワークが本発明の範囲内でうまく考えられる場合である。例えば、サービス提供ＵＩＳ  １１６およびクライアントＵＩＳ  １１４は、１つまたは複数のネットワークによって互いに結合された異なるＰＣなどの異なるデバイス上に常駐することができる。上でほのめかされているように、シェルは、ネットワーク上でクライアントサーバ型アレンジにより動作することができる。例えば、クライアントＵＩＳ  １１４は、一種のクライアントとして、比較的多くの資源集約的タスクを遂行するために一種のサーバとして動作するサービス提供ＵＩＳ  １１６によるサービスを受ける。用語「クライアント」および「サーバ」（および「サービス提供」などの変更形態）が本明細書で使用されるが、これらは、シェルの様々な機能的態様を説明するために使用される。これらは、その用語の歴史的意味に関して、必ずしもそれ自体「クライアント」または「サーバ」ではない。しかし、これらの用語は、本発明に関連する概念を伝える。
【００２１】
要するに、クライアントＵＩＳ  １１４は、他のＵＩシェルによって履行される要求をサブミットするＵＩシェルである。サービス提供ＵＩシェルは、他のＵＩシェルをサービスする（以下で説明されるように、要求を受信する、タスクを完了する、など）シェルである。クライアントＵＩＳ  １１４は、サービス提供ＵＩＳ  １１６によるサービスを受ける。しかし、ユーザには、クライアントＵＩＳ  １１４に関連するコンポーネント（ＵＩコンポーネントなど）しか見えないので、ユーザはサービス提供ＵＩＳ  １１６が存在していることすら知らない場合がある。同様に、いくつかのアプリケーションでは、クライアントＵＩＳ  １１４が存在することすら知らない場合がある。なぜならば、一実施形態においては、アプリケーションは、サービス提供ＵＩＳ  １１６と相互にやり取りし、次いで、サービス提供ＵＩＳ  １１６がデータまたはデータの変更形態をクライアントＵＩＳ  １１４にわたすからである。
【００２２】
様々な視覚的要素またはデータコンポーネントが、提示領域１１８における表示デバイスに提示され、これは、コンピュータのモニタ、ハンドヘルドデバイスの形態を取りうる。提示領域１１８は、ユーザ選択領域１２０、および、ビデオの再生、画像の表示、または番号１２４により一般に参照されるアプリケーションの集合と相互にやり取りするサービス提供ＵＩＳ  １１６からのフィードの表示のようなものについて使用できる挿入物（インセット：inset）１２２などの、いくつかの例示的なコンポーネントを示す。前の方で示唆されている参考文献では、例示的なＤＵＩのコンポーネント、ナビゲーションなどを詳細に説明している。
【００２３】
アプリケーション１２４の集合は、例示的であり、メディアプレーヤ１２４Ａ、ソフトウェアフレームワーク１２４Ｂ、コンピュータまたはソフトウェアアドイン１２４Ｃ、他のアプリケーションまたはさらにはオペレーティングシステム１２４Ｄ、またはオペレーティングシステムそれ自体１２４Ｅなどの例示的なアイテムを含む。オペレーティングシステムそれ自体１２４Ｅは、第１のＡＰＩ  １２６Ａ、第２のＡＰＩ  １２６Ｂ、第３のＡＰＩ  １２６Ｃ、および第４のＡＰＩ  １２６Ｄなどのそれぞれのインターフェースを介して前述のアプリケーション１２４と通信するのとは反対に、一実施形態においてサービス提供ＵＩＳ  １１６によって直接的動作する場合があるものとして示している。
【００２４】
データの一部は、番号１２８Ａ〜Ｄにより参照されるが、本明細書では番号１２８として総称され、提示領域１１８とクライアントＵＩＳ  １１４との間で、またはクライアントＵＩＳ  １１４およびサービス提供１１６との間でデータが一般的に移動するという概念を伝えることができる。しかし、より具体的には、データ部分１２８Ａは、提示領域１１８からクライアントＵＩＳ  １１４に届くデータに対応し、参照番号１２８Ｂは、ＡＰＩ  １１２からサービス提供ＵＩＳ  １１６へ交換されるデータを指しており、データ部分１２８Ｃは、サービス提供ＵＩＳ  １１６からＡＰＩ  １１２へ伝達されるデータを指しており、データ部分１２８Ｄは、クライアントＵＩＳ  １１４から提示領域１１８へ伝達されるデータを指している。データフローは、例示することを目的としてブロック図形態で示されている。実際のデータフローは、データフローの実際の性質のせいで示されているものと異なる場合があるが、そのようなものは、請求項の範囲内で考えられる。
【００２５】
図１で使用される形状および記号は、特定の形状が特定のものを意味する本質的に任意の流れ図に準拠しようとしているものとして解釈すべきではない。むしろ、図は、様々な実用的アプリケーション、および本発明により実現される技術の利点の一部を絵によりわかりやすく示す。例えば、パズルのピースを使用してアプリケーションプログラムインターフェースの概念を絵で例示する方法が用いられる。例えば、図１は、クライアントＵＩＳ  １１４がＡＰＩ  １１２と互換性があることを示している。
【００２６】
サービス提供ＵＩＳ  １１６は、様々なソフトウェアアプリケーション１２４と相互にやり取りする一群のＡＰＩ  １２６Ａ〜１２６Ｄに関連付けられている。本明細書で使用されているように、「ソフトウェアアプリケーション」という用語は、広い意味で使用され、コンピューティングシステム内で使用される実行可能ファイル、ライブラリ、および他のソフトウェアコンポーネントなどを考慮する。図に示されているように、第１のＡＰＩ  １２６Ａは、特定メディアプレーヤ１２４Ａとの相互のやり取りを容易にすることができる。図には示されていないが、異なるＡＰＩが、異なるメディアプレーヤと相互にやり取りするために使用されることができ、または、すべてのメディアプレーヤが第１のＡＰＩ  １２６Ａと相互にやり取りする場合もありえる。同様に、フレームワーク１２４Ｂは、通信を行うためにＡＰＩ  １２６Ｂを必要とすることがある。例示的なフレームワークは、Ｍｉｃｒｏｓｏｆｔ  Ｃｏｒｐｏｒａｔｉｏｎによって提供される「．ＮＥＴ  Ｆｒａｍｅｗｏｒｋ」を含む。
【００２７】
カスタマイズされたインターフェースがサービス提供ＵＩＳ  １１６と通信する必要がある場合の他の例では、第３のＡＰＩ  １２６Ｃを使用するアドイン１２４Ｃのインターフェースを含む。利用可能な多数のソフトウェアアプリケーションと相互にやり取りすることに関連する様々なＡＰＩのすべてを列挙しようとすると、本発明の焦点をぼかすことになる。したがって、図１に示されているものよりも多くのＡＰＩが本明細書で特に考察されていることを示すために、省略記号が示される。最後の例示的なＡＰＩ、第４のＡＰＩ  １２６Ｄは、他のアプリケーションまたはオペレーティングシステム１２４Ｄと相互にやり取りするために使用されるものとして示されている。もちろん、サービス提供ＵＩＳ  １１６は、オペレーティングシステム１２４Ｅと直接的に、または様々な他のソフトウェアプログラムと直接的に相互にやり取りすることができる。
【００２８】
しかし、本発明の一実施形態によれば、クライアントＵＩＳ  １１４は、第１のＡＰＩ  １２６Ａ、第２のＡＰＩ  １２６Ｂなどを認識する必要もなく、またオペレーティングシステム１２４Ｅとの直接的リンクも認識することすら必要としないが、それは、ＡＰＩ  １１２を介してサービス提供ＵＩＳ  １１６と相互にやり取りする方法を知るだけで、十分に他のコンポーネントと間接的に相互にやり取りすることができるからである。
【００２９】
クライアントＵＩＳ  １１４では、カスタマイズされた表示（ディスプレイ）１１８をユーザに提示することができる。入力データが、カスタマイズされたクライアントＵＩＳ  １１４を介してユーザから受信されると、そのデータは、ＡＰＩ  １１２を介してサービス提供ＵＩＳ１１６にわたすことができる。サービス提供ＵＩＳ１１６は、クライアントＵＩＳ  １１４により求められた様々なタスクの遂行を調整する。このようにして、開発者は、サービス提供ＵＩＳ  １１６などの自社独自の本格的シェルを開発することに関連する互換性問題を取り扱わずに表示をカスタマイズする機会を与えられる。
【００３０】
本発明の一実施形態では、サービス提供ＵＩＳ  １１６は、提示領域１１８内に独自コンポーネントをそれ自体表示することはなく、むしろＡＰＩ  １１２を介してクライアントＵＩＳ  １１４によるそのようなコンポーネントの表示を容易にする１０フィートＵＩＳである。この実施形態では、クライアントＵＩＳ  １１４は、サービス提供ＵＩＳ  １１６に関してカスタマイズされた代替１０フィートＵＩ（ＵＩＳ  １１６の代替）である。ＡＰＩ  １１２は、便宜上、単数形で参照されており、これからもそうするが、すでに述べたように、本発明では、ＡＰＩ  １１２は、複数のアプリケーションプログラムインターフェースで構成できると考えている。本発明では、とりわけ、ソフトウェアベンダが、クライアントＵＩＳ  １１４などの代替シェルを介して提示したいものを提示することができるこれらのＡＰＩを公開する。
【００３１】
一実施形態では、サービス提供ＵＩＳ  １１６は、データ、タスクなどがクライアントＵＩＳ  １１４により受け取られ、サービス提供ＵＩＳ  １１６にわたされ、そうすることでそれらのタスクが容易に遂行され、該当する場合には、データがクライアントＵＩＳ  １１４に返され、提示領域１１８にデータを提示することを含む用途に使用されることができるようにクライアントＵＩＳ  １１４をサービスする。
【００３２】
一実施形態では、サービス提供ＵＩＳ  １１６は、ユーザが見ることができるように従来どおりデータそれ自体を提示するＵＩＳの修正バージョンとすることができる。修正された状態では、コンポーネントそれ自体を提示するよりもむしろ、サービス提供ＵＩＳ  １１６は、グラフィック表示に関連する方策を用いて、クライアントＵＩＳ  １１４によって求められるデータの表示を容易にする。一態様では、サービス提供ＵＩＳ  １１６は、不可視モードで動作し、クライアントＵＩＳ  １１４などのサードパーティ製アプリケーションをサービスする。
【００３３】
したがって、サービス提供ＵＩＳ  １１６がないと、クライアントＵＩＳ  １１４は、ソフトウェアアプリケーション１２４と直接的に相互にやり取りする方法を知っている必要があるが、本発明の一実施形態を使用すると、クライアントＵＩＳ  １１４は、その必要がない。クライアントＵＩＳ  １１４は、ＡＰＩ  １１２を通じてサービス提供ＵＩＳ  １１６と相互にやり取りのみするように構成される必要がある。同様に、ソフトウェアアプリケーション１２４のメーカーなどのソフトウェア開発者は、ＡＰＩ  １２６Ａ〜１２６Ｄのうちの１つなど、単一のＡＰＩと連携して動作する製品を開発し続けることができる。第１のＡＰＩ  １２６Ａが、サービス提供ＵＩＳ  １１４をメディアプレーヤと連携動作させることができるＡＰＩを表す例示的な実施例を考える。メディアプレーヤ開発者は、そのソフトウェア１２４Ａを何度も繰り返し提供してＵＩＳ  １１６およびクライアントＵＩＳ  １１４の両方との連携動作をする必要はなく、むしろ、サービス提供ＵＩＳ  １１６との連携動作をすればよい。
【００３４】
図１Ａに少しの間戻ると、異なるベンダ１４０のクライアントＵＩＳは、さらに異なるベンダ１４２のクライアントＵＩＳとともに示されている。本発明の一実施形態を使用すれば、メディアプレーヤ１２４Ａ（または何らかのアプリケーション）は、クライアントＵＩＳ  １４０または１４２などの様々なクライアント１０フィートＵＩシェルを気にする必要はない。ＵＩＳ  １４０および１４２は、ＡＰＩ  １１２と互換性を有し、相互にやり取りするように設計されたアームを持つことが絵で示されていることに留意されたい。これは、代替ＵＩ開発者が気にする必要のある唯一のＡＰＩがＡＰＩ  １１２であるからである。ＵＩ開発者が、サービス提供ＵＩＳ  １１６に関連するＡＰＩ  １１２を使用するＵＩを作ることができる場合には、サービス提供ＵＩＳ  １１６の性質のおかげで、開発者は、サービス提供ＵＩＳ  １１６を自由に使ってアプリケーションの間接的制御を利用する。サービス提供ＵＩＳ  １１６は、クライアントＵＩシェル（１１４、１４０、１４２など）およびアプリケーション１２４がサービス提供ＵＩＳ  １１６と突き合わせて試験のみすればよいように標準実行環境として動作可能である。
【００３５】
そこで、図２に戻ると、コンピューティングデバイスとの相互のやり取りを容易にする例示的な方法が示されており、また番号２００により総称されている。プロセス２００のステップは、図１Ａで説明されているコンポーネントに関連して説明される。以下のステップは、ただ１つの実施形態のものであるが、本質的に例示的であることを目的としており、本質的に制限するものとして解釈すべきではなく、むしろ、本発明の一実施形態の様々な機能的態様を例示することを目的としている。
【００３６】
一実施形態では、ユーザ入力は、ステップ２１０でクライアントＵＩＳ  １１４によって受信される。このユーザ入力は、提示領域１１８内の表現、マウスクリック、無線キーボードから受信したキーボードコマンド、例えば、選択領域１２０から楽曲またはビデオの再生をするなどのリモートコントロールから受信された刺激などを選択するという性質のものでよい。ユーザ入力は、人間による入力に限られないが、いくつかの実施形態では、他のマシンまたは同じマシンのコンポーネントから受信された入力を考えることができる。
【００３７】
ステップ２１２において、データは、ステップ２１０で受信されたユーザ入力に基づき、サービス提供ＵＩＳ  １１６に伝達される。一実施形態では、伝達されるこのデータは、データコンポーネント１２８Ａであってよい。データ１２８Ａは、ステップ２１０のユーザ入力を介して受信したそのままのデータであるか、またはその変更形態もしくは追加とすることができる。以下に、この概念を具現化する一実施例を示す。
【００３８】
ユーザは、特定のチャネルにナビゲートにしたい場合があり、データ１２８Ａは、所望のチャネルの指定と、さらには所望のテレビ番組を表示する表示領域を提示することに関連付けられている命令セットとの両方を含む。したがって、ステップ２１４において、サービス提供ＵＩＳは、ステップ２１２で受信したデータに関連付けられているタスクの遂行を調整する。これらのタスクは、様々な形態を取りうる。次の複数の段落において、クライアントＵＩＳ  １１４により要求されるか、またはクライアントＵＩＳ  １１４に関連付けられる可能性があり、またサービス提供ＵＩＳ  １１６に関連して容易にされる、限定的であり例示的な様々なタスクのリストを提供する。
【００３９】
第１の例示的なタスクは、互換性のあるアプリケーションを列挙することを含む。すでに述べたように、１０フィートＵＩ上で動作するアプリケーションは、一般に、２フィートＵＩ上で動作する場合と異なる形で構成される。様々な理由から、コンピュータシステム上にインストールされているどのようなソフトウェアアプリケーションが特定のＵＩＳと互換性を有するかを知っていると都合がよい。クライアントＵＩＳ  １１４は、サービス提供ＵＩＳ  １１６のおかげでアプリケーション１２４と間接的互換性を有するので、クライアントＵＩＳ  １１４は、相互にやり取りするためにどのようなアプリケーションが利用可能かを知りたい場合がある。このタスクは、様々な互換性のあるソフトウェアアプリケーションの名前、配置される場所、備える機能、メタデータを含むアプリケーションに関連付けられているアイコンおよび他の属性などを挙げることを含むことも可能である。アプリケーションを列挙することは、利用可能で、かつクライアントＵＩＳ  １１４と互換性のあるどのようなアプリケーションとも関連付けられている、いかなる抽出可能な属性を抽出することを含む。
【００４０】
他の例示的なタスクは、それぞれの機能および／または属性に基づいてアプリケーションのフィルタリングすることを含む。ここで、クライアントＵＩＳ  １１４は、特定の属性を含むすべてのアプリケーション、例えば、サウンドカードを必要とするアプリケーションを認識または識別したい場合がある（実質的にはどのようなものでもよい）。このタスクは、リソースおよび機能を指定し、次いで、与えられた基準に合致するソフトウェアアプリケーションを利用可能なリソースのプールから問い合わせるか、あるいは別の方法で決定することを伴う。そのため、クライアントＵＩＳ  １１４は、例えば、画像を提示したり、ビデオを再生したり、または記録を録画したりするために使用することができるすべてのアプリケーションを識別することができる。
【００４１】
他の例示的なタスクは、データをユーザに提示することを含む。クライアントＵＩＳ  １１４は、カスタマイズされたフォーマットに従って提示領域１１８内にデータを提示しなければならない。しかし、様々なハードウェアコンポーネントおよび／またはソフトウェアコンポーネントと相互にやり取りするために、サービス提供ＵＩＳ  １１６は、このような提示を容易にする。クライアントＵＩＳ  １１４は、提示領域１１８に示されるようなコンポーネントを提示することに関連する様々な複雑な部分を最終的には制御することができるとしても、サービス提供ＵＩＳ  １１６は、クライアントＵＩＳ  １１４と連携して動作し、様々な表示コンポーネントを提示することに関連して使用されるデータを供給する。本発明の一実施形態は、ＵＩまたは他のデータが１つ（または複数）の表示デバイスに提示されるときにクライアントＵＩＳ  １１４がクライアントＵＩＳに従うことを含む。そのため、クライアントＵＩＳ  １１４は、サービス提供ＵＩＳ  １１６に従って、サービス提供ＵＩＳ  １１６がアプリケーション１２４などのアプリケーションに関連付けられている表示データを提示できるようにすることが可能である。
【００４２】
他の例示的なタスクでは、クライアントＵＩＳ  １１４が、ソフトウェアアプリケーション１２４Ａ〜Ｅのうちの１つなどのアプリケーションを起動するようサービス提供ＵＩＳ  １１６に指令することができる。ここでは、クライアントＵＩＳ  １１４は、起動すべき所望のアプリケーションを指定して識別するか、または方法で参照することができ、サービス提供ＵＩＳ  １１６にわたされたデータ１２８Ａなどのデータを使用して、サービス提供ＵＩＳ  １１６は、所望のアプリケーションの起動を容易にする。画面サイズ、ウィンドウタイプ、位置などの環境パラメータも、データ１２８Ａとしてわたすことが可能であろう。
【００４３】
他のタスクでは、サービス提供ＵＩＳ  １１６が他のタスクを実行している間に、サービス提供ＵＩＳ  １１６を制御する手段を保持する。例えば、サービス提供ＵＩＳ  １１６が第１のタスクを遂行している間に、ユーザは、クライアントＵＩＳ  １１４のおかげで、例えば、アイコンを移動するか、またはウィンドウのサイズを変更する指令をコンピュータに出す。このようなコマンドは、サービス提供ＵＩＳ  １１６にわたすことが可能であろうが、これは同時に他のタスクの実行を容易にするとしてもそうである。
【００４４】
他のタスクは、サービス提供ＵＩＳ  １１６が知るべき特定のイベントを修正すること、または、サービス提供ＵＩＳ  １１６が知るべき特定のイベントをクライアントＵＩＳ  １１４に通知することを含む。例えば、サービス提供ＵＩＳ  １１６がタスクを完了したときに、クライアントＵＩＳ  １１４に制御権を返すことができる。そのアクティビティを終わらせるこのイベントは、制御を引き継ぐ用意や準備がなされるように、クライアントＵＩＳ  １１４が認識しなければならない何かである。サービス提供ＵＩＳ  １１６は、さらに、エラー条件、ＵＩコンポーネント移動、サイズ変更などのフィードバックを送ることも可能であろう。
【００４５】
他の例示的なタスクは、代替シェル、つまりクライアントＵＩＳ  １１４に返す追加ＡＰＩのコールバックを容易にすることを含む。言い換えれば、このタスクは、クライアントＵＩＳ  １１４に、サービス提供ＵＩＳ  １１６が認識されるべきとみなしている何かを認識させる。サービス提供ＵＩＳ  １１６が、例えば、認識されるべきであると知っていると思われる何らかのイベントまたは出来事が発生した場合には、そのことをクライアントＵＩＳ  １１４に通知する。いくつかの本実施形態では、このタスクは、データをクライアントＵＩＳ  １１４に転送するという形をとる。例えば、特定のテレビ番組を録画したいということをユーザが示す実施例を考える。その入力は、クライアントＵＩＳ  １１４を経由して来て、次いで、クライアントＵＩＳ  １１４は、その要求をサービス提供ＵＩＳ  １１６に伝達する。録画する番組の指示を除いて、どのような情報もわたすことができないが、サービス提供ＵＩＳ  １１６は、所望の番組の録画を容易にすることに関して遂行されなければならない他の機能も認識している場合がある。したがって、サービス提供ＵＩＳ  １１６は、録画情報をクライアントＵＩＳ  １１４に返して、それ独自の録画コンポーネントまたは他の何らかの録画アプリケーションを使用できるようにすることが可能である。多くの場合、サービス提供ＵＩＳ  １１６は、ビデオ録画などのイベントを遂行する自身の機能を備えている。しかし、クライアントＵＩＳ  １１４の一部が、ビデオ録画コンポーネント（または画像表示コンポーネント、オーディオ提示コンポーネントなど）を含む場合がある。この場合、クライアントＵＩＳ  １１４は、ビデオ番組を録画および／または再生することに関連するカスタマイズされた表示を提示する。そして、例えば、ビデオキャプチャカードなどのデバイスと相互にやり取りする必要があるけれども、カスタマイズされたＵＩを提示するように構成されうる。そのようなものとして、サービス提供ＵＩＳ  １１６への要求を開始して、番組を録画することに関連する複雑な作業を容易にし、クライアントＵＩＳ  １１４がその録画コンポーネント、または他の録画コンポーネントと整合性のある番組イベントをおそらく録画することを可能にするデータを返すことができる。このタスクは、クライアントＵＩＳ  １１４からの要求に関連するデータを提供する。
【００４６】
他の例示的なタスクは、クライアントＵＩＳ  １１４がサービス提供ＵＩＳ  １１６に追加機能を加えるための方法を実行することを含む。つまり、サービス提供ＵＩＳ  １１６は、クライアントＵＩＳ  １１４によってサービス提供ＵＩＳ  １１６に供給されたデータに従って成長または進化するように構成することができる。このタスクは、クライアントＵＩＳ  １１４などの代替シェルに、ＡＰＩ  １１２などのサービス提供ＵＩＳ  １１６に関連付けられているＡＰＩセットの拡張を任せることを含む。このようなタスクの例示的な一実施例は、例えば起動時など何らかの時点に提示領域１１８にある種の表示ボックスを提示することがクライアントＵＩＳで望まれている方法に似た何かとすることができる。おそらく、画像が表示されるか、あるいはテキスト、あるいは小さなビデオクリップなどが表示される。クライアントＵＩＳ  １１４で表示したいものをウィンドウに表示できるようにウィンドウと相互にやり取りする追加のＡＰＩを公開することができる。ＡＰＩ  １１２が、そのような相互のやり取りを容易にする命令セットを備えていなかった場合には、このタスクは、そのような相互のやり取りを行う機能をＡＰＩ  １１２に補う機能を備える。
【００４７】
他の例示的なタスクは、他の変更が生じている間に、バックグラウンドまたはフォアグラウンドでイベントを持続させることができる機能に関係する。このようなタスクの例示的な実施例は、インセット１２２を参照しつつ説明される。インセット１２２は、バックグラウンドで変更が生じている間にイベント（ビデオを表示する、画像を提示する、カメラフィードを示すなど）を持続的に実行することができるＵＩの一領域である。例えば、ユーザが選択領域１２０により行われた選択を介して音楽またはビデオまたは画像をナビゲートしている間に、インセット１２２が特定のビデオ録画を再生する場合がある。このようなインセットのさらなる詳細は、前記の同時係属出願第１０／１７４，６１９号で説明されている。このパスで、クライアントＵＩＳ  １１４などの代替シェルは、サービス提供ＵＩＳ  １１６に、インセット１２２のイベントに関連する情報をわたすことができ、そのインセット１２２は、バックグラウンドの例の変更が生じている間に実行していることを実行し続けることができる。クライアントＵＩＳ  １１４がない場合には、サービス提供１１６が唯一のＵＩＳであり、サービス提供ＵＩＳ  １１６が様々なハードウェアコンポーネントまたはソフトウェアコンポーネント１２４にアクセスを有するので、１２２などのインセットに、イベントを持続的に表示または提示することができる。このタスクでは、クライアントＵＩＳ  １１４は、類似のことを行う、つまり、インセット１２２に表示されているものを持続的に表示することができる。ＡＰＩ  １１２のおかげで、クライアントＵＩＳ  １１４は、インセット１２２またはインセットの複数のインスタンス（わかりやすくするため図に示されていない）を提示することができる。
【００４８】
他の例示的なタスクは、クライアントＵＩＳ  １４４とサービス提供ＵＩＳ  １１６との間の異なるシステムリソースの使用のネゴシエーションを提供することを含む。ユーザが、例えば、クライアントＵＩＳ  １１４によって提示されているビデオを見ている状況を考える。次いで、ユーザは、特定のチャネルに変えるコマンドを起動する。しかし、そのようなアクションが意図的でなかった場合がある、例えば、他の人たちがビデオを見ている間に、子供がリモートコントロールで遊んでいるような場合である。この場合、おそらく、ビデオを停止して、実際に指示されたチャネルに切り替える前に確認が望まれる。この状況において、瞬間的タスクにより、クライアントＵＩＳ  １１４は、所望のチャネルに合わせたいのか、何もしないのかなどについてユーザに尋ねることができる。この実施例では、映画を再生することに関連するリソース、および、番組の特定のチャネルにナビゲートし、かつ／またはチャネルを再生することに関連するリソースなどの２つの異なるシステムリソースの間のネゴシエーションが必要であった。クライアントＵＩＳ  １１４がそのようなネゴシエーションを完了する方法を知らなければならないようにするのではなく、サービス提供ＵＩＳ  １１６がそのようなネゴシエーションを容易にすることができる。
【００４９】
サービス提供ＵＩＳ  １１６が容易にすることができる他の例示的なタスクは、初期化を必要とするデバイスまたはサービスを初期化することに関連付けられる。例えば、ユーザが新しいＰＣの包装を解き、プラグをコンセントに差し込んだときに、特定の製品提供物を最初に構成する必要がある場合がある。例えば、テレビ番組を視聴するには、ＰＣに、ユーザのコンテンツプロバイダ、地理的位置、時間帯などを認識させる必要がある可能性がある。ユーザは、クライアントＵＩＳ  １１４などの代替シェルがない場合にそのような初期化を実行するよう求められることがあるが、それらの提示は、一実施形態においてサービス提供ＵＩＳ  １１６により抑制される。一実施形態では、そのような初期化は、ユーザがそのような初期化を必要とするサービスを要求するまで遅らせることができる。この要求は、クライアントＵＩＳ  １１４を介して受信され、ＡＰＩ  １１２を通じてデータをサービス提供ＵＩＳ  １１６に伝達し、次いで、クライアントＵＩＳ  １１４に、そのような初期化を必要とするデータを提示させ、集めさせるための情報をクライアントＵＩＳ  １１４に供給する。このようにして、クライアントＵＩＳ  １１４は、初期構成を必要とするサービスの初期化などをカスタマイズすることさえできる。
【００５０】
例示的なタスクの数は多いが、ＡＰＩ  １１２が存在しているおかげで容易にすることが可能なタスクの精神と広い範囲を伝えるために上記の、および最後の例示的タスクを列挙した。ＡＰＩ  １１２が存在しているおかげで実行することが可能な最後の例示的なタスクは、サービス提供ＵＩＳ  １１６と連携して動作するように設計された可能性があるレガシーリモートコントロールをクライアントＵＩＳ  １１４とともに使用できるようにすることである。
【００５１】
そこで、図２を参照すると、ステップ２１４で終了した後、本発明の一実施形態の次のステップは、ステップ２１６でタスクを実際に完了させることである。これらのタスクを実行することに関連する任意のデータは、ステップ２１８で受信することができる。上述では、要求されたタスクを実行することと関連してアプリケーション１２４などのアプリケーションまたはハードウェアデバイスからデータを返してもらうことができるいくつかの場合について言及している。次いで、そのデータまたは変更を、ステップ２２０において、サービス提供ＵＩＳ  １１６で受信することができる。このデータがフォーマットされるか、または補われるか、または他の方法で変更される必要がある場合には、ステップ２２２でＵＩＳ  １１４にわたされるようなことを実行することができ、これは、一実施形態で制御権をクライアントＵＩＳ  １１４に返却することを含むことができる。これにより、次いで、ステップ２２４において、クライアントＵＩＳ  １１４は、適切な出力をユーザに提示することができる。
【００５２】
次に、より低いレベルで、いくつかの例示的な実施例について説明する。追加の実施例および技術的開示を行うために説明する。実施例および例示的なＡＰＩ構造は、本発明を制限するものと解釈すべきではない。本発明は、付属の特許請求の範囲により定められる。以下のモジュールは、１つまたは複数の実施形態におけるＡＰＩ  １１２の様々な機能的態様を公開する。さらに、例示的なモジュールおよび構文の以下のリストは、決して網羅されてはおらず、例示することを目的としている。
【００５３】
＜低レベルの説明＞
クライアントＵＩＳ  １１４などの外部または代替シェルは、本明細書では「IExtensibilityApplications::GetFilteredEntryPoints」と呼ばれるコンポーネントを使用して、システムにインストールされているＤＵＩアプリケーションおよびそのエントリポイントのリストを受信することができる。次いで、クライアントＵＩＳ  １１４は、本明細書では「IExtensibilityApplications::LaunchEntryPoint」と呼ばれるコンポーネントを使用することによりインストールされているアプリケーション１２４を起動するようサービス提供ＵＩＳ  １１６に指令することができる。また、クライアントＵＩＳ  １１４は、本明細書では「IExtensibilityApplications::LaunchUrl」と呼ばれるコンポーネントを使用することによりインストールされているアプリケーションに関連付けられていないＵＲＬでアプリケーション１２４を起動することもできる。これら３つのコンポーネントの機能は、特定の実施形態に比べて重要な機能である。しかし、例示的ないくつかの実施形態が、上記の機能を実装する一手段にすぎないものとして以下の表にまとめられている。これらは、本発明を制限するものと解釈してはならず、付属の特許請求の範囲で定められる。ホストされているアプリケーションが起動された後、そのアプリケーションは、本明細書では「IextensibilityHostControl」と呼ばれるコンポーネントを使用して、サービス提供ＵＩＳ  １１６を制御し、指令することができる。例示的な機能は、ウィンドウを閉じる、ウィンドウを最大化する、ウィンドウを最小化する、ウィンドウのサイズおよび位置を設定する、またはウィンドウが閉じられるまで実行をブロックする制御を公開することを含む。
【００５４】
表１に示されているものは、「IExtensibilityApplications::GetFilteredEntryPoints」の出現をインスタンス化するための構文の例示的な一実施例にすぎない。当業者であれば、同じ機能を異なる構文を使って実行する多くの方法があることを理解し、またそれは付属の特許請求の範囲内で考えられる。
【００５５】
【表１】
2009505235.tif 000003
【００５６】
表２に示されているものは、「IExtensibilityApplications::LaunchEntryPoint」の出現をインスタンス化するための構文の例示的な一実施例にすぎない。当業者であれば、同じ機能を異なる構文を使って実行する多くの方法があることを理解し、またそれは付属の特許請求の範囲内で考えられる。
【００５７】
【表２】
2009505235.tif 000004
【００５８】
表３に示されているものは、「IExtensibilityApplications::LaunchUrl」の出現をインスタンス化するための構文の例示的な一実施例にすぎない。当業者であれば、同じ機能を異なる構文を使って実行する多くの方法があることを理解し、またそれは付属の特許請求の範囲内で考えられる。
【００５９】
【表３】
2009505235.tif 000005
【００６０】
サービス提供ＵＩＳ  １１６に関してＡＰＩ  １１２からなる、またはＡＰＩ  １１２により公開される４つの例示的なインターフェースは、表４に示されている。
【００６１】
【表４】
2009505235.tif 000006
【００６２】
次に、表４のメソッドのそれぞれの低レベルの詳細について説明する。一実施形態では、IExtensibilityApplicationsインターフェースは、表５に記載されているようなメソッドを公開する。
【００６３】
【表５】
2009505235.tif 000007
【００６４】
表４に示されている第２のメソッドは、本明細書で「IExtensibilityEntryPoint」インターフェースと呼ばれ、クライアントＵＩＳ  １１４などの代替シェルがエントリポイントの属性を発見できるようにＡＰＩ  １１２からなるか、またはＡＰＩ  １１２により公開されるコンポーネントに付けられた名前である。表６は、IExtensibilityEntryPointにより公開されるいくつかの例示的なメソッドを示している。
【００６５】
【表６】
2009505235.tif 000008
【００６６】
表４に示されている第３のメソッドは、本明細書で「IExtensibilityHostControl」と呼ばれ、アプリケーションが起動されたときに開かれるウィンドウを制御するためにＡＰＩ  １１２からなるか、またはＡＰＩ  １１２により公開されるコンポーネントに付けられた名前である。表７は、IExtensibilityHostControlにより公開されるいくつかの例示的なメソッドを示している。
【００６７】
【表７】
2009505235.tif 000009
【００６８】
表４に示されている第４の、そして最後の例示的なメソッドは、本明細書で「IExtensibilityHostEvents」と呼ばれ、サービスウィンドウイベントを表すためＡＰＩ  １１２からなるか、またはＡＰＩ  １１２により公開されるコンポーネントに付けられた名前である。表８は、IExtensibilityHostEventsにより公開されるいくつかの例示的なメソッドを示している。
【００６９】
【表８】
2009505235.tif 000010
【００７０】
繰り返して言うが、プログラマーが猫に皮を被せるのにたくさんの方法があるように、プログラミングの本質は、多くの場合、個人主義的である。これは、著作権出願ではなく、特許出願である。本開示は、付属の特許請求の範囲を裏付けるものであるが、本発明を定めるのは特許請求の範囲である。
【００７１】
＜例示的な動作環境＞
特に図３を参照すると、本発明を実装するための例示的な動作環境が示されており、一般にコンピューティングデバイス３００として指示されている。コンピューティングデバイス３００は、好適なコンピューティング環境の一例にすぎず、本発明の用途または機能性の範囲に関する制限を示唆する意図はない。コンピューティング環境３００は、例示されている１つのコンポーネントまたはその組合せに関係する何らかの依存関係または要求条件がその環境にあるものと解釈すべきでない。
【００７２】
本発明は、パーソナルデータアシスタントまたは他のハンドヘルドデバイスなどのコンピュータまたは他のマシンによって実行される、プログラムモジュールなどのコンピュータ実行可能命令を含む、コンピュータコードまたはマシン使用可能命令の一般的背景状況において説明することができる。一般に、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含むプログラムモジュールは、特定のタスクを実行する、または特定の抽象データ型を実装するコードを意味する。本発明は、ハンドヘルドデバイス、家電製品、汎用コンピュータ、より具体的にはコンピューティングデバイスなどを含む、様々なシステム構成において実施することができる。また、本発明は、通信ネットワークを通じてリンクされているリモート処理デバイスによりタスクが実行される分散コンピューティング環境で実施することもできる。
【００７３】
図３を参照すると、コンピューティングデバイス３００は、メモリ３１２、１つまたは複数のプロセッサ３１４、１つまたは複数の提示コンポーネント３１６、入出力ポート３１８、入出力コンポーネント３２０、および例示的な電源３２２などのデバイスを直接的または間接的に結合するバス３１０を備える。バス３１０は、１つまたは複数のバス（アドレスバス、データバス、またはその組合せなど）となるようなものとしてよい。わかりやすくするために図３の様々なブロックが線で示されているが、実際は、様々なコンポーネントを線引きするのはそれほど明確でなく、これらの線は、暗喩的に、より正確には灰色で曖昧なものとなる。例えば、表示デバイスなどの提示コンポーネントをＩ／Ｏコンポーネントとみなすことができる。また、プロセッサはメモリを備える。我々は、このようなことは技術の本質であることを理解しており、繰り返して言うと、図３は、本発明の１つまたは複数の実施形態に関して使用することができる例示的なコンピューティングデバイスを単に例示しているにすぎない。すべて図３の範囲内にあるような「ワークステーション」、「サーバ」、「ラップトップ」、「ハンドヘルドデバイス」などのカテゴリと、「コンピューティングデバイス」の参照との区別はなされない。
【００７４】
コンピューティングデバイス３００は、典型的には、様々なコンピュータ可読媒体を備える。例えば、限定はしないが、コンピュータ可読媒体は、ランダムアクセスメモリ（ＲＡＭ）、読み出し専用メモリ（ＲＯＭ）、電子的消去可能プログラム可能読み取り専用メモリ（ＥＥＰＲＯＭ）、フラッシュメモリまたはその他のメモリ技術、ＣＤＲＯＭ、デジタル多目的ディスク（ＤＶＤ）またはその他の光またはホログラフィック媒体、磁気カセット、磁気テープ、磁気ディスク記憶装置またはその他の磁気記憶装置デバイス、搬送波、または所望の情報を符号化し、コンピューティングデバイス３００によりアクセスするために使用することができるその他の媒体を含むことができる。
【００７５】
メモリ３１２は、揮発性および／または不揮発性メモリの形態のコンピュータ記憶媒体を含む。メモリは、取り外し可能、取り外し不可能、またはその組合せとすることができる。例示的なハードウェアデバイスは、ソリッドステートメモリ、ハードドライブ、光ディスクドライブなどを含む。コンピューティングデバイス３００は、メモリ３１２またはＩ／Ｏコンポーネント３２０などの様々な要素からデータを読み取る１つまたは複数のプロセッサを含む。（複数の）提示コンポーネント３１６は、ユーザまたは他のデバイスにデータ指示を送る。例示的な提示コンポーネントは、表示デバイス、スピーカー、印刷コンポーネント、振動コンポーネントなどを含む。Ｉ／Ｏポート３１８を使用することで、コンピューティングデバイス３００は、Ｉ／Ｏコンポーネント３２０を含む他のデバイスに論理的に結合することができ、一部は組み込みにすることもできる。例示的なコンポーネントは、マイク、ジョイスティック、ゲームパッド、衛星放送受信アンテナ、スキャナ、プリンタ、無線デバイスなどを含む。
【００７６】
示されている様々なコンポーネント、さらには、図に示されていないコンポーネントの多くの異なる配列は、本発明の精神および範囲から逸脱することなく可能である。本発明の実施形態は、制限するのではなく、例示的であることを意図して説明されている。範囲から逸脱しない他の実施形態も、当業者には明らかであろう。当業者であれば、本発明の範囲から逸脱することなく前述の改善を実装する代替手段を開発することができる。
【００７７】
いくつかの特徴および部分的組合せは、有用であり、他の特徴および部分的組合せを参照せずに使用することができ、特許請求の範囲内にあると考えられる。様々な図に示されているすべてのステップが、説明されている特定の順序で実行される必要はない。
【図面の簡単な説明】
【００７８】
【図１】本発明の例示的な一実施形態を示すブロック図である。
【図１Ａ】本発明の例示的な一実施形態による例示的な代替クライアントＵＩシェルを示す図である。
【図２】本発明の例示的な一実施形態のステップを例示する流れ図である。
【図３】本発明の一実施形態を実施するのに好適な例示的な動作環境の図である。
【図１】
2009505235.tif 000011
【図１Ａ】
2009505235.tif 000012
【図２】
2009505235.tif 000013
【図３】
2009505235.tif 000014
【国際調査報告】
2009505235.tif 000015
2009505235.tif 000016