(58)【調査した分野】(Int.Cl.,DB名)
前記第1のインスタンスと前記第2のインスタンスが結合解除されるべきであると決定することは、前記第1のデバイスおよび前記第2のデバイスの近接度、ミーティング終結ステータス、ならびに、前記第1のデバイスと前記第2のデバイスとの間の通信能力の、少なくとも1つを含む、1つまたは複数の結合解除判定基準に従ってなされる、請求項3に記載のコンピュータ実装方法。
前記第1のインスタンスと前記第2のインスタンスが結び付けられるべきであると決定することは、前記第1のデバイスおよび前記第2のデバイスの近接度、ミーティング出席者リスト、前記第1のデバイスのユーザと前記第2のデバイスのユーザとの間の関係性、ならびに、前記第1のデバイスと前記第2のデバイスとの間の通信能力の、少なくとも1つを含む、1つまたは複数の結び付き判定基準に従ってなされる、請求項1に記載のコンピュータ実装方法。
コンピューティングシステムの1つまたは複数のプロセッサによって実行可能なコンピュータ実行可能命令を記憶する1つまたは複数のコンピュータ可読記憶媒体であって、前記コンピュータ実行可能命令は、前記コンピューティングシステムに方法を実行させ、前記方法は、
第1の変換チェーンクラスと第2の変換チェーンクラスとの間の依存関係を相互に定義する、第1の変換チェーンクラス定義および第2の変換チェーンクラス定義を少なくとも取得することによって、第1の変換チェーンインスタンスを含む前記第1の変換チェーンクラスと、第2の変換チェーンインスタンスを含む前記第2の変換チェーンクラスとの間の依存関係を識別するステップと、
前記第1の変換チェーンインスタンスと前記第2の変換チェーンインスタンスが結び付けられるべきであると決定するステップと、
前記第1の変換チェーンインスタンスと前記第2の変換チェーンインスタンスが結び付けられるべきであると決定することに応答して、前記第1の変換チェーンインスタンスと前記第2の変換チェーンインスタンスを結び付けるステップと、
前記識別される依存関係に従って、および、前記第1の変換チェーンインスタンスと前記第2の変換チェーンインスタンスとの間の依存関係状態に従って、前記第1の変換チェーンインスタンスと前記第2の変換チェーンインスタンスとの間でデータを流すステップと
を含む、1つまたは複数のコンピュータ可読記憶媒体。
【図面の簡単な説明】
【0008】
【
図1】[0008]本明細書で説明する一部の実施形態が用いられ得るコンピューティングシステムを抽象的に示す図である。
【
図2】[0009]単純な変換チェーンを抽象的に示す図であり、単一のデータソースおよび単一のデータターゲットを結合する単一のリンクだけが存在し、リンクにより表される変換は、データソースでの値を入力として使用して、データターゲットでの値を生成して、自動的に行われる。
【
図3】[0010]別の単純な例示的な変換チェーンを抽象的に示す図であり、変換は、2つのデータターゲットでの出力値を生成するために、3つのデータソースからの入力値を使用して行われる。
【
図4】[0011]
図2の変換チェーンおよび
図3の変換チェーンの組み合わせの形式での変換チェーンを示す図である。
【
図5】[0012]本明細書で説明する原理が動作し得る例示的な環境を示す図であり、その環境は、複合アプリケーションの構成変換チェーンに関連付けられる複数個のデバイスを含み、さらには、入力デバイスおよび出力デバイスを含む。
【
図6A】[0013]
図5でのそれぞれのデバイスに関連付けられ得る、例示的な変換チェーンを示す図である(別の変換チェーンとの結び付きがないのでデータが流れない矢印は、「X」によって示され、それ自体は変換チェーン内のノードではない依存関係要素は、破線の縁によって示される)。
【
図6B】[0013]
図5でのそれぞれのデバイスに関連付けられ得る、例示的な変換チェーンを示す図である(別の変換チェーンとの結び付きがないのでデータが流れない矢印は、「X」によって示され、それ自体は変換チェーン内のノードではない依存関係要素は、破線の縁によって示される)。
【
図6C】[0013]
図5でのそれぞれのデバイスに関連付けられ得る、例示的な変換チェーンを示す図である(別の変換チェーンとの結び付きがないのでデータが流れない矢印は、「X」によって示され、それ自体は変換チェーン内のノードではない依存関係要素は、破線の縁によって示される)。
【
図6D】[0013]
図5でのそれぞれのデバイスに関連付けられ得る、例示的な変換チェーンを示す図である(別の変換チェーンとの結び付きがないのでデータが流れない矢印は、「X」によって示され、それ自体は変換チェーン内のノードではない依存関係要素は、破線の縁によって示される)。
【
図7A】[0014]
図6Aおよび6Bの変換チェーンの結び付きを表す、拡大された変換チェーンを示す図である。
【
図7B】[0015]
図6Aおよび6Cの変換チェーンの結び付きを表す、拡大された変換チェーンを示す図である。
【
図7C】[0016]
図6Bおよび6Cの変換チェーンの結び付きを表す、拡大された変換チェーンを示す図である。
【
図7D】[0017]
図6Aおよび6Dの変換チェーンの結び付きを表す、拡大された変換チェーンを示す図である。
【
図8A】[0018]
図6A、6B、および6Cの変換チェーンの結び付きを表す、拡大された変換チェーンを示す図である。
【
図8B】[0019]
図6A、6B、および6Dの変換チェーンの結び付きを表す、拡大された変換チェーンを示す図である。
【
図8C】[0020]
図6A、6C、および6Dの変換チェーンの結び付きを表す、拡大された変換チェーンを示す図である。
【
図9】[0021]
図6A、6B、6C、および6Dの変換チェーンの結び付きを表す、拡大された変換チェーンを示す図である。
【
図10】[0022]複合アプリケーションの実行を準備するための方法のフローチャートを示す図である。
【
図11】[0023]
図10、12、13、および14の方法を実行するために使用され得るものであり、変換チェーンクラス定義のライブラリ、およびデバイスレジストリ、ならびに提示サービスを含む、システムを抽象的に示す図である。
【
図12】[0024]変換チェーンクラスの2つのインスタンスを結び付けるための方法のフローチャートを示す図である。
【
図13】[0025]変換チェーンを、より大きな変換チェーンから結合解除するための方法のフローチャートを示す図である。
【
図14】[0026]変換チェーンの1つまたは複数の提示ノードの変化を、適切なデバイス上にレンダリングするための方法のフローチャートを示す図である。
【
図15A】[0027]ユーザがいくつかのデバイスを注文しようとする、本明細書では「デバイスシナリオ」と称するシナリオで体験され得る様々なユーザインターフェイスを示す図である。
【
図15B】[0027]ユーザがいくつかのデバイスを注文しようとする、本明細書では「デバイスシナリオ」と称するシナリオで体験され得る様々なユーザインターフェイスを示す図である。
【
図15C】[0027]ユーザがいくつかのデバイスを注文しようとする、本明細書では「デバイスシナリオ」と称するシナリオで体験され得る様々なユーザインターフェイスを示す図である。
【
図15D】[0027]ユーザがいくつかのデバイスを注文しようとする、本明細書では「デバイスシナリオ」と称するシナリオで体験され得る様々なユーザインターフェイスを示す図である。
【
図15E】[0027]ユーザがいくつかのデバイスを注文しようとする、本明細書では「デバイスシナリオ」と称するシナリオで体験され得る様々なユーザインターフェイスを示す図である。
【
図15F】[0027]ユーザがいくつかのデバイスを注文しようとする、本明細書では「デバイスシナリオ」と称するシナリオで体験され得る様々なユーザインターフェイスを示す図である。
【
図15G】[0027]ユーザがいくつかのデバイスを注文しようとする、本明細書では「デバイスシナリオ」と称するシナリオで体験され得る様々なユーザインターフェイスを示す図である。
【
図15H】[0027]ユーザがいくつかのデバイスを注文しようとする、本明細書では「デバイスシナリオ」と称するシナリオで体験され得る様々なユーザインターフェイスを示す図である。
【
図15I】[0027]ユーザがいくつかのデバイスを注文しようとする、本明細書では「デバイスシナリオ」と称するシナリオで体験され得る様々なユーザインターフェイスを示す図である。
【
図15J】[0027]ユーザがいくつかのデバイスを注文しようとする、本明細書では「デバイスシナリオ」と称するシナリオで体験され得る様々なユーザインターフェイスを示す図である。
【
図15K】[0028]
図15A〜15Jのデバイスシナリオで使用される複合アプリケーションを変化させるために遭遇し得る様々なユーザインターフェイスを示す図である。
【
図15L】[0028]
図15A〜15Jのデバイスシナリオで使用される複合アプリケーションを変化させるために遭遇し得る様々なユーザインターフェイスを示す図である。
【
図15M】[0028]
図15A〜15Jのデバイスシナリオで使用される複合アプリケーションを変化させるために遭遇し得る様々なユーザインターフェイスを示す図である。
【
図15N】[0028]
図15A〜15Jのデバイスシナリオで使用される複合アプリケーションを変化させるために遭遇し得る様々なユーザインターフェイスを示す図である。
【
図15O】[0028]
図15A〜15Jのデバイスシナリオで使用される複合アプリケーションを変化させるために遭遇し得る様々なユーザインターフェイスを示す図である。
【発明を実施するための形態】
【0009】
[0029] 本明細書で説明する少なくとも一部の実施形態は、複数個のデバイスに関連付けられる構成変換チェーンを使用して、複数個のデバイスにわたって動作される複合アプリケーションに関係する。依存関係が、異なる変換チェーンクラス間で識別される。また、複数のデバイスが、変換チェーンクラスのうち、これらのデバイスに関連付けられるインスタンスとともに識別される。異なるデバイスに関連付けられる変換チェーンインスタンス同士が結び付けられるべきであると決定したとき、関連付けられる変換チェーンインスタンスのそれらのデバイスのそれぞれのクラス間の識別される依存性に従って、および、インスタンス間の依存関係状態に従って、データは様々なデバイス間で流れることを許可される。このようにして、複合変換チェーンが形成される。一部の実施形態では、デバイスが環境を出る際に、関連付けられる変換チェーンインスタンスが、複合変換チェーンから除去され得る。したがって、デバイスは相互運用アプリケーションを有するのではなく、デバイスは、同じ複合アプリケーションに相互に関与するようになる。新しいデバイスが環境に入る際に、または、デバイスが環境を出る際に、複合アプリケーションそれ自体が変化する。
【0010】
[0030] コンピューティングシステムのいくらかの導入の考察を、
図1に関して説明する。次いで複合デバイスアプリケーション技術を、後続の図に関して説明する。
【0011】
[0031] コンピューティングシステムは今や、ますます多種多様の形式をとっている。コンピューティングシステムは例えば、ハンドヘルドデバイス、アプライアンス、ラップトップコンピュータ、デスクトップコンピュータ、メインフレーム、分散型コンピューティングシステム、さらには、従来はコンピューティングシステムと考えられなかったデバイスであり得る。本説明では、および特許請求の範囲では、用語「コンピューティングシステム」は、少なくとも1つの物理および有形プロセッサ、ならびに、プロセッサにより実行され得るコンピュータ実行可能命令を有する能力のある物理および有形メモリを含む、任意のデバイスまたはシステム(または、それらの組み合わせ)を含むと、広範に定義される。メモリは、任意の形式をとり得るものであり、コンピューティングシステムの性質および形式に依存し得る。コンピューティングシステムは、ネットワーク環境にわたって分散型であり得るものであり、複数個の構成コンピューティングシステムを含み得る。
【0012】
[0032]
図1で示すように、その大部分の基本構成では、コンピューティングシステム100は典型的には、少なくとも1つのハードウェア処理ユニット102およびメモリ104を含む。メモリ104は、揮発性、不揮発性、またはその2つの何らかの組み合わせであり得る、物理システムメモリであり得る。用語「メモリ」はさらには、本明細書では、物理記憶媒体などの不揮発性大容量記憶装置を指すために使用され得る。コンピューティングシステムが分散型である場合、処理、メモリ、および/または記憶能力もまた分散型であり得る。本明細書では、用語「実行可能モジュール」または「実行可能コンポーネント」は、コンピューティングシステム上で実行され得る、ソフトウェアオブジェクト、ルーティング、または方法を指す場合がある。本明細書で説明する異なるコンポーネント、モジュール、エンジン、およびサービスは、コンピューティングシステム上で実行するオブジェクトまたはプロセスとして(例えば、別々のスレッドとして)実装され得る。
【0013】
[0033] 後に続く説明では、実施形態を、1つまたは複数のコンピューティングシステムにより行われる行為を参照して説明する。そのような行為がソフトウェアで実装される場合、行為を行う関連付けられるコンピューティングシステムの1つまたは複数のプロセッサは、コンピューティングシステムのオペレーションを、コンピュータ実行可能命令を実行したことに応答して指図する。例えばそのようなコンピュータ実行可能命令は、コンピュータプログラム製品を形成する1つまたは複数のコンピュータ可読媒体上で実施され得る。そのようなオペレーションの例は、データの操作を含む。コンピュータ実行可能命令(および、操作されるデータ)は、コンピューティングシステム100のメモリ104に記憶され得る。コンピューティングシステム100はさらには、通信チャネル108を含み得るものであり、その通信チャネル108は、コンピューティングシステム100が、他のメッセージプロセッサと、例えばネットワーク110を介して通信することを可能とする。
【0014】
[0034] コンピューティングシステム100はさらには、ディスプレイ、スピーカ、発光体、作動器などの、出力レンダリングコンポーネントを含む可能性がある。コンピューティングシステム100はさらには、キーボード、ポインタデバイス(マウスまたはトラッキングパッドなど)、ボイス認識デバイス、および、場合によってはさらには物理センサ(例えば、温度計、全地球測位システム、光検出器、コンパス、加速度計など)などの入力コンポーネントを含み得る。
【0015】
[0035] 本明細書で説明する実施形態は、下記でより詳細に考察するように、例えば1つまたは複数のプロセッサおよびシステムメモリなどのコンピュータハードウェアを含む、専用または汎用コンピュータを、備え得る、または利用し得る。本明細書で説明する実施形態はさらには、コンピュータ実行可能命令および/またはデータ構造を、搬送または記憶するための、物理および他のコンピュータ可読媒体を含む。そのようなコンピュータ可読媒体は、汎用または専用コンピュータシステムによりアクセスされ得る、任意の利用可能な媒体であり得る。コンピュータ実行可能命令を記憶するコンピュータ可読媒体は、物理記憶媒体である。コンピュータ実行可能命令を搬送するコンピュータ可読媒体は、伝送媒体である。したがって例としては、および制限としてではなく、本発明の実施形態は、少なくとも2つの明確に異なる種類のコンピュータ可読媒体、すなわちコンピュータ記憶媒体および伝送媒体を備え得る。
【0016】
[0036] コンピュータ記憶媒体は、コンピュータ実行可能命令またはデータ構造の形式での所望のプログラムコード手段を記憶するために使用され得る、および、汎用または専用コンピュータによりアクセスされ得る、RAM、ROM、EEPROM、CD−ROMもしくは他の光学ディスク記憶装置、磁気ディスク記憶装置もしくは他の磁気記憶デバイス、または、任意の他の記憶媒体を含む。
【0017】
[0037] 「ネットワーク」は、コンピュータシステムおよび/またはモジュールおよび/または他の電子デバイスの間での電子データの移送を可能にする、1つまたは複数のデータリンクと定義される。情報が、ネットワークまたは別の通信接続(ハードワイヤード、ワイヤレス、または、ハードワイヤードもしくはワイヤレスの組み合わせのいずれか)を介して、コンピュータに転送または提供されるとき、コンピュータは当然のことながら、接続を伝送媒体とみなす。伝送媒体は、コンピュータ実行可能命令またはデータ構造の形式での所望のプログラムコード手段を搬送するために使用され得る、および、汎用または専用コンピュータによりアクセスされ得る、ネットワークおよび/またはデータリンクを含み得る。上記のものの組み合わせもまた、コンピュータ可読媒体の範囲内に含めるべきである。
【0018】
[0038] さらに、様々なコンピュータシステムコンポーネントに達すると、コンピュータ実行可能命令またはデータ構造の形式でのプログラムコード手段は、伝送媒体からコンピュータ記憶媒体に(または、その逆に)自動的に転送され得る。例えば、ネットワークまたはデータリンクを介して受信される、コンピュータ実行可能命令またはデータ構造は、ネットワークインターフェイスモジュール(例えば、「NIC」)の内部のRAMにバッファリングされ、次いで最後のところでは、コンピュータシステムRAMに、および/または、コンピュータシステムでのより揮発性でないコンピュータ記憶媒体に転送され得る。したがって、コンピュータ記憶媒体は、伝送媒体をもまた(さらには、主として)利用するコンピュータシステムコンポーネントに含まれ得ることを理解すべきである。
【0019】
[0039] コンピュータ実行可能命令は例えば、プロセッサで実行されたとき、汎用コンピュータ、専用コンピュータ、または専用処理デバイスに、ある決まった機能または機能の群を実行させる、命令およびデータを備える。コンピュータ実行可能命令は例えば、バイナリ、さらには、アセンブリ言語などの中間フォーマット命令などの、プロセッサによる直接実行の前に何らかのトランスレーション(コンパイルなど)を経る命令、さらにはソースコードであり得る。主題を、構造的特徴および/または方法論的行為に固有の文言で説明しているが、添付の特許請求の範囲で定義される主題は、上記で説明した、説明した特徴または行為に必ずしも制限されないことを理解すべきである。むしろ、説明した特徴および行為は、特許請求の範囲を実装することの例示的な形式として開示されるものである。
【0020】
[0040] 当業者であれば、パーソナルコンピュータ、デスクトップコンピュータ、ラップトップコンピュータ、メッセージプロセッサ、ハンドヘルドデバイス、マルチプロセッサシステム、マイクロプロセッサベースの、またはプログラマブルな民生用電子機器、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ、移動電話、PDA、ページャ、ルータ、スイッチなどを含む、多くのタイプのコンピュータシステム構成によってネットワークコンピューティング環境で本発明が実施され得ることを理解するであろう。本発明はさらには、分散型システム環境で実施され得るものであり、その環境では、ネットワークによって(ハードワイヤードデータリンク、ワイヤレスデータリンクによって、または、ハードワイヤードデータリンクおよびワイヤレスデータリンクの組み合わせによってのいずれかで)リンクされる、ローカルコンピュータシステムおよびリモートコンピュータシステムが、両方ともタスクを実行する。分散型システム環境ではプログラムモジュールは、ローカルおよびリモートの両方のメモリ記憶デバイス内に設けられ得る。
【0021】
[0041] 本明細書で説明する原理は、変換チェーンを使用して動作する。変換チェーンは、各々がデータソースまたはデータターゲットを表し得るノードの相互接続されるセットである。ノード間にはリンクが存在し、各々のリンクは変換を表す。任意の所与のリンク毎に、関連付けられる変換は、リンクに対する入力端部に位置する1つまたは複数のデータソースの値のコピーを受信し、リンクの出力端部に設けられる1つまたは複数のデータターゲットで提供される、結果として生じる値を生成する。任意の所与の変換毎に、その入力端部でのデータソースの1つまたは複数での値が変化するとき、変換は自動的に再評価され、変換の出力端部での1つまたは複数のデータターゲットの値の変化をもたらす可能性がある。
【0022】
[0042] 1つの実施形態では、変換チェーンがどれだけ複雑であるかに関わらず、変換は宣言文から構築され得るものであり、それらの宣言文は、1つまたは複数の値を入力として受信し、結果として生じる1つまたは複数の値を出力として提供し得る、式、規則、拘束、シミュレーション、または任意の他の変換タイプを表すものである。変換チェーンの例はスプレッドシートプログラムであり、その場合、セルのいずれかは、データソースまたはデータターゲットであり得る。式(すなわち、変換)を任意のセルに関連付け、そのセルを式の結果が置かれるデータターゲットにすることができる。
【0023】
[0043] 単に例として、
図2は、単一のリンク220だけが存在する、単純な変換チェーン200を示す。本説明の全体を通して使用する図面表記では、リンクは矢印として示されることになり、入力端部は矢印の尾部として表され、出力端部は矢印の頭部として表される。リンクの入力端部に複数個のデータソースが存在する事例では、矢印は、複数個の尾部を伴って表されることになる。矢印の尾部でのデータソースの値のコピーは、変換への入力を表す。変換の結果として生じる値により影響を受ける複数個のデータターゲットが存在する事例では、矢印は、複数個の頭部を伴って表されることになる。矢印の頭部でのデータターゲットの値は、変換からの出力を表す。
【0024】
[0044] 例えば
図2は、データソース201と、データターゲット202と、単一のリンク220とを含む、単純な変換チェーン200を示す。リンク220は、データターゲット202での値212を生成するために、データソース201での値211のコピーに関して行われる変換を表す。値211が変化する場合、リンク220により表される変換は再評価され、データターゲット202での値212の変化をもたらす可能性がある。
【0025】
[0045]
図3は、3つのデータソース301、302、および303と、2つのデータターゲット304および305と、単一のリンク320とを含む、別の単純な例示的な変換チェーン300を示す。リンク320は、データターゲット304および305での値を生成するために、データソース301、302、および303の値のコピーに関して行われる変換を表す。データソース301、302、または303のうちの任意の値が変化する場合、変換リンク320は再評価され、データターゲット304および305の任意の1つまたは複数の値の変化をもたらす可能性がある。
【0026】
[0046]
図4は、別の例示的な変換チェーン400を示す。また、
図4は、変換チェーンがさらに複雑にされた変換チェーンを創出するために、互いを基に築造し得るものであり、その場合、1つのリンクに対するデータソースは、他のリンクでのデータターゲットであり得るという原理を示す。例えば変換チェーン400は、変換チェーン200のインスタンス401と、変換チェーン300の402のインスタンスとを含む。この事例では、リンク220のデータターゲット202は、リンク320のデータソース301でもある。データソース201に関する値が変化する場合、リンク220により表される変換は再評価され、データターゲット202での値の変化をもたらす可能性がある。そのデータターゲット202はさらに、次のリンク320に対するデータソース301である。同様に、データソース301の値の変化により、変換リンク320が再評価されることになり、データターゲット304および305の任意の1つまたは複数の値の変化をもたらす可能性がある。データターゲット304および305は同様に、さらに他のリンクに対するデータソースを表す場合がある。したがって複雑な変換チェーンでは、1つの値変化が、変換チェーンの内の変換の適正な自動化された再評価によって、変換チェーン内の複数個のノードを通しての伝搬される複数の値変化を引き起こし得る。
【0027】
[0047] 例示的な変換チェーン400は2つのリンクだけを含むが、変換チェーンは、かなり複雑になり、可算ノード、および、それらの可算ノードを接続する関連付けられるリンクを含む場合がある。本明細書で説明する原理は、変換チェーンの複雑度に関わらず動作し得る。
【0028】
[0048]
図5は、6つのデバイス501〜506が存在する環境500を示す。省略符号507は、環境500の内部に存在するデバイスの数においての柔軟性を表す。事実上は、かなり動的に、環境500から離れ、環境500に入るデバイスが存在し得る。必要とされるわけではないが、デバイス507の各々は、
図1のコンピューティングシステム100に対して説明したように構造化され得る。
【0029】
[0049] 環境500は、デバイスのすべてが同じ近接度で設けられる物理環境である必要はないが、しばしばそのような場合であり得る。環境500は代わりに、デバイスのセットであって、それによって1人または複数のユーザが入力を提供し得るデバイスのセット、および、複数個のデバイスであって、それらによって出力が複数人のユーザに提供され得る複数個のデバイスが存在する、任意の環境と思考され得るものである。
【0030】
[0050] デバイスの一部(例えば、デバイス501〜504)は、協調アプリケーションを伴う単なる協調デバイスを超えるものを形成する助力になる。代わりに、デバイス501〜504は各々、複合アプリケーションのコンポーネントに関連付けられる。デバイス501〜504の任意のものが環境500を離れる際に、複合アプリケーションは、より小さくなり、そのことにより、アプリケーションの変化した機能性をもたらす。他方で、アプリケーションのコンポーネントを有するデバイス(デバイス501〜504など)が環境500に入る際に、複合アプリケーションは実際上、より大きくなり、そのことにより実際上、複合アプリケーションの機能性、およびまさに構造を変化させる。本明細書で説明する原理によれば、1つのデバイスの変換チェーンが、他のデバイスの変換チェーンと結び付けられ、デバイスの拡大されたセットをより効果的に活用し得る、より大きな変換チェーンをもたらし得る。
【0031】
[0051] デバイス505は、環境500で使用され得る出力デバイスを表すが、必ずしも変換チェーンを、複合アプリケーションのより大きな変換チェーンに対して付与しない。例えばデバイス505は、大きなスクリーンディスプレイであり得る。デバイス506は、環境500で使用され得る入力デバイスを表すが、必ずしも変換チェーンを、複合アプリケーションのより大きな変換チェーンに対して付与しない。例えばデバイス506は、マイクロホンであり得る。デバイス501〜504の存在により、それぞれの関連付けられる変換チェーンの部分が、複合アプリケーションのより大きな変換チェーンに貢献する。しかしながらデバイス501〜504はさらには、全体として複合アプリケーションにより使用され得る、入力能力および出力能力を有し得る。環境500は任意選択により、下記でさらに説明する外部システム510を含み得る。
【0032】
[0052]
図6A〜6Dは、例示的な変換チェーンインスタンスまたはクラス600A〜600Dを示す。インスタンスは、クラスと同じ構造を有することになるので、例示される形態は、変換クラスおよび変換インスタンスを表すように考えられ得る。しかしながらインスタンスは、変換チェーンのノードの1つまたは複数の各々に関連付けられる特定のインスタンス状態を有することになる。したがって要素600A〜600Dは、変換チェーンクラスまたは変換チェーンインスタンスと称する場合がある。用語「変換チェーン」は、変換チェーンクラス、およびそれらの関連付けられる変換チェーンインスタンスの両方を一般的に指すために使用されることになる。例として変換チェーンインスタンス600A〜600Dは、それぞれのデバイス501〜504に関連付けられ得る。
【0033】
[0053] 例示的な変換チェーン600A〜600Dは、本明細書で説明する、より広範な原理を、あまりにも複雑な例によって分かりにくくすることを避けるために、相対的に単純である。それでも本明細書で説明する原理は、変換チェーンがどれだけ複雑であるかに関わらず、ならびに、環境の内部にあり、複合アプリケーションを形成している、変換チェーンおよび関連付けられるデバイスの数に関わらず適用される。
【0034】
[0054]
図6A〜6Dの表記では、変換クラス600N(ただしNは、A〜Dに及ぶ)に属するノードは、添え字Nを使用して表される。例えば
図6Aでは変換チェーン600Aは、ノード601A、602A、603A、および604Aを含む。残りの要素601B、601C、および601Dは、「A」の添え字を伴って終了せず、したがって、変換チェーン600A内のノードではない。代わりに要素601B、601C、および601Dは、他の変換チェーンとの依存関係を表す。
【0035】
[0055]
図6A〜6D、7A〜7D、8A〜8C、および9の全体を通して、変換チェーンそれ自体のノードのではなく、依存関係要素である要素を強調するために、依存関係要素は破線の境界によって表される。変換チェーンが、依存関係要素により表されるノードを含む別の変換チェーンと結び付けられない場合、データは、ノードから依存関係要素に流れない。データが特定の変換に沿って流れることができないという事実は、図の全体を通して、「X」によって印を付けられるリンクにより表される。
【0036】
[0056] 例えば、変換チェーン600A内の要素601Bは、変換チェーン600B内のノード601Bとの依存関係を表す。依存関係要素601Bは、破線によって縁取られ、その依存関係要素601Bへ、またはその依存関係要素601Bからつながるすべてのリンクは、この段階では変換チェーン600Aは変換チェーン600Bと結び付けられないので、「X」によって印を付けられる。変換チェーン600A内の要素601Cは、変換チェーン600C内のノード601Cとの依存関係を表す。変換チェーン600A内の要素601Dは、変換チェーンクラス600D内のノード601Dとの依存関係を表す。
【0037】
[0057] 単独で、変換チェーンインスタンス600Aは、アプリケーションとして機能し得る。例えば、データソース601Aからの値は、変換される結果をデータターゲット604Aの値として形成するために使用され得る。さらに、データソース601Aおよび602Aからの値は、データターゲット603Aの値をもたらすために変換され得る。変換チェーンインスタンス600Aが単独である場合、要素601B、601C、および601Dへ、ならびにそれらの要素からつながる変換は評価されない。
【0038】
[0058] 変換チェーン600Bは、3つのノード601B、602B、および603Bを含む。しかしながら変換チェーン600Bはさらには、異なる変換チェーン内のノードの参照を行う依存関係要素601A、602A、601C、および603Cを含む。やはり変換チェーンインスタンス600Bは、単一のアプリケーションとして独立して動作し得る。例えば、データソース601Bからの値は、データターゲット602Bに対する結果として生じる値を生成するために、変換を通して提供され得る。データソース602Bからの値は、データターゲット603Bに対する結果として生じる値を生成するために、変換を通して提供され得る。
【0039】
[0059] 変換チェーンインスタンス600Aおよび600Bは独立して動作し得るが、
図7Aは、変換チェーン600Bと結び付けられる変換チェーン600Aを含む、結び付けられる変換チェーン700Aを示す。変換チェーンの各々内の依存関係要素は今や、参照される実在のノードによって置換されている。例えば
図6Aの依存関係要素601Bは、今やノード601Bであり、
図6Bの依存関係要素601Aは、今やノード601Aである。添え字AまたはBを有するノードのすべては、変換チェーン700A内のノードであり、添え字CまたはDを有するノードのみが依存関係要素である。例えばノード601A、602A、603A、604A、601B、602B、および603Bは、拡大された変換チェーン700A内のノードであり、複合アプリケーションの機能性は、個々の変換チェーン600Aおよび600B単独の機能性の総和より、ある程度良好になる。
【0040】
[0060] 変換チェーン600Cは、3つのノード601C、602C、および603Cを含む。しかしながら変換チェーン600Cはさらには、異なる変換チェーン内のノードの参照を行う依存関係要素603A、601B、および603Bを含む。やはり変換チェーンインスタンス600Cは、単一のアプリケーションとして独立して動作し得る。例えば、データソース601Cからの値は、データターゲット602Cに対する結果として生じる値を生成するために、変換を通して提供され得る。同様に、データソース601Cからの値はさらには、データターゲット603Cに対する結果として生じる値を生成するために、変換を通して提供され得る。
【0041】
[0061] 変換チェーンインスタンス600Aおよび600Cは独立して動作し得るが、
図7Bは、変換チェーン600Cと結び付けられる変換チェーン600Aを含む、結び付けられる変換チェーン700Bを示す。変換チェーンの各々内の依存関係要素は今や、依存関係要素は変換チェーン600Aまたは600Cのいずれかのノードを参照するという範囲内で、参照される実在のノードによって置換されている。今や添え字AまたはCを有するノードのすべては、変換チェーン内のノードであり、添え字BまたはDを有するノードのみが依存関係要素である。例えばノード601A、602A、603A、604A、601C、602C、および603Cは、拡大された変換チェーン700B内のノードである。複合アプリケーションの機能性は、個々の変換チェーンインスタンス600Aおよび600Cの機能性の総和より良好になる。
【0042】
[0062]
図7Cは、変換チェーンクラス600Cと結び付けられる変換チェーンクラス600Bを含む、結び付けられる変換チェーン700Cを示す。変換チェーンの各々内の依存関係要素は、依存関係要素は変換チェーン600Bまたは600Cのいずれかのノードを参照するという範囲内で、参照される実在のノードによって置換されている。今や添え字BまたはCを有するノードのすべては、変換チェーン内のノードであり、添え字AまたはDを有するノードのみが依存関係要素である。例えばノード601B、602B、603B、601C、602C、および603Cは、拡大された変換チェーン700C内のノードであり、複合アプリケーションの機能性は、個々の変換チェーンインスタンス600Bおよび600Cの機能性の総和より良好になる。
【0043】
[0063]
図8Aは、やはり結び付けられている変換チェーン600A、600B、および600Cを含む、結び付けられる変換チェーン800Aを示す。変換チェーンの各々内の依存関係要素は、依存関係要素は変換チェーン600A、600B、または600Cのいずれかのノードを参照するという範囲内で、参照される実在のノードによって置換されている。示すノードのすべては、実際上は、依存関係要素601Dを除いて変換チェーン内のノードであることに留意されたい。複合アプリケーションの機能性は、個々の変換チェーン600A、600B、および600Cの機能性の総和より良好になる。
【0044】
[0064] 変換チェーン600Dは、2つのノード601Dおよび602Dを含む。しかしながら変換チェーン600Dはさらには、異なる変換チェーンクラス600A内のノードの参照を行う単一の依存関係要素603Aを含む。やはり変換チェーンクラス600Dのインスタンスは、単一のアプリケーションとして独立して動作し得る。例えば、データソース601Dからの値は、データターゲット602Dに対する結果として生じる値を生成するために、変換を通して提供され得る。
【0045】
[0065] 変換チェーンインスタンス600Aおよび600Dは独立して動作し得るが、
図7Dは、変換チェーン600Dと結び付けられる変換チェーン600Aを含む、結び付けられる変換チェーン700Dを示す。変換チェーンの各々内の依存関係要素は今や、依存関係要素は変換チェーン600Aまたは600Dのいずれかのノードを参照するという範囲内で、参照される実在のノードによって置換されている。今や添え字AまたはDを有するノードのすべては、変換チェーン内のノードであり、添え字BまたはCを有するノードのみが依存関係要素である。例えばノード601A、602A、603A、604A、601D、および602Dは、拡大された変換チェーン700D内のノードであり、複合アプリケーションの機能性は、個々の変換チェーン600Aおよび600Dの機能性の総和より、ある程度良好になる。
【0046】
[0066]
図7A〜7Dは、変換チェーン600A、600B、600C、および600Dの、他でもない2つを含む可能な置き換えのすべてを示すことに留意されたい。変換チェーン600Bおよび600Dは、2つの変換チェーンの組み合わせでは直接結び付けられない。なぜなら、いずれの変換チェーンも、他方の変換チェーン内のノードを参照する依存関係要素を有さないからである。さらに、変換600Cおよび600Dは、2変換チェーン組み合わせでは直接結び付けられない。なぜなら、いずれも、他方への依存関係参照を有さないからである。
【0047】
[0067]
図8Aは、変換チェーン600A、600B、600C、および600Dの、他でもない3つを含む、3つの可能な組み合わせの1つを示す。特に
図8Aは、変換チェーン600A、600B、および600Cを組み合わせる、拡大された変換チェーン800Aを示す。
図8Bは、変換チェーン600A、600B、および600Dを組み合わせる、拡大された変換チェーン800Bを示す(その場合すべてのノードは、依存関係要素601Cおよび603Cを除いて、変換チェーンの部分である)。
図8Cは、変換チェーン600A、600C、および600Dを組み合わせる、拡大された変換チェーン800Cを示す(その場合すべてのノードは、依存関係要素601Bおよび603Bを除いて、変換チェーンの部分である)。例示される変換チェーン600B、600C、および600Dの組み合わせは存在しない。なぜなら、変換チェーン600Dは、変換チェーン600Bへの(または、逆も同様)、または、変換チェーン600Cへの(または、逆も同様)依存関係参照を含まないからであることに留意されたい。
図9は、組み合わされる変換チェーン600A、600B、600C、および600Dのすべてを含む、組み合わされる変換チェーン900を示す。
【0048】
[0068] したがって、環境内にそれぞれのデバイス501〜504に関連付けられる変換チェーン600A、600B、600C、および600Dを与えられると、形成され得る(
図7A〜7D、
図8A〜8C、および
図9の変換チェーンに対応する)8つの可能な複合アプリケーションが存在する。したがって、様々なデバイスの変換チェーンが、環境内に結び付けられ、環境から結合解除される際に、まさに変換チェーンそれ自体が変化し、複合アプリケーションの構造が、そのことにより変化する。例えば、データソース601Aの値の変化は、その変化の効果が1つまたは複数の変換を通して自動的に伝搬される際に、そのデータソース601Aが、変換チェーン600A単体内にあるか、変換チェーン700A内にあるか、変換チェーン700B内にあるか、変換チェーン700D内にあるか、変換チェーン800A内にあるか、変換チェーン800B内にあるか、変換チェーン800C内にあるか、それとも、変換チェーン900内にあるかに依存して、変換チェーンへの非常に異なる影響力を有する場合がある。
【0049】
[0069] 例として、デバイス501が最初に環境に入り、それにより、変換チェーン600Aが使用されることになると仮定する。デバイス502が次いで環境に入り、それにより、変換チェーン600Bが変換チェーン600Aと結び付くことになり、そのことが、変換チェーン700Aをもたらす。したがって、動作する変換チェーンは、変換チェーン600Aから変換チェーン700Aに変化する。ここで、第3のデバイス503が環境に入り、それにより、変換チェーン600Cが変換チェーン700Aと結び付くことになり、そのことにより、変換チェーン800Aをもたらすと仮定する。したがって、動作する変換チェーンは、変換チェーン700Aから変換チェーン800Aに変化する。ここで、デバイス502が離れると仮定する。変換チェーン700Bが次いで、動作可能になることになる。ここで、デバイス504が環境に入り、それにより、変換チェーン600Dが変換チェーン700Bと結び付くことになり、それにより、変換チェーン800Cが、動作する変換チェーンになることになると仮定する。ここで、デバイス503が離れ、それにより、変換チェーン700Dが動作可能になると仮定する。ここで、デバイス501が離れ、それにより、変換チェーン600Dが動作可能になると仮定する。最終的にデバイス504が、環境内で動作する変換チェーンを残さずに離れる。このシナリオでは、動作するアプリケーションは、以下のように7回、構造を変化させた(およびしたがって、機能性を変化させる):1)変換チェーン600Aによって始まる、2)次いで、変換チェーン700Aに転じる、3)次いで、変換チェーン800Aに転じる、4)次いで、変換チェーン700Bに転じる、5)次いで、変換チェーン800Cに転じる、6)次いで、変換チェーン700Dに転じる、7)次いで、変換チェーン600Dによって完了する。
【0050】
[0070]
図10は、複数個の結び付けられる変換チェーンインスタンスにより表される複合アプリケーションの実行を準備するための方法1000のフローチャートを示す。方法1000は、環境500の内部にあるデバイス501〜507の任意のものにより実行され得る。あるいは、または加えて、方法1000は、例えば
図5の外部システム510によるなど、デバイス501〜507の外部で実行され得る。例えば外部システム510は、クラウドコンピューティング環境で提供されるサービスであり得る。どこで方法1000が行われるかに関わらず、
図11は、方法1000を実行し得るシステム1100を示す。したがって、システム1100がデバイス501〜507の1つもしくは複数に組み込まれるかどうか、または、システム1100が
図5の外部システム510であるかどうか、または、それらの組み合わせであるかに関わらず、
図11のシステム1100を何度も参照して、方法100について以下で説明する。
【0051】
[0071] 方法1000は、時間的な依存関係を有さない2つの行為1001および1002を含む。例えば方法は、異なる変換チェーンクラス間の依存関係を識別するステップ(行為1001)を含む。これらの依存関係は、本質的には、異なる変換チェーンクラスのインスタンスが、(さらなるインスタンスベースの承認を前提として)相互運用することを可能とするために、クラスを生成したクラス作成者により創出される認可である。
【0052】
[0072] 例えばシステム1100は、論理コンポーネント1101および変換クラス定義ライブラリ1110を含み、その変換クラス定義ライブラリ1110は、6つの変換チェーンクラス定義1111〜1116を含むように示される。しかしながら省略符号1117は、変換チェーンクラス定義ライブラリ1110は任意の数の変換チェーンクラス定義を含み得ることを表す。例として、変換チェーンクラス定義1111、1112、1113、および1114はそれぞれ、
図6A〜6Dの変換チェーンクラス600A、600B、600C、および600Dを定義すると仮定する。各々の変換チェーンクラスは依存関係要素を定義するので、システム1100は、ライブラリ1110を使用して、異なる変換チェーンクラス間の依存関係を識別し得る。
【0053】
[0073] 例えば、変換チェーン600Aの依存関係要素601B、および、変換チェーン600B内の依存関係要素601Aを観察することにより、論理コンポーネント1101は、変換チェーンクラス600Aおよび600Bが結び付けられる場合、または、クラスのインスタンス同士が結び付けられる場合実在することになる、ノード601Aと601Bとの間の依存関係を識別し得る。論理コンポーネント1101は、変換チェーン600Aおよび600Bの作成者が両方とも、これらの依存関係要素での結び付きを(ユーザがさらには、インスタンスレベルで、ランタイムに認可することを推定して)認可することに同意することを推論し得る。
【0054】
[0074] 方法1000はさらには、変換チェーンクラスの任意のもののインスタンスに関連付けられるデバイスを識別するステップ(行為1002)を含む。デバイスは、システム1100に対して、場合によってはデバイス識別子を、および可能性として、デバイスが使用することを望む任意の変換チェーンクラスを用いて、身元を明らかにし得る。あるいはシステム1100は、各々のデバイスに関連付けられる特定のデフォルト変換クラスを有し、したがっておそらくは、デバイス識別子を受信するだけである場合がある。デバイスが使用することをライセンスされる一部の変換チェーンクラス、および、デバイスが使用することをライセンスされない他の変換チェーンクラスが存在する場合がある。
【0055】
[0075] 例えばシステム1100はさらには、様々な変換チェーンクラスに関連付けられるようなデバイスのレジストリを含む、デバイスレジストリ1120を含む。例えばデバイスレジストリ1120は、5つのデバイスレジストリ1121〜1125を含むが、省略符号1126は、デバイスレジストリ1120は任意の数のデバイスレジストリを含み得ることを表す。さらにデバイスレジストリ1120は、長期の間持続される場合もあるし、および/または、短い期間の間保たれるだけである場合もある。いずれにしても、システム1100は、複数個のデバイスを識別し、それらのデバイスに対して関連付けられる変換チェーンを見出す。単に例として、ことによると
図5のデバイス501〜504は、レジストリ1121〜1124に関連付けられる。そのような関連付けにより、システム1100は、変換チェーンインスタンス600A、600B、600C、600D(それぞれ、変換チェーンクラス定義1111、1112、1113、および1114により定義される)がそれぞれ、それらのデバイス501〜504に関連付けられることを検出することが可能である。
【0056】
[0076] 一部の実施形態では、システム1100自身が、特定の変換チェーンクラスのインスタンスの表現を、それぞれのデバイスのために実行する。例えば、変換チェーンクラス600Aがデバイス501に関連付けられることを識別すると、システム1100は、変換チェーンインスタンス600Aの表現を、デバイス501に対して動作させ得る。したがって、入力がデバイスから受信される際に、システム1100は、変換チェーン内の特定のノードに関する変化を識別し、チェーンを、変換チェーンの全体を通して伝搬させる。これは、「直接参加」手法と称することになる。この直接参加手法は、処理が、入力を提供しているデバイス自身より優れた処理性能を有する、デバイスまたはシステムまたはクラウドにオフロードされ得るという点で、いくらかの利点を有する。
【0057】
[0077] 本明細書では「不干渉」手法と称する別の手法では、デバイスは、それ自体により変換クラスに関連付けられ、クラスのインスタンスを実行する。依存関係が、別のデバイスに関連付けられる別の変換チェーンに遭遇するとき、他のデバイスもまた不干渉手法に関与する場合、データは、直接(例えば、ピアツーピアネットワーキングによって)そのデバイスに流され得る。あるいはデバイスは、データを間接的に他のデバイスに(例えば、外部システムまたはクラウドによって)流し得る。外部システム510が、変換チェーンクラスのインスタンスの表現を、他のデバイスに対して実行している場合、デバイスは代わりに、データを外部システム510内に、変換チェーンの残りへのさらなる伝搬のために流し得る。
【0058】
[0078]
図12は、変換クラスの2つのインスタンスを結び付けるための方法1200のフローチャートを示す。最初に変換チェーンクラスが、結び付けられ得るタイプであると確認される(行為1201)。例えば、変換チェーンクラスが互いに参照しない場合、おそらくは、それぞれのクラスのインスタンスを結び付けるためのクラスベースの認可は存在しない。例えば、変換チェーンクラス600Dは、変換チェーンクラス600Bまたは変換チェーンクラス600Cと結び付けられ得ない。なぜなら、変換チェーンクラス600Dは、変換チェーンクラス600Bまたは600C内の要素を参照しないからである。一方、変換チェーンクラス600Dは、変換チェーンクラス600Aと結び付けられ得る。なぜなら、それらは相互に、互いへの依存関係参照を含むからである。
【0059】
[0079] この例では、変換チェーンクラス600Dは、変換チェーンクラス600Bおよび600Cと直接結び付けられ得ない。しかし、変換チェーンクラス600Dは、変換チェーン700A、700B、および800Aが、変換チェーン600Bおよび600Cの1つまたは両方を含むにも関わらず、変換チェーン700A、700B、および800Aと結び付けられ得る。
【0060】
[0080] 一方、代替的実施形態では、変換チェーンクラスの作成者は、他の変換チェーンクラスと結び付くことに関するさらなる制約を指定することができる。例えば作成者は、変換クラスインスタンスがすでに複合変換チェーンである場合に、および/または、複合変換チェーンが特定の構成変換チェーンを有する場合に、特定の変換クラスインスタンスと結び付くことを許可しない一般的な制約を指示することができる。例えば、2つの変換チェーンインスタンスを結び付けるとき、システム1100は、その時点まで、複合変換チェーンを構築するために使用された変換クラス識別情報の経過を追う場合がある。そのリストは、クラスベースの認可に対する条件が満たされたかどうかを確認するために使用され得る。
【0061】
[0081] 作成者はさらには、制約を、単一の依存関係の粒度で表す場合がある。例えば、変換チェーンクラス600Aの依存性要素601Bでは、作成者は、結び付きが、その依存関係要素に関して、その依存関係要素が結び付けられる変換チェーンが、競合者により作成される、識別される変換チェーンクラスを含まない場合にのみ認可されることを表す場合がある。作成者はさらには、変換チェーンから、別の結び付けられる変換チェーンに流されるデータを制御することを、依存関係それ自体に(例えば、ノード601Aと依存関係要素601Bとの間で)橋を架けることになる変換への制約または条件を書き表すことにより行う場合がある。
【0062】
[0082] しかしながら、変換チェーンクラスが相互運用し得る場合でも、そのことは、ユーザが、変換チェーンクラスの自身の特定のインスタンスを、他の変換チェーンクラスの他のインスタンスに結び付けることを望むことを意味しない。結局のところ、データそれ自体(例えば、インスタンス状態)は、ユーザに影響されやすいものであり得る。したがって方法1200はさらには、異なる変換チェーンクラスのインスタンス同士が結び付けられるべきであると決定するステップを含む(行為1202)。
【0063】
[0083] 異なる変換チェーンクラスの2つのインスタンス同士が結び付くことを認可するための結び付き判定基準は、ユーザがミーティング出席者リストに載っているか否か、様々なデバイスのユーザの関係性(例えば、家族、ソーシャルネットワークの友人など)、デバイス間の通信能力(例えば、近距離場)、それぞれのデバイスの(例えば、同じ会議室内での)近接度、ユーザの要求などの、1つまたは複数を含み得る。例えば結び付き判定基準は、インスタンスの関連付けられるユーザが同じチームの一員であるなどの、何らかの業務判定基準を含み得る。別の例として、1つのデバイスは、小売区域またはホテル内のキオスクとされる。利用客がキオスクを使用し、店員または接客係が自動的に、その店員または接客係のデバイスを使用して、その店員または接客係の変換チェーンをキオスクの変換チェーンと結び付けることで、複合アプリケーションを使用して、利用客とインタラクションし得る。条件が、結び付き判定基準に適用され得る。例えば、ベルボーイのデバイスは、接客係が周囲にいない場合(おそらくは、接客係が、対になり得る(pairable)アプリケーションを活動的に使用して利用客のアプリケーションと結び付かない、または、ネットワークから外れていることにより検出される)、利用客のアプリケーションと結び付くことが可能であり得る。
【0064】
[0084] デバイスに関連付けられる変換チェーンクラスのインスタンスが、そのクラスにより定義されるデフォルト状態で開始されることになっていない場合、直接参加手法ではデバイスは次いで、インスタンスデータ(例えば、デバイスに関連付けられる変換チェーンのノードの各々での値)をシステム1100にアップロードし得る(行為1203)。不干渉手法ではおそらくは、境界ノードのみでのインスタンスデータが、システム1100にアップロードされる。
【0065】
[0085] 変換チェーンインスタンスは次いで、変換チェーンの残りと結び付く(行為1204)。例えばこのことは、ターゲット変換チェーンインスタンス内のノードに対応する依存関係要素に対する、ソース変換チェーンインスタンスを検索することにより達成され得る。そのような依存関係要素が見出されると、その依存関係要素は、ターゲット変換チェーンインスタンス内の実在の識別されるノードによって置換され、そのことにより、ソース変換チェーンインスタンスとターゲット変換チェーンインスタンスとの間の実在のリンクを創出する。このことは、ターゲット変換チェーンインスタンス内のノードを識別する、ソース変換チェーンインスタンス内のすべてのそのような見出される依存関係要素に対して反復される。ターゲット変換チェーンインスタンス内のノードに対応しない、ソース変換チェーンインスタンス内で見出される依存関係要素が存在する場合、それらの依存関係要素は、合体される変換チェーンインスタンス内では依存関係チェーン要素のままである。
【0066】
[0086]
図6A〜6Dの例では、変換チェーンクラス600A〜600Dのどれも、同じクラスを参照する依存関係要素を含まないことに留意されたい。しかしながら、本明細書で説明する原理は、特定の変換チェーンクラスのインスタンスが、同じ特定の変換チェーンクラスの別のインスタンス内の別のノードを参照する依存関係要素を有し得る場合でも動作し得る。さらに、結び付けられている特定のノードにより許可される場合、1つまたは複数の異なる変換チェーンインスタンスからとされる複数個のノードが、特定のノードと結び付き得る。
【0067】
[0087] 結び付けられると、変換チェーンは拡大し、ほぼ、変換チェーンが元々、初めから拡大された方式で作成されたかのように、データは、拡大された変換チェーン内に流れる(行為1205)。例えば、変換チェーンクラス600Aのインスタンスが、変換チェーンクラス600Bのインスタンスと結び付くと、結果は、変換チェーンクラス700Aの単一のインスタンスである。変換チェーンクラス600Aのインスタンスが、変換チェーンクラス600Cのインスタンスと結び付くと、結果は、変換チェーンクラス700Bの単一のインスタンスである。変換チェーンクラス600Bのインスタンスが、変換チェーンクラス600Cのインスタンスと結び付くと、結果は、変換チェーンクラス700Cの単一のインスタンスである。変換チェーンクラス600Aのインスタンスが、変換チェーンクラス600Dのインスタンスと結び付くと、結果は、変換チェーンクラス700Dの単一のインスタンスである。
【0068】
[0088] 変換チェーンクラス800Aのインスタンスは、変換チェーンクラス700Aおよび600Cのインスタンスを結び付けることによって、または、変換チェーンクラス600Aおよび700Cのインスタンスを結び付けることによってのいずれかで形成され得る。変換チェーンクラス800Bのインスタンスは、変換チェーンクラス700Aおよび600Dのインスタンスを結び付けることにより形成され得る。変換チェーンクラス800Cのインスタンスは、変換チェーンクラス700Bおよび600Dのインスタンスを結び付けることにより形成され得る。この結び付けるオペレーションを、何度も行うことにより、所与の環境にコラボレーションのために利用可能な多くのデバイスが存在する状況で、非常に大きな変換チェーンを創出することができる。
【0069】
[0089] したがって、結び付けられると(行為1204)、データは自由に、拡大された変換チェーン中で、さらには、かつては構成変換チェーン間の境界であったものを越えて流れ得る(行為1205)。例えば、
図7Aの変換チェーン700Aでは、データは自由に(アプリケーションプログラムインターフェイスの使用なしに、および、関数呼び出しなしに)、まさにデータがノード601Aからノード604Aに(適切な変換によって)流れ得るように、ノード601Aからノード601Bに(適切な変換によって)流れ得る。
【0070】
[0090] したがってシステムは、多種多様のデバイスに関連付けられる変換を、相対的に自動化された、および好都合な方式で結び付けて、そのことにより、複数個のデバイスにわたって共有される複合アプリケーションの変換チェーンを拡大するために使用され得る。このことは、多種多様のシナリオを可能にする。
【0071】
[0091] 例えば、特定の会議室でのミーティングに到着する個人を考える。第1のユーザが、会議室にラップトップコンピュータおよびスマートフォンを伴って入ると、スマートフォンに関連付けられる変換チェーンインスタンスは、ラップトップの変換チェーンインスタンスと結び付けられ、そのことによって、単一のアプリケーションが効果的に、第1のユーザのスマートフォンおよびラップトップにわたって実行中である。第2のユーザが、会議室に少々遅れて入る。第2のユーザもまたミーティング招待状に載っており、そのことによってユーザのスマートフォン変換チェーンは、既存の複合変換チェーンと、変換チェーンをさらに拡大するために結び付けられる。次いでテレビジョンスクリーンが、自動的に電源が入って、ミーティングに関連付けられるデータの一部を出力する。第3のユーザが、タブレットコンピュータを伴って入り、そのユーザもまたミーティングの招待された者である。したがって、タブレットコンピュータに関連付けられる変換チェーンは、複合変換チェーンと結び付いて、変換チェーンをさらに拡大する。したがって、より多くのデバイスが、変換チェーンを結び付けるのに適した環境と結び付く際に、デバイスのすべてにわたって実行されるアプリケーションは、実際上拡大され、そのことにより、アプリケーションそれ自体の機能性を変化させる。複数人のユーザは各々、環境を共有することができ、そのことによって複数人のユーザは、複数のデバイスの少なくとも1つまたは一部の各々を観察することができる。
【0072】
[0092]
図13は、変換チェーンを結合解除するための方法1300のフローチャートを示す。まさに、デバイスが環境に入るときに変換チェーンを結び付けるための方法が存在するように、デバイスが環境を出るときに変換チェーンを結合解除するための方法が存在する。最初にシステムは、変換チェーンクラスのインスタンス同士が結合解除されるべきであると決定する(行為1301)。それに応じて、そのインスタンスへの、およびそのインスタンスからのデータの流れが中断される(行為1302)。インスタンス同士が結合解除されるべきであると決定するために使用される結合解除判定基準は、任意の判定基準を含み得るが、例として、インスタンスに関連付けられるデバイスの、環境内の他のデバイスとの近接度、ミーティング終結ステータス、インスタンスに関連付けられるデバイスと環境内の他のデバイスとの間の通信能力、ユーザの要求などの、1つまたは複数を含み得る。したがって変換チェーンは、デバイスが環境に入る、および環境を出る際に、動的に変化し得る。
【0073】
[0093] 1つの実施形態ではシステム1100は、提示サービス1150を含む。実行中である変換チェーンインスタンスの1つまたは複数のノードは、1つまたは複数の周辺デバイス上でレンダリングを動作させることができる。同様に1つまたは複数のデバイスは、入力を、変換チェーンインスタンスの1つまたは複数のノード内に提供し得る。例えば、変換チェーン900のインスタンスが、
図5の環境500内で実行中であり、これは、デバイス501〜504が、それぞれの変換チェーンクラス600A〜600Dのインスタンスに関連付けられ、そのことにより、拡大された変換クラス900のインスタンスが生じていると仮定する。
図9を参照して、ノード601Aおよび601Cが入力ノードであり、ノード604A、603B、602C、および602Dが出力ノードであると仮定する。提示サービス1150は、どのデバイスが入力をノード601Aおよび601Cに提供し得るかを、ならびに、そうである場合、何の変換が行われることになるかを選択し得る。1つの例では、これらのデバイスは、それらの変換チェーンのそれぞれの部分に関連付けられ、そのことによって、そのそれぞれの部分の入力ノードは、それぞれのデバイスにより提供される。したがってデフォルトで、元々変換チェーン600Aの部分である入力ノード601Aは、(可能性として、何らかの変換の後に)デバイス501から入力を提供され得る。また、デフォルトの事例では、元々変換チェーン600Cの部分である入力ノード601Cは、(可能性として、何らかの変換の後に)デバイス503から入力を提供され得る。提示サービス1150はさらには、どのデバイスがノード604A、603B、602C、および602Dからの出力をレンダリングすることになるかを、ならびに、(ある場合)何の変換が行われることになるかを選択し得る。
【0074】
[0094]
図14は、変換チェーンの出力を、複数個のデバイス環境でレンダリングするための方法1400のフローチャートを示す。方法1400は、
図11のシステム1100により、またはことによると、
図11の提示サービス1150により実行され得る。論理コンポーネント1101は、変換チェーンクラスのインスタンスの特定のノード(提示ノード)が変化したと決定する(行為1401)。例えば例では、ノード604A、603B、602C、および602Dは各々、出力ノードまたは「提示ノード」である。
【0075】
[0095] 論理コンポーネントはさらには、少なくともその変化したバージョンの出力がレンダリングされ得る、複数個の候補デバイスの特性を識別する(行為1402)。例えば論理コンポーネント1101は、各々のデバイスのレンダリング能力を決定するために、デバイスレジストリ1120を参照し、および/または、デバイスに直接問い合わせ得る。各々のデバイスの特性はさらには、デバイスに関する各々のユーザの並列状態を含み得る。
【0076】
[0096] システムは次いで、少なくともそのバージョンのレンダリングをレンダリングする候補デバイスの少なくとも1つを、識別される特性に基づいて選択する(行為1403)。システムはこの選択を、出力の有用性を最大化するために行う。例えば、出力がすべてのユーザを対象とし、すべてのユーザが物理的に存在する場合、出力は、より大きなスクリーン上でレンダリングされ得る。出力がインタラクティブであり、特定のデバイスからの入力を要する場合、そのデバイスが出力に対して選択され得る。
【0077】
[0097] システムは、デバイスへの実際の出力の前に、何らかの変換がレンダリングに適用されるかどうかを決定する(判断ブロック1404)。変換は、選択されるデバイスの適合性を考慮する。ここで、変換は、選択されるデバイスに依存して、レンダリングごとに異なり得る。変換の例は、レンダリングのタイプを変化させること(例えば、テキストから音声、音声からテキスト、ビデオからテキスト、テキストからビデオなど)を含む。変換はさらには、出力の映画化(cinematization)を含み得る。例えば、ビデオを入力から創出することができ、ビデオにおいて、背景幕を提供したり、場合によっては適切なように変更したり、移動要素を、ビデオ内に、およびビデオ外に移動することができる。
【0078】
[0098] 変換が行われることになる場合(判断ブロック1404での「はい」)、それらの変換が行われる(行為1405)。最終的にレンダリングが、選択されるデバイス上で実行される(行為1406)。したがって複合変換チェーンは、入力を任意のデバイスから任意の形式で取り込み、入力を、必要に応じて、複合変換チェーンの入力ノードにより認識される形式に変換し得る。したがってこの入力は、変換チェーンの全体を通して伝搬される。1つまたは複数の提示ノードの値が変化する場合、適切なデバイスが、出力をレンダリングするために選択され得る。したがって、レンダリングに対する最も適したデバイスは、どのデバイスが、提示ノードを含む変換チェーンの部分に関連付けられたかに対する配慮なしに選択され得る。例えば、提示ノード604Aの値の変化は、排他的に、さらには、変換チェーンインスタンス600Aに対応するデバイス501のすべてでレンダリングされる必要はない。一部の実施形態ではレンダリングは、情報を、何らかのタイプの運動を含む何らかの物理的作動に変換することを含み得る。例えばレンダリングは、ドアを開く、または閉じること、バルブを開く、または閉じること、ドアを解錠または施錠すること、テレビジョンの電源を入れる、または切ることなどを含み得る。
【0079】
[0099] 詳細なシナリオ(本明細書では以降「デバイスシナリオ」と呼ぶ)をここで、
図15A〜15M(まとめて「
図15」と称する)に関して説明する。このシナリオは、本明細書で説明する、より広範な原理により可能にされる、無数の種々のシナリオのただ1つとして提供される。このシナリオではユーザが、様々なコンピューティングデバイスを注文している。シナリオは、4つのデバイス1501、1502、1503、および1504を含むが、シナリオは
図15Aでは、2つのデバイス1501および1502のみが可視である状態で始まる。4つのデバイス1501〜1504の各々は、入力を複合アプリケーションに提供すること、および、出力を複合アプリケーションから受信することに参加する。
【0080】
[00100]
図15Aは、ラップトップコンピュータである2つのデバイス1501および1502を導入する。これらの2つのデバイス1501および1502は、動作する環境内に最初に存在する唯一のデバイスであり、したがって、それらのデバイスのそれぞれの変換チェーンが結び付けられていると仮定する。デバイス1501に関連付けられる変換チェーンは、製造者のナビゲーションおよび選択を可能とする。デバイス1502に関連付けられる変換チェーンは、製造者により売りに出されるデバイスのリストのナビゲーションを可能とし、さらには、ユーザが、リスト内のデバイスの任意のものの総数を変化させることを可能とする。
【0081】
[00101] より具体的にはデバイス1501は、ユーザが、いくつかの製造者を水平にスクロールし、製造者を選択することを可能とする。
図15Aではデバイス1501は、「ベンダ7」、「ベンダ8」、および「ベンダ9」と名付けられた3つのそのような製造者のみを示し、ユーザは「ベンダ8」を選択している。他方でデバイス1502は、デバイス1501で選択されるベンダにより提供されるデバイスの水平にスクロール可能なリストを示す。
図15Aでは、ベンダ8がデバイス1501上で選択されるので、デバイス1502は、ベンダ8により提供されるデバイスのリストを示す。デバイスリスト内の各々の品目は、デバイスの画像1505、デバイスの名前1506、デバイスの単位当たりコスト1507、および、注文されているデバイスの総数1508を含む。各々のデバイスに対する総数は、対応するスクロールコントロールを使用して制御され得る。
【0082】
[00102]
図15Bは、ユーザが、製造者のリストを左方にスクロールし、さらには「ベンダ4」を選択したという点で、
図15Aの状態から進行したシナリオの状態を示す。したがってデバイス1502からの出力は、ベンダ4により製造されるデバイスのリストを表示するために自動的に変化する。そのようにするために、データは、自動的に(アプリケーションプログラムインターフェイスの使用なしに)、デバイス1501に関連付けられる変換チェーンから、デバイス1502に関連付けられる変換チェーンに流れた。
【0083】
[00103]
図15Cは、ユーザが、製造者のリストを左方にスクロールし、さらには「ベンダ2」を選択したという点で、
図15Bの状態から進行したシナリオの状態を示す。したがってデバイス1502からの出力は、ベンダ2により製造されるデバイスのリストを表示するために自動的に変化する。そのようにするために、データは、やはり自動的に、デバイス1501に関連付けられる変換チェーンから、デバイス1502に関連付けられる変換チェーンに流れた。
【0084】
[00104]
図15Dは、ユーザが、ベンダ2により売りに出される2つのデバイスに対する注文総数を変化させるために、デバイス1502上に表示されるスクロールコントロール1511および1512を使用したという点で、
図15Cの状態から進行したシナリオの状態を示す。
図15Eは、ユーザが、デバイス1502を使用して、ベンダ2により売りに出されるデバイスのリストを右方にスクロールし、さらに、ベンダ2により売りに出される2つのさらなるデバイスに対する注文総数を変化させるために、デバイス1502上に表示されるスクロールコントロール1513および1514を使用したという点で、
図15Dの状態から進行したシナリオの状態を示す。したがって、この段階でユーザは、ベンダ2により売りに出される4つのデバイスに対する注文総数を入れた。
【0085】
[00105]
図15Fは、第3のデバイス1503が環境内に導入されるという点で、
図15Eの状態から進行したシナリオの状態を示す。例えば第3のデバイス1503は、注文全体に対する最大単位コストおよび総コストを表示する変換チェーンに関連付けられ得る。デバイス1503が環境内に導入されると、変換チェーンのその部分が既存の複合変換チェーンと結び付けられ、そのことにより、そのようなコストデータをデバイス1503に出力するように複合アプリケーションの機能性を変化させる。変換チェーンインスタンス同士が結び付けられると、総数および単位コストを表すデータが変換チェーンのその部分に流され、デバイス1503が直ちにポピュレートされる。また、デバイス1503が最大単位価格を指示する際に、流れは反対の方向でも起こり、したがって、デバイス1502で示されるデバイスのリストは、最大単位価格を下回る任意のデバイスに制約されることに留意されたい。この事例では、事前にリストに載せられたデバイスのすべてが最大単位価格を下回るので、デバイス1502上の視覚化の変化はない。
【0086】
[00106]
図15Gは、ユーザが、ベンダ2により売りに出されるさらに別のデバイスに対する総数を入れるために、デバイス1502上のスクロールコントロール1515を使用したという点で、
図15Fの状態から進行したシナリオの状態を示す。総数データおよび単位コストデータが、デバイス1503に対応する変換チェーンの部分内に流され、そのことが、デバイス1503上に表示される総コストの変化をもたらす。
【0087】
[00107]
図15Hは、ユーザが、最大単位価格を987ドルに、デバイス1503上のスクロールコントロール1516を使用して下方に調整したという点で、
図15Gの状態から進行したシナリオの状態を示す。その最大単位価格変化は、デバイス1503に関連付けられる変換チェーンの部分から、デバイス1502に関連付けられる変換チェーンの部分に流れており、それにより、ベンダ2により売りに出されるいくらかのデバイスが、リストから削除される。ユーザが額をより高く戻す場合、それらの削除された品目は、リスト上に戻るように自動的に追加され、おそらくは、デバイス1502を、
図15Gで示す状態に戻す。
【0088】
[00108]
図15Iは、第4のデバイス1504が環境内に導入されるという点で、
図15Gの状態から進行したシナリオの状態を示す。例えば第4のデバイス1504は、デバイスの最大重量を表示する変換チェーンに関連付けられ得る。デバイス1504が環境内に導入されると、変換チェーンのその部分が、既存の複合変換チェーンと結び付けられ、そのことにより、そのような最大重量データを出力するように複合アプリケーションの機能性を変化させる。変換チェーンインスタンス同士が結び付けられると、最大重量を表すデータが、デバイス1504に関連付けられる変換チェーンの部分から、デバイス1502に関連付けられる変換チェーンの部分に流される。デバイス1502は、最大重量より重い各々のデバイスに関連付けられる、重量超過警告1518A、1518B、1518C、および1518Dを表示することにより応答する。この時点では
図15Iでは、重量は606グラムだけであり、したがってデバイスのすべては、そのような警告と共にリストに載せられる。
【0089】
[00109]
図15Jは、ユーザが、2キログラムを上回るように最大重量を増大するために、デバイス1504上のスクロールコントロール1517を使用したという点で、
図15Iの状態から進行したシナリオの状態を示す。最大重量変化は、デバイス1504に関連付けられる変換チェーンの部分から、デバイス1502に対応する変換チェーンの部分に流され、そのことが、重量超過警告1518Cおよび1518Dの除去をもたらす(重量超過警告1518Aおよび1518Bは残っている)。
【0090】
[00110] 以上で、ユーザ観点からのシナリオは終結する。
図15K〜15Oは、作成時において、作成者は、変換を宣言によって変化させて、そのことにより、複合アプリケーションの機能性を変化させ得ることを示す。
図15Kではユーザインターフェイス要素1520が、宣言的変換を含むように示され、その宣言的変換は、スライダ1516により指示される値を下回る、提案される製造者小売価格を有するデバイスをフィルタ除去するものである。
図15Lは、この制約が今や除去され、したがって、表示されるデバイスは今や、スライダ1516の値によりフィルタ除去されないことを示す。
【0091】
[00111]
図15Mではユーザインターフェイス要素1521が、小売価格で提案される製品に対して使用されるハイライト表示の色を定義するように示される。ここで、
図15Nは、ハイライト表示色が、製造者の提案される小売価格が、スライダコントロール1516により指示される値を上回るか否かに依存することを示す。そうである場合、ハイライタ色が、例えば緑に変化する。
図15Oは、スライダコントロール1516がこの状況で増大される際に、提案される製造者小売価格がスライダコントロール1516の値を上回る場合、リストからそのデバイスが除去されるという状態から、小売価格で提案される製品が、(スライダ1516の値と比較される際に)製造者の提案される小売価格のハイライト表示を動作させる状態に、複合アプリケーションの挙動が変化したことを示す。
【0092】
[00112] したがって、複数個のデバイスにわたって広がる複合アプリケーションの系統的表現および使用を説明した。さらに、複合アプリケーションは実際に、利用可能なデバイスに依存して、形式を有意に変化させ得る。したがって複合アプリケーションは、環境内の様々なデバイスにより提供されるリソースを効率的に使用するために仕立てられ得る。
【0093】
[00113] 本発明は、他の特定の形式で、本発明の趣旨、または本質的な特性から逸脱することなく実施され得る。説明した実施形態を、すべての事項において、単に例示的であり、制約的ではないと考えるべきである。本発明の範囲は、したがって、上述の説明によるというのではなく、添付の特許請求の範囲により指示される。特許請求の範囲の均等の意味および領域の内部に在るすべての変化は、それらの範囲内に包含されることになる。