(57)【要約】      （修正有）【課題】並列コンピューティングノード間のシームレス相互運用のための方法、システム、及びコンピュータープログラム製品が提供される。【解決手段】サーバーコンピューティング装置が、第１コンピューティングノードから、１以上の他のコンピューティングノードへの伝送のためのメッセージを受信する。複数のコンピューティングノードが、サーバーコンピューティング装置で仮想ネットワークとして規定され、各コンピューティングノードが、サーバーと通信するためのアンサンブルモジュールを含む２０２。サーバーは、メッセージを受信する仮想ネットワークの１以上の他のコンピューティングノードを決定する２０４。サーバーは、決定された１以上の他のコンピューティングノードにメッセージを送信する。各宛先コンピューティングノードが、決定されたノード上の第２アプリケーションのためのアプリケーション特有指令にメッセージをフォーマットする２０６。【選択図】図２
2014209341.tif 000002
【特許請求の範囲】
【請求項１】
並列コンピューティングノード間のシームレスな相互運用のためのシステムであって、
サーバーコンピューティング装置；及び
前記サーバーコンピューティング装置に結合された複数のコンピューティングノードであって、前記複数のコンピューティングノードが、前記サーバーコンピューティング装置で仮想ネットワークとして規定され、各コンピューティングノードが、前記サーバーコンピューティング装置と通信するためのアンサンブルモジュールを含む、複数のコンピューティングノードを備え、
前記サーバーコンピューティング装置が、
第１コンピューティングノードから、前記仮想ネットワークにおける１以上の他のコンピューティングノードへの伝送のためのメッセージを受信するステップであって、前記メッセージが、前記第１コンピューティングノード上の第１アプリケーションからのアプリケーション特有指令に基づいて前記第１コンピューティングノードにより生成される、ステップ、
前記メッセージを受信する前記仮想ネットワークの１以上の他のコンピューティングノードを決定するステップ、及び
決定された１以上の他のコンピューティングノードに前記メッセージを送信するステップを行うように構成され、
各宛先のコンピューティングノードが、前記決定されたノードにおける第２アプリケーションのためのアプリケーション特有指令に前記メッセージをフォーマットする、システム。
【請求項２】
前記メッセージが、仮想ネットワーク識別子及びメッセージトピック識別子を含む、請求項１に記載のシステム。
【請求項３】
前記サーバーコンピューティング装置が、前記仮想ネットワーク識別子及び前記メッセージトピック識別子の少なくとも一つに基づいて、前記メッセージを受信する前記仮想ネットワークの１以上の他コンピューティングノードを決定する、請求項２に記載のシステム。
【請求項４】
前記メッセージが、アプリケーション非依存関数を表す、請求項１に記載のシステム。
【請求項５】
前記メッセージが、前記仮想ネットワークにおける１以上の他のコンピューティングノードに関連する識別子を含み、前記サーバーコンピューティング装置が、前記仮想ネットワークの１以上の他のコンピューティングノードに関連した識別子に基づいて、前記メッセージを受信する前記仮想ネットワークの１以上の他のコンピューティングノードを決定する、請求項１に記載のシステム。
【請求項６】
前記複数のコンピューティングノードが、異種オペレーティングシステムを活用するノードを含む、請求項１に記載のシステム。
【請求項７】
前記第１アプリケーション及び前記第２アプリケーションが異種のアプリケーションであり、前記第１アプリケーションが、前記第１コンピューティングノードの特徴に特有であり、前記第２アプリケーションが、前記第２コンピューティングノードの特徴に特有である、請求項１に記載のシステム。
【請求項８】
前記アンサンブルモジュールは、前記サーバーコンピューティング装置に前記メッセージを送信し、また前記サーバーコンピューティング装置から前記メッセージを受信するために用いられる関数のライブラリである、請求項１に記載のシステム。
【請求項９】
前記コンピューティングノードの前記仮想ネットワークには継続時間が付与され、その経過後に前記サーバーコンピューティング装置から前記仮想ネットワーク定義が除かれる、請求項１に記載のシステム。
【請求項１０】
前記サーバーコンピューティング装置は、認証証明と仮想ネットワーク識別子を含む、前記仮想ネットワークに加入するためのリクエストを、前記コンピューティングノードから受信するように構成され、
前記認証証明を認証し、
前記仮想ネットワーク識別子に関連した前記仮想ネットワークに前記コンピューティングノードを割り当てるように構成される、請求項１に記載のシステム。
【請求項１１】
前記サーバーコンピューティング装置は、メッセージトピックへの加入のリクエストを前記仮想ネットワークの前記コンピューティングノードから受信し、前記メッセージトピックに関連した加入リストに前記コンピューティングノードを割り当てるように構成される、請求項１に記載のシステム。
【請求項１２】
並列コンピューティングノード間のシームレスな相互運用のための方法であって、
サーバーコンピューティング装置により、前記サーバーコンピューティング装置に結合した複数のコンピューティングノードの第１コンピューティングノードから、１以上の他のコンピューティングノードへの伝送のためのメッセージを受信するステップであって、前記メッセージが、第１コンピューティングノード上の第１アプリケーションからのアプリケーション特有指令に基づいて前記第１コンピューティングノードにより生成され、ここで、前記複数のコンピューティングノードが、前記サーバーコンピューティング装置で仮想ネットワークとして規定され、各コンピューティングノードが、前記サーバーコンピューティング装置と通信するためのアンサンブルモジュールを含む、ステップと、
前記サーバーコンピューティング装置により、前記メッセージを受信する前記仮想ネットワークの１以上の他のコンピューティングノードを決定するステップと、
前記サーバーコンピューティング装置により、決定された１以上の他のコンピューティングノードに前記メッセージを送信するステップを含み、
各宛先コンピューティングノードが、決定されたノード上の第２アプリケーションのためのアプリケーション特有指令に前記メッセージをフォーマットする、方法。
【請求項１３】
前記メッセージが、仮想ネットワーク識別子及びメッセージトピック識別子を含む、請求項１２に記載の方法。
【請求項１４】
前記サーバーコンピューティング装置が、前記仮想ネットワーク識別子及び前記メッセージトピック識別子の少なくとも一つに基づいて、前記メッセージを受信する前記仮想ネットワークの１以上の他コンピューティングノードを決定する、請求項１３に記載の方法。
【請求項１５】
前記メッセージが、アプリケーション非依存関数を表す、請求項１２に記載の方法。
【請求項１６】
前記メッセージが、前記仮想ネットワークにおける１以上の他のコンピューティングノードに関連する識別子を含み、
前記サーバーコンピューティング装置が、前記仮想ネットワークの１以上の他のコンピューティングノードに関連した識別子に基づいて、前記メッセージを受信する前記仮想ネットワークの１以上の他のコンピューティングノードを決定する、請求項１２に記載の方法。
【請求項１７】
前記複数のコンピューティングノードが、異種オペレーティングシステムを活用するノードを含む、請求項１２に記載の方法。
【請求項１８】
前記第１アプリケーション及び前記第２アプリケーションが異種のアプリケーションであり、前記第１アプリケーションが、前記第１コンピューティングノードの特徴に特有であり、前記第２アプリケーションが、前記第２コンピューティングノードの特徴に特有である、請求項１２に記載の方法。
【請求項１９】
前記アンサンブルモジュールは、前記サーバーコンピューティング装置に前記メッセージを送信し、また前記サーバーコンピューティング装置から前記メッセージを受信するために用いられる関数のライブラリである、請求項１２に記載の方法。
【請求項２０】
前記コンピューティングノードの前記仮想ネットワークには継続時間が付与され、その経過後に前記サーバーコンピューティング装置から前記仮想ネットワーク定義が除かれる、請求項１２に記載の方法。
【請求項２１】
前記サーバーコンピューティング装置は、認証証明と仮想ネットワーク識別子を含む、前記仮想ネットワークに加入するためのリクエストを、前記コンピューティングノードから受信するように構成され、
前記認証証明を認証し、
前記仮想ネットワーク識別子に関連した前記仮想ネットワークに前記コンピューティングノードを割り当てるように構成される、請求項１２に記載の方法。
【請求項２２】
前記サーバーコンピューティング装置は、メッセージトピックへの加入のリクエストを前記仮想ネットワークの前記コンピューティングノードから受信し、前記メッセージトピックに関連した加入リストに前記コンピューティングノードを割り当てるように構成される、請求項１２に記載の方法。
【請求項２３】
並列コンピューティングノード間のシームレスな相互運用のための、コンピューター読み取り可能記憶媒体に有形に具現化されたコンピュータープログラム製品であって、当該コンピュータープログラム製品が、複数のコンピューティングノードに結合したサーバーコンピューティング装置に、
複数のコンピューティングノードの第１コンピューティングノードから、１以上の他のコンピューティングノードへの伝送のためのメッセージを受信するステップであって、前記メッセージが、第１コンピューティングノード上の第１アプリケーションからのアプリケーション特有指令に基づいて前記第１コンピューティングノードにより生成され、ここで、前記複数のコンピューティングノードが、前記サーバーコンピューティング装置で仮想ネットワークとして規定され、各コンピューティングノードが、前記サーバーコンピューティング装置と通信するためのアンサンブルモジュールを含む、ステップと、
前記メッセージを受信する前記仮想ネットワークの１以上の他のコンピューティングノードを決定するステップと、
決定された１以上の他のコンピューティングノードに前記メッセージを送信するステップであって、各宛先コンピューティングノードが、決定されたノード上の第２アプリケーションのためのアプリケーション特有指令に前記メッセージをフォーマットする、ステップを生じさせるように動作可能である、コンピュータープログラム製品。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願
本出願は、２０１３年４月１２日に出願された米国仮特許出願Ｎｏ．６１／８１１，４０３の優先権を主張し、この全内容が参照により本明細書に組み込まれる。
【０００２】
本出願は、概して、所謂アンサンブルコンピューティングとも呼ばれる、並列コンピューティング装置の間のシームレスな相互運用のための、コンピュータープログラム製品を含む、方法及び機器に関する。
【背景技術】
【０００３】
日常における多様なコンピューティング装置の導入が進展し、指数関数的に成長し続けている。イノベーションの歩みが継続するに応じて、新しい形態要因（例えば、スマートフォン、タブレット、デジタルＴＶ、及びゲームコンソール）、新しい種類のセンサー（例えば、加速度計、ＧＰＳ、及び近接センサー）、新しい低レベルネットワーク（例えば、Ｗｉ−Ｆｉ、Ｂｌｕｅｔｏｏｔｈ（登録商標）、及びＮＦＣ）、及び他の技術的な進展がマーケットにおいて導入されている。
【０００４】
これらのコンピューティング装置が個別の独立のノードとして動作し、相互運用してお互いに増強するそれらの能力が単純な、基本の協調モードに限定されている（例えば、スマートフォンからプリンターへ写真を送信し、若しくはそれをデジタルＴＶに表示する）。装置間の相互運用とこれらの用途が、装置設計者により事前に設定されており、度々、狭い目的にかなう。
【０００５】
一般的には、コンピューティングシステムが、それが提供できる機能性や能力により規定される。コンピューティング装置のメーカーは、基本的なコンピューティング・プラットホーム・オペレーティング・システム（ＯＳ）能力を提供し、（例えば、ＰＣ、タブレット、及びスマートフォン）また個々のベンダーのためにプラットホームを開放し、アプリケーション及びサービスに進展させる。多様なアプリケーションが、相互運用、データの共有、及び他の方法でお互いの能力の増強をすることができる。ＰＣ時代、モバイル及びセンサー時代への進入のため、ＯＳプロバイダーは、それらのコアオペレーティング・システムの一部として、アプリケーション・相互運用・アプリケーション・プログラミング・インターフェース（ＡＰＩ）を提供している。マイクロソフト・ウィンドウズ（登録商標）ＯＬＥ、Ａｐｐｌｅ  ＯｐｅｎＤｏｃ、及びＡｎｄｒｏｉｄ  Ｉｎｔｅｎｔｓは、ＡＰＩの例であり、個々のベンダーに提供されるプロトコルにより、それらのアプリケーションが相互運用することが許容される。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
プロプラエタリ及び／又はアプリケーション特定ＡＰＩ又はプロトコルの使用無くして、未だ創出されていない装置及びシステムを含む、異なる種類の装置又はシステムの間の個別の、あつらえの相互運用を許容する方法及びシステムの要求が存在する。本明細書に記述の方法及びシステムは、アンサンブルコンピューティングに関し、これは、異種装置の間を含む、並列コンピューティング装置の間のシームレスな相互運用のためのオープン（非閉鎖）システムである。本明細書に記述の技術を用い、コンピューティング装置が、シームレスネットワーク、又は能力のアンサンブルに接続可能である。このネットワークは、コンピューティング装置間の事前設定された相互作用モードを想定せず、むしろ拡張及び再構成に開かれている。
【課題を解決するための手段】
【０００７】
本発明は、一側面において、並列コンピューティングノード間のシームレスな相互運用のためのシステムを特徴とする。システムは、サーバーコンピューティング装置と、前記サーバーコンピューティング装置に接続した複数のコンピューティングノードを含み、複数のコンピューティングノードが、前記サーバーコンピューティング装置における仮想ネットワークとして規定され、各コンピューティングノードが、前記サーバーコンピューティング装置と通信するためのアンサンブルモジュールを含む。前記サーバーコンピューティング装置は、前記仮想ネットワークにおける１以上の他のコンピューティングノードへの伝送のためにメッセージを第１コンピューティングノードから受信するように構成され、メッセージが、第１コンピューティングノード上の第１アプリケーションからのアプリケーション特有指令に基づいて、第１コンピューティングノードにより生成される。サーバーコンピューティング装置は、前記メッセージを受信するために前記仮想ネットワークにおける１以上の他のコンピューティングノードを決定するように構成される。サーバーコンピューティング装置は、前記決定された１以上の他のコンピューティングノードへ前記メッセージを送信するように構成され、各宛先コンピューティングノードが、決定されたノード上の第２アプリケーションのためのアプリケーション特有指令に前記メッセージをフォーマットする。
【０００８】
本発明は、別側面において、並列コンピューティングノード間のシームレスな相互運用のための方法を特徴とする。サーバーコンピューティング装置は、サーバーコンピューティング装置に結合した複数のコンピューティングノードにおける第１コンピューティングノードから、１以上の他のコンピューティングノードへの伝送のためのメッセージを受信し、メッセージが、第１コンピューティングノード上の第１アプリケーションからのアプリケーション特有指令に基づいて第１コンピューティングノードにより生成され、ここで、複数のコンピューティングノードが、サーバーコンピューティング装置で仮想ネットワークとして規定され、各コンピューティングノードが、サーバーコンピューティング装置と通信するためのアンサンブルモジュールを含む。サーバーコンピューティング装置が、メッセージを受信するために仮想ネットワークにおける１以上の他のコンピューティングノードを決定する。サーバーコンピューティング装置が、決定された１以上の他のコンピューティングノードにメッセージを送信し、ここで、各宛先コンピューティングノードが、決定されたノード上の第２アプリケーションのためのアプリケーション特有指令に前記メッセージをフォーマットする。
【０００９】
本発明は、別側面において、並列コンピューティングノード間のシームレスな相互運用のための、コンピューター読み取り可能記録媒体に有形に具現化されたコンピュータープログラム製品を特徴にする。コンピュータープログラム製品は、複数のコンピューティングノードに結合されたサーバーコンピューティング装置に、１以上の他のコンピューティングノードへの伝送のためにメッセージを、複数のコンピューティングノードにおける第１コンピューティングノードから受信するようにさせるべく動作可能である指令を含み、メッセージが、第１コンピューティングノード上の第１アプリケーションからのアプリケーション特有指令に基づいて第１コンピューティングノードにより生成され、ここで、複数のコンピューティングノードが、サーバーコンピューティング装置で仮想ネットワークとして規定され、各コンピューティングノードが、サーバーコンピューティング装置と通信するためのアンサンブルモジュールを含む。コンピュータープログラム製品は、サーバーコンピューティング装置に、メッセージを受信するために仮想ネットワークにおける１以上の他のコンピューティングノードを決定するようにさせるべく動作可能である指令を含む。コンピュータープログラム製品は、サーバーコンピューティング装置に、決定された１以上の他のコンピューティングノードにメッセージを送信させるべく動作可能である指令を含み、ここで、各宛先コンピューティングノードが、決定されたノード上の第２アプリケーションのためのアプリケーション特有指令に前記メッセージをフォーマットする。
【００１０】
上述の側面のいずれかが、１以上の次の特徴を含むことができる。幾つかの実施形態においては、メッセージが、仮想ネットワーク識別子及びメッセージトピック識別子を含む。幾つかの実施形態においては、サーバーコンピューティング装置が、仮想ネットワーク識別子及びメッセージトピック識別子の少なくとも一つに基づいてメッセージを受信する仮想ネットワークにおける１以上の他のコンピューティングノードを決定する。
【００１１】
幾つかの実施形態においては、メッセージが、アプリケーション非依存関数（application-agnostic function）を表す。幾つかの実施形態においては、メッセージが、仮想ネットワークにおける１以上の他のコンピューティングノードに関連する識別子を含み、サーバーコンピューティング装置が、仮想ネットワークの１以上の他のコンピューティングノードに関連した識別子に基づいてメッセージを受信する仮想ネットワークの１以上の他のコンピューティングノードを決定する。
【００１２】
幾つかの実施形態においては、複数のコンピューティングノードが、異種オペレーティングシステムを活用するノードを含む。幾つかの実施形態においては、第１アプリケーション及び第２アプリケーションが異種のアプリケーションであり、第１アプリケーションが、第１コンピューティングノードの特徴に特有であり、第２アプリケーションが、第２コンピューティングノードの特徴に特有である。
【００１３】
幾つかの実施形態においては、アンサンブルモジュールが、サーバーコンピューティング装置にメッセージを送信し、またサーバーコンピューティング装置からメッセージを受信するために用いられる関数のライブラリである。幾つかの実施形態においては、コンピューティングノードの仮想ネットワークには継続時間が付与され、その経過後にサーバーコンピューティング装置から仮想ネットワーク定義が除かれる。
【００１４】
幾つかの実施形態においては、サーバーコンピューティング装置は、仮想ネットワークに加入するためのリクエストをコンピューティングノードから受信するように構成され、リクエストが、認証証明と仮想ネットワーク識別子を含む。サーバーコンピューティング装置は、認証証明を認証し、仮想ネットワーク識別子に関連した仮想ネットワークにコンピューティングノードを割り当てるように構成される。幾つかの実施形態においては、サーバーコンピューティング装置は、メッセージトピックへの加入のリクエストを仮想ネットワークにおけるコンピューティングノードから受信し、メッセージトピックに関連した加入リストにコンピューティングノードを割り当てるように構成される。
【００１５】
本発明の他の側面及び利益が、例示目的のみで本発明の原理を図示する添付図面を一緒に参照することにより、次の詳細な説明から明らかになる。
【００１６】
上述した本発明の利点が、追加の利点と共に、添付図面を一緒に参照し、次の記述を参照することにより良く理解される。図面は必ずしも一定の割合で縮尺するものではなく、むしろ重点が本発明の原理の説明に置かれている。
【図面の簡単な説明】
【００１７】
【図１】図１は、並列のコンピューティング装置間のシームレスな相互運用のためのシステムのブロック図である。
【図２】図２は、並列のコンピューティング装置間のシームレスな相互運用のための方法のフロー図である。
【図３】図３は、アンサンブルコンピューティングシステムを生成するための方法のフロー図である。
【図４】図４は、アンサンブルコンピューティングシステムにノードを登録するための方法のフロー図である。
【図５】図５は、アンサンブルコンピューティングシステムにおける装置間のメッセージの交換のための方法のフロー図である。
【発明を実施するための形態】
【００１８】
図１は、本明細書に記述の技術を用いた並列のコンピューティング装置の間のシームレスな相互運用のためのシステム１００のブロック図である。図１は、通信ネットワークを介して複数のクライアントコンピューティング装置１０４ａ−１０４ｃに結合したアンサンブルサーバー１０２を含む。アンサンブルサーバー１０２は、データベース１０８に結合される。図１のクライアントコンピューティング装置１０４ａ−１０４ｃ、及び装置１０４ａ−１０４ｃ上で稼働するアプリケーションが、共同してアンサンブルを作り上げる。各クライアントコンピューティング装置１０４ａ−１０４ｃは、アンサンブルモジュール１０６ａ−１０６ｃを含み、各装置上で稼働するアプリケーションから受け取った送信のアンサンブルメッセージをアンサンブルサーバー１０２へ送信するように動作し、また各装置上で稼働している１以上のアプリケーションにアンサンブルサーバー１０２から受け取った受信のアンサンブルメッセージを受信するように動作する。
【００１９】
幾つかの実施形態においては、アンサンブルモジュールは、アンサンブルサーバー１０２へアンサンブルメッセージを送信し、またアンサンブルサーバー１０２からアンサンブルメッセージを受信するべくクライアント装置上で稼働するアプリケーションにより用いられる関数(例えば、アンサンブルＡＰＩ)のライブラリである。各アプリケーションは、アンサンブルＡＰＩを用いてそれらのアプリケーション特定メッセージをアンサンブルシステム１００に適合するフォーマットに変換するように構成される。例えば、アプリケーション開発者は、それらのアプリケーションにロジックを含め、アンサンブルＡＰＩと相互作用し、またアンサンブルサーバー１０２への伝送のためにアンサンブル適合メッセージをアンサンブルＡＰＩに提供する。
【００２０】
アンサンブルは、アプリケーションレベルの仮想ネットワークであり、装置上で稼働する多数のコンピューティングアプリケーションにより構成される。本明細書で用いられるように、「装置」や「アプリケーション」との用語は、この文脈において、非常に包括的であるものと理解されるべきである。任意のコンピューティング装置、スマートフォン、ＰＣ上のアプリケーション、デジタルＴＶ、センサー、ましてクラウドにおけるウェブサービスもアンサンブルにおける「装置」またはノードとして理解される。
【００２１】
アンサンブルシステム１００における装置（例えば、クライアントコンピューティング装置１０４ａ−１０４ｃ）は、異種であり得、つまり、装置は、同一ベンダーにより製造され、同一ＯＳ上で稼働し、若しくは、任意の共通の相互運用フレームワークをサポートする必要はない。システム１００は、アンサンブル内への任意の種類の装置の包含にとって完全に開かれている。任意のソフトウェア、ファームウェア、ハードウェア、若しくはそのような装置上で稼働する他の実行コマンドが、この文脈において「アプリケーション」と考えられる。
【００２２】
装置がアンサンブル上に集められ、若しくは含められ、それらが個別に提供できるよりも、より大きなユーザー体験を提供する。個々の部分の合計よりも大きいことにより、コンピューティングアンサンブルは、シームレスな統合及び個々のコンポーネントの相互運用を通じてその所有者に新しい能力を提供するように設計される。この文脈において、アンサンブル「所有者」は、装置またはアプリケーションの所有に結び付けられず（すなわち、個人により全ての装置が所有される。）、むしろ、アンサンブル内の装置、アプリケーション、またはノードをアンサンブルする目的に結び付けられる。例えば、アンサンブルの簡単な一例が、個人により所有された全ての装置を含むが、別の種類のアンサンブルは、人々のグループ若しくは組織により用いられる特定のアプリケーションから構成されることができる。アンサンブル所有者は、アンサンブルにおいてノードを含め、または除外する能力を有する。個人は、各アンサンブルの目的に応じて、複数のアンサンブルを所有及び／又は加入することができる。またアンサンブルは、要求されるならば、他のアンサンブルも所有することができる。
【００２３】
上述のように、アンサンブルメンバーは、コンピューティング装置のオペレーティングシステム、ソフトウェアアプリケーション、ウェブサービス、またはこの類であり得る。アンサンブルメンバーは、（以下に定義の）アンサンブルインフラストラクチャー（Ensemble Infrastructure）により提供されたアンサンブルＡＰＩと相互作用し、アンサンブルに加入し、脱退し、またアンサンブル全体のメッセージを登録及び送信／受信する。
【００２４】
アンサンブル管理タスクは、アンサンブルＡＰＩを介してアンサンブルを生成し、個々のノードを加入するように選択及び招待し、また個々のノードを非接続にすることを含む。アンサンブル管理は、アンサンブル所有者により（または所有者の代わりに）実行される。アンサンブルの寿命は、その目的に基づいて変わる。例えば、アンサンブルは、長寿命であり、多数の物理装置の所有に結び付けられる。別例においては、アンサンブルは、臨機応変であり、短期間目的で生成される（例えば、二人の個人が、二装置アンサンブルにおいて自身のスマートフォンを接続し、アドレスを交換し、または契約を履行する）。これらの臨機応変アンサンブルは、その必要性がもはや存在しなくなるや否や消滅される。幾つかのアンサンブルは一時的である（例えば、会議の間だけ生成される、会議フィードバック収集のための開かれたアンサンブル）。アンサンブルは、プライベート（すなわち、アンサンブル所有者は、メンバーシップを完全に制御できる）、共有（すなわち、特定の基準に応じて、幾つかのノードの加入に開かれている）、または開かれたもの（オープン）であり得る。
【００２５】
アンサンブルインフラストラクチャーは、多数の実施態様を有することができるが、アンサンブルＡＰＩを介してアクセス可能である。アンサンブルインフラストラクチャーの責務は、下記が含まれる。
【００２６】
アンサンブル（例えば、命名されたノードのネットワーク）を生成する能力
【００２７】
アンサンブル内のノードを管理する（ノードを含める／除外する／招待する）能力
【００２８】
アンサンブルの現在のメンバーに関する情報を維持する能力
【００２９】
アンサンブルの現在のメンバーへのメッセージの送付／ブロードキャストする能力
【００３０】
メンバーのために一時的に利用できないメッセージをキューに入れ／保存する能力
【００３１】
幾つかの実施形態においては、アンサンブルコンピューティングは、分散型非同期メッセージングブロードキャストシステムである。他の相互運用フレームワークとは異なり、アンサンブル（例えは、アンサンブルシステム１００）は、単一の装置または特定の種類のＯＳに限定されない。アンサンブルにおけるノードは、物理装置に結び付けられず、むしろ任意のネットワーク化されたコンピューティング媒体において共存または物理距離だけ離間して存在できる。アンサンブルに集められるや、ノードらが仮想メッセージングネットワークを表し、任意の種類のメッセージを生成及び消費する。各個々のノードは、その関心を特定の種類のメッセージ（トピックとも呼ばれる）に登録することができる。任意のノードは、アンサンブルＡＰＩを介してメッセージを送信することができ、アンサンブルインフラストラクチャーは、これらのメッセージの関心のノードへの配送に対処する。
【００３２】
アンサンブルメッセージは、広範囲の種類のアプリケーション非依存（不可知）（application-agnostic）機能を表す。幾つかの実施形態においては、メッセージ種類が、認証、登録、登録解除、送信／ブロードキャスト、受信／聴取を含むことができる。アンサンブルＡＰＩを介してアンサンブルサーバー１０２と相互作用する個々のノードは、個々のノードに適合するフォーマットにアンサンブルメッセージを解釈して変換することが要求される。アンサンブルサーバー１０２及びアンサンブルモジュール１０６ａ−１０６ｃは、メッセージ定義、解釈、翻訳、または分析のいずれも実行しない。
【００３３】
例えば、クライアント装置１０４ａ上で稼働する金融アプリケーション、及びクライアント装置１０４ｂ上で稼働するディスプレイ装置ドライバーは、両方とも、同一のアンサンブルの一部としてアンサンブルサーバー１０２に登録される。装置１０４ａ上のフィナンシャルアプリケーションは、クライアント装置１０４ｂ上のディスプレイ装置ドライバーを用いた表示のために投資分析チャートを送信することを希望する。金融アプリケーションは、投資分析チャートの基礎のグラフィカルデータを、アンサンブルＡＰＩにより定義された「送信」メッセージに変換し、アンサンブルサーバー１０２へ「送信」メッセージを送信するロジックを含む。アンサンブルサーバー１０２は、クライアント装置１０４ｂが「送信」メッセージの意図された宛先であると決定し、メッセージを装置１０４ｂに送信する。装置１０４ｂ上のディスプレイ装置ドライバーは、アンサンブルＡＰＩを介して「送信」メッセージを受信し、また関連のディスプレイ装置上でチャートを表示するために「送信」メッセージを適合のフォーマットに変換するロジックを含む。
【００３４】
図２は、図１のシステム１００を用いた、並列コンピューティング装置間のシームレスな相互運用のための方法のフロー図である。アンサンブルサーバーコンピューティング装置１０２は、アンサンブルにおける１以上の他のコンピューティングノード（例えば、クライアント装置１０４ｂ、１０４ｃ）への転送のためにクライアント装置（例えば、クライアント装置１０４ａ）からメッセージを受信する（２０２）。クライアント装置１０４ｂにより生成されたメッセージは、クライアント装置１０４ａ上のアプリケーションからのアプリケーション特有指令に基づく。例えば、クライアント装置１０４ａがＡｎｄｒｏｉｄ（商標）基準のスマートフォンであり、装置１０４ａ上で稼働するカメラアプリケーションは、別の装置１０４ｂ（例えば、スマートテレビジョン）に写真を送信したいと希望する。カメラアプリケーションは、装置１０４ａ上のアンサンブルモジュール１０６ａにより認識及び解釈されるフォームへカメラアプリケーションに特有の指令及び他のデータ（例えば、写真ファイル、メタデータ）をフォーマットする。一例としては、カメラアプリケーションは、カメラアプリケーションの一部であるＡＰＩと相互作用することができ、アンサンブルサーバー１０２に適合するメッセージを構築し、指令及びデータをフォーマットすることができる。
【００３５】
メッセージの受信後、アンサンブルサーバー１０２は、メッセージを受信する１以上の他のクライアント装置（例えば、装置１０４ｂ）を決定する（２０４）。上述のように、図１が複数のクライアント装置１０４ａ−１０４ｃを図示するが、システム１００のクライアント装置１０４ａ−１０４ｃは、任意の広範囲の装置及びノードのアレイであり得、ソフトウェアベースのアプリケーション（例えば、ウェブサービス、クラウドサービス、装置上のファームウェア）を含み得るものと理解されるべきである。
【００３６】
アンサンブルサーバー１０２は、決定された１以上の他のクライアント装置（例えば、装置１０４ｂ）にメッセージを送信し（２０６）、各決定されたクライアント装置が、決定されたノード上のアプリケーションにとってのアプリケーション特有指令へメッセージをフォーマットする。上述の例に続いて、受信する装置１０４ｂ（例えば、スマートテレビジョン）上のアンサンブルモジュール１０６ｂが、アンサンブルサーバーからメッセージを受信し、メッセージをテレビジョン上の写真閲覧アプリケーションに送信する。写真閲覧アプリケーションが、写真閲覧アプリケーションに特有の指令にメッセージをフォーマットし、スクリーン上に写真を表示する。この態様において、送信する装置１０４ａと受信する装置１０４ｂが、同一の写真ソフトウェア、オペレーティングシステム、及び同種のものを具備する必要がなく、写真自体が、各装置１０４ａ、１０４ｂが解釈及びレンダリングできる共通フォーマット（例えば、．ｊｐｇ、．ｇｉｆ）である必要がない。
【００３７】
図３は、本発明の例示の実施形態に係り、また図１のシステム１００を用いたアンサンブルを生成するための方法３００のフロー図である。アンサンブル所有者は、コンピューティング装置を介してアンサンブルサーバー１０２にアクセスすることができる（例えば、クライアント装置ＥＣ  １０４ａ上のウェブブラウザーを開き、アンサンブルサーバー１０２に関連のＵＲＬへナビゲートする）。アンサンブル所有者は、認証証明（例えば、ユーザ名及びパスワード）をクライアント装置１０４ａに提供し、そして、この装置が、アンサンブルサーバー１０２へ認証要求メッセージを送信する（３０４ａ）。アンサンブルサーバー１０２は、（例えば、受信した証明をアンサンブル所有者に関するデータベース１０８レコードと比較することにより）供給された証明を認証し、認証応答メッセージをクライアント装置１０４ａに返信し（３０４ｂ）、アンサンブル所有者が、首尾良くログインしたことが示される。アンサンブル所有者は、次に、アンサンブルサーバー１０２にアンサンブル構築メッセージ(Create Ensemble message)を送信する（３０６ａ）。アンサンブル構築メッセージは、アンサンブル名属性（例えば、＜アンサンブル名＞）を含む。アンサンブルサーバー１０２は、そのアンサンブルのために新しいデータベースレコードを生成し、データベースレコードに＜アンサンブル名＞属性を記憶する。アンサンブルサーバー１０２は、また、アンサンブルＩＤ（例えば、＜ＥＩＤ＞）属性をアンサンブルに付与する。アンサンブルサーバーは、装置１０４ａによる将来の参照のための＜ＥＩＤ＞属性を含むアンサンブル完成メッセージ(Ensemble Created message)を装置１０４ａに返信する（３０６ｂ）。従って、クライアント装置１０４ａによりアンサンブルサーバー１０２へ送信される次のアンサンブルメッセージが＜ＥＩＤ＞を含み、従って、サーバー１０２が、アンサンブルメッセージをどのように転送するかを決定できる。
【００３８】
図４は、本発明の例示の実施形態に係り、また図１のシステム１００を用いたアンサンブルにノードを登録するための方法４００のフロー図である。クライアント装置ＥＣ１  １０４ａが、クライアント装置ＥＣ１  １０４ａがサーバー１０２にアクセスすることを許すための認証証明を含む認証要求メッセージをアンサンブルサーバー１０２に送信する（４０４ａ）。アンサンブルサーバー１０２は、提供された証明を認証し、クライアント装置１０４ａに認証応答メッセージを返信する（４０４ｂ）。装置１０４ａは、次に、装置１０４ａが加入を希望するアンサンブルに関する＜ＥＩＤ＞を含む登録メッセージ(registration message)をアンサンブルサーバー１０２に送信する（４０６ａ）。アンサンブルサーバー１０２は、＜ＥＩＤ＞アンサンブルに関するクライアント装置ＥＣ１  １０４ａのために新しいデータベースレコード（例えば、クライアント装置ネットワークアドレス、クライアント装置識別子、クライアント装置名、クライアント装置所有者名、及び同種のもの）を生成し、クライアント装置１０４ａが＜ＥＩＤ＞アンサンブルの一部として登録されたことを示す登録確認メッセージ(registration confirmation message)をクライアント装置１０４ａに送信する（４０６ｂ）。クライアント装置ＥＣ１  １０４ａは、次に、＜トピック＞属性を含むクライアント加入（サブスクライブ）要求メッセージ(Client Subscribe Request message)をアンサンブルサーバー１０２に送信する。アンサンブルサーバー１０２は、＜トピック＞属性におけるクライアント装置ＥＣ１の加入（サブスクライブ）を記録し、加入（サブスクライブ）が首尾良く構成されたことを示す加入（サブスクライブ）確認メッセージ(subscription confirmation message)をクライアント装置ＥＣ１  １０４ａに送信する（４０８ｂ）。アンサンブルサーバー１０２は、次に、＜トピック＞に関する次のメッセージを＜トピック＞に加入されたアンサンブル内のクライアント装置（例えば、装置ＥＣ１  １０４ａ）に送信する。
【００３９】
＜トピック＞属性は、アンサンブルサーバー１０２により用いられ、異種のアンサンブルメッセージが識別される。幾つかの実施形態においては、＜トピック＞属性は、自由形式、解放端のストリングであり、アンサンブルメッセージの種類及び／又は内容の指標を提供する。アンサンブルシステム１００により用いられる＜トピック＞属性のリストが、アンサンブルシステム１００及びアンサンブルＡＰＩを用いる各アプリケーションの開発者により決定される。アンサンブルサーバー１０２は、任意の特定のアンサンブルメッセージのために＜トピック＞属性を解釈又は理解しない。むしろ、アンサンブルサーバー１０２は、クライアント装置サブスクライブの一部として＜トピック＞属性を記録し、到来するアンサンブルメッセージのために＜トピック＞属性を比較し、クライアント装置がメッセージを受信するべきか（つまり、クライアントが＜トピック＞に加入しているか）を決定する。
【００４０】
図５は、本発明の例示の実施形態に係り、また図１のシステム１００を用いた装置間でメッセージを交換するための方法５００のフロー図である。クライアント装置ＥＣ１  １０４ａ上のアプリケーションは、アンサンブルにおける他の装置（例えば、クライアント装置ＥＣ２  １０４ｂ、クライアント装置ＥＣ３  １０４ｃ）へ特定のトピック（例えば、＜トピック＞）に関するメッセージを通信することを希望する。クライアント装置ＥＣ１  １０４ａは、アンサンブルに関する＜ＥＩＤ＞を含む＜トピック＞に関するメッセージをアンサンブルサーバー１０２に送信する（５０４ａ）。アンサンブルサーバー１０２は、アンサンブル＜ＥＩＤ＞内にあり、また＜トピック＞に加入する他のクライアント装置（例えば、１０４ｂ，１０４ｃ）に関する情報を探索する。アンサンブルサーバー１０２は、次に、クライアント装置ＥＣ２  １０４ｂにメッセージを送信し（５０４ｂ）、クライアント装置ＥＣ３  １０４ｃにメッセージを送信する（５０４ｃ）。
【００４１】
一例としては、クライアント装置ＥＣ１  １０４ａは、スマートフォンである。電話がＥＣ１  １０４ａに着信し、ユーザーが、自身の他の装置ＥＣ２  １０４ｂ（例えば、ＰＣ動作電話ソフトウェア）及びＥＣ３  １０４ｃ（例えば、自身のワイヤレスＬＡＮに接続された自宅電話）にその電話を転送することを希望する。ＥＣ１  １０４ａ上の電話ソフトウェアは、電話に関するトピック（例えば、＜電話＞）に関するメッセージをアンサンブルサーバー１０２に送信する。アンサンブルサーバー１０２は、クライアントＥＣ２  １０４ｂ及びＥＣ３  １０４ｃが＜電話＞トピックに加入していると決定する。アンサンブルサーバー１０２は、メッセージをＥＣ２及びＥＣ３装置に送信する。ＥＣ２  １０４ｂにおいては、電話ソフトウェアが、アンサンブルメッセージを受信し、例えば、音声ストリーム及びコールのための対応のＳＩＰシグナリングを受信するためにアンサンブルメッセージをアプリケーション特有フォーマットに変換する。ＥＣ３  １０４ｃでは、電話ファームウェアが、アンサンブルメッセージを受信し、アンサンブルメッセージを特定のフォーマットに変換し、自宅電話がコールセッションの確立を可能にする。ユーザーは、次に、自身のＰＣ（例えば、ＥＣ２）又は自身の自宅電話（例えば、ＥＣ３）でコールに応答するか否かを決定できる。
【００４２】
アンサンブルシステム１００の他の例示の使用例及び本明細書に記述の技術が、限定するわけではないが、以下のものを含む。
【００４３】
【表１−１】
2014209341.tif 000003
【００４４】
【表１−２】
2014209341.tif 000004
【００４５】
上述した技術は、デジタル及び／又はアナログ電子回路、若しくはコンピューターハードウェア、ファームウェア、ソフトウェア、若しくはこれらの組み合わせにおいて実行できる。コンピュータープログラム製品、つまり、例えば、プログラマブルプロセッサー、コンピューター、及び／又は多数のコンピューターといったデータ処理装置による実行のため、若しくはその動作の制御のため、機械読み取り可能記憶装置に有形に具現化されたコンピュータープログラムとして実施され得る。コンピュータープログラムは、ソースコード、コンパイルされたコード、解釈されたコード及び／又は機械コードを含む任意の形態のコンピューター又はプログラミング言語で記述されることができ、コンピュータープログラムは、スタンドアローンプログラムとして、若しくはサブルーチン、エレメント、コンピューティング環境における使用に適する他のユニットとしてといった任意の形態において活用される。コンピュータープログラムは、１以上のサイトで一つのコンピューター又は多数のコンピューター上で実行されるべく活用可能である。
【００４６】
コンピュータープログラムを実行する１以上のプロセッサーが方法を実行することができ、入力データを操作し、及び／又は出力データを生成することにより機能を実行する。方法のステップは、例えば、ＦＰＧＡ（field programmable gate array）、ＦＰＡＡ（field-programmable analog array）、ＣＰＬＤ（complex programmable logic device）、ＰＳｏＣ（Programmable System-on-Chip）、ＡＳＩＰ（application-specific instruction-set processor）、又はＡＳＩＣ（application-specific integrated circuit）、又は同類といった特別用途ロジック回路により実行され、またそれにより装置が実施できる。サブルーチンは、記憶されたコンピュータープログラム及び／又はプロセッサ、及び／又は１以上の機能を実施する特別回路の部分に言及し得る。
【００４７】
コンピュータープログラムの実行に適するプロセッサーは、一例としては、汎用及び特別用途マイクロプロセッサーの両方、また任意の種類のデジタル又はアナログコンピューターの任意の１以上のプロセッサーを含む。一般的には、プロセッサーは、リードオンリーメモリー又はランダムアクセスメモリー又は両方から指令及びデータを受信する。コンピューターの本質的な要素は、指令を実行するためのプロセッサー及び指令及び／又はデータを記憶するための１以上のメモリーである。キャッシュといったメモリー装置は、一時的にデータを記憶するために用いることができる。メモリー装置は、長期間のデータ記憶のためにも用いられることができる。一般的には、コンピューターは、例えば、磁気、磁気光ディスク、又は光ディスクといったデータを記憶するための１以上のマスストレージ装置からデータを受信し、そこにデータを転送し、又はこの両方を含み、若しくは行うべく動作可能に結合される。コンピュータープログラム指令及びデータを具現化するのに適するコンピューター読み取り可能記憶媒体は、全ての形態の揮発性及び不揮発性メモリー、一例としては、半導体メモリー装置、例えば、ＤＲＡＭ、ＳＲＡＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、及びフラッシュメモリー装置；磁気ディスク、例えば、内部ハードディスク又はリムーバブルディスク；磁気光ディスク；及び光ディスク、例えば、ＣＤ、ＤＶＤ、ＨＤ−ＤＶＤ、及びＢｌｕ−ｒａｙ（登録商標）ディスクを含む。プロセッサー及びメモリーは、特別用途ロジック回路により補助され、及び／又は組み込まれ得る。
【００４８】
ユーザーとの相互作用を提供するため、上述の技術が、ユーザーに情報を表示するためのディスプレイ装置、例えば、ＣＲＴ、プラズマ、又はＬＣＤモニター、及びこれによりユーザーがコンピューターに入力を提供することができる（例えば、ユーザーインターフェース要素と相互作用する）キーボード、及びポインティング装置、例えば、マウス、トラックボール、タッチパッド、又はモーションセンサーと通信可能であるコンピューター上で実施することができる。別種の装置を用い、同様にユーザーとの相互作用を提供することができる。例えば、ユーザーへ提供されるフィードバックが、任意の形態のセンサーフィードバック、例えば、視覚フィードバック、聴覚フィードバック、又は触覚フィードバックであり得る。ユーザーからの入力は、音、発話、及び／又は触覚入力を含む、任意の形態で受信され得る。
【００４９】
上述の技術は、バックエンドコンポーネントを含む分散コンピューティングシステムにおいて実施可能である。バックエンドコンポーネントは、例えば、データサーバー、ミドルウェアコンポーネント、及び／又はアプリケーションサーバーである。上述の技術は、フロントエンドコンポーネントを含む分散コンピューティングシステムにおいて実施可能である。フロントエンドコンポーネントは、例えば、グラフィカルユーザーインターフェースを有するコンピューター、ユーザーがそれを介して例示の実施と相互作用することができるウェブブラウザー、及び／又は送信装置用の他のグラフィカルユーザーインターフェースであり得る。上述の技術は、そのようなバックエンド、ミドルウェア、又はフロントエンドコンポーネントの任意の組み合わせを含む分散コンピューティングシステムにおいて実施可能である。
【００５０】
コンピューティングシステムのコンポーネントは、伝送媒体により相互接続でき、伝送媒体は、任意の形態又はデジタル又はアナログデータ通信媒体（例えば、通信ネットワーク）を含むことができる。伝送媒体は、任意の構成の１以上のパケット基準ネットワーク、及び／又は１以上の回路基準ネットワークを含むことができる。パケット基準ネットワークは、例えば、インターネット、キャリアーインターネットプロトコル（ＩＰ）ネットワーク（例えば、ローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、キャンパスエリアネットワーク（ＣＡＮ）、メトロポリタンエリアネットワーク（ＭＡＮ）、ホームエリアネットワーク（ＨＡＮ）、プライベートＩＰネットワーク、ＩＰ構内電話交換機（ＩＰＢＸ）、ワイヤレスネットワーク（例えば、ラジオアクセスネットワーク（ＲＡＮ）、ブルートゥース、Ｗｉ−Ｆｉ、ＷｉＭＡＸ、汎用パケットラジオサービス（ＧＰＲＳ）ネットワーク、ＨｉｐｅｒＬＡＮ）、及び／又は他のパケット基準ネットワークを含むことができる。回路基準ネットワークは、例えば、公衆交換電話網（ＰＳＴＮ）、レガシー構内電話交換機（ＰＢＸ）、ワイヤレスネットワーク（例えば、ＲＡＮ、符号分割多重アクセス（ＣＤＭＡ）ネットワーク、時分割多重アクセス（ＴＤＭＡ）ネットワーク、グローバル・システム・フォー・モバイル・コミュニケーションズ（ＧＳＭ）ネットワーク）、及び／又は他の回路基準のネットワークを含むことができる。
【００５１】
伝送媒体を介した情報転送は、１以上の通信プロトコルに基づくことができる。通信プロトコルは、例えば、Ｅｔｈｅｒｎｅｔ（登録商標）プロトコル、インターネットプロトコル（ＩＰ）、Ｖｏｉｃｅ  ｏｖｅｒ  ＩＰ（ＶＯＩＰ）、Ｐｅｅｒ−ｔｏ−Ｐｅｅｒ（Ｐ２Ｐ）プロトコル、ハイパーテキスト転送プロトコル（ＨＴＴＰ）、セッション開始プロトコル（ＳＩＰ）、Ｈ．３２３、メディアゲートウェイコントロールプロトコル（ＭＧＣＰ）、シグナリングシステム＃７（ＳＳ７）、グローバル・システム・フォー・モバイル・コミュニケーションズ（ＧＳＭ）プロトコル、プッシュ−トゥ−トーク（ＰＴＴ）プロトコル、ＰＴＴオーバーセルラー（ＰＯＣ）プロトコル、ユニバーサル・モバイル・テレコミュニケーション・システム（ＵＭＴＳ）、３ＧＰＰロング・ターム・エボリューション（ＬＴＥ）、及び／又は他の通信プロトコルを含むことができる。
【００５２】
コンピューティングシステムの装置は、例えば、コンピューター、ブラウザー装置を有するコンピューター、電話、ＩＰ電話、モバイル装置（例えば、携帯電話、パーソナル・デジタル・アシスタンス（ＰＤＡ）装置、スマートフォン、タブレット、ラップトップコンピューター、電子メール装置）、及び／又は他の通信装置を含むことができる。ブラウザー装置は、例えば、ワールドワイドウェブブラウザー（例えば、グーグル社からのＣｈｒｏｍｅ（商標）、マイクロソフト社から入手できるＭｉｃｒｏｓｏｆｔ（登録商標）Ｉｎｔｅｒｎｅｔ  Ｅｘｐｌｏｒｅｒ（登録商標）、及び／又はＭｏｚｉｌｌａ社から入手できるＭｏｚｉｌｌａ（登録商標）Ｆｉｒｅｆｏｘ）を備えるコンピューター（例えば、デスクトップコンピューター及び／又はラップトップコンピューター）を含む。モバイルコンピューティング装置は、例えば、Ｒｅｓｅａｒｃｈ  ｉｎ  ＭｏｔｉｏｎのＢｌａｃｋｂｅｒｒｙ（登録商標）、アップル社のｉＰｈｏｎｅ（登録商標）、及び／又はアンドロイド基準の装置を含む。ＩＰ電話は、例えば、シスコシステムズ社から入手できるシスコ（登録商標）統合ＩＰ電話７９８５Ｇ及び／又はシスコ（登録商標）統合ワイヤレスフォーン７９２０を含む。
【００５３】
備える、含む、及び／又は個々の複数の態様は、無制限であり、列挙されたものを含み、また列挙されていない追加のものも含むことができる。及び／又は、無制限であり、列挙されたものの１以上、また列挙されたものの組み合わせを含む。
【００５４】
当業者は、その精神若しくは本質的な特徴から逸脱することなく本発明が他の特定の形態で具現化されると理解するだろう。従って、上述の実施形態は、本明細書に記述の本発明の限定というよりは全側面において例示であるものと考えられる。
【符号の説明】
【００５５】
１００  システム
１０２  サーバー
１０４ａ、ｂ  装置
１０６ｂ  モジュール
【図１】
2014209341.tif 000005
【図２】
2014209341.tif 000006
【図３】
2014209341.tif 000007
【図４】
2014209341.tif 000008
【図５】
2014209341.tif 000009
【外国語明細書】
2014209341000001.pdf