(57)【特許請求の範囲】
【請求項１】
複数個のデバイスにわたる複合アプリケーションを実行するためのコンピュータ実装方法であって、
第１の変換チェーンクラスと第２の変換チェーンクラスとの間の依存関係を相互に定義する、第１の変換チェーンクラス定義および第２の変換チェーンクラス定義を少なくとも取得することによって、前記第１の変換チェーンクラスと前記第２の変換チェーンクラスとの間の依存関係を識別するステップと、
前記第１の変換チェーンクラスの第１のインスタンスに関連付けられる第１のデバイスを識別するステップと、
前記第２の変換チェーンクラスの第２のインスタンスに関連付けられる第２のデバイスを識別するステップと、
前記第１のインスタンスと前記第２のインスタンスが結び付けられるべきであると決定するステップと、
前記第１のインスタンスと前記第２のインスタンスが結び付けられるべきであると決定することに応答して、前記第１のインスタンスと前記第２のインスタンスを結び付けるステップと、
前記第１の変換チェーンクラスと前記第２の変換チェーンクラスとの間の前記識別される依存関係に従って、および、前記第１のインスタンスと前記第２のインスタンスとの間の依存関係状態に従って、前記第１のインスタンスと前記第２のインスタンスとの間でデータを流すステップと
を含む、コンピュータ実装方法。
【請求項２】
前記第１の変換チェーンクラスの前記第１のインスタンスは、前記第１のデバイス上の視覚化を推進する１つまたは複数のノードを備える、請求項１に記載のコンピュータ実装方法。
【請求項３】
前記第２のインスタンスが前記第１のインスタンスから結合解除されるべきであると決定するステップと、
前記第２のインスタンスが前記第１のインスタンスから結合解除されるべきであると決定することに応答して、前記第１のインスタンスと前記第２のインスタンスとの間でデータを流す行為を中断するステップと
をさらに含む、請求項１に記載のコンピュータ実装方法。
【請求項４】
前記第１のインスタンスと前記第２のインスタンスが結合解除されるべきであると決定することは、前記第１のデバイスおよび前記第２のデバイスの近接度、ミーティング終結ステータス、ならびに、前記第１のデバイスと前記第２のデバイスとの間の通信能力の、少なくとも１つを含む、１つまたは複数の結合解除判定基準に従ってなされる、請求項３に記載のコンピュータ実装方法。
【請求項５】
前記第１のインスタンスと前記第２のインスタンスが結び付けられるべきであると決定することは、前記第１のデバイスおよび前記第２のデバイスの近接度、ミーティング出席者リスト、前記第１のデバイスのユーザと前記第２のデバイスのユーザとの間の関係性、ならびに、前記第１のデバイスと前記第２のデバイスとの間の通信能力の、少なくとも１つを含む、１つまたは複数の結び付き判定基準に従ってなされる、請求項１に記載のコンピュータ実装方法。
【請求項６】
前記第１のデバイスまたは前記第２のデバイスを含まない外部システムにより実行される、請求項１に記載のコンピュータ実装方法。
【請求項７】
コンピューティングシステムの１つまたは複数のプロセッサによって実行可能なコンピュータ実行可能命令を記憶する１つまたは複数のコンピュータ可読記憶媒体であって、前記コンピュータ実行可能命令は、前記コンピューティングシステムに方法を実行させ、前記方法は、
第１の変換チェーンクラスと第２の変換チェーンクラスとの間の依存関係を相互に定義する、第１の変換チェーンクラス定義および第２の変換チェーンクラス定義を少なくとも取得することによって、第１の変換チェーンインスタンスを含む前記第１の変換チェーンクラスと、第２の変換チェーンインスタンスを含む前記第２の変換チェーンクラスとの間の依存関係を識別するステップと、
前記第１の変換チェーンインスタンスと前記第２の変換チェーンインスタンスが結び付けられるべきであると決定するステップと、
前記第１の変換チェーンインスタンスと前記第２の変換チェーンインスタンスが結び付けられるべきであると決定することに応答して、前記第１の変換チェーンインスタンスと前記第２の変換チェーンインスタンスを結び付けるステップと、
前記識別される依存関係に従って、および、前記第１の変換チェーンインスタンスと前記第２の変換チェーンインスタンスとの間の依存関係状態に従って、前記第１の変換チェーンインスタンスと前記第２の変換チェーンインスタンスとの間でデータを流すステップと
を含む、１つまたは複数のコンピュータ可読記憶媒体。
【請求項８】
１つまたは複数のプロセッサと、
前記１つまたは複数のプロセッサによって実行可能なコンピュータ実行可能命令を記憶する１つまたは複数のコンピュータ可読記憶媒体であって、前記コンピュータ実行可能命令は、コンピューティングシステムに、
第１の変換チェーンクラスと第２の変換チェーンクラスとの間の依存関係を相互に定義する、第１の変換チェーンクラス定義および第２の変換チェーンクラス定義を少なくとも取得することによって、第１の変換チェーンインスタンスを含む前記第１の変換チェーンクラスと、第２の変換チェーンインスタンスを含む前記第２の変換チェーンクラスとの間の依存関係を識別させ、
前記第１の変換チェーンインスタンスと前記第２の変換チェーンインスタンスが結び付けられるべきであると決定させ、
前記第１の変換チェーンインスタンスと前記第２の変換チェーンインスタンスが結び付けられるべきであると決定することに応答して、前記第１の変換チェーンインスタンスと前記第２の変換チェーンインスタンスを結び付けさせ、
前記識別される依存関係に従って、および、前記第１の変換チェーンインスタンスと前記第２の変換チェーンインスタンスとの間の依存関係状態に従って、前記第１の変換チェーンインスタンスと前記第２の変換チェーンインスタンスとの間でデータを流させる、１つまたは複数のコンピュータ可読記憶媒体と
を備える、コンピューティングシステム。
【請求項９】
複数個のデバイスにわたる複合アプリケーションを実行するためのコンピュータ実装方法であって、
第１の変換チェーンクラスと第２の変換チェーンクラスとの間の依存関係を識別するステップと、
前記第１の変換チェーンクラスの第１のインスタンスに関連付けられる第１のデバイスを識別するステップと、
前記第２の変換チェーンクラスの第２のインスタンスに関連付けられる第２のデバイスを識別するステップと、
前記第１のインスタンスと前記第２のインスタンスが結び付けられるべきであると決定するステップと、
前記第１のインスタンスと前記第２のインスタンスが結び付けられるべきであると決定することに応答して、前記第１のインスタンスと前記第２のインスタンスを結び付けるステップと、
前記第１の変換チェーンクラスと前記第２の変換チェーンクラスとの間の前記識別される依存関係に従って、および、前記第１のインスタンスと前記第２のインスタンスとの間の依存関係状態に従って、前記第１のインスタンスと前記第２のインスタンスとの間でデータを流すステップと、
前記第２のインスタンスが前記第１のインスタンスから結合解除されるべきであると決定するステップと、
前記第２のインスタンスが前記第１のインスタンスから結合解除されるべきであると決定することに応答して、前記第１のインスタンスと前記第２のインスタンスとの間でデータを流す行為を中断するステップと
を含む、コンピュータ実装方法。
【請求項１０】
複数個のデバイスにわたる複合アプリケーションを実行するためのコンピュータ実装方法であって、
第１の変換チェーンクラスと第２の変換チェーンクラスとの間の依存関係を識別するステップと、
前記第１の変換チェーンクラスの第１のインスタンスに関連付けられる第１のデバイスを識別するステップと、
前記第２の変換チェーンクラスの第２のインスタンスに関連付けられる第２のデバイスを識別するステップと、
少なくとも前記第１のデバイスおよび前記第２のデバイスの近接度を含む、１つまたは複数の結び付き判定基準に従って、前記第１のインスタンスと前記第２のインスタンスが結び付けられるべきであると決定するステップと、
前記第１のインスタンスと前記第２のインスタンスが結び付けられるべきであると決定することに応答して、前記第１のインスタンスと前記第２のインスタンスを結び付けるステップと、
前記第１の変換チェーンクラスと前記第２の変換チェーンクラスとの間の前記識別される依存関係に従って、および、前記第１のインスタンスと前記第２のインスタンスとの間の依存関係状態に従って、前記第１のインスタンスと前記第２のインスタンスとの間でデータを流すステップと
を含む、コンピュータ実装方法。
【発明の詳細な説明】
【背景技術】
【０００１】
[0001]  コンピューティング技術は、私たちがどのように作業する、遊ぶ、および通信するかに大変革を起こした。コンピューティング技術が進展したのと同様に、そのようなコンピューティングシステムを実施する、または、コンピューティングシステムからのコンテンツを表示する、デバイスの多様性が進展した。例えばコンピューティングシステムは、サーバラック、デスクトップコンピュータ、ラップトップコンピュータ、タブレット、スマートフォン、ゲーミングコンソール、時計、冷蔵庫、スマートハウスなどの形式をとり得る。
【０００２】
[0002]  コンピューティングシステムの多様性とともに、コンピュータに対するコンピューティング出力および入力情報をレンダリングするために使用され得るデバイスのタイプが、同様に多様化した。例えば出力デバイスは、プロジェクタ、テレビジョンモニタ、３次元ディスプレイ、ラップトップ、タブレットコンピュータ、電話などのディスプレイを含み得る。出力デバイスは、スピーカなどの音のための出力を含み得る。出力デバイスはさらには、作動器、発光体、バルブなどを含み得る。入力デバイスは、キーボード、ポインタデバイス（マウスなど）、タッチスクリーン、マイクロホン、ビデオカメラ、スチルカメラ、３次元位置検出器、全地球測位システムモニタ、光センサ、加速度計、温度計、コンパスなどを含み得る。
【０００３】
[0003]  コンピューティングシステム、ならびに、関連付けられる入力および出力デバイスは、かなり豊富に、しばしば移動型になった。しばしば、何らかの所与の場所に、大きな数の、および多種多様のデバイスが存在する場合がある。例えば、十分に出席者のいる平均的な会議室では、オーバーヘッドプロジェクタ、テレビジョンスクリーン、ラップトップ、タブレット、スマートフォン、マイクロホン、カメラ、照明などがある場合がある。従来の方法は、各々のデバイスが、自身のアプリケーションを実行する、または、単一のアプリケーションからのコンテンツを表示することである。アプリケーション同士がインタラクションするとき、それらはしばしば、アプリケーションプログラムインターフェイスを介してインタラクションする別々のアプリケーションとしてインタラクションする。
【０００４】
[0004]  特許請求の範囲に記載されている主題は、何らかの欠点を解決する、または、上記で説明したものなどの環境でのみ動作する実施形態に制限されない。むしろ本背景技術は単に、本明細書で説明する一部の実施形態が実施され得る、１つの例示的な技術領域を示すために提供されるものである。
【発明の概要】
【０００５】
[0005]  本明細書で説明する少なくとも一部の実施形態は、複数個のデバイスに関連付けられる構成変換チェーンを使用して、複数個のデバイスにわたって動作される複合アプリケーションに関係する。依存関係（dependency）が、異なる変換チェーンクラス間で識別される。また、複数のデバイスが、変換チェーンクラスのうち、これらのデバイスに関連付けられるインスタンスとともに識別される。異なるデバイスに関連付けられる変換チェーンインスタンス同士が結び付けられるべきであると決定したとき、関連付けられる変換チェーンインスタンスのそれらのデバイスのそれぞれのクラス間の識別される依存性（dependence）に従って、および、インスタンス間の依存関係状態に従って、データは様々なデバイス間で流れることを許可される。このようにして、複合変換チェーンが形成される。一部の実施形態では、デバイスが環境を出る際に、関連付けられる変換チェーンインスタンスが、複合変換チェーンから除去され得る。したがって、デバイスは相互運用アプリケーションを有するのではなく、デバイスは、同じ複合アプリケーションに相互に関与するようになる。新しいデバイスが環境に入る際に、または、デバイスが環境を出る際に、複合アプリケーションそれ自体が変化する。
【０００６】
[0006]  本概要は、特許請求の範囲に記載されている主題の主要な特徴または本質的な特徴を識別することは意図されず、本概要は、特許請求の範囲に記載されている主題の範囲を決定する一助として使用されることもまた意図されない。
【０００７】
[0007]  上記で説述した、および他の、利点および特徴をどのように得ることができるかを説明するために、様々な実施形態のより詳細な説明を、添付の図面を参照して示す。これらの図面は、例示の実施形態のみを図示するものであり、したがって、本発明の範囲に関して制限的であると考えるべきではないことを理解して、実施形態を、追加の特殊性および詳細とともに、付随する図面の使用によって説明および解説する。
【図面の簡単な説明】
【０００８】
【図１】[0008]本明細書で説明する一部の実施形態が用いられ得るコンピューティングシステムを抽象的に示す図である。
【図２】[0009]単純な変換チェーンを抽象的に示す図であり、単一のデータソースおよび単一のデータターゲットを結合する単一のリンクだけが存在し、リンクにより表される変換は、データソースでの値を入力として使用して、データターゲットでの値を生成して、自動的に行われる。
【図３】[0010]別の単純な例示的な変換チェーンを抽象的に示す図であり、変換は、２つのデータターゲットでの出力値を生成するために、３つのデータソースからの入力値を使用して行われる。
【図４】[0011]図２の変換チェーンおよび図３の変換チェーンの組み合わせの形式での変換チェーンを示す図である。
【図５】[0012]本明細書で説明する原理が動作し得る例示的な環境を示す図であり、その環境は、複合アプリケーションの構成変換チェーンに関連付けられる複数個のデバイスを含み、さらには、入力デバイスおよび出力デバイスを含む。
【図６Ａ】[0013]図５でのそれぞれのデバイスに関連付けられ得る、例示的な変換チェーンを示す図である（別の変換チェーンとの結び付きがないのでデータが流れない矢印は、「X」によって示され、それ自体は変換チェーン内のノードではない依存関係要素は、破線の縁によって示される）。
【図６Ｂ】[0013]図５でのそれぞれのデバイスに関連付けられ得る、例示的な変換チェーンを示す図である（別の変換チェーンとの結び付きがないのでデータが流れない矢印は、「X」によって示され、それ自体は変換チェーン内のノードではない依存関係要素は、破線の縁によって示される）。
【図６Ｃ】[0013]図５でのそれぞれのデバイスに関連付けられ得る、例示的な変換チェーンを示す図である（別の変換チェーンとの結び付きがないのでデータが流れない矢印は、「X」によって示され、それ自体は変換チェーン内のノードではない依存関係要素は、破線の縁によって示される）。
【図６Ｄ】[0013]図５でのそれぞれのデバイスに関連付けられ得る、例示的な変換チェーンを示す図である（別の変換チェーンとの結び付きがないのでデータが流れない矢印は、「X」によって示され、それ自体は変換チェーン内のノードではない依存関係要素は、破線の縁によって示される）。
【図７Ａ】[0014]図６Ａおよび６Ｂの変換チェーンの結び付きを表す、拡大された変換チェーンを示す図である。
【図７Ｂ】[0015]図６Ａおよび６Ｃの変換チェーンの結び付きを表す、拡大された変換チェーンを示す図である。
【図７Ｃ】[0016]図６Ｂおよび６Ｃの変換チェーンの結び付きを表す、拡大された変換チェーンを示す図である。
【図７Ｄ】[0017]図６Ａおよび６Ｄの変換チェーンの結び付きを表す、拡大された変換チェーンを示す図である。
【図８Ａ】[0018]図６Ａ、６Ｂ、および６Ｃの変換チェーンの結び付きを表す、拡大された変換チェーンを示す図である。
【図８Ｂ】[0019]図６Ａ、６Ｂ、および６Ｄの変換チェーンの結び付きを表す、拡大された変換チェーンを示す図である。
【図８Ｃ】[0020]図６Ａ、６Ｃ、および６Ｄの変換チェーンの結び付きを表す、拡大された変換チェーンを示す図である。
【図９】[0021]図６Ａ、６Ｂ、６Ｃ、および６Ｄの変換チェーンの結び付きを表す、拡大された変換チェーンを示す図である。
【図１０】[0022]複合アプリケーションの実行を準備するための方法のフローチャートを示す図である。
【図１１】[0023]図１０、１２、１３、および１４の方法を実行するために使用され得るものであり、変換チェーンクラス定義のライブラリ、およびデバイスレジストリ、ならびに提示サービスを含む、システムを抽象的に示す図である。
【図１２】[0024]変換チェーンクラスの２つのインスタンスを結び付けるための方法のフローチャートを示す図である。
【図１３】[0025]変換チェーンを、より大きな変換チェーンから結合解除するための方法のフローチャートを示す図である。
【図１４】[0026]変換チェーンの１つまたは複数の提示ノードの変化を、適切なデバイス上にレンダリングするための方法のフローチャートを示す図である。
【図１５Ａ】[0027]ユーザがいくつかのデバイスを注文しようとする、本明細書では「デバイスシナリオ」と称するシナリオで体験され得る様々なユーザインターフェイスを示す図である。
【図１５Ｂ】[0027]ユーザがいくつかのデバイスを注文しようとする、本明細書では「デバイスシナリオ」と称するシナリオで体験され得る様々なユーザインターフェイスを示す図である。
【図１５Ｃ】[0027]ユーザがいくつかのデバイスを注文しようとする、本明細書では「デバイスシナリオ」と称するシナリオで体験され得る様々なユーザインターフェイスを示す図である。
【図１５Ｄ】[0027]ユーザがいくつかのデバイスを注文しようとする、本明細書では「デバイスシナリオ」と称するシナリオで体験され得る様々なユーザインターフェイスを示す図である。
【図１５Ｅ】[0027]ユーザがいくつかのデバイスを注文しようとする、本明細書では「デバイスシナリオ」と称するシナリオで体験され得る様々なユーザインターフェイスを示す図である。
【図１５Ｆ】[0027]ユーザがいくつかのデバイスを注文しようとする、本明細書では「デバイスシナリオ」と称するシナリオで体験され得る様々なユーザインターフェイスを示す図である。
【図１５Ｇ】[0027]ユーザがいくつかのデバイスを注文しようとする、本明細書では「デバイスシナリオ」と称するシナリオで体験され得る様々なユーザインターフェイスを示す図である。
【図１５Ｈ】[0027]ユーザがいくつかのデバイスを注文しようとする、本明細書では「デバイスシナリオ」と称するシナリオで体験され得る様々なユーザインターフェイスを示す図である。
【図１５Ｉ】[0027]ユーザがいくつかのデバイスを注文しようとする、本明細書では「デバイスシナリオ」と称するシナリオで体験され得る様々なユーザインターフェイスを示す図である。
【図１５Ｊ】[0027]ユーザがいくつかのデバイスを注文しようとする、本明細書では「デバイスシナリオ」と称するシナリオで体験され得る様々なユーザインターフェイスを示す図である。
【図１５Ｋ】[0028]図１５Ａ〜１５Ｊのデバイスシナリオで使用される複合アプリケーションを変化させるために遭遇し得る様々なユーザインターフェイスを示す図である。
【図１５Ｌ】[0028]図１５Ａ〜１５Ｊのデバイスシナリオで使用される複合アプリケーションを変化させるために遭遇し得る様々なユーザインターフェイスを示す図である。
【図１５Ｍ】[0028]図１５Ａ〜１５Ｊのデバイスシナリオで使用される複合アプリケーションを変化させるために遭遇し得る様々なユーザインターフェイスを示す図である。
【図１５Ｎ】[0028]図１５Ａ〜１５Ｊのデバイスシナリオで使用される複合アプリケーションを変化させるために遭遇し得る様々なユーザインターフェイスを示す図である。
【図１５Ｏ】[0028]図１５Ａ〜１５Ｊのデバイスシナリオで使用される複合アプリケーションを変化させるために遭遇し得る様々なユーザインターフェイスを示す図である。
【発明を実施するための形態】
【０００９】
[0029]  本明細書で説明する少なくとも一部の実施形態は、複数個のデバイスに関連付けられる構成変換チェーンを使用して、複数個のデバイスにわたって動作される複合アプリケーションに関係する。依存関係が、異なる変換チェーンクラス間で識別される。また、複数のデバイスが、変換チェーンクラスのうち、これらのデバイスに関連付けられるインスタンスとともに識別される。異なるデバイスに関連付けられる変換チェーンインスタンス同士が結び付けられるべきであると決定したとき、関連付けられる変換チェーンインスタンスのそれらのデバイスのそれぞれのクラス間の識別される依存性に従って、および、インスタンス間の依存関係状態に従って、データは様々なデバイス間で流れることを許可される。このようにして、複合変換チェーンが形成される。一部の実施形態では、デバイスが環境を出る際に、関連付けられる変換チェーンインスタンスが、複合変換チェーンから除去され得る。したがって、デバイスは相互運用アプリケーションを有するのではなく、デバイスは、同じ複合アプリケーションに相互に関与するようになる。新しいデバイスが環境に入る際に、または、デバイスが環境を出る際に、複合アプリケーションそれ自体が変化する。
【００１０】
[0030]  コンピューティングシステムのいくらかの導入の考察を、図１に関して説明する。次いで複合デバイスアプリケーション技術を、後続の図に関して説明する。
【００１１】
[0031]  コンピューティングシステムは今や、ますます多種多様の形式をとっている。コンピューティングシステムは例えば、ハンドヘルドデバイス、アプライアンス、ラップトップコンピュータ、デスクトップコンピュータ、メインフレーム、分散型コンピューティングシステム、さらには、従来はコンピューティングシステムと考えられなかったデバイスであり得る。本説明では、および特許請求の範囲では、用語「コンピューティングシステム」は、少なくとも１つの物理および有形プロセッサ、ならびに、プロセッサにより実行され得るコンピュータ実行可能命令を有する能力のある物理および有形メモリを含む、任意のデバイスまたはシステム（または、それらの組み合わせ）を含むと、広範に定義される。メモリは、任意の形式をとり得るものであり、コンピューティングシステムの性質および形式に依存し得る。コンピューティングシステムは、ネットワーク環境にわたって分散型であり得るものであり、複数個の構成コンピューティングシステムを含み得る。
【００１２】
[0032]  図１で示すように、その大部分の基本構成では、コンピューティングシステム１００は典型的には、少なくとも１つのハードウェア処理ユニット１０２およびメモリ１０４を含む。メモリ１０４は、揮発性、不揮発性、またはその２つの何らかの組み合わせであり得る、物理システムメモリであり得る。用語「メモリ」はさらには、本明細書では、物理記憶媒体などの不揮発性大容量記憶装置を指すために使用され得る。コンピューティングシステムが分散型である場合、処理、メモリ、および／または記憶能力もまた分散型であり得る。本明細書では、用語「実行可能モジュール」または「実行可能コンポーネント」は、コンピューティングシステム上で実行され得る、ソフトウェアオブジェクト、ルーティング、または方法を指す場合がある。本明細書で説明する異なるコンポーネント、モジュール、エンジン、およびサービスは、コンピューティングシステム上で実行するオブジェクトまたはプロセスとして（例えば、別々のスレッドとして）実装され得る。
【００１３】
[0033]  後に続く説明では、実施形態を、１つまたは複数のコンピューティングシステムにより行われる行為を参照して説明する。そのような行為がソフトウェアで実装される場合、行為を行う関連付けられるコンピューティングシステムの１つまたは複数のプロセッサは、コンピューティングシステムのオペレーションを、コンピュータ実行可能命令を実行したことに応答して指図する。例えばそのようなコンピュータ実行可能命令は、コンピュータプログラム製品を形成する１つまたは複数のコンピュータ可読媒体上で実施され得る。そのようなオペレーションの例は、データの操作を含む。コンピュータ実行可能命令（および、操作されるデータ）は、コンピューティングシステム１００のメモリ１０４に記憶され得る。コンピューティングシステム１００はさらには、通信チャネル１０８を含み得るものであり、その通信チャネル１０８は、コンピューティングシステム１００が、他のメッセージプロセッサと、例えばネットワーク１１０を介して通信することを可能とする。
【００１４】
[0034]  コンピューティングシステム１００はさらには、ディスプレイ、スピーカ、発光体、作動器などの、出力レンダリングコンポーネントを含む可能性がある。コンピューティングシステム１００はさらには、キーボード、ポインタデバイス（マウスまたはトラッキングパッドなど）、ボイス認識デバイス、および、場合によってはさらには物理センサ（例えば、温度計、全地球測位システム、光検出器、コンパス、加速度計など）などの入力コンポーネントを含み得る。
【００１５】
[0035]  本明細書で説明する実施形態は、下記でより詳細に考察するように、例えば１つまたは複数のプロセッサおよびシステムメモリなどのコンピュータハードウェアを含む、専用または汎用コンピュータを、備え得る、または利用し得る。本明細書で説明する実施形態はさらには、コンピュータ実行可能命令および／またはデータ構造を、搬送または記憶するための、物理および他のコンピュータ可読媒体を含む。そのようなコンピュータ可読媒体は、汎用または専用コンピュータシステムによりアクセスされ得る、任意の利用可能な媒体であり得る。コンピュータ実行可能命令を記憶するコンピュータ可読媒体は、物理記憶媒体である。コンピュータ実行可能命令を搬送するコンピュータ可読媒体は、伝送媒体である。したがって例としては、および制限としてではなく、本発明の実施形態は、少なくとも２つの明確に異なる種類のコンピュータ可読媒体、すなわちコンピュータ記憶媒体および伝送媒体を備え得る。
【００１６】
[0036]  コンピュータ記憶媒体は、コンピュータ実行可能命令またはデータ構造の形式での所望のプログラムコード手段を記憶するために使用され得る、および、汎用または専用コンピュータによりアクセスされ得る、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、ＣＤ−ＲＯＭもしくは他の光学ディスク記憶装置、磁気ディスク記憶装置もしくは他の磁気記憶デバイス、または、任意の他の記憶媒体を含む。
【００１７】
[0037]  「ネットワーク」は、コンピュータシステムおよび／またはモジュールおよび／または他の電子デバイスの間での電子データの移送を可能にする、１つまたは複数のデータリンクと定義される。情報が、ネットワークまたは別の通信接続（ハードワイヤード、ワイヤレス、または、ハードワイヤードもしくはワイヤレスの組み合わせのいずれか）を介して、コンピュータに転送または提供されるとき、コンピュータは当然のことながら、接続を伝送媒体とみなす。伝送媒体は、コンピュータ実行可能命令またはデータ構造の形式での所望のプログラムコード手段を搬送するために使用され得る、および、汎用または専用コンピュータによりアクセスされ得る、ネットワークおよび／またはデータリンクを含み得る。上記のものの組み合わせもまた、コンピュータ可読媒体の範囲内に含めるべきである。
【００１８】
[0038]  さらに、様々なコンピュータシステムコンポーネントに達すると、コンピュータ実行可能命令またはデータ構造の形式でのプログラムコード手段は、伝送媒体からコンピュータ記憶媒体に（または、その逆に）自動的に転送され得る。例えば、ネットワークまたはデータリンクを介して受信される、コンピュータ実行可能命令またはデータ構造は、ネットワークインターフェイスモジュール（例えば、「NIC」）の内部のＲＡＭにバッファリングされ、次いで最後のところでは、コンピュータシステムＲＡＭに、および／または、コンピュータシステムでのより揮発性でないコンピュータ記憶媒体に転送され得る。したがって、コンピュータ記憶媒体は、伝送媒体をもまた（さらには、主として）利用するコンピュータシステムコンポーネントに含まれ得ることを理解すべきである。
【００１９】
[0039]  コンピュータ実行可能命令は例えば、プロセッサで実行されたとき、汎用コンピュータ、専用コンピュータ、または専用処理デバイスに、ある決まった機能または機能の群を実行させる、命令およびデータを備える。コンピュータ実行可能命令は例えば、バイナリ、さらには、アセンブリ言語などの中間フォーマット命令などの、プロセッサによる直接実行の前に何らかのトランスレーション（コンパイルなど）を経る命令、さらにはソースコードであり得る。主題を、構造的特徴および／または方法論的行為に固有の文言で説明しているが、添付の特許請求の範囲で定義される主題は、上記で説明した、説明した特徴または行為に必ずしも制限されないことを理解すべきである。むしろ、説明した特徴および行為は、特許請求の範囲を実装することの例示的な形式として開示されるものである。
【００２０】
[0040]  当業者であれば、パーソナルコンピュータ、デスクトップコンピュータ、ラップトップコンピュータ、メッセージプロセッサ、ハンドヘルドデバイス、マルチプロセッサシステム、マイクロプロセッサベースの、またはプログラマブルな民生用電子機器、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ、移動電話、ＰＤＡ、ページャ、ルータ、スイッチなどを含む、多くのタイプのコンピュータシステム構成によってネットワークコンピューティング環境で本発明が実施され得ることを理解するであろう。本発明はさらには、分散型システム環境で実施され得るものであり、その環境では、ネットワークによって（ハードワイヤードデータリンク、ワイヤレスデータリンクによって、または、ハードワイヤードデータリンクおよびワイヤレスデータリンクの組み合わせによってのいずれかで）リンクされる、ローカルコンピュータシステムおよびリモートコンピュータシステムが、両方ともタスクを実行する。分散型システム環境ではプログラムモジュールは、ローカルおよびリモートの両方のメモリ記憶デバイス内に設けられ得る。
【００２１】
[0041]  本明細書で説明する原理は、変換チェーンを使用して動作する。変換チェーンは、各々がデータソースまたはデータターゲットを表し得るノードの相互接続されるセットである。ノード間にはリンクが存在し、各々のリンクは変換を表す。任意の所与のリンク毎に、関連付けられる変換は、リンクに対する入力端部に位置する１つまたは複数のデータソースの値のコピーを受信し、リンクの出力端部に設けられる１つまたは複数のデータターゲットで提供される、結果として生じる値を生成する。任意の所与の変換毎に、その入力端部でのデータソースの１つまたは複数での値が変化するとき、変換は自動的に再評価され、変換の出力端部での１つまたは複数のデータターゲットの値の変化をもたらす可能性がある。
【００２２】
[0042]  １つの実施形態では、変換チェーンがどれだけ複雑であるかに関わらず、変換は宣言文から構築され得るものであり、それらの宣言文は、１つまたは複数の値を入力として受信し、結果として生じる１つまたは複数の値を出力として提供し得る、式、規則、拘束、シミュレーション、または任意の他の変換タイプを表すものである。変換チェーンの例はスプレッドシートプログラムであり、その場合、セルのいずれかは、データソースまたはデータターゲットであり得る。式（すなわち、変換）を任意のセルに関連付け、そのセルを式の結果が置かれるデータターゲットにすることができる。
【００２３】
[0043]  単に例として、図２は、単一のリンク２２０だけが存在する、単純な変換チェーン２００を示す。本説明の全体を通して使用する図面表記では、リンクは矢印として示されることになり、入力端部は矢印の尾部として表され、出力端部は矢印の頭部として表される。リンクの入力端部に複数個のデータソースが存在する事例では、矢印は、複数個の尾部を伴って表されることになる。矢印の尾部でのデータソースの値のコピーは、変換への入力を表す。変換の結果として生じる値により影響を受ける複数個のデータターゲットが存在する事例では、矢印は、複数個の頭部を伴って表されることになる。矢印の頭部でのデータターゲットの値は、変換からの出力を表す。
【００２４】
[0044]  例えば図２は、データソース２０１と、データターゲット２０２と、単一のリンク２２０とを含む、単純な変換チェーン２００を示す。リンク２２０は、データターゲット２０２での値２１２を生成するために、データソース２０１での値２１１のコピーに関して行われる変換を表す。値２１１が変化する場合、リンク２２０により表される変換は再評価され、データターゲット２０２での値２１２の変化をもたらす可能性がある。
【００２５】
[0045]  図３は、３つのデータソース３０１、３０２、および３０３と、２つのデータターゲット３０４および３０５と、単一のリンク３２０とを含む、別の単純な例示的な変換チェーン３００を示す。リンク３２０は、データターゲット３０４および３０５での値を生成するために、データソース３０１、３０２、および３０３の値のコピーに関して行われる変換を表す。データソース３０１、３０２、または３０３のうちの任意の値が変化する場合、変換リンク３２０は再評価され、データターゲット３０４および３０５の任意の１つまたは複数の値の変化をもたらす可能性がある。
【００２６】
[0046]  図４は、別の例示的な変換チェーン４００を示す。また、図４は、変換チェーンがさらに複雑にされた変換チェーンを創出するために、互いを基に築造し得るものであり、その場合、１つのリンクに対するデータソースは、他のリンクでのデータターゲットであり得るという原理を示す。例えば変換チェーン４００は、変換チェーン２００のインスタンス４０１と、変換チェーン３００の４０２のインスタンスとを含む。この事例では、リンク２２０のデータターゲット２０２は、リンク３２０のデータソース３０１でもある。データソース２０１に関する値が変化する場合、リンク２２０により表される変換は再評価され、データターゲット２０２での値の変化をもたらす可能性がある。そのデータターゲット２０２はさらに、次のリンク３２０に対するデータソース３０１である。同様に、データソース３０１の値の変化により、変換リンク３２０が再評価されることになり、データターゲット３０４および３０５の任意の１つまたは複数の値の変化をもたらす可能性がある。データターゲット３０４および３０５は同様に、さらに他のリンクに対するデータソースを表す場合がある。したがって複雑な変換チェーンでは、１つの値変化が、変換チェーンの内の変換の適正な自動化された再評価によって、変換チェーン内の複数個のノードを通しての伝搬される複数の値変化を引き起こし得る。
【００２７】
[0047]  例示的な変換チェーン４００は２つのリンクだけを含むが、変換チェーンは、かなり複雑になり、可算ノード、および、それらの可算ノードを接続する関連付けられるリンクを含む場合がある。本明細書で説明する原理は、変換チェーンの複雑度に関わらず動作し得る。
【００２８】
[0048]  図５は、６つのデバイス５０１〜５０６が存在する環境５００を示す。省略符号５０７は、環境５００の内部に存在するデバイスの数においての柔軟性を表す。事実上は、かなり動的に、環境５００から離れ、環境５００に入るデバイスが存在し得る。必要とされるわけではないが、デバイス５０７の各々は、図１のコンピューティングシステム１００に対して説明したように構造化され得る。
【００２９】
[0049]  環境５００は、デバイスのすべてが同じ近接度で設けられる物理環境である必要はないが、しばしばそのような場合であり得る。環境５００は代わりに、デバイスのセットであって、それによって１人または複数のユーザが入力を提供し得るデバイスのセット、および、複数個のデバイスであって、それらによって出力が複数人のユーザに提供され得る複数個のデバイスが存在する、任意の環境と思考され得るものである。
【００３０】
[0050]  デバイスの一部（例えば、デバイス５０１〜５０４）は、協調アプリケーションを伴う単なる協調デバイスを超えるものを形成する助力になる。代わりに、デバイス５０１〜５０４は各々、複合アプリケーションのコンポーネントに関連付けられる。デバイス５０１〜５０４の任意のものが環境５００を離れる際に、複合アプリケーションは、より小さくなり、そのことにより、アプリケーションの変化した機能性をもたらす。他方で、アプリケーションのコンポーネントを有するデバイス（デバイス５０１〜５０４など）が環境５００に入る際に、複合アプリケーションは実際上、より大きくなり、そのことにより実際上、複合アプリケーションの機能性、およびまさに構造を変化させる。本明細書で説明する原理によれば、１つのデバイスの変換チェーンが、他のデバイスの変換チェーンと結び付けられ、デバイスの拡大されたセットをより効果的に活用し得る、より大きな変換チェーンをもたらし得る。
【００３１】
[0051]  デバイス５０５は、環境５００で使用され得る出力デバイスを表すが、必ずしも変換チェーンを、複合アプリケーションのより大きな変換チェーンに対して付与しない。例えばデバイス５０５は、大きなスクリーンディスプレイであり得る。デバイス５０６は、環境５００で使用され得る入力デバイスを表すが、必ずしも変換チェーンを、複合アプリケーションのより大きな変換チェーンに対して付与しない。例えばデバイス５０６は、マイクロホンであり得る。デバイス５０１〜５０４の存在により、それぞれの関連付けられる変換チェーンの部分が、複合アプリケーションのより大きな変換チェーンに貢献する。しかしながらデバイス５０１〜５０４はさらには、全体として複合アプリケーションにより使用され得る、入力能力および出力能力を有し得る。環境５００は任意選択により、下記でさらに説明する外部システム５１０を含み得る。
【００３２】
[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]  本明細書では「不干渉」手法と称する別の手法では、デバイスは、それ自体により変換クラスに関連付けられ、クラスのインスタンスを実行する。依存関係が、別のデバイスに関連付けられる別の変換チェーンに遭遇するとき、他のデバイスもまた不干渉手法に関与する場合、データは、直接（例えば、ピアツーピアネットワーキングによって）そのデバイスに流され得る。あるいはデバイスは、データを間接的に他のデバイスに（例えば、外部システムまたはクラウドによって）流し得る。外部システム５１０が、変換チェーンクラスのインスタンスの表現を、他のデバイスに対して実行している場合、デバイスは代わりに、データを外部システム５１０内に、変換チェーンの残りへのさらなる伝搬のために流し得る。
【００５８】
[0078]  図１２は、変換クラスの２つのインスタンスを結び付けるための方法１２００のフローチャートを示す。最初に変換チェーンクラスが、結び付けられ得るタイプであると確認される（行為１２０１）。例えば、変換チェーンクラスが互いに参照しない場合、おそらくは、それぞれのクラスのインスタンスを結び付けるためのクラスベースの認可は存在しない。例えば、変換チェーンクラス６００Ｄは、変換チェーンクラス６００Ｂまたは変換チェーンクラス６００Ｃと結び付けられ得ない。なぜなら、変換チェーンクラス６００Ｄは、変換チェーンクラス６００Ｂまたは６００Ｃ内の要素を参照しないからである。一方、変換チェーンクラス６００Ｄは、変換チェーンクラス６００Ａと結び付けられ得る。なぜなら、それらは相互に、互いへの依存関係参照を含むからである。
【００５９】
[0079]  この例では、変換チェーンクラス６００Ｄは、変換チェーンクラス６００Ｂおよび６００Ｃと直接結び付けられ得ない。しかし、変換チェーンクラス６００Ｄは、変換チェーン７００Ａ、７００Ｂ、および８００Ａが、変換チェーン６００Ｂおよび６００Ｃの１つまたは両方を含むにも関わらず、変換チェーン７００Ａ、７００Ｂ、および８００Ａと結び付けられ得る。
【００６０】
[0080]  一方、代替的実施形態では、変換チェーンクラスの作成者は、他の変換チェーンクラスと結び付くことに関するさらなる制約を指定することができる。例えば作成者は、変換クラスインスタンスがすでに複合変換チェーンである場合に、および／または、複合変換チェーンが特定の構成変換チェーンを有する場合に、特定の変換クラスインスタンスと結び付くことを許可しない一般的な制約を指示することができる。例えば、２つの変換チェーンインスタンスを結び付けるとき、システム１１００は、その時点まで、複合変換チェーンを構築するために使用された変換クラス識別情報の経過を追う場合がある。そのリストは、クラスベースの認可に対する条件が満たされたかどうかを確認するために使用され得る。
【００６１】
[0081]  作成者はさらには、制約を、単一の依存関係の粒度で表す場合がある。例えば、変換チェーンクラス６００Ａの依存性要素６０１Ｂでは、作成者は、結び付きが、その依存関係要素に関して、その依存関係要素が結び付けられる変換チェーンが、競合者により作成される、識別される変換チェーンクラスを含まない場合にのみ認可されることを表す場合がある。作成者はさらには、変換チェーンから、別の結び付けられる変換チェーンに流されるデータを制御することを、依存関係それ自体に（例えば、ノード６０１Ａと依存関係要素６０１Ｂとの間で）橋を架けることになる変換への制約または条件を書き表すことにより行う場合がある。
【００６２】
[0082]  しかしながら、変換チェーンクラスが相互運用し得る場合でも、そのことは、ユーザが、変換チェーンクラスの自身の特定のインスタンスを、他の変換チェーンクラスの他のインスタンスに結び付けることを望むことを意味しない。結局のところ、データそれ自体（例えば、インスタンス状態）は、ユーザに影響されやすいものであり得る。したがって方法１２００はさらには、異なる変換チェーンクラスのインスタンス同士が結び付けられるべきであると決定するステップを含む（行為１２０２）。
【００６３】
[0083]  異なる変換チェーンクラスの２つのインスタンス同士が結び付くことを認可するための結び付き判定基準は、ユーザがミーティング出席者リストに載っているか否か、様々なデバイスのユーザの関係性（例えば、家族、ソーシャルネットワークの友人など）、デバイス間の通信能力（例えば、近距離場）、それぞれのデバイスの（例えば、同じ会議室内での）近接度、ユーザの要求などの、１つまたは複数を含み得る。例えば結び付き判定基準は、インスタンスの関連付けられるユーザが同じチームの一員であるなどの、何らかの業務判定基準を含み得る。別の例として、１つのデバイスは、小売区域またはホテル内のキオスクとされる。利用客がキオスクを使用し、店員または接客係が自動的に、その店員または接客係のデバイスを使用して、その店員または接客係の変換チェーンをキオスクの変換チェーンと結び付けることで、複合アプリケーションを使用して、利用客とインタラクションし得る。条件が、結び付き判定基準に適用され得る。例えば、ベルボーイのデバイスは、接客係が周囲にいない場合（おそらくは、接客係が、対になり得る（pairable）アプリケーションを活動的に使用して利用客のアプリケーションと結び付かない、または、ネットワークから外れていることにより検出される）、利用客のアプリケーションと結び付くことが可能であり得る。
【００６４】
[0084]  デバイスに関連付けられる変換チェーンクラスのインスタンスが、そのクラスにより定義されるデフォルト状態で開始されることになっていない場合、直接参加手法ではデバイスは次いで、インスタンスデータ（例えば、デバイスに関連付けられる変換チェーンのノードの各々での値）をシステム１１００にアップロードし得る（行為１２０３）。不干渉手法ではおそらくは、境界ノードのみでのインスタンスデータが、システム１１００にアップロードされる。
【００６５】
[0085]  変換チェーンインスタンスは次いで、変換チェーンの残りと結び付く（行為１２０４）。例えばこのことは、ターゲット変換チェーンインスタンス内のノードに対応する依存関係要素に対する、ソース変換チェーンインスタンスを検索することにより達成され得る。そのような依存関係要素が見出されると、その依存関係要素は、ターゲット変換チェーンインスタンス内の実在の識別されるノードによって置換され、そのことにより、ソース変換チェーンインスタンスとターゲット変換チェーンインスタンスとの間の実在のリンクを創出する。このことは、ターゲット変換チェーンインスタンス内のノードを識別する、ソース変換チェーンインスタンス内のすべてのそのような見出される依存関係要素に対して反復される。ターゲット変換チェーンインスタンス内のノードに対応しない、ソース変換チェーンインスタンス内で見出される依存関係要素が存在する場合、それらの依存関係要素は、合体される変換チェーンインスタンス内では依存関係チェーン要素のままである。
【００６６】
[0086]  図６Ａ〜６Ｄの例では、変換チェーンクラス６００Ａ〜６００Ｄのどれも、同じクラスを参照する依存関係要素を含まないことに留意されたい。しかしながら、本明細書で説明する原理は、特定の変換チェーンクラスのインスタンスが、同じ特定の変換チェーンクラスの別のインスタンス内の別のノードを参照する依存関係要素を有し得る場合でも動作し得る。さらに、結び付けられている特定のノードにより許可される場合、１つまたは複数の異なる変換チェーンインスタンスからとされる複数個のノードが、特定のノードと結び付き得る。
【００６７】
[0087]  結び付けられると、変換チェーンは拡大し、ほぼ、変換チェーンが元々、初めから拡大された方式で作成されたかのように、データは、拡大された変換チェーン内に流れる（行為１２０５）。例えば、変換チェーンクラス６００Ａのインスタンスが、変換チェーンクラス６００Ｂのインスタンスと結び付くと、結果は、変換チェーンクラス７００Ａの単一のインスタンスである。変換チェーンクラス６００Ａのインスタンスが、変換チェーンクラス６００Ｃのインスタンスと結び付くと、結果は、変換チェーンクラス７００Ｂの単一のインスタンスである。変換チェーンクラス６００Ｂのインスタンスが、変換チェーンクラス６００Ｃのインスタンスと結び付くと、結果は、変換チェーンクラス７００Ｃの単一のインスタンスである。変換チェーンクラス６００Ａのインスタンスが、変換チェーンクラス６００Ｄのインスタンスと結び付くと、結果は、変換チェーンクラス７００Ｄの単一のインスタンスである。
【００６８】
[0088]  変換チェーンクラス８００Ａのインスタンスは、変換チェーンクラス７００Ａおよび６００Ｃのインスタンスを結び付けることによって、または、変換チェーンクラス６００Ａおよび７００Ｃのインスタンスを結び付けることによってのいずれかで形成され得る。変換チェーンクラス８００Ｂのインスタンスは、変換チェーンクラス７００Ａおよび６００Ｄのインスタンスを結び付けることにより形成され得る。変換チェーンクラス８００Ｃのインスタンスは、変換チェーンクラス７００Ｂおよび６００Ｄのインスタンスを結び付けることにより形成され得る。この結び付けるオペレーションを、何度も行うことにより、所与の環境にコラボレーションのために利用可能な多くのデバイスが存在する状況で、非常に大きな変換チェーンを創出することができる。
【００６９】
[0089]  したがって、結び付けられると（行為１２０４）、データは自由に、拡大された変換チェーン中で、さらには、かつては構成変換チェーン間の境界であったものを越えて流れ得る（行為１２０５）。例えば、図７Ａの変換チェーン７００Ａでは、データは自由に（アプリケーションプログラムインターフェイスの使用なしに、および、関数呼び出しなしに）、まさにデータがノード６０１Ａからノード６０４Ａに（適切な変換によって）流れ得るように、ノード６０１Ａからノード６０１Ｂに（適切な変換によって）流れ得る。
【００７０】
[0090]  したがってシステムは、多種多様のデバイスに関連付けられる変換を、相対的に自動化された、および好都合な方式で結び付けて、そのことにより、複数個のデバイスにわたって共有される複合アプリケーションの変換チェーンを拡大するために使用され得る。このことは、多種多様のシナリオを可能にする。
【００７１】
[0091]  例えば、特定の会議室でのミーティングに到着する個人を考える。第１のユーザが、会議室にラップトップコンピュータおよびスマートフォンを伴って入ると、スマートフォンに関連付けられる変換チェーンインスタンスは、ラップトップの変換チェーンインスタンスと結び付けられ、そのことによって、単一のアプリケーションが効果的に、第１のユーザのスマートフォンおよびラップトップにわたって実行中である。第２のユーザが、会議室に少々遅れて入る。第２のユーザもまたミーティング招待状に載っており、そのことによってユーザのスマートフォン変換チェーンは、既存の複合変換チェーンと、変換チェーンをさらに拡大するために結び付けられる。次いでテレビジョンスクリーンが、自動的に電源が入って、ミーティングに関連付けられるデータの一部を出力する。第３のユーザが、タブレットコンピュータを伴って入り、そのユーザもまたミーティングの招待された者である。したがって、タブレットコンピュータに関連付けられる変換チェーンは、複合変換チェーンと結び付いて、変換チェーンをさらに拡大する。したがって、より多くのデバイスが、変換チェーンを結び付けるのに適した環境と結び付く際に、デバイスのすべてにわたって実行されるアプリケーションは、実際上拡大され、そのことにより、アプリケーションそれ自体の機能性を変化させる。複数人のユーザは各々、環境を共有することができ、そのことによって複数人のユーザは、複数のデバイスの少なくとも１つまたは一部の各々を観察することができる。
【００７２】
[0092]  図１３は、変換チェーンを結合解除するための方法１３００のフローチャートを示す。まさに、デバイスが環境に入るときに変換チェーンを結び付けるための方法が存在するように、デバイスが環境を出るときに変換チェーンを結合解除するための方法が存在する。最初にシステムは、変換チェーンクラスのインスタンス同士が結合解除されるべきであると決定する（行為１３０１）。それに応じて、そのインスタンスへの、およびそのインスタンスからのデータの流れが中断される（行為１３０２）。インスタンス同士が結合解除されるべきであると決定するために使用される結合解除判定基準は、任意の判定基準を含み得るが、例として、インスタンスに関連付けられるデバイスの、環境内の他のデバイスとの近接度、ミーティング終結ステータス、インスタンスに関連付けられるデバイスと環境内の他のデバイスとの間の通信能力、ユーザの要求などの、１つまたは複数を含み得る。したがって変換チェーンは、デバイスが環境に入る、および環境を出る際に、動的に変化し得る。
【００７３】
[0093]  １つの実施形態ではシステム１１００は、提示サービス１１５０を含む。実行中である変換チェーンインスタンスの１つまたは複数のノードは、１つまたは複数の周辺デバイス上でレンダリングを動作させることができる。同様に１つまたは複数のデバイスは、入力を、変換チェーンインスタンスの１つまたは複数のノード内に提供し得る。例えば、変換チェーン９００のインスタンスが、図５の環境５００内で実行中であり、これは、デバイス５０１〜５０４が、それぞれの変換チェーンクラス６００Ａ〜６００Ｄのインスタンスに関連付けられ、そのことにより、拡大された変換クラス９００のインスタンスが生じていると仮定する。図９を参照して、ノード６０１Ａおよび６０１Ｃが入力ノードであり、ノード６０４Ａ、６０３Ｂ、６０２Ｃ、および６０２Ｄが出力ノードであると仮定する。提示サービス１１５０は、どのデバイスが入力をノード６０１Ａおよび６０１Ｃに提供し得るかを、ならびに、そうである場合、何の変換が行われることになるかを選択し得る。１つの例では、これらのデバイスは、それらの変換チェーンのそれぞれの部分に関連付けられ、そのことによって、そのそれぞれの部分の入力ノードは、それぞれのデバイスにより提供される。したがってデフォルトで、元々変換チェーン６００Ａの部分である入力ノード６０１Ａは、（可能性として、何らかの変換の後に）デバイス５０１から入力を提供され得る。また、デフォルトの事例では、元々変換チェーン６００Ｃの部分である入力ノード６０１Ｃは、（可能性として、何らかの変換の後に）デバイス５０３から入力を提供され得る。提示サービス１１５０はさらには、どのデバイスがノード６０４Ａ、６０３Ｂ、６０２Ｃ、および６０２Ｄからの出力をレンダリングすることになるかを、ならびに、（ある場合）何の変換が行われることになるかを選択し得る。
【００７４】
[0094]  図１４は、変換チェーンの出力を、複数個のデバイス環境でレンダリングするための方法１４００のフローチャートを示す。方法１４００は、図１１のシステム１１００により、またはことによると、図１１の提示サービス１１５０により実行され得る。論理コンポーネント１１０１は、変換チェーンクラスのインスタンスの特定のノード（提示ノード）が変化したと決定する（行為１４０１）。例えば例では、ノード６０４Ａ、６０３Ｂ、６０２Ｃ、および６０２Ｄは各々、出力ノードまたは「提示ノード」である。
【００７５】
[0095]  論理コンポーネントはさらには、少なくともその変化したバージョンの出力がレンダリングされ得る、複数個の候補デバイスの特性を識別する（行為１４０２）。例えば論理コンポーネント１１０１は、各々のデバイスのレンダリング能力を決定するために、デバイスレジストリ１１２０を参照し、および／または、デバイスに直接問い合わせ得る。各々のデバイスの特性はさらには、デバイスに関する各々のユーザの並列状態を含み得る。
【００７６】
[0096]  システムは次いで、少なくともそのバージョンのレンダリングをレンダリングする候補デバイスの少なくとも１つを、識別される特性に基づいて選択する（行為１４０３）。システムはこの選択を、出力の有用性を最大化するために行う。例えば、出力がすべてのユーザを対象とし、すべてのユーザが物理的に存在する場合、出力は、より大きなスクリーン上でレンダリングされ得る。出力がインタラクティブであり、特定のデバイスからの入力を要する場合、そのデバイスが出力に対して選択され得る。
【００７７】
[0097]  システムは、デバイスへの実際の出力の前に、何らかの変換がレンダリングに適用されるかどうかを決定する（判断ブロック１４０４）。変換は、選択されるデバイスの適合性を考慮する。ここで、変換は、選択されるデバイスに依存して、レンダリングごとに異なり得る。変換の例は、レンダリングのタイプを変化させること（例えば、テキストから音声、音声からテキスト、ビデオからテキスト、テキストからビデオなど）を含む。変換はさらには、出力の映画化（cinematization）を含み得る。例えば、ビデオを入力から創出することができ、ビデオにおいて、背景幕を提供したり、場合によっては適切なように変更したり、移動要素を、ビデオ内に、およびビデオ外に移動することができる。
【００７８】
[0098]  変換が行われることになる場合（判断ブロック１４０４での「はい」）、それらの変換が行われる（行為１４０５）。最終的にレンダリングが、選択されるデバイス上で実行される（行為１４０６）。したがって複合変換チェーンは、入力を任意のデバイスから任意の形式で取り込み、入力を、必要に応じて、複合変換チェーンの入力ノードにより認識される形式に変換し得る。したがってこの入力は、変換チェーンの全体を通して伝搬される。１つまたは複数の提示ノードの値が変化する場合、適切なデバイスが、出力をレンダリングするために選択され得る。したがって、レンダリングに対する最も適したデバイスは、どのデバイスが、提示ノードを含む変換チェーンの部分に関連付けられたかに対する配慮なしに選択され得る。例えば、提示ノード６０４Ａの値の変化は、排他的に、さらには、変換チェーンインスタンス６００Ａに対応するデバイス５０１のすべてでレンダリングされる必要はない。一部の実施形態ではレンダリングは、情報を、何らかのタイプの運動を含む何らかの物理的作動に変換することを含み得る。例えばレンダリングは、ドアを開く、または閉じること、バルブを開く、または閉じること、ドアを解錠または施錠すること、テレビジョンの電源を入れる、または切ることなどを含み得る。
【００７９】
[0099]  詳細なシナリオ（本明細書では以降「デバイスシナリオ」と呼ぶ）をここで、図１５Ａ〜１５Ｍ（まとめて「図１５」と称する）に関して説明する。このシナリオは、本明細書で説明する、より広範な原理により可能にされる、無数の種々のシナリオのただ１つとして提供される。このシナリオではユーザが、様々なコンピューティングデバイスを注文している。シナリオは、４つのデバイス１５０１、１５０２、１５０３、および１５０４を含むが、シナリオは図１５Ａでは、２つのデバイス１５０１および１５０２のみが可視である状態で始まる。４つのデバイス１５０１〜１５０４の各々は、入力を複合アプリケーションに提供すること、および、出力を複合アプリケーションから受信することに参加する。
【００８０】
[00100]  図１５Ａは、ラップトップコンピュータである２つのデバイス１５０１および１５０２を導入する。これらの２つのデバイス１５０１および１５０２は、動作する環境内に最初に存在する唯一のデバイスであり、したがって、それらのデバイスのそれぞれの変換チェーンが結び付けられていると仮定する。デバイス１５０１に関連付けられる変換チェーンは、製造者のナビゲーションおよび選択を可能とする。デバイス１５０２に関連付けられる変換チェーンは、製造者により売りに出されるデバイスのリストのナビゲーションを可能とし、さらには、ユーザが、リスト内のデバイスの任意のものの総数を変化させることを可能とする。
【００８１】
[00101]  より具体的にはデバイス１５０１は、ユーザが、いくつかの製造者を水平にスクロールし、製造者を選択することを可能とする。図１５Ａではデバイス１５０１は、「ベンダ７」、「ベンダ８」、および「ベンダ９」と名付けられた３つのそのような製造者のみを示し、ユーザは「ベンダ８」を選択している。他方でデバイス１５０２は、デバイス１５０１で選択されるベンダにより提供されるデバイスの水平にスクロール可能なリストを示す。図１５Ａでは、ベンダ８がデバイス１５０１上で選択されるので、デバイス１５０２は、ベンダ８により提供されるデバイスのリストを示す。デバイスリスト内の各々の品目は、デバイスの画像１５０５、デバイスの名前１５０６、デバイスの単位当たりコスト１５０７、および、注文されているデバイスの総数１５０８を含む。各々のデバイスに対する総数は、対応するスクロールコントロールを使用して制御され得る。
【００８２】
[00102]  図１５Ｂは、ユーザが、製造者のリストを左方にスクロールし、さらには「ベンダ４」を選択したという点で、図１５Ａの状態から進行したシナリオの状態を示す。したがってデバイス１５０２からの出力は、ベンダ４により製造されるデバイスのリストを表示するために自動的に変化する。そのようにするために、データは、自動的に（アプリケーションプログラムインターフェイスの使用なしに）、デバイス１５０１に関連付けられる変換チェーンから、デバイス１５０２に関連付けられる変換チェーンに流れた。
【００８３】
[00103]  図１５Ｃは、ユーザが、製造者のリストを左方にスクロールし、さらには「ベンダ２」を選択したという点で、図１５Ｂの状態から進行したシナリオの状態を示す。したがってデバイス１５０２からの出力は、ベンダ２により製造されるデバイスのリストを表示するために自動的に変化する。そのようにするために、データは、やはり自動的に、デバイス１５０１に関連付けられる変換チェーンから、デバイス１５０２に関連付けられる変換チェーンに流れた。
【００８４】
[00104]  図１５Ｄは、ユーザが、ベンダ２により売りに出される２つのデバイスに対する注文総数を変化させるために、デバイス１５０２上に表示されるスクロールコントロール１５１１および１５１２を使用したという点で、図１５Ｃの状態から進行したシナリオの状態を示す。図１５Ｅは、ユーザが、デバイス１５０２を使用して、ベンダ２により売りに出されるデバイスのリストを右方にスクロールし、さらに、ベンダ２により売りに出される２つのさらなるデバイスに対する注文総数を変化させるために、デバイス１５０２上に表示されるスクロールコントロール１５１３および１５１４を使用したという点で、図１５Ｄの状態から進行したシナリオの状態を示す。したがって、この段階でユーザは、ベンダ２により売りに出される４つのデバイスに対する注文総数を入れた。
【００８５】
[00105]  図１５Ｆは、第３のデバイス１５０３が環境内に導入されるという点で、図１５Ｅの状態から進行したシナリオの状態を示す。例えば第３のデバイス１５０３は、注文全体に対する最大単位コストおよび総コストを表示する変換チェーンに関連付けられ得る。デバイス１５０３が環境内に導入されると、変換チェーンのその部分が既存の複合変換チェーンと結び付けられ、そのことにより、そのようなコストデータをデバイス１５０３に出力するように複合アプリケーションの機能性を変化させる。変換チェーンインスタンス同士が結び付けられると、総数および単位コストを表すデータが変換チェーンのその部分に流され、デバイス１５０３が直ちにポピュレートされる。また、デバイス１５０３が最大単位価格を指示する際に、流れは反対の方向でも起こり、したがって、デバイス１５０２で示されるデバイスのリストは、最大単位価格を下回る任意のデバイスに制約されることに留意されたい。この事例では、事前にリストに載せられたデバイスのすべてが最大単位価格を下回るので、デバイス１５０２上の視覚化の変化はない。
【００８６】
[00106]  図１５Ｇは、ユーザが、ベンダ２により売りに出されるさらに別のデバイスに対する総数を入れるために、デバイス１５０２上のスクロールコントロール１５１５を使用したという点で、図１５Ｆの状態から進行したシナリオの状態を示す。総数データおよび単位コストデータが、デバイス１５０３に対応する変換チェーンの部分内に流され、そのことが、デバイス１５０３上に表示される総コストの変化をもたらす。
【００８７】
[00107]  図１５Ｈは、ユーザが、最大単位価格を９８７ドルに、デバイス１５０３上のスクロールコントロール１５１６を使用して下方に調整したという点で、図１５Ｇの状態から進行したシナリオの状態を示す。その最大単位価格変化は、デバイス１５０３に関連付けられる変換チェーンの部分から、デバイス１５０２に関連付けられる変換チェーンの部分に流れており、それにより、ベンダ２により売りに出されるいくらかのデバイスが、リストから削除される。ユーザが額をより高く戻す場合、それらの削除された品目は、リスト上に戻るように自動的に追加され、おそらくは、デバイス１５０２を、図１５Ｇで示す状態に戻す。
【００８８】
[00108]  図１５Ｉは、第４のデバイス１５０４が環境内に導入されるという点で、図１５Ｇの状態から進行したシナリオの状態を示す。例えば第４のデバイス１５０４は、デバイスの最大重量を表示する変換チェーンに関連付けられ得る。デバイス１５０４が環境内に導入されると、変換チェーンのその部分が、既存の複合変換チェーンと結び付けられ、そのことにより、そのような最大重量データを出力するように複合アプリケーションの機能性を変化させる。変換チェーンインスタンス同士が結び付けられると、最大重量を表すデータが、デバイス１５０４に関連付けられる変換チェーンの部分から、デバイス１５０２に関連付けられる変換チェーンの部分に流される。デバイス１５０２は、最大重量より重い各々のデバイスに関連付けられる、重量超過警告１５１８Ａ、１５１８Ｂ、１５１８Ｃ、および１５１８Ｄを表示することにより応答する。この時点では図１５Ｉでは、重量は６０６グラムだけであり、したがってデバイスのすべては、そのような警告と共にリストに載せられる。
【００８９】
[00109]  図１５Ｊは、ユーザが、２キログラムを上回るように最大重量を増大するために、デバイス１５０４上のスクロールコントロール１５１７を使用したという点で、図１５Ｉの状態から進行したシナリオの状態を示す。最大重量変化は、デバイス１５０４に関連付けられる変換チェーンの部分から、デバイス１５０２に対応する変換チェーンの部分に流され、そのことが、重量超過警告１５１８Ｃおよび１５１８Ｄの除去をもたらす（重量超過警告１５１８Ａおよび１５１８Ｂは残っている）。
【００９０】
[00110]  以上で、ユーザ観点からのシナリオは終結する。図１５Ｋ〜１５Ｏは、作成時において、作成者は、変換を宣言によって変化させて、そのことにより、複合アプリケーションの機能性を変化させ得ることを示す。図１５Ｋではユーザインターフェイス要素１５２０が、宣言的変換を含むように示され、その宣言的変換は、スライダ１５１６により指示される値を下回る、提案される製造者小売価格を有するデバイスをフィルタ除去するものである。図１５Ｌは、この制約が今や除去され、したがって、表示されるデバイスは今や、スライダ１５１６の値によりフィルタ除去されないことを示す。
【００９１】
[00111]  図１５Ｍではユーザインターフェイス要素１５２１が、小売価格で提案される製品に対して使用されるハイライト表示の色を定義するように示される。ここで、図１５Ｎは、ハイライト表示色が、製造者の提案される小売価格が、スライダコントロール１５１６により指示される値を上回るか否かに依存することを示す。そうである場合、ハイライタ色が、例えば緑に変化する。図１５Ｏは、スライダコントロール１５１６がこの状況で増大される際に、提案される製造者小売価格がスライダコントロール１５１６の値を上回る場合、リストからそのデバイスが除去されるという状態から、小売価格で提案される製品が、（スライダ１５１６の値と比較される際に）製造者の提案される小売価格のハイライト表示を動作させる状態に、複合アプリケーションの挙動が変化したことを示す。
【００９２】
[00112]  したがって、複数個のデバイスにわたって広がる複合アプリケーションの系統的表現および使用を説明した。さらに、複合アプリケーションは実際に、利用可能なデバイスに依存して、形式を有意に変化させ得る。したがって複合アプリケーションは、環境内の様々なデバイスにより提供されるリソースを効率的に使用するために仕立てられ得る。
【００９３】
[00113]  本発明は、他の特定の形式で、本発明の趣旨、または本質的な特性から逸脱することなく実施され得る。説明した実施形態を、すべての事項において、単に例示的であり、制約的ではないと考えるべきである。本発明の範囲は、したがって、上述の説明によるというのではなく、添付の特許請求の範囲により指示される。特許請求の範囲の均等の意味および領域の内部に在るすべての変化は、それらの範囲内に包含されることになる。
【図１】
0006546937.tif 000002
【図２】
0006546937.tif 000003
【図３】
0006546937.tif 000004
【図４】
0006546937.tif 000005
【図５】
0006546937.tif 000006
【図６Ａ】
0006546937.tif 000007
【図６Ｂ】
0006546937.tif 000008
【図６Ｃ】
0006546937.tif 000009
【図６Ｄ】
0006546937.tif 000010
【図７Ａ】
0006546937.tif 000011
【図７Ｂ】
0006546937.tif 000012
【図７Ｃ】
0006546937.tif 000013
【図７Ｄ】
0006546937.tif 000014
【図８Ａ】
0006546937.tif 000015
【図８Ｂ】
0006546937.tif 000016
【図８Ｃ】
0006546937.tif 000017
【図９】
0006546937.tif 000018
【図１０】
0006546937.tif 000019
【図１１】
0006546937.tif 000020
【図１２】
0006546937.tif 000021
【図１３】
0006546937.tif 000022
【図１４】
0006546937.tif 000023
【図１５Ａ】
0006546937.tif 000024
【図１５Ｂ】
0006546937.tif 000025
【図１５Ｃ】
0006546937.tif 000026
【図１５Ｄ】
0006546937.tif 000027
【図１５Ｅ】
0006546937.tif 000028
【図１５Ｆ】
0006546937.tif 000029
【図１５Ｇ】
0006546937.tif 000030
【図１５Ｈ】
0006546937.tif 000031
【図１５Ｉ】
0006546937.tif 000032
【図１５Ｊ】
0006546937.tif 000033
【図１５Ｋ】
0006546937.tif 000034
【図１５Ｌ】
0006546937.tif 000035
【図１５Ｍ】
0006546937.tif 000036
【図１５Ｎ】
0006546937.tif 000037
【図１５Ｏ】
0006546937.tif 000038