(57)【要約】【課題】デバイスの状態を監視する。【解決手段】情報処理装置は、接続されているデバイスを検索し、検索したデバイスにデバイス状態の購読要求を送信する。そして、情報処理装置は、デバイスを制御するコントローラから制御コマンドを受信したとき、受信した制御コマンドをデバイスに転送する。情報処理装置は、デバイスからデバイスの状態を示す状態変数値を受信すると、制御コマンドの送信先であるデバイスの識別情報と、受信した状態変数値とを関連付けて状態保持テーブルに格納する。【選択図】図１
2014183365.tif 000002
【特許請求の範囲】
【請求項１】
デバイスから、前記デバイスの状態が変化したとき、前記デバイスの状態を示す状態変数値を受信するための購読要求の宛先を示す第１の宛先情報と、前記デバイスを制御する制御コマンドの宛先を示す第２の宛先情報とを取得する監視部と、
前記デバイスを制御するコントローラから前記制御コマンドを受信し、かつ前記購読要求の宛先から前記状態変数値を受信する受信部と、
前記第１の宛先情報を指定して、前記購読要求を送信し、かつ前記第２の宛先情報を指定して、前記受信した制御コマンドを前記デバイスに送信する送信部と、
前記制御コマンドを送信したあとに、前記デバイスから状態変数値を受信すると、前記制御コマンドの送信先であるデバイスの識別情報と、前記受信した状態変数値とを関連付けて格納する状態保持テーブルを記憶する記憶部と、
を備えることを特徴とする情報処理装置。
【請求項２】
引継元のデバイスから引継先のデバイスに前記引継元のデバイスの状態を引き継ぐとき、前記状態保持テーブルを参照し、前記引継元のデバイスの識別情報に対応する状態変数値が示す状態に、前記引継先のデバイスの状態を変更させる引継部
を備えることを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記デバイスの識別情報と、前記送信した制御コマンドと、前記制御コマンドを送信したあとに、前記デバイスから受信した前記状態変数値とを関連付けて格納する状態指定テーブルを作成する推定部
を備え、
前記記憶部は、
前記状態指定テーブルを記憶し、
前記引継部は、
前記引継元のデバイスから前記引継先のデバイスにサービスの状態を引き継ぐとき、前記状態保持テーブルを参照し、前記引継元のデバイスの識別情報に関連付けられた状態変数値を抽出し、さらに前記状態指定テーブルを参照し、前記引継元のデバイスの識別情報と、前記抽出した状態変数値とに対応する制御コマンドを抽出し、前記送信部を制御して、前記抽出した制御コマンドを前記引継先のデバイスに送信させる
ことを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記記憶部は、さらに、
前記デバイスの識別情報と、前記引継先のデバイスに前記デバイスの状態を引き継ぐ条件を示す引継条件と、前記引継先のデバイスの宛先である第３の宛先情報と、を関連付けて格納する引継条件テーブルを記憶し、
前記引継部は、
前記引継条件の示す状態が発生したか否かを監視し、前記引継条件の示す状態が発生したとき、前記引継条件テーブルを参照し、前記引継条件に関連付けられたデバイスの識別情報を抽出し、前記状態保持テーブルを参照し、前記抽出したデバイスの識別情報に関連付けられた状態変数値を抽出し、さらに前記状態指定テーブルを参照し、前記抽出したデバイスの識別情報と、前記抽出した状態変数値とに対応する制御コマンドを抽出し、前記第３の宛先情報を指定して、前記抽出した制御コマンドを前記送信部から送信させる
ことを特徴とする請求項３に記載の情報処理装置。
【請求項５】
監視部は、
接続されているデバイスを検索し、
前記デバイスは、
前記検索部で検索されたデバイスである
ことを特徴とする請求項１〜４のいずれか一つに記載の情報処理装置。
【請求項６】
前記監視部は、
前記コントローラに対して、前記情報処理装置の宛先である第４の宛先情報を、前記コントローラから出力する前記制御コマンドの宛先として指定する
ことを特徴とする請求項１〜５のいずれか一つに記載の情報処理装置。
【請求項７】
前記監視部は、
前記デバイスに、前記デバイスが有する前記コントローラから出力する前記制御コマンドの宛先を、前記情報処理装置の宛先である第４の宛先情報に書き換える
ことを特徴とする請求項１〜５のいずれか一つに記載の情報処理装置。
【請求項８】
状態保持テーブルは、さらに
前記制御コマンドの送信元のコントローラの識別情報を、前記制御コマンドの送信先であるデバイスの識別情報と、前記デバイスから受信した状態変数値とに関連付けて格納し、
前記引継部は、
前記コントローラを発見したとき、前記状態保持テーブルを参照し、前記発見したコントローラの識別情報と関連付けられたデバイスの識別情報を抽出し、前記状態保持テーブルを参照し、前記抽出したデバイスの識別情報に関連付けられた状態変数値を抽出し、さらに前記状態指定テーブルを参照し、前記発見したコントローラの識別情報と関連付けられたデバイスの識別情報と、前記抽出した状態変数値とに対応する制御コマンドを抽出し、前記第３の宛先情報を指定して、前記抽出した制御コマンドを前記送信部から送信させる
ことを特徴とする請求項３に記載の情報処理装置。
【請求項９】
デバイスから、前記デバイスの状態が変化したとき、前記デバイスの状態を示す状態変数値を受信するための購読要求の宛先を示す第１の宛先情報と、前記デバイスを制御する制御コマンドの宛先を示す第２の宛先情報とを取得し、
前記第１の宛先情報を指定して、前記購読要求を送信し、
前記デバイスを制御するコントローラから前記制御コマンドを受信したとき、前記第２の宛先情報を指定して、前記受信した制御コマンドを送信し、
前記制御コマンドを送信したあとに、前記デバイスから状態変数値を受信すると、前記制御コマンドの送信先であるデバイスの識別情報と、前記受信した状態変数値とを関連付けて格納する状態保持テーブルを作成する
ことを特徴とする情報処理方法。
【請求項１０】
デバイスから、前記デバイスの状態が変化したとき、前記デバイスの状態を示す状態変数値を受信するための購読要求の宛先を示す第１の宛先情報と、前記デバイスを制御する制御コマンドの宛先を示す第２の宛先情報とを取得し、
前記第１の宛先情報を指定して、前記購読要求を送信し、
前記デバイスから、前記デバイスを制御する制御コマンドの宛先を示す第２の宛先情報を取得し、
前記デバイスを制御するコントローラから前記制御コマンドを受信したとき、前記第２の宛先情報を指定して、前記受信した制御コマンドを送信し、
前記制御コマンドを送信したあとに、前記デバイスから状態変数値を受信すると、前記制御コマンドの送信先であるデバイスの識別情報と、前記受信した状態変数値とを関連付けて格納する状態保持テーブルを作成する
処理をコンピュータに実行させることを特徴とする情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＵＰｎＰ（Ｕｎｉｖｅｒｓａｌ  Ｐｌｕｇ  ａｎｄ  Ｐｌａｙ）プロトコルを用いた通信方式に関する。
【背景技術】
【０００２】
近年、コンピュータを搭載した情報機器は、ＰＣ、スマートフォン、タブレット端末などのように多様化している。そして、ひとりのユーザが複数の情報機器を所有することが一般化している。
【０００３】
これにともない、パソコンで表示している画像や動画を、スマートフォンに引き継いで表示するなど、複数の情報機器を有するユーザの間では、情報機器で実行中の作業を他の情報機器に引き継いで実行することが要求されている。以下の説明において、作業を実行中の情報機器を引継元の情報機器、作業を引き継いで実行する情報機器を引継先の情報機器ともいう。
【０００４】
引継元の情報機器で実行していた作業を引き継いで引継先の情報機器で実行するためには、引継元の情報機器で行なわれている作業の実行状態を監視し、監視した作業の実行状態を引継先の情報機器に通知する。以下の説明において、引継元の情報機器の作業の実行状態を情報機器の状態ともいう。
【０００５】
そして、ＩＰネットワーク上で引継元の情報機器から引継先の情報機器へ状態を引き継ぐために、各情報機器の状態を監視するための通信プロトコルとして、ＵＰｎＰが知られている。以下の説明において、ＩＰネットワークのことをネットワークともいう。
【０００６】
ＵＰｎＰは、予め情報機器に特別な設定をしなくても、ネットワークに接続された様々な情報機器を制御したり、それらの状態を監視したりすることを可能にする通信プロトコルである。
【０００７】
ＵＰｎＰでは、制御される情報機器やソフトウェアのことをデバイスといい、デバイスが提供する機能のことをサービスという。また、ＵＰｎＰでは、デバイスを制御する情報機器やソフトウェアのことをコントローラやコントロールポイントという。
【０００８】
ＵＰｎＰの動作手順の一例を説明する。
ネットワークにデバイスやコントローラが接続されると、ＤＨＣＰ（Ｄｙｎａｍｉｃ  Ｈｏｓｔ  Ｃｏｎｆｉｇｕｒａｔｉｏｎ  Ｐｒｏｔｏｃｏｌ）により接続されたデバイスやコントローラにＩＰアドレスが割り当てられる。
【０００９】
すると、コントローラは、ネットワーク上のデバイスを検索するための通信プロトコルであるＳＳＤＰを用いて、ネットワーク上のデバイスを検索し、ネットワークに接続されているデバイスを把握する。ＳＳＤＰは、Ｓｉｍｐｌｅ  Ｓｅｒｖｉｃｅ  Ｄｉｓｃｏｖｅｒｙ  Ｐｒｏｔｏｃｏｌの略である。ＳＳＤＰを用いたコントローラによる接続されたデバイスの把握は、Ｍ‐Ｓｅａｒｃｈというマルチキャストパケットをコントローラからネットワーク上に発信し、デバイスから返信される応答メッセージをコントローラが確認することにより行なわれても良い。また、ＳＳＤＰを用いたコントローラによる接続されたデバイスの把握は、デバイスからコントローラに送信される定期的な広告（Ａｄｖｅｒｔｉｓｅ）を、コントローラが確認することにより行なわれても良い。このとき、コントローラは、デバイスからの通知により、デバイスのＩＰアドレスを取得する。以下の説明において、ネットワークに接続されていることを把握されたデバイスのことを、検索されたデバイスともいう。
【００１０】
コントローラは、検索されたデバイスからデバイス定義とサービス定義のＸＭＬ（Ｅｘｔｅｎｓｉｂｌｅ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）ファイルをダウンロードし、デバイスが提供する関数（アクション）と引数、およびサービスで用いられる状態変数の宣言を取得する。コントローラは、サービス定義に記述されたアクションの宣言に従い、ＳＯＡＰ（Ｓｉｍｐｌｅ  Ｏｂｊｅｃｔ  Ａｃｃｅｓｓ  Ｐｒｏｔｏｃｏｌ）コマンドをデバイス定義に記述されたサービスのＵＲＬ（例えば、後述するｃｏｎｔｒｏｌＵＲＬ）へ通知する。これにより、コントローラは、デバイスの制御を実行する。以下の説明において、ＳＯＡＰコマンドのことを、制御コマンドともいう。また、デバイスが提供する関数と引数とを取得することを、制御コマンドを取得するともいう。なお、ＳＯＡＰは、デバイスのコントロールを行なうための通信プロトコルである。
【００１１】
ＵＰｎＰでは、さらにデバイスの作業の実行状態を、状態変更などの状態を通知するための仕様であるＧＥＮＡ（Ｇｅｎｅｒａｌ  Ｅｖｅｎｔ  Ｎｏｔｉｆｉｃａｔｉｏｎ  Ａｒｃｈｉｔｅｃｔｕｒｅ）を用いて、デバイスからコントローラへ通知する仕組みを提供する。以下の説明において、デバイスの作業の実行状態のことをデバイスの状態ともいう。
【００１２】
ＵＰｎＰにおけるＧＥＮＡでは、コントローラがデバイスからダウンロードしたサービス定義のＸＭＬファイルを参照することにより、デバイスが有するサービスの中でサービスの実行状態を示す状態変数値を取得可能なサービスを把握する。そして、コントローラは、状態変数値を取得可能なサービスに対して状態の購読要求（Ｓｕｂｓｃｒｉｂｅ）を通知する。これにより、デバイスは、サービスの状態変数値が変化するごとに、デバイスから購読要求を行ったコントローラに対して状態変数値を通知するようになる。コントローラは、通知される状態変数値を確認することにより、デバイスが有する各サービスの実行状態を把握し、デバイスの状態を監視する。以下の説明において、サービスの実行状態のことを、サービスの状態ともいう。また、デバイスの状態とは、デバイスが有する各サービスの状態を組み合わせたものをいう。
【００１３】
以上のように、ＵＰｎＰを用いることにより、コントローラは、引継元のデバイスから引継先のデバイスに作業を引き継ぐとき、引継元のデバイスの状態を確認する。そして、コントローラは、制御コマンドを引継先のデバイスに送信し、引継元のデバイスの状態と引継先のデバイスの状態とを同じにする。これにより、コントローラは、デバイス間の作業の引き継ぎを実行する。
【００１４】
関連する技術として、リモートアプリ実行装置は、ＵＰｎＰを用いて、指定されたＵＲＩ（Ｕｎｉｆｏｒｍ  Ｒｅｓｏｕｒｃｅ  Ｉｄｅｎｔｉｆｉｅｒ）から表示装置の画面サイズや処理能力等の状態変数リストであるデバイス情報を取得する。そして、リモートアプリ実行装置は、表示装置と接続後に、状態変数リストにある状態変数の変化をイベントとして受け取る。これにより、リモートアプリ実行・表示環境において、リモートアプリ実行装置は、表示装置のアプリケーションの表示や操作状態を保ったまま異なる表示端末に表示・操作を移行するという技術が知られている（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【００１５】
【特許文献１】特開２００９−２８４３６０号公報
【発明の概要】
【発明が解決しようとする課題】
【００１６】
前述した情報処理技術では、コントローラにデバイスの状態を監視する機能が備わっているが、例えば、コントローラにデバイスの状態を監視する機能がない場合、デバイスの状態を監視することができないという問題がある。
【００１７】
上述した問題に鑑み、本明細書で後述する情報処理装置は、デバイスの状態を監視することを目的とする。
【課題を解決するための手段】
【００１８】
本明細書で開示する情報処理装置のひとつに、監視部と、受信部と、送信部と、記憶部とを備える情報処理装置がある。監視部は、デバイスから、デバイスの状態が変化したとき、デバイスの状態を示す状態変数値を受信するための購読要求の宛先を示す第１の宛先情報と、デバイスを制御する制御コマンドの宛先を示す第２の宛先情報とを取得する。受信部は、デバイスを制御するコントローラから制御コマンドを受信し、かつ購読要求の宛先から状態変数値を受信する。送信部は、第１の宛先情報を指定して、購読要求を送信し、かつ第２の宛先情報を指定して、受信した制御コマンドをデバイスに送信する。記憶部は、制御コマンドを送信したあとに、デバイスから状態変数値を受信すると、制御コマンドの送信先であるデバイスの識別情報と、受信した状態変数値とを関連付けて格納する状態保持テーブルを記憶する。
【発明の効果】
【００１９】
本明細書で後述する情報処理装置は、デバイスの状態を監視することができるという効果を奏する。
【図面の簡単な説明】
【００２０】
【図１】実施形態１の情報処理装置の一実施例を示す機能ブロック図である。
【図２】デバイス定義の一実施例を示す図である。
【図３】サービス定義の一実施例を示す図である。
【図４】状態保持テーブルのデータ例を表したテーブルである。
【図５】実施形態１の状態保持テーブルの作成の処理内容を示すフローチャートである。
【図６】状態変数値の受信の処理内容を示すフローチャートである。
【図７】コントローラによる制御コマンドの送信の処理内容を示すフローチャートである。
【図８】監視部による制御コマンドの転送の処理内容を示すフローチャートである。
【図９】実施形態２の情報処理装置の一実施例を示す機能ブロック図である。
【図１０】実施形態２の状態保持テーブルの作成の処理内容を示すフローチャートである。
【図１１】実施形態３の情報処理装置５００の一実施例を示す機能ブロック図である。
【図１２】状態指定テーブルのデータ例を表したテーブルである。
【図１３】引継条件テーブルのデータ例を表したテーブルである。
【図１４】制御コマンドと状態変数値とを紐付ける処理内容を示すシーケンス図である。
【図１５】制御コマンドと状態変数値とを紐付ける処理内容を示すシーケンス図である。
【図１６】制御コマンドと状態変数値とを紐付ける処理内容を示すシーケンス図である。
【図１７】監視部が制御コマンドと状態変数値とのペアをデバイスに通知する処理内容を示すフローチャートである。
【図１８】推定部による状態指定テーブルの作成の処理内容を示すフローチャートである。
【図１９】推定部による状態指定テーブルの作成の処理内容を示すフローチャートである。
【図２０】コントローラ発見時における引継部による引継の処理内容を示すフローチャートである。
【図２１】コントローラ発見時における引継部による引継の処理内容を示すフローチャートである。
【図２２】ネットワーク切断時における引継部による引継の処理内容を示すフローチャートである。
【図２３】実施形態１の情報処理装置を用いて、デバイスの状態を監視するシステム構成図である。
【図２４】実施形態１の情報処理装置を用いて、デバイスの状態を監視するシステム構成図である。
【図２５】実施形態１の情報処理装置を用いて、デバイスの状態を監視するシステム構成図である。
【図２６】実施形態１の情報処理装置を用いて、デバイスの状態を監視するシステム構成図である。
【図２７】実施形態１の情報処理装置を用いて、デバイスの状態を監視するシステム構成図である。
【図２８】実施形態２の情報処理装置を用いて、デバイスの状態を監視するシステム構成図である。
【図２９】実施形態３の情報処理装置の使用例を示すシーケンス図である。
【図３０】照明の引継処理で用いられるデータ例を示すテーブルである。
【図３１】実施形態３の情報処理装置の使用例を示す図である。
【図３２】情報処理装置の一実施例を示すブロック図である。
【発明を実施するための形態】
【００２１】
［実施形態１］
実施形態１の情報処理装置について説明する。
図１は、実施形態１の情報処理装置の一実施例を示す機能ブロック図である。
【００２２】
情報処理装置１００は、監視部１１０と、記憶部１２０とを有する。記憶部１２０は、状態保持テーブル１２１と、擬似デバイス定義１２２と、擬似サービス定義１２３とを有する。また、記憶部１２０は、図示しないが、デバイス３１０から取得したデバイス定義３２１と、サービス定義３２２とを記憶する。そして、情報処理装置１００は、情報機器２００と、情報機器３００との間に通信可能に接続され、図示しない送信器（送信部）と受信器（受信部）とを有する。情報処理装置１００と情報機器２００、情報処理装置１００と情報機器３００の接続は、通信可能であれば有線でもよいし無線でも良い。
【００２３】
また、情報機器２００は、例えば、ＵＰｎＰで用いられるコントローラ２１０である。そして、コントローラ２１０は、ＵＰｎＰの仕様にしたがって通信を行なう。コントローラ２１０は、例えば、情報機器３００を制御するためのＵＰｎＰ対応リモコンやＵＰｎＰ対応スマートフォンなどである。
【００２４】
情報機器３００は、例えば、ＵＰｎＰで用いられるデバイス３１０である。そして、デバイス３１０は、ＵＰｎＰの仕様にしたがって通信を行なう。デバイス３１０は、サービス３１１と、記憶部３２０とを有する。また、記憶部３２０は、デバイス定義３２１と、サービス定義３２２とを記憶する。そして、コントローラ２１０は、監視部１１０を介してデバイス３１０を制御する。デバイス３１０は、例えば、ＵＰｎＰ対応の照明器具、ＵＰｎＰ対応のプロジェクタ、またはＵＰｎＰ対応のＡＶ機器などである。
【００２５】
図２は、デバイス定義の一実施例を示す図である。
図２を参照して、デバイス定義３２１の中で、実施形態１で使用される記述を説明する。
【００２６】
デバイス定義３２１には、例えば、デバイスタイプと、サービスタイプと、ＳＣＰＤＵＲＬと、ｃｏｎｔｏｒｏｌＵＲＬと、ｅｖｅｎｔＳｕｂＵＲＬとが記述されている。
デバイスタイプ（ｄｅｖｉｃｅ  Ｔｙｐｅ）には、デバイス３１０の種類を示す情報が記述されている。
【００２７】
サービスタイプ（ｓｅｒｖｉｃｅ  Ｔｙｐｅ）には、デバイス３１０が有するサービス３１１の種類を示す情報が記述されている。なお、デバイス３１０にサービスが複数インストールされているときには、デバイス定義３２１に複数のサービスタイプが記述されることになる。
【００２８】
ＳＣＰＤＵＲＬ（Ｓｅｒｖｉｃｅ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ  Ｄｅｓｃｒｉｐｔｉｏｎ  ＵＲＬ）には、サービス定義３２２が格納されている場所を示すＵＲＬ（Ｕｎｉｆｏｒｍ  Ｒｅｓｏｕｒｃｅ  Ｌｏｃａｔｏｒ）が記述されている。なお、デバイス３１０にサービスが複数インストールされているときには、デバイス定義３２１に複数のＳＣＰＤＵＲＬが記述されることになる。
【００２９】
ｃｏｎｔｒｏｌＵＲＬには、サービス３１１のアクションを実行するために、制御コマンドを送信する宛先を示すＵＲＬが記述されている。なお、デバイス３１０にサービスが複数インストールされているときには、デバイス定義３２１に複数のｃｏｎｔｒｏｌＵＲＬが記述されることになる。
【００３０】
ｅｖｅｎｔＳｕｂＵＲＬには、状態変数通知を受信するためにサービス３１１に対して購読要求を通知する宛先を示すＵＲＬが記述されている。なお、デバイス３１０にサービスが複数インストールされているときには、デバイス定義３２１に複数のｅｖｅｎｔＳｕｂＵＲＬが記述されることになる。
【００３１】
なお、以下の説明において、デバイス３１０のＩＰアドレスには、前述したＭ‐Ｓｅａｒｃｈに対するデバイス３１０の応答に記述されているものを登録しても良い。デバイス３１０のＩＰアドレスには、デバイス３１０からコントローラ２１０に送信される定期的な広告（Ａｄｖｅｒｔｉｓｅ）に記述されているものを登録しても良い。また、デバイス３１０のＩＰアドレスには、ＳＣＰＤＵＲＬと、ｃｏｎｔｒｏｌＵＲＬと、ｅｖｅｎｔＳｕｂＵＲＬとのいずれかをＩＰアドレスで表現したものを登録しても良い。このとき、監視部１１０は、ＳＣＰＤＵＲＬと、ｃｏｎｔｒｏｌＵＲＬと、ｅｖｅｎｔＳｕｂＵＲＬとのいずれかについて、ネットワーク上で接続されたＤＮＳ（Ｄｏｍａｉｎ  Ｎａｍｅ  Ｓｙｓｔｅｍ）サーバからデバイス３１０のＩＰアドレスを取得しても良い。
【００３２】
図３は、サービス定義の一実施例を示す図である。
図３を参照して、サービス定義３２２の中で、実施形態１で使用される記述を説明する。
【００３３】
サービス定義３２２には、例えば、アクションと、アクション名と引数と、状態変数リストと、ｓｅｎｄＥｖｅｎｔｓと、状態変数名とが記述されている。
【００３４】
アクション（ａｃｔｉｏｎ）には、サービス３１１が提供する機能を示す情報が記述されている。
【００３５】
アクション名と引数には、サービス３１１のアクションに付けられた名前と、アクションの実行時に指定する引数の宣言を示す情報とが記述されている。
【００３６】
状態変数のリストには、サービス３１１が管理する状態変数の一覧を示す情報が記述されている。
【００３７】
ｓｅｎｄＥｖｅｎｔｓには、状態変数ごとに、購読要求の送信元のコントローラに対して、サービス３１１の状態が変化するごとに、状態変数値の通知を行なうか否かを示す情報が記述されている。なお、ｓｅｎｄＥｖｅｎｔｓにｙｅｓと記述された状態変数のみ、サービス３１１の状態が変化したときに、変更された状態変数値をコントローラに通知する。サービス３１１の状態が変化するとは、例えば、デバイス３１０がプロジェクタであるとき、プロジェクタがＯＦＦ状態からＯＮ状態に変化する、またはプロジェクタに表示するスライドの番号が変化するなどをいう。
状態変数名（ｎａｍｅ）には、状態変数を示す情報が記述されている。
【００３８】
以下、図１を参照して、情報処理装置１００が有する監視部１１０について説明する。
監視部１１０は、コントローラ２１０の代わりに、擬似的にコントローラの役割をする機能を有する。
監視部１１０が擬似的にコントローラの役割をするときの処理を説明する。
【００３９】
監視部１１０は、例えば、ＵＰｎＰの通信プロトコルであるＳＳＤＰを用いて、情報処理装置１００に接続されているデバイスを検索する。そして、監視部１１０は、検索されたデバイス３１０からデバイス定義３２１とサービス定義３２２とを取得する。また、監視部１１０は、図示しないが、デバイス３１０から取得したデバイス定義３２１とサービス定義３２２とを記憶部１２０に記憶する。なお、デバイス定義３２１とサービス定義３２２とは、監視部１１０が有する一次記憶装置であるキャッシュやメモリなどに保持されても良い。監視部１１０に接続されたデバイスが複数あるとき、監視部１１０は、ＳＳＤＰを用いて複数のデバイスを検索し、複数のデバイスがネットワーク上に接続されていることを把握する。
【００４０】
そして、監視部１１０は、取得したデバイス定義３２１に記述されているデバイス３１０の種類を示すデバイスタイプと、デバイス３１０が有するサービスの種類を示すサービスタイプとを関連付けて図４に示す状態保持テーブル１２１に格納する。以下の説明において、デバイス３１０のデバイスタイプと、デバイス３１０のサービスタイプとを合わせてデバイス３１０の識別情報ともいう。
【００４１】
さらに、監視部１１０は、デバイス３１０の識別情報と、デバイス３１０から取得したデバイス３１０のＩＰアドレスとを関連付けて状態保持テーブル１２１に格納する。そして、状態保持テーブル１２１は、記憶部１２０に記憶される。
【００４２】
さらに、監視部１１０は、デバイス３１０から取得したデバイス定義３２１に記述されているｃｏｎｔｒｏｌＵＲＬを、監視部１１０のＩＰアドレスに書き換えた擬似デバイス定義１２２を作成し、擬似デバイス定義１２２を記憶部１２０に記憶する。なお、監視部１１０は、デバイス３１０から取得したデバイス定義３２１に記述されているｃｏｎｔｒｏｌＵＲＬを、監視部１１０のＩＰアドレスに対応するＵＲＬに書き換えた擬似デバイス定義１２２を作成しても良い。
【００４３】
また、監視部１１０は、取得したサービス定義３２２を擬似サービス定義１２３として記憶部１２０に記憶する。なお、擬似デバイス定義１２２と擬似サービス定義１２３とは、監視部１１０が有する一次記憶装置であるキャッシュやメモリなどに保持されても良い。また、監視部１１０は、擬似デバイス定義１２２のＳＣＰＤＵＲＬを擬似サービス定義１２３が格納されている場所を示すＵＲＬに変更しても良い。
【００４４】
そして、監視部１１０は、ＳＳＤＰを用いて、ネットワーク上で接続されたコントローラ２１０に擬似デバイス定義１２２と擬似サービス定義１２３とを提供する。
【００４５】
すると、コントローラ２１０は、擬似デバイス定義１２２に記述されている監視部１１０のＩＰアドレスを、ネットワーク上で接続されたデバイスのｃｏｎｔｒｏｌＵＲＬであると認識する。
【００４６】
よって、コントローラ２１０は、制御コマンドを送信するとき、監視部１１０のＩＰアドレスを指定し、監視部１１０に制御コマンドを送信するようになる。このとき、コントローラ２１０は、制御コマンドと一緒に、擬似デバイス定義１２２に記述されているデバイス３１０の識別情報と、コントローラ２１０のＭＡＣ（Ｍｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ）アドレスとを監視部１１０に送信しても良い。また、制御コマンドには、デバイス３１０の識別情報と、コントローラ２１０のＭＡＣアドレスとが記述されていても良い。
【００４７】
監視部１１０は、コントローラ２１０から制御コマンドと、擬似デバイス定義１２２に記述されているデバイス３１０の識別情報と、コントローラ２１０のＭＡＣアドレスとを受信する。すると、監視部１１０は、状態保持テーブル１２１を参照して、受信したデバイス３１０の識別情報に関連付けられたデバイス３１０のＩＰアドレス（例えば、ｃｏｎｔｒｏｌＵＲＬ）を抽出する。そして、監視部１１０は、抽出したデバイス３１０のＩＰアドレスを指定して、制御コマンドを送信する。また、監視部１１０は、図４の状態保持テーブル１２１に示すように、受信したコントローラ２１０のＭＡＣアドレスを、コントローラ２１０から受信したデバイス３１０の識別情報に関連付けて格納しても良い。
【００４８】
また、監視部１１０は、送信した制御コマンドに対する応答をデバイス３１０から受信すると、受信した応答をコントローラ２１０に送信する。このとき、監視部１１０は、状態保持テーブル１２１を参照し、制御コマンドの送信先に対応するデバイス３１０の識別情報と、デバイス３１０のＩＰアドレスとに関連付けられたコントローラ２１０のＭＡＣアドレスを抽出する。そして、監視部１１０は、抽出したコントローラ２１０のＭＡＣアドレスを指定して受信した応答をコントローラ２１０に送信する。
【００４９】
以上の処理を行なうことにより、コントローラ２１０は、監視部１１０を介してサービス３１１との通信をする。このとき、監視部１１０は、デバイス３１０に制御コマンドを送信し、デバイス３１０から制御コマンドに対する応答を受信する。これにより、監視部１１０は、擬似的にコントローラとして機能する。
【００５０】
さらに、監視部１１０は、デバイス３１０の状態変数の通知を受信する機能を有する。
監視部１１０が状態変数の通知を受信する処理を説明する。なお、監視部１１０の状態変数の通知を受信する処理は、例えば、ＵＰｎＰのＧＥＮＡを用いて行なわれても良い。
【００５１】
監視部１１０は、ＳＳＤＰを用いて検索されたデバイス３１０に対して、サービスの状態変数値が変化するごとに、デバイス３１０からサービスの状態を示す状態変数値を受信するための購読要求を送信する。なお、監視部１１０に接続されたデバイスが複数あるとき、監視部１１０は、ＳＳＤＰを用いて複数のデバイスに購読要求を送信する。購読要求は、記憶部１２０に格納されているデバイス定義３２１に記述されたｅｖｅｎｔＳｕｂＵＲＬを宛先として送信しても良い。
【００５２】
購読要求を受信したデバイス３１０は、サービス３１１の状態が変化したとき、状態変数値を監視部１１０に送信する。このとき、デバイス３１０は、状態変数値と一緒に、デバイス定義３２１に記述されているデバイス３１０の識別情報と、ＩＰアドレスとを監視部１１０に送信しても良い。
【００５３】
監視部１１０は、デバイス３１０からデバイス３１０の識別情報と、ＩＰアドレスと、状態変数値とを受信すると、状態保持テーブル１２１を参照する。そして、監視部１１０は、受信したデバイス３１０の識別情報と、ＩＰアドレスとに対応する状態保持テーブル１２１のエントリのデバイス状態に、受信した状態変数値を格納する。
【００５４】
以上の処理を行なうことにより、監視部１１０は、デバイス３１０が有するサービス３１１の状態変数値の通知を受信し、デバイス３１０の状態を監視する。
【００５５】
これにより、監視部１１０は、デバイス３１０（引継元のデバイス）の状態を引継先のデバイスに引き継ぐとき、状態保持テーブル１２１を参照することによりデバイス３１０の状態を引継先のデバイスに通知することができる。
【００５６】
図４は、状態保持テーブルのデータ例を表したテーブルである。
図４は、情報処理装置１００の記憶部１２０が記憶する状態保持テーブル１２１を示す。以下、図４を参照して、状態保持テーブル１２１に格納されたデータについて説明する。以下の説明では、図１で説明した情報処理装置１００とコントローラ２１０とデバイス３１０とを一例として説明する。また、図４に示すように、状態保持テーブル１２１には、複数のデバイスの状態に対応するエントリが格納されても良い。
【００５７】
コントローラ２１０のＭＡＣアドレスは、コントローラ２１０に割当てられた物理アドレスである。コントローラ２１０のＭＡＣアドレスは、監視部１１０を介してコントローラ２１０からデバイス３１０に制御コマンドを送信するとき、制御コマンドとともに送信されても良い。そして、コントローラ２１０のＭＡＣアドレスは、監視部１１０で取得され、コントローラ２１０が制御するデバイス３１０の識別情報、およびデバイス３１０のＩＰアドレスに関連付けられて記憶される。
【００５８】
また、デバイス３１０を複数のコントローラが制御するときには、状態保持テーブル１２１の２行目のエントリに示すように、複数のコントローラのＭＡＣアドレスが格納されても良い。
【００５９】
デバイスタイプは、監視部１１０がＳＳＤＰで取得したデバイス３１０の図２を参照して説明したデバイス定義３２１に記述された情報である。
【００６０】
サービスタイプは、監視部１１０がＳＳＤＰで取得したデバイス３１０の図３を参照して説明したサービス定義３２２に記述された情報である。
【００６１】
デバイス状態は、監視部１１０が取得した、デバイス３１０の現在の状態を示す状態変数値を格納したものである。デバイス状態には、図３を参照して説明した状態変数名に状態変数値を関連付けて格納しても良い。
【００６２】
デバイス３１０のＩＰアドレスは、例えば、監視部１１０がＳＳＤＰを用いて取得したデバイス３１０のＩＰアドレスを示す。
【００６３】
最終更新時刻は、状態保持テーブル１２１のエントリの更新や、エントリが新規登録されたときの時刻を記録するセルである。
【００６４】
また、有効期間は、エントリを削除する時間を設定するための期間である。監視部１１０は、エントリを新たに更新することなく、最終更新時刻から有効期間が経過したとき、該当するエントリを削除する。なお、有効期間には、Ｍ‐Ｓｅａｒｃｈに対するデバイス３１０からの応答に記述されたＣＡＣＨＥ‐ＣＯＮＴＲＯＬが示す期間の値を記述しても良い。
【００６５】
図５は、状態保持テーブルの作成の処理内容を示すフローチャートである。
図５を参照して、監視部１１０による状態保持テーブル１２１のエントリ作成について説明する。さらに、図５を参照して、監視部１１０による擬似デバイス定義１２２と擬似サービス定義１２３との生成とを説明する。
【００６６】
以下の説明では、監視部１１０に接続されたコントローラとデバイスとが、図１に示すように、ＵＰｎＰに用いられるコントローラ２１０と、ＵＰｎＰに用いられるデバイス３１０とであるときを一例として説明する。なお、監視部１１０にコントローラとデバイスとが複数台接続されているとき、状態保持テーブル１２１のエントリ数が増加するが、監視部１１０による状態保持テーブル１２１の作成の処理内容は同じである。
【００６７】
監視部１１０は、例えば、ＵＰｎＰのＳＳＤＰを用いて、接続されたデバイスを検索する（Ｓ００１）。
【００６８】
監視部１１０は、検索したデバイス３１０からデバイス定義３２１とサービス定義３２２とを取得する（Ｓ００２）。そして、監視部１１０は、記憶部１２０にデバイス定義およびサービス定義を格納する。
【００６９】
監視部１１０は、Ｓ００２で取得したデバイス定義３２１に記述されたデバイスタイプとサービスタイプ（デバイス３１０の識別情報）とを参照する。そして、監視部１１０は、状態保持テーブル１２１に格納されているエントリの中から、取得したデバイス定義３２１に記述されたデバイス３１０の識別情報と、同じデバイス３１０の識別情報を有するエントリがあるか否かを判定する（Ｓ００３）。
【００７０】
監視部１１０は、取得したデバイス定義３２１に記述されたデバイス３１０の識別情報と、同じデバイス３１０の識別情報を有するエントリが状態保持テーブル１２１にないとき（Ｓ００３にてＮｏ）、状態保持テーブル１２１に新規のエントリを作成する（Ｓ００４）。なお、新規のエントリを作成するとき、監視部１１０は、取得したデバイス定義３２１に記述されたデバイスタイプと、サービスタイプと、デバイス３１０のＩＰアドレスとを関連付けて状態保持テーブル１２１に格納する。さらに、監視部１１０は、現在時刻を最終更新時刻として、新規のエントリに関連付けて格納する。また、監視部１１０は、Ｍ‐Ｓｅａｒｃｈの応答に記述されたＣＡＣＨＥ‐ＣＯＮＴＲＯＬが示す期間を有効期間として、新規のエントリに関連付けて格納する。このとき、コントローラ２１０のＭＡＣアドレスとデバイス状態は、空欄としておく。そして、後述するＳ００７の処理を実行する。
【００７１】
監視部１１０は、取得したデバイス定義３２１に記述されたデバイス３１０の識別情報と、同じデバイス３１０の識別情報を有するエントリが状態保持テーブル１２１にあるとき（Ｓ００３にてＹｅｓ）、そのエントリを抽出する。そして、監視部１１０は、抽出したエントリに格納されているデバイス３１０のＩＰアドレスと、取得したデバイス定義３２１に記述されているデバイス３１０のＩＰアドレスとが同じであるか否かを判定する（Ｓ００５）。監視部１１０は、抽出したエントリに格納されているデバイス３１０のＩＰアドレスと、取得したデバイス定義３２１に記述されているデバイス３１０のＩＰアドレスとが異なるとき（Ｓ００５にてＮｏ）、Ｓ００４の処理を実行する。このとき、監視部１１０は、ネットワーク上で接続されたデバイスの中で、デバイス３１０と同じサービス３１１を提供する他のデバイスがあるものと認識する。
【００７２】
監視部１１０は、抽出したエントリに格納されているデバイス３１０のＩＰアドレスと、取得したデバイス定義３２１に記述されているデバイス３１０のＩＰアドレスとが等しいとき（Ｓ００５にてＹｅｓ）、抽出したエントリの最終更新時刻を現在時刻で上書きする（Ｓ００６）。
【００７３】
そして、監視部１１０は、取得したデバイス定義のＳＣＰＤＵＲＬ、ｃｏｎｔｒｏｌＵＲＬ、ｅｖｅｎｔＳｕｂＵＲＬのいずれかが絶対パスで記述されているか否かを判定する（Ｓ００７）。監視部１１０は、取得したデバイス定義のＳＣＰＤＵＲＬ、ｃｏｎｔｒｏｌＵＲＬ、ｅｖｅｎｔＳｕｂＵＲＬのいずれかが絶対パスで記述されているとき（Ｓ００７にてＹｅｓ）、絶対パスを情報処理装置１００（監視部１１０）のアドレスに対応するＵＲＬ（情報処理装置１００のＩＰアドレス）に書き換える（Ｓ００８）。そして、Ｓ００９の処理を実行する。また、監視部１１０は、取得したデバイス定義のＳＣＰＤＵＲＬ、ｃｏｎｔｒｏｌＵＲＬ、ｅｖｅｎｔＳｕｂＵＲＬの全てが絶対パスで記述されていないとき（Ｓ００７にてＮｏ）、Ｓ００９の処理を実行する。Ｓ００７、Ｓ００８の処理を実行することにより、コントローラ２１０は、監視部１１０を介して制御コマンドをデバイス３１０に送信するようになる。すなわち、監視部１１０は、コントローラ２１０の制御コマンドの宛先を情報処理装置１００に指定している。
【００７４】
監視部１１０は、Ｓ００７、Ｓ００８の処理を実行して、生成した擬似デバイス定義１２２と擬似サービス定義１２３とをコントローラ２１０に通知する（Ｓ００９）。これにより、コントローラ２１０は、擬似デバイス定義１２２に記述されているＳＣＰＤＵＲＬ、ｃｏｎｔｒｏｌＵＲＬ、ｅｖｅｎｔＳｕｂＵＲＬを指定してデバイス３１０を制御するようになる。すなわち、コントローラ２１０からデバイス３１０への通信は、情報処理装置１００を介して行なわれるようになる。なお、擬似デバイス定義１２２に記述されているＳＣＰＤＵＲＬと、ｅｖｅｎｔＳｕｂＵＲＬとは、擬似サービス定義１２３の宛先に書き換えても良い。
【００７５】
図６は、状態変数値の受信の処理内容を示すフローチャートである。
図６を参照して、監視部１１０が状態変数値を取得するときの処理内容を説明する。以下の説明では、監視部１１０がデバイス３１０の状態変数値を取得する処理を一例として説明する。また、監視部１１０がＵＰｎＰのＧＥＮＡを用いて、デバイス３１０の状態変数値の取得をする例を一例として説明するが、通信に用いられる仕様はＧＥＮＡに限定されるものではない。
【００７６】
監視部１１０は、状態保持テーブル１２１を参照して、デバイス３１０のデバイス定義を記憶部１２０から取得する。そして、監視部１１０は、デバイス３１０のデバイス定義３２１からｅｖｅｎｔＳｕｂＵＲＬを読み出し、読み出したｅｖｅｎｔＳｕｂＵＲＬを指定して購読要求（Ｓｕｂｓｃｒｉｂｅ）を送信する（Ｓ１０１）。これにより、監視部１１０は、デバイス３１０に購読要求を送信する。
【００７７】
監視部１１０は、購読要求したデバイス３１０から現在の状態を表す状態変数値を受信する（Ｓ１０２）。これ以降、監視部１１０は、購読要求したデバイス３１０の状態が変化するごとに、デバイス３１０から状態変数値を受信する。
【００７８】
監視部１１０は、状態保持テーブル１２１のデバイス３１０に対応するエントリに、状態変数値を格納する（Ｓ１０３）。
【００７９】
以上の処理により、監視部１１０は、ネットワーク上で接続されたデバイス３１０から状態変数値を取得し、デバイス３１０の状態が変化するごとに状態変数値を更新する。これにより、監視部１１０は、デバイス３１０の状態を把握することができる。
【００８０】
図７は、コントローラによる制御コマンドの送信の処理内容を示すフローチャートである。
図７を参照して、コントローラ２１０がネットワーク上で接続されている擬似的なコントローラとなった情報処理装置１００を検索するときの処理内容を説明する。以下の説明では、コントローラ２１０がＵＰｎＰのＳＳＤＰを用いて、図１に示す擬似的なコントローラとなった情報処理装置１００を検索する例を一例として説明するが、通信プロトコルはＳＳＤＰに限定されるものではない。
【００８１】
コントローラ２１０は、ＳＳＤＰのＭ‐Ｓｅａｒｃｈを用いて、コントローラ２１０にネットワーク上で接続されたデバイスを検索する。すると、実施形態１では、図１に示すように、コントローラ２１０と情報処理装置１００とが接続されているので、情報処理装置１００からコントローラ２１０に応答が告知される。
【００８２】
すると、コントローラ２１０は、情報処理装置１００をネットワーク上で接続されたデバイスであると判断し、情報処理装置１００から擬似デバイス定義１２２と擬似サービス定義１２３とを取得する（Ｓ２０１）。
【００８３】
コントローラ２１０は、取得した擬似サービス定義１２３から制御コマンドの種類を把握する。そして、コントローラ２１０は、デバイス３１０の制御をするとき、擬似デバイス定義１２２に記述されているｃｏｎｔｒｏｌＵＲＬ（監視部１１０のＩＰアドレス）を指定して、要求する制御に対応する制御コマンドを送信する（Ｓ２０２）。これにより、制御コマンドは、情報処理装置１００（監視部１１０）に送信され、情報処理装置１００からデバイス３１０に転送される。
【００８４】
コントローラ２１０は、デバイス３１０から情報処理装置１００を介して、応答を受信する（Ｓ２０３）。このとき、コントローラ２１０は、デバイスに通知した制御コマンドに対応する応答（ＨＴＴＰ  ２００  ＯＫなど）を受信する。
【００８５】
以上の処理により、コントローラ２１０は、情報処理装置１００を介して制御コマンドをデバイス３１０に送信することができる。
【００８６】
図８は、情報処理装置による制御コマンドの転送の処理内容を示すフローチャートである。
図８を参照して、情報処理装置１００がコントローラ２１０から受信した制御コマンドをデバイス３１０に転送する処理内容を説明する。
【００８７】
情報処理装置１００の監視部１１０は、コントローラ２１０から制御コマンドを受信する（Ｓ３０１）。ここで、ＵＰｎＰにおいて、制御コマンドは、ＳＯＡＰコマンドである。
【００８８】
監視部１１０は、受信した制御コマンドに記述されたデバイス３１０の識別情報を読み出し、状態保持テーブル１２１に読み出したデバイス３１０の識別情報と同じデバイス３１０の識別情報が格納されているエントリがあるか否かを判定する（Ｓ３０２）。
【００８９】
監視部１１０は、状態保持テーブル１２１に受信した制御コマンドに記述されたデバイス３１０の識別情報と同じデバイス３１０の識別情報とが格納されているエントリがないとき（Ｓ３０２にてＹｅｓ）、制御コマンドを転送することができないことを示すエラー応答をコントローラ２１０に通知する（Ｓ３０３）。そして、監視部１１０は、制御コマンドの転送処理を終了する。
【００９０】
監視部１１０は、状態保持テーブル１２１に受信した制御コマンドに記述されたデバイス３１０の識別情報と同じデバイス３１０の識別情報が格納されているエントリがあるとき（Ｓ３０２にてＹｅｓ）、そのエントリを抽出する。そして、監視部１１０は、抽出したエントリのコントローラのＭＡＣアドレス欄に、制御コマンドと一緒に受信した、制御コマンドの送信元であるコントローラ２１０のＭＡＣアドレスを格納する（Ｓ３０４）。
【００９１】
監視部１１０は、抽出したエントリに格納されているデバイス３１０のｃｏｎｔｒｏｌＵＲＬを指定して、コントローラ２１０から受信した制御コマンドを送信する。これにより、監視部１１０は、コントローラ２１０から受信した制御コマンドをデバイス３１０に転送する（Ｓ３０５）。
【００９２】
監視部１１０は、デバイス３１０に送信した制御コマンドに対する応答を受信すると、抽出したエントリに格納されているＭＡＣアドレスを指定して、制御コマンドを送信する。これにより、監視部１１０は、デバイス３１０から受信した応答をコントローラ２１０に転送する（Ｓ３０６）。
【００９３】
そして、監視部１１０は、抽出したエントリの最終更新時刻を現在時刻に書き換える（Ｓ３０７）。
以上により、情報処理装置１００は、コントローラ２１０から受信した制御コマンドをデバイス３１０に転送する。
【００９４】
実施形態１で説明した情報処理装置１００では、コントローラ２１０とデバイス３１０との通信を転送することにより、デバイス３１０の状態を監視するようにした。これにより、コントローラ２１０にデバイス３１０の監視機能がなくても、デバイス３１０の状態を監視することができる。
【００９５】
［実施形態２］
実施形態２の情報処理装置４００について説明する。
実施形態２の情報処理装置４００は、実施形態１の情報処理装置１００で用いた擬似デバイス定義１２２と擬似サービス定義１２３とを省略した構成である。よって、情報処理装置１００と同じ構成要素などに関しては、同じ符号を付し、説明を省略する。
【００９６】
図９は、実施形態２の情報処理装置の一実施例を示す機能ブロック図である。
情報処理装置４００は、監視部４１０と、記憶部１２０とを有する。
監視部４１０は、デバイス３１０の記憶部３２０に記憶されているデバイス定義３２１のｃｏｎｔｒｏｌＵＲＬを書き換える機能を有する。
【００９７】
そして、監視部４１０は、デバイス３１０を検索し、検索されたデバイス３１０が有するデバイス定義３２１に記述されているｃｏｎｔｒｏｌＵＲＬを、監視部４１０のＩＰアドレスに書き換える。
【００９８】
これにより、コントローラ２１０から送信される制御コマンドは、監視部４１０で受信されることになる。そして、監視部４１０で受信した制御コマンドは、監視部１１０により、実施形態１と同じ処理が行われてデバイス３１０へ転送される。
【００９９】
図１０は、実施形態２の状態保持テーブルの作成の処理内容を示すフローチャートである。
図１０を参照して、監視部４１０による状態保持テーブル１２１のエントリ作成について説明する。さらに、図１０を参照して、監視部４１０によるデバイス定義３２１の書き換えを説明する。以下の説明では、監視部４１０に接続されたコントローラ２１０とデバイス３１０とが、図１に示すようにＵＰｎＰで用いられるコントローラ２１０とＵＰｎＰで用いられるデバイス３１０とであるときを一例として説明する。なお、監視部４１０にコントローラとデバイスとが複数台接続されているとき、状態保持テーブル１２１のエントリ数が増加するが、監視部４１０による状態保持テーブル１２１の作成の処理内容は同じである。
【０１００】
Ｓ４０１〜Ｓ４０６の処理は、それぞれ図５で説明したＳ００１〜Ｓ００６の処理と同じである。そして、Ｓ４０４、およびＳ４０６の処理の終了後、監視部４１０は、Ｓ４０７の処理を実行する。
【０１０１】
Ｓ４０７において、監視部４１０は、取得したデバイス定義３２１のｃｏｎｔｒｏｌＵＲＬのＵＲＬを監視部１１０のアドレスに置き換えて、新たなデバイス定義３２３を作成する。そして、監視部４１０は、デバイスの記憶部３２０に記憶されているデバイス定義３２１を、デバイス定義３２３で上書きする。
【０１０２】
これにより、コントローラ２１０は、情報処理装置４００を介して制御コマンドをデバイス３１０に送信するようになる。
【０１０３】
［実施形態３］
実施形態３の情報処理装置５００について説明する。
図１１は、実施形態３の情報処理装置５００の一実施例を示す機能ブロック図である。
【０１０４】
実施形態３は、実施形態１、または実施形態２の情報処理装置に、制御コマンドを推定する推定部と、引継元のデバイスから引継先のデバイスへデバイスの状態を引き継がせるための機能を有する引継部とを加えた構成である。これにより、実施形態３の情報処理装置は、引継元のデバイスから引継先のデバイスへ作業の実行状態を引き継ぐようにしたものである。以下の説明では、一例として、実施形態１の情報処理装置１００に推定部と、引継部とを加えた実施形態３の情報処理装置５００を一例として説明する。
【０１０５】
実施形態３の情報処理装置５００と接続される情報機器２００と、情報機器３００とは、実施形態１で説明した構成と同じであるので説明を省略する。なお、情報機器３００は、図示していないが、図１に示すように記憶部３２０と、デバイス定義３２１と、サービス定義３２２とを有する。
【０１０６】
実施形態３の情報処理装置５００は、監視部５１０と、推定部５２０と、引継部５３０と、記憶部５４０とを有する。記憶部５４０は、状態保持テーブル１２１と、状態指定テーブル５４１と、引継条件テーブル５４２とを記憶している。また、記憶部５４０は、図示しないが、実施形態１と同様に、デバイス３１０から取得したデバイス定義３２１と、サービス定義３２２と、擬似デバイス定義１２２と、擬似サービス定義１２３とを記憶する。そして、情報処理装置５００は、情報機器２００と、情報機器３００と、情報機器６００との間に通信可能に接続される。情報処理装置５００と情報機器２００、情報機器３００、および情報機器６００の接続は、通信可能であれば有線でもよいし無線でも良い。
【０１０７】
また、情報機器６００は、情報機器３００と同じ識別情報を持つデバイスであり、例えば、ＵＰｎＰで用いられるデバイス６１０である。そして、デバイス６１０は、ＵＰｎＰの仕様にしたがって通信を行なう。デバイス６１０は、サービス６１１と、図示しない記憶部６２０とを有する。記憶部６２０は、デバイス６１０のデバイス定義６２１と、サービス定義６２２とを記憶する。そして、コントローラ２１０は、監視部５１０を介してデバイス６１０を制御する。デバイス６１０は、例えば、ＵＰｎＰ対応の照明器具、ＵＰｎＰ対応のプロジェクタ、またはＵＰｎＰ対応ＡＶ機器などである。また、デバイス６１０は、デバイス３１０と同じ種類のデバイスであり、同じサービスを有するものとする。すなわち、デバイス定義３２１とデバイス定義６２１とに記述されているデバイスタイプとサービスタイプ（デバイスの識別情報）とが同じであるものとする。
【０１０８】
監視部５１０は、図１を用いて説明した監視部１１０と同じ機能を有する。すなわち、監視部５１０は、監視部１１０と同じ処理を行なうことにより、擬似的にコントローラの役割をする機能と、状態保持テーブル１２１のエントリを作成する機能と、制御コマンドをデバイス３１０に転送する機能とを有する。監視部５１０の擬似的にコントローラの役割をする機能と、状態保持テーブル１２１のエントリを作成する機能と、制御コマンドをデバイス３１０に転送する機能とについては、監視部１１０で説明した機能と同じであるので説明を省略する。
【０１０９】
さらに、監視部５１０は、監視部１１０が有する機能に加えて、デバイス３１０に制御コマンドを送信したとき、デバイス３１０から返信される状態変数値を、送信した制御コマンドと対応付けて推定部５２０に出力する機能を有する。以下の説明において、対応付けられた状態変数値と制御コマンドとペア情報ともいう。
【０１１０】
推定部５２０は、デバイス３１０とデバイス６１０とを所望の状態とするための制御コマンドを推定するものである。
推定部５２０は、図１２に示すように、監視部１１０から通知されたデバイス３１０に送信した制御コマンドと、デバイス３１０から通知された状態変数値とのペア情報を、状態指定テーブル５４１に格納する。そして、推定部５２０は、ペア情報が入力されるごとに、デバイス３１０の識別情報に対応付けて、ペア情報を状態指定テーブル５４１に格納する。以下の説明において、デバイス３１０に送信した制御コマンドと、状態変数値とのペア情報のことを、デバイス３１０のペア情報ともいう。
【０１１１】
図１２に示すように、状態指定テーブル５４１には、デバイス３１０に送信した制御コマンドと、デバイス３１０から応答として通知された状態変数値と、デバイス３１０の識別情報（デバイスタイプとサービスタイプ）が対応付けて格納される。また、状態指定テーブル５４１の１目のエントリの状態変数値のセルに格納されているＳｈｏｗＳｌｉｄｅは、状態変数名を示し、ｔｕｒｅは、状態変数値を示す。状態指定テーブル５４１の１行目のエントリの制御コマンドのセルに格納されているＳｔａｒｔＳｌｉｄｅＳｈｏｗは、コマンド名を示し、（＊）は、制御コマンドの引数を示す。なお、状態指定テーブル５４１の２行目以降のエントリについても、格納されているそれぞれの値の関係は、１行目のエントリと同じである。
【０１１２】
引継部５３０は、デバイスの状態の引継ぎを行なうときに、デバイス６１０に対して、制御コマンドを送信することによりデバイス３１０と、デバイス６１０とを同じ状態にする機能を有する。引継部５３０の引継処理に関しては、後述する。
【０１１３】
図１３に示すように、引継条件テーブル５４２には、デバイスタイプと、サービスタイプとに関連付けて、引継をする条件を示す引継条件と、接続するコントローラと、引継先デバイスとが格納されている。
【０１１４】
図１４〜図１６は、制御コマンドと状態変数値とを紐付ける処理内容を示すシーケンス図である。
図１４〜図１６を参照して、監視部５１０がデバイス３１０に制御コマンドを送信する処理と、デバイス３１０から状態変数値を受け取る処理を説明する。
【０１１５】
図１４は、監視部５１０が接続されているデバイス３１０に対し、制御コマンド（ＳＯＡＰコマンド）を転送してから設定した時間以内にコマンド応答（ＨＴＴＰ  ２００  ＯＫ）を受信した場合のシーケンスである。ＵＰｎＰの仕様において、例えば、デバイスは制御コマンド受信後に、３０秒以内にコマンド応答を返す必要がある。以下の説明において、設定した時間は、３０秒であるものとして説明する。
【０１１６】
監視部５１０は、コントローラ２１０から受信した制御コマンドをデバイス３１０に転送する（Ｓ５０１）。
【０１１７】
デバイス３１０は、制御コマンドを受信すると状態が変化する（Ｓ５０２）。
デバイス３１０は、変化した状態を示す状態変数値を監視部５１０に通知する（Ｓ５０３）。
そして、デバイス３１０は、コマンド応答を監視部５１０に送信する（Ｓ５０４）。
【０１１８】
監視部５１０は、３０秒以内にコマンド応答を受信すると、転送した制御コマンドによりデバイス３１０の状態が変化したとこにより、状態変数値が通知されたと判断する。そして、監視部５１０は、デバイス３１０に転送した制御コマンドと通知された状態変数値とをペア情報として紐付ける（Ｓ５０５）。そして、監視部５１０は、推定部５２０にデバイス３１０のペア情報を通知する。
【０１１９】
Ｓ５０４のデバイス３１０の状態がさらに変化したとき（Ｓ５０６）、監視部５１０は、コマンド応答の受信後にデバイス３１０から状態変数値を受信する（Ｓ５０７）。このとき、監視部５１０は、デバイス３１０の状態が制御コマンドの通知とは別の要因で変化したと判断し、制御コマンドと状態変数値との紐付けを行わない（Ｓ５０８）。
【０１２０】
図１５は、監視部５１０が接続されているデバイス３１０に対し、制御コマンドを転送してからエラーのコマンド応答（ＨＴＴＰ  ５００  Ｉｎｔｅｒｎａｌ  Ｓｅｒｖｅｒ  Ｅｒｒｏｒ）を受信した場合のシーケンスである。
【０１２１】
監視部５１０は、コントローラ２１０から受信した制御コマンドをデバイス３１０に転送する（Ｓ６０１）。
【０１２２】
デバイス３１０は、制御コマンドを受信すると状態が変化する（Ｓ６０２）。
デバイス３１０は、変化した状態を示す状態変数値を監視部１１０に送信する（Ｓ６０３）。
そして、デバイス３１０は、エラーのコマンド応答を監視部５１０に送信する（Ｓ６０４）。
【０１２３】
このとき、監視部５１０は、デバイス３１０が異常状態に陥っている可能性があるため、転送した制御コマンドと通知された状態変数値との紐付けを行わない（Ｓ６０５）。
【０１２４】
図１６は、監視部５１０が接続されているデバイス３１０に対し、制御コマンドを転送してから設定した時間以内にコマンド応答を受信しなかった場合のシーケンスである。ＵＰｎＰの仕様において、例えば、デバイスは、ＳＯＡＰコマンド受信後３０秒以内にコマンド応答を返す必要がある。以下の説明において、設定した時間は、３０秒であるものとして説明する。
【０１２５】
監視部５１０は、コントローラ２１０から受信した制御コマンドをデバイス３１０に転送する（Ｓ７０１）。
デバイス３１０は、制御コマンドを受信すると状態が変化する（Ｓ７０２）。
デバイス３１０は、変化した状態を示す状態変数値を監視部１１０に送信する（Ｓ７０３）。
【０１２６】
制御コマンドをデバイス３１０に転送してからコマンド応答が３０秒以上通知されないとき、監視部５１０は、デバイス３１０が異常状態に陥っている可能性があるため、転送した制御コマンドと通知された状態変数値との紐付けを行わない（Ｓ７０４）。
【０１２７】
図１７は、監視部が制御コマンドと状態変数値とのペアを引継部に通知する処理内容を示すフローチャートである。
図１７を参照して、監視部５１０が制御コマンドと状態変数値とを紐付けし、引継部５３０に通知する処理を説明する。Ｓ８０１〜Ｓ８０７は、図８を参照して説明したＳ３０１〜Ｓ３０７の処理と同じであるので説明を省略する。
【０１２８】
監視部５１０は、Ｓ８０７で、Ｓ８０２で抽出したエントリの最終更新時刻を現在時刻に書き換えると、Ｓ８０５のデバイス３１０への制御コマンドの送信から、Ｓ８０６のデバイス３１０からのコマンド応答の受信までの時間が３０秒以下であるか否かを判定する（Ｓ８０８）。
【０１２９】
デバイス３１０への制御コマンドの送信から、デバイス３１０からのコマンド応答の受信までの時間が３０秒よりも長いとき（Ｓ８０８にてＮｏ）、監視部５１０は、デバイス３１０のペア情報を引継部５３０に通知せずに処理を終了する。
【０１３０】
デバイス３１０への制御コマンドの送信から、デバイス３１０からのコマンド応答の受信までの時間が３０秒以下のとき（Ｓ８０８にてＹｅｓ）、監視部５１０は、コマンド応答の受信前に、デバイス３１０から状態変数値を受信したか否かを判定する（Ｓ８０９）。
【０１３１】
デバイス３１０から状態変数通知を受信したとき（Ｓ８０９にてＹｅｓ）、監視部５１０は、デバイス３１０のペア情報を推定部５２０に通知する（Ｓ８１０）。
【０１３２】
以上の処理により、監視部５１０は、デバイス３１０が制御コマンドにより状態を変化させたときにのみ、デバイス３１０のペア情報を推定部５２０に通知することができる。したがって、推定部５２０は、状態指定テーブル５４１に制御コマンドに対応するデバイス３１０の状態変数値の変化のみを格納することができる。
【０１３３】
図１８、図１９は、推定部による状態指定テーブルの作成の処理内容を示すフローチャートである。
推定部５２０は、監視部５１０からデバイス３１０のペア情報を受信する（Ｓ９０１）。
【０１３４】
そして、推定部５２０は、状態指定テーブル５４１のエントリの中に、受信したデバイス３１０のペア情報の制御コマンドのコマンド名と、状態変数値の状態変数名と、同じコマンド名と状態変数名とが格納されたエントリがあるか否か判定する（Ｓ９０２）。
【０１３５】
推定部５２０は、Ｓ９０２にてデバイス３１０のペア情報に対応するエントリがないと（Ｓ９０２にてＮｏ）、新規のエントリを登録する（Ｓ９０３）。そして、推定部５２０は、状態指定テーブルの作成処理を終了する。なお、Ｓ９０３において、推定部５２０は、例えば、コマンド名と引数、状態変数名と状態変数値、および状態変数値の送信元のデバイスの識別情報を、状態指定テーブル５４１に新規のエントリとして登録する。
【０１３６】
推定部５２０は、Ｓ９０２にてデバイス３１０のペア情報に対応するエントリがあると（Ｓ９０２にてＹｅｓ）、エントリを抽出する。そして、推定部５２０は、抽出したエントリに格納されている引数および状態変数値と、受信したペア情報が有するコマンドの引数および状態変数値とが同じであるか否かを判定する（Ｓ９０４）。
【０１３７】
推定部５２０は、抽出したエントリに格納されている引数および状態変数値と、受信したペア情報が有するコマンドの引数および状態変数値とが同じであるとき（Ｓ９０４にてＹｅｓ）、状態指定テーブル５４１の変更をしないで処理を終了する（Ｓ９０５）。
【０１３８】
推定部５２０は、抽出したエントリに格納されている引数および状態変数値と、受信したペア情報が有するコマンドの引数および状態変数値とが同じでないとき（Ｓ９０４にてＮｏ）、受信したペア情報の引数と状態変数値とを確認する。そして、推定部５２０は、受信したペア情報の引数と状態変数値とについて、Ｓ９０２で抽出したエントリに格納されている引数は異なるが状態変数値は同じであるか否かを判定する（Ｓ９０６）。
【０１３９】
推定部５２０は、受信したペア情報の状態変数値と、抽出したエントリの状態変数値とが同じとき（Ｓ９０６にてＹｅｓ）、Ｓ９０２で抽出したエントリの引数を、ワイルドカード（＊）として、エントリを上書き登録する（Ｓ９０７）。なお、ワイルドカードとは、対応付けられた制御コマンドにどのような引数をいれても、状態変数値は同じ状態になることを示す。
【０１４０】
以下、図１９を参照して説明する。
推定部５２０は、受信したペア情報の状態変数値と、抽出したエントリの状態変数値とが違うとき（Ｓ９０６にてＮｏ）、デバイス３１０のペア情報の引数と状態変数値とが同じであるか否かを判定する（Ｓ９０７）。すなわち、Ｓ９０２で抽出したエントリと状態変数値が異なり、かつデバイス３１０のペア情報の引数と状態変数値とが同じであるか否かを判定する。
【０１４１】
推定部５２０は、デバイス３１０のペア情報の引数と状態変数値とが同じであるとき（Ｓ９０８にてＹｅｓ）、Ｓ９０２で抽出したエントリの引数と状態変数値とについて、等しいというマーク（Ａ）をつけてエントリを上書き登録する（Ｓ９０９）。そして、推定部５２０は、状態指定テーブル５４１の変更処理を終了する。
【０１４２】
推定部５２０は、デバイス３１０のペア情報の引数と状態変数値とが同じでないとき（Ｓ９０８にてＮｏ）、Ｓ９０２で抽出したエントリに状態変数の差が格納されているか否かを判定する（Ｓ９１０）。
【０１４３】
推定部５２０は、Ｓ９０２で抽出したエントリに状態変数の差が格納されていないとき（Ｓ９１０にてＮｏ）、Ｓ９０２で抽出したエントリの状態変数値と、通知された状態変数値との値の差を、状態変数値の差としてエントリに格納する。さらに、推定部５２０は、Ｓ９０２で抽出したエントリに記録されていた状態変数値を初期の状態変数値として格納する（Ｓ９１１）。すなわち、受信したデバイス３１０のペア情報の制御コマンドは、デバイス３１０に送信するごとに、一定の値を前回の状態変数値に加算していく制御コマンドである。
【０１４４】
推定部５２０は、Ｓ９０２で抽出したエントリに状態変数の差が格納されているとき（Ｓ９１０にてＹｅｓ）、Ｓ９０２で抽出したエントリの状態変数値と、受信したペア情報の状態変数値との差が、エントリに記録された状態変数値の差と等しいか否かを判定する（Ｓ９１２）。
【０１４５】
推定部５２０は、Ｓ９０２で抽出したエントリの状態変数値と、受信したペア情報の状態変数値との差が、エントリに記録された状態変数値の差と等しいとき（Ｓ９１２にてＹｅｓ）、状態指定テーブル５４１の変更をしないで状態指定テーブル５４１の変更処理を終了する。
【０１４６】
推定部５２０は、Ｓ９０２で抽出したエントリの状態変数値と、受信したペア情報の状態変数値との差が、エントリに記録された状態変数値の差と異なるとき（Ｓ９１２にてＮｏ）、Ｓ９０２で抽出したエントリを削除して、状態指定テーブル５４１の変更処理を終了する。このとき、推定部５２０は、制御コマンドと状態変数値との関連を推定できなかったので、エントリを削除している。
【０１４７】
以上の処理を行うことにより、推定部５２０は、どのような制御コマンドをデバイス３１０に送信することにより、デバイス３１０の状態変数値がどのように変化するのかを推定することができる。
【０１４８】
図２０、図２１は、コントローラ発見時における引継部による引継の処理内容を示すフローチャートである。
図２０、図２１を参照して、コントローラを引継部５３０が発見した時の引継元から引継先へのデバイスの状態の引継について説明する。
【０１４９】
引継部５３０は、Ｍ‐Ｓｅａｒｃｈを発信するコントローラがあるか否かを判定する（Ｓ１００１）。そして、引継部５３０は、Ｍ‐Ｓｅａｒｃｈを発信するコントローラが発見されるまで、Ｓ１００１の処理を繰り返す（Ｓ１００１にてＮｏ）。なお、引継部５３０は、Ｍ‐Ｓｅａｒｃｈを受信したとき、Ｍ‐Ｓｅａｒｃｈを発信しているコントローラがあると判定する。
【０１５０】
引継部５３０は、Ｍ‐Ｓｅａｒｃｈを発信するコントローラを発見する（Ｓ１００１にてＹｅｓ）。すると、引継部５３０は、引継条件テーブル５４２の引継条件がコントローラ発見時であるエントリの中で、状態保持テーブル１２１の各エントリの識別情報のいずれかと、同じデバイス情報を持つエントリがあるか否かを判定する（Ｓ１００２）。
【０１５１】
引継部５３０は、引継条件テーブル５４２の引継条件がコントローラ発見時であるエントリの中で、状態保持テーブル１２１の各エントリの識別情報のいずれかと、同じデバイス情報を持つエントリがないとき（Ｓ１００２にてＮｏ）、引継処理を終了する。
【０１５２】
引継部５３０は、引継条件テーブル５４２の引継条件がコントローラ発見時であるエントリの中で、状態保持テーブル１２１の各エントリの識別情報のいずれかと、同じデバイス情報を持つエントリがあるとき（Ｓ１００２にてＹｅｓ）、各エントリを抽出する。ここで、各エントリとは、Ｓ１００２の判定において、同じデバイスの識別情報を有する引継条件テーブル５４２のエントリと、状態保持テーブル１２１のエントリのことである。そして、引継部５３０は、抽出した引継条件テーブル５４２のエントリの接続元コントローラの条件が発見したコントローラであるか否かを判定する（Ｓ１００３）。
【０１５３】
引継部５３０は、Ｓ１００２で抽出した引継条件テーブル５４２のエントリの接続元のコントローラの条件が発見したコントローラでないとき（Ｓ１００３にてＮｏ）、Ｓ１００５の処理を実行する。
【０１５４】
引継部５３０は、Ｓ１００２で抽出した引継条件テーブル５４２のエントリの接続元のコントローラの条件が発見したコントローラであるとき（Ｓ１００３にてＹｅｓ）、発見したコントローラのＭＡＣアドレスを参照する。なお、発見したコントローラのＭＡＣアドレスは、Ｍ‐Ｓｅａｒｃｈに含まれていても良い。そして、引継部５３０は、Ｍ‐Ｓｅａｒｃｈを受信することにより、発見したコントローラのＭＡＣアドレスを取得しても良い。
【０１５５】
引継部５３０は、発見したコントローラのＭＡＣアドレスが、Ｓ１００２で抽出した状態保持テーブル１２１のエントリに記述されたＭＡＣアドレスと同じであるかを判定する（Ｓ１００４）。
【０１５６】
引継部５３０は、発見したコントローラのＭＡＣアドレスが、Ｓ１００２で抽出した状態保持テーブル１２１のエントリに記述されたＭＡＣアドレスと同じでないとき（Ｓ１００４にてＮｏ）、引継処理を終了する。
【０１５７】
引継部５３０は、発見したコントローラのＭＡＣアドレスが、Ｓ１００２で抽出した状態保持テーブル１２１のエントリに記述されたＭＡＣアドレスと同じとき（Ｓ１００４にてＹｅｓ）、Ｓ１００５の処理を実行する。
【０１５８】
図２１を参照して説明する。
引継部５３０は、Ｓ１００２で抽出した状態保持テーブル１２１のエントリからデバイス状態を取得する（Ｓ１００５）。
【０１５９】
そして、引継部５３０は、状態指定テーブル５４１に、Ｓ１００２で抽出した引継条件テーブル５４２のエントリとデバイスの識別情報が同一、かつＳ１００５で取得したデバイス状態にデバイスの状態を変化させるエントリがあるか否かを判定する（Ｓ１００６）。
【０１６０】
引継部５３０は、状態指定テーブル５４１に、Ｓ１００２で抽出したエントリとデバイスの識別情報が同一、かつＳ１００５で取得したデバイス状態にデバイスの状態を変化させるエントリがないとき（Ｓ１００６にてＮｏ）、引継処理を終了する。
【０１６１】
また、引継部５３０は、状態指定テーブル５４１に、Ｓ１００２で抽出したエントリとデバイスの識別情報が同一、かつＳ１００５で取得したデバイス状態にデバイスの状態を変化させるエントリがあるとき（Ｓ１００６にてＹｅｓ）、Ｓ１００７の処理を実行する。
【０１６２】
引継部５３０は、Ｓ１００２で抽出した引継条件テーブル５４２のエントリの引継先デバイスが同サブネットのデバイスであるか否かを判定する（Ｓ１００７）。
【０１６３】
引継部５３０は、Ｓ１００２で抽出した引継条件テーブル５４２のエントリの引継先デバイスが同サブネットのデバイスであるとき（Ｓ１００７にてＹｅｓ）、Ｍ−Ｓｅａｒｃｈを発信する。そして、引継部５３０は、Ｓ１００２で抽出した引継条件テーブル５４２のエントリと同じデバイスの識別情報を持つデバイスがあるか否かを判定する（Ｓ１００８）。
【０１６４】
引継部５３０は、Ｓ１００２で抽出した引継条件テーブル５４２のエントリと同じデバイスの識別情報を持つデバイスが発見されないとき（Ｓ１００８にてＮｏ）、引継処理を終了する。
【０１６５】
引継部５３０は、Ｓ１００２で抽出した引継条件テーブル５４２のエントリと同じデバイスの識別情報を持つデバイスが発見されたとき（Ｓ１００８にてＹｅｓ）、Ｓ１０１０の処理を実行する。
【０１６６】
引継部５３０は、Ｓ１００２で抽出した引継条件テーブル５４２のエントリの引継先デバイスが同サブネットのデバイスでないとき（Ｓ１００７にてＮｏ）、Ｍ−Ｓｅａｒｃｈを発信する。このとき、Ｓ１００２で抽出した引継条件テーブル５４２のエントリの制御コマンドのセルには、引継先のデバイスのＩＰアドレスが格納されているものとする。
【０１６７】
そして、引継部５３０は、Ｓ１００２で抽出した引継条件テーブル５４２のエントリのＩＰアドレスにデバイスが発見され、かつ発見したデバイスの識別情報がＳ１００２で抽出した引継条件テーブル５４２のエントリに格納されているものと同じであるかを判定する（Ｓ１００９）。
【０１６８】
引継部５３０は、Ｓ１００９において、デバイスが発見されない、または発見されたデバイスの識別情報が引継条件テーブル５４２のエントリに格納されているものと異なるとき（Ｓ１００９にてＮｏ）、引継処理を終了する。
【０１６９】
引継部５３０は、Ｓ１００９において、デバイスが発見され、かつ発見されたデバイスの識別情報が引継条件テーブル５４２のエントリに格納されているものと同じとき（Ｓ１００９にてＹｅｓ）、Ｓ１０１０の処理を実行する。
【０１７０】
Ｓ１０１０において、引継部５３０は、Ｓ１００６で抽出した状態指定テーブル５４１のエントリから制御コマンドを取得し、制御コマンドをＳ１００８またはＳ１００９で発見したデバイスに対して通知する（Ｓ１０１０）。
【０１７１】
そして、引継部５３０は、Ｓ１００２で抽出した状態保持テーブル１２１のエントリのデバイスのＩＰアドレスを、Ｓ１００８またはＳ１００９で発見したデバイスのＩＰアドレスに書き換える（Ｓ１０１１）。
【０１７２】
以上の引継処理を行なうことにより、引継部５３０は、コントローラが発見されたとき、引継元のデバイスから引継先のデバイスへデバイスの状態を引き継ぐことができる。
【０１７３】
図２２は、ネットワーク切断時における引継部による引継の処理内容を示すフローチャートである。
図２２を参照して、監視部５１０と引継元のデバイスとのネットワークが切断した時における引継元から引継先へのデバイスの状態の引継について説明する。
【０１７４】
引継部５３０は、監視部５１０が状態保持テーブルのエントリにあるデバイスのＩＰアドレスへの通信に失敗した、または、デバイスからの通知が一定時間無いかを判定する（Ｓ１１０１）。すなわち、引継部５３０は、監視部５１０とのネットワーク接続が切断されたデバイスがあるか否かを判定している。
【０１７５】
引継部５３０は、監視部５１０とのネットワーク接続が切断されたデバイスがないとき（Ｓ１１０１にてＮｏ）、Ｓ１１０１の処理を繰り返す。
【０１７６】
引継部５３０は、監視部５１０とのネットワーク接続が切断されたデバイスがあるとき（Ｓ１１０１にてＹｅｓ）、ネットワーク接続が切断されたデバイスの識別情報を取得する。なお、ネットワーク接続が切断されたデバイスの識別情報は、監視部５１０でデバイスが接続されたとき取得し、保持しているものを取得しても良い。
【０１７７】
そして、引継部５３０は、引継条件テーブル５４２に、引継条件テーブルの引継条件が
引継元デバイスネットワーク切断時であるエントリの中で、状態保持テーブルの各エントリの識別情報のいずれかと、同じデバイス情報を持つエントリがあるか否かを判定する（Ｓ１１０２）。
【０１７８】
引継部５３０は、引継条件テーブル５４２の引継条件が引継元デバイスネットワーク切断時であるエントリの中で、状態保持テーブル１２１の各エントリの識別情報のいずれかと、同じデバイス情報を持つエントリがないとき（Ｓ１１０２にてＮｏ）、引継処理を終了する。
【０１７９】
引継部５３０は、引継条件テーブル５４２の引継条件が引継元デバイスネットワーク切断時であるエントリの中で、状態保持テーブル１２１の各エントリの識別情報のいずれかと、同じデバイス情報を持つエントリがあるとき（Ｓ１１０２にてＹｅｓ）、各エントリを抽出する。ここで、各エントリとは、Ｓ１１０２の判定において、同じデバイスの識別情報を有する引継条件テーブル５４２のエントリと、状態保持テーブル１２１のエントリのことである。
【０１８０】
そして、Ｓ１００２をＳ１１０２に置き換えて、図２０のＳ１００３〜図２１の１０１１の処理を実行する。
【０１８１】
以上の引継処理を行なうことにより、引継部５３０は、監視部５１０と引継元のデバイスとのネットワークが切断した時、引継元のデバイスから引継先のデバイスへデバイスの状態を引き継ぐことができる。
【０１８２】
以下では、各実施形態の情報処理装置を用いるシステム構成を説明する。
図２３〜図２７は、実施形態１の情報処理装置を用いて、デバイスの状態を監視するシステム構成図である。
【０１８３】
図２３のネットワーク構成例では、コントローラ２１０、引継先のデバイス６１０、情報処理装置１００がスイッチ７００を介して接続され、同一のネットワーク（ブロードキャストドメイン）に属している。そして、引継元のデバイス３１０は、情報処理装置１００の配下のデバイスとして接続されている。
【０１８４】
図２３のネットワーク構成例では、引継元のデバイス３１０を情報処理装置１００の配下として接続することにより、情報機器２００からのＳＳＤＰによる広告をコントローラ２１０が受信しないようにする。これにより、引継元のデバイス３１０のＳＳＤＰの広告と、擬似デバイス定義１２２と擬似サービス定義１２３をもつ情報処理装置１００による広告とを、コントローラ２１０が重複して受信することを防止する。そして、コントローラ２１０は、情報処理装置１００を引継元のデバイス３１０と同一のものとして認識して、制御コマンドを通知し、透過的に引継元のデバイス３１０を制御することを可能にしている。
【０１８５】
図２４のネットワーク構成例では、情報処理装置１００、引継元のデバイス３１０、引継先のデバイス６１０がスイッチ７００を介して同一のネットワーク上に属し、コントローラ２１０が情報処理装置１００に直接接続されているものである。図２３の例と同様に、このような接続形態により、引継元のデバイス３１０のＳＳＤＰの広告と、擬似デバイス定義１２２と擬似サービス定義１２３をもつ情報処理装置１００による広告を、コントローラ２１０が重複して受信することを防止する。これにより、図２４のネットワーク構成例では、コントローラ２１０が情報処理装置１００を介して透過的に引継元のデバイス３１０を制御することを可能にしている。
【０１８６】
図２５のネットワーク構成例では、コントローラ２１０、引継元のデバイス３１０、引継先のデバイス６１０がスイッチ７００を介して同一ネットワーク上に属し、スイッチ７００上に情報処理装置１００を搭載させたものである。このとき、スイッチ７００はＳＳＤＰによる広告のマルチキャスト（宛先  ２３９．２５５．２５５．２５０）のメッセージを、情報処理装置１００が発信したものを除いて、通過させないようにする設定をする。これにより、引継元のデバイス３１０のＳＳＤＰの広告と、擬似デバイス定義１２２と擬似サービス定義１２３をもつ情報処理装置１００による広告を、コントローラ２１０が重複して受信することを防止する。そして、図２５のネットワーク構成例では、コントローラ２１０が情報処理装置１００を介して透過的に引継元のデバイス３１０を制御することを可能にしている。
【０１８７】
図２６のネットワーク構成例は、コントローラ２１０と引継元のデバイス３１０とが同一ネットワーク上にあり、引継先のデバイス６１０がルーター９００を超えた別のネットワーク上にあるという環境である。そして、情報処理装置１００は、ルーター９００上に搭載されている。また、ルーター９００および各スイッチ７００、８００は、ＳＳＤＰによる広告のマルチキャスト（宛先 ２３９．２５５．２５５．２５０）のメッセージを、情報処理装置１００が発信したものを除いて、通過させないようにする設定をする。これにより、引継元のデバイス３１０のＳＳＤＰの広告と、擬似デバイス定義１２２と擬似サービス定義１２３とをもつ情報処理装置１００による広告を、コントローラ２１０が重複して受信することを防止する。そして、図２６のネットワーク構成例では、コントローラ２１０が情報処理装置１００を介して透過的に引継元のデバイス３１０を制御することを可能にしている。図２６のネットワーク構成例は、通常のＵＰｎＰプロトコルのみでは実現できないネットワークを超えたデバイスの状態引継を可能にしている。
【０１８８】
図２７のネットワーク構成例は、図２６と同様に、コントローラ２１０と引継元のデバイス３１０が同一ネットワーク上にあり、引継先のデバイス６１０がルーター９００を超えた別のネットワーク上にあるという環境である。情報処理装置１００は、ルーター９００の配下にある各スイッチ７００、８００に搭載されており、状態保持テーブル１２１、状態指定テーブル５４１、および引継条件テーブル５４２の情報を、各情報処理装置１００ａ、１００ｂとの間で交換する。また、各スイッチは、ＳＳＤＰによる広告のマルチキャスト（宛先 ２３９．２５５．２５５．２５０）のメッセージを、情報処理装置１００ａ、１００ｂが発信したものを除いて、通過させないようにする設定をする。これにより、引継元のデバイス３１０のＳＳＤＰの広告と、擬似デバイス定義１２２と擬似サービス定義１２３をもつ情報処理装置１００による広告を、コントローラ２１０が重複して受信することを防止する。そして、図２７のネットワーク構成例では、コントローラ２１０が情報処理装置１００ａ、１００ｂを介して透過的に引継元のデバイス３１０を制御することを可能にしている。図２７のネットワーク構成例は、図２６と同様に、通常のＵＰｎＰプロトコルのみでは実現できないネットワークを超えたデバイスの状態引継を可能にするものである。また、本ネットワーク上のルーター９００については、改造したり設定変更を行ったりすることなく、既存のものをそのまま利用することが可能である。
【０１８９】
図２８は、実施形態２の情報処理装置を用いて、デバイスの状態を監視するシステム構成図である。
図２８のネットワーク構成例では、各情報機器は全て同一のネットワーク上にあり、図２３と図２４のように、情報処理装置１００の配下に引継元のデバイス３１０やコントローラ２１０を配置する方式をとる必要はない。また、図２５、図２６、図２７のように、スイッチ７００、８００やルーター９００にＳＳＤＰによる広告のマルチキャストメッセージをブロックする設定を行う必要もない。これは、実施形態２の方式では、監視部４１０がデバイス３１０のデバイス定義を書き換えることにより、コントローラ２１０から制御コマンドを情報処理装置１００へ転送させている。したがって、情報処理装置１００は、ＳＳＤＰによるデバイスの広告を行う必要がないためである。
【０１９０】
図２９は、実施形態３の情報処理装置の使用例を示すシーケンス図である。
図３０は、照明の引継処理で用いられるデータ例を示すテーブルである。
図２９は、照明（ＵＰｎＰデバイス）を照明制御リモコン（ＵＰｎＰコントローラ）により制御するシステムにおいて、照明が故障などのトラブルによりネットワークから切断されたときの引継処理を示すシーケンス図を示す。
【０１９１】
また、図３０は、図２９に示す引継処理で用いられる状態保持テーブル１２１、状態指定テーブル５４１、および引継条件テーブル５４２のデータ例を示す。
【０１９２】
以下、図２９と図３０とを参照して、照明の状態の引継処理の具体例を説明する。
システム管理者は、情報処理装置５００が有する引継条件テーブル５４２の値を手動設定する。
【０１９３】
そして、情報処理装置５００（監視部５１０）は、ＳＳＤＰのＭ‐Ｓｅａｒｃｈを用いて照明１を発見し、照明１からデバイス定義３２１とサービス定義３２２とを取得する。情報処理装置５００は、取得したデバイス定義３２１とサービス定義３２２の情報を元に、状態保持テーブル１２１のエントリを作成する。また、情報処理装置１００は、取得したデバイス定義３２１の情報を元に、照明１の状態変数通値を受信するためのＳｕｂｓｃｒｉｂｅ（購読要求）を照明１に対して通知し、照明１の初期状態（Ｓｔａｔｕｓ＝ｆａｌｓｅ）を取得する。
【０１９４】
また、照明制御リモコン（コントローラ２１０）から、制御コマンド（ＳＯＡＰコマンド）のＳｅｔＴａｒｇｅｔ(ｔｒｕｅ)を照明１に対して通知するとき、照明制御リモコンは、情報処理装置５００に制御コマンドを送信する。これにより、制御コマンドは、情報処理装置５００を介して照明１に転送される。
【０１９５】
照明１は、制御コマンドの通知により、自身の状態を変更（Ｓｔａｔｕｓ＝ｔｒｕｅ）し、変更された状態を示す状態変数値をＧＥＮＡによる状態通知を用いて情報処理装置５００へ通知する。
【０１９６】
そして、照明１は、制御コマンドに対する応答（ＨＴＴＰ  ２００  ＯＫ）を情報処理装置５００へ通知する。情報処理装置５００は、照明１へ転送したコマンド ＳｅｔＴａｒｇｅｔ(ｔｒｕｅ)と、通知されたデバイスの状態Ｓｔａｔｕｓ＝ｔｒｕｅを紐付け、状態指定テーブル５４１のエントリを作成する。
【０１９７】
以上の処理により、情報処理装置５００は、デバイスの状態の引継の準備をする。そして、情報処理装置５００は、照明１がトラブルによりネットワークから切断されると、それを検知して、引継条件テーブル５４２の情報から、引継先のデバイスを照明２に設定する。そして、情報処理装置５００は、状態保持テーブル１２１を参照し、照明１の現在の状態（Ｓｔａｔｕｓ＝ｔｒｕｅ）を取得する。さらに、情報処理装置５００は、状態指定テーブル５４１を参照して、目的の状態変数値（Ｓｔａｔｕｓ＝ｔｒｕｅ）に対応する状態指定コマンド（ＳｅｔＴａｒｇｅｔ（ｔｒｕｅ））を取得する。そして、情報処理装置５００は、照明２を照明１と同じ状態にするための制御コマンド（ＳｅｔＴａｒｇｅｔ（ｔｒｕｅ））を、照明２に対して通知し、照明２に照明１の状態を引き継がせる（Ｓｔａｔｕｓ＝ｔｒｕｅ）。
【０１９８】
図３１は、実施形態３の情報処理装置の使用例を示す図である。
図３１は、会議室（会議室１）でプロジェクタ（ＵＰｎＰデバイス）に対し、スマートフォン（ＵＰｎＰコントローラ）を用いてスライド表示を行っている場面において、会議中に会議室利用時間の超過など何かしらの都合で、別の会議室に移動する。そして、別の会議室（会議室２）に移動した後も、その会議室２に設置してあるプロジェクタ（ＵＰｎＰデバイス）を用いてスライド表示を引き継ぐ処理を示している。
【０１９９】
図３１の情報処理装置５００の使用例は、図２７のネットワーク構成を想定したものであり、会議室１に情報処理装置５００ａ、会議室２に情報処理装置５００ｂが設置されているものとする。そして、情報処理装置５００ａ、５００ｂが互いに、状態保持テーブル１２１、状態指定テーブル５４１、および引継条件テーブル５４２の情報を交換しているものとする。
【０２００】
図３１を参照して、図２７のネットワーク構成を用いたプロジェクタの状態の引継ぎを説明する。なお、図３１では手順やテーブル内容を一部省略して記述している。
【０２０１】
システム管理者は、情報処理装置５００ａ、５００ｂの引継条件テーブル５４２を設定する。ここで、引継条件には「コントローラ発見時」、引継先デバイスは「同サブネットのデバイス」を設定するものとする。そして、情報処理装置５００ａは、会議室１のプロジェクタをＳＳＤＰにより発見し、状態保持テーブル１２１のエントリを作成する。情報処理装置５００ａは、会議室１のプロジェクタに対し、状態変数通知のＳｕｂｓｃｒｉｂｅを通知する。これにより、情報処理装置５００ａのプロジェクタの状態監視が開始される。
【０２０２】
その後、スマートフォンから制御コマンドＳｔａｒｔＳｌｉｄｅＳｈｏｗ（“ｈｔｔｐ：／／ｓａｍｐｌｅ／ｐｒｅｓｅｎｔａｔｉｏｎ１．ｐｐｔ“）を情報処理装置５００ａに通知する（１）。ここで、スマートフォンのＭＡＣアドレスは００：２３：２６：ａｂ：ｃｄ：ｅｆとする。
【０２０３】
そして、情報処理装置５００ａは、スマートフォンから受信した制御コマンドを会議室１のプロジェクタに転送する（２）、（３）。
会議室１のプロジェクタは、制御コマンドを受信すると、スライド表示のアクションを実行する（４）。
【０２０４】
そして、会議室１のプロジェクタは、スライドで表示しているページ番号を、ＧＥＮＡによる状態変数通知により情報処理装置５００ａに通知する（６）。これにより、情報処理装置５００ａでは、制御コマンドと状態変数との紐付けが作成される（７）。さらに、情報処理装置５００ａでは、状態指定コマンドテーブルのエントリが作成される。
【０２０５】
次に、会議室１でのスライド表示を中断して、スマートフォンが会議室２へ移動すると、スマートフォンが移動した情報がＭ−Ｓｅａｒｃｈメッセージを通じて会議室２の情報処理装置５００ｂへ通知される（８）。
【０２０６】
このとき、情報処理装置５００ｂは、Ｍ−Ｓｅａｒｃｈメッセージと同時に通知されたＭＡＣアドレスの情報を参照し、会議室１から通知された各テーブル情報を参照する（９）。そして、情報処理装置５００ｂは、会議室１にてスマートフォンが接続していたプロジェクタと同じ状態をつくるための状態指定コマンドＳｔａｒｔＳｌｉｄｅＳｈｏｗ（“ｈｔｔｐ：／／ｓａｍｐｌｅ／ｐｒｅｓｅｎｔａｔｉｏｎ１．ｐｐｔ“）を抽出する。
【０２０７】
情報処理装置５００ｂは、抽出した制御コマンドを会議室２のプロジェクタへ通知する（１０）。
以上の手順により、情報処理装置５００ａ、５００ｂとは、連携して、会議室１のプロジェクタの状態を会議室２のプロジェクタに引き継ぐことができる（１１）。
【０２０８】
図３２は、情報処理装置の一実施例を示すブロック図である。
図３２は、情報処理装置のブロック図である。以下、実施形態１、実施形態２および実施形態３の情報処理装置の構成について説明する。
【０２０９】
図３２において、情報処理装置は、制御回路１００１と、記憶装置１００２と、読取装置１００３と、記録媒体１００４と、通信インターフェイス１００５（通信Ｉ／Ｆ）と、入出力インターフェイス１００６（入出力Ｉ／Ｆ）と、ネットワーク１００７と、を備えている。また、各構成要素は、バス１００８により接続されている。
【０２１０】
制御回路１００１は、コンピュータ装置全体の制御をする。そして、制御回路１００１は、例えば、ＣＰＵ、マルチコアＣＰＵ、ＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）およびＰＬＤ（Ｐｒｏｇｒａｍｍａｂｌｅ  ＬｏｇｉｃＤｅｖｉｃｅ）などである。制御回路１００１は、図１において、監視部５１０として機能する。制御回路１００１は、図９において、監視部４１０として機能する。また、制御回路１００１は、図１１において、監視部５１０、推定部５２０、および引継部５３０として機能する。
【０２１１】
記憶装置１００２は、各種データを記憶する。そして、記憶装置１００２は、例えば、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）およびＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）などのメモリや、ＨＤ（Ｈａｒｄ  Ｄｉｓｋ）などで構成される。そして、記憶装置１００２は、図１、９において、記憶部１２０として機能する。記憶装置１００２は、図１１において、記憶部５４０として機能する。
【０２１２】
また、ＲＯＭは、ブートプログラムなどのプログラムを記憶している。ＲＡＭは、制御回路１００１のワークエリアとして使用される。ＨＤは、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）、アプリケーションプログラム、ファームウェアなどのプログラム、および各種データを記憶している。
【０２１３】
また、情報処理装置１００の記憶装置１００２は、制御回路１００１を監視部１１０として機能させるための情報処理プログラムを記憶する。情報処理装置４００の記憶装置１００２は、制御回路１００１を監視部４１０として機能させるための情報処理プログラムを記憶する。そして、情報処理装置５００の記憶装置１００２は、制御回路１００１を監視部５１０、推定部５２０、および引継部５３０として機能させるための情報処理プログラムを記憶する。
【０２１４】
そして、デバイスの状態を監視するとき、情報処理装置１００の制御回路１００１は、記憶装置１００２に記憶された情報処理プログラムをＲＡＭに読み出す。これにより、情報処理装置１００の制御回路１００１は、ＲＡＭをワークスペースとして動作することにより、監視部１１０として機能する。
【０２１５】
デバイスの状態を監視するとき、情報処理装置４００の制御回路１００１は、記憶装置１００２に記憶された情報処理プログラムをＲＡＭに読み出す。これにより、情報処理装置４００の制御回路１００１は、ＲＡＭをワークスペースとして動作することにより、監視部４１０として機能する。
【０２１６】
また、そして、デバイスの状態を監視するとき、情報処理装置５００の制御回路１００１は、記憶装置１００２に記憶された情報処理プログラムをＲＡＭに読み出す。これにより、情報処理装置５００の制御回路１００１は、ＲＡＭをワークスペースとして動作することにより、監視部５１０、推定部５２０、および引継部５３０として機能する。
【０２１７】
なお、情報処理プログラムは、制御回路１００１が通信インターフェイス１００５を介してアクセス可能であれば、ネットワーク１００７上のサーバに記憶されていても良い。
また、記憶装置１００２がＨＤである場合、ＨＤは、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）を介してバス１００８に接続される。そして、ＨＤは、ＨＤＤが制御回路１００１に制御され、データのリード／ライトが行なわれる。
【０２１８】
読取装置１００３は、制御回路１００１に制御され、着脱可能な記録媒体１００４のデータのリード／ライトを行なう。そして、読取装置１００３は、例えば、ＦＤＤ（Ｆｌｏｐｐｙ  Ｄｉｓｋ  Ｄｒｉｖｅ）、ＣＤＤ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ  Ｄｒｉｖｅ）、ＤＶＤＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ  Ｄｒｉｖｅ）、ＢＤＤ（Ｂｌｕ−ｒａｙ  Ｄｉｓｋ  Ｄｒｉｖｅ：登録商標）およびＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）などである。また、読取装置１００３は、記録媒体１００４に記録された情報処理プログラムを読み出し、記憶装置１００２に記憶しても良い。
【０２１９】
記録媒体１００４は、各種データを保存する。一例として、記録媒体１００４は、情報処理プログラムを保存する。そして、記録媒体１００４は、読取装置１００３を介してバス１００８に接続され、制御回路１００１が読取装置１００３を制御することにより、データのリード／ライトが行なわれる。また、記録媒体１００４は、例えば、ＦＤ（Ｆｌｏｐｐｙ  Ｄｉｓｋ）、ＣＤ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ）、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）、ＢＤ（Ｂｌｕ−ｒａｙ  Ｄｉｓｋ：登録商標）、およびフラッシュメモリなどである。
【０２２０】
通信インターフェイス１００５は、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、無線通信、またはインターネットなどのネットワーク１００７を介してコンピュータ装置と他の装置とを通信可能に接続する。
【０２２１】
入出力インターフェイス１００６は、例えば、キーボード、マウス、およびタッチパネルなどと接続され、接続された装置から各種情報を示す信号が入力されると、バス１００８を介して入力された信号を制御回路１００１に出力する。また、入出力インターフェイス１００６は、制御回路１００１から出力された各種情報を示す信号がバス１００８を介して入力されると、接続された各種装置にその信号を出力する。入出力インターフェイス１００６を用いて、システム管理者は、情報処理装置の引継条件テーブル５４２に設定値を入力する。
【０２２２】
以上のように、実施形態１〜３で説明した情報処理装置は、ＵＰｎＰで用いられるコントローラに、デバイスの状態を監視する機能がなくても、コントローラとデバイスとの間に接続されることにより、デバイスの状態を監視する機能を追加することができる。
【０２２３】
また、実施形態１〜３で説明した情報処理装置は、接続されているデバイスを把握し、コントローラから出力される制御コマンドの宛先を情報処理装置に設定する。これにより、実施形態１〜３で説明した情報処理装置は、コントローラから受信した制御コマンドをデバイスに転送することができる。
【０２２４】
さらに、実施形態３の情報処理装置は、コントローラとデバイスとの通信を転送するときに、デバイスに送信した制御コマンドと、デバイスからの応答として返される状態変数値を紐付けて格納する。これにより、実施形態３の情報処理装置は、デバイスごとに送信する制御コマンドと、送信した制御コマンドにより変化するデバイスの状態を推定することができる。
【０２２５】
実施形態３の情報処理装置は、引継元のデバイスから引継先のデバイスへデバイスの状態を引き継ぐとき、デバイスごとに推定した制御コマンドとデバイスの状態との関係を用いて引継先のデバイスの状態を変化させる。これにより、実施形態３の情報処理装置は、デバイスの状態を引き継ぐとき、引継元のデバイスと引継先のデバイスとを同じ状態にすることができる。
【０２２６】
また、実施形態３の情報処理装置は、ユーザが持っているコントローラを発見したとき、ユーザが他の場所で使用していた引継元のデバイスと同じ種類のデバイスが、自身の属するネットワーク上にあるか否かを判定する。そして、実施形態３の情報処理装置は、自身が属するネットワーク上に、引継元のデバイスと同じ種類のデバイスがあるとき、そのデバイスを引継先のデバイスとして、引継処理をする。これにより、ユーザは、引継元のデバイスを操作していた時と同じ方法でそのまま引継先デバイスを制御することができる。
【０２２７】
上述の説明において、情報処理装置は、ＵＰｎＰを用いてデバイス監視、およびデバイスの状態の引継ぎを行なったたが、これに限定されるものではない。実施形態１〜３を用いて説明した情報処理が可能であれば、ＵＰｎＰ以外の他の通信プロトコルを用いても良い。
【０２２８】
以上記載した各実施例を含む実施形態に関し、さらに以下の付記を開示する。なお、本発明は、以下の付記に限定されるものではない。
（付記１）
デバイスから、前記デバイスの状態が変化したとき、前記デバイスの状態を示す状態変数値を受信するための購読要求の宛先を示す第１の宛先情報と、前記デバイスを制御する制御コマンドの宛先を示す第２の宛先情報とを取得する監視部と、
前記デバイスを制御するコントローラから前記制御コマンドを受信し、かつ前記購読要求の宛先から前記状態変数値を受信する受信部と、
前記第１の宛先情報を指定して、前記購読要求を送信し、かつ前記第２の宛先情報を指定して、前記受信した制御コマンドを前記デバイスに送信する送信部と、
前記制御コマンドを送信したあとに、前記デバイスから状態変数値を受信すると、前記制御コマンドの送信先であるデバイスの識別情報と、前記受信した状態変数値とを関連付けて格納する状態保持テーブルを記憶する記憶部と、
を備えることを特徴とする情報処理装置。
（付記２）
引継元のデバイスから引継先のデバイスに前記引継元のデバイスの状態を引き継ぐとき、前記状態保持テーブルを参照し、前記引継元のデバイスの識別情報に対応する状態変数値が示す状態に、前記引継先のデバイスの状態を変更させる引継部
を備えることを特徴とする付記１に記載の情報処理装置。
（付記３）
前記デバイスの識別情報と、前記送信した制御コマンドと、前記制御コマンドとを送信したあとに、前記デバイスから受信した前記状態変数値とを関連付けて格納する状態指定テーブルを作成する推定部
を備え、
前記記憶部は、
前記状態指定テーブルを記憶し、
前記引継部は、
前記引継元のデバイスから前記引継先のデバイスにサービスの状態を引き継ぐとき、前記状態保持テーブルを参照し、前記引継元のデバイスの識別情報に関連付けられた状態変数値を抽出し、さらに前記状態指定テーブルを参照し、前記引継元のデバイスの識別情報と、前記抽出した状態変数値とに対応する制御コマンドを抽出し、前記送信部を制御して、前記抽出した制御コマンドを前記引継先のデバイスに送信させる
ことを特徴とする付記２に記載の情報処理装置。
（付記４）
前記記憶部は、さらに、
前記デバイスの識別情報と、前記引継先のデバイスに前記デバイスの状態を引き継ぐ条件を示す引継条件と、前記引継先のデバイスの宛先である第３の宛先情報と、を関連付けて格納する引継条件テーブルを記憶し、
前記引継部は、
前記引継条件の示す状態が発生したか否かを監視し、前記引継条件の示す状態が発生したとき、前記引継条件テーブルを参照し、前記引継条件に関連付けられたデバイスの識別情報を抽出し、前記状態保持テーブルを参照し、前記抽出したデバイスの識別情報に関連付けられた状態変数値を抽出し、さらに前記状態指定テーブルを参照し、前記抽出したデバイスの識別情報と、前記抽出した状態変数値とに対応する制御コマンドを抽出し、前記第３の宛先情報を指定して、前記抽出した制御コマンドを前記送信部から送信させる
ことを特徴とする付記３に記載の情報処理装置。
（付記５）
監視部は、
接続されているデバイスを検索し、
前記デバイスは、
前記検索部で検索されたデバイスである
ことを特徴とする付記１〜４のいずれか一つに記載の情報処理装置。
（付記６）
前記監視部は、
前記検索されたデバイスから前記デバイスの識別情報を取得する
ことを特徴とする付記１〜５のいずれか一つに記載の情報処理装置。
（付記７）
前記監視部は、
前記デバイスの識別情報として、前記デバイスの種類を示すデバイスタイプと、前記デバイスが有するサービスの種類を示すサービスタイプとを、前記デバイスから取得する
ことを特徴とする付記１〜６のいずれか一つに記載の情報処理装置。
（付記８）
前記監視部は、
前記コントローラに対して、前記情報処理装置の宛先である第４の宛先情報を、前記コントローラから出力する前記制御コマンドの宛先として指定する
ことを特徴とする付記１〜７のいずれか一つに記載の情報処理装置。
（付記９）
前記監視部は、
前記デバイスに、前記デバイスが有する前記コントローラから出力する前記制御コマンドの宛先を、前記情報処理装置の宛先である第４の宛先情報に書き換える
ことを特徴とする付記１〜７のいずれか一つに記載の情報処理装置。
（付記１０）
前記引継部は、
前記情報処理装置と、前記デバイスとのネットワークの接続が切断されたとき、前記状態保持テーブルを参照し、前記情報処理装置とのネットワークの接続が切断されたデバイスの識別情報に関連付けられた状態変数値を抽出し、さらに前記状態指定テーブルを参照し、前記情報処理装置とのネットワークの接続が切断されたデバイスの識別情報と、前記抽出した状態変数値とに対応する制御コマンドを抽出し、前記第３の宛先情報を指定して、前記抽出した制御コマンドを前記送信部から送信させる
ことを特徴とする付記３に記載の情報処理装置。
（付記１１）
状態保持テーブルは、さらに
前記制御コマンドの送信元のコントローラの宛先である第５の宛先情報を、前記制御コマンドの送信先であるデバイスの識別情報と、前記デバイスから受信した状態変数値とに関連付けて格納し、
前記引継部は、
前記コントローラを発見したとき、前記状態保持テーブルを参照し、前記発見したコントローラの識別情報と関連付けられたデバイスの識別情報を抽出し、前記状態保持テーブルを参照し、前記抽出したデバイスの識別情報に関連付けられた状態変数値を抽出し、さらに前記状態指定テーブルを参照し、前記発見したコントローラの識別情報と関連付けられたデバイスの識別情報と、前記抽出した状態変数値とに対応する制御コマンドを抽出し、前記第３の宛先情報を指定して、前記抽出した制御コマンドを前記送信部から送信させる
ことを特徴とする付記３に記載の情報処理装置。
（付記１２）
デバイスから、前記デバイスの状態が変化したとき、前記デバイスの状態を示す状態変数値を受信するための購読要求の宛先を示す第１の宛先情報と、前記デバイスを制御する制御コマンドの宛先を示す第２の宛先情報とを取得し、
前記第１の宛先情報を指定して、前記購読要求を送信し、
前記デバイスを制御するコントローラから前記制御コマンドを受信したとき、前記第２の宛先情報を指定して、前記受信した制御コマンドを送信し、
前記制御コマンドを送信したあとに、前記デバイスから状態変数値を受信すると、前記制御コマンドの送信先であるデバイスの識別情報と、前記受信した状態変数値とを関連付けて格納する状態保持テーブルを作成する
ことを特徴とする情報処理方法。
（付記１３）
デバイスから、前記デバイスの状態が変化したとき、前記デバイスの状態を示す状態変数値を受信するための購読要求の宛先を示す第１の宛先情報と、前記デバイスを制御する制御コマンドの宛先を示す第２の宛先情報とを取得し、
前記第１の宛先情報を指定して、前記購読要求を送信し、
前記デバイスから、前記デバイスを制御する制御コマンドの宛先を示す第２の宛先情報を取得し、
前記デバイスを制御するコントローラから前記制御コマンドを受信したとき、前記第２の宛先情報を指定して、前記受信した制御コマンドを送信し、
前記制御コマンドを送信したあとに、前記デバイスから状態変数値を受信すると、前記制御コマンドの送信先であるデバイスの識別情報と、前記受信した状態変数値とを関連付けて格納する状態保持テーブルを作成する
処理をコンピュータに実行させることを特徴とする情報処理プログラム。
【符号の説明】
【０２２９】
１００  情報処理装置
１１０  監視部
１２０  記憶部
１２１  状態保持テーブル
１２２  擬似デバイス定義
１２３  擬似サービス定義
２００  情報機器
２１０  コントローラ
３００  情報機器
３１０、６１０  デバイス
３１１、６２２  サービス
３２０  記憶部
３２１、３２３  デバイス定義
３２２  サービス定義
４００  情報処理装置
４１０  監視部
５００  情報処理装置
５１０  監視部
５２０  推定部
５３０  引継部
５４０  記憶部
５４１  状態指定テーブル
５４２  引継条件テーブル
６００  情報機器
６１０  デバイス
６１１  サービス
６２０  記憶部
７００、８００  スイッチ
９００  ルーター
１００１  制御回路
１００２  記憶装置
１００３  読取装置
１００４  記録媒体
１００５  通信インターフェイス
１００６  入出力インターフェイス
１００７  ネットワーク
１００８  バス
【図１】
2014183365.tif 000003
【図２】
2014183365.tif 000004
【図３】
2014183365.tif 000005
【図４】
2014183365.tif 000006
【図５】
2014183365.tif 000007
【図６】
2014183365.tif 000008
【図７】
2014183365.tif 000009
【図８】
2014183365.tif 000010
【図９】
2014183365.tif 000011
【図１０】
2014183365.tif 000012
【図１１】
2014183365.tif 000013
【図１２】
2014183365.tif 000014
【図１３】
2014183365.tif 000015
【図１４】
2014183365.tif 000016
【図１５】
2014183365.tif 000017
【図１６】
2014183365.tif 000018
【図１７】
2014183365.tif 000019
【図１８】
2014183365.tif 000020
【図１９】
2014183365.tif 000021
【図２０】
2014183365.tif 000022
【図２１】
2014183365.tif 000023
【図２２】
2014183365.tif 000024
【図２９】
2014183365.tif 000025
【図３０】
2014183365.tif 000026
【図３２】
2014183365.tif 000027
【図２３】
2014183365.tif 000028
【図２４】
2014183365.tif 000029
【図２５】
2014183365.tif 000030
【図２６】
2014183365.tif 000031
【図２７】
2014183365.tif 000032
【図２８】
2014183365.tif 000033
【図３１】
2014183365.tif 000034