(57)【特許請求の範囲】
【請求項１】
ネットワークに接続され、共通の通信プロトコルを規定する標準技術に対応した複数のネットワークデバイスとデバイス監視装置とを含むネットワークシステムのプログラム制御方法において、
前記デバイス監視装置により前記ネットワークデバイスで動作するプログラムモジュールの機能を監視し、
前記モジュールの機能に問題がある場合に、前記デバイス監視装置に、問題のあるプログラムモジュールの代理処理をおこなう仮想デバイスプログラムを生成し、
前記問題が改善されるまでの間、そのプログラムモジュールに問題のあるネットワークデバイスの代理応答処理を前記仮想デバイスプログラムによりおこなうことを特徴とするプログラム制御方法。
【請求項２】
請求項１において、
前記プログラムモジュールの機能に問題がある場合には、前記そのプログラムモジュールに問題のあるネットワークデバイスで動作するプログラムモジュールを前記デバイス監視装置が最新のプログラムモジュールに更新して問題を改善し、前記デバイス監視装置での前記仮想デバイスプログラムの動作を停止することを特徴とするプログラム制御方法。
【請求項３】
請求項１において、
前記ネットワークシステムは、前記ネットワークデバイスとしてUPnPデバイスと、前記UPnPデバイスにサービス要求をおこなうUPnPコントロールポイントと、前記デバイス監視装置として前記UPnPデバイスや前記UPnPコントロールポイントが接続するホームネットワークと外部ネットワークを接続するホームゲートウェイとを有し、
UPnPデバイスからの第１のNOTIFYメッセージに応じて、前記UPnPデバイスにデバイスディスクリプションを要求し、
前記要求の応答として取得したデバイスディスクリプションの問題を検出し、
前記デバイスディスクリプションに問題があった場合に、前記UPnPデバイスの代理処理をおこなう仮想デバイスプログラムを生成し、前記UPnPデバイスの問題のあるデバイスディスクリプションを修正し、
前記仮想デバイスプログラムから第２のNOTIFYメッセージを送信し、
前記仮想デバイスプログラムから第２のNOTIFYメッセージの受信したUPnPコントロールポイントは、前記仮想デバイスプログラムを前記UPnPデバイスとして利用することを特徴とするプログラム制御方法。
【請求項４】
請求項３において、
前記デバイスディスクリプションに問題があった場合に、前記ホームゲートウェイは、外部ネットワークに前記UPnPデバイスのプログラムモジュールの更新要求をおこない、
外部のネットワークから問題のある前記UPnPデバイスに最新のプログラムモジュールが通知され、
前記UPnPデバイスは、プログラムモジュールの更新をおこなうことを特徴とするプログラム制御方法。
【請求項５】
請求項４において、
プログラムモジュールの更新をおこなったUPnPデバイスは、前記ホームゲートウェイに対し、モジュールの更新完了を通知し、
前記通知に応じて前記仮想デバイスプログラムは、機能を停止することを特徴とするプログラム制御方法。
【請求項６】
請求項１において、
検出されたプログラムモジュールの問題が回避不能の場合には、一部機能を制限した仮想デバイスプログラムを生成するプログラム制御方法。
【請求項７】
共通の通信プロトコルを規定する標準技術に対応した複数のネットワークデバイスが接続されるネットワークに接続されるデバイス監視装置であって、
前記ネットワークデバイスで動作するプログラムモジュールの機能を監視するデバイス監視部と、
前記デバイス監視部からの要求に応じて仮想デバイスプログラムの実行と停止をおこなう仮想デバイス管理部と、
前記デバイス監視部によって検出されたネットワークデバイスのプログラムモジュールを修正するデバイス更新処理部とを有し、
前記仮想デバイス管理部は、前記デバイス管理部がプログラムモジュールの機能に問題があることを検出した場合に、問題のあるプログラムモジュールの代理処理をおこなう仮想デバイスプログラムを生成し、
前記仮想デバイス管理部は、前記デバイス更新処理部が前記プログラムモジュールの更新処理を終了した後に、前記仮想デバイスプログラムを停止することを特徴とするデバイス監視装置。
【請求項８】
請求項７において、
前記仮想デバイス管理部は、検出されたプログラムモジュールの問題が回避不能の場合には、一部機能を制限した仮想デバイスプログラムを生成するデバイス監視装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はネットワークを通じて通信が可能な複数のデバイスを監視する技術、および当該デバイス上で動作するプログラムモジュールを管理する技術に関するものである。
【背景技術】
【０００２】
近年、家庭における広帯域なネットワークインフラが整備され、高機能な情報家電を接続したホームネットワーク環境に注目が集まっている。こうした環境においては、ネットワークに接続した情報家電（デバイス）は相互に連携し、新たな付加価値を持ったサービスをユーザに提供していくことが想定されている。
【０００３】
ホームネットワークに接続された複数のデバイスを制御するための技術としてUPnP（UPnPはUPnP Implementors Corporationの登録商標であり、Universal Plug and Playの略である）やHAVi（HAViはHAVi Organizationの登録商標であり、Home Audio/Video Interoperabilityの略である）などが存在する。これらの標準技術は異なるメーカのデバイス間においても協調動作できるように、通信プロトコルが規定されている。
【０００４】
一方、前記標準技術ではサポートできない機能を補うための様々な仕組みが考案されている。特許文献１においては、前記標準技術をサポートしないデバイスを、サポートするデバイスとして動作させる方法が示されている。また、特許文献２においては、デバイスの消費電力問題に着目し、デバイスをサスペンド状態にするための方法が示されている。
【０００５】
これらの技術に共通する特徴は、前記標準技術で規定された通信プロトコルに対応したプロキシプログラムを通じてデバイスへのアクセスを中継することである。前記標準技術が規定している通信プロトコルはデバイスのハードウェアに依存しないため、このようなプロキシプログラムの利用が可能となっている。例えば特許文献１においては、プロキシプログラムを通じて前記標準技術をサポートしないデバイスからサポートするデバイスへのアクセスを可能にしている。
【０００６】
また、前記標準技術をサポートするデバイスがプログラム上の問題（バグ等）を抱えている場合、当該プログラムを遠隔からアップデートする方法が一般に知られている（特許文献３）。当該技術においては、デバイス上で動作するプログラムであって、当該デバイス上で動作する他のプログラムをアップデートするためのエージェントプログラムを利用し、問題を抱えたプログラムを遠隔からアップデートする方法が用いられている。
【０００７】
【特許文献１】特開２００５−３０９６１７号公報
【特許文献２】特開２００６−２６０４２５号公報
【特許文献３】特開２００６−２４３９１５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
一般に、前記標準技術に対応したデバイスは多数のメーカによって開発されており、相互に連携するには通信プロトコルへの厳密な対応が不可欠である。しかし、デバイスによっては前記通信プロトコルへの対応が不十分であるか、または、プログラム上の問題（バグ）やパフォーマンス上の問題（プログラムの処理速度や要求に対する応答速度等）を含んでいる可能性があるため、正常にデバイスの相互連携を実現できない場合がある。
【０００９】
例えば、UPnP技術においては、UPnPデバイスに関する情報を記述したデバイスディスクリプションや、UPnPデバイスが提供するサービスに関する情報を記述したサービスディスクリプションといったデータに不備があったり、それらのデータを入手できなかったりした場合、UPnPデバイスそのものが他のデバイスから発見できなくなる可能性がある。また、上記デバイスディスクリプションの取得要求に対し、UPnPデバイスは30秒以内に応答しなければならないと規定されているが、パフォーマンス上の問題を抱えたUPnPデバイスは30秒以内に応答できない可能性があり、同様に他のデバイスから発見できなくなる可能性がある。
【００１０】
そのような問題を持ったデバイスがネットワークに接続され、ユーザが利用することを事前に予測することは難しく、従って、特許文献３記載のような、遠隔からデバイス上のプログラムをアップデートする仕組みが求められている。
【００１１】
しかし、特許文献３記載の方法においては、デバイス上で動作するプログラムのアップデートは可能であるが、問題のあるプログラムが発見されてから修正プログラムが提供されるまでの期間における対策については考慮されていない。従って、ユーザは問題のあるプログラムが修正され、更新されるまでの期間、デバイスを利用することができないという課題がある。
【００１２】
本発明の目的は、上記の課題を解決し、ネットワークに接続されたデバイスを協調動作させるのに適したプログラム制御方法を提供することにある。
【課題を解決するための手段】
【００１３】
上記課題を解決するために、本発明のネットワークに接続され、ネットワークにサービスを提供するネットワークデバイスのプログラム制御は、前記デバイスで動作するプログラムモジュールの機能を監視し、前記モジュールの機能に問題がある場合に、前記問題が改善されるまでの間、仮想デバイスプログラムにより前記デバイスの代理応答処理をおこなうようにした。
【００１４】
また、前記モジュールの機能に問題がある場合には、前記デバイスで動作するプログラムモジュールを最新のプログラムモジュールに更新して問題を改善し、前記仮想デバイスプログラムの動作を停止するようにした。
【発明の効果】
【００１５】
本発明によれば、ネットワーク上に存在するデバイスに問題が発見された際、当該デバイスの問題を修正するための処理を行うと同時に、当該デバイスに代わって代理応答を行う仮想デバイスプログラムを実行することで、当該デバイスの問題が修正されるまでの間、当該デバイスをユーザに利用させることができるので、協調動作を円滑におこなうことができる。
【発明を実施するための最良の形態】
【００１６】
本発明によるプログラム制御方法の実施形態を、以下、図面を用いて詳細に説明する。
図1は本発明におけるハードウェア構成図である。これは、本発明で想定する装置およびデバイスのハードウェア構成を表す。この図において、演算装置101は主記憶装置102にロードされた命令を処理する中央演算装置である。主記憶装置102は外部記憶装置104からロードされたプログラムデータを記憶する揮発メモリまたは不揮発メモリである。通信装置103は外部のネットワークと接続し、ハードウェア上で動作するプログラムが必要とするデータを送受信するための装置である。外部記憶装置104はプログラムデータを記憶する不揮発メモリである。ここで、外部記憶装置104は、ネットワークを経由した別のマシン上に存在する構成であってもよい。本発明において述べる装置およびデバイスは、一般的に図1記載のハードウェア構成をとるが、これに限定するものではない。
【００１７】
図2は本発明における一般的なシステムの構成図である。この図において、デバイス監視装置201は監視対象デバイス202の動作を監視し、当該デバイスの動作に問題が検出されると、仮想デバイスプログラムを自動的に生成し、当該デバイスの問題を修正するための処理を行う装置であり、デバイス監視部204、仮想デバイス管理部205、デバイス更新処理部206から構成される。
【００１８】
デバイス監視部204は監視対象デバイス202の監視情報通知部208が提供するデバイス情報か、または、監視対象モジュール209が提供するデバイス情報を基に監視対象デバイス202の状態を監視するプログラムである。ここでデバイス情報とは、例えばUPnP技術においては、UPnPデバイスの送信するNOTIFYメッセージのデータやデバイスディスクリプションのデータ等である。つまり、監視対象デバイス202が提供する全ての情報がデバイス情報に相当する。
【００１９】
監視情報通知部208が提供するデバイス情報は、監視対象モジュール209が提供するデバイス情報に加えて、ログ情報やプロファイル結果等、監視対象デバイス202の動作状況を確認できる全ての情報を含む。デバイス監視部204はこれらデバイス情報を取得するために監視対象デバイス202にアクセスすることも可能である。例えば、UPnPプロトコルを利用し、デバイスを操作するためのACTIONメッセージを監視対象デバイス202に送信することでデバイス情報を取得することも可能である。
【００２０】
仮想デバイス管理部205はデバイス監視部204からの要求に応じて仮想デバイスプログラムを実行したり、停止したりするためのプログラムである。仮想デバイスプログラムとは、監視対象デバイス202で検出された問題を回避するためのプログラムであり、当該監視対象デバイス202の代理として動作するプロキシプログラムである。
【００２１】
仮想デバイスプログラムは問題の検出された監視対象デバイス202と同様にデバイス情報をネットワーク213上に公開するため、監視対象デバイス202を利用するデバイス制御装置214は、問題が検出された監視対象デバイス202に代わって仮想デバイスプログラムを発見し、操作することができる。
【００２２】
当該デバイス制御装置214によって仮想デバイスプログラムに送信されたデバイス制御命令（例えばWebカメラの操作命令等）は、当該仮想デバイスプログラムにより、問題の検出された監視対象デバイス202に転送される。こうして、当該仮想デバイスプログラムは、当該監視対象デバイス202の抱える問題が修正されるまでの間、当該監視対象デバイス202をデバイス制御装置214から利用可能にすることができる。
【００２３】
デバイス更新処理部206はデバイス監視部204からの要求に応じて監視対象デバイス202で検出された問題を修正するための処理を行うプログラムである。処理の詳細については後述する。
【００２４】
監視対象デバイス202はUPnP等の標準プロトコルを利用して他のデバイスにサービス（例えばWebカメラによって映像を提供するサービス等）を提供するデバイスであり、モジュール更新処理部207、監視情報通知部208、監視対象モジュール209から構成される。
【００２５】
モジュール更新処理部207は問題の検出された監視対象モジュール209を修正するために、最新のプログラムモジュールをインストールするためのプログラムである。プログラムモジュールとは、本実施例においては、更新可能なプログラムの一単位を明示的に表すものである。プログラムモジュールは単にモジュールと表現する場合もある。一つ以上のプログラムモジュールが連携して処理を行うものを単にプログラムと呼んで区別している。
【００２６】
モジュール更新処理部207は主にネットワーク経由で最新のプログラムモジュールを取得するものであるが、ユーザがCD-ROM等を用いて直接インストールすることも考えられる。モジュール更新処理部207は、プログラムモジュールを最新版に更新するための処理を行うプログラム全般を表すものであり、本発明のために開発する特殊なプログラムに限定するものではない。
【００２７】
このモジュール更新処理部207として動作するものとして、例えば以下のようなプログラムが考えられる。
（ア）プログラムモジュールのリモートアップデート用エージェントプログラム
（イ）インストーラプログラム
（ウ）ファイルシステムプログラム
監視情報通知部208は監視対象モジュール209の動作を監視し、デバイス監視装置201のデバイス監視部204にデバイス情報を送信するためのプログラムである。これは監視対象モジュール209の動作状況を出力するためのロギングプログラムであってもよく、監視対象モジュール209の動作状況をモニタリングするためのモニタリングプログラムであってもよい。
【００２８】
監視情報通知部208は、本発明で規定するデバイス監視部204と連携して動作するものであるが、本発明のために開発する特殊なプログラムに限定するものではない。また、監視情報通知部208の処理は必須ではなく、特に必要がなければ存在しなくてもよい。
【００２９】
監視対象モジュール209は監視対象デバイス202上で動作する任意のプログラムモジュールであり、UPnP等の遠隔からデバイスを操作するための通信プロトコルに対応したプログラムモジュールである。監視対象モジュール209が問題を抱えている場合、デバイス監視部204が当該問題を検出し、仮想デバイス管理部205が監視対象モジュール209に代わって動作する仮想デバイスプログラムを起動し、モジュール更新処理部207が監視対象モジュール209を最新のプログラムモジュールに更新するまで当該仮想デバイスプログラムの実行を継続させる。
【００３０】
モジュール管理装置203は監視対象デバイス202上で動作する監視対象モジュール209を管理する装置であり、モジュールレポジトリ210、デバイス管理部211、更新要求処理部212から構成される。
【００３１】
モジュールレポジトリ210は監視対象デバイス202上で動作する監視対象モジュール209の最新版を格納するレポジトリプログラムである。これは例えば、データベースプログラムであってもよく、ファイルシステムプログラムであってもよい。プログラムモジュールを格納するための一般的なプログラムであればよく、本発明のために開発する特殊なプログラムである必要はない。
【００３２】
デバイス管理部211は監視対象デバイス202を管理するためのプログラムである。これは例えば、監視対象デバイス202を管理するオペレータが利用するデバイス管理用GUI（Graphical User Interface）プログラムであってもよく、OMA DM（Open Mobile Alliance Device Management）プロトコル等の標準プロトコルに対応したデバイス管理サーバプログラムであってもよい。デバイス管理を行うための一般的なプログラムであればよく、本発明のために開発する特殊なプログラムである必要はない。
【００３３】
更新要求処理部212はデバイス更新処理部206からのモジュール更新要求に応じてモジュールレポジトリ210から最新のプログラムモジュールを取得したり、デバイス管理部211に更新要求を通知したりするためのプログラムである。
【００３４】
モジュールレポジトリ210から取得した最新のプログラムモジュールは、監視対象デバイス202のモジュール更新処理部207に送信してもよく、デバイス更新処理部206に送信してもよい。更新要求処理部212は本発明で規定するデバイス更新処理部206と連携して動作するものであるが、本発明のために開発する特殊なプログラムに限定するものではない。また、更新要求処理部212の利用は必須ではなく、特に必要がなければ存在しなくてもよい。
【００３５】
デバイス制御装置214は、UPnP等の通信プロトコルを利用して監視対象デバイス202の提供するサービスを利用する装置であり、デバイス制御部215から構成される。
【００３６】
デバイス制御部215は、監視対象デバイス202が提供するサービスを利用するために、UPnP等の通信プロトコルを利用して監視対象デバイス202の監視対象モジュール209と通信を行うモジュールである。
【００３７】
ネットワーク213はデバイス監視装置201、モジュール管理装置203、監視対象デバイス202、およびデバイス制御装置214を接続するためのネットワークである。ここで、デバイス監視装置201、監視対象デバイス202、モジュール管理装置203、デバイス制御装置214は同一ネットワーク（LAN）上に複数存在していてもよく、
また、これらの装置（およびデバイス）は別のネットワーク上に存在していてもよい。つまりネットワーク213は同一ネットワーク（LAN）に限定するものではない。また、前記装置（およびデバイス）は、単一のハードウェアで構成されていてもよい。つまり、本システム構成図は、ハードウェアの物理的な分離を示すものではなく、プログラムの論理的な構成を示すものである。また、モジュール管理装置203は、特に必要がなければ存在しなくてもよい。
【００３８】
図3は本発明におけるデバイス更新処理のフローチャートを示す図である。これは、本発明における一般的な処理の流れを表すものであり、処理の流れを限定するものではない。
【００３９】
ステップ301はデバイス情報の取得を行う処理である。このステップにおいて、デバイス監視部204は監視対象デバイス202の監視情報通知部208からログ情報等のデバイス情報を取得するか、または監視対象モジュール209の動作状況（送信パケットなど）からデバイス情報を取得するか、またはその両方からデバイス情報を取得する。
【００４０】
ステップ302はステップ301で取得したデバイス情報を分析する処理である。このステップにおいて、デバイス監視部204は取得したデバイス情報を基に、監視対象デバイス202に問題がないかを分析する。例えば、UPnP技術においては、UPnPデバイスから送信されたデバイスディスクリプションに不備がないか等について分析を行う。
【００４１】
ステップ303は、ステップ302において問題が発見されたかどうかを判定するステップである。もし問題が発見された場合は、ステップ304へ進む。また、問題が発見されなかった場合は、ステップ301へ戻る。
【００４２】
ステップ304は問題の回避可能性を分析するステップである。このステップにおいて、デバイス監視部204は発見した問題が通信プロトコルレベルで回避可能な問題であるかを判定する。通信プロトコルレベルで回避可能な問題とは、例えばデバイスが送信するメッセージの一部が不正な値であるが、当該不正部分が通信プロトコルを利用したシステム全体に与える影響は小さく、かつ仮のデータによって補完が可能であるような問題を指す。この詳細については後述する。
【００４３】
ステップ305はステップ304において分析した結果、問題が回避可能であるかを判定するステップである。もし回避可能な問題であれば、ステップ306へ進む。もし回避可能な問題でなければ、ステップ307へ進む。
【００４４】
ステップ306は仮想デバイス管理部205が仮想デバイスプログラムを生成し、実行するステップである。例えば、UPnP技術において、UPnPデバイスに関する情報を記述したデバイスディスクリプションの必須タグに不備があり、当該UPnPデバイスを利用するデバイス制御部215の実装によっては当該UPnPデバイスを発見できない場合がある。
【００４５】
このような場合、仮想デバイス管理部205は、当該デバイスディスクリプションの必須タグを仮のデータによって補完することで正常に動作する仮想デバイスプログラムを生成し、実行する。仮想デバイス管理部205は、監視対象デバイス202から取得したデバイス情報を基に仮想デバイスプログラムを自動生成する。
【００４６】
ステップ307は仮想デバイス管理部205が機能制限仮想デバイスプログラムを生成し、実行するステップである。当該機能制限仮想デバイスプログラムが通常の仮想デバイスプログラムと異なる点は、デバイスの抱える問題が通信プロトコルを利用したシステム全体に与える影響が大きいため、一部機能が制限される点である。
【００４７】
例えば、UPnP技術において、UPnPデバイスが提供しているはずのサービスディスクリプションが取得できず、当該サービスディスクリプションに対応するサービスが利用できない場合などが考えられる。このような場合、仮想デバイス管理部205は、当該サービスに関する記述を削除することで一部機能を制限するが、それ以外の部分は正常に動作する機能制限仮想デバイスプログラムを生成し、実行する。仮想デバイス管理部205は、監視対象デバイス202から取得したデバイス情報を基に機能制限仮想デバイスプログラムを自動生成する。
【００４８】
ステップ308は問題の見つかったモジュールを更新するための処理を行うステップである。このステップにおいて、デバイス更新処理部206は、デバイス監視部204または仮想デバイス管理部205からの依頼により、問題を抱えたデバイス上のモジュールを修正するための処理を行う。
【００４９】
これは、例えば以下に挙げるような処理である。但し、これに類する処理であればよく、処理内容を限定するものではない。
（ア）ユーザに対し、監視対象モジュール209の更新要求を通知する（ダイアログ表示、メール等）
（イ）モジュール管理装置203の更新要求処理部212に対し、監視対象モジュール209の更新を依頼する
（ウ）モジュール管理装置203のデバイス管理部211に対し、監視対象モジュール209の更新を依頼する
（エ）モジュール管理装置203のモジュールレポジトリ210から監視対象モジュール209を更新するための最新モジュールを取得し、モジュール更新処理部207に送信する
監視対象モジュール209の更新要求を通知されたユーザは、最新版のモジュールを購入するといった一般的な手段により、ユーザ自身が最新モジュールを監視対象デバイス202にインストールすることができる。
【００５０】
一方、更新要求処理部212はデバイス更新処理部206からモジュールの更新要求を受けると、例えば以下に挙げるような処理を行う。但し、これに類する処理であればよく、処理内容を限定するものではない。
（ア）モジュールレポジトリ210から最新のモジュールを取得し、モジュール更新処理部207に送信する
（イ）モジュールレポジトリ210から最新のモジュールを取得し、デバイス更新処理部206に送信する
（ウ）デバイス管理部211に対し、監視対象モジュール209の更新を依頼する
モジュール更新処理部207への最新モジュールの送信はデバイス更新処理部206が行ってもよく、その際、更新要求処理部212は、最新モジュールをデバイス更新処理部206に送信する。
【００５１】
また、デバイス管理部211が更新要求処理部212から最新モジュールの更新を依頼された場合、デバイス管理部211はオペレータの操作等により、モジュールレポジトリ210から最新のモジュールを取得し、モジュール更新処理部207に送信する。モジュール更新処理部207は前記モジュールによって送信された最新のモジュールを監視対象デバイス202上にインストールし、問題を修正する。
【００５２】
ステップ309はステップ308で実行されたモジュール更新処理の完了を待機するステップである。ここで、一定期間、モジュールの更新が完了しない場合など、特に必要であれば、定期的にモジュール更新処理を再実行してもよい。
【００５３】
モジュール更新処理部207は、最新のモジュールがインストールされると、その通知をデバイス更新処理部206に送信することができる。ただし、モジュール更新処理部207は、更新完了の通知を明示的に送信しなくてもよく、その際、モジュール更新処理の完了は、問題を抱えたデバイスの正常動作をデバイス監視装置201が検出することによって判定することができる。
【００５４】
ステップ310は、モジュールの更新が完了したかどうかを判定するステップであり、更新完了であればステップ311へ進む。更新完了でなければ、ステップ309において、更新が完了するまで待機するか、またはモジュール更新処理の再実行を行う。
【００５５】
ステップ311は、ステップ306またはステップ307において生成された仮想デバイスプログラムまたは機能制限仮想デバイスプログラムの実行を停止し、削除するステップである。このステップにおいて、仮想デバイス管理部205は、問題を抱えたデバイスの代理として動作している仮想デバイスプログラムまたは機能制限仮想デバイスプログラムの処理を停止し、一連のデバイス更新処理を終了する。
以上が、本実施例における一般的なプログラム制御方法のフローチャートである。
【００５６】
（実施例１）
次に、本発明をホームネットワークシステムに適用した場合の第1の実施形態について、図を用いて説明する。
【００５７】
図4は、本実施例におけるシステムの構成図を表す。この図において、モジュール管理サーバ401は外部ネットワーク409を通じてホームゲートウェイ403と繋がっているモジュール管理装置203であり、正常動作モジュールB402を管理している。正常動作モジュールB402はUPnPデバイスB407上で動作する異常動作モジュールB408の問題を修正した最新のモジュールである。
【００５８】
ホームゲートウェイ403は家庭内LANであるホームネットワーク410と、外部ネットワーク409を繋ぐゲートウェイサーバであり、デバイス監視装置201として動作する。また、ホームゲートウェイ403はホームネットワーク410を通じてUPnPデバイスA405、UPnPデバイスB407、およびUPnPコントロールポイント411と接続している。
【００５９】
仮想UPnPデバイスB404は異常動作モジュールB408の動作不良によって問題を抱えるUPnPデバイスB407の代理として動作する仮想デバイスプログラムであり、ホームゲートウェイ403によって自動的に生成および実行される。
【００６０】
UPnPデバイスA405およびUPnPデバイスB407はホームゲートウェイ403により状態を監視される監視対象デバイス202であり、UPnPプロトコルを通じてUPnPコントロールポイント411から操作されるUPnPデバイスである。正常動作モジュールA406はUPnPデバイスA405上で動作している監視対象モジュール209であり、正常に動作しているモジュールである。異常動作モジュールB408はUPnPデバイスB407上で動作している監視対象モジュール209であり、動作に問題のあるモジュールである。
【００６１】
UPnPコントロールポイント411はUPnPプロトコルを利用してUPnPデバイスA405およびUPnPデバイスB407を制御するデバイス制御装置214である。
【００６２】
外部ネットワーク409はホームゲートウェイ403とモジュール管理サーバ401を接続する家庭外のネットワークである。ホームネットワーク410はホームゲートウェイ403とUPnPデバイスA405、UPnPデバイスB407、およびUPnPコントロールポイント411を接続するための家庭内ネットワークである。以上が、本実施例におけるシステムの構成である。
【００６３】
図5は、本実施例におけるホームゲートウェイ403とUPnPデバイスA405との間の通信の一例を表したシーケンス図である。ホームゲートウェイ403とUPnPデバイスA405はUPnPプロトコルを利用して通信を行い、ホームゲートウェイ403はUPnPデバイスA405のデバイス情報を取得し、当該デバイス情報を分析する処理の一例を表している。なお、これはUPnPプロトコルを利用した通信の一例を表すものであり、処理の流れを限定するものではない。
【００６４】
最初に、UPnPデバイスA405は、自身の存在を通知するためのNOTIFYメッセージをホームゲートウェイ403へ送信する（シーケンス501）。NOTIFYメッセージはUPnP Device Architecture 1.0仕様（以下、UPnP仕様）でフォーマットが規定されており、IPマルチキャストにより配信される。
【００６５】
次に、ホームゲートウェイ403はIPマルチキャストにより受信したNOTIFYメッセージが正しいものであるかを分析する処理（シーケンス502）を行う。ホームゲートウェイ403は受信したNOTIFYメッセージが正常であることを確認すると、UPnP仕様に従い、デバイスディスクリプションの取得要求をUPnPデバイスA405に対して送信する（シーケンス503）。デバイスディスクリプションはHTTPのGETリクエストによって取得することがUPnP仕様で規定されている。
【００６６】
次に、UPnPデバイスA405は、デバイスディスクリプションの取得要求に対する応答をホームゲートウェイ403に送信する（シーケンス504）。ホームゲートウェイ403はデバイスディスクリプションを取得すると、取得したデバイスディスクリプションのフォーマットに問題がないか分析する（シーケンス505）。
【００６７】
UPnP仕様に従い、受信したデバイスディスクリプションに問題がないことを確認すると、ホームゲートウェイ403は、デバイスディスクリプション内に記述されているサービスディスクリプションのURLに対し、当該サービスディスクリプションの取得要求をUPnPデバイスA405に送信する（シーケンス506）。
【００６８】
UPnPデバイスA405は、サービスディスクリプションの取得要求に対する応答をホームゲートウェイ403に送信する（シーケンス507）。ホームゲートウェイ403はサービスディスクリプションを取得すると、取得したサービスディスクリプションのフォーマットに問題がないか分析する（シーケンス508）。
【００６９】
UPnP仕様に従い、受信したサービスディスクリプションに問題がないことを確認すると、デバイスディスクリプションに記載されているイベント通知要求を行うためのURLに対し、イベント通知要求をUPnPデバイスA405へ送信する（シーケンス509）。このイベント通知要求はHTTPを拡張したSUBSCRIBEリクエストによって処理することがUPnP仕様で規定されている。
【００７０】
UPnPデバイスA405は、イベント通知要求に不備がないと判断すると、ホームゲートウェイ403に対してイベントの通知を許可する応答メッセージを送信する（シーケンス510）。ホームゲートウェイ403は、UPnPデバイスA405から送信されたイベント通知要求に対する応答メッセージに問題がないか分析し、イベントが通知されるまで待機する（シーケンス511）。
【００７１】
次に、UPnPデバイスA405は、UPnP仕様に従い、UPnPデバイスA405上で発生したイベントメッセージをホームゲートウェイ403へ送信する（シーケンス512）。ホームゲートウェイ403はUPnPデバイスA405から受信したイベントメッセージに問題がないか分析する。ホームゲートウェイ403は、このように問題が発見されるまで分析処理を繰り返し行う。
以上が、正常に動作するUPnPデバイスA405とホームゲートウェイ403との間の通信の一例である。
【００７２】
図6は、UPnPデバイスA405の正常動作モジュールA406が公開する正常なデバイスディスクリプションの例である。デバイスディスクリプションは、UPnP仕様で規定されているXML形式のテキストデータである。図6で示したデバイスディスクリプションにおいて、serviceListタグはオプションであるが、それ以外のタグは全て必須のタグとなっている。
【００７３】
serviceListタグの存在は、UPnPデバイスA405がUPnPサービスを提供していることを意味する。UPnPサービスとは、UPnPデバイスを操作するためのインタフェース仕様を提供するものであり、インタフェース仕様は当該デバイスディスクリプションのserviceタグおよびserviceタグ内のSCPDURLタグで参照されるサービスディスクリプションで規定されている。
【００７４】
UPnPデバイスA405を利用するUPnPコントロールポイント411は、当該デバイスディスクリプションおよびサービスディスクリプションを取得することで、UPnPデバイスA405を操作することができる。
【００７５】
図7はホームゲートウェイ403がUPnPデバイスB407とUPnPプロトコルを利用して通信を行い、UPnPデバイスB407が送信するデバイスディスクリプションの問題を検出した際の処理を表したシーケンス図である。これは問題検出時における具体的な処理の一例を表すものであり、処理の流れを限定するものではない。また、シーケンス701からシーケンス704までは図5で説明したシーケンス501からシーケンス504の処理を同様であるため、説明を省略する。
【００７６】
シーケンス705において、ホームゲートウェイ403は受信したデバイスディスクリプションを分析し、問題を検出する。検出された問題の具体的な例については後述する。ホームゲートウェイ403は、デバイスディスクリプションに問題が検出されると、仮想UPnPデバイスB404を生成し、当該仮想UPnPデバイスB404の実行を開始する（シーケンス706）。仮想UPnPデバイスB404は、UPnPデバイスB407が提供する不正なデバイスディスクリプションを修正し、UPnPデバイスB407の代理としてデバイスディスクリプションを提供する。この際、仮想UPnPデバイスB404は新たにNOTIFYメッセージを送信することで問題を修正したデバイスディスクリプションのURLを告知する。
【００７７】
UPnPコントロールポイント411は、当該NOTIFYメッセージを受信し、問題を修正したデバイスディスクリプションを取得することで、仮想UPnPデバイスB404が実行されてから停止されるまでの間、UPnPデバイスB407を利用することができる。
【００７８】
次に、ホームゲートウェイ403は、問題の発生したモジュールの更新要求をモジュール管理サーバ401へ送信する（シーケンス707）。当該更新要求は、例えば以下の形式で行うことが想定される。但し、これに類する形式であればよく、処理内容を限定するものではない。
【００７９】
（ア）独自に開発したエージェントプログラムをモジュール管理サーバ401上で動作させ、当該エージェントプログラムがモジュール更新要求を処理する
（イ）HTTPサーバをモジュール管理サーバ401上で動作させ、当該HTTPサーバがモジュールの取得要求を処理する
（ウ）データベースプログラムをモジュール管理サーバ401上で動作させ、当該データベースプログラムがモジュールの取得要求を処理する
（エ）OMA DMプロトコル対応デバイス管理サーバをモジュール管理サーバ401上で動作させ、当該デバイス管理サーバがモジュールの更新要求を処理する
シーケンス707では、モジュール管理サーバ401上でOMA DM等のプロトコルに対応したデバイス管理サーバプログラムが動作していることを前提としている。モジュール管理サーバ401はホームゲートウェイ403からモジュールの更新要求を受けると、正常動作モジュールB402をファイルシステムやデータベース等のモジュールレポジトリ210から取得し（シーケンス708）、当該正常動作モジュールB402をUPnPデバイスB407へ送信する（シーケンス709）。
【００８０】
UPnPデバイスB407は受信した正常動作モジュールB402のインストール処理を行い、異常動作モジュールB408を更新する（シーケンス710）。正常動作モジュールB402のインストールが完了すると、UPnPデバイスB407は更新処理の完了通知をホームゲートウェイ403へ送信する（シーケンス711）。
【００８１】
ここで、UPnPデバイスB407はモジュールの更新完了通知をモジュール管理サーバ401に対して送信することもでき、その際、ホームゲートウェイ403に対する当該更新完了通知の送信処理は、UPnPデバイスB407に代わってモジュール管理サーバ401が行ってもよい。
【００８２】
また、前述の通り、当該更新完了通知はホームゲートウェイ403に明示的に送信しなくてもよい。最後に、ホームゲートウェイ403は、仮想UPnPデバイスB404の実行を停止し、仮想UPnPデバイスB404を削除する。
【００８３】
図8は、UPnPデバイスB407の異常動作モジュールB408が公開する不正なデバイスディスクリプションのうち、データを完全に補完することが可能なデバイスディスクリプションの例である。当該デバイスディスクリプションにおいては、UPnPプロトコルでは必須でとなっているmanufacturerタグおよびmodelNameタグは存在せず、また、serviceタグの親タグとして必須となっているserviceListタグが存在しない。
【００８４】
このようなデバイスディスクリプションを受信した際、UPnPコントロールポイント411の実装によってはUPnPデバイスB407を不正なUPnPデバイスと判断し、UPnPコントロールポイント411が当該UPnPデバイスB407を発見できない可能性がある。しかし、前記必須タグの存在は、プロトコルレベルでは必須であるが、UPnPデバイスの操作には必要がない。よって、これらのタグを仮のデータによって自動的に補完したデバイスディスクリプションを生成し、当該デバイスディスクリプションを公開する。
【００８５】
仮想UPnPデバイスB404は、自動生成したデバイスディスクリプションを公開するために、UPnP仕様で規定されるNOTIFYメッセージをマルチキャスト配信する。UPnPコントロールポイント411は当該NOTIFYメッセージを受信し、正常なデバイスディスクリプションを取得することでUPnPデバイスB407を操作することが可能になる。
【００８６】
その他、UPnPデバイスを操作するためのACTIONメッセージに問題があった場合等においても、仮想UPnPデバイスB404は、当該仮想UPnPデバイスB404に対してUPnPコントロールポイント411が送信したACTIONメッセージを自動的に修正し、修正したACTIONメッセージをUPnPデバイスB407に転送するなどして問題を回避することができる。このような仮想UPnPデバイスB404を生成できることは、背景技術として既に述べた通りである。
【００８７】
図8で示した不正なデバイスディスクリプションの例以外に、回避可能な問題の例を以下に挙げる。これらは回避可能な問題の一例であり、特定の問題に限定するものではない。
（ア）NOTIFYメッセージの必須ヘッダであるNTSヘッダが存在しない
（イ）デバイスディスクリプションに不正な制御文字（0x00等）が含まれる
（ウ）サービスディスクリプションのspecVersionタグが存在しない
（エ）M-SEARCHメッセージの必須ヘッダであるMXヘッダが存在しない
図9はUPnPデバイスB407の異常動作モジュールB408が公開する不正なデバイスディスクリプションのうち、データを完全に補完することが不可能なデバイスディスクリプションの例である。当該デバイスディスクリプションにおいては、UPnP仕様では必須であったSCPDURLタグが存在しない。
【００８８】
このようなデバイスディスクリプションを受信した際、UPnPコントロールポイント411はUPnPデバイスB407が提供するサービスのサービスディスクリプションを取得することができないため、当該UPnPデバイスB407を不正なUPnPデバイスと判断し、UPnPコントロールポイント411が当該UPnPデバイスB407を発見できない可能性がある。また、SCPDURLタグはUPnPデバイスB407のサービスを利用するために必須のタグであり、自動的に仮のデータを設定することはできない。
【００８９】
よって、ホームゲートウェイ403はUPnPデバイスB407の当該SCPDURLに対応するサービスを消去したデバイスディスクリプションを自動生成し、当該デバイスディスクリプションを公開する。仮想UPnPデバイスB404は、自動生成したデバイスディスクリプションを公開するために、UPnP仕様で規定するNOTIFYメッセージをマルチキャスト配信する。UPnPコントロールポイント411は当該NOTIFYメッセージを受信し、問題のあるサービスが削除されたデバイスディスクリプションを取得することでUPnPデバイスB407の一部機能を利用することが可能になる。
【００９０】
図9で示した不正なデバイスディスクリプションの例以外に、UPnPデバイスB407の機能を一部制限する必要のある問題の例を以下に挙げる。これらは機能制限を回避することの不可能な問題の一例であり、特定の問題に限定するものではない。
【００９１】
（ア）NOTIFYメッセージの必須ヘッダであるLOCATIONヘッダが存在しない
（イ）デバイスディスクリプションを取得できない（存在しない）
（ウ）サービスディスクリプションのactionタグが存在しない
（エ）SUBSCRIBEメッセージが応答を返さない
（実施例２）
次に、本発明をホームネットワークシステムに適用した場合の第2の実施形態について、図を用いて説明する。
【００９２】
図10は、本実施例におけるシステムの構成を表す。この図において、デバイス管理センタ1001は、UPnPデバイスA405およびUPnPデバイスB407上で動作するモジュールを管理するモジュール管理装置203であり、本実施例では、異常動作モジュールB408の最新モジュールである正常動作モジュールB402を管理している。
【００９３】
デバイス管理ツール1002はデバイス管理センタ1001におけるデバイス管理部211に対応するプログラムであり、UPnPデバイスA405およびUPnPデバイスB407を管理するオペレータによって利用される管理GUIプログラムである。デバイス管理センタ1001およびデバイス管理ツール1002以外の構成については、図4に示したものと同様であるため、説明を省略する。
【００９４】
図11は本実施例におけるモジュール更新処理のシーケンス図である。これは図7において説明したシーケンスのうち、シーケンス707からシーケンス711までの処理を変更したものである。図11では、その差分情報のみを図示しており、全体の処理は図7において説明したシーケンスと同様である。
【００９５】
シーケンス1101において、デバイス管理センタ1001は、ホームゲートウェイ403からモジュールの更新要求を受けると、デバイス管理ツール1002に対し、当該要求を通知する。デバイス管理ツール1002はモジュールの更新要求を受けると、操作画面にダイアログを表示したり、オペレータにメールで通知したりすることによってモジュールの更新要求をオペレータに通知する（シーケンス1102）。
【００９６】
オペレータは更新要求の通知を受けると、デバイス管理ツール1002を操作し、最新モジュールのインストール処理を開始する（シーケンス1103）。デバイス管理ツール1002はオペレータからの操作を受けると、ファイルシステムまたはデータベース等のモジュールレポジトリ210から正常動作モジュールB402を取得し（シーケンス1104）、UPnPデバイスB407に対して当該正常動作モジュールB402を送信する（シーケンス1105）。UPnPデバイスB407は、受信した正常動作モジュールB402のインストール処理を行い（シーケンス1106）、モジュールの更新完了通知をホームゲートウェイ403へ送信する（シーケンス711）。
【００９７】
ここで、UPnPデバイスB407はモジュールの更新完了通知をデバイス管理ツール1002に対して送信することもでき、その際、ホームゲートウェイ403に対する当該更新完了通知の送信は、UPnPデバイスB407に代わってデバイス管理ツール1002が行ってもよい。また、前述の通り、当該更新完了通知はホームゲートウェイ403に明示的に送信しなくてもよい。
【００９８】
本実施例ではデバイス管理センタ1001のオペレータに対してモジュールの更新要求を通知したが、ホームゲートウェイ403はUPnPデバイスB407を利用するユーザに対して直接ダイアログ等を表示することにより当該更新要求を通知してもよい。その際、ユーザによって最新のモジュールがインストールされると、ホームゲートウェイ403はUPnPデバイスB407の動作状況から最新のモジュールがインストールされたことを判断し、仮想UPnPデバイスB404の動作を停止させる。
【００９９】
なお、本発明は上記実施形態に限定されるものではなく、特定の通信プロトコルに依存するものではない。
【図面の簡単な説明】
【０１００】
【図１】本発明で想定するハードウェアの構成を表す図である。
【図２】本発明における一般的なシステムの構成を表す図である。
【図３】本発明における一般的なモジュール更新処理のフローチャートである。
【図４】第1の実施例におけるシステムの構成を表す図である。
【図５】第1の実施例におけるデバイス情報取得処理の一般的なシーケンスを表す図である。
【図６】第1の実施例における正常なデバイスディスクリプションの例を表す図である。
【図７】第1の実施例におけるモジュール更新処理のシーケンスを表す図である。
【図８】第1の実施例における不正なデバイスディスクリプションの一例である。
【図９】第1の実施例における不正なデバイスディスクリプションの一例である。
【図１０】第2の実施例におけるシステムの構成を表す図である。
【図１１】第2の実施例におけるモジュール更新処理のシーケンスを表す図である。
【符号の説明】
【０１０１】
２０１…デバイス監視装置、２０２…監視対象デバイス、２０３…モジュール管理装置、２０４…デバイス監視部、２０５…仮想デバイス管理部、２０６…デバイス更新処理部、２０７…モジュール更新処理部、２０８…監視情報通知部、２０９…監視対象モジュール、２１０…モジュールレポジトリ、２１１…デバイス管理部、２１２…更新要求処理部、２１３…ネットワーク、２１４…デバイス制御装置、２１５…デバイス制御部
【図１】
0004959487.tif 000002
【図２】
0004959487.tif 000003
【図３】
0004959487.tif 000004
【図４】
0004959487.tif 000005
【図５】
0004959487.tif 000006
【図６】
0004959487.tif 000007
【図７】
0004959487.tif 000008
【図８】
0004959487.tif 000009
【図９】
0004959487.tif 000010
【図１０】
0004959487.tif 000011
【図１１】
0004959487.tif 000012