リアルタイムメディア最適化を提供する方法であって、リモート計算デバイスとのリモートセッションを確立するステップと、前記リモートセッション中に、サーバパスを介して前記リモート計算デバイスと非リアルタイムメディアデータを交換するステップと、前記リモートセッション中に、メディアパスを介して前記リモート計算デバイスとリアルタイムメディアデータを交換するステップとを備える方法。請求項1に記載の方法であって、リモートセッションを確立する前記ステップは、ローカル計算デバイスで動作するクライアントと、サーバで実行されるアプリケーションとの間にホップを確立するステップを備え、確立された前記ホップは前記サーバパス内にある、方法。請求項1に記載の方法であって、サーバパスを介して前記リモート計算デバイスと非リアルタイムメディアデータを交換する前記ステップは、前記サーバパス中にあるサーバへ非リアルタイム情報を送るステップを備える、方法。請求項1に記載の方法であって、サーバパスを介して前記リモート計算デバイスと非リアルタイムメディアデータを交換する前記ステップは、前記サーバパス中にあるサーバへ非リアルタイム情報を送るステップを備え、前記非リアルタイム情報は、ローカル計算デバイスの位置に対応する情報を含む、方法。請求項1に記載の方法であって、メディアパスを介して前記リモート計算デバイスとリアルタイムメディアデータを交換する前記ステップは、前記リアルタイムメディアデータを捕獲し、エンコードし、送信するステップを備える、方法。請求項1に記載の方法であって、前記メディアパスからの前記リアルタイムメディアデータと、前記サーバパスからの前記非リアルタイムメディアデータとを同期させるステップを更に備える方法。請求項1に記載の方法であって、メディアパスを介して前記リモート計算デバイスとリアルタイムメディアデータを交換する前記ステップは、前記メディアパスを介して前記リモート計算デバイスから前記リアルタイムメディアデータを受信し、前記リアルタイムメディアデータをデコードし、デコードされた前記リアルタイムメディアデータをレンダリングするステップを備える、方法。請求項1に記載の方法であって、メディアパスを介して前記リモート計算デバイスとリアルタイムメディアデータを交換する前記ステップは、1つのアドレス空間を別のアドレス空間へ再びマッピングするために、ネットワークアドレス情報を変更するステップを備える、方法。リアルタイムメディア最適化を提供する方法であって、ローカル計算デバイスとリモート計算デバイスとの間でのリモートセッションを確立するステップと、前記リモートセッション中に、サーバパスを介して、前記ローカル計算デバイスと前記リモート計算デバイスとの間で非リアルタイムメディアデータを交換するステップであって、前記非リアルタイムメディアデータを交換することは、前記サーバパス内のサーバを通じて前記非リアルタイムメディアデータを送るステップを含むものである、非リアルタイムメディアデータを交換するステップと、前記リモートセッション中に、メディアパスを介して、前記ローカル計算デバイスと前記リモート計算デバイスとの間でリアルタイムメディアデータを交換するステップであって、前記リアルタイムメディアデータを交換することは、前記サーバを関与させずに前記メディアパスを通じて前記ローカル計算デバイスと前記リモート計算デバイスとの間で直接的に前記リアルタイムメディアデータを交換するステップを含むものである、リアルタイムメディアデータを交換するステップと、を備える方法。請求項9に記載の方法であって、リモートセッションを確立する前記ステップは、前記ローカル計算デバイスで動作するクライアントと、前記サーバで実行されるアプリケーションとの間にホップを確立するステップを備え、確立された前記ホップは前記サーバパス内にある、方法。請求項9に記載の方法であって、リモートセッションを確立する前記ステップは、前記ローカル計算デバイスで動作するクライアントで実行されるリモートメディアマネージャと、前記リモート計算デバイスとの間で前記メディアパスを確立するステップを備える、方法。請求項9に記載の方法であって、前記サーバパスを介しての前記リモート計算デバイスとの、非リアルタイムメディアデータを交換する前記ステップは、前記サーバパス中にある前記サーバへ非リアルタイム情報を送るステップを備え、前記非リアルタイム情報は、前記ローカル計算デバイスの位置に対応する情報を含む、方法。請求項9に記載の方法であって、前記メディアパスからの前記リアルタイムメディアデータと、前記サーバパスからの前記非リアルタイムメディアデータとを同期させるステップを更に備える方法。請求項9に記載の方法であって、前記メディアパスを介しての前記リモート計算デバイスとの、リアルタイムメディアデータを交換する前記ステップは、前記メディアパスを介して前記リモート計算デバイスから前記リアルタイムメディアデータを受信し、前記リアルタイムメディアデータをデコードし、デコードされた前記リアルタイムメディアデータをレンダリングするステップを備える、方法。リアルタイムメディア最適化を提供するシステムであって、メモリストレージと、前記メモリストレージと結合される処理ユニットとを備え、前記処理ユニットは、リモート計算デバイスとのリモートセッションを確立するように構成され、前記リモートセッションを確立するように動作する前記処理ユニットは、サーバが関与するサーバパスを確立し、サーバが関与せず、前記リモート計算デバイスと直接に確立されるメディアパスを確立するように動作するものであり、前記処理ユニットは更に、前記リモートセッション中に、前記サーバパスを介して前記リモート計算デバイスと非リアルタイムメディアデータを交換し、前記リモートセッション中に、前記メディアパスを介して前記リモート計算デバイスとリアルタイムメディアデータを交換するように構成される、システム。011以下の詳細な説明では、添付の図面を参照する。図面および以下の説明では、可能な範囲で、同じまたは類似のエレメントに関して同じ参照番号を使用している。以下に本発明の実施形態について説明するが、変形例、適応例、および他の実施例も可能である。例えば、図に示したエレメントに対しての代替や付加や変更を行うことができ、また、ここで説明する方法についても、段工程を代替したり、順を変更したり、更に段を加えたりすることにより、変更することもできる。従って、下記の説明は本発明を限定するものではない。本発明の適切な範囲は特許請求の範囲により定められる。012デスクトップの仮想化は、センシティブなデータおよびアプリケーションを有する企業において使用されている。そのような企業は、センシティブなデータおよびアプリケーションをクライアント側マシンに駐在させることができない例えば、セキュリティに関する問題があるため。従って、デスクトップの仮想化では、シンクライアントthinclientがクライアント側マシン上で動作し、センシティブなデータおよびアプリケーションは、企業により制御されるサーバ上で実行される。この状況では、アプリケーションがサーバで自動的に実行され、ユーザが見ることができるのは、クライアント側マシン上のユーザインターフェースUIのみである。従って、企業のシステム管理者が、サーバ側イメージを更新する。そのため、ユーザがサーバへログインしたときには、ユーザは、システム管理者が押しつけたい最新のソフトウェアを得ることになる。013図1は、仮想化環境100のブロック図である。図1に示すように、デスクトップが仮想化されると、実際の処理は、クライアント側マシン110ではなくサーバ105で行われる。このようなアプリケーション即ち、仮想化環境100で実行されるアプリケーションは、仮想化アプリケーションと呼ばれることもある。例えば、第1アプリケーション115および第2アプリケーション120は、実際にはサーバ105で実行されている。クライアント側マシン110は、第1アプリケーション115および第2アプリケーション120にそれぞれ対応する第1ユーザインターフェース125および第2ユーザインターフェース130を、レンダリングして表示する。仮想化アプリケーションは、非リアルタイムのアプリケーション例えば、ワードプロセッシングやスプレッドシートなどに関して許容することができ、その場合、生のデータ例えば、キー入力などは、クライアント側マシンからサーバへ送られ、サーバで実行される仮想化アプリケーションが、ユーザ入力を受信してデータを処理する。014リアルタイム音声/映像会議アプリケーションは、上記の仮想化環境において仮想化アプリケーションとして実行することができる。リアルタイム音声/映像会議アプリケーションは、クライアント側マシンから捕獲した生の音声/映像データを取り入れ、そのデータをエンコードし、そのエンコードされたデータを、例えば有線で、送信する。更に、リアルタイム音声/映像会議アプリケーションは、エンコードされたデータのストリームをネットワークから受信し、そのエンコードされたデータのストリームをデコードし、そのデコードされたデータのストリームをクライアント側マシン上でレンダリングする。しかし、クライアント側マシンでローカルに実行される非仮想化リアルタイムアプリケーションと比べた場合、仮想化したリアルタイム音声/映像会議アプリケーションでは、仮想化リアルタイムアプリケーションが通る必要のある追加のホップhop、行程例えば、サーバを通る行程がある。015非仮想化リアルタイムアプリケーションにおいてリアルタイムの音声/映像の送信および受信を行う場合、全ての処理は、サーバではなくクライアント側マシンで行われる。例えば、クライアント側アプリケーションは、デバイスから音声/映像を捕獲し、エンコードし、それをクライアント側マシンから有線で送信する。非仮想化アプリケーションとは対照的に、仮想化リアルタイムアプリケーションでは、捕獲した生の音声/映像データを、例えば、捕獲用デバイスを遠隔操作することによりサーバへ送信するか、または捕獲用デバイスからの生のデータストリームを、リモートデスクトップチャンネルを介してサーバへ送信する。更に、仮想化環境におけるサーバは、エンコードされたストリームを送信する。従って、仮想化環境では、音声/映像のパスに追加的なホップ例えば、クライアント側マシンからサーバへの行程がある。それらの追加的なホップは、リアルタイム音声/映像データの流れにおける遅延/レイテンシを増加させる。016図2は、本発明の実施形態に従ったリアルタイムメディアシステム200を示す。リアルタイムメディアシステム200は、第1クライアント側マシン205例えば、ローカル計算デバイス、第2クライアント側マシン210例えば、リモート計算デバイス、サーバ215、およびネットワーク220を備える。本発明の実施形態に従うと、非仮想化リアルタイム音声/映像会議は、第1クライアント側マシン205と第2クライアント側マシン210との間で、ネットワーク220を介して行われる。017本発明の実施形態がサーバパス即ち、第1ホップ225および第2ホップ230を使用する場合、第1クライアント側マシン205と第2クライアント側マシン210との間の音声/映像データのパスにおいて、追加的なホップ例えば、第1クライアント側マシン205からサーバ205への行程と、サーバ215から第2クライアント側マシン210への行程があることになる。そのような追加的なホップは、第1クライアント側マシン205と第2クライアント側マシン210との間でのリアルタイムの音声/映像データの流れにおいて、例えば、遅延/レイテンシを増加させる。018本発明の実施形態に従うと、上記の第1クライアント側マシン205と第2クライアント側マシン210との間でのリアルタイムの音声/映像データの流れにおける遅延/レイテンシは、そのリアルタイムの音声/映像データの流れにおいてサーバ215を含ませないことにより、避けることができる。例えば、音声/映像データを、サーバ215を介さないメディアパス235を介して、第1クライアント側マシン205と第2クライアント側マシン210との間で送信することができる。しかし、メディアパス235が確立されない場合や、メディアパス235を確立した後に故障した場合、音声/映像データは、サーバパスを介して第1クライアント側マシン205と第2クライアント側マシン210との間で送信される。019第1クライアント側マシン205、第2クライアント側マシン210、およびサーバ215のうちの何れのものも、例えば、デスクトップコンピュータ、ノートブックコンピュータ、モバイルデバイス、スマートフォン、またはパーソナルデジタルアシスタントを含み得るが、これらに限定はされない。ネットワーク220は、第1クライアント側マシン205、第2クライアント側マシン210、およびサーバ215が通信を行えるようにするインターネットや他のタイプのネットワークを含む。第1クライアント側マシン205、第2クライアント側マシン210、およびサーバ215のうちの何れのものも、例えば、図5と関連して詳細に説明する計算デバイス500を用いて、インプリメント実施することができる。020図3は、リアルタイムメディア最適化を提供する本発明の実施形態に従った方法300に含まれる段ステージを概略的に記載するフローチャートである。方法300は、上記のリアルタイムメディアシステム200を用いて実施できる。方法300のステージの実施については、以下で詳細に説明する。021方法300は、開始ブロック305から始まり、ステージ310へ進む。ステージ310では、第1クライアント側マシン205が、リモート計算デバイス例えば、第2クライアント側マシン210とのリモートセッションを確立する。例えば、図4に示すように、アプリケーション405はサーバ215で実行される。アプリケーション405はビデオ会議アプリケーションを含む。リモートセッションに従って、第1クライアント側マシン205で動作するシンクライアントは、サーバ215で実行されるアプリケーション405に対応するユーザインターフェース415をレンダリングして表示する。アプリケーション405は、第1クライアント側マシン205と第2クライアント側マシン210との間でのリモートセッションを完成させる。022方法300は、第1クライアント側マシン205がリモートセッションを確立するステージ310からステージ320へと進み、ステージ320において、リモートセッション中に、第1クライアント側マシン205は、サーバパスを介してリモート計算デバイス例えば、第2クライアント側マシン210と、非リアルタイムメディアデータを交換する。交換される非リアルタイムメディアデータは、例えば、第1クライアント側マシン205と第2クライアント側マシン210との間でのビデオ会議セッションに対応する非音声データまたは非映像データである。例えば、非リアルタイムメディアデータは、例えば、緊急の911コールに使用される第1クライアント側マシン205の位置に対応するデータを含むことができる。非リアルタイムメディアデータは、クライアントおよびサーバの能力に関するデータを含むこともできるが、これに限定はされない。それらの能力は、2つのクライアント間での直接通信に影響を与えるように使用することができる。023ステージ320において第1クライアント側マシン205が非リアルタイムメディアデータを交換すると、方法300はステージ330へと続き、ステージ330において、第1クライアント側マシン205は、リモートセッション中に、メディアパス235を介してリモート計算デバイスと、リアルタイムメディアデータを交換する。リアルタイムメディアデータは、音声や映像のデータを含む。本発明の実施形態が、リアルタイムメディアデータに関してサーバパス即ち、第1ホップ225および第2ホップを使用する場合、第1クライアント側マシン205と第2クライアント側マシン210との間の音声/映像データのパスにおいて、追加的なホップ例えば、第1クライアント側マシン205からサーバ215への行程と、サーバ215から第2クライアント側マシン210への行程が存在することになる。それらの追加的なホップは、例えば、第1クライアント側マシン205と第2クライアント側マシン210との間でのリアルタイムの音声/映像データの流れの遅延/レイテンシを増加させ得る。024本発明の実施形態は、第1クライアント側マシン205にリモートメディアマネージャRMM例えば、リモートメディアマネージャアプリケーション410を備え、それにより、リアルタイムメディアデータ例えば、音声/映像や他の様式のものを付加することもできるを捕獲し、エンコードし、サーバ215を関与させずにメディアパス235で第1クライアント側マシン205から第2クライアント側マシン210へ直接的に送信することにより、上記の遅延/レイテンシを避けることができる。更に、RMMは、エンコードされたリアルタイムメディアデータをネットワーク220から受信し例えば、第2クライアント側マシン210からメディアパス235を介して直接に送信される、受信したエンコードされたリアルタイムメディアデータをデコードし、第2クライアント側マシン210から受信してデコードされたリアルタイムメディアデータを、ユーザインターフェース415へと直接的にレンダリングする。RMMは、サーバ215のアプリケーション405と関連して動作する。例えば、アプリケーション405は、第1クライアント側マシン205と接続された入力デバイス例えば、カメラ420やマイクロフォン425および出力デバイス例えば、スピーカ430を用いて、データの送信および受信を行う。RMMも、同じ入力デバイスおよび出力デバイスを使用することができる。従って、RMMは、入力デバイスおよび出力デバイスを共用するめに、サーバ215のアプリケーション405と関連して動作する。言い換えると、入力デバイスおよび出力デバイスは、メディアパス235を介して送信/受信されるデータと、サーバパスを介して送信/受信されるデータとの双方のために共用される。025RMMがサーバ215のアプリケーション405と関連して動作する構成における別の例は、メディアパス235からのデータとサーバパスからのデータとが同期をとられる例である。1つの例は、ジオメトリトラッキングgeometrytracking、幾何学的追跡を含む。ジオメトリトラッキングは、映像をディスプレイ415上の表示すべき位置に配することを可能とする映像データが、第2クライアント側マシン210から直接に送信されて、サーバパスを回避してメディアパス235を介して、第1クライアント側マシン205へ直接に入来した場合。例えばアプリケーション405は、映像領域の位置および形状の情報を、サーバパスを介して第1クライアント側マシン205へ送信する。次に、第1クライアント側マシン205は、アプリケーション405により送られた情報例えば、位置および形状を追跡するプロキシウィンドウに、映像メディアパス235から入来をレンダリングする。アプリケーション405は、映像の位置および形状に関して発生し得る変化について連続的に監視し、その情報により第1クライアント側マシン205の更新を行い続ける。第1クライアント側マシン205は、アプリケーション405の情報によりプロキシウィンドウの更新を行い続ける。このようにして、第1クライアント側マシン205での映像の表示の同期がとられる。026更に、リモートセッション中にメディアパス235を介してリモート計算デバイスとリアルタイムメディアデータを交換する第1クライアント側マシン205は、第1クライアント側マシン205からリモート計算デバイスへのネットワークアドレス変換NATを行う。コンピュータネットワークでは、ネットワークアドレス変換NATは、トラフィックルーティングデバイスを通過するときにデータグラムIPパケットヘッダのネットワークアドレス情報を変更するプロセスを含むが、これは、1つのIPアドレス空間を別のIPアドレス空間へ再びマッピングすることを目的とする。ステージ330において第1クライアント側マシン205がリアルタイムメディアデータを交換した後、方法300はステージ340で終了する。027本発明に従った実施形態は、リアルタイムメディア最適化を提供するシステムを含む。システムは、メモリストレージと、そのメモリストレージに結合される処理ユニットとを備える。処理ユニットは、リモート計算デバイスとのリモートセッションを確立するように動作できる。更に、処理ユニットは、リモートセッション中に、サーバパスを介してリモート計算デバイスと非リアルタイムメディアデータを交換するように動作し、かつ、リモートセッション中に、メディアパスを介してリモート計算デバイスとリアルタイムメディアデータを交換するように動作する。028本発明に従った別の実施形態は、リアルタイムメディア最適化を提供するシステムを含む。システムは、メモリストレージと、そのメモリストレージに結合される処理ユニットとを備える。処理ユニットは、ローカル計算デバイスとリモート計算デバイスとの間のリモートセッションを確立するように動作できる。更に、処理ユニットは、リモートセッション中に、サーバを含むサーバパスを介して、ローカル計算デバイスとリモート計算デバイスとの間で、非リアルタイムメディアデータを交換するように動作する。更に、処理ユニットは、リモートセッション中に、メディアパスを介して、ローカル計算デバイスとリモート計算デバイスとの間で、音声データおよび映像データを含むリアルタイムメディアデータを交換するように動作する。メディアパス中にサーバは無い。029本発明に従った更に別の実施形態は、リアルタイムメディア最適化を提供するシステムを含む。システムは、メモリストレージと、そのメモリストレージに結合される処理ユニットとを備える。処理ユニットは、リモート計算デバイスとのリモートセッションを確立するように動作できる。リモートセッションを確立するように動作する処理ユニットは、サーバパスを確立するように動作する。サーバパスにはサーバが含まれている。また、処理ユニットは、メディアパスを確立するように動作する。サーバパスにはサーバが含まれておらず、メディアパスはリモート計算デバイスと直接的に確立される。更に、処理ユニットは、リモートセッション中に、サーバパスを介して、リモート計算デバイスと非リアルタイムメディアデータを交換するように動作する。更に、処理ユニットは、リモートセッション中に、メディアパスを介して、リモート計算デバイスとリアルタイムメディアデータを交換するように動作する。030図5は、計算デバイス500を含むシステムのブロック図である。本発明の実施形態に従うと、上記のメモリストレージおよび処理ユニットは、図5の計算デバイス500などのような計算デバイスにおいて実施される。メモリストレージおよび処理ユニットは、ハードウェア、ソフトウェア、およびファームウェアの任意の適切な組み合わせにより実現できる。更に、計算デバイス500は、仮想マシンでも物理マシンでも動作できる。例えば、メモリストレージおよび処理ユニットは、計算デバイス500を用いて、または他の任意の計算デバイス518を計算デバイス500と組み合わせて用いて、実現することができる。上記のシステム、デバイス、および処理装置は例であり、本発明の実施形態に従って、他のシステム、デバイス、および処理装置により上記のメモリストレージおよび処理ユニットを構成することもできる。更に、計算デバイス500は、上記のように、第1クライアント側マシン205や第2クライアント側マシン210のための動作環境を構成することができる。第1クライアント側マシン205や第2クライアント側マシン210は、別の環境でも動作することができ、計算デバイス500に限定されない。031図5に関して、本発明の実施形態に従ったシステムは、計算デバイス500などのような計算デバイスを含む。基本的な構成では、計算デバイス500は、少なくとも1つの処理ユニット502およびシステムメモリ504を含む。計算デバイスのコンフィギュレーションおよびタイプに応じて、システムメモリ504は、揮発性メモリ例えば、ランダムアクセスメモリRAM、不揮発性メモリ例えば、リードオンリメモリROM、フラッシュメモリ、またはこれらのメモリの組み合わせを含むが、これらに限定はされない。システムメモリ504は、オペレーティングシステム505、1以上のプログラミングモジュール506、およびプログラムデータ507を含むことができる。オペレーティングシステム505は、例えば、計算デバイス500の動作を制御するために適切なものである。1つの実施形態では、プログラミングモジュール506は、例えば、リモートメディアマネージャアプリケーション410を含む。更に、本発明の実施形態は、グラフィックスライブラリ、他のオペレーティングシステム、または任意の他のアプリケーションプログラムと関連して実施することができ、特定のアプリケーションやシステムに限定されない。この基本的な構成は、図5において破線508で囲んだコンポーネントとして示されている。032計算デバイス500は更なる特徴や機能を有する。例えば、計算デバイス500は、例えば、磁気ディスク、光ディスク、テープなどのような追加のデータストレージデバイス取り外し可能なものおよび/または取り外し不可能なものを含むこともできる。そのような追加のストレージは、図5において、取り外し可能ストレージ509および取り外し不可能ストレージ510として示している。計算デバイス500はまた、通信接続516を含むことができ、この通信接続516により、デバイス500は、例えば、インターネットやイントラネットなどのような分散型計算環境におけるネットワークを介して、他の計算デバイス518と通信することが可能となる。通信接続516は、通信媒体の一例である。033ここで使用するコンピュータ読取可能媒体という用語は、コンピュータストレージ媒体を含む。コンピュータストレージ媒体は、揮発性の媒体、不揮発性の媒体、取り外し可能な媒体、および取り外し不可能な媒体を含むことができ、これらの媒体は、情報を記憶する任意の方法や技術、例えば、コンピュータ読取可能命令、データ構造、プログラミングモジュール、他のデータなどにより実現できる。システムメモリ504、取り外し可能ストレージ509、および取り外し不可能ストレージ510は、全てコンピュータストレージ媒体の例即ち、メモリストレージである。コンピュータストレージ媒体は、RAM、ROM、電子的消去可能リードオンリメモリEEPROM、フラッシュメモリや他のメモリ技術、CD-ROM、デジタルバーサタイルディスクDVDや他の光学ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージや他の磁気ストレージデバイス、または情報を記憶するために使用でき且つ計算デバイス500によりアクセス可能な任意の他の媒体などを含むが、これらに限定はされない。このようなコンピュータストレージ媒体は、デバイス500の一部であり得る。また、計算デバイス500は、キーボード、マウス、ペン、音声入力デバイス、接触タッチ入力デバイスなどのような入力デバイス5121以上を有する。また、ディスプレイ、スピーカ、プリンタなどのような出力デバイス5141以上も有する。なお、上記のデバイスは例であり、他のものを使用することもできる。034また、ここで使用するコンピュータ読取可能媒体という用語は、通信媒体も含む。通信媒体には、コンピュータ読取可能命令、データ構造、プログラムモジュール、変調されたデータ信号内のデータなどが埋め込まれる。変調されたデータ信号とは、搬送波や他のトランスポート機構などである。通信媒体は、任意の情報受渡媒体を含む。変調されたデータ信号という用語は、変調されたデータ信号という用語は、情報を信号内にエンコードするような様式で設定または変更されて1以上の特性を有する信号、を意味する。例えば、通信媒体は、有線ネットワークや直接有線接続などのような有線媒体と、音響、無線周波数RF、赤外線、および他のワイヤレスの媒体などのようなワイヤレス媒体とを含むが、これらに限定はされない。035上記のように、オペレーティングシステム505も含めて、多数のプログラムモジュールおよびデータファイルをシステムメモリ504に記憶することができる。処理ユニット502で実行する際、プログラミングモジュール506例えば、リモートメディアマネージャアプリケーション410は、例えば、上記の方法300の1以上のステージを含む処理を行う。なお、上記の処理は例であり、処理ユニット502は他の処理を行うこともできる。本発明の実施形態に従って使用できる他のプログラミングモジュールには、電子メールやコンタクトアプリケーションcontactsapplication、ワードプロセッシングアプリケーション、スプレッドシートアプリケーション、データベースアプリケーション、スライドプレゼンテーションアプリケーション、描画やコンピュータ支援のアプリケーションなどが含まれる。036本発明の実施形態に従うと、一般に、プログラムモジュールは、ルーチン、プログラム、コンポーネント、データ構造、および他のタイプの構造などを含み、それらは、特定のタスクを行うか、または特定の抽象データ型を実現する。更に、本発明の実施形態は他のコンピュータシステム構成を用いて実施することができ、他のコンピュータシステム構成には、手持型のデバイス、マルチプロセッサシステム、マイクロプロセッサベースまたはプログラマブルの大衆消費電子製品、ミニコンピュータ、メインフレームコンピュータなどが含まれる。また、本発明の実施形態は分散型計算環境でも実施することができ、その場合、タスクは、通信ネットワークを通じてリンクされるリモート処理デバイスにより行われる。分散型計算環境では、プログラムモジュールは、ローカルのメモリストレージデバイスおよびリモートのメモリストレージデバイスの双方に配されることができる。037更に、本発明の実施形態は電子回路で実施することができ、電子回路は、個別の電子エレメント、論理ゲートを含むパッケージ化または集積化された電子チップ、マイクロプロセッサを用いる回路、電子回路やマイクロプロセッサを含むシングルチップなどを含む。また、本発明の実施形態は、例えば、AND、OR、NOTなどのような論理演算を行うことができる他の技術を用いて実施することができ、他の技術には、機械的技術、光学的技術、流体工学的技術、量子学的技術が含まれるが、これらに限定はされない。更に、本発明の実施形態は、汎用コンピュータや、任意の他の回路やシステムで実施することができる。038本発明の実施形態は、例えば、コンピュータプロセス方法、計算システム、または製造品として実現でき、製造品には、コンピュータプログラム製品やコンピュータ読取可能媒体などが含まれる。コンピュータプログラム製品は、コンピュータ記録媒体とすることができ、コンピュータ記録媒体は、コンピュータシステムにより読取可能であり、コンピュータプロセスを実行するための命令のコンピュータプログラムがエンコードされたものである。また、コンピュータプログラム製品は、搬送体を伝搬する伝搬信号とすることがてき、この伝搬信号は、コンピュータシステムにより読取可能であり、コンピュータプロセスを実行するための命令のコンピュータプログラムがエンコードされたものである。従って、本発明は、ハードウェアおよび/またはソフトウェアファームウェア、常駐ソフトウェア、マイクロコードなどを含むで実現できる。言い換えると、本発明の実施形態は、コンピュータで使用可能または読取可能な記録媒体上のコンピュータプログラム製品の形態とすることができ、記録媒体には、コンピュータで使用可能または読取可能なプログラムコードが埋め込まれており、プログラムコードは、命令実行システムにより、または命令実行システムと関連して、使用される。コンピュータで使用可能または読取可能な媒体は任意の媒体とすることができるが、その任意の媒体は、命令実行システムにより、または命令実行システムと関連して使用されるプログラムの包含、記憶、通信、伝搬、またはトランスポートを行うことができるものとする。039コンピュータで使用可能または読取可能な記録媒体は、例えば、電子、磁気、光学、電磁、赤外線、または半導体の技術を用いるシステム、装置、デバイス、または伝搬媒体とすることができる。より特定的なコンピュータ読取可能媒体の例網羅するものではないとして、コンピュータ読取可能媒体は、1以上の配線を含む電気的接続、ポータブルコンピュータディスケット、ランダムアクセスメモリRAM、リードオンリメモリROM、消去可能プログラマブルリードオンリメモリEPROMやフラッシュメモリ、光ファイバ、およびポータブルコンパクトディスクリードオンリメモリCD-ROMを含む。なお、コンピュータで使用可能または読取可能な記録媒体は、更には、プログラムをプリントできる紙や他の適切な媒体とすることができる。なぜなら、プログラムは、例えば、紙や他の媒体を光学スキャニングすることにより電子的に捕獲し、コンパイルし、解釈することができ、また、必要に応じて適切な様式で処理することができ、コンピュータのメモリへ記憶することができるからである。040例えば、本発明の実施形態は、上記で、本発明の実施形態に従った方法、システム、およびコンピュータプログラム製品のブロック図および/または動作図を参照して説明した。ブロックに記載した機能/動作は、フローチャートに示した順と異なる順で行われる場合もある。行われる機能/動作に応じて、例えば、連続して示された2つのブロックが、実際には、実質的に並列に行われる場合もあり、また、2つのブロックが逆の順に行われる場合もある。041本発明の特定の実施形態について説明したが、他の実施形態も存在し得る。更に、本発明の実施形態は、メモリおよび他の記録媒体に記憶されたデータと関連するものとして説明したが、データは、他のタイプのコンピュータ読取可能媒体へ記憶することや、他のタイプのコンピュータ読取可能媒体から読み出すことができる。他のタイプのコンピュータ読取可能媒体としては、ハードディスク、フロッピー登録商標ディスク、CD-ROMなどのような2次ストレージデバイスや、インターネットからの搬送波や、他の形態のROMやRAMなどがある。更に、ここで開示した方法のステージは、本発明から離れることなく、ステージの順の変更やステージの挿入や削除などを行うことにより、任意の様式に変更することができる。042本出願に含まれるコードにおける著作権を含む全ての権利は、出願人に帰属するものであり、出願人の財産である。出願人は、本出願に含まれるコードにおける全ての権利を保持および保有しており、特許査定された発明を複製することに関してのみ、具体物を複製する許可を与えるが、他の目的のための許可は与えない。043明細書は例を含んでいるが、本発明の範囲は特許請求の範囲に示されている。更に、明細書は、構造的な特徴や方法論的な動作に対して特定的な言語で記載されているが、特許請求の範囲は上記の特徴や動作に制限されるものではない。むしろ、上記の特定の特徴や動作は、本発明の実施形態のための例として開示されたものである。