(57)【要約】１以上の管理コンポーネントはアプリケーション間の双方向のインタラクションを仲介する。管理コンポーネントは、ワード処理、ビデオ会議又はマルチメディアアプリケーションのような第１のアプリケーションと、プリンタ、カメラ又はマルチメディアデバイスのような物理的デバイスの仮想化である第２のアプリケーションとの間のインタラクションを仲介する。更に、実施形態は、サービスプロバイダやオンラインビジネス等へのインターフェースを提供する第２のアプリケーションもサポートする。管理コンポーネントは、ＯＳの部分として機能してよく、ＯＳがインタラクションを仲介することを可能にし、インタラクションのための共通のユーザエクスペリエンスを与えること及び／又は第２のアプリケーションから生成されるエクスペリエンスを与えるブローカーとして動作することを含め、より高い柔軟性及びより豊かなユーザエクスペリエンスを可能にする。実施形態はまた、アプリケーションがＯＳの管理コンポーネントを介して互いに作用することを可能にする統合ＡＰＩを含む。
2014530397.tif 000002
【特許請求の範囲】
【請求項１】
１又はそれ以上のプロセッサと、
前記１又はそれ以上のプロセッサによって実行され、
第１のアプリケーションによって生成されるコンテンツを処理する第２のアプリケーションを決定することと、
前記コンテンツを処理するための前記第２のアプリケーションの１又はそれ以上の機能を決定することと、
１又はそれ以上のオプションに基づき前記コンテンツについて生成される出力ストリームを前記第１のアプリケーションから受け取ることと、
前記第２のアプリケーションによって消費されるよう前記出力ストリームを供給することと
を含む動作を実行する管理コンポーネントと
を有するシステム。
【請求項２】
前記第２のアプリケーションは、対象デバイスの仮想化である、
請求項１に記載のシステム。
【請求項３】
前記出力ストリームは、印刷される文書であり、
前記第２のアプリケーションは、プリンタデバイスの仮想化であり、
前記出力ストリームの消費は、前記プリンタデバイスで前記出力ストリームを印刷することを含む、
請求項１に記載のシステム。
【請求項４】
前記出力ストリームは、印刷される文書であり、
前記第２のアプリケーションは、プリントサービスであり、
前記出力ストリームの消費は、前記プリントサービスへのプリントジョブ要求において前記出力ストリームを提示することを含む、
請求項１に記載のシステム。
【請求項５】
前記動作は、前記第２のアプリケーションによって消費されるよう前記出力ストリームを供給することの前に前記出力ストリームのプレビューを提示することを更に含む、
請求項１に記載のシステム。
【請求項６】
前記動作は、ユーザが前記出力ストリームを生成するために１又はそれ以上の利用可能なオプションの中から前記１又はそれ以上のオプションを選択することを可能にするエクスペリエンスを提供することを更に含み、
前記１又はそれ以上の利用可能なオプションは、前記第２のアプリケーションの前記１又はそれ以上の機能に基づく、
請求項１に記載のシステム。
【請求項７】
前記エクスペリエンスは、前記管理コンポーネントによって生成され、
前記エクスペリエンスは、前記第２のアプリケーションを含むアプリケーションのクラスに共通である、
請求項６に記載のシステム。
【請求項８】
前記エクスペリエンスは、前記第２のアプリケーションによって生成され、該第２のアプリケーションに特有である、
請求項６に記載のシステム。
【請求項９】
コンピュータ装置によって実施される方法であって、
前記コンピュータ装置で実行される管理アプリケーションで、第１のアプリケーションによって生成されるコンテンツを消費する第２のアプリケーションのインジケーションを受け取るステップと、
前記管理アプリケーションで、前記第２のアプリケーションの１又はそれ以上の機能に基づき、該第２のアプリケーションに前記コンテンツを消費するための第１のオプションの組を決定するよう問い合わせを行うステップと、
前記第１のオプションの組からの選択を可能にするよう前記管理アプリケーションから第１のダイアログを提供するステップと、
選択されたオプションを前記管理アプリケーションから前記第１のアプリケーションへ提供するステップと、
前記管理アプリケーションで、前記第１のアプリケーションから、前記選択されたオプションに従って前記コンテンツについて生成されたコンテンツストリームを受け取るステップと、
前記コンテンツストリームを前記管理アプリケーションから前記第２のアプリケーションへ提供するステップと
を有する方法。
【請求項１０】
コンピュータ装置に、
第１のアプリケーションと第２のアプリケーションとの間のインタラクションを仲介する管理オブジェクトを、前記第２のアプリケーションの選択に基づきインスタンス化する動作と、
前記管理オブジェクトから、前記第２のアプリケーションの１又はそれ以上の機能を決定する動作と、
前記管理オブジェクトから、前記第２のアプリケーションの前記１又はそれ以上の機能に基づき生成される前記インタラクションのためのオプションの組から選択するエクスペリエンスを提供する動作と、
選択されたオプションに従って、前記第１のアプリケーションと前記第２のアプリケーションとの間の前記インタラクションを開始する動作と
を実行するよう指示する命令を記憶する１又はそれ以上のコンピュータ可読記憶媒体。
【発明の詳細な説明】
【背景技術】
【０００１】
ほとんどのユーザの有利な地点から、デバイスとのアプリケーションのインタラクションは簡単である。例えば、ワード処理プログラムのユーザが文書を印刷したい場合に、ユーザは単にボタンを押し（すなわち、ダイアログと相互作用し）、次いで、印刷された用紙をプリンタで手に取る。しかし、ソフトウェア及びハードウェアレベルでの舞台裏で、この処理は、プリンタトレイで待っている印刷された用紙をもたらす複数のシステムサービスの複雑な統合を伴うことがある。この複雑さは、多くの場合に、アプリケーション及びデバイスの間のインタラクションにおける柔軟性を妨げ得る緊密な結合を作り出す。
【０００２】
デバイスは、通常、デバイスドライバを介してコンピュータ装置へ示される。デバイスドライバは、アプリケーション及び／又はシステムサービスがドライバに関連するデバイスと直接相互作用することを可能にする、厳密に型指定されたコンポーネントである。典型的なデバイスドライバは、主に、ホストコンピュータ装置とそれが取り付けられているデバイスとの間の通信を可能にすることに関与する。この通信は、中央演算処理装置（Central  processing  unit：以下、ＣＰＵと称する。）における特定のピンと関連付けられる回路基板上のダイレクトリンクを介して、周辺構成要素相互接続（Peripheral  Component  Interconnect：以下、ＰＣＩと称する。）、インター集積回路（Inter-Integrated  Circuit：以下、Ｉ２Ｃと称する。）若しくはユニバーサルシリアルバス（Universal  Serial  Bus：以下、ＵＳＢと称する。）のような汎拡張バスを介して、又はイーサネット（登録商標）のようなネットワーク媒体を介してよい。このリンク上の通信は、コマンド及び制御並びにデータ交換を伴う。デバイスドライバは、ドライバがデバイスのクラスを表すような、特定のデバイスの規格化された（例えば、システム定義された）ビュー、又は問題になっている特定のデバイスのための特殊化した実施のいずれかを提供する。
【０００３】
例えば、アプリケーションからの従来の印刷は、図１で表されるように処理してよい。図示されるように、処理１００は、文書が特定の印刷デバイスで印刷されるべきことをユーザがアプリケーション（例えば、ワード処理アプリケーション、画像エディタ、表計算ソフトプログラム、等）へ示すブロック１０２から開始する。ブロック１０４で、アプリケーションは、要求されるプリンタについての特定のデバイスコンテキストをロードする。デバイスコンテキストはしばしば、実際のデバイスのシステム組込のアブストラクションであり、印刷出力を生成するためにアプリケーション、システムサービス及びプリンタの間のインタラクションを可能にする。デバイスコンテキストにおいて提供される情報に基づき、アプリケーションは、特定の印刷デバイスが印刷のために利用可能な１又はそれ以上の設定及び／又はオプションを決定する。ブロック１０６で、アプリケーションは、ユーザによって特定された設定及び／又はオプションに基づき、印刷される文書のページ毎に固定ページレイアウトの様式化された記述を作成する。幾つかの場合に、固定ページレイアウトを作成することに代えて、各ページが（例えば、多くのインクジェットプリンタで見られるように）与えられる。ブロック１０８で、アプリケーションは、デバイスコンテキストを介してページ毎に様式化された記述を提示し、これにより、プリンタへ直接に様式化されたページ記述をスプールすること又はそれらをプリンタサーバを介して提示することがなされる。この例では、アプリケーションは印刷レイアウトを作成し、次いで、デバイスコンテキストを介してデバイスと直接に相互作用して出力のためのフォーマットを直接に交渉する。デバイスコンテキストは次いで、印刷サブシステムへ出力を送り、印刷サブシステムは次いで、印刷を行う。このように、アプリケーションは、プリンタ又は他のタイプのデバイスと多かれ少なかれ直接に相互作用し、アプリケーションとデバイスとの間の緊密な結合を生じる。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本開示は、アプリケーションとデバイスとの間のインタラクションのための新しいパラダイムを提供する。
【課題を解決するための手段】
【０００５】
後述されるように、１又はそれ以上の管理コンポーネントは、アプリケーション間の双方向のインタラクションを管理し仲介する。これは、第１のアプリケーションと、物理的デバイス（例えば、プリンタ、ウェブカメラ、ビデオディスプレイ、又は他のデバイス）の仮想化であるか又はサービスプロバイダやオンラインビジネス等へのインターフェースを提供する第２のアプリケーションとの間のインタラクションを可能にする。このように、デバイスは、他のアプリケーションと連動するサービスとして扱われてよい。例えば、第２のアプリケーションが物理的なプリンタデバイスの仮想化である場合に、第２のアプリケーションは、物理的な印刷デバイスよりむしろ、印刷サービスの表現の役割を果たし、それにより、デバイスの機能はサービスコントラクトに仮想化される。
【０００６】
管理コンポーネントは、オペレーティングシステム（Operating  System：以下、ＯＳと称する。）の部分として機能してよく、ＯＳが双方向のアプリケーション間インタラクションを調停すること可能にし、インタラクションにおけるより高い柔軟性を可能にする。幾つかの実施形態は、アプリケーションがＯＳの管理コンポーネントを介して互いに相互作用することを可能にするアプリケーションプログラミングインターフェース（Application  Programming  Interface：以下、ＡＰＩと称する。）を含む。本願で記載される実施形態によって表されるパラダイムにおいて、より重要なことは、コマンド及び制御ではなく、両アプリケーションとの関連でユーザインタラクションによって仲介されるデータ交換にある。これは、ユーザによる限られた仲介をサポートし且つコマンド及び制御が全体的なドライバ設計のより重要な部分に相当する従来のデバイスドライバモデルとは対照的である。
【０００７】
本概要は、詳細な説明において以下で更に説明される簡略化された形において概念の選択を導入するよう設けられる。本概要は、請求される対象の重要な特徴又は必須の特徴を特定するよう意図されず、更に、請求される対象の適用範囲を制限するよう用いられるよう意図されない。
【図面の簡単な説明】
【０００８】
【図１】アプリケーションからの文書を印刷する従来の処理を表す。
【図２】１又はそれ以上の実施形態が動作することができる環境の例を表す概略図である。
【図３】１又はそれ以上の実施形態に関して、図２で例示される環境の部分として配置され得るコンピュータ装置の例の図である。
【図４】１又はそれ以上の実施形態に関して、アプリケーション間の双方向のインタラクションを仲介する構成の例の図である。
【図５Ａ】１又はそれ以上の実施形態に関して、アプリケーション間の双方向のインタラクションを仲介する実例となる処理を表す。
【図５Ｂ】１又はそれ以上の実施形態に関して、アプリケーション間の双方向のインタラクションとの関連でユーザエクスペリエンスを提供する実例となる処理を表す。
【図５Ｃ】１又はそれ以上の実施形態に関して、アプリケーション耐用年限管理のための実例となる処理を表す。
【図６】１又はそれ以上の実施形態に関して、アプリケーション間の双方向のインタラクションを仲介する構成の例の図である。
【図７Ａ】１又はそれ以上の実施形態に関して、アプリケーション間の双方向のインタラクションを仲介する実例となる処理を表す。
【図７Ｂ】１又はそれ以上の実施形態に関して、アプリケーション間の双方向のインタラクションを仲介する実例となる処理を表す。
【図８】１又はそれ以上の実施形態に関して、アプリケーション間の双方向のインタラクションを仲介する構成の例を表す。
【図９Ａ】１又はそれ以上の実施形態に関して、アプリケーション間の双方向のインタラクションを仲介する実例となる処理を表す。
【図９Ｂ】１又はそれ以上の実施形態に関して、アプリケーション間の双方向のインタラクションを仲介する実例となる処理を表す。
【発明を実施するための形態】
【０００９】
詳細な説明は、添付の図を参照して記載される。図中、参照符号の左端の数字は、その参照符号が最初に現れる図を特定する。異なる図における同じ参照符号は、類似する又は同じ事項を示す。
【００１０】
［概要］
簡単に記載すると、実施形態は、アプリケーション間のインタラクションを仲介する管理コンポーネント（又は管理アプリケーション）を対象とする。この仲介により、一方のアプリケーションは、他方のアプリケーションによって消費及び／又は処理される出力を生成する。管理コンポーネントは、このインタラクションを調停し、且つ、インタラクションに関連するユーザエクスペリエンスを管理する。幾つかの実施形態において、管理コンポーネントは、第１のアプリケーション（例えば、ワード処理アプリケーションのようなユーザアプリケーション、又は他のアプリケーション）と第２のアプリケーションとの間の双方向のインタラクションを仲介してよい。第２のアプリケーションは、デバイス（例えば、プリンタのような周辺機器）の仮想化であってよく、あるいは、第２のアプリケーションは、サービスプロバイダ（例えば、オンラインのプリントサービス事業）へのインターフェース又はフロントエンドであってよい。
【００１１】
本願で使用されるように、エクスペリエンス及びユーザエクスペリエンスは、ユーザから情報を集め及び／又はユーザへ情報を提示するようユーザに提示される１又はそれ以上のダイアログ、表示、ウィンドウ、制御と、それらの提示のフロー、配置及び／又はタイミングとを指す。語「ダイアログ」が本願で使用されることがあるが、当然のことながら、この語は記載の明瞭さのために使用され、個々のダイアログに制限されない幅広いエクスペリエンスを記述すると解釈されるべきである。
【００１２】
本願で使用されるように、仮想化は、アプリケーションが他のハードウェア又はソフトウェアコンポーネントに対してハードウェアデバイスをシミュレーションし、模倣し、又は体現して、デバイスと他のコンポーネントとの間のインタラクションがアプリケーションを介して起こるようにする処理を表す。通信の焦点がしばしばデバイスのコマンド及び制御にある従来のデバイスドライバ設計とは異なり、本願で記載される仮想化は、処理において交換されるデータ及び動作の目的に、より焦点を当てる。この異なる焦点は、一例として印刷シナリオを用いて説明されてよい。従来の印刷ドライバは、プリンタにページの内容を印刷するよう指示するために如何にしてプリンタにデータを送信するかに焦点を当て、一方、本願で記載される仮想化は、印刷の動作自体に焦点を当て、如何にして印刷が達成されるかの実施は、仮想化アプリケーションに任される。この仮想化はデバイスドライバを含んでよいが、それはまた、デバイスドライバよりも豊かな機能を提供する仮想化されたアプリケーションを含んでよい。
【００１３】
幾つかの実施形態において、管理コンポーネントは、クライアントデバイスで実行されるＯＳの部分である。更に、幾つかの実施形態は、第１のアプリケーション（例えば、ワード処理アプリケーションのようなユーザアプリケーション）が、第１のアプリケーションとオンラインサービスへのフロントエンド又はデバイスの仮想化である第２のアプリケーションとの間の双方向のインタラクションを可能にするよう管理コンポーネントと相互作用することを可能にする管理ＡＰＩを含む。
【００１４】
インタラクションは双方向であるから、第１のユーザアプリケーションは、第２のアプリケーションによって消費されるコンテンツを生成してよく、あるいは、第２のアプリケーションによって生成されるコンテンツを消費してよい。第１のシナリオの例は、プリンタデバイスによって印刷される文書又はオンラインの印刷サービスプロバイダへの印刷ジョブを生成するワード処理アプリケーション（例えば、Ｍｉｃｒｏｓｏｆｔ（登録商標）のＷｏｒｄ（登録商標）、Ｃｏｒｅｌ（登録商標）のＷｏｒｄＰｅｒｆｅｃｔ（登録商標）、等）である。この例では、第２のアプリケーションは、プリンタデバイスの仮想化として又は印刷サービスプロバイダへのフロントエンド／インターフェースとして動作する。第２のシナリオの例は、ウェブカメラ又は他のカメラデバイスによって生成されるオーディオ／ビデオコンテンツストリームを消費するオンラインビデオ会議又はチャットプログラム（例えば、Ｓｋｙｐｅ（登録商標）、Ｗｉｎｄｏｗｓ（登録商標）  Ｌｉｖｅメッセンジャ、Ｙａｈｏｏ！（登録商標）メッセンジャ、等）である。この例では、第２のアプリケーションは、カメラデバイスの仮想化として動作する。それらのシナリオのいずれも以下でより詳細に記載される。
【００１５】
更に、本願で挙げられている例は双方向のインタラクションを記載するが、実施形態はそのように制限されない。管理コンポーネント及び関連するＡＰＩは、アプリケーション（仮想デバイスアプリケーションを含む。）が互いに通信する共通フレームワークを生成するので、実施形態は、多方向通信が多数のアプリケーション及びデバイスの間で可能にされる柔軟なパラダイムをサポートする。例えば、幾つかの実施形態において、第１のユーザアプリケーションは、第２のアプリケーションへ送信されるコンテンツの作成者、及び第３のアプリケーションから受信される他のコンテンツの消費者の両方として動作してよく、このとき、アプリケーション間の各インタラクション対はＯＳの管理コンポーネントによって仲介される。
【００１６】
本願で記載される実施形態は、管理コンポーネントが、２つのアプリケーションの間のインタラクションを仲介することを可能にし、アプリケーションが互いに相互作用するためのより高い柔軟性を提供する。このような柔軟性の高まりは、一例として印刷機能を用いて説明されてよい。従来、ワード処理アプリケーションは、文書のための印刷レイアウトを生成し、次いでプリンタデバイスコンテキストと相互作用して、文書のための出力フォーマットをそのデバイスと直接交渉する。次いで、デバイスコンテキストは印刷レイアウトを印刷サブシステムへ送り、印刷サブシステムはプリンタで文書を印刷する。このように、出力印刷レイアウトにおける文書の配信は、デバイスコンテキストを介してプリンタデバイスに対して直接にアプリケーションによって実行される。デバイスコンテキストとデバイスドライバとの間の従来の結合を考えると、これは、プリンタが理解する何らかのページ定義言語（例えば、ポストスクリプト（登録商標）又はＰＣＬ）において特定のコマンドの組がプリンタへ送信されることを生じさせる。そのようなコマンドは、接続されるプリンタハードウェアによる動作に直接変換される。
【００１７】
本願で記載される実施形態は、管理コンポーネントがソースアプリケーション（例えば、ワード処理アプリケーション）と、一例として印刷シナリオを用いると、印刷の概念を仮想化するアプリケーションとの間の媒介として動作する点で、この従来のシナリオと相違する。プリンタデバイスと直接相互作用するのではなく、ソースアプリケーションは中間の管理コンポーネントと相互作用し、次いで、管理コンポーネントは、ソースアプリケーションに代わって、仮想化アプリケーションと通信する。このように、ソースアプリケーションは、プリンタデバイスのための特定のデバイスドライバとの如何なる直接的インタラクションも伴わずに動作してよい。
【００１８】
管理コンポーネントはソースアプリケーションと仮想化アプリケーションとの間の媒介であるから、この交換において、ソースアプリケーションは、印刷コンポーネントによってサポートされる機能に関して、従来のプリンタコンテキストに基づくモデルでよりも幾らか限られた情報の組を提供され得る。例えば、提供される情報は、目標の出力のサイズ（例えば、用紙の文字サイズ片）、その向き、及び目標の出力の解像度のような情報に制限されてない。そのような機能は、以下で更に記載されるように、管理コンポーネントによって決定されてよい。このように、実施形態は、アプリケーションによるデバイスの直接的なコマンド及び制御の従来モデルから動作のより被殻化された表現へのシフトを可能にする。印刷シナリオの例では、これは、如何にしてプリンタが印刷出力を生成するようハードウェアを操作すべきかに関する離散的な命令の交換に代えて、ＯｐｅｎＸＰＳ又はＡｄｏｂｅ（登録商標）のポータブルドキュメントフォーマット（ＰＤＦ）のような、より高度な文書交換フォーマットの形での印刷コンテンツの交換をもたらす。
【００１９】
幾つかの実施形態において、管理コンポーネントは、仮想化アプリケーションが特定のデータ交換シナリオに関与するよう自身の機能を登録すること可能にする。例えば、印刷のための仮想化アプリケーションは、それが印刷機能のための対象として使用されるよう利用可能であることを印刷のための管理コンポーネントに知らせるよう有効にされてよい。様々なモデルが、管理されるデータ交換における対象アプリケーションとして機能する目的で管理コンポーネントに仮想化アプリケーションを登録するために、用いられてよい。
【００２０】
更に、ソースアプリケーションの外及び管理コンポーネントの中に動作のための対象の選択を移動することによって、より高い柔軟性が、デバイス又はサービスの新しい機能又は新しい革新に適合するようシステム全体に導入される。例えば、管理コンポーネントがＯＳの部分である場合に、異なるタイプの仮想化アプリケーションをサポートするための新しいモダリティは、ソースアプリケーションへの変更を要求することなしに、更新を通じて時間をかけて導入されてよい。これは、新しいモダリティが、特定の新しいモダリティのためのサポートを加えるソースアプリケーションの変更によりサポートされる従来のデバイスドライバモデルと相違する。
【００２１】
更に、媒介としての管理コンポーネントの使用は、結果として得られるユーザエクスペリエンスにおいて、より高い柔軟性を提供する。例えば、幾つかの実施形態において、管理コンポーネントは、（例えば、プリンタデバイスを体現する仮想化アプリケーションとのインタラクションを通じて）プリンタデバイスに問い合わせて、その機能及び利用可能な印刷オプションを決定してよい。更に、管理コンポーネントは、ユーザが印刷オプション（例えば、用紙サイズ、ページネーション、両面／片面、色パレット、等）を選択することを可能にする共通ダイアログを提示し、ワード処理アプリケーションをそのタスクから解放してよい。同様に、管理コンポーネントはまた、ユーザが印刷される文書をプレビューすることを可能にするユーザインターフェースを提供し、ワード処理アプリケーションをそのタスクからも解放してよい。
【００２２】
他の実施形態において、管理コンポーネントは、ユーザインターフェースの負担を仮想化アプリケーションへ委任してよい。これは、仮想化された処理に、それがデバイスドライバアブストラクションの従来の制約によってもはや束縛されないので、有利な利点を提供する。概して、実施形態は、ワード処理アプリケーションから印刷機能及びユーザエクスペリエンスを抽出し（又は、他のデバイスに関連するインタラクションを抽出し）、フォーマット交渉機能をコンテンツフローから分離するよう動作する。このように、実施形態は、印刷に関連するより豊かなユーザエクスペリエンス（又は他のタイプのアプリケーション−デバイス間インタラクション）の提供を可能にしてよい。
【００２３】
更に、本願で記載される実施形態は、オンラインのサービスプロバイダのためのフロントエンド及び／又はインターフェースとして動作するアプリケーションの使用を容易にする。先と同じく一例として印刷を用いると、ワード処理アプリケーションのユーザは、印刷目標として、印刷サービスプロバイダのためのアプリケーションを選択してよい。ユーザの観点から、ユーザが目標へ印刷するよう選択しているが、代わりに、管理コンポーネントが、印刷エクスペリエンスを完了する目的で、仮想化アプリケーションをアクティブにする。幾つかの場合に、この仮想化アプリケーションは、物理的なプリンタデバイスと比較して異なるユーザエクスペリエンスを提供してよい。例えば、ユーザは、支払い又は他の監査を管理するために何らかの形の識別又は認証を提供するよう求められ得る。また、印刷サービスで利用可能な機能のタイプは、従来の印刷デバイスから利用可能なものとは異なってよい。適切な情報が収集されると、管理コンポーネントは、印刷されるよう印刷デバイスへ文書を送信するのではなく、印刷サービスへのプリントジョブ要求の部分として文書を提示してよい。ユーザは次いで、出力印刷文書、刊行本、パンフレット、ポスター、又は実質的に如何なる他のフォーマットの印刷物でも手に入れるために印刷サービスプロバイダの店へ赴いてよい。このように、実施形態は、そのようなサービスプロバイダが、デバイスドライバを作成するオーバヘッドを必要とすることなく、ユーザがサービスプロバイダのサービスをより容易に利用することを可能にするよう印刷デバイスを事実上まねることを可能にする。
【００２４】
更に、管理コンポーネント及びＡＰＩは、ユーザアプリケーション（例えば、ワード処理アプリケーション）がデバイス（例えば、プリンタ）又はオンラインのサービスプロバイダ（例えば、オンラインの印刷ショップ）と相互作用することを可能にする統合されたユーザエクスペリエンスを提供するので、ユーザアプリケーション開発者はもはや、異なる種類のデバイス又は様々なオンラインのサービスプロバイダインターフェースをサポートするようアプリケーションを書く必要がない。管理コンポーネント及び統合ＡＰＩは、ユーザアプリケーションから離れてその機能を抽象化し、共通の、潜在的により機能豊富なユーザのエクスペリエンスをもたらす。
【００２５】
幾つかの実施形態において、管理コンポーネントはまた、仮想化アプリケーションを介してデバイスのような挙動をサポートするための、より豊かなエコシステムを可能にする。例えば、従来のデバイスドライバモデルでは、デバイスドライバのインストールはデバイスの存在を条件とする。デバイスの存在は、管理コンポーネントが動作している多くの共通した周辺機器相互接続バス（例えば、ＰＣＴ、Ｉ２Ｃ、ＵＳＢ、等）の１つを介した直接にホストコンピュータへのデバイスの物理接続によって、決定されてよい。更に、デバイスの存在はまた、ネットワークでのデバイスの存在によって決定されてよい。この従来モデルでは、デバイスの存在は、通常は、当業者に認識できる多くの可能なネットワークデバイス発見プロトコルの１つにより決定される。
【００２６】
この従来のエクスペリエンスは、本願で記載される実施形態に従う仮想化アプリケーションモデルと相違する。物理的なデバイスハードウェアが必要とされない場合に、印刷サービスの例において見られるように、機能の発見は、仮想化アプリケーションのインストールにより容易にされ得る。このアプリケーションは、サービスプロバイダから又は何らかの形態のアプリケーション市場から直接に利用可能であってよい。幾つかの実施形態において、市場環境を通じて利用可能なアプリケーション耐用年限管理機関は、より簡単な自動更新プロシージャ、より柔軟なプログラミング環境、等を通じて、より高い柔軟性をアプリケーション開発者へ提供する。そのような耐用年限管理機関は、従来のデバイスドライバモデルにおいてよりも、特定のシナリオを供給することを容易にする。
【００２７】
［実施例］
図２は、実施形態が動作する、例となる環境２００を表す。図示されるように、環境２００の様々なデバイスは、そのような環境を可能にする如何なるタイプのネットワークも有しうる１以上のネットワーク２０２を介して互いに通信する。例えば、ネットワーク２０２は、インターネットのような公衆ネットワーク、組織的及び／又は個人的イントラネットのような私的ネットワーク、あるいは、私的ネットワーク及び公衆ネットワークの何らかの組み合わせを有してよい。ネットワーク２０２はまた、ローカルエリアネットワーク（Local  Area  Network：以下、ＬＡＮと称する。）、ワイドエリアネットワーク（Wide  Area  Network：以下、ＷＡＮと称する。）、Ｗｉ−Ｆｉ（登録商標）、ＷｉＭＡＸ（登録商標）、及びモバイル通信ネットワーク（例えば、３Ｇ、４Ｇ、等）を含むかこれらに限られないあらゆるタイプの有線及び／又は無線ネットワークを有してよい。ネットワーク２０２は、インターネットプロトコル（Internet  Protocol：以下、ＩＰと称する。）、伝送制御プロトコル（Transmission  Control  Protocol：以下、ＴＣＰと称する。）、ユーザダイアグラムプロトコル（User  Diagram  Protocol：以下、ＵＤＰと称する。）、又は他のタイプのプロトコルのようなパケットベース及び／又はデータグラムベースのプロトコルを含む通信プロトコルを利用してよい。更に、ネットワーク２０２はまた、ネットワーク通信を容易にし及び／又はスイッチ、ルータ、ゲートウェイ、アクセスポイント、ファイヤウォール、基地局、中継局、バックボーンデバイス、等のようなネットワークのためのハードウェア基部を形成する多数のデバイスを有してよい。
【００２８】
環境２００は、ユーザに関連する１以上のクライアントデバイス２０４を更に有する。簡単に記載すると、クライアントデバイス２０４は、ネットワーク２０２上で情報を送信及び受信するためにユーザにより用いられ得る如何なるタイプのコンピュータ装置を有してもよい。例えば、クライアントデバイス２０４は、デスクトップコンピュータ、ラップトップコンピュータ、パッドコンピュータ、装用性コンピュータ、メディアプレーヤ、車載コンピュータ、モバイルコンピュータ装置、スマートフォン、パーソナルデジタルアシスタント（Personal  Digital  Assistant：以下、ＰＤＡと称する。）、ゲーム機／プラットフォーム、携帯ゲーム機、セットトップボックス、等を有してよいがこれらに限られない。クライアントデバイス２０４は、概して、ユーザがウェブ及び／又はインターネット上で情報を送信及び受信することを可能にする１以上のアプリケーションを有し、アプリケーションは、ウェブブラウザ、電子メールクライアントアプリケーション、チャット又はインスタントメッセージング（Instant  Messaging：以下、ＩＭと称する。）クライアント、及び他のアプリケーションを有するがこれらに限られない。
【００２９】
クライアントデバイス２０４は、ワード処理、計算、プレゼンテーション準備、マルチメディア処理（例えば、映像、音声、画像、グラフィクス、等を処理するため）、ゲーム、ソーシャルネットワーキング、チャット／ＩＭ、又は他のタイプの用途のための１以上のアプリケーションを更に有してよい。クライアントデバイス２０４は、本願で更に記載されるように、双方向のアプリケーション間インタラクションを仲介するための媒介及び／又は管理コンポーネントを含むＯＳを実行してよい。
【００３０】
図２で図示されるように、環境２００は、１以上のネットワーク化された周辺デバイス２０６を更に有してよい。かかるデバイスは、印刷、マルチメディア表示、通信、等を含むがこれらに限られない機能を提供するよう、クライアントデバイス２０４及び／又は遠隔のサーバデバイス２０８のような他のデバイスとネットワーク２０２を介して通信してよい。本願で更に記載されるように、そのようなネットワーク化された周辺デバイス２０６は、デバイスの仮想化であるアプリケーションを提供してよい。かかるアプリケーションは、クライアントデバイス２０４で実行されるアプリケーションとの双方向インタラクションを可能にするよう管理ＡＰＩを呼び出してよい。
【００３１】
環境２００は、１以上の遠隔のサーバデバイス２０８を更に有してよい。幾つかの実施形態において、遠隔のサーバデバイス２０８は、オンラインサービス、商取引、等を提供するサーバデバイスを有してよい。本願で記載される実施形態を用いると、遠隔のサーバデバイス２０８は、ユーザがオンラインサービスを利用することを可能にするよう、クライアントデバイス２０４で実行されるアプリケーションとの双方向のアプリケーション間インタラクションに関与するアプリケーションの形でインターフェースを提供してよい。
【００３２】
例えば、遠隔のサーバデバイス２０８は、文書を印刷すること、広告／販売物を作成すること、原稿を公表すること、等のために、印刷サービスプロバイダによって管理されてよい。かかる印刷サービスプロバイダは、クライアントデバイス２０４で実行されるワード処理アプリケーションとの双方向インタラクションを可能にするよう管理ＡＰＩを呼び出すアプリケーションを使用してよい。このように、ワード処理アプリケーションを実行するユーザは、アプリケーションから“印刷”オプションを選択し、クライアントデバイス２０４のＯＳの部分として実行される管理コンポーネントを介して印刷サービスプロバイダへプリントジョブとして文書を送信しよい。よって、実施形態は、印刷サービスプロバイダが印刷デバイスである場合と同じように便利に、印刷サービスプロバイダが自身のサービスをユーザに利用可能にすることを可能にする。
【００３３】
サーバデバイス２０８はまた、ユーザによるアプリケーションの発見、インストール、及び／又は管理を容易にするアプリケーション市場サーバに相当してよい。幾つかの実施形態において、かかる市場サーバは、オンラインサービス、電子ビジネスサービス、等を提供する遠隔サーバアプリケーションと同じようにうまく、物理的なハードウェアデバイスをサポートする仮想化アプリケーションの普及を促す。
【００３４】
環境２００は、ＰＣＩ、Ｉ２Ｃ、ＵＳＢ、等のようなコンピュータバスを介してクライアントデバイス２０４へ直接接続される１以上の局所周辺デバイス２１０を更に有してよい。かかる局所周辺デバイス２１０は、印刷、マルチメディア表示、通信、等を含むがこれらに限られない機能を提供してよい。本願で更に記載されるように、かかる局所周辺デバイス２１０は、デバイスの仮想化であるアプリケーションを提供してよい。係るアプリケーションは、１以上のクライアントデバイス２０４で実行されるアプリケーションとの双方向インタラクションを可能にするよう管理ＡＰＩを呼び出してよい。
【００３５】
明示的に表されていないが、環境２００は、本願で記載される様々な動作に関連するデータを記憶するよう構成される１以上のデータベース又は他の記憶デバイスを更に有してよい。かかる記憶デバイスは、表されているデバイスの１又はそれ以上に組み込まれてよく、あるいは、デバイスの１又はそれ以上から離されておりそれらと通信する外部の記憶デバイスであってよい。記憶されるデータは、クライアントデバイス２０４、ネットワーク化された周辺デバイス２０６、遠隔のサーバデバイス２０８、及び／又は局所周辺デバイス２１０の動作に関する情報を更に含んでよい。
【００３６】
概して、図２で表されるデバイスの１又はそれ以上の夫々は、作業負荷を共有するようクラスタ、サーバファーム、又は他のグループにおいて配置される複数のコンピュータ装置を有してよい。そのようなデバイスのグループは、より効率的な動作を提供するよう負荷が分散されるか又は別なふうに管理されてよい。更に、環境２００の様々なコンピュータ装置はクライアント又はサーバとして記載されているが、夫々のデバイスは、様々な環境に関連する動作を実行するよういずれの性質においても動作してよい。よって、クライアント又はサーバとしてのデバイスの記載は、説明のために与えられたものであり、デバイスによって実行され得る活動の範囲を制限しない。
【００３７】
［例となるコンピュータ装置アーキテクチャ］
図３は、図２で表される様々なデバイスのためのコンピュータシステムアーキテクチャの例のブロック図である。図示されるように、コンピュータ装置３００は処理ユニット３０２を有する。処理ユニット３０２は１以上の処理ユニット（例えば、プロセッサ）を有してよく、ハードウェア、ソフトウェア、又はそれらの何らかの組み合わせとして実施されてよい。本願で使用されるように、プロセッサはハードウェア部品を指す。処理ユニット３０２は、本願で記載される様々な機能を実行するよう何らかの適切なプログラミング言語で書かれたコンピュータ実行可能、プロセッサ実行可能、及び／又は機械実行可能な命令を有してよい。幾つかの実施形態において、処理ユニット３０２は１以上のグラフィクス処理ユニット（Graphics  Processing  Unit：以下、ＧＰＵと称する。）を更に有してよい。
【００３８】
コンピュータ装置３００はシステムメモリ３０４を更に有し、システムメモリ３０４は、ランダムアクセスメモリ（Random  Access  Memory：以下、ＲＡＭと称する。）、静的ＲＡＭ（Static  Random  Access  Memory：以下、ＳＲＡＭと称する。）、動的ＲＡＭ（Dynamic  Random  Access  Memory：以下、ＤＲＡＭと称する。）、等のような揮発性メモリを有してよい。システムメモリ３０４は、読み出し専用メモリ（Read  Only  Memory：以下、ＲＯＭと称する。）、フラッシュメモリ、等のような不揮発性メモリを更に有してよい。システムメモリ３０４はキャッシュメモリを更に有してよい。図示されるように、システムメモリ３０４は、Ｗｉｎｄｏｗｓ（登録商標）、Ｌｉｎｕｘ（登録商標）、ｉＯＳ（登録商標）、等のような１以上のＯＳ３０６を含む。以下で更に記載されるように、ＯＳ３０６は、アプリケーション及び／又はデバイスの間の双方向インタラクションを管理及び／又は仲介するよう動作する１以上の管理コンポーネント３０８を更に含んでよい。
【００３９】
システムメモリ３０４は１以上の実行可能コンポーネント３１０を更に含んでよく、実行可能コンポーネント３１０は、処理ユニット３０２によってロード及び実行可能であるプログラム、アプリケーション及び／又は処理を有してよい。それらは、ワード処理、会計、プレゼンテーション準備、マルチメディア処理（例えば、映像、音声、画像、グラフィクス、等を処理するため）、ゲーム、ソーシャルネットワーキング、チャット／ＩＭ、又は他のタイプの用途のためのアプリケーションを含んでよい。実行可能コンポーネント３１０は他のコンポーネント３１４を更に含んでよい。システムメモリ３０４内の様々なコンポーネント、アプリケーション、ＯＳは、それらの様々な機能に関連するデータを記憶する記憶領域としてコンポーネントデータ３１６を用いてよい。
【００４０】
図３で図示されるように、コンピュータ装置３００は、磁気ディスクストレージ、光ディスクストレージ、テープストレージ、等を含むがこれらに限られないリムーバブルストレージ３２０及び／又は非リムーバブルストレージ３２２を更に有してよい。ディスクドライブ及び関連するコンピュータ可読媒体は、コンピュータ装置３００の動作のためのコンピュータ可読命令、データ構造、プログラムモジュール、及び他のデータの不揮発性記憶を提供してよい。
【００４１】
概して、コンピュータ可読媒体にはコンピュータ記憶媒体及び通信媒体がある。
【００４２】
コンピュータ記憶媒体には、コンピュータ可読命令、データ構造、プログラムモジュール、及び他のデータのような情報の記憶のために如何なる方法又は技術においても実施され得る揮発性及び不揮発性の、リムーバブル及び非リムーバブル媒体がある。コンピュータ記憶媒体には、ＲＡＭ、ＲＯＭ、消去可能なプログラム可能ＲＯＭ（Erasable  Programmable  Read-Only  Memory：以下、ＥＥＰＲＯＭと称する。）、ＳＲＡＭ、ＤＲＡＭ、フラッシュメモリ若しくは他のメモリ技術、コンパクトディスクＲＯＭ（Compact  Disc  Read-Only  Memory：以下、ＣＤ−ＲＯＭと称する。）、デジタルバーサタイルディスク（Digital  Versatile  Disc：以下、ＤＶＤと称する。）若しくは他の光学ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ若しくは他の磁気ストレージデバイス、又はコンピュータ装置によるアクセスのための情報を記憶するために使用可能な何らかの他の非伝送媒体があるがこれらに限られない。
【００４３】
対照的に、通信媒体は、搬送波又は他の伝送メカニズムのような変調データ信号においてコンピュータ可読命令、データ構造、プログラムモジュール、又は他のデータを具現してよい。本願で定義されるように、コンピュータ記憶媒体は通信媒体を含まない。
【００４４】
コンピュータ装置３００は入力デバイス３２４を有してよく、入力デバイス３２４は、キーボード、マウス、ペン、音声入力デバイス、タッチ入力デバイス、ゲームコントローラ、等を含むがこれらに限られない。コンピュータ装置３００は出力デバイス３２６を更に有してよく、出力デバイス３２６は、ディスプレイ、プリンタ、音声スピーカ、触覚出力インターフェース、等を含むがこれらに限られない。コンピュータ装置３００は、コンピュータ装置３００が、クライアントデバイス２０４、遠隔のサーバデバイス２０８、データベース、ネットワーク化された周辺デバイス２０６、又はネットワーク２０２上でアクセス可能な他のコンピュータ装置を含む他のコンピュータ装置３３０と通信することを可能にする通信接続３２８を更に有してよい。通信接続３２８は、ネットワークインターフェースコントローラ（Network  Interface  Controller：以下、ＮＩＣと称する。）、ネットワークアダプタ、トランシーバ、等を有してよい。
【００４５】
通信接続３２８はまた、コンピュータ装置３００から物理的に分かれているがネットワーク２０２を介して又はシリアル、パラレル、ＵＳＢ、高精細マルチメディアインターフェース（High  Definition  Multimedia  Interface：以下、ＨＤＭＩ(登録商標)と称する。）、オーディオ−ビジュアル（Audio-Visual：以下、ＡＶと称する。）、若しくは他のタイプの接続を介して接続される１以上の周辺デバイス３３２との通信を可能にしてよい。かかる周辺デバイスは局所周辺デバイス２１０を有し、且つ、プリンタ、ディスプレイ、外部ストレージデバイス、等のようなデバイスを有してよい。
【００４６】
［例となる動作］
図４、６及び８は、アプリケーション及び／又はデバイスの間のインタラクションを仲介する管理コンポーネントのための構成の例を表す。それらの図で示される要素は、ハードウェア、ソフトウェア、又はそれらの組み合わせにおいて実施され得るコンポーネント、モジュール、処理、オブジェクト、及び／又はアプリケーションを表す。図示される要素の配置は例示であるよう意図され、要素の動作、制御フロー、又は特定の位置の如何なる順序に関しても制限しない。よって、図示される要素の１又はそれ以上は、同じデバイス又は異なるデバイスの構成要素であってよい。更に、図は双方向の矢印を表すが、かかる矢印は、様々な要素の間の通信を例示するよう意図され、かかる通信は、様々な環境下で単一方向及び／又は双方向であってよい。
【００４７】
図４は、アプリケーション間の双方向インタラクションを仲介するための構成例の図である。図４で図示されるように、ＯＳ３０６は、第１のアプリケーション４０２と第２のアプリケーション４０６との間のインタラクションを仲介する１以上の管理コンポーネント３０８を含む。幾つかの実施形態において、第１のアプリケーション４０２は、第１のデバイス４０４のような物理デバイスの仮想化であってよい。このように、第１のアプリケーション４０２は、管理コンポーネント３０８及び第２のアプリケーション４０６に対して第１のデバイス４０４を事実上体現してよい。同様に、幾つかの実施形態において、第２のアプリケーション４０６は、第２のデバイス４０８のような物理デバイスの仮想化であってよく、事実上第２のデバイス４０８を体現する。管理コンポーネント３０８は、第１のアプリケーション４０２と第２のアプリケーション４０６との間のインタラクションを仲介し、それにより、アプリケーション間の通信が管理コンポーネント３０８を通り且つ管理コンポーネント３０８によって管理されるようにする。幾つかの実施形態において、第１のアプリケーション４０２及び／又は第２のアプリケーション４０６は、物理デバイスではなく、外部のアプリケーションサーバに結合されるデバイス動作の仮想化であってよい。
【００４８】
第１のアプリケーション４０２及び／又は第２のアプリケーション４０６はＯＳ３０６と同じデバイス（例えば、クライアントデバイス）で実行されるユーザアプリケーションであってよいが、実施形態はそのように制限されない。実質的に、図４の要素の如何なる配置もサポートされ、それにより、様々な要素は、特定のシナリオの要件を鑑みて、異なるデバイス又は同じデバイスで実行されてよい。
【００４９】
更に、幾つかの実施形態は、関数、メソッド、処理、インターフェース、変数、等のような機能を顕在化させる管理ＡＰＩをサポートする。第１のアプリケーション４０２及び／又は第２のアプリケーション４０６は、管理コンポーネント３０８と通信するよう管理ＡＰＩの機能を用いてよい。
【００５０】
幾つかの実施形態において、管理コンポーネント３０８は、共通のデバイスダイアログを通じて豊かなユーザエクスペリエンスを提供してよく、かかるダイアログによって、ユーザは、特定のデバイスと相互作用するためのオプションを選択してよい。かかるオプションは、管理コンポーネント３０８がデバイスによって必要とされる情報及び／又はデバイス機能を決定するようその関連する仮想化アプリケーションを通じてデバイスに問い合わせることによって、決定されてよい。代替の実施形態では、管理コンポーネント３０８は、仮想化されたデバイスアプリケーションのユーザエクスペリエンスを、ユーザがデバイスによって必要とされる１以上のオプションを設定し満たすことを可能にするために、ユーザに提示する。そのような実施形態は図６乃至９に関してより詳細に記載される。
【００５１】
図５Ａ、５Ｂ、５Ｃ、７Ａ、７Ｂ、９Ａ及び９Ｂは、様々な実施形態に従う処理の例を示すフローチャートを表す。それらの処理の動作は、個々のブロックにおいて例示され、それらのブロックを参照して要約される。処理は論理流れ図として表されており、その各動作は、ハードウェア、ソフトウェア、又はそれらの組み合わせにおいて実施され得る動作の組を表してよい。ソフトウェアとの関連で、動作は、１以上のプロセッサによって実行される場合に該１以上のプロセッサが挙げられている動作を実行することを可能にする、１以上のコンピュータ記憶媒体に記憶されたコンピュータ実行可能命令に相当する。概して、コンピュータ実行可能命令は、特定の機能を実行するか又は特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、モジュール、コンポーネント、データ構造、等を含む。動作が記載される順序は、限定として解釈されるよう意図されず、如何なる数の記載される動作も、処理を実施するために、如何なる順序においても結合され、従属する動作に分離され、及び／又は並行して実行され得る。様々な実施形態に従う動作は、論理流れ図において表される動作の一部又は全てを含んでよい。
【００５２】
図５Ａは、２つのアプリケーションの間の双方向インタラクションを仲介する処理５００の例を表す。幾つかの実施形態において、処理５００は、管理コンポーネント３０８の部分として実行する。図４で図示されたように、アプリケーションのうちの一方又は両方は、物理デバイス（プリンタ、カメラ、等のような周辺デバイス）の仮想化又はオンラインサービス（例えば、プリントサービス）のためのフロントエンドであってよい。
【００５３】
ブロック５０２で、第１のアプリケーションと相互作用するための第２のアプリケーションの選択を示すインジケーションが受け取られる。幾つかの実施形態において、第１のアプリケーションはユーザアプリケーション（例えば、ワード処理アプリケーション、ビデオ会議アプリケーション、等）であってよく、第２のアプリケーションは、ユーザが第１のアプリケーションに相互作用するよう望むプリンタ若しくはウェブカメラのような対象デバイスの仮想化又は印刷サービスプロバイダのようなオンラインサービスへのフロントエンドであってよい。インジケーションは、サポートされる通信プロトコルに従って第１のアプリケーションから管理コンポーネントへ送信される通信パケットの部分として受信されてよい。幾つかの実施形態において、第２のアプリケーションのインジケーションは、第１のアプリケーションによって生成されたデータを消費するか又は第１のアプリケーションによって消費されるデータを生成する仮想化されたデバイス及び／又はサービスの、第１のアプリケーション又は管理コンポーネントのダイアログ内のユーザ選択によってトリガされてよい。
【００５４】
幾つかの実施形態は、管理コンポーネントにより仮想化アプリケーションの登録を含んでよいことが明らかである。この登録は、第１のアプリケーションのユーザによる第２のアプリケーションの詳細な情報得た上での決定を可能にする。例えば、管理コンポーネントによる第２のアプリケーションの登録は、管理コンポーネント又は第１のアプリケーションの何れかが第１のアプリケーションとのインタラクションのための可能な対象のリストをユーザに提示することを可能にしてよい。次いで、ユーザは、インタラクションのための特定の第２のアプリケーションを選択してよい。仮想化アプリケーションの耐用年限管理の登録及び他の側面は、図５Ｃに関連してより詳細に記載される。
【００５５】
ブロック５０４で、第１及び第２のアプリケーションの間のインタラクションを仲介する管理オブジェクトがインスタンス化されてよい。幾つかの実施形態において、管理オブジェクトは、クラスとして実施される管理コンポーネントの実行インスタンスであってよく、管理オブジェクトの特定のインスタンスは、第１のアプリケーションと第２のアプリケーションとの間の特に要求されるインタラクションを仲介するよう作成される。管理オブジェクトは特定のアプリケーション（例えば、第２のアプリケーション）とのインタラクションを仲介するようインスタンス化されるので、管理オブジェクトは第２のアプリケーションに結合されるよう記載されてよい。
【００５６】
幾つかの実施形態において、管理オブジェクトの特定のインスタンスは、第１のアプリケーションが第２のアプリケーションと相互作用している限り存在する。幾つかの実施形態において、特定のインスタンスは、キャッシュ又は別なふうにセーブされ、第１及び第２のアプリケーションの間のその後のインタラクション、及び／又は他のアプリケーションと第２のアプリケーションとの間のその後のインタラクションと扱うために再利用されてよい。幾つかの実施形態において、管理オブジェクトは、第２のアプリケーションの特定のクラス（例えば、プリンタデバイスのような特定のタイプのデバイスの仮想化であるアプリケーション）に一般的であってよい。
【００５７】
ブロック５０６で、管理オブジェクトは、第２のアプリケーションに、その機能を決定するよう問い合わせてよい。例えば、第２のアプリケーションがプリンタデバイスのための仮想化として動作している場合に、管理オブジェクトは、印刷機能（例えば、両面印刷、利用可能な色パレット、横長対縦長レイアウト、ページ番号、ウォータマーク、等）を決定するよう問い合わせを行ってよい。ブロック５０８で、１以上のオプションが、ブロック５０６で決定された第２のアプリケーションの機能に基づき、第１及び第２のアプリケーションの間のインタラクションのために生成されてよい。
【００５８】
ブロック５１０で、ユーザは、管理オブジェクトによってエクスペリエンスを提供されてよい。このエクスペリエンスは、ユーザがブロック５０８で決定された１以上のオプションの中から選択することを可能にしてよい。幾つかの実施形態において、与えられるエクスペリエンスは、第２のアプリケーションの特定のクラス（例えば、プリンタデバイスの仮想化であるアプリケーション）に一般的である共通のエクスペリエンスであってよい。他の実施形態において、エクスペリエンスは、特定の第２のアプリケーション及びその機能に特有であってよい。エクスペリエンスの提供は、図５Ｂに関連して以下でより詳細に記載される。
【００５９】
ブロック５１２で、第１及び第２のアプリケーションの間の双方向インタラクションが、ブロック５１０で提供されるエクスペリエンスを通じてユーザによって選択されたオプションに基づき、開始されてよい。幾つかの実施形態において、インタラクションは、管理オブジェクトが第１及び／又は第２のアプリケーションへユーザにより選択されたオプションを提供する追加のステップ（図示せず。）に続いて、開始されてよい。この提供は、第１及び／又は第２のアプリケーションがユーザによって選択されたオプションに基づき特定のデータ及び／又はコンテンツを生成することを可能にしてよい。例えば、印刷シナリオにおいて、印刷オプションのユーザの選択は第１のアプリケーション（例えば、ワード処理アプリケーション）へ提供されてよく、第１のアプリケーションは次いで、オプションに基づき、印刷される文書のページの様式化された記述をリフロー及び生成してよい。この例は、図６、７Ａ及び７Ｂに関連してより詳細に記載される。
【００６０】
図５Ｂは、１又はそれ以上の実施形態に関して、アプリケーション間の双方向インタラクションとの関連でユーザエクスペリエンスを提供する処理５３０の例を表す。幾つかの実施形態において、ユーザエクスペリエンスを提供することは、アプリケーション間の双方向インタラクションを仲介する処理５００の部分であってよく、図５Ａのステップ５１０に関して記載されたようにダイアログを提供することを含んでよい。
【００６１】
ステップ５３２で、ユーザに共通エクスペリエンス（例えば、共通ダイアログ）を提供するか、あるいは、物理デバイスの仮想化又はオンラインサービスプロバイダのためのフロントエンドに相当する第２のアプリケーションによって生成されて発せられたエクスペリエンスを提供するかが、決定される。幾つかの実施形態において、この決定は、第２のアプリケーションが管理コンポーネントにより（図５Ｃに関して記載されるように）登録される場合に第２のアプリケーションによって提供される情報に基づいてよい。例えば、登録の間、第２のアプリケーションは、管理コンポーネントが第１及び第２のアプリケーションの間のインタラクションのその媒介の部分として共通ダイアログを提供すべきことを管理コンポーネントに示してよい。代替的に、第２のアプリケーションは、管理コンポーネントが、第２のアプリケーションに特有であり及び／又は該第２のアプリケーションから生成され、第２のアプリケーションに特有であるオプション及び／又は要件を含むダイアログを提供すべきことを示す。
【００６２】
代替の実施形態において、管理コンポーネントは、共通ダイアログを使用するか、又は第２のアプリケーションによって提供されるダイアログを使用するかを自動的に決定してよい。幾つかのシナリオにおいて、管理コンポーネントは、第２のアプリケーションとのインタラクションのために常に共通ダイアログを使用すると決定してよい。他の場合に、管理コンポーネントは、仮想化アプリケーションによって提供されるダイアログを常に使用すると決定してよい。更に、幾つかの場合に、管理コンポーネントは、双方向通信の特定のコンテキストが完了されることに依存して、どちらのダイアログを示すべきかを決定してよい。双方向の印刷通信を完了する１つの制限されない例において、管理コンポーネントは、全ての仮想化されたプリンタデバイスが共通ダイアログを使用してよく、一方、全ての仮想化されたプリンタサービスがそれ自身のユーザエクスペリエンスを提供してよいと決定してよい。
【００６３】
少なくとも部分的に第２のアプリケーションに特有の又は合わせられたエクスペリエンスを提供するとの決定がなされると、処理５３０はブロック５３４へ進み、管理コンポーネントは、第２のアプリケーションによって生成されるダイアログを提示させられる。この場合に、管理コンポーネントは、第２のアプリケーションによって提供されるエクスペリエンスを提示し、よって、第１及び第２のアプリケーションの間の設定情報の移動を調停する媒介の役割を果たす。管理コンポーネントがユーザエクスペリエンスを第２のアプリケーションによって提供されるようにするために、様々なモデルが用いられてよいことは明らかである。１つの制限されない例において、管理コンポーネントは、第２のアプリケーションがそのユーザエクスペリエンスを提供することを可能にされるホスティングモデルを提供してよい。他の制限されない例において、管理コンポーネントは、第２のアプリケーションからユーザエクスペリエンスの宣言記述を受け取り、完全に第２のアプリケーションに成り代わってユーザエクスペリエンスを提供してよい。幾つかの実施形態において、このシナリオは、管理コンポーネントが、ダイアログの特定の機能を管理すること等よりむしろ、第２のアプリケーションによって生成されるユーザエクスペリエンスを提示するようコンジットとして動作していると考えれば、より複雑でない実施により管理コンポーネントを可能にし得ることが留意されるべきである。
【００６４】
代替的に、共通エクスペリエンスを提供するとの決定がなされると、処理５３０はブロック５３６へ進み、管理コンポーネントは共通エクスペリエンスのためのダイアログを生成する。幾つかの実施形態において、共通エクスペリエンスのためのダイアログは、第２のアプリケーションを含むアプリケーションのクラスに共通であってよい。例えば、第２のアプリケーションがプリンタデバイスの仮想化である場合に、共通ダイアログは、プリンタデバイスのクラスのための仮想化アプリケーションに共通であってよい。かかるクラスは、クラスに含まれる全てのデバイス（例えば、全てのプリンタデバイス）、又は特定の製造者よるデバイス、特定の技術を用いるデバイス（例えば、レーザプリンタ又はインクジェットプリンタ）、特定の機能（例えば、色パレット、白黒、両面印刷、特定の印刷分解能、等）をサポートするデバイス、若しくは他の分類のような何らかのサブセットを含んでよい。
【００６５】
幾つかの実施形態において、共通ダイアログモデルは、管理コンポーネントがよく知られているデバイスのクラスを扱うために第２のアプリケーションのユーザエクスペリエンスの提示を可能にするモデルの特殊化と見なされてよいことが明らかである。そのような実施形態において、共通ダイアログを提供することは、よく知られているデバイスのクラスのための共通エクスペリエンスを提供する他の仮想化アプリケーションのインストールを通じて、達成されてよい。例えば、双方向の印刷エクスペリエンスのための管理コンポーネントは、第２のアプリケーションからのエクスペリエンスを示すよう構成されてよい。エクスペリエンスの共通のクラスが必要とされる場合に、例えば、全てのプリンタデバイスのクラスのための機能を提示するよう、管理コンポーネントは、このために管理コンポーネントに直接知られる予めインストールされたアプリケーションを自動的に選択し使用してよい。このように、管理コンポーネントは、全てのユーザエクスペリエンスの提示のための共通モデルを保持しながら、よく知られているデバイスのクラスに成り代わって共通エクスペリエンスを提供することを依然として可能にされる。
【００６６】
ブロック５３８で、ダイアログがユーザに提供（例えば、表示）され、ダイアログを通じてユーザによって与えられる情報は、図５Ａに関して記載されるように、更なる処理のために用いられる。
【００６７】
図５Ｂで表されていないが、幾つかの実施形態において、管理コンポーネントは、共通エクスペリエンスと第２のデバイスに特有のエクスペリエンスとの組み合わせであるエクスペリエンスをユーザに提供してよい。例えば、管理コンポーネントは、デバイスの特定のクラスのための共通ダイアログと、より第２のアプリケーションに特有である第２のダイアログとを提供してよい。この第２のダイアログは、第２のアプリケーションと相互作用するための追加のオプションを表示し及び／又はユーザの要求に答えるために第２のアプリケーションによって必要とされる情報を集めるコンパニオンダイアログであってよい。コンパニオンダイアログを有するかかる実施形態は、以下でより詳細に記載される。
【００６８】
更に、幾つかの実施形態において、第２のアプリケーションは、第２のアプリケーションの特に必要とされる如何なる情報も決定するよう、管理コンポーネントによって問い合わせを行われる。例えば、第２のアプリケーションがオンラインサービスプロバイダ（例えば、電子ビジネス）のためのフロントエンドである場合に、必要とされる情報は、氏名、住所、電話番号、電子メールアドレス、クレジットカード番号、配送／集配情報、ユーザの包装好み、等のような、サービスプロバイダの顧客としてのユーザの識別及び／又は支払い情報を含んでよい。幾つかの実施形態において、プライバシー配慮は、ユーザに、如何なる個人的な、私的な、又は微妙な内容の情報を共有する前に情報共有規定への参加を選択するか、又は如何なるそのような情報も共有しないようデータ共有規定への不参加を選択することができるようにしてよい。
【００６９】
図５Ｃは、１又はそれ以上の実施形態に関して、アプリケーション耐用年限管理のための処理５６０の例を表す。かかる耐用年限管理は、オンラインサービスのためのフロントエンド又は物理デバイスの仮想化を提供する、第１又は第２のアプリケーションとして本願で記載されるアプリケーションを含む１以上のアプリケーションのためである。図５Ｃで示される動作は、管理コンポーネントによって、又は代替的に、管理コンポーネントと、概してアプリケーションの耐用年限管理をサポートするよう設計された他のシステムコンポーネントとによって、実行されてよい。
【００７０】
ステップ５６２で、処理５６０は、管理コンポーネントにより登録されており且つソースアプリケーションとの双方向インタラクションに関与するよう利用可能にされる１以上のアプリケーションを発見する。幾つかの実施形態において、この発見処理は、管理コンポーネントによって開始される能動的処理であり、管理コンポーネントは、管理コンポーネントに登録することが可能であるアプリケーションのための通信クエリーを送信する。幾つかの実施形態において、発見処理は、管理コンポーネントが、登録を要求する通信を送信しているアプリケーションをリッスンする点で受動的である。
【００７１】
ステップ５６４で、１以上の発見又は検出されたアプリケーションが管理コンポーネントで登録される。幾つかの実施形態において、管理コンポーネントは、仮想化アプリケーションが、ソースアプリケーションとの特定のデータ交換シナリオに参加するための自身の能力を登録することを可能にする。例えば、印刷のための仮想化アプリケーションは、印刷機能のための対象として使用されることが可能であることを印刷のための管理コンポーネントに知らせることを可能にされてよい。様々なモデルは、管理されたデータ交換における対象アプリケーションとして機能する目的で管理コンポーネントに仮想化アプリケーションを登録するために用いられてよい。幾つかの実施形態において、仮想化アプリケーションの登録は、仮想化アプリケーション及び／又はそれが仮想化する物理デバイス又はサービスの様々な機能及び／又は要件を管理コンポーネントへ伝えることを含んでよい。
【００７２】
ステップ５６６で、処理は、登録されたアプリケーションの使用をサポートする。この使用は、概して図５乃至９に関連して本願の別の場所で記載されるように起こる。ステップ５６８で、１以上の登録されたアプリケーションは更新されてよい。かかる更新は、アプリケーションの新しい及び／又は異なる機能が管理コンポーネントへ伝えられることを可能にし、それにより、管理コンポーネントは、ユーザへ提供されるエクスペリエンス（例えば、ダイアログ）に新しいオプション及び／又は要件を含めることができる。動作５７０で、１以上の登録されたアプリケーションは、管理コンポーネントから解除及び／又は抹消されてよく、それにより、それらはもはや、管理コンポーネントによって仲介される双方向インタラクションに関与するのに利用可能でない。
【００７３】
図６は、アプリケーション間の双方向インタラクションを仲介するための構成例の図である。図６は図４と同じ要素を表し、図４の説明は大体において図６に当てはまる。しかし、図６は図４とは若干相違しており、図６は、第１のアプリケーション６０２が第２のアプリケーション６０４によって処理及び／又は消費されるデータ及び／又はコンテンツを生成している実施形態を表す。そのような状況は、第１のアプリケーション６０２が、印刷される１以上の文書を生成するワード処理アプリケーションである場合に該当する。かかる実施形態において、第２のアプリケーション６０４は、第２のデバイス６０６のような物理的なプリンタデバイスの仮想化、又はプリントサービスプロバイダのようなオンラインサービスプロバイダ６０８のためのフロントエンド／インターフェースのいずれかであってよい。
【００７４】
なお、図６、７Ａ及び７Ｂの記載は一例として印刷機能を用いるが、実施形態はそのように制限されない。実施形態は、ユーザアプリケーションが、デバイス又はサービスプロバイダに相当する第２のアプリケーションによって消費されるコンテンツを生成している他のシナリオをサポートする。例えば、このシナリオは、マルチメディアコンテンツを生成する第１のアプリケーションと、処理（例えば、サービスプロバイダ６０８が映像加工及び／又は編集サービスである場合）、表示（例えば、第２のデバイス６０６がビデオモニタ、テレビ受像機、録画デバイス、等である場合）、及び他の目的のためにマルチメディアコンテンツを消費する第２のアプリケーションとをサポートしてよい。
【００７５】
他の例となるシナリオでは、第１のアプリケーションは、ナビゲーションデバイスによって消費される航路定点、経路、及び／又は他の地理若しくは位置情報を生成するマッピングプログラムであってよい。更なる例として、第１のアプリケーションは、家、職場、又は他の環境において様々な電子デバイスを管理する命令の組を生成するオートメーションプログラムであってよい。このように、実施形態は、インタラクションがソースアプリケーションと仮想化デバイスとの間の特定のフォーマットにおけるデータの交換として記載され得る事実上如何なるシナリオもサポートし、よって、直接にデバイスへプログラミングする必要性を排する。
【００７６】
図７Ａ及び７Ｂは、第１のアプリケーションが第２のアプリケーションによって消費されるデータ及び／又はコンテンツを生成している実施形態に従って、２つのアプリケーションの間の双方向インタラクションを仲介するための処理７００の例を表す。幾つかの実施において、処理７００は、管理コンポーネント３０８の部分として実行する。
【００７７】
ブロック７０２で、第１のアプリケーションによって生成されたコンテンツを処理及び／又は消費する第２のアプリケーションを示す選択が受け取られてよい。幾つかの実施形態において、第２のアプリケーションは、第１のアプリケーションのユーザによって選択され、管理コンポーネントの制御、ダイアログ、又は他のユーザインターフェース要素の使用を通じてなされる。例えば、印刷機能に関連する幾つかの実施形態において、第１のアプリケーションはワード処理、画像編集、又は他の文書処理ユーザアプリケーションであってよい。ユーザは、印刷メニューを開くか又は印刷ボタンを押して、管理コンポーネント３０８に、ユーザが文書を印刷又は処理する対象のためのオプションのリストを介して第２のアプリケーションを選択するユーザエクスペリエンスを提示させてよい。この選択は、印刷対象についてのユーザの選択を示すＯＳ及び／又は管理コンポーネントへの通信をトリガしてよい。ブロック７０４で、管理オブジェクトが、図５Ａに関連して記載されたように、第１及び第２のアプリケーションの間のインタラクションを仲介するためにインスタンス化される。
【００７８】
幾つかの実施形態において、第２のアプリケーションは、第１のアプリケーションによって生成されたコンテンツを処理し、消費し、又は別なふうに使用する対象デバイスの仮想化である。例えば、第２のアプリケーションは、ワード処理アプリケーションによって生成される文書を印刷する印刷デバイス、又は第１のアプリケーションによって生成されるか若しくは該第１のアプリケーションからストリーミングされるマルチメディアコンテンツを表示する表示デバイス、モニタ、テレビ受像機の仮想化であってよい。他の実施形態において、第２のアプリケーションは、例えば、第１のアプリケーションによって生成されたコンテンツを何らかの方法で処理することによってサービスを提供することができるビジネス又は他のエンティティのようなオンラインサービスプロバイダのためのフロントエンド又はインターフェースである。例えば、そのようなオンラインサービスプロバイダは、出版社、印刷サービスプロバイダ、画像処理会社、音声／映像処理、又は他のエンティティであってよい。
【００７９】
ブロック７０６で、管理オブジェクト及び／又は管理コンポーネントは、第２のアプリケーションに、その機能及び／又はその要件を決定するよう問い合わせる。機能は、第１のアプリケーションで生成されたコンテンツを処理又は消費するための第２のアプリケーションの能力に関する制限、オプション又は他の情報を含んでよい。例えば、第２のアプリケーションが印刷デバイスを仮想化する場合に、決定される機能は、印刷デバイスの印刷機能（例えば、利用可能な色パレット、両面印刷、用紙タイプ、出力サイズ、倍率、横長対縦長レイアウト、ページ番号、ウォータマークの挿入、等）を含んでよい。他の例として、第２のアプリケーションが表示デバイス又は映像処理デバイスを仮想化する場合に、決定される機能は、サポートされる音声／映像フォーマット、表示サイズ、等を含んでよい。幾つかの実施形態において、図５Ｂに関連して上述されたように、第２のアプリケーションは更に、第２のアプリケーションの特に必要とされる如何なる情報も決定するよう問い合わせを行われてよい。
【００８０】
ブロック７０８で、１以上のオプションが、第２のアプリケーションの決定された機能及び／又は要件に基づき、コンテンツを処理するために決定される。それらのオプションは、ブロック７１０で、ダイアログの部分としてユーザに提示されてよい。ユーザは、コンテンツを処理するために１以上のオプションを選択し、及び／又は第２のアプリケーションによって必要とされる如何なる情報も供給するために、ダイアログを用いてよい。幾つかの実施形態において、ダイアログは、第２のアプリケーションの全てのタイプにわたって共通であってよい。他の実施形態では、ダイアログは、第２のアプリケーションの特定のタイプにわたって共通（例えば、印刷デバイスを仮想化するアプリケーションに一般的）であってよい。ダイアログは、第２のデバイスの機能及び／又は要件に特有のオプションを入力される。図５Ｂに関連して記載されたように、ダイアログは、管理コンポーネントによって生成される共通ユーザエクスペリエンス、又はより第２のアプリケーションに特有であり且つ第２のアプリケーションによって生成されるエクスペリエンスのいずれかであるユーザエクスペリエンスの部分であってよい。
【００８１】
幾つかの実施形態において、第２のダイアログがさらにブロック７１０でユーザに提示されてよい。この第２のダイアログは、コンテンツを処理するためのオプションの第２組をユーザに提示してよい。幾つかの実施形態において、第２のオプションの組は、第２のアプリケーションに特有であってよく、ブロック７０６での問い合わせの部分として、又は管理コンポーネント又はオブジェクトと第２のアプリケーションとの間の別個の通信の部分として第２のアプリケーションから受信されてよい。
【００８２】
第２のアプリケーションがデバイスを仮想化する実施形態において、この第２のオプションの組は、そのデバイスのクラスにとって共通である機能を超えて、デバイスの特定の機能を表してよい。例えば、プリンタデバイスは、プリンタが利用可能な通常の機能及び／又はオプションの多くを有してよいが、鮮明化された画像のプリンタ、より鮮明な、利用可能な色パレット、等のような、プリンタモデル及び／又は製造者にとって追加的な機能を有してよい。第２のダイアログ（例えば、コンパニオンダイアログ）は、特定のデバイス製造者が、（任意に）デバイスモデル及び／又は製造者にとって特有の商標設定、マーケティング及び更なる情報とともに、デバイスに特有のオプションを第２のダイアログに含めることによって、そのデバイスに特有であるユーザエクスペリエンスを作成することを可能にする。
【００８３】
そのようなコンパニオンダイアログはまた、第２のアプリケーションがオンラインサービスプロバイダ又は電子ビジネス（例えば、プリントショップ）に相当する場合に特に有用であり得る。この場合に、コンパニオンダイアログは、ユーザのニーズに答えるようサービスプロバイダによって必要とされる顧客、支払い、及び如何なる他の情報（例えば、上記の必要とされる情報）も収集するよう構成されてよい。コンパニオンダイアログはまた、サービスプロバイダに特有の商標設定、マーケティング、連絡先、等を表示してよい。
【００８４】
幾つかの実施形態において、上記のダイアログは、第１のアプリケーションからではなく、ＯＳ内で実行される管理コンポーネント又はオブジェクトから表示される。よって、本願で記載される実施形態は、第１のアプリケーションを、この機能を提供する必要性から解放する。アプリケーションに代えて管理コンポーネントからダイアログを提供することによって、ユーザは、デバイスと相互作用するための共通した且つより機能豊富なエクスペリエンスを提供され得る。
【００８５】
図７Ｂへ進むと、ブロック７１２で、選択されたオプションが第１のアプリケーションへ供給される。それらのオプションは、上記の第１及び／又は第２のダイアログを通じてユーザによって選択されたオプションを含んでよく、また、特にユーザによって選択されていない１以上のデフォルトのオプションを含んでよい。ブロック７１４で、出力ストリームが第１のアプリケーションから受信される。この出力ストリームは、ブロック７１２で第１のアプリケーションへ供給されたオプションに基づきコンテンツについて生成されてよい。例えば、印刷シナリオでは、オプションは、ユーザによって選択された印刷オプションを含んでよい。それらのオプションが第１のアプリケーション（例えば、ワード処理アプリケーション）へ供給される場合に、アプリケーションは、オプションに基づき文書をリフローし、オプションに基づき印刷される各ページの様式化された記述を生成してよい。幾つかの実施形態において、様式化された記述は、Ａｄｏｂｅ（登録商標）のポストスクリプト（登録商標）又はＸＭＬ  Ｐａｐｅｒ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ（ＸＰＳ）のような、ページに関する情報を記述する共通の抽象フォーマットである文書交換フォーマットにある。
【００８６】
よって、印刷の例では、受信される出力ストリームは、アーカイバル出力ストリームであってよい。なお、実施形態は特定のタイプのストリームに制限されない。受信される出力ストリームは、カメラ又は他のデバイスがコンテンツ（例えば、ライブの連続したデータストリーム）をストリーミングしている限りストリーミングされる映像ストリームのような、所定の境界を有さないストリームであってよい。ストリームはまた、テキスト、グラフィクス、マルチメディア、又は他のタイプのデータを含むストリーミングされるデータファイルのような、既知の境界により固定されるストリームであってもよい。様々なフォーマットが、本願で記載される実施形態の精神又は適用範囲から逸脱することなしに、出力ストリームについてサポートされてよい。更に、出力ストリームは明瞭さのためにストリームとして記載されるが、実施形態は、ストリームタイプ及びファイルタイプの両方を含む様々なタイプのデータパッケージ又はオブジェクトを含む出力ストリームをサポートする。
【００８７】
任意に、ブロック７１６で、出力ストリームのプレビューがユーザに提示されてよい。印刷の例では、プレビューは、印刷される出力ストリームの印刷プレビューであってよい。ＯＳ内の管理コンポーネントからそのようなプレビューを提供することは、アプリケーションをそのような機能を提供する必要性から自由にするとともに、より豊かな共通ユーザエクスペリエンスが提供されることを可能にすることができる。図示されていないが、プレビューはまた、ユーザが、出力ストリームを第２のアプリケーションへ送信する前に変更し且つ手直しするよう、選択されたオプションを変更することを可能にしてよい。他の実施形態において、プレビューを提示する責任は管理コンポーネントに任されるが、プレビューの中身の生成はアプリケーションの制御下のままである。
【００８８】
ブロック７１８で、出力ストリームは、第２のアプリケーションによって消費され、処理され、又は別なふうに使用されるよう第２のアプリケーションへ供給される。第２のアプリケーションがデバイス（例えば、プリンタ）の仮想化である実施形態において、出力ストリームは、ブロック７２０で第２のアプリケーションを介してデバイスへスプールされ、又は別なふうに供給されてよい。第２のアプリケーションがオンラインサービス（例えば、プリントサービス）のフロントエンドである実施形態において、出力ストリームは、（例えば、ユーザの指定されるオプションに従って完了されるプリントジョブとして）オンラインサービスへ与えられる。最終の宛先へ出力ストリームを供給する方法は実施形態によって制限されず、宛先へ出力ストリームのコンテンツを転送する如何なる方法もサポートされる。
【００８９】
幾つかの実施形態において、デバイスへ直接コンテンツを送信することに代えて、コンテンツはサーバデバイス（例えば、印刷シナリオにおけるプリントサーバ）を介して送信される。更に、対象デバイス又はサービスがストリームのコンテンツを直接サポートしない幾つかの実施形態においては、ストリームがデバイスによってサポートされるフォーマット（例えば、印刷の場合におけるＰＤＬ）へ変換される中間ステップが存在してよい。幾つかの場合に、この変換は、デバイス又はサービスへストリームを送信する前に実行されてよい。コンテンツがサーバ（例えば、プリントサーバ）へ送信され、次いでサーバがストリームを対象デバイスへ転送する実施形態では、変換は、ストリームがサーバへ送信された後且つそれが対象デバイスへ送信される前に起こり得る。幾つかの実施形態において、変換はデバイスドライバ（例えば、プリンタドライバ）によって実行される。
【００９０】
図８は、アプリケーション間の双方向インタラクションを仲介する構成例の図である。図８は、図４と同様の要素を表し、図４の記載は大体において図８に当てはまる。しかし、図８は図４とは若干相違し、図８は、第１のアプリケーション８０２が第２のアプリケーション８０４によって生成されたデータ及び／又はコンテンツを消費している実施形態を表す。そのような状況は、第１のアプリケーション８０２が、第２のデバイス８０６（例えば、ウェブカメラまたは他のビデオカメラ）によって生成されて第２のデバイス８０６の仮想化として機能する第２のアプリケーション８０４を通じて提供されるビデオコンテンツを用いるビデオ会議又はビデオチャットアプリケーションである場合に該当する。
【００９１】
なお、図８、９Ａ及び９Ｂの記載は一例としてカメラ機能を用いており、実施形態はそのように制限されない。実施形態は、ユーザアプリケーションが、デバイスを仮想化する第２のアプリケーションによって生成されたコンテンツを消費している他のシナリオを含む。例えば、１つのシナリオでは、フィットネスアプリケーションが、フィットネスデバイス（例えば、エクササイズマシン）や生体測定モニタ（例えば、心拍モニタ）からのストリーミングされたデータ、又は他のデータを受け取ってよい。他の例として、第１のアプリケーションは、温度、圧力、湿度、風速、気中浮遊汚染物質／粒子、又は他のデータを測定する環境センサからの実時間、半実時間、及び／又は過去のデータを受信する環境、気候、又は他のモニタリングプログラムであってよい。概して、第１のアプリケーションによって受信及び／又は送信されるデータは、実時間ストリーム、又は１以上の別個のファイルのストリームの形をとってよい。
【００９２】
図９Ａ及び９Ｂは、第１のアプリケーションが第２のアプリケーションによって生成されたデータを消費している実施形態に従って、２つのアプリケーション間の双方向インタラクションを仲介する処理９００の例を表す。幾つかの実施形態において、処理９００は管理コンポーネントの部分として実行する。
【００９３】
ブロック９０２で、第１のアプリケーションによって消費されるコンテンツを提供する第２のアプリケーションを示す選択が受け取られる。幾つかの実施形態において、第２のアプリケーションは、第１のアプリケーションのユーザによって選択され、管理コンポーネントの制御、ダイアログ、又は他のユーザインターフェース要素の使用によりなされる。例えば、カメラに関連する実施形態では、第１のアプリケーションはビデオチャット又はビデオ会議アプリケーションであってよい。ユーザは、会議又はチャットセッションにおいて使用するビデオデータのソースを選択するメニュー又は他のユーザインターフェース要素を開いて、管理コンポーネントに第２のアプリケーションを選択するユーザエクスペリエンスを提示させてよい。第２のアプリケーションは、ビデオデータをストリーミングするデバイス（例えば、ウェブカメラ又は他のカメラ）の仮想化であってよい。この選択は、ビデオソースのためのユーザの選択を示すＯＳ及び／又は管理コンポーネントへの通信をトリガしてよい。ブロック９０４で、管理オブジェクトが、図５に関して記載されたように、第１及び第２のアプリケーションの間のインタラクションを仲介するためにインスタンス化される。
【００９４】
ブロック９０６で、管理オブジェクト及び／又は管理コンポーネントは、第２のアプリケーションに、コンテンツを提供するためのその機能及び／又はその要件を決定するよう問い合わせを行う。例えば、第２のアプリケーションがカメラデバイスを仮想化する場合に、決定される機能は、輝度、色調、色パレット、サポートされる映像フォーマット及び画像サイズを設定する能力、効果を生成する能力、顔認識を行う能力、等を含むがこれらに限られないカメラの映像又は音声機能を含んでよい。
【００９５】
ブロック９０８で、１以上のオプションが、第２のアプリケーションの決定された機能及び／又は要件に基づき、コンテンツを提供するために決定される。それらのオプションは、ブロック９１０で、ユーザエクスペリエンス（例えば、１又はそれ以上のダイアログ）の部分としてユーザに提示されてよい。本願で論じられるように、幾つかの実施形態において、ダイアログは管理コンポーネントから提示されてよい。しかし、他の実施形態においては、ダイアログは第２のアプリケーション（例えば、仮想化されたアプリケーション）から提示されてよい。次いで、ユーザは、第２のアプリケーションがコンテンツを提供するための１以上のオプションを提供し、及び／又は第２のアプリケーションによって必要とされる何らかの情報を提供するためにダイアログを用いてよい。上述されたように、幾つかの実施形態において、ダイアログは、全てのタイプの第２のアプリケーションにわたって共通であってよい。他の実施形態においては、ダイアログは、特定のクラス又はタイプの第２のアプリケーションにわたって共通（例えば、カメラを仮想化するアプリケーションに一般的）であってよい。ダイアログは、第２のデバイスの機能及び／又は要件に関連するオプションを入力される。
【００９６】
図５Ｂに関連して記載されるように、ダイアログは、管理コンポーネントによって生成される共通のユーザエクスペリエンス、又は第２のアプリケーションにより特有であり且つ第２のアプリケーションによって生成されるエクスペリエンスのいずれかであるユーザエクスペリエンスの部分であってよい。更に、幾つかの実施形態において、第２のダイアログが更にブロック９１０でユーザに提示されてよい。この第２のダイアログは、図７Ａに関して上述されたように、特定の第２のアプリケーション及び／又はそれが仮想化するデバイスに特有の第２のオプションの組をユーザに提示してよい。
【００９７】
図９Ａに続いて、ブロック９１２で、選択されたオプションが第２のアプリケーションへ提供される。それらのオプションは、上記のダイアログを通じてユーザによって選択されたオプションを含んでよく、更に、特にユーザに選択されない１以上のデフォルトのオプションを含んでよい。第２のアプリケーションは次いで、特定されたオプションに基づき所望のコンテンツを生成してよい。ブロック９１４で、出力ストリームが第２のアプリケーションから受け取られ、ブロック９１６で、出力ストリームが、第１のアプリケーションによって消費され、処理され、又は別なふうに使用されるよう第１のアプリケーションへ供給される。先の例と同じく、第２のアプリケーションはデバイス（例えば、カメラ）の仮想化であってよい。第２のアプリケーションはまた、オンラインサービス（例えば、安全な映像フィード又は他のコンテンツを提供するサービス）へのフロントエンド／インターフェースであってよい。実施形態は、出力ストリームを受け取る事実上如何なる方法及び／又はモデルを用いてもよい。
【００９８】
［結び］
技術は、構造的な特徴及び／又は方法論的な動作に特有の言語において記載されてきたが、添付の特許請求の範囲は、必ずしも、記載される具体的な特徴又は動作に制限されないことが理解されるべきである。むしろ、具体的な特徴及び動作は、かかる技術を実施する例となる形態として開示される。
【図１】
2014530397.tif 000003
【図２】
2014530397.tif 000004
【図３】
2014530397.tif 000005
【図４】
2014530397.tif 000006
【図５Ａ】
2014530397.tif 000007
【図５Ｂ】
2014530397.tif 000008
【図５Ｃ】
2014530397.tif 000009
【図６】
2014530397.tif 000010
【図７Ａ】
2014530397.tif 000011
【図７Ｂ】
2014530397.tif 000012
【図８】
2014530397.tif 000013
【図９Ａ】
2014530397.tif 000014
【図９Ｂ】
2014530397.tif 000015
【手続補正書】
【提出日】平成26年9月19日(2014.9.19)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
１又はそれ以上のプロセッサと、
前記１又はそれ以上のプロセッサによって実行され、
第１のアプリケーションによって生成されるコンテンツを処理する第２のアプリケーションを決定することと、
前記コンテンツを処理するための前記第２のアプリケーションの１又はそれ以上の機能を決定することと、
１又はそれ以上のオプションに基づき前記コンテンツについて生成される出力ストリームを前記第１のアプリケーションから受け取ることと、
前記第２のアプリケーションによって消費されるよう前記出力ストリームを供給することと
を含む動作を実行する管理コンポーネントと
を有するシステム。
【請求項２】
前記第２のアプリケーションは、対象デバイスの仮想化である、
請求項１に記載のシステム。
【請求項３】
前記出力ストリームは、印刷される文書であり、
前記第２のアプリケーションは、プリンタデバイスの仮想化であり、
前記出力ストリームの消費は、前記プリンタデバイスで前記出力ストリームを印刷することを含む、
請求項１に記載のシステム。
【請求項４】
前記出力ストリームは、印刷される文書であり、
前記第２のアプリケーションは、プリントサービスであり、
前記出力ストリームの消費は、前記プリントサービスへのプリントジョブ要求において前記出力ストリームを提示することを含む、
請求項１に記載のシステム。
【請求項５】
前記動作は、前記第２のアプリケーションによって消費されるよう前記出力ストリームを供給することの前に前記出力ストリームのプレビューを提示することを更に含む、
請求項１に記載のシステム。
【請求項６】
前記動作は、ユーザが前記出力ストリームを生成するために１又はそれ以上の利用可能なオプションの中から前記１又はそれ以上のオプションを選択することを可能にするエクスペリエンスを提供することを更に含み、
前記１又はそれ以上の利用可能なオプションは、前記第２のアプリケーションの前記１又はそれ以上の機能に基づく、
請求項１に記載のシステム。
【請求項７】
前記エクスペリエンスは、前記管理コンポーネントによって生成され、
前記エクスペリエンスは、前記第２のアプリケーションを含むアプリケーションのクラスに共通である、
請求項６に記載のシステム。
【請求項８】
前記エクスペリエンスは、前記第２のアプリケーションによって生成され、該第２のアプリケーションに特有である、
請求項６に記載のシステム。
【請求項９】
コンピュータ装置によって実施される方法であって、
前記コンピュータ装置で実行される管理アプリケーションで、第１のアプリケーションによって生成されるコンテンツを消費する第２のアプリケーションのインジケーションを受け取るステップと、
前記管理アプリケーションで、前記第２のアプリケーションの１又はそれ以上の機能に基づき、該第２のアプリケーションに前記コンテンツを消費するための第１のオプションの組を決定するよう問い合わせを行うステップと、
前記第１のオプションの組からの選択を可能にするよう前記管理アプリケーションから第１のダイアログを提供するステップと、
選択されたオプションを前記管理アプリケーションから前記第１のアプリケーションへ提供するステップと、
前記管理アプリケーションで、前記第１のアプリケーションから、前記選択されたオプションに従って前記コンテンツについて生成されたコンテンツストリームを受け取るステップと、
前記コンテンツストリームを前記管理アプリケーションから前記第２のアプリケーションへ提供するステップと
を有する方法。
【請求項１０】
コンピュータ装置に、
第１のアプリケーションと第２のアプリケーションとの間のインタラクションを仲介する管理オブジェクトを、前記第２のアプリケーションの選択に基づきインスタンス化する動作と、
前記管理オブジェクトから、前記第２のアプリケーションの１又はそれ以上の機能を決定する動作と、
前記管理オブジェクトから、前記第２のアプリケーションの前記１又はそれ以上の機能に基づき生成される前記インタラクションのためのオプションの組から選択するエクスペリエンスを提供する動作と、
選択されたオプションに従って、前記第１のアプリケーションと前記第２のアプリケーションとの間の前記インタラクションを開始する動作と
を実行するよう指示する命令を記憶する１又はそれ以上のコンピュータ可読記憶媒体。
【請求項１１】
コンピュータ装置において実行される場合に、該コンピュータ装置に、
第１のアプリケーションと第２のアプリケーションとの間のインタラクションを仲介する管理オブジェクトを、前記第２のアプリケーションの選択に基づきインスタンス化する動作と、
前記管理オブジェクトから、前記第２のアプリケーションの１又はそれ以上の機能を決定する動作と、
前記管理オブジェクトから、前記第２のアプリケーションの前記１又はそれ以上の機能に基づき生成される前記インタラクションのためのオプションの組から選択するエクスペリエンスを提供する動作と、
選択されたオプションに従って、前記第１のアプリケーションと前記第２のアプリケーションとの間の前記インタラクションを開始する動作と
を実行させるコンピュータプログラム。
【国際調査報告】
2014530397.tif 000016
2014530397.tif 000017