(57)【要約】【解決手段】サービスシナリオに基づいてサービスを提供する際に、シナリオに記載されている機能を有する機器等をローカルに探索し、発見した各機器に対して、ユーザの置かれている状況などに応じて使用機器同士の対応付けのテーブルをローカルに作成する。また、サービスを提供する際に、ユーザとそのユーザのために実行するサービスとを組み合わせて管理する。【効果】サービスと機器を別々に管理することができ、サービス設計時に実際の使用機器を考慮する必要がなくなる。これにより同じサービスを様々な場所や設備に負担なく適用できる。【選択図】  図１２
2004192077.tif 000002
【特許請求の範囲】
【請求項１】
複数の機器がネットワークを介して接続している分散システムにおいて、
サービスを提供するために必要な機能や機能間の関係について汎用的に記述したサービスシナリオと、
サービスを提供する際に使用する機器を選択する基準となるコンテキストと、
サービスに必要な機器を前記サービスシナリオから抽出する手段と、
サービス要求者にサービスの提供が可能な位置に存在する機器を検出する手段と、
前記コンテキストに基いて前記検出された機器を連携させてサービス要求者に対するサービスを実行する分散システム。
【請求項２】
前記抽出手段は、機器の属性情報に関するデータベースを保持するサーバに問い合わせて機器を抽出することを特徴とする請求項１の分散システム。
【請求項３】
前記検出手段は、前記抽出手段が抽出した機器の情報を得て、サービス提供が可能な位置に存在する機器を検出することを特徴とする請求項１の分散システム。
【請求項４】
前記サービスの実行手段は、前記検出手段が検出した機器間から情報を収集して、コンテキスト情報との対比を実行して使用可能な機器を選定する請求項３の分散システム。
【請求項５】
サービス実行中に前記コンテキストが変化した場合に、前記検出手段が変化後のコンテキストに応じて機器の再検出を行うことを特徴とする請求項１の分散システム。
【請求項６】
サービス実行中にサービス要求者にサービスの提供が可能な位置に存在する機器の状況が変化したことを検出したときに前記検出手段が機器の再検出を行うことを特徴とする請求項１の分散システム。
【請求項７】
サービスを要求するユーザ毎にサービス実行に必要な機器同士の関連付けを保持し、ユーザに応じた機器の連携を実行する請求項１の分散システム。
【請求項８】
複数の機器がネットワークを介して接続している分散システムにおいて、
サービスを提供するために必要な機能や機能間の関係について汎用的に記述したサービスシナリオと、サービスを提供する際に使用する機器を選択する基準となるコンテキストとを準備し、
サービスに必要な機器を前記サービスシナリオから抽出するステップと、
サービス要求者にサービスの提供が可能な位置に存在する機器を検出するステップと、
前記コンテキストに基いて前記検出された機器を連携させてサービス要求者に対するサービスを実行するステップとを実行することを特徴とするコンテキスト対応ブローカリング方法。
【請求項９】
前記抽出するステップは、機器の属性情報に関するデータベースを保持するサーバに問い合わせて機器を抽出することを特徴とする請求項８のコンテキスト対応ブローカリング方法。
【請求項１０】
前記検出ステップは、前記抽出ステップで抽出した機器の情報を得て、サービス提供が可能な位置に存在する機器を検出することを特徴とする請求項８のコンテキスト対応ブローカリング方法。
【請求項１１】
前記サービスの実行ステップは、前記検出ステップで検出した機器間から情報を収集し、コンテキスト情報との対比を実行して使用可能な機器を選定する請求項１０のコンテキスト対応ブローカリング方法。
【請求項１２】
サービス実行中に前記コンテキストが変化した場合に、変化後のコンテキストに応じて機器の再検出を行うことを特徴とする請求項８のコンテキスト対応ブローカリング方法。
【請求項１３】
サービス実行中にサービス要求者にサービスの提供が可能な位置に存在する機器の状況が変化したことを検出したときに機器の再検出を行うことを特徴とする請求項８のコンテキスト対応ブローカリング方法。
【請求項１４】
サービスを要求するユーザ毎にサービス実行に必要な機器同士の関連付けを保持し、ユーザに応じた機器の連携を実行する請求項８のコンテキスト対応ブローカリング方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、複数の機器がネットワークを介して接続している分散システムを用いて、サービスを提供するものである。この中でも特にサービス提供に必要な機能やそれらの組み合わせをその場の状況に応じて動的に行う技術に関する。
【０００２】
【従来の技術】
ネットワークに接続された機器やソフトウェア、コンテンツ等の中からユーザからある一定距離内に存在するものをグループ化し、そのグループの中から、ユーザの要求や状況、サービスに必要な機能、ネットワークリソースの固有情報や接続方法などを条件として必要な機器やソフトウェア等を抽出し、サービステンプレートに従って連携させることでサービスを提供していることが知られている（例えば非特許文献１参照）。ここで機器、ソフトウェア等に関する情報は全て中央のデータベースに集積されており、サービスを構成するための機器連携の仕方も中央で全て管理している。
【０００３】
ネットワークに接続された機器やソフトウェアなどの機能の名前をコンテンツ名、Ｉ／Ｆ名、状態名で定義し、これらを管理するネーミングシステムを設けたものが非特許文献２に示される。この例ではサービスのための機能構成について記述したサービスグラフを基にして、ネーミングシステムに問い合わせてサービスに必要な機能を発見し、それらを連携することでサービスを提供している。
【０００４】
【非特許文献１】
電子情報通信学会論文誌Ｖｏｌ．Ｊ８２−Ｂ  Ｎｏ．５  ｐｐ．７３０−７３９「適応型ネットワーキングサービス環境ＤＡＮＳＥ」
【非特許文献２】
電子情報通信学会技術研究報告  ＩＮ２００１−１９２，  Ｍａｒｃｈ  ２００１「ネットワークサービスシンセサイザのデザイン」
【０００５】
【発明が解決しようとする課題】
上記従来技術において、サービスに必要な機能間の連携、関連付け方はシナリオに記述されている。しかし、実際に機器を用いてサービスを提供する場所の状況や機器の状況に依存して、各機能を有する機器やソフトウェアの間の関連付け方は様々である。場所により、複数の機能を有する機器があったり、また複数の機器が同じ機能を有していたりする。このためサービスシナリオに記述された機能を有する機器の連携の仕方が複数存在して、ユーザの状況に適さない機器構成が選択される場合もある。
【０００６】
またサービスごとにコンテキスト情報を参照する頻度や必要とする情報、機器連携のための条件等が異なり、サービスを構成する各アプリケーションに前記の項目の条件等を事前に記述しておくこととは開発時の負担が増大し、また拡張性が低下する。
【０００７】
さらに上記従来技術において、複数のユーザが同じ場所でそれぞれのサービスを受けている場合、複数の機能を有する機器においてユーザごとの機能の使い分け、各機器における機能ごとの動作管理が困難である。
【０００８】
本発明の目的は、場所を限定せずともユーザ、機器などの状況に応じて、サービス実行に必要な機器同士の動的な対応付けを行うことで、汎用的な記述によるサービスシナリオを基にしたサービスの提供を実現することである。
【０００９】
【課題を解決するための手段】
上記の目的を達成するために、本発明は、サービスシナリオに基づいてサービスを提供する際に、サービスシナリオに記載されている機能を有する機器やソフトウェアを探索し、発見した各機器に対して、各機器やサーバ等が保有する情報を基にして使用機器同士のローカルな対応付けのテーブルを作成する。
【００１０】
ここでユーザの置かれている状況や環境内の状況等の情報であるコンテキストに基づいて、サービスシナリオに記述されている各機能を有する機器を選択するものとする。
【００１１】
なおテーブルを作成する際には、サーバで蓄積している機器データベース等を照会することよりサービス提供に必要な機能を有する機器やソフトウェアを選出し対応付けを取る方法と、ユーザのいる場所の周辺からサービスシナリオに記述されている機能に該当する機能を有する機器を探索していきながら、サービスシナリオで関係付けがある機能を有する機器同士で情報交換をすることで対応付けを取る方法とがある。
【００１２】
またコンテキストの変化が生じた場合は、変化後のコンテキストに応じて、サービスに必要な機能を有する機器の再発見及び機器の連携関係の再構築を行い、ユーザに対するサービスを継続する。
【００１３】
さらにサービスを提供する際には、サービス実行のプロセス及びサービス実行に必要な機器同士の関連付けとサービスを受けるユーザとを組み合わせて管理する。
【００１４】
【発明の実施の形態】
以下、本発明の実施形態を図面を用いて詳細に説明する。図１は、本発明におけるサービスを適用するシステムの概要を示す図である。主な構成要素は、無線通信が可能な携帯端末０１５１を持って移動するユーザ０１６１、環境内の場所ごとに置かれるブローカサーバ０１１１、０１１２、上記ブローカサーバ０１１１、０１１２とフィールドネットワーク０１８１、０１８２により接続された機器０１２１、０１２２、０１２３、０１２４、０１２５とセンサ類０１３１、０１３２とアクセスポイント０１４１、０１４２、上記ブローカサーバ０１１１、０１１２とインターネット０１７１を介して接続しているサービスシナリオ配信サーバ０１０１などがある。またここではフィールドネットワーク０１８１、０１８２は有線もしくは無線によるものである。
【００１５】
ユーザ０１６１の持つ携帯端末０１５１のハードウェア構成は記憶装置０１５２、入力装置０１５３、ディスプレイ０１５４、通信装置０１５５、処理装置０１５６から成る。記憶装置０１５２にはユーザ０１６１の個人情報、サービスシナリオ配信サーバ０１０１よりダウンロードしたサービスシナリオなどの情報、またそれらの情報を管理するためのソフトウェアが格納され、処理装置０１５６により処理される。入力装置０１５３はユーザ０１６１がサービス実行時の選択を入力する場合に用いる。ディスプレイ０１５４にはユーザ０１６１のサービス実行時の選択肢等を表示したりする。通信装置０１５５は無線によりアクセスポイント０１４１、０１４２を介してサービスシナリオ配信サーバ０１０１やブローカサーバ０１１１、０１１２と通信するのに用いる。
【００１６】
ブローカサーバ０１１１、０１１２のハードウェア構成は記憶装置０１１３、処理装置０１１４、通信装置０１１５から成る。記憶装置０１１３には、サービスシナリオ配信サーバ０１０１から配信されたサービスシナリオ、機器属性に関する情報、またサービスシナリオを読み込み、サービスを実行するために機器との通信を行うソフトウェア、機器０１２１、０１２２、０１２３やセンサ類０１３１などを管理し事象検知を行うためのソフトウェアなどが格納されており、処理装置０１１４により処理される。また通信装置０１１５はフィールドネットワーク０１８１で接続された機器０１２１、０１２２，０１２３、センサ類０１３１、アクセスポイント０１４１との通信や、インターネット０１７１により接続されたサービスシナリオ配信サーバ０１０１との通信を行うのに用いる。
【００１７】
サービスシナリオ配信サーバ０１０１のハードウェア構成は記憶装置０１０２、処理装置０１０３、通信装置０１０４から成る。記憶装置０１０２には、サービスシナリオ、またサービスシナリオを作成、管理するソフトウェア、ユーザやブローカサーバからの要求を受け付け、サービスシナリオを配信するためのソフトウェアなどが格納されており、処理装置０１０３により処理される。また通信装置０１０４はインターネット０１７１で接続されたブローカサーバ０１１１、０１１２やユーザ端末０１５１と通信を行うのに用いる。
【００１８】
センサ類０１３１、０１３２はユーザの状況の把握に利用するものである。アクセスポイント０１４１、０１４２はユーザ０１６１が持つ携帯端末０１５１がネットワークにアクセスするためのものであり、ユーザ端末とブローカサーバ０１１１、０１１２やサービスシナリオ配信サーバ０１０１との通信の際に用いる。
【００１９】
図２は、本発明におけるサービスに必要な機能とそれらの関係付けを記述したサービスシナリオの概要を示す図である。０２０１がサービスシナリオを表しており、シナリオに記述されている各要素を実環境内０２０２にある機器等に適用してサービスを提供する。
【００２０】
サービスシナリオ０２０１にはサービスを実行する上で必要な機能０２１１、０２１２、０２１３、０２１４及びそれらの間の関係付けについて汎用的に記述してある。ここで機能０２１１と機能０２１２、機能０２１２と機能０２１４などのように互いにリンク付けされているものは両者の間にインタフェースが存在しデータのやり取りが行われることになる。また実環境内０２０２にある機器０２２１、０２２２、０２２３、０２２４はそれぞれ０２３１、０２３２、０２３３、０２３４に示す機能を有しているように１つの機器やソフトウェアが複数の機能を有することもある。なおサービスを実行する際には機能０２１１、０２１２、０２１３、０２１４を有する機器やソフトウェア等をユーザの周囲の環境から抽出し、これらを互いに連携させることでサービスを実行する。
【００２１】
図３は、本発明におけるサービスシナリオに基づいてローカルな場所でサービスを実行する際のフローチャートである。ＳＴ０３０１において、ユーザの要求を受けて実行するサービスの選択を行う。ＳＴ０３０２において、サービスシナリオ配信サーバからユーザのいる場所に近いブローカサーバにサービスシナリオがダウンロードされる。またはユーザ端末に保存されていたサービスシナリオをブローカサーバに送信する。ＳＴ０３０３において、サービスシナリオに記載されている、サービス実行に必要な機能を有する機器をユーザのいる場所の周辺で探索する。ＳＴ０３０４において、発見した機器の中からコンテキスト条件に基づいて使用可能な機器を選出する。ＳＴ０３０５において、サービスシナリオに記述されている機能間のリンク付けやローカルな機器構成などに基づいて、選出された使用機器同士の対応付けを決定し、対応テーブルを作成する。なおコンテキストに変更があればただちに対応テーブルも更新される。ＳＴ０３０６において、サービス実行のために選出した各機器に機器間の対応関係やサービス実行に必要な情報等を提供する。ＳＴ０３０７において、ＳＴ０３０５で作成した対応テーブルに基づいて機器連携を行い、サービスを実行する。ＳＴ０３０８において、サービス実行中にコンテキストに変化があればサービスに使用する機器や機器連携を新たなコンテキストに応じて再構成する必要があり、ＳＴ０３０３の処理に戻る。ＳＴ０３０９において、サービスが終了したのであれば使用していた機能、機器の占有権を開放して機器連携を終了する。
【００２２】
図４は、本発明におけるサービスを提供する際に使用する機器を選択する際に用いるコンテキストとそのコンテキストに基づく使用機器選択条件の例を記述した表である。表の列はコンテキスト０４０１とそのコンテキストに基づく使用機器選択条件０４０２を表す。
【００２３】
使用機器を選定するための条件として収集するコンテキスト情報にはユーザの位置、機器の状態、周囲の物理的環境の状態、スケジュール、時刻、周囲にいる人の数など様々なものがあり、その利用方法もサービスや状況に応じて設定できる。ここではコンテキスト０４０１の代表例として、位置０４１１、機器の状態０４１２、時刻０４１３、スケジュール０４１４、周囲にいる人数０４１５を挙げ、これらのコンテキスト情報を判定基準とした場合の使用機器選択条件０４０２の例を挙げている。
【００２４】
なおこれらのコンテキストは単独で用いるだけでなく複数を組み合わせて用いることもできる。またこれらのコンテキストの条件はサービスや機器の設置場所、機器の種類、ユーザの属性等に応じて変更、設定することができる。これらの条件は各場所に設置されたサーバまたはミドルウェアが保持していて、サービス実行時のユーザの状況に応じた機器の連携のために参照される。
【００２５】
図５は、本発明におけるサービス提供時にサービスに必要な機器を動的に連携するためのブローカサーバのソフトウェア構成を示す図である。ブローカサーバ０５０１は環境内の場所ごとに置かれており、その場にある機器を管理している。主な構成要素はサービス提供のための機器連携の対応テーブル０５０９を作成する機器連携作成部０５０２、サービスシナリオ及びサービスの実行を管理するサービス管理部０５０３、その場所におけるコンテキストを管理するコンテキスト管理部０５０４、その場にある機器に関する機器管理データベース０５０６を管理し、サービス提供時に機器連携の手順に関するメッセージを各機器に送信する機器構成管理部０５０５がある。
【００２６】
サービス管理部０５０３は通信媒体０５０８を通じてサービスシナリオを受け取り、コンテキスト管理部は通信媒体０５０８を通じて環境内に設置したセンサ類などから情報を獲得し常にその場所のコンテキストの変化を監視している。また機器構成管理部０５０５はその場所にある機器から通信媒体０５０８を通じて情報を獲得し機器管理データベース０５０６を管理することで機器の状況を監視している。
【００２７】
機器連携作成部０５０２はサービス管理部０５０３から受け取ったサービスシナリオを基にして、コンテキスト管理部０５０４より受け取ったコンテキスト情報に応じて、機器構成管理部０５０５より受け取った機器情報から、サービス提供のための使用機器の間での対応テーブル０５０９を作成する。作成された対応テーブル０５０９に基づいて機器構成管理部０５０５は通信媒体０５０８を通じて使用する各機器に機器連携、動作に関するメッセージを発する。なおコンテキスト管理部０５０３は常にコンテキストを監視していて、変化があれば機器連携作成部０５０２にて対応テーブル０５０９の書き換えが行われ、機器構成管理部０５０５より各機器に対して新たにメッセージを発することで、コンテキストの変化に応じた動的な機器連携の変更を実現している。
【００２８】
図６は、本発明におけるサービス提供時に作成される、使用機器間の対応テーブルを示す図である。主な構成要素としては、サービスシナリオに記載されている、サービス実行に必要な機能名０６０１、サービス提供に必要な該機能を有する機器でユーザの周辺にあるものの名称０６０２、ネットワークアドレス、名前、またはオブジェクトリファレンスなどローカルなエリア内でサービスに必要な該機能を有する機器を一意に指定するための識別子０６０３、機器またはソフトウェアにおいて、サービス提供に必要な該機能が動作しているプロセス０６０４、該プロセスにデータを送信している機器、プロセスの識別子であるデータ受信元０６０５、また該プロセスがデータを送信する宛先である機器、プロセスの識別子であるデータ送信先０６０６がある。さらに各機器の稼動状況などの状態０６０７もある。
【００２９】
またサービス実行において、使用機器間の対応テーブルもユーザごとに作成し別々に管理する。これにより同じ場所で複数のユーザに同様のサービスを提供する場合に、いくつかの機器やソフトウェアを共用することがあっても、各ユーザへのサービス提供の進捗管理や機器管理は各々独立して行われ、互いに干渉することはない。
【００３０】
図７は、本発明におけるサービスシステムの具体的サービスアプリケーションとしてビデオストリーミング配信サービスを提供する場合のシステム構成図である。以下の図８、９とともにサービスシナリオに対して、機器情報を管理するローカルなサーバに問い合わせることにより、サービス提供に必要な使用機器の間での対応テーブルをブローカサーバにて作成する場合の手順について示す。
【００３１】
主な構成要素は、サービス提供のためのサービスシナリオを配信するサービスシナリオ配信サーバ０７０１、ユーザ０７１０のいる場所に置かれているブローカサーバ０７０２、ユーザ０７１０のいる場所にあり、ブローカサーバ０７０２とフィールドネットワークで接続されている、機器１（０７０４）、機器２（０７０５）、機器３（０７０６）、機器４（０７０９）及び環境内の状況を把握するためのセンサ０７０７、ユーザ０７１０がサービスシナリオ配信サーバ０７０１やブローカサーバ０７０２と通信するためのアクセスポイント０７０８がある。またブローカサーバ０７０２はその場所にある機器に関する情報を格納している機器管理データベース０７０３を管理しており、ユーザによるサービス要求があれば、サービスシナリオ配信サーバ０７０１からサービスシナリオ０７１１を受信する。
【００３２】
図８は、本発明におけるサービスシステムの具体的サービスアプリケーションとしてビデオストリーミング配信サービスを提供する場合の、サービスシナリオの概要を示す図である。ビデオストリーミング配信サービスに必要な機能０８０２はビデオコンテンツを保存するための機能Ａ：ハードディスク、ストリーミング配信するための機能Ｂ：エンコーダ、映像を出力するための機能Ｃ：ディスプレイの３つであり、これらのリンク付け０８０３に関して、機能Ａは機能Ｂ、機能Ｂは機能ＡとＣ、機能Ｃは機能Ｂとなっており、０８０１に示すような機能の関係付けがされている。
【００３３】
図９は、本発明におけるブローカサーバが管理している、機器管理データベースに格納されている情報を示すテーブルである。主な構成要素はブローカサーバが管理している場所にある機器名０９０１、機器の有する機能名０９０２、機器の仕様や機能のインタフェースなどの属性０９０３、機器、機能をネットワーク上で識別するための識別子０９０４、機器の稼動状況などを示した状態０９０５である。ここで機能０９０２は機器０９０１に対して１つであるとは限らず機器によっては複数持つ場合もあり、機能ごとに属性０９０３、識別子０９０４、状態０９０５を記述できるものとする。これらの情報はブローカサーバが定期的に各機器の情報を取得したり、各機器からブローカサーバに対して定期的に機器の状態を報告することによって更新される。
【００３４】
ここでユーザ０７１０からのサービス要求により、サービスシナリオ配信サーバ０７０１はビデオストリーミング配信サービスのためのサービスシナリオ０７１１をブローカサーバ０７０２に送信する。ブローカサーバ０７０２においてサービスシナリオ０７１１に記載されている機能０８０２と機器管理データベース０７０３に格納されている機器情報（図９）とを照会することでサービス提供に必要な機能を有する機器を選出する。ここでは機能Ａ：ハードディスクを有するものとして機器１（０７０４）、機能Ｂ：エンコーダを有するものとして機器２（０７０５）、また機能Ｃ：ディスプレイを有するものとして機器３（０７０６）が選出される。ただしここで機能Ｃ：ディスプレイを有する機器には機器３（０７０６）と機器４（０７０９）の２種類存在するが、コンテキスト条件の１つとしてユーザ０７１０の位置を判断基準とした場合、ユーザ０７１０により近い位置にある機器３（０７０６）が機能Ｃ：ディスプレイを提供する機器として選出する。
【００３５】
サービス実行に使用する機器が選出されると、サービスシナリオ０７１１に記載されている機能０８０２のリンクにある機能を有する機器の識別子を機器管理データベース０７０３に格納されている識別子０９０４から抽出して、図６に示した使用機器の間での対応テーブルの項目にあるデータ受信元０６０５、データ送信先０６０６に格納する。このようにして作成した使用機器の間での対応テーブルを基にして機器の連携を行うことでサービスを提供する。
【００３６】
図１０は、本発明におけるサービス提供時に必要な使用機器の間での対応テーブルの具体的な利用方法を、サービスアプリケーションとしてビデオストリーミング配信サービスを提供する場合について示す図である。ここでビデオストリーミング配信サービスは図７〜９で取り上げたサービスと同様のものとし、使用機器の間での対応テーブルは図７〜９で述べた手順に従って作成したものを用いることとする。
【００３７】
ブローカサーバ１０１１にて使用機器の間での対応テーブル１００１が作成されると、ブローカサーバ１０１１より対応テーブル１００１に記載されている各機器１０１２、１０１３、１０１４に対してそれぞれに機器連携や動作に関するメッセージ１００２、１００３、１００４を送信する。これらのメッセージの内訳は対応テーブル１００１より各機器に関連する項目を抽出したもの（詳細は図１１）、及びサービス実行時の動作条件である。各機器１０１２、１０１３、１０１４はこれらのメッセージ１００２、１００３、１００４に基づいてサービス提供のための動作や機器間の連携を行う。
【００３８】
ビデオストリーミング配信サービスのために作成された使用機器の間での対応テーブル１００１によると、機器１（１０１２）のＰｒｏｃｅｓｓ１のデータの送信先の識別子は“Ａｄｄｒｅｓｓ２：Ｐｒｏｃｅｓｓ１”となっているため、機器２（１０１３）に送信することになる（１０２１）。また機器２（１０１３）のＰｒｏｃｅｓｓ１はデータ受信元が“Ａｄｄｒｅｓｓ１：Ｐｒｏｃｅｓｓ１”、データ送信先が  “Ａｄｄｒｅｓｓ３：Ｐｒｏｃｅｓｓ１”となっているため、前記のように機器１（１０１２）からのデータを受け取り（１０２１）、機器３（１０１４）に送信することになる（１０２２）。機器３（１０１４）ではＰｒｏｃｅｓｓ１のデータ受信元が“Ａｄｄｒｅｓｓ２：Ｐｒｏｃｅｓｓ１”となっているため、前記のように機器２（１０１３）からのデータを受け取り（１０２２）、データ送信先の欄は空白なので他の機器にデータ送信は行わない。
【００３９】
上記のような機器間の連携により、機器１（１０１２）のハードディスクに蓄積されたビデオデータが機器２（１０１３）においてエンコードされ、機器３（１０１４）に出力されることでビデオストリーミング配信サービスが実現される。
【００４０】
なおここでサービス実行中にコンテキストが変化した場合、使用する機器は動的に変更される。一例として、サービス実行中にユーザ１０３０が稼動中の機器３（１０１４）の近くから機器４（１０１５）に移動する、または機器３（１０１４）が故障した場合、テーブル１００１が更新されて、機器３（１０１４）の使用は中止されて、そのかわりに機器４（１０１５）が使用されるようになり、機器２（１０１３）からのデータ送信先は機器３（１０１４）から機器４（１０１５）に変更する。
【００４１】
図１１は、本発明におけるサービス提供時に使用機器の間での対応テーブルに基づいてブローカサーバから各機器に配信されるメッセージの内訳を示す図である。主な構成要素は使用する機能名１１０１、該機能が動作しているプロセスのＩＤ１１０２、該機能が受信するデータを送信している機能の識別子であるデータ受信元１１０３、該機能がデータを送信する宛先の機能の識別子であるデータ送信先１１０４、各機能または機器の起動や挙動に関する動作条件１１０５がある。このメッセージは機器構成に変化が生じた際にブローカサーバカから送信される。
【００４２】
図１２は、本発明におけるサービス提供時にサービスに必要な機器を動的に連携するためのミドルウェアの構成を示す図である。環境内にある機器１２１０にはサービス提供のためのアプリケーション１２０８とともに機器連携を行うためのミドルウェア１２０１が駐在している。ミドルウェア１２０１の主な構成要素は、サービス提供のための使用する機器の連携の対応テーブル１２０９を作成する機器連携作成部１２０２、サービスシナリオ及びサービスの実行を管理するサービス管理部１２０３、その場所におけるコンテキストを管理するコンテキスト管理部１２０４、機器の状態を管理する機器状態管理部１２０５、アプリケーション１２０８の出力データの送信先を機器連携やコンテキストに応じて決定するための宛先制御部１２０６がある。ここで機器連携の対応テーブル１２０９は図６で示したものである。また図７に示したシステム構成においてブローカサーバ０７０２及び機器管理データベース０７０３を除いたシステムに図７〜１１と同様に具体的アプリケーション例としてビデオストリーミング配信サービスとして、本ミドルウェアを適用すると、前記と同様に図１０に示すようなサービスアプリケーションの適用が可能となる。
【００４３】
サービス管理部１２０３は通信媒体１２０７を通じてサービスシナリオを受け取り、コンテキスト管理部は通信媒体１２０７を通じて環境内に設置したセンサ類などから情報を獲得し常にその場所のコンテキストの変化を監視している。また機器状態管理部１２０５は機器の稼動状況や使用状況等を管理する。
【００４４】
機器連携作成部１２０２はサービス管理部１２０３から受け取ったサービスシナリオを基にして、コンテキスト管理部１２０４より受け取ったコンテキスト情報に応じて、機器構成管理部０５０５より受け取った機器情報から、サービス提供のための機器連携の対応テーブル０５０９を作成する。またコンテキスト管理部１２０４は常にコンテキストの変化を管理しており、変化が生じる度に機器連携作成部１２０２において機器連携の対応テーブル０５０９の書き換えを行う。
【００４５】
宛先制御部１２０６はアプリケーション１２０８がデータを出力する毎に機器連携の対応テーブル０５０９を参照して宛先を割り当てからデータを送信することで、コンテキストの変化に応じた動的な機器連携を実現している。またここではミドルウェアにてアプリケーションの出力データの送信処理を行っているが、宛先制御部１２０６にて対応テーブルを参照して割り当てたアプリケーションの出力データの宛先をアプリケーションに返して、アプリケーション側で送信処理を行うという場合もある。
【００４６】
図１３は、本発明におけるサービス提供時にサービスに必要な機器を動的に連携するためのミドルウェアにおいて、アプリケーションの出力データの宛先を決定する際のフローチャートである。サービス提供に必要な機能を実現するための、各機器が有するアプリケーションがデータを出力する際には、必ず図１２のミドルウェア構成で示した宛先制御部１２０６に一旦送られ、コンテキストに応じた出力データの宛先の割当てが行われた上で割り当てられた宛先に送信される。このためアプリケーション設計時には出力データの宛先を考慮する必要がなく工数、開発の負担が軽減できる。
【００４７】
ＳＴ１３０１において、宛先制御部１２０６はアプリケーションよりデータ送信の宛先の要求を受ける。ＳＴ１３０２において、宛先制御部１２０６は機器連携の対応テーブル０５０９を参照する。ＳＴ１３０３において、対応テーブル０５０９を基にしてアプリケーションの出力データの宛先アドレスを決定する。ＳＴ１３０４において、アプリケーションに前項ＳＴ１３０３において決定した宛先アドレスに対してアプリケーションからの出力データを送信する。
【００４８】
図１４は、本発明におけるサービス提供時に同じ場所で複数のユーザが同時にサービスを受けている場合の機器、機能の管理の仕方について示す図である。ここでは５つの機器１４０１、１４０２、１４０３，１４０４、１４０５があり、それぞれ複数の機能（１４１１〜１４１３、１４２１〜１４２４、１４３１〜１４３４、１４４１〜１４４２、１４５１〜１４５３）を有している。ここでは２人のユーザに対して同時にサービスを提供しており、１人のユーザには機能１４１１、１４２２、１４３１、１４５２を組み合わせることでサービスを提供しており、他方のユーザは機能１４１３、１４３４、１４４２を組み合わせることでサービスを提供している。ここで機器３は２人のユーザで共用して利用することになるが、ユーザごとに機器連携の対応テーブルを持ちサービス実行を管理しているため、一方のユーザへのサービスが終了しても共用の機器３も操作権が開放されて、まだサービス提供中の他方のユーザへのサービスが中断されるということはない。
【００４９】
図１５は、本発明におけるサービス提供時にサービスに必要な機器を選定する際のフローチャートである。ＳＴ１５０１において、サービスシナリオに基づいてサービスに必要な機能を有する機器をローカルに探索する。ＳＴ１５０２において、探索の結果、サービスに必要な機能を有する機器が全て発見され、それらが使用可能である場合、ＳＴ１５０６においてサービスを実行する。一方ＳＴ１５０２において、サービスに必要な機能を有する機器が全て発見できなかった場合、ＳＴ１５０３において代替機器の探索を行う。ＳＴ１５０４において、探索した代替機器を補充して必要な機能を有する機器が全て揃った場合、ＳＴ１５０６においてサービスを実行する。なおここで提供するサービスはサービスシナリオに記述されるものと同程度のものである。ＳＴ１５０４において探索した代替機器を補充しても必要な機能を有する機器が全て揃わない場合、ＳＴ１５０５において、揃っている機能、機器だけでサービスを実行するために再構成し、ＳＴ１５０６においてサービスを実行する。ここでは揃った機器によりサービスの程度は制限される。
【００５０】
図１６は、本発明におけるサービス提供時における使用機器間の対応テーブルを作成する際のフローチャートである。ここで作成する使用機器間の対応テーブルは図６にて示したものであり、以下の説明における、０６０１〜０６０７は図６に示された０６０１〜０６０７に対応する。
【００５１】
ＳＴ１６０１において、サービスシナリオ、コンテキストに応じてサービス実行に使用する機器を選出する。ＳＴ１６０２において、選出した機器の中から、サービスに必要な機能（０６０１）と対応する機器（０６０２）、及びローカルな機器管理データベースまたは機器自身に問い合わせて取得した各機器の機器識別子（０６０３）をそれぞれ対応付けてテーブルに書き込む。ＳＴ１６０３において、ローカルな機器管理データベースまたは機器自身に問い合わせて、各機器において該機能を動作させるプロセスの識別子（０６０４）をテーブルに書き込む。ＳＴ１６０４において、サービスシナリオにおける機能間の入出力関係に関する記述を基にして、各機器に対するデータ受信元（０６０５）、データ送信先（０６０６）を抽出しテーブルに書き込む。ＳＴ１６０５において、ローカルな機器管理データベースまたは機器自身に問い合わせて機器、機能の実行状態（０６０７）をテーブルに書き込む。
【００５２】
図１７は、本発明におけるサービスシステムの具体的サービスアプリケーションとしてビデオストリーミング配信サービスを提供する場合のシステム構成図である。以下の図１８とともに、ローカルの機器に関する情報を保持する機器管理データベースがなく、サービスシナリオに対して機器間で探索することにより、サービス提供に必要な使用機器の間での対応テーブルをミドルウェアにて作成する手順について示す。
【００５３】
主な構成要素は、サービス提供のためのサービスシナリオを配信するサービスシナリオ配信サーバ１７０１、ユーザ１７０９のいる場所に置かれているブローカサーバ１７０６、ユーザ１７０９のいる場所にあり、ブローカサーバ１７０６とフィールドネットワークで接続されている、機器１（１７０２）、機器２（１７０３）、機器３（１７０４）、機器４（１７０５）及び環境内の状況を把握するためのセンサ１７０７、ユーザ１７０９がサービスシナリオ配信サーバ１７０１やブローカサーバ１７０６と通信するためのアクセスポイント１７０８がある。またはサービスシナリオ１７１１は図８で示したビデオストリーミング配信サービス用のサービスシナリオである。
【００５４】
ユーザ１７０９からのサービス要求により、サービスシナリオ配信サーバ１７０１からビデオストリーミング配信サービスのためのサービスシナリオ１７１１が送信される。送信されたサービスシナリオ１７１１は、ユーザ１７０９のいる場所にある機器で、サービスシナリオに記述された機能を有する機器のいずれかに最初にダウンロードされる。その後機器での情報のやり取りによりサービスシナリオ１７１１に基づいてサービス実行に必要な機器が選出され、それらの機器の間での対応テーブルが作成される。
【００５５】
図１８は、本発明におけるサービスシステムの具体的サービスアプリケーションとしてビデオストリーミング配信サービスを提供する場合の、サービスシナリオに基づいた使用機器の間での対応テーブルをミドルウェアにて作成する際の、機器間での処理の流れを示す図である。なお機器１（１８０１）、機器２（１８０２）、機器３（１８０３）、機器４（１８０４）は図１７の機器１（１７０２）、機器２（１７０３）、機器３（１７０４）、機器４（１７０５）に対応するものであり、機器１（１８０１）は図８に示すサービスシナリオに記述されている、機能Ａ：ハードディスクを、また機器２（１８０２）は機能Ｂ：エンコーダを、機器３（１８０４）と機器４（１８０５）は機能Ｃ：ディスプレイを有するものとする。
【００５６】
まず機器１（１８０１）にてサービスシナリオ配信サーバよりサービスシナリオをダウンロードする（１８１１）。ここで図８のサービスシナリオに記述されている機能０８０２、リンク０８０３によると、機能Ａ：ハードディスクは機能Ｂ：エンコーダとリンクしている。そこで機器１（１８０１）から機能Ｂ：エンコーダを有する機器を探索するためのメッセージをフィールドネットワーク内にブロードキャストする（１８１２）。機能Ｂ：エンコーダを有する機器２（１８０２）が上記メッセージを受け取る（１８２１）。機器２（１８０２）は上記メッセージに対して自らの識別子などの機器情報を含めて機器１（１８０１）に返信する（１８２２）。機器１（１８０１）は機器２（１８０２）からの応答メッセージを受け取ると、機器２（１８０２）に対してサービスシナリオと機器１（１８０１）の機器情報を送信する（１８１３）。ここで機器２（１８０２）が上記情報を受信すると（１８２３）、機器１（１８０１）と機器２（１８０２）の間でのデータのやり取りが可能となり、サービスシナリオに記述されていた機能Ａ：ハードディスクと機能Ｂ：エンコーダの間のリンクが確立できることになる。
【００５７】
次に機器２（１８０２）は機器１（１８０１）より受け取ったサービスシナリオ（図８）の記載に従って機能Ｂ：エンコーダとリンクのある機能でまだ発見されていない機能Ｃ：ディスプレイを有する機器の探索を行うためのメッセージをフィールドネットワーク内にブロードキャストする（１８２４）。機能Ｃ：ディスプレイを有する機器３（１８０３）、機器４（１８０４）が上記メッセージを受け取る（１８３１、１８４１）。ここで機器３（１８０３）、機器４（１８０４）は上記メッセージに対して自らの識別子などの機器情報を含めて機器２（１８０２）に返信する（１８３２、１８４２）。機器２（１８０２）は機器３（１８０３）  、機器４（１８０４）からの応答メッセージを受け取ると、機器３（１８０３）  、機器４（１８０４）のそれぞれに対してサービスシナリオと機器２（１８０２）の機器情報を送信する（１８２５）。
【００５８】
これにより機器２（１８０２）と機器３（１８０３）  、機器４（１８０４）の間でのデータのやり取りが可能となり、サービスシナリオ（図８）に記述されていた機能Ｂ：エンコーダと機能Ｃ：ディスプレイの間のリンクが確立できることになる。ただしここで、機能Ｃを有する機器が２つ選出されたが、位置というコンテキストによる条件に従って、ユーザ１７０９に近い位置にある機器３（１８０３）を使用するものとし（１８３４）、機器４（１８０４）の使用は放棄する（１８４４）。ここでユーザ１７０９の位置以外にも各機器の使用状況などのコンテキストにも応じて使用機器を選出することになる。
【００５９】
サービスシナリオ（図８）に記載されている機能０８０２を有する機器を選出していく過程で機能０８０２の間のリンクに基づいた使用機器の間での情報のやり取りの関係も確立されていくので、図１８に示す処理の流れに沿って図６に示した使用機器の間での対応テーブルの項目にあるデータ受信元０６０５、データ送信先０６０６に情報を格納していき、並行して対応テーブルを作成していく。このようにして作成した使用機器の間での対応テーブルを基にして機器の連携を行うことでサービスを提供する。
【００６０】
図１９は、本発明におけるサービスシステムの具体的サービスアプリケーションとして映像監視サービスを提供する場合の、サービスシナリオの概要を示す図である。映像監視サービスに必要な機能１９０２は、映像入力のための機能Ｄ：カメラ、カメラの映像を取り込むための機能Ｅ：ビデオキャプチャ、映像を表示するための機能Ｆ：ウェブ・ブラウザ、表示映像をユーザに出力するための機能Ｃ：ディスプレイの４つであり、これらのリンク付け１９０３に関して、機能Ｄは機能Ｅ、機能Ｅは機能ＤとＦ、機能Ｆは機能ＦとＣ、機能Ｃは機能Ｆとリンク付けされており、１９０１に示すような機能の関係付けがされている。
【００６１】
図２０は、本発明におけるサービスシステムにおいて、具体的サービスアプリケーションとしてビデオストリーミング配信サービスと映像監視サービスを、複数のユーザが同時にそれぞれのサービス提供を受ける場合にユーザ毎に機器連携を行う手順を示す図である。ここでサービスシナリオ２０３１、２０３２は、ビデオストリーミング配信サービス用は図８、映像監視サービス用は図１９で示したものとする。これらのサービスシナリオとコンテキストに基づいて図３に示す手順にて作成した使用機器間対応テーブルは図２１に示す。これらのテーブルはユーザα２０２１、ユーザβ２０２２の各自に対して図７、８、９または図１７、１８に関する記述にて示した手順により作成されたものであり、それぞれ独立して管理される。
【００６２】
ここで図２１に示す使用機器間対応テーブル２１０１、２１０２に基づいて、ユーザα２０２１にビデオストリーミング配信サービスを提供するために機能Ａ：ハードディスクを有する機器１（２０１１）、機能Ｂ：エンコーダを有する機器２（２０１２）、機能Ｃ：ディスプレイを有する機器３（２０１３）を使用する。またユーザβ２０２２に映像監視サービスを提供するために機能Ｄ：カメラを有するカメラ２０１７、機能Ｅ：ビデオキャプチャを有する機器２（）、機能Ｆ：ウェブ・ブラウザを有する機器１（２０１１）、機能Ｃ：ディスプレイを有する機器４（２０１４）を使用する。このため機器１（２０１１）、機器２（２０１２）は共用して使用することになる。
【００６３】
なおユーザα２０２１、ユーザβ２０２２に対して別々のインスタンスを生成し、使用機器間対応テーブル２１０１、２１０２を別々に管理しているため、それぞれ異なるサービスであっても同時に同一の機器を使用してユーザα２０２１、ユーザβ２０２２それぞれにサービスを提供することができる。また例えばユーザα２０２１が先にサービスを終了して使用機器を開放したとしても、共用していた機器１（２０１１）、機器２（２０１２）はまだユーザβ２０２２用のインスタンスがまだ保持し続けるため、ユーザβ２０２２はユーザα２０２１の状況に関わらずサービスを受けることができる。このようにして複数のユーザで機器を共用しても互いに干渉を及ぼすことなくそれぞれのサービスを受けることができる。
【００６４】
図２１は、本発明におけるサービスシステムの具体的サービスアプリケーションとしてビデオストリーミング配信サービス、映像監視サービスをそれぞれ異なるユーザに提供する場合に作成される各ユーザ用の使用機器間対応テーブルを示す図である。ここでユーザα用の使用機器間対応テーブル２１０１、ユーザβ用の使用機器間対応テーブル２１０２はそれぞれ図２０に示す環境において、ユーザα２０２１に図８に示したサービスシナリオによるビデオストリーミング配信サービスが提供され、ユーザβ２０２２に図１９に示したサービスシナリオによる映像監視サービスが提供される場合に図７、８、９または図１７、１８に関する記述にて示した手順により作成されたものである。
【００６５】
【発明の効果】
本発明によれば、サービスと機器を別々に管理することができるので、サービスの設計の際に実際に使用する機器について意識する必要がなくなる。また同じサービスを提供するのに同一の設備を用意しなくとも、負担なく多くの場所でサービスを提供でき、１つの場所で提供できるサービスのバリエーションを増やすこともできる。
【図面の簡単な説明】
【図１】本発明の一実施例の機器制御によるサービスを適用するシステムの構成図。
【図２】サービスシナリオの概念を説明する図。
【図３】サービスシナリオに基づいてローカルな場所でサービスを実行する際のフローチャート。
【図４】サービスを提供する際に使用する機器を選択する際に用いるコンテキストとそのコンテキストに基づく使用機器選択条件の例のテーブルを示す図。
【図５】サービス提供時にサービスに必要な機器を動的に連携するためのブローカサーバのソフトウェア構成を示す図。
【図６】サービス提供時に作成される使用機器間の対応テーブルを示す図。
【図７】ビデオストリーミング配信サービスを提供する場合のシステム構成図。
【図８】ビデオストリーミング配信サービスを提供する場合の、サービスシナリオの概要を示す図。
【図９】ブローカサーバが管理している、機器管理データベースに格納されている情報のテーブルを示す図。
【図１０】サービス提供時に必要な使用機器の間での対応テーブルの具体的な利用方法を、ビデオストリーミング配信サービスを提供する場合について示す図。
【図１１】サービス提供時に使用機器の間での対応テーブルに基づいてブローカサーバから各機器に配信されるメッセージの内訳を示す図。
【図１２】サービス提供時にサービスに必要な機器を動的に連携するためのミドルウェアの構成を示す図。
【図１３】サービス提供時にサービスに必要な機器を動的に連携するためのミドルウェアにおいて、アプリケーションの出力データの宛先を決定する際のフローチャート。
【図１４】サービス提供時に同じ場所で複数のユーザが同時にサービスを受けている場合の機器、機能の管理の仕方について示す図。
【図１５】サービス提供時にサービスに必要な機器を選定する際のフローチャート。
【図１６】サービス提供時における使用機器間の対応テーブルを作成する際のフローチャート。
【図１７】ビデオストリーミング配信サービスを提供する場合のシステム構成図。
【図１８】ビデオストリーミング配信サービスを提供する場合の、サービスシナリオに基づいた使用機器の間での対応テーブルをミドルウェアにて作成する際の、機器間での処理の流れを示す図。
【図１９】映像監視サービスを提供する場合の、サービスシナリオの概要を示す図。
【図２０】ビデオストリーミング配信サービスと映像監視サービスを、複数のユーザが同時にそれぞれのサービス提供を受ける場合にユーザ毎に機器連携を行う手順を示す図。
【図２１】ビデオストリーミング配信サービス、映像監視サービスをそれぞれ異なるユーザに提供する場合に作成される各ユーザ用の使用機器間対応テーブルを示す図。
【符号の説明】
０１５１…携帯端末、０１１１，０１１２…ブローカサーバ０１１１、０１１２、０１８１，０１８２…フィールドネットワーク、０１２１、０１２２、０１２３、０１２４、０１２５…機器、０１３１、０１３２…センサ類、０１４１、０１４２…アクセスポイント、０１７１…インターネット、０１０１…サービスシナリオ配信サーバ。
【図１】
2004192077.tif 000003
【図２】
2004192077.tif 000004
【図３】
2004192077.tif 000005
【図４】
2004192077.tif 000006
【図５】
2004192077.tif 000007
【図６】
2004192077.tif 000008
【図７】
2004192077.tif 000009
【図８】
2004192077.tif 000010
【図９】
2004192077.tif 000011
【図１０】
2004192077.tif 000012
【図１１】
2004192077.tif 000013
【図１２】
2004192077.tif 000014
【図１３】
2004192077.tif 000015
【図１４】
2004192077.tif 000016
【図１５】
2004192077.tif 000017
【図１６】
2004192077.tif 000018
【図１７】
2004192077.tif 000019
【図１８】
2004192077.tif 000020
【図１９】
2004192077.tif 000021
【図２０】
2004192077.tif 000022
【図２１】
2004192077.tif 000023