(57)【要約】【課題】  出荷された製品に対して従来の技術を採用するためには、ユーザにファームウエアを更新させたり、或は製品を回収してプログラムを書き換えるなどの処置が必要になり実用的でない。【解決手段】  ネットワークを介して接続されている第１機器の状態を第１プロトコルで取得し、第１機器と第２機器との間での第２プロトコルによるメッセージを獲得して記憶し、特定の状態に対応するメッセージを時系列で抽出する（Ｓ１０５）。この抽出したメッセージに基づいて、特定の状態を生じさせる第１プロトコルを修正して（Ｓ１０８）第２機器と通信を行う。【選択図】  図１１
2007049385.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークを介して接続されている第１機器との間で第１プロトコルにより当該第１機器の状態を取得する取得手段と、
前記ネットワークを介して接続されている前記第１機器と第２機器との間での第２プロトコルによるメッセージを獲得する獲得手段と、
前記取得手段により取得した前記第１機器の状態及び前記獲得手段により獲得したメッセージを、前記状態及びメッセージのそれぞれの発生した日時情報と共に記憶する記憶手段と、
前記記憶手段に記憶された機器の状態の内、特定の状態に対応するメッセージを時系列で抽出する抽出手段と、
前記抽出手段により抽出した前記メッセージに基づいて、通信を行う通信手段と、
を有することを特徴とする通信装置。
【請求項２】
前記抽出手段は、複数のメッセージが存在する場合、最も多く発生するメッセージを抽出することを特徴とする請求項１に記載の通信装置。
【請求項３】
ネットワークを介して接続されている第１機器との間で第１プロトコルにより当該第１機器の状態を取得する取得手段と、
前記ネットワークを介して接続されている前記第１機器と第２機器との間での第２プロトコルによるメッセージを獲得する獲得手段と、
前記取得手段により取得した前記第１機器の状態及び前記獲得手段により獲得したメッセージを、前記状態及びメッセージのそれぞれの発生した日時情報と共に記憶する記憶手段と、
前記記憶手段に記憶された前記第１機器の状態に基いて、前記第１機器が第１の状態から第２の状態に移行しようとしているか否かを判定する判定手段と、
前記判定手段により移行しようとしている判定されると、前記第１機器を前記第２の状態以外の状態に移行させるためのメッセージを送信する送信手段と、
を有することを特徴とする通信装置。
【請求項４】
ネットワークを介して複数の機器との間で通信を行う通信装置の制御方法であって、
ネットワークを介して接続されている第１機器との間で第１プロトコルにより当該第１機器の状態を取得する取得工程と、
前記ネットワークを介して接続されている前記第１機器と第２機器との間での第２プロトコルによるメッセージを獲得する獲得工程と、
前記取得工程で取得した前記第１機器の状態及び前記獲得工程で獲得したメッセージを、前記状態及びメッセージのそれぞれの発生した日時情報と共にメモリに記憶する工程と、
前記メモリに記憶された機器の状態の内、特定の状態に対応するメッセージを時系列で抽出する抽出工程と、
前記抽出工程で抽出した前記メッセージに基づいて、通信を行う通信工程と、
を有することを特徴とする通信装置の制御方法。
【請求項５】
前記抽出工程では、複数のメッセージが存在する場合、最も多く発生するメッセージを抽出することを特徴とする請求項４に記載の通信装置の制御方法。
【請求項６】
ネットワークを介して複数の機器との間で通信を行う通信装置の制御方法であって、
ネットワークを介して接続されている第１機器との間で第１プロトコルにより当該第１機器の状態を取得する取得工程と、
前記ネットワークを介して接続されている前記第１機器と第２機器との間での第２プロトコルによるメッセージを獲得する獲得工程と、
前記取得工程で取得した前記第１機器の状態及び前記獲得工程で獲得したメッセージを、前記状態及びメッセージのそれぞれの発生した日時情報と共にメモリに記憶する工程と、
前記メモリに記憶された前記第１機器の状態に基いて、前記第１機器が第１の状態から第２の状態に移行しようとしているか否かを判定する判定工程と、
前記判定工程で移行しようとしている判定されると、前記第１機器を前記第２の状態以外の状態に移行させるためのメッセージを送信する送信工程と、
を有することを特徴とする通信装置の制御方法。
【請求項７】
請求項４乃至６のいずれか１項に記載の制御方法を実行することを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信プロトコルにより通信を行う通信装置、その制御方法及びプログラムに関するものである。
【背景技術】
【０００２】
通信に用いられるプロトコルは数多く存在し、様々な形態や層（レイヤ）で存在する。例えば、プロトコルの階層化のモデルは、国際標準化機構（ＩＳＯ）や国際電気通信連合（ＩＴＵ）等により７階層のＯＳＩ参照モデルとして標準化されており、これに従ってプロトコルを分類することができる。現在、インターネットで標準であるＩＰは第３層（ネットワーク層）のプロトコルであり、ＴＣＰやＵＤＰは第４層（トランスポート層）のプロトコル、そしてＨＴＴＰやＦＴＰ，ＳＭＴＰ，ＰＯＰなどは第５層（セッション層）以上のプロトコルである。またネットワーク機器や家電に用いられるようなＵＰｎＰなどの統合的なプロトコルも存在している。これらの通信プロトコルをネットワーク機器や家電製品に実装して各ノード間のInteroperabiliry（相互接続性）を確保することが一般化してきている。
【０００３】
しかし上述したように、様々な通信プロトコルが存在し、それぞれ異なる規格、仕様、目的が存在している。また同じ目的を達成するものでも、異なるプロトコルが数種類存在することも事実である。
【０００４】
このためユーザは、ネットワーク機器や家電製品を購入する際には、同一のプロトコルが実装されている製品を選択しなければならない。更に、同一のプロトコルが実装されている製品を選択しても、プロトコル自身の改良（バージョンアップ）や、新しい製品における新しいプロトコルの出現等により、これら機器間や製品間でのInteroperabiliryを確保できなくなる可能性がある。
【０００５】
このような問題に対して、それぞれ異なったプロトコルを採用するネットワークのノード間で通信を行う技術が特許文献１に記載されている。この特許文献１は、ネッワーク上にあるノードがどの種類のプロトコルを使用するかを、その機器の送信アドレスとプロトコルの種類とに対応付けて記憶しておき、その記憶した情報を基に、機器ごとにプロトコルを切り替えて通信する技術を開示している。これを実現するためには、各機器は前もって数種類のプロトコルを実装している必要がある。各機器において、実装するプロトコルの数には制限があり、存在するプロトコルを全て実装することは事実上不可能である。また、このような技術では、実装されていないプロトコルや未知のプロトコルに対応することは不可能である。
【特許文献１】特開平８−９７８７８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
上述したように異なるプロトコルを使用するネットワーク機器や家電機器同士、また同一のプロトコルであってもバージョンの違いによりネットワーク機器や家電機器同士でInteroperabiliryを確保できなくなるという問題があった。
【０００７】
また特許文献１の技術は、主として製品の出荷時における対応に関するもので、出荷後の対応は全く考慮されていない。出荷された製品に対して特許文献１の技術を採用するためには、ユーザにファームウエアを更新させたり、或は製品を回収してプログラムを書き換えるなどの処置が必要になり、実用的でない。
【０００８】
本発明は、上記従来技術の問題点を解決することを目的とする。
【０００９】
また本願発明の特徴は、ネットワークに接続された通信装置がファームウェアのアップデートをすることなく、未知のプロトコルに対応できることにある。
【課題を解決するための手段】
【００１０】
上記目的を達成するために本発明の一態様に係る通信装置は以下のような構成を備える。即ち、
ネットワークを介して接続されている第１機器との間で第１プロトコルにより当該第１機器の状態を取得する取得手段と、
前記ネットワークを介して接続されている前記第１機器と第２機器との間での第２プロトコルによるメッセージを獲得する獲得手段と、
前記取得手段により取得した前記第１機器の状態及び前記獲得手段により獲得したメッセージを、前記状態及びメッセージのそれぞれの発生した日時情報と共に記憶する記憶手段と、
前記記憶手段に記憶された機器の状態の内、特定の状態に対応するメッセージを時系列で抽出する抽出手段と、
前記抽出手段により抽出した前記メッセージに基づいて、通信を行う通信手段と、
を有することを特徴とする。
【００１１】
上記目的を達成するために本発明の一態様に係る通信装置は以下のような構成を備える。即ち、
ネットワークを介して接続されている第１機器との間で第１プロトコルにより当該第１機器の状態を取得する取得手段と、
前記ネットワークを介して接続されている前記第１機器と第２機器との間での第２プロトコルによるメッセージを獲得する獲得手段と、
前記取得手段により取得した前記第１機器の状態及び前記獲得手段により獲得したメッセージを、前記状態及びメッセージのそれぞれの発生した日時情報と共に記憶する記憶手段と、
前記記憶手段に記憶された前記第１機器の状態に基いて、前記第１機器が第１の状態から第２の状態に移行しようとしているか否かを判定する判定手段と、
前記判定手段により移行しようとしている判定されると、前記第１機器を前記第２の状態以外の状態に移行させるためのメッセージを送信する送信手段と、
を有することを特徴とする。
【００１２】
上記目的を達成するために本発明の一態様に係る通信装置の制御方法は以下のような工程を備える。即ち、
ネットワークを介して複数の機器との間で通信を行う通信装置の制御方法であって、
ネットワークを介して接続されている第１機器との間で第１プロトコルにより当該第１機器の状態を取得する取得工程と、
前記ネットワークを介して接続されている前記第１機器と第２機器との間での第２プロトコルによるメッセージを獲得する獲得工程と、
前記取得工程で取得した前記第１機器の状態及び前記獲得工程で獲得したメッセージを、前記状態及びメッセージのそれぞれの発生した日時情報と共にメモリに記憶する工程と、
前記メモリに記憶された機器の状態の内、特定の状態に対応するメッセージを時系列で抽出する抽出工程と、
前記抽出工程で抽出した前記メッセージに基づいて、通信を行う通信工程と、
を有することを特徴とする。
【００１３】
上記目的を達成するために本発明の一態様に係る通信装置の制御方法は以下のような工程を備える。即ち、
ネットワークを介して複数の機器との間で通信を行う通信装置の制御方法であって、
ネットワークを介して接続されている第１機器との間で第１プロトコルにより当該第１機器の状態を取得する取得工程と、
前記ネットワークを介して接続されている前記第１機器と第２機器との間での第２プロトコルによるメッセージを獲得する獲得工程と、
前記取得工程で取得した前記第１機器の状態及び前記獲得工程で獲得したメッセージを、前記状態及びメッセージのそれぞれの発生した日時情報と共にメモリに記憶する工程と、
前記メモリに記憶された前記第１機器の状態に基いて、前記第１機器が第１の状態から第２の状態に移行しようとしているか否かを判定する判定工程と、
前記判定工程で移行しようとしている判定されると、前記第１機器を前記第２の状態以外の状態に移行させるためのメッセージを送信する送信工程と、
を有することを特徴とする。
【発明の効果】
【００１４】
本発明によれば、ネットワークに接続された通信装置がファームウェアのアップデートをすることなく、未知のプロトコルに対応できる。
【発明を実施するための最良の形態】
【００１５】
以下、添付図面を参照して本発明の好適な実施の形態を詳しく説明する。尚、以下の実施の形態は特許請求の範囲に係る発明を限定するものでなく、また本実施の形態で説明されている特徴の組み合わせの全てが発明の解決手段に必須のものとは限らない。
【００１６】
図１は、本発明の実施の形態に係るネットワークシステム全体の構成図である。
【００１７】
ここではネットワーク１００に、デジタルカメラ１０１、デジタルビデオカメラ１０２、プリンタ１０３、スキャナ１０４、プロジェクタ１０５が接続されている。尚、本実施形態では上記機器を挙げているが、本発明はこれら機器に限定されるものではない。
【００１８】
それぞれの機器は、それぞれに実装されているプログラムを実行するために必要な資源、例えば計算機能（ＭＰＵ，プログラムメモリ等）、データ保持機能（メモリ等）などを持ち、それによる機器そのものを制御する制御機能と、ネットワーク１００を介して他の機器と通信するための通信機能を有する。また後述するプロトコル学習制御機能を有している。尚、これら各種機能は、メモリに記憶されたプログラムに従って実行される中央演算装置（ＭＰＵ）による制御に基づいて達成される場合で説明する。
【００１９】
図２は、本発明の実施の形態に係る上述した各機器の制御部のハードウェア構成を示すブロック図である。従って、カメラ、プリンタ、スキャナ等の各種機器は、それぞれの機能、例えばカメラやプリンタといった機能を実現するために、図２に示す構成以外に、例えばプリンタエンジン、レンズユニット、画像処理部、操作部等を備えているが、ここではそれらの構成の説明は省略して示している。
【００２０】
２００は各ユニット間を接続するための入出力バス（アドレスバス、データバス、及び制御バス）である。タイマ２０１は、ＭＰＵ２０６の指示に基づいて計時動作を実行し、指示された時間間隔で割り込みを発生させる。また、いわゆるウォッチドッグタイマ機能や計時機能を有する。ＲＯＭ２０２は、ＭＰＵ２０６により実行されるプログラムのコードや変化しない固定データを記憶する。ＲＡＭ２０３は、主メモリとしてプログラム実行時のワークエリアを提供している。パラレルコントローラ２０４は、ＭＰＵ２０６で扱われる並列データをそのまま外部装置と入出力する。シリアルコントローラ２０５は、ＭＰＵ２０６で扱われる並列データを直列データとして出力したり、直列データを並列データに変換して入力する。ＭＰＵ２０６は、プログラムの命令を逐次実行するとともに、割り込み制御等を実行している。デバイスコントローラ２０７は、ハードディスク、ディスプレイ（表示部）など一般的な外部入出力装置と接続され、これら装置を制御している。ＤＭＡＣ２０８はＤＭＡ制御部で、メモリと外部装置間でＤＭＡによるデータの授受を制御する。Ａ／Ｄコンバータ２０９は、アナログ信号を入力してデジタルにデータに変換している。ここではセンサ等により感知されたアナログ信号を入力して数値化する。Ｄ／Ａコンバータ２１０は、デジタルデータをアナログ信号に変換しており、外部のアクチュエータ等の操作制御を行うのに使用される。
【００２１】
図３は、本実施の形態に係る各機器が具備しているプロトコル学習制御機能３００のモジュール構成を示すブロック図である。
【００２２】
このプロトコル学習制御機能３００は、上述のデジタルカメラ１０１、デジタルビデオカメラ１０２、プリンタ１０３、スキャナ１０４、プロジェクタ１０５などの機器に実装される。ここでは、このプロトコル学習制御機能３００は、ＭＰＵ２０６とＲＯＭ２０２に記憶されたプログラムにより実現されている。
【００２３】
このプロトコル学習制御機能３００は、コマンドディスパッチモジュール３０１、プロトコル制御モジュール３０２、プロトコルモジュール３０３、学習コントロールモジュール３０４、仮想プロトコルモジュール３０５、プロファイル管理モジュール３０６、プロトコル監視モジュール３０７、自機プロファイル管理データ３０８、他機プロファイル管理データ３０９を備えている。以下、それぞれを詳しく説明する。
【００２４】
コマンドディスパッチモジュール３０１は、上述のデジタルカメラ１０１、プロジェクタ１０５等の機器に実装されたアプリケーション（ＲＯＭ２０２に記憶されている）からの要求を受付け、製品出荷時に実装されている既存プロトコルを起動するか、学習結果で得た新規仮想プロトコルを起動するかを選択する。このコマンドディスパッチモジュール３０１は、後述する自機プロファイル管理データ３０８を検索して、既存或は新規仮想プロトコルを選択するか判断する。更に、このコマンドディスパッチモジュール３０１は、上述の判断結果から、後述するプロトコル制御モジュール３０２か、後述する学習コントロールモジュール３０４のいずれかを呼び出す機能も有する。
【００２５】
プロトコル制御モジュール３０２は、後述するプロトコルモジュール３０３の制御を行う。また学習コントロールモジュール３０４からのリクエストを受付ける機能と、その結果を受け渡す機能も有する。
【００２６】
プロトコルモジュール３０３は、ＵＰｎＰ（Universal Plug and Play），Ｊｉｎｉ，Ｊｘｔａ等の機器制御用プロトコルが実装されたモジュールであり、それぞれのプロトコルの機能を有する。これは製品出荷時点で予め実装されているものを想定しているが、これらプロトコルに限定されるものではない。
【００２７】
学習コントロールモジュール３０４は、コマンドディスパッチモジュール３０１からのリクエストを受取り、後述する仮想プロトコルモジュール３０５を制御する。またプロトコル制御モジュール３０２に対してリクエストを発行する機能を有する。また、この学習コントロールモジュール３０４は、後述するプロトコル監視モジュール３０７に対してネットワーク上でやり取りされるメッセージの監視の開始、監視の終了などの制御を行う機能と、プロトコル監視モジュール３０７からのメッセージを受け取る機能を有する。学習コントロールモジュール３０４は、後述するプロファイル管理モジュール３０６の制御とメッセージの受け渡しを行う。仮想プロトコルモジュール３０５は、学習コントロールモジュール３０４からの指示により、ネットワーク１００を介して他の機器に対してメッセージを送信するとともに、他の機器からのメッセージを受信する。
【００２８】
プロファイル管理モジュール３０６は、学習コントロールモジュール３０４の指示により、後述する自機プロファイル管理データ３０８と他機プロファイル管理データ３０９に対してデータの読み込み、書き出しを指示する。また学習コントロールモジュール３０４の指示によるデータの受け渡し、及び後述する機能を実行する。
【００２９】
プロトコル監視モジュール３０７は、学習コントロールモジュール３０４の指示によりネットワーク１００に流れるメッセージを監視し、そのメッセージを取得する。また学習コントロールモジュール３０４に先のメッセージを受け渡す機能も有する。自機プロファイル管理データ３０８は、後述するデータを検索可能な状態で永続的にデータを保存する所謂データベースシステムであり、検索、読み書き、追加、削除可能な機能を有する。また他機プロファイル管理データ３０９は、後述するデータを検索可能な状態で永続的にデータを保存する所謂データベースシステムであり、検索、読み書き、追加、削除可能な機能を有する。
【００３０】
コマンドディスパッチモジュール３０１、プロトコル制御モジュール３０２、プロトコルモジュール３０３、学習コントロールモジュール３０４、仮想プロトコルモジュール３０５、プロファイル管理モジュール３０６、プロトコル監視モジュール３０７は、ＭＰＵ２０６により実現される。また、自機プロファイル管理データ３０８、他機プロファイル管理データ３０９は、ＲＡＭ２０３上に設けられる。
【００３１】
図４は、本発明の実施の形態に係るプロファイル管理モジュール３０６の機能構成を説明するブロック図である。
【００３２】
このプロファイル管理モジュール３０６は、プロファイル情報表現部４００、プロファイル情報操作部４０１、情報変更予測部４０２、統計情報解析部４０３を有している。
【００３３】
プロファイル情報表現部４００は、ステータス等のように時系列で変化する情報を時系列で表現する。ここでは情報の親子関係、情報の兄弟関係に加えて、情報の時間経過の軸を導入した三次元構造により、制御対象となる機器に予め定義されている仕様や設定及び履歴といったプロファイル情報を表現する。
【００３４】
プロファイル情報操作部４０１は、プロファイル情報表現部４００によって表現される機器のプロファイル情報を取得、或は操作する。情報変更予測部４０２は、プロファイル情報表現部４００で表現される機器のプロファイル情報における情報の時間の経過に伴う変化を解析して、今後の情報の変更を予測する。統計情報解析部４０３は、プロファイル情報表現部４００によって表現される機器のプロファイル情報に理論的な範囲が設定されている場合、時間の経過に伴う情報の統計情報を解析し、理論的な範囲と実測範囲とが異なると実測値の範囲を提示する。
【００３５】
図５は、本実施の形態で使用するプロファイル（Profile）の構造を説明する図である。また図６は、図５の構造をＸＭＬ表記で記述した例を示している。図５と図６の例では例えば、ＡＰＩバージョン、電源（Power），ステータス（Status）といったステータス情報は時系列で変化するため、時間軸を導入して時系列での変化に対応している。
【００３６】
図５において、プロファイルは固定である静的情報（Static Information）と、サービス（Service）及びステータス情報（Status）とに分類されている。ここで静的情報（Static Information）には、変更されないＩＰアドレス（IPAddress）、デバイスの名称（DeviceName）、型名（DeviceType）が含まれている。サービス（Service）には、サービスＡ，Ｂが含まれ、サービスＡには、名称、コマンド、後状態（afterStat）が含まれている。更にステータスには、メッセージとステータスが含まれ、これらは時間情報と共に管理されている。
【００３７】
図６は、図５のプロファイル構造から、最新のプロファイル情報のスナップショットを作成した場合の一例を示す図である。
【００３８】
図において、６００は、図５に示すプロファイルをＸＭＬで表記したものである。６０１は、ステータス情報中のメッセージのヒストリ（履歴）を示し、６０２はステータス情報中のステータスのヒストリを示している。更に６０３は、メッセージのヒストリ６０１に記述された各メッセージ（mh0, mh1, mh2）の内容を示している。これらメッセージのヒストリ６０１及びステータスのヒストリ６０２では、そのイベントが発生した日時情報と、対応するメッセージ名（mh0, mh1, mh2）、或はステータス（idle, busy, processing）が記述されている。尚、ここで「idle」はアイドル状態を示し、「busy」はビジー状態、「processing」は処理中をそれぞれ示している。
【００３９】
このような表現形式を用いて、時間軸上で過去のプロファイル情報のスナップショットを作成できる。尚、これら図５及び図６のプロファイル構造における各項目はあくまでも一例を示したもので、本発明はこれら項目に限定されるものではない。
【００４０】
次に、本実施の形態に係る通信システムにおける処理の流れを図７を参照して説明する。
【００４１】
図７は、本発明の実施の形態に係る通信システムの構成を示す概念図である。
【００４２】
図において、ノードＡ（NodeA）７００、ノードＢ（NodeB）７０１、ノードＣ（NodeC）７０２のそれぞれは、図１のデジタルカメラ１０１、デジタルビデオカメラ１０２、プリンタ１０３、スキャナ１０４、プロジェクタ１０５のいずれかに対応している。しかし、本発明は上記のデバイスに限定されるものではない。
【００４３】
ここでノードＡ７００、ノードＢ７０１には、既存プロトコルとしてＵＰｎＰプロトコルが実装され、ノードＢ７０１とノードＣ７０２には、新規プロトコルとしてXMLWebServiceプロトコルが実装されているとする。しかし、本発明は上記プロトコルに限定されるものではない。
【００４４】
ここで、ノードＡ７００とノードＢ７０１が既存プロトコル（ＵＰｎＰプロトコル（以下、プロトコルＡ））を使用し、ノードＢ７０１とノードＣ７０２が新規プロトコル（XMLWebServiceプロトコル（以下、プロトコルＢ））を使用している状況において、ノードＡ７００がノードＢ７０１とノードＣ７０２の通信を学習し、ノードＡ７００がプロトコルＢを使用できるまでの処理の流れを説明する。
【００４５】
ノードＡ７００の学習コントロールモジュール３０４は、プロトコル制御モジュール３０２に対してノードＢ７０１の状態を取得するよう指示を出す。この指示を受けたプロトコル制御モジュール３０２は、プロトコルＡを用いてノードＢ７０１の状態を取得する。こうして取得したノードＢ７０１の状態を、ノードＡ７００の学習コントロールモジュール３０４がノードＢ７０１のＩＰアドレスと共に受け取り、プロファイル管理モジュール３０６に渡し、他機プロファイル管理データ３０９に格納するように指示する。プロファイル管理モジュール３０６は、他機プロファイル管理データ３０９のＩＰアドレス欄とbeforeStat欄（あるメッセージが機器Ｂに送られる前の機器Ｂの状態を示す）に書き込みを行う。
【００４６】
図８は、図７に示す通信システムにおける処理の流れを説明する図である。
【００４７】
まずステップＳ８００で、ノードＡ７００の学習コントロールモジュール３０４から、プロトコル制御モジュール３０２に対してノードＢ７０１の状態を取得するように指示する。これによりステップＳ８０１，Ｓ８０２で、その指示を受けたプロトコル制御モジュール３０２は、プロトコルＡを用いてノードＢ７０１の状態を取得する。そしてステップＳ８０３で、学習コントロールモジュール３０４が、取得したノードＢ７０１の状態をノードＢ７０１のＩＰアドレスとともに受け取ってプロファイル管理モジュール３０６に渡す。これによりプロファイル表現部４００がプロファイル情報を作成して他機プロファイル管理データ３０９に格納する。
【００４８】
次にステップＳ８０４で、ノードＡ７００の学習コントロールモジュール３０４は、プロトコル監視モジュール３０７に対して、ノードＣ７０２からネットワーク１００に流れるメッセージを監視して記録するように指示する。これによりノードＣ７０２からノードＢ７０１に対して何らかのメッセージが送信されると（ステップＳ８０５，Ｓ８０６）、プロトコル監視モジュール３０７は、そのメッセージを獲得して学習コントロールモジュール３０４に受け渡す。これにより学習コントロールモジュール３０４は、ステップＳ８０７で、その受け取ったメッセージをプロファイル管理モジュール３０６に渡して他機プロファイル管理データ３０９に書き込むように指示する。これによりプロファイル管理モジュール３０６は、他機プロファイル管理データの３０９の、そのメッセージのＩＰアドレスと同一のプロファイル情報に、その受け取ったメッセージをプロファイル情報表現部４００を用いて書き込む。
【００４９】
次にステップＳ８０８で、メッセージの書き込み指示を出した学習コントロールモジュール３０４は、プロトコル制御モジュール３０２に対して、前述と同様にノードＢ７０１の状態を取得するように指示する。これによりプロトコル制御モジュール３０２は、ステップＳ８０９，Ｓ８１０で、プロトコルＡを用いてノードＢ７０１の状態を取得する。そしてステップＳ８１１で、学習コントロールモジュール３０４は、その取得したノードＢ７０１の状態をノードＢ７０１のＩＰアドレスと共に受け取って、プロファイル管理モジュール３０６に渡す。これにより、そのノードＢ７０１の状態は他機プロファイル管理データ３０９に格納される。ここでプロファイル管理モジュール３０６は、他機プロファイル管理データ３０９のＩＰアドレス項目にある同じＩＰアドレスのプロファイル情報に、プロファイル情報表現部４００を用いてノードＢ７０１の状態を書き込む。
【００５０】
このようにしてこれ以降も、ノードＢ７０１の状態の取得、記録、またノードＣ７０２からノードＢ７０１へ送信されるメッセージの取得、記録、またノードＢ７０１の状態の取得、記録等の処理を繰り返す。
【００５１】
図９は、本実施の形態に係る他機プロファイル管理データ３０９の一例を示す図である。
【００５２】
この他機プロファイル管理データ３０９は、ＩＰアドレス（IPAddress）欄９０１、メッセージ（Message）欄９０２、beforeStat欄９０３、afterStat欄９０４を有している。それぞれの欄に対して、その内容の検索、読み書き、追加、削除が可能である。またＩＰアドレス欄９０１に対して、メッセージ欄９０２、beforeStat欄９０３、afterStat欄９０４がそれぞれ一意に特定される。ＩＰアドレス欄９０１は、ネットワーク１００に接続されている機器のＩＰアドレスを格納する。メッセージ欄９０２は、モニタしているネットワーク１００を流れるメッセージを格納する。beforeStat欄９０３、afterStat欄９０４は、ネットワーク１００に接続されている機器の状態を示す情報を格納しており、beforeStat欄９０３はメッセージ欄９０２で示すメッセージが送信される前の、その機器（ＩＰアドレスで指定される）の状態を示し、afterStat欄９０４はメッセージが送信された後の、その機器の状態を示している。また９０５は、メッセージが送信された日時情報を格納する欄を示している。
【００５３】
図９の例では、ノードＡ７００は、ノードＢ７０１が、図９のレコード９１０のメッセージ欄９０２で示すメッセージをノードＣ９０２から受信した後、その状態が「アイドル」から「処理中」に変更されたことを認識する。これにより、レコード９１０のafterStat欄９０４には「処理中」が記憶される。
【００５４】
この後、アプリケーションからＩＰアドレスを含む制御命令を受けたコマンドディスパッチモジュール３０１は、プロファイル管理モジュール３０６に他機プロファイル管理データ３０９からプロファイル情報操作部４０１を用いて、そのＩＰアドレスと同じアドレスを持つプロファイル情報を取得して保持する。そのプロファイル情報を取得できない場合、つまりＩＰアドレスと同一の値を持つプロファイル情報が無い場合は未知プロトコルではないと判断し、プロトコル制御モジュール３０２に先のＩＰアドレスを含む制御命令を引き渡す。以降プロトコルモジュール３０３を用いて他機の制御を行う。
【００５５】
一方、ＩＰアドレスと同一の値を持つプロファイル情報が取得できた場合は未知プロトコルであると判断し、プロファイル管理モジュール３０６に自機プロファイル管理データ３０８から、そのコマンドを受信する前の状態（beforeStat）と、受信した後の状態（afterStat）を、プロファイル情報操作部４０１を用いて取得する。こうして取得した状態情報をキーにして、先に取得したプロファイル情報から同一の値を、プロファイル情報操作部４０１を用いて検索し、検索できるとその情報の日時情報を取得する。
【００５６】
こうして日時情報を取得した学習コントロールモジュール３０４は、その取得したプロファイル情報から、その日時と同一、或は直前の日時を属性として備えるメッセージ項目の値を取得する。こうして取得した、そのメッセージ項目の値を用い、仮想プロトコルモジュール３０５を介して、例えばノードＣ７０２に対して、そのメッセージを送信して機器を制御する。
【００５７】
図１０は、図７の通信システムにおいて、ディスプレイ（表示ユニット）（ノードＢ）とデジタルカメラ（ノードＣ）との間での画像データの転送シーケンス（プロトコルＢ）を説明する図である。この場合も、ノードＡ７００はプロトコルＡを有しており、ノードＢ７０１の状態をモニタしてプロトコルＢでの通信を行うことを意図しているものとする。
【００５８】
まず１００１の以前に、ノードＡ７００はノードＢ７０１が「アイドル」状態にあることを認識しているものとする。これは図８のＳ８０１，Ｓ８０２と同様にしてノードＢ７０１との間でプロトコルＡを用いて取得できる。次に１００１で、ノードＣ７０２からジョブがある旨が通知される。そして、その要求に対して「ＯＫ」で応答する際（１００２）、ノードＢ７０１の状態は「アイドル」から「レディ」状態になる。ノードＡ７００は、ノードＢ７０１とノードＣ７０２との間でのプロトコルＢによるメッセージ「CreateJpb」を獲得する。ノードＡ７００は、ノードＢ７０１との間でプロトコルＡにより、そのノードＢ７０１の状態「レディ」を取得する。次に１００３で、表示すべきデータ（メッセージ）がノードＣ７０２からノードＢ７０１に送信される。これにより、ノードＢ７０１の状態は、「レディ」からデータを受信したモード「Received（受信済）（画像の表示開始）」に移行する。ノードＡ７００は、ノードＢ７０１とノードＣ７０２との間でのプロトコルＢによるメッセージ「Send」を獲得する。ノードＡ７００は、ノードＢ７０１との間でプロトコルＡにより当該ノードＢ７０１の状態「Received（受信済）（画像の表示開始）」を取得する。
【００５９】
これら情報を取得して他機プロファイル管理データ３０９に記憶しているノードＡ７００は、ディスプレイ（ノードＢ）が「アイドル」状態から「レディ」状態に移行するコマンド（１００１）に対応する、プロトコルＡのコマンドを求める。更に、ノードＡ７００は、ディスプレイ（ノードＢ）が「レディ」状態から「受信済」状態に移行するコマンド（１００３）に対応する、プロトコルＡのコマンドを求める。そして、これらコマンドを使用して仮想プロトコルＢを作成し、ノードＡ７００とノードＣ７０２（デジタルカメラ）との間で通信を行うことができるようになる。即ち、ノードＡ７００は、ノードＢ７０１の状態の変化に基づいて、プロトコルＢで、データを送信するために用いられるコマンド（CreateJob、Send）を知ることができる。
【００６０】
またノードＡ７００からノードＣ７０２（デジタルカメラ）に画像データを転送するには、まずプロトコルＢのCreateJobに相当するメッセージをノードＣ７０２（カメラ）に送信する。そのメッセージに対して「ＯＫ」で応答する際、ノードＣ７０２（デジタルカメラ）は「アイドル」状態から「レディ」状態に移行する。
【００６１】
次に、保存すべきデータ（画像）が付与されたプロトコルＢのメッセージ「Send」に対応するプロトコルＡのメッセージが、ノードＡ７００からノードＣ７０２に送信される。これにより、ノードＣ７０２の状態は、「レディ」からデータを受信したモード「Received（受信済）（画像の保存開始）」に移行する。即ち、ノードＡ７００は、プロトコルＢを用いてデータをノードＣ７０２に送信する場合、ノードＢ７０１の状態の変化に基づいて学習したプロトコルＢで用いられるデータを送信するためのコマンドを作成してノードＣ７０２に送信する。
【００６２】
＜未知プロトコルメッセージの修正の流れ＞
図１１は、本発明の実施の形態に係る未知プロトコルメッセージの修正処理の流れを説明するフローチャートである。ここでは図７の構成において未知プロトコルを使用するノードが追加されて（機器Ｄ〜Ｆ）、それら機器の数が多数になった場合を想定する。
【００６３】
まずステップＳ１００〜Ｓ１０２で、前述の図８のステップＳ８００，Ｓ８０１，Ｓ８０２で示すノード状態の取得、記録、ノード間に流れるメッセージの取得、記録、ノードの状態の取得、記録の作業の繰り返しを複数の機器に対して行う。これにより、他機プロファイル管理データ３０９には、各機器のプロファイル情報が蓄積される。例えば、機器Ａ、機器ＢがＵＰｎＰ、機器Ｂと機器Ｃ、機器Ｄ、機器ＥがXMLWebServiceのプロトコルを使用している場合に、機器ＡがXMLWebServiceを学習する時には、機器ＢとＣ、機器ＢとＤ、機器ＢとＥで送受信されるメッセージを蓄積し、それと同時に機器Ａは機器Ｂの状態（Status）をＵＰｎＰで取得する。
【００６４】
次にステップＳ１０３で、プロファイル管理モジュール３０６は統計情報解析部４０３を用いて、他の機器のプロファイル情報のステータスを取り出す。そしてステップＳ１０４で、そのステータスと同じステータスの属性値である日時情報を取得する。ここで取り出したステータスがレディ状態（ready）であれば、例えば、ノードＢ、ノードＣのステータスが「ready」だったそれぞれの日時を取得する。次にステップＳ１０５で、同じ日時、或は直前のメッセージ項目にある値を取得する。次にステップＳ１０６で、最も多く発生しているメッセージを抽出する。機器Ｃ，Ｄ，Ｅの中で、機器Ｄだけが機器Ｂを操作するメッセージ（XMLWebServiceで意図することは同じ）自体が他の機器と異なるか、或はわずかに異なる場合に、機器Ｃ，Ｅが送信するメッセージが最多メッセージとなる。
【００６５】
これを全ての他機プロファイル情報のステータスに対して行い、次にステップＳ１０７で、メッセージ項目の値を総当りで比較する。即ち、全てのステータス（例えば、「ready」「transiting」「Sleep」「Down」）のそれぞれについて、最多のメッセージを抽出し、それぞれのステータスにおいて、最多のメッセージとそれ以外のメッセージを比較する。
【００６６】
次にステップＳ１０８に進み、ステップＳ１０７で比較した値の中で全く異なった値、或いはわずかな差異がある値を、プロファイル情報表現部４００を用いて、収集した他の機器のプロファイル情報で多数を占める値に修正する。例えば、メッセージ項目では、プリントを意味するコマンドに最も多く「＜XML Version="1.0"＞」という文字列が含まれているとする。そして、この文字列が最多のメッセージ以外のメッセージには含まれていない場合、最多のメッセージ以外のメッセージに文字列「＜XML Version="1.0"＞」を追加する。プログラムで処理する場合、この違いが大きく作用する場合があるので、本実施の形態に係るシステムでは、より仕様に準拠した形のものを採用して相互接続性を高めるようにしている。
【００６７】
このような処理により、機器プロファイルは、記録した全ての時間に対して最多のメッセージを持つことになる。これにより、ある過去の時点のプロファイルで過去の未知プロトコルメッセージを使用して、それを使用する機器との相互接続性の精度を高めることが可能となる。
【００６８】
図１２は、本実施の形態に係るネットワークの変形例を示す図である。
【００６９】
このような機器構成を持つネットワークにおいて、機器が未知プロトコルを学習して最多メッセージに修正する。更に、未知プロトコルのバージョンアップしたものを学習して最多メッセージを修正し、それを用いて過去の未知プロトコルで他の機器と通信が可能となる場合を説明する。このようなシステム処理の流れにおいて説明したように、ノードＡ１１００がプロトコルＡ（例えば、ＵＰｎＰ）を用いて、ノードＢ１１０１とノードＣ１１０２、ノードＤ（NodeD）１１０３、ノードＥ（NodeE）１１０５の送受信のプロトコルＢ（例えば、XMLWebService）を取得し、最多メッセージを修正する。その後、例えば機器のファームウエアのアップデートなどで、ノードＣ１１０２、ノードＤ１１０３、及び、ノードＥ１１０５のプロトコルＢがバージョンアップされ、プロトコルＢ'になった場合を想定する。
【００７０】
ここでも前述の処理と同じ処理を行い、ノードＡ１１００は、ノードＢ１１０１とノードＣ１１０２、ノードＤ１１０３、ノードＥ１１０５との送受信のプロトコルＢ'を取得し、最多メッセージに修正を行う。
【００７１】
ここで、プロトコルＢ（或はＢ'）を使用するノードＦ（NodeF）１１０４が新規にこのネットワーク構成に追加された場合にも、ノードＡ１１００はアプリケーションから与えられる指示により、ある時間軸で機器プロファイルを指定して、プロトコルＢ（或はＢ'）のメッセージ（最多メッセージ）を使用することが可能となる。こうしてノードＡ１１００とノードＦ１１０４との間でプロトコルＢによる通信が可能となる。
【００７２】
ここで、ノードＣ，Ｄ，Ｅが用いるプロトコルＢにわずかな違いがある場合、例えば、最多メッセージには「＜XML Version="1.0"＞」という文字列が入っているが、最多メッセージ以外のメッセージには入っていない場合、ノードＡ７００は、プロトコルＢの最多メッセージを使ってノードＦ１１０４と通信する。これにより最多メッセージ以外のメッセージを使う場合と比較して、ノードＦ１１０４と通信できる可能性が高くなる。
【００７３】
＜状態予測の処理の流れ＞
図１３は、本発明の実施の形態に係る通信システムにおける状態予測の処理の流れを説明する図である。ここでは図７のネットワーク構成において未知プロトコルを使用するノードの数が多数になった場合を想定する。
【００７４】
ステップＳ１１０〜Ｓ１１２では、図１１のステップＳ１００〜Ｓ１０２と同様にして、ノード状態の取得、記録、ノード間に流れるメッセージの取得、記録、ノードの状態の取得、記録の作業の繰り返しを複数に機器について実行する。これにより、他機プロファイル管理データ３０９には、他の機器のプロファイル情報が蓄積される。
【００７５】
統計情報解析部４０３は、他機プロファイル管理データ３０９の他の機器のプロファイル情報のステータスの理論値の範囲（例えば、システムステータスでは、「ready」「Transiting」「Sleep」「Down」の４つの範囲）を持っている場合、ステータス情報の時間経過に伴う統計情報を解析する。
【００７６】
いま機器Ａが機器Ｂをダウン（電源断）させるプロセスを行っている過程で、機器Ｃが機器Ｂのプロファイル情報から、その機器Ｂのステータスを取得する。その値が「Sleep」（第一の状態）の場合、情報変更予測部４０２は、その機器Ｂがダウンする（「Down」（第２の状態）に移行する）と予測する。
【００７７】
一方、機器Ｃは、機器Ｂのステータスがレディ状態「Ready」になるように（「Down」状態にならないように）機器Ｂにメッセージを送信して機器Ｂを制御する。これにより機器Ｂがレディ状態になると、機器Ａはその機器Ｂをダウンさせるプロセスを中断する。この処理では、機器Ｂがダウンして一度電源をオフすると機器Ｂが使用できなくなるので、機器Ｃは機器Ａが機器Ｂをダウンさせないようにしている。
【００７８】
このような構成により、他の機器（例えばＤ）の状態を予測し、その予測した状態が、その機器Ｄを使用しようとしている機器にとって意図しない状態であれば、その機器Ｄに対して、その予測した状態に移行させないようなコマンドを発行する。これにより、機器Ｄを所望する状態に移行させることができる。
【００７９】
なお本発明は、前述した実施の形態の機能を実現するソフトウェアのプログラムを、システム或いは装置に直接或いは遠隔から供給し、そのシステム或いは装置のコンピュータが、その供給されたプログラムコードを読み出して実行することによっても達成される場合を含む。その場合、プログラムの機能を有していれば、その形態はプログラムである必要はない。従って、本発明の機能処理をコンピュータで実現するために、該コンピュータにインストールされるプログラムコード自体も本発明を実現するものである。つまり、本発明には、本発明の機能処理を実現するためのコンピュータプログラム自体も含まれる。その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、ＯＳに供給するスクリプトデータ等、プログラムの形態を問わない。
【００８０】
プログラムを供給するための記憶媒体としては、例えば、フロッピー（登録商標）ディスク、ハードディスク、光ディスク、光磁気ディスク、ＭＯ、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、磁気テープ、不揮発性のメモリカード、ＲＯＭ、ＤＶＤ（ＤＶＤ−ＲＯＭ，ＤＶＤ−Ｒ）などがある。その他のプログラムの供給方法としては、クライアントコンピュータのブラウザを用いてインターネットのホームページに接続し、該ホームページから本発明のコンピュータプログラムそのもの、もしくは圧縮され自動インストール機能を含むファイルをハードディスク等の記憶媒体にダウンロードすることによっても供給できる。また本発明のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるホームページからダウンロードすることによっても実現可能である。つまり本発明の機能処理をコンピュータで実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるＷＷＷサーバも、本発明のクレームに含まれるものである。
【００８１】
また、本発明のプログラムを暗号化してＣＤ−ＲＯＭ等の記憶媒体に格納してユーザに配布し、所定の条件を満足するユーザに対してインターネットを介してホームページから暗号化を解く鍵情報をダウンロードさせ、その鍵情報を使用することにより暗号化されたプログラムを実行してコンピュータにインストールさせて実現することも可能である。
【００８２】
またコンピュータが、読み出したプログラムを実行することによって、前述した実施形態の機能が実現される他、そのプログラムの指示に基づき、コンピュータ上で稼動しているＯＳなどが、実際の処理の一部又は全部を行ない、その処理によっても前述した実施形態の機能が実現され得る。
【００８３】
さらに、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部又は全部を行ない、その処理によっても前述した実施形態の機能が実現される。
【００８４】
以上説明したように本実施の形態によれば、既知のプロトコルを用いて、未知のプロトコルのメッセージと、そのメッセージを受信した機器の変化とを対応付けて記憶して解析することにより、例え、その機器の出荷後であっても、その機器のプログラムなどを修正することなく、未知のプロトコルに対応できる。
【００８５】
また、他の機器のプロファイルを蓄積することにより、未知プロトコルの実装上の間違いや差異を判断できるため、より精度の高い未知プロトコルのメッセージを作成して、その未知プロトコルにより通信を行うことが可能になる。
【００８６】
更に、機器の将来の遷移状態を予測することが可能となり、その予測した状態への移行を抑止できる。またある時点で、機器が複数の機器から使用されるような競合が起きた場合でも、その機器において不利益が生ずる状態になることが避けられるという効果がある。
【図面の簡単な説明】
【００８７】
【図１】本発明の実施の形態に係るネットワークシステム全体の構成図である。
【図２】本発明の実施の形態に係る各機器の制御部のハードウェア構成を示すブロック図である。
【図３】本実施の形態に係るプロトコル学習制御機能のモジュール構成を示すブロック図である。
【図４】本発明の実施の形態に係るプロファイル管理モジュールの機能構成を説明するブロック図である。
【図５】本実施の形態で使用するプロファイル（Profile）の構造を説明する図である。
【図６】図５の構造をＸＭＬ表記で記述した例を示す図である。
【図７】本発明の実施の形態に係る通信システムの構成を示す概念図である。
【図８】図７に示す通信システムにおける処理の流れを説明する図である。
【図９】本実施の形態に係る他機プロファイル管理データの一例を示す図である。
【図１０】図７の通信システムにおいて、ディスプレイ（表示ユニット）（ノードＢ）とデジタルカメラ（ノードＣ）との間での画像データの転送シーケンス（プロトコルＢ）を説明する図である。
【図１１】本発明の実施の形態に係る未知プロトコルメッセージの修正処理の流れを説明するフローチャートである。
【図１２】本実施の形態に係るネットワークの変形例を示す図である。
【図１３】本発明の実施の形態に係る状態予測の処理の流れを説明する図である。
【図１】
2007049385.tif 000003
【図２】
2007049385.tif 000004
【図３】
2007049385.tif 000005
【図４】
2007049385.tif 000006
【図５】
2007049385.tif 000007
【図６】
2007049385.tif 000008
【図７】
2007049385.tif 000009
【図８】
2007049385.tif 000010
【図９】
2007049385.tif 000011
【図１０】
2007049385.tif 000012
【図１１】
2007049385.tif 000013
【図１２】
2007049385.tif 000014
【図１３】
2007049385.tif 000015