(57)【要約】【課題】協調分散サービスをモデルに基づいて構築することにより柔軟性および拡張性の高い協調分散システムを提供する。【解決手段】協調分散システムは、好ましくはユースケースに対応するサービスの実現に必要とされる機能群をゆるやかなモデルとして定義しておき、所望の複数の機能を発見した後、それら機能間をネットワーク接続してモデルを構築するとともに、少なくとも１つのモデルコントローラを配置する。好ましくはビューの最適化等も行う。その後、モデルコントローラから、モデルに制御を加えることにより機能モジュール間のデータ転送を実現する。【選択図】    図２
2004252557.tif 000002
【特許請求の範囲】
【請求項１】
それぞれが所定の機能を行う機能モジュールを有する１つ以上の通信装置と、前記通信装置のいずれかに配置され、すべての前記通信装置を制御する主制御手段と、を有する協調分散システムであって、
前記通信装置のいずれかに設けられ、前記協調分散システムが提供可能な１つ以上のサービスと、各サービスを提供するのに必要となる機能モジュールの情報とが定義されたサービス情報定義を記憶するサービス情報記憶手段と、
前記通信装置のいずれかに設けられ、前記サービス情報定義で定義されたあるサービスを提供するのに必要となる機能モジュール同士が通信に用いる通信手順が定義された通信情報定義を記憶する通信情報記憶手段と、
前記通信装置のいずれかが一のサービスの提供要求を受けたとき、１つ以上の通信装置についてそれぞれが有する機能モジュールを検索し、前記サービス情報定義に定義された機能モジュールの情報に従い前記一のサービスの提供に必要となる機能モジュールに、どの通信装置が有する機能モジュールを選択するのかを動的に行う、前記通信装置のいずれかに配置された機能モジュール選択手段と、を備え、
前記機能モジュール選択手段が選択した機能モジュールを有する前記通信装置が、前記通信情報定義に基づく前記主制御手段からの指示により当該機能モジュールの実行を制御する、あるサービスの要求時に動的に分散処理環境を構築することを特徴とする協調分散システム。
【請求項２】
前記サービス情報定義は各機能モジュールが提供可能な機能により分類したカテゴリ情報を含み、前記機能モジュール選択手段が機能モジュールを選択するときは、このカテゴリ情報をもとに前記一のサービスの提供に必要となる機能モジュールを選択することを特徴とする請求項１に記載の協調分散システム。
【請求項３】
前記機能モジュール選択手段が機能モジュールを選択した後、該選択した機能モジュールの情報と、前記通信情報定義に含まれる前記選択した機能モジュール間の通信手順に従った手順を実行するプログラムとを、前記主制御手段に対して送信する通信手順送信手段を、前記通信装置のいずれかに備えることを特徴とする請求項１に記載の協調分散システム。
【請求項４】
前記通信装置のいずれかが所有する、前記一のサービスの提供に用いるユーザインターフェースをさらに備え、
前記主制御手段が、このユーザインターフェースを介して与えられた指示に応じて、前記プログラムを実行することを特徴とする請求項３に記載の協調分散システム。
【請求項５】
それぞれが所定の機能を行う機能モジュールを有する１つ以上の通信装置と、前記通信装置のいずれかに配置され、すべての前記通信装置を制御する主制御手段と、を有する協調分散システムを構築する方法であって、
前記協調分散システムが提供可能な１つ以上のサービスと、各サービスを提供するのに必要となる機能モジュールの情報とが定義されたサービス情報定義を前記通信装置のいずれかにおいて記憶するサービス情報記憶ステップと、
前記サービス情報定義で定義されたあるサービスを提供するのに必要となる機能モジュール同士が通信に用いる通信手順が定義された通信情報定義を前記通信装置のいずれかにおいて記憶する通信情報記憶ステップと、
前記通信装置のいずれかが一のサービスの提供要求を受けたとき、１つ以上の通信装置についてそれぞれが有する機能モジュールを検索し、前記サービス情報定義に定義された機能モジュールの情報に従い前記一のサービスの提供に必要となる機能モジュールに、どの通信装置が有する機能モジュールを選択するのかを動的に行う機能モジュール選択ステップと、を備え、
あるサービスの要求時に動的に分散処理環境を構築することを特徴とする協調分散システムの構築方法。
【請求項６】
前記サービス情報定義は各機能モジュールが提供可能な機能により分類したカテゴリ情報を含み、このカテゴリ情報をもとに前記一のサービスの提供に必要となる機能モジュールを前記機能モジュール選択ステップにおいて選択することを特徴とする請求項５に記載の協調分散システムの構築方法。
【請求項７】
前記機能モジュール選択ステップにおいて機能モジュールが選択された後、該選択された機能モジュールの情報と、前記通信情報定義に含まれる前記選択された機能モジュール間の通信手順に従った手順を実行するプログラムとを、前記主制御手段に対して送信する通信手順送信ステップを備えることを特徴とする請求項５に記載の協調分散システムの構築方法。
【請求項８】
前記通信装置のいずれかに設けられ、前記一のサービスの提供に用いられるユーザインターフェースを介して与えられた指示に応じ、前記プログラムを実行する主制御ステップを備えることを特徴とする請求項７に記載の協調分散システムの構築方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、協調分散システムおよび協調分散システムの構築方法に関する。
【０００２】
【従来の技術】
機能分散の概念自体は古くから存在し、コンピュータ関連の技術分野において協調分散システムについてのさまざまな研究がなされてきた。近年、協調分散システムはオブジェクト指向技術とともにめざましい発展を遂げており、オフィス環境のＩＴ化等において既に利用されている。
【０００３】
協調分散システムを実現するための具体的な技術として、例えばＣＯＲＢＡ（商標）やＪＡＶＡ（商標）のＲＭＩなどが知られている。これらは、ネットワーク上に分散する種々の機能をオブジェクト化しそのインターフェースを定義して外部に公開する仕組みを備えており、機能分散／共有のための枠組みを提供するものである。これら従来技術においては、インターフェース記述に従って機能にアクセスするが、同じ目的に対してその都度、利用する機器やオブジェクトを使い分けるような場合、その定義を利用側が事前にきめ細かく理解しておかねばならないことや、ネットワークの前提が静的であるために機器の追加削除や、利用する機能の選択に手間がかかるという問題点がある。
【０００４】
一方、家電機器等のデジタル化（いわゆる情報家電等）に伴い、機能やデータの連携の重要性は増しており、その実現に寄与する技術として協調分散システムへの期待は高まっている。
【０００５】
計算機環境を中心に捉え、情報家電向けのサービス定義および解決のメカニズムを追加するための仕様（例えば、Ｊｉｎｉ（商標））が策定されている。同仕様では、機能を分散するという目的の下に、どのように機能を発見し、どのようにその機能を利用するかに着目している。サービス定義および解決のメカニズムは、同じ目的に対して異なる機能を使い分けることを可能にするが、機能共有に必要な定義や記述をその詳細にわたり事前によく承知しておかなければならない。これは上記ＣＯＲＢＡ等と同様の問題である。
【０００６】
協調分散システムの概念は、まず分散配置されている複数の機能モジュールがあり、その静的な組み合わせがサービスやアプリケーションを構成するというものであり、その実現のために機能発見（探索）等のダイナミズムが提供される。しかしながら、機能発見後におけるサービスやアプリケーションの構築プロセスに関しては固定的である。この問題は、従来の協調分散システムが単に計算機処理の負荷分散までしかその範疇としていない点に起因する。したがって、新たに導入された機能モジュールを相互に組み合わせて新しいサービスを実現するような局面では、その都度、必要なモジュールの静的な構成をその詳細にわたり指定する必要があり、よってユーザレベルの視点からすれば極めて固定的なシステムが構築されることとなり柔軟性に欠けるという問題がある。
【０００７】
より具体的な従来技術として、例えば、ネットワークに接続された家電機器の機能を統合し、デジタルカメラで得られた画像をテレビに表示して必要な画像をホームサーバに保存するといった監視機能を実現するネットワークシステム及び機器制御方法（下記特許文献１参照。）がある。この従来技術はネットワーク上の機器に分散する機能オブジェクトのメソッドを実行するものであるが、これは従来から行われている。また、同文献には機器が搭載する機能をネットワークを介して他機器に提供し動作させることが記載されているに過ぎず、上述のＪｉｎｉと同様のメカニズムであり、上述の問題を解決するには至らない。
【０００８】
【特許文献１】
特開２００２−９５０７１公報
【０００９】
【発明が解決しようとする課題】
本発明はかかる事情を考慮してなされたものであり、ネットワークを介して接続された各情報処理装置が搭載する機能モジュールを用いて実現される協調分散サービスをモデルに基づいて構築することにより柔軟性および拡張性の高い協調分散システム及び協調分散システムの構築方法を提供することを目的とする。
【００１０】
【課題を解決するための手段】
本発明の一観点に係る協調分散システムは、それぞれが所定の機能を行う機能モジュールを有する１つ以上の通信装置と、この通信装置のいずれかに配置され、すべての通信装置を制御する主制御手段と、を有する協調分散システムである。この協調分散システムにおいて通信装置のいずれかは、協調分散システムが提供可能な１つ以上のサービスと、各サービスを提供するのに必要となる機能モジュールの情報とが定義されたサービス情報定義を記憶する。
【００１１】
また通信装置のいずれかは、サービス情報定義で定義されたあるサービスを提供するのに必要となる機能モジュール同士が通信に用いる通信手順が定義された通信情報定義を記憶する。
【００１２】
サービスの要求時に動的に分散処理環境を構築する協調分散システムは、通信装置のいずれかが一のサービスの提供要求を受けたとき、１つ以上の通信装置についてそれぞれが有する機能モジュールを検索し、サービス情報定義に定義された機能モジュールの情報に従い一のサービスの提供に必要となる機能モジュールに、どの通信装置が有する機能モジュールを選択するのかを動的に行う。選択された機能モジュールを有する通信装置は、通信情報定義に基づく主制御手段からの指示により当該機能モジュールの実行を制御する。
【００１３】
【発明の実施の形態】
以下、図面を参照しながら本発明の実施形態を説明する。
【００１４】
図１は本発明の一実施形態に係る協調分散システムの概念的構成を示す図である。図１（ａ）は協調分散システムに適用される一台の情報処理装置１を示しており、この情報処理装置１は機能モジュール２、ビュー３、コントローラ４を有する。同図において黒点で示されるのは機能モジュール２の１つであり、情報処理装置１が単体で動作する場合には、指定されたサービスやアプリケーションに基づいて必要な機能モジュール２が組み合わされ、モデル５として単位化される。このモデル５はコントローラ４からの指示に基づいて制御され、ビュー３を介してユーザとの間でデータをやりとりする。一台の情報処理装置１は、プロセッサやメモリ等のコンピュータの基本構成要素を備えネットワークを通じて情報を処理することのできる任意の機器からなり、いわゆるパーソナルコンピュータや、携帯型通信機器、情報家電機器などが想定される。
【００１５】
本発明に係る協調分散システムは、このような情報処理装置１の少なくとも１つ以上がネットワークを介して協調動作し、サービスを提供するものである。例えば、図１（ｂ）に示すように三台の情報処理装置１１，１２，１３が協調分散システムを構成している。３つの情報処理装置１１，１２，１３は図示しないネットワークを介して相互に接続される。あるサービスを提供するにあたり、各情報処理装置の内部に搭載されている機能モジュール２がネットワークを介して論理的に接続され、協調動作する。このような機能モジュール２の組み合わせからなる論理的な構成単位をモデル５と称する。モデル５は、コントローラ４から操作される。コントローラ４は、全ての情報処理装置１に配備される場合もあるし、特定の情報処理装置にだけ配備される場合もある。ビュー３についても同様であり、１つのモデル５について全ての情報処理装置に配備される場合もあるし、特定の情報処理装置にだけ配備される場合もある。
【００１６】
図２は協調分散システムが提供するサービスのモデル構築（セットアップ）に係る情報処理装置の機能構成を示すブロック図である。情報処理装置（例えば１２）は、サービス定義およびシナリオ定義（ファイル）１２０、機能モジュール１２１、モデル情報格納部１２２、モデル制御部１２３を備える。モデル制御部１２３はネットワーク３００を介して他の情報処理装置１１，１３等と通信が可能である。サービス定義およびシナリオ定義ファイル１２０はシステムを構成するいずれかの情報処理装置に設けられていればよい。また、サービス定義およびシナリオ定義がそれぞれ別の装置に格納されていてもよい。図２の例において、情報処理装置１２および１３はサービス定義およびシナリオ定義ファイル１２０を備えるが、情報処理装置１１はこれらを備えていない。したがって、情報処理装置１１は専ら機能モジュールの提供のみを担う。
【００１７】
以下、例えばサービス定義ファイル１２０を持つ情報処理装置１２が、サービスのモデルを動的にセットアップする主体であるとして説明する。ファイル１２０に記録されるサービス定義は、当該サービスのモデルを構成するための情報を有し、具体的には機能モジュールのカテゴリ表現とそれらの接続関係を表すサービストポロジを有する。機能モジュールのカテゴリ表現およびサービストポロジについては後に詳細に説明する。
【００１８】
サービスのモデルをセットアップするプロセスは、大別すると、当該サービスの実現に必要な機能モジュールをサービス定義に基づいて決定するプロセスと、決定された機能モジュール間の通信の手順をシナリオ定義に基づいて決定するプロセスとから構成される。前者のプロセスによれば、当該サービスについての静的モデルを生成でき、後者のプロセスによれば、同サービスについての動的モデルを生成できる。これら２つのモデルは相補の関係にあり、両者を完備した時点でモデルは完成する。
【００１９】
必要な機能モジュールをサービス定義に基づいて決定する前者のプロセスは以下のステップから構成される。すなわち、情報処理装置１２のモデル制御部１２３は、ファイル１２０からサービス定義を読み出して解釈する。サービス定義の解釈は、ネットワーク３００上における機能モジュール間の通信可否を把握することを含む。次に、モデル制御部１２３は、サービス定義から必要とされる機能モジュールのカテゴリを知り、ネットワーク３００に対しその探索手続きを開始する。他の情報処理装置は、発見要求に対して対応可能の場合は返答する。
【００２０】
カテゴリに該当する機能モジュールが発見され、全てのカテゴリについて具体的な機能モジュールが発見され探索手続が解決すると、これら発見された機能モジュールの組合せをサービス定義に従い決定することができる。
【００２１】
以上に述べたサービス定義に基づく機能モジュールの決定について、具体例を挙げて説明する。
【００２２】
図３は、情報処理装置の具体例、および該情報処理装置が備える機能モジュール２およびその一部から構成されるモデル５の具体例を示す図である。ここでは四台の情報処理装置１１，１２，１３，１４が示されている。これらは図示しないネットワークを介して相互に接続されている。
【００２３】
情報処理装置１１は例えばＡ社製デジタルカメラであり、３つの機能モジュールを備える。以下同様に、情報処理装置１２は例えばＢ社製画像テロッパであり、１つの機能モジュールを備える。情報処理装置１３は例えばＣ社製文字生成器であり、２つの機能モジュールを備える。情報処理装置１４は例えばＤ社製テレビであり、２つの機能モジュールを備える。
【００２４】
ここで、アルバム作成サービスという１つのサービスを実現する例を挙げる。同サービスの実現に必要な幾つかの機能要素がモデル５として定義される。図３において、モデル５は点線により囲まれた領域内の機能モジュール２の集合として示されている。モデル５は複数定義することができ、機能モジュールの属性情報など、そのモデルにおいて必要な機能モジュールの特定に必要な情報は、モデル単位で事前に決められる。
【００２５】
機能モジュール（オブジェクト）は、識別子により一意に特定するのが一般的であるが、本実施形態では機能モジュールをその属性、振る舞い、相対関係といった緩い制約に基づいて識別することもできるよう構成されている。例えば、ある機能モジュールの識別子により、実際に特定の情報処理装置上に搭載された特定の機能モジュールそのものを特定する場合と、「デジタル画像を生成する機能モジュール」という具合に、機能モジュールをあいまいに特定する場合とがある。後述するが、このような緩い制約によって機能モジュールをあいまいに特定（指定）することにより、多様な機能モジュールを該当させることができシステムの柔軟性を向上できる。
【００２６】
機能モジュールの特定を、その機能のカテゴリに基づいて行った例を図４に示す。同図はサービス定義に含まれるサービストポロジの一例を示している。なお、サービストポロジはモデル毎に、必要な機能、およびその接続関係を規定するものである。各機能モジュール、接続パス、パスの両端のノードには必要に応じて識別子が付与される。同図では、「画像生成」、「画像合成」、「画像表示」といったカテゴリに基づいて機能モジュールがあいまいに特定（定義）されていることがわかる。
【００２７】
図５は、構築されたモデル５、ビュー３、およびコントローラ４１，４２の関係を示している。この例では、１つのモデル５について１つのモデルコントローラ４１が情報処理装置１２上に配置されている。４２はローカルコントローラであり、情報処理装置１１，１３，１４のそれぞれに配置されている。また、ビュー３は全ての情報処理装置１１〜１４上に配置されている。
【００２８】
ネットワークを介して接続される情報処理装置１１〜１４上へのモデル５のマッピングは上述のサービストポロジに基づいている。また、モデル５とビュー３との関係については、各々の情報処理装置が、ビューを構成可能であるか否かの条件に従う。
【００２９】
モデル５により定義されたサービスの動作時には、いずれかのビュー３に与えられた操作に応じ、モデルコントローラ４１を通じてモデル５を構成する機能モジュール２が実行される。ユーザはいずれかのビュー３を介して機能モジュール２の入出力結果、すなわちサービスを享受することができる。なお、情報処理装置単体の機能を同時に利用できる場合には、機能モジュール２を操作するためのローカルコントローラ４２が同時に動作する。機能モジュール２およびビュー３は単体レベルで操作される。
【００３０】
本実施形態に係る協調分散システムのセットアップに係る一般的な動作シーケンスは次の通りである。ユーザがある１台の情報処理装置上で利用したいサービスを選択すると、そのサービスに対応するモデルの定義が解釈される。サービスはユースケースに対応していることが好ましい。サービス定義は、事前に機器に格納されているか、もしくは、ネットワーク経由で他から得ることもある。サービス定義を解釈した情報処理装置は、当該サービスの構築に必要な機能モジュールのモデル情報に基づいて、必要な機能モジュールを決定し、それらの接続を行う。機能モジュールは事前に固定されている場合もあるが、オンデマンドで通信可能な範囲から探索し決定する場合もある。必要な機能モジュールとのネットワーク接続を終えた後、モデルに対するコントローラの配置、および、ビューの構成を行う。これらを終えた後、モデルに対応されたサービスが準備完了の状態となる。
【００３１】
（機能モジュールのカテゴリ）上述したように、本実施形態では機能モジュールをその属性、振る舞い、相対関係といった緩い制約に基づいて識別することができるよう構成されている。かかる制約を本明細書では「機能モジュールのカテゴリ」と称する。図６は、機能モジュールのカテゴリを説明するための図である。同図においては、機能モジュールのカテゴリがマトリックス形式で分類されており、縦軸には機能モジュールが扱うメディアの種類が列挙され、横軸には機能モジュールがメディアに加える操作の種類が列挙されている。ここで、メディアの種類は機能モジュールの属性に関する情報に相当し、操作の種類は振る舞いに関する情報に相当する。
【００３２】
想定される情報処理装置が実際に備える種々の機能モジュールを、図６のマトリックスにおけるいずれか一の要素すなわちカテゴリに当てはめる。このような機能モジュールのカテゴリは、モデル記述を行うとき、機能モジュールをゆるやかに定義指定する際の識別子として用いられる。
【００３３】
図７は、各情報処理装置が実際に有する機能（モジュール）と図６に示した機能モジュールのカテゴリとの対応を示す図である。例えば、「デジタルカメラ」が搭載する「画像保存機能」は「画像蓄積（Ｉｓ）」に対応している。モデルの定義において機能モジュールの識別にはこの「画像蓄積（Ｉｓ）」が用いられる。この「画像蓄積（Ｉｓ）」についての機能モジュールの探索においては「デジタルカメラ」の「画像保存機能」が発見されるかも知れない。また、この「デジタルカメラ」の「画像保存機能」が高機能化されたとしても同様である。なお、該機能モジュールを制御するためのインターフェースの問題はモデルコントローラが解決する。
【００３４】
機能モジュールの探索の具体例を図８を参照しながら説明する。例えば図８に示すように、ユーザがＢ社製テロッパ（以下、「テロッパ」）１２を操作して、協調分散サービスを実行する場合、テロッパ１２は、図６に示したカテゴリに該当する機能モジュールを発見するべく、ネットワーク通信が可能な範囲において探索を行う。上述したように、サービス定義によれば機能モジュール間の通信可否を知ることができる。
【００３５】
探索条件に該当する機能モジュール２はテロッパ１２に返答する。テロッパ１２は必要な機能モジュール２を取捨選択し、最終的にはサービスを提供するために必要な機能モジュール２の全てが決定される。これら機能モジュール２はモデル５の実体となる。
【００３６】
機能モジュール探索における各機能モジュール間のメッセージシーケンスの一例を図９を参照しながら説明する。こでは、テロッパ１２内部の画像合成（モジュール）９０が他の機能モジュールと通信するセットアップシーケンスであり、テロッパ１２から他の情報処理装置に向けてまず機能発見要求（Ｂｉｄ１，Ｂｉｄ２）が発せられる。この（Ｂｉｄ１，Ｂｉｄ２）は、画像生成モジュールを探索する要求であり、それに対して２つの機能モジュール９１，９２が機能要求返答（Ｏｆｆｅｒ１，Ｏｆｆｅｒ２）を返答している。実際にモジュール間を接続可能かどうかを（Ｎｅｇｏｔｉａｔｉｏｎ１，Ｎｅｇｏｔｉａｔｉｏｎ２）により確認した後、テロッパ１２から例えば機能モジュール９２に対して確定（Ａｇｒｅｅ）が発信され、確定している。次に、画像表示モジュールを発見するために、同様にＢｉｄ３を発し、要求に応答したモジュール９３がＮｅｇｏｔｉａｔｉｏｎの後、Ａｇｒｅｅによって確定している。
【００３７】
（シナリオ定義に基づく通信モデルの決定）上述したように、サービスのモデルをセットアップするプロセスは、大別すると、当該サービスの実現に必要な機能モジュールをサービス定義に基づいて決定するプロセスと、決定された機能モジュール間の通信の手順をシナリオ定義に基づいて決定するプロセスとから構成される。前者のプロセスについては詳述した。以下、後者のプロセスについて詳細に説明する。
【００３８】
モデル５に対するメソッド、すなわちサービスの実行のための制御インターフェースは、サービスに必要な機能モジュールを操作するために一元的に管理される制御インターフェースであって、ここでは、５つ（画像一覧表示（Ｖｉｅｗ＿Ｉｍａｇｅ＿ＡＬＬ）、選択画像表示（Ｖｉｅｗ＿Ｓｅｌｅｃｔｅｄ＿Ｉｍａｇｅ）、テロップ文字表示（Ｖｉｅｗ＿Ｏｖｅｒｌａｙ＿Ｉｍａｇｅ）、位置選択（Ｓｅｌｅｃｔ＿Ｏｖｅｒｌａｙ＿Ｉｍａｇｅ）、実行（Ｅｘｅｃ＿Ｏｖｅｒｌａｙ＿Ｉｍａｇｅ））を例とする（図１０参照）。これらは、図２に示したシナリオ定義ファイル１２０において定義されている。
【００３９】
サービスの実行は、モデルコントローラ４１（もしくはいずれかのビュー３）を通じ、モデル５に対するメソッドを呼び出すことにより行われる。いずれかの情報処理装置においてビュー３を操作することによりユーザから与えられたサービス実行要求に応じて、モデルコントローラ４１内のプログラムは、モデル５のメソッドを呼び出す。各々の情報処理装置は、そのメソッド呼び出しの情報に応じてモデル内部の所定の機能モジュールを駆動する。これによりモデルの状態はアップデートされ、その結果はビュー３を介して外部に出力される。
【００４０】
図１１乃至図１５を参照して、それぞれのメソッドに対応する制御の流れ（シナリオ）の例を説明する。図１１は画像一覧表示、図１２は選択画像表示、図１３はテロップ文字表示、図１４は位置選択、図１５は実行、についてのそれぞれのシナリオを示している。例えば図１１のシナリオは、ユーザがモデルコントローラ４１を介して画像生成モジュールに対し所定の枚数の画像を転送する指示を出すと、その結果がビュー３を介して得られるというものである。図１１乃至図１５において、各メソッドに対応するシナリオ例（制御及びデータの流れ）は点線又は実線の矢印で示してある。
【００４１】
図１６は、各機能モジュールのネットワーク入出力制御を掌るネットワーク制御部（ＥＸ）６を示している。各装置のネットワーク制御部（ＥＸ）６に対し、モデルコントローラ４１のネットワーク制御部（ＥＸ）６から制御情報が送られる
図１７はシナリオ定義に基づくモデルコントローラ４１のセットアップを示す図である。情報処理装置１２のモデル制御部１２３は、ファイル１２０からシナリオ定義を読み出し、同シナリオ定義から、モデル５をコントロールするためのプログラム１２５を抽出し、モデルコントローラ４１にアップロード（転送）する。プログラム１２５は、必要に応じて、シナリオ定義に基づき自動生成される。
【００４２】
上述した図１１乃至図１５のシナリオは、図１８に示すような、シナリオ定義記述に基づいている。サービスを実行させる指示がなされた場合、図１８のシナリオ定義の記述内容が解析される。機能モジュールを提供する情報処理装置に対し、図１８に記載のコントロール（Ｃｏｎｔｒｏｌ）の単位で、各機能モジュールがどのように振舞うかの通信手順を表すものが、上述のプログラム１２５である。なお、シナリオ記述の情報が該当する情報処理装置に転送されるか、自身でそのシナリオ情報を解析することで、それぞれの情報処理装置において、各機能モジュールがどのように振舞うかの指定がされる場合もある。本実施形態では、「アルバム作成サービス（Ａｌｂｕｍ  Ｓｅｒｖｉｃｅ）」という１つのサービスについて、５つのコントロール（Ｃｏｎｔｒｏｌ）が定義されている。例えば２番目のコントロール（Ｖｉｅｗ  Ｓｅｌｅｃｔｅｄ  Ｉｍａｇｅ）には、「４番ノードから制御されたならば、４番ノードは０番の通信パスに対して情報をＧＥＴする要求を出す。あるいは、０番ノードから制御されたならば、０番ノードは０番の通信パスに対して、情報をＰＵＴする要求を出す。あるいは、もし、それ以外のノードからコントロールされた場合、該当ノードは、４番ノードに対して、０番の通信パスに対し、データをＧＥＴすることを依頼する」旨が記述されている。このようなシナリオ定義に従い、関連する機能モジュールを持つ情報処理装置は、各機能モジュールが指示とおりに動作可能になるようにセットアップされる。このセットアップに係る情報はモデル情報格納部１２２に記録される。
【００４３】
（インターフェース情報）例えば図１０に示したシステム構成例において、ネットワーク動作時には、モデルコントローラ４１の制御インターフェースに関する情報として、例えば「操作メニュー」がビュー３を通じてユーザに提示される。その様子を図１９に示す。図１９に示す操作メニュー２００はユーザインターフェースであり、画像一覧表示を指示するためのボタン２０１、選択画像表示を指示するためのボタン２０２、テロップ文字表示を指示するためのボタン２０３、位置選択を指示するためのボタン２０４、実行を指示するためのボタン２０５から構成されている。
【００４４】
操作メニュー２００においていずれかのボタンがユーザにより選択されると、その指示がモデルコントローラ４１に通知される。モデルコントローラ４１はこれに応じてモデル５に動作の指示を伝える。各情報処理装置内部のモデル制御部は、モデル５からの指示に応じて機能モジュールを実行させる。各情報処理装置内部における機能モジュールの動作による情報処理結果はビューを通じて出力される。
【００４５】
（情報処理装置の他の構成例および協調分散動作時の被制御）図２０に示すように、情報処理装置１１，１４は、機能モジュール２およびビュー３を備える。情報処理装置１２は、機能モジュール２、ビュー３、およびモデルコントローラ４１を備える。情報処理装置１３は、機能モジュール２のみを備える。つまり、図５に示したシステム構成例とは異なり、情報処理装置１３はビューを備えていない。
【００４６】
モデル５を構成する全ての機能モジュールは、モデルコントローラ４１を通じて制御されるが、ビューの更新については、モデル５は、全ての情報処理装置ではなく、ビューを搭載している情報処理装置のみを制御する。具体的には、ビューを備える情報処理装置１１，１２，１４のみを制御する。なお、ビューを搭載していても、搭載していない情報処理装置と同じ扱いとし、あえてビュー機能を動作させないような制御がなされる場合もある。
【００４７】
（サービス実行制御のみ）また、図２１に示すように、情報処理装置１７はビュー３およびモデルコントローラ４１を備え、機能モジュール２を備えていない。かかるシステム構成例において、情報処理装置１７は、シナリオ情報を解析し、その内容に基づいて関連する情報処理装置のネットワーク制御部６を制御する。シナリオ定義（ファイル）は、情報処理装置１７又は他の情報処理装置１１〜１４のいずれかが所有しているものとする。このように、サービスを構成する機能（モジュール）は提供せずに、専らサービス全体の実行制御のみを司るように情報処理装置を構成してもよい。
【００４８】
以上説明した本発明の実施形態によれば、ユーザに提供するサービスを実現するために必要な機能モジュールを、固定的に決定せず、その属性情報、またはそのモジュールの振る舞いのみによりゆるやかに指定し、その組み合わせ情報をサービス定義とする。かかるサービス定義に基づいて実際に結合されるモジュールを決定し、システムを構成する。これにより、同じサービスを実現するにあたり、さまざまな機能モジュールを柔軟に結合して構成することを可能とすると共に、高機能サービスを実現するにあたり、機能モジュールの高度化のみで、サービス定義を変更する必要がない。また、実際にそれぞれのモジュールをどのように接続して、どのようなデータを、どの機器のユーザインターフェースを用いて制御するかを示すシナリオ定義に基づき、実際に、モジュールを持つ機器の制御プログラムを生成することで、各機器の制御プログラムをその都度書き換える必要もない、といった作用効果を得ることができる。
【００４９】
なお、本発明は上述した実施形態に限定されず種々変形して実施可能である。
【００５０】
【発明の効果】
以上説明したように、本発明によれば、ネットワークを介して接続された各情報処理装置が搭載する機能モジュールを用いて実現される協調分散サービスをモデルに基づいて構築することにより柔軟性および拡張性の高い協調分散システム及び協調分散システムの構築方法を提供できる。具体的には、本発明ではユーザに提供するサービスを実現するために必要なモジュール（各情報処理装置に搭載される機能モジュールの組み合わせ）を従来のように予め詳細に定めておくのではなく、属性や振る舞いのみによりゆるやかに指定し、その組み合わせ情報をサービス定義とする。サービス定義に基づいて実際に結合されるモジュールを決定し、システムを構成する。したがって、協調分散システムの柔軟性を向上できる。さらに、特定の機器やモジュールが動作しない場合に全体が動作しなくなることを防止できる。また、トポロジが同じサービス定義において、各機能モジュールの高度化がなされた場合であってもサービス全体をスムーズに高度化でき、分散協調システムの新しいアプリケーションを生み出すことが可能となる。また、サービス毎にその操作の手順を規定するシナリオ定義の仕組みによれば、各情報処理装置の各モジュールにそれらの事前設定を行っておくことなしに、必要に応じて機能モジュールに所望の振る舞いを実現するための指示を与えることができることから、各機能モジュールの制御プログラム（特に、ネットワーク制御や、他機能モジュールとの入出力制御モジュール）の汎用化も可能となる。
【図面の簡単な説明】
【図１】本発明の一実施形態に係る協調分散システムの概念的構成を示す図
【図２】協調分散システムが提供するサービスのモデル構築（セットアップ）に係る情報処理装置の機能構成を示すブロック図
【図３】情報処理装置の具体例、および該情報処理装置が備える機能モジュールおよびその一部から構成されるモデルの具体例を示す図
【図４】機能モジュールの特定を、その機能のカテゴリに基づいて行った一例を示す図
【図５】構築されたモデル、ビュー、およびコントローラの関係を示す図
【図６】機能モジュールのカテゴリを説明するための図
【図７】各情報処理装置が実際に有する機能（モジュール）と図６に示した機能モジュールのカテゴリとの対応を示す図
【図８】機能モジュールの探索の具体例を説明するための図
【図９】機能モジュール探索における各機能モジュール間のメッセージシーケンスの一例を示す図
【図１０】モデルに対するメソッド（サービスの実行のための制御インターフェース）の一例を示す図
【図１１】シナリオ例（画像一覧表示）を示す図
【図１２】シナリオ例（選択画像表示）を示す図
【図１３】シナリオ例（テロップ文字表示）を示す図
【図１４】シナリオ例（位置選択）を示す図
【図１５】シナリオ例（実行）を示す図
【図１６】各機能モジュールのネットワーク入出力制御を掌るネットワーク制御部（ＥＸ）を示す図
【図１７】シナリオ定義に基づくモデルコントローラのセットアップを示す図
【図１８】シナリオ定義の記述例を示す図
【図１９】ユーザインターフェースの一例を示す図
【図２０】協調分散システムの他の構成例を示す図
【図２１】協調分散システムの他の構成例を示す図
【符号の説明】
１，１１〜１７…情報処理装置、２…機能モジュール、３…ビュー（ユーザインターフェース）、４…コントローラ、５…モデル、６…ネットワーク制御部、４１…ネットワーク動作時のモデル制御用のコントローラ（モデルコントローラ）、４２…単体動作時のコントローラ（ローカルコントローラ）
【図１】
2004252557.tif 000003
【図２】
2004252557.tif 000004
【図３】
2004252557.tif 000005
【図４】
2004252557.tif 000006
【図５】
2004252557.tif 000007
【図６】
2004252557.tif 000008
【図７】
2004252557.tif 000009
【図８】
2004252557.tif 000010
【図９】
2004252557.tif 000011
【図１０】
2004252557.tif 000012
【図１１】
2004252557.tif 000013
【図１２】
2004252557.tif 000014
【図１３】
2004252557.tif 000015
【図１４】
2004252557.tif 000016
【図１５】
2004252557.tif 000017
【図１６】
2004252557.tif 000018
【図１７】
2004252557.tif 000019
【図１８】
2004252557.tif 000020
【図１９】
2004252557.tif 000021
【図２０】
2004252557.tif 000022
【図２１】
2004252557.tif 000023