(57)【要約】【課題】動的なＵＩ（ユーザーインターフェース）を提供することを目的とする。【解決手段】デバイスとネットワークにより接続された、該デバイスを操作するリモート操作端末装置であって、デバイスよりデバイス情報を取得する手段と、当該デバイスに対応したデバイステンプレートと、前記取得したデバイス情報及び当該デバイステンプレートから、該デバイスを操作する為のユーザインタフェースを構築する手段を持つ事を特徴とするリモート操作端末装置等、を提供する。【選択図】図３
2007114888.tif 000002
【特許請求の範囲】
【請求項１】
デバイスとネットワークにより接続された、前記デバイスを操作するリモート操作端末装置であって、
前記デバイスよりデバイス情報を取得する取得手段と、
前記デバイスに対応したデバイステンプレートと、
前記取得手段で取得したデバイス情報及び前記デバイステンプレートから、前記デバイスを操作する為のユーザインタフェースを構築する構築手段とを有することを特徴とするリモート操作端末装置。
【請求項２】
複数のデバイステンプレートと、
前記複数のデバイステンプレートから前記デバイスに対応したものを選択する選択手段とを有することを特徴とする請求項１に記載のリモート操作端末装置。
【請求項３】
前記デバイステンプレートは、前記デバイス情報に記載の操作コマンドと、前記デバイステンプレートに記載のユーザインタフェースを構成するＵＩ部品との対応情報及び前記デバイスを特定する為のデバイスＩＤを代入するデバイス識別情報を含み、
前記デバイス識別情報に操作対象とするデバイスのデバイスＩＤを代入することを特徴とする請求項１または２に記載のリモート操作端末装置。
【請求項４】
前記デバイステンプレートは、構築されるユーザインタフェースにおけるＵＩ部品の有無及びレイアウトを変更する為の条件記述を含むことを特徴とする請求項１〜３の何れか１項に記載のリモート操作端末装置。
【請求項５】
前記構築されるユーザインタフェースにおけるＵＩ部品の有無及びレイアウトを変更する為の条件記述は、取得したデバイス情報に記載の操作コマンドの有無を基に条件判定することを特徴とする請求項４に記載のリモート操作端末装置。
【請求項６】
前記構築されるユーザインタフェースにおけるＵＩ部品の有無及びレイアウトを変更する為の条件記述は、取得したデバイス情報に記載の状態変数の値を基に条件判定することを特徴とする請求項４に記載のリモート操作端末装置。
【請求項７】
前記テンプレートを入れ替える入替手段を有することを特徴とする請求項１〜６の何れか１項に記載のリモート操作端末装置。
【請求項８】
前記構築手段は、複数のデバイスからのデバイス情報と、前記複数のデバイスそれぞれに対応するデバイステンプレートが複数組み合わされることで、前記複数のデバイスを制御する為のユーザインタフェースを構築することを特徴とする請求項１〜７の何れか１項に記載のリモート操作端末装置。
【請求項９】
前記複数のデバイスからのデバイス情報に順位付けする順位付け手段と、
前記順位付け手段によるデバイス情報の順序付けに従って、前記複数のデバイスそれぞれに対応するデバイステンプレートの組み合わせを変更する変更手段を有することを特徴とする請求項８に記載のリモート操作端末装置。
【請求項１０】
前記複数のデバイスからのデバイス情報に順位付けする順位付け手段と、
前記デバイステンプレートが適用される際の表示画面におけるレイアウト情報と、
前記複数のデバイステンプレートそれぞれとの対応情報を含む親テンプレートとを有し、
前記構築手段は、前記複数のデバイステンプレートから前記ユーザインタフェースを構築する際には、前記親テンプレートを用いて、前記複数のデバイステンプレートそれぞれのレイアウト情報を決定することによりユーザインタフェースを構築し、
前記順位付け手段による複数のデバイス情報の順序付けに従って、前記親テンプレートにおけるレイアウト情報と前記デバイステンプレートとの対応情報を変更する変更手段を有することを特徴とする請求項８に記載のリモート操作端末装置。
【請求項１１】
前記変更手段は、前記順位付け手段による複数のデバイス情報の順序付けに従って、前記親テンプレートにおけるレイアウト情報と前記デバイステンプレートとの対応情報を変更するとともに、前記レイアウト情報と対応する特定のデバイステンプレートを、前記デバイステンプレートに対応するデバイスに対応する第２のデバイステンプレートに変更することを特徴とする請求項１０に記載のリモート操作端末装置。
【請求項１２】
自身の内外からのイベント情報を随時受け取る受け取り手段を有し、
前記入替手段は、前記イベントが特定のイベントであった場合には、前記デバイスのユーザインタフェースを構築する為のデバイステンプレートを、前記デバイスに対応した第２のデバイステンプレートに入れ替え、
前記構築手段は、前記取得手段が取得したデバイス情報及び前記第２のデバイステンプレートから、前記デバイスを操作する為の新たなユーザインタフェースを構築することを特徴とする請求項１〜７の何れか１項に記載のリモート操作端末装置。
【請求項１３】
前記受け取り手段が受け取るイベント情報は、特定のデバイスのネットワークへの接続の検知に伴うイベント情報であることを特徴とする請求項１２に記載のリモート操作端末装置。
【請求項１４】
前記受け取り手段が受け取るイベント情報は、前記デバイスからの状態変化に伴うイベント情報であることを特徴とする請求項１２に記載のリモート操作端末装置。
【請求項１５】
前記受け取り手段が受け取るイベント情報は、ユーザインタフェースに対するユーザによる操作によって発生したイベント情報であることを特徴とする請求項１２に記載のリモート操作端末装置。
【請求項１６】
前記受け取り手段が受け取るイベント情報により、前記複数のデバイスそれぞれに対応するデバイステンプレートの一部あるいは全部を、前記複数のデバイスにそれぞれ対応する第２のデバイステンプレートに変更する変更手段を有し、
前記構築手段は、前記複数のデバイスからのデバイス情報と、前記複数ののデバイスそれぞれに対応するデバイステンプレートが複数組み合わされることで、前記複数のデバイスを制御する為のユーザインタフェースを構築することを特徴とする請求項１２〜１５の何れか１項に記載のリモート操作端末装置。
【請求項１７】
前記受け取り手段が受け取るイベント情報により、前記複数のデバイスそれぞれに対応するデバイステンプレートの組み合わせを変更する変更手段を有し、
前記構築手段は、前記複数のデバイスからのデバイス情報と、前記複数のデバイスそれぞれに対応するデバイステンプレートが組み合わされることで、前記複数のデバイスを制御する為のユーザインタフェースを構築することを特徴とする請求項１２〜１５の何れか１項に記載のリモート操作端末装置。
【請求項１８】
前記デバイステンプレートが適用される際の表示画面におけるレイアウト情報と、
前記複数のデバイステンプレートそれぞれとの対応情報を含む親テンプレートとを有し、
前記構築手段は、前記複数のデバイステンプレートから前記ユーザインタフェースを構築する際には、前記親テンプレートを用いて、前記複数のデバイステンプレートそれぞれのレイアウト情報を決定することにより前記ユーザインタフェースを構築し、
前記変更手段は、前記受け取り手段が受け取るイベント情報により、前記親テンプレートにおけるレイアウト情報と前記デバイステンプレートとの対応情報を変更することを特徴とする請求項１７に記載のリモート操作端末装置。
【請求項１９】
前記変更手段は、前記受け取り手段が受け取るイベント情報により、前記親テンプレートにおけるレイアウト情報と前記デバイステンプレートとの対応情報を変更するとともに、前記レイアウト情報と対応する特定のデバイステンプレートを、前記デバイステンプレートに対応するデバイスに対応する第２のデバイステンプレートに変更することを特徴とする請求項１８に記載のリモート操作端末装置。
【請求項２０】
前記入替手段は、前記受け取り手段が受け取るイベント情報により、前記親テンプレートを、適用するデバイステンプレートのレイアウト情報が異なる第２の親テンプレートに入れ替えることを特徴とする請求項１８または１９に記載のリモート操作端末装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はリモート操作端末装置に関し、例えばデバイスから取得したデバイス情報を利用して、ユーザインタフェースを構築する際に用いて好適な技術に関する。
【背景技術】
【０００２】
従来、ネットワークを介してデバイスの操作を行おうとする際、操作端末は予め、操作対象であるデバイスについて、操作信号を送るための通信プロトコル、操作信号の意味、操作信号自体の送信手続き、操作範囲情報、及び、デバイスからのフィードバック信号を処理する手続きなどの情報を知っている必要があった。
【０００３】
即ち、操作端末においては、操作対象のデバイス個別に対応したレイアウト情報を含むユーザインタフェース（以下ＵＩと略す）を構成する為の、専用の操作用アプリケーションが必要であった。この為、簡易な操作端末においては、前記の操作用アプリケーションの追加や入れ替えができない為に、デバイスの種類の数だけ操作端末が必要となる場合があった。
【０００４】
この様な不便を解決する為に、ネットワーク及びプロトコルとして広く標準として使用されている物を利用し、デバイスのカテゴリをデバイス種別として分類分けし、同じデバイス種別のものについては、共通の操作を共通のＵＩで操作可能とする為の、リモート操作の為の仕組みが存在している。
【０００５】
例えば、UPnP（詳細についてはhttp://www.upnp.org/ を参照）の仕組みを使用する事で、デバイス及び操作端末のネットワークにおける発見、探索、能力交換、制御、応答、及び表示機能などの手続きを共通化する事が可能となる。これにより、デバイス及び操作端末がUPnPに対応しており、尚且つ操作端末が操作可能なデバイス種別のものであれば、デバイスのメーカーや機種形式に関わらず、リモート操作を行う事が可能となっている。
【０００６】
この時、操作端末は、同一のデバイス種別のデバイスであっても、例えば詳細機能の有無や操作のパラメータ範囲など、各デバイス固有の機能差異を吸収する為に、ＵＩを構成して操作を行う前に、操作をしようとするデバイスのデバイス情報を取得し、その内容に基づき、操作アプリケーション内の条件判定により、最終的なＵＩの構成を行っていた。あるいは、デバイスから該デバイスに適した標準的な文書形式のＵＩデータを得ることにより、ＵＩを構成していた。
【０００７】
また、前記の様な標準に依らず、操作端末において、ＵＩを構成する為のデバイス情報として、より多種多様の情報を取得する事で、デバイスの状態変化や、複数のデバイスによる協調動作に対応する為に動的にＵＩを構成する為の数々の技術が開示されている。
また、特許文献１に記載の「ＧＵＩ（Graphical User Interface）駆動型ネットワーク制御システム、及びＧＵＩ駆動型ネットワーク制御システムに用いるデバイス並びにコントローラ」においては、操作されるデバイス自身が操作画面を構成する為のＧＵＩ部品を保持し、また当該ＧＵＩ部品は自身の機能を示すアプリケーション情報を保持し、操作端末は、デバイスより前述のＧＵＩ部品を読み込み、前記アプリケーション情報を用いてＵＩを構成する事で、各デバイスの各機能に適したＵＩを操作端末において動的に構成する事で、各デバイスを統合的に動作させる技術が開示されている。
【０００８】
また、特許文献２に記載の「制御仲介サーバ、制御機器及び制御対象機器」においては、複数のデバイスを操作端末において制御する際に、当該制御を仲介するサーバを設け、複数のデバイスの状態関連情報を含むデバイス情報を当該仲介サーバで取得し、該仲介サーバにおいて、前述の状態関連情報に基づき、ＵＩを構成する為の定義データを端末装置に送信する事で、複数のデバイスを統合して制御する為のＵＩを構成する技術が開示されている。
【０００９】
また、特許文献３に記載の「デバイス管理装置」においては、操作端末とは別のデバイス管理装置において、デバイスより取得したデバイス情報をXML（eXtensible Markup Language）データとして保持し、ＵＩを表示する様に操作端末から要求された際には、デバイスに関連する情報及び制御端末に関連する情報に基づいて選択された、XMLデータ変換の為の情報を含むスタイルシートをテンプレートの如く利用して、前述のXMLデータを変換し、これを操作端末において、表示する技術が開示されている。
【００１０】
また、特許文献４に記載の「画像表示装置、画像表示システム、及び画像表示方法」においては、メインデータファイル、マップデータファイル、カメラリストデータファイル、と各々のスタイルシートファイルを用いて、複数が接続されているモニタリングカメラの画面を構成することで、スタイルシートを交換するだけでモニタリング画面の表示スタイルを変更することができる技術が開示されている。
【００１１】
また、特許文献５に記載の「システム制御方式及び装置」においては、デバイスを制御する為のオブジェクト化された操作情報を操作端末が読み込み、当該オブジェクトを実行する事でＵＩが実行され、当該ＵＩを操作する事で、デバイスに対する操作を、特別なドライバやアプリケーションを必要とせずに、透過的に行う為の技術が開示されている。
【００１２】
また、特許文献６に記載の「入力制御装置、画像入力装置、画像出力管理装置、画像出力システム、プログラム、及び記録媒体」においては、ネットワークから構成される画像入出力システムにおいて、サーバが個々のデバイス情報に基づいてＵＩを生成する信号を生成して、これを操作端末に送信する事で、デバイス種別共通のＵＩを提供する為の技術が開示されている。
【００１３】
また、特許文献７に記載の「表示情報確定方法及び装置、表示情報確定のためのソフトウェア・プロダクトを格納した記憶媒体」においてはページテンプレートに、フォーマッタ特定情報と表示属性情報を含み、このフォーマッタが起動することで、表示属性に従ってレンプレートに埋め込むコンテンツの選択・配置・表示順序・表示時間や表示エリアのコンテンツサイズへの適応等の制御を行う事で、HTMLファイルの編集やCGI等のサーバプログラムを修正することなく、ページテンプレートに埋め込むコンテンツの内容やレイアウトを変更する為の技術が開示されている。
【００１４】
さらに、前述の様に、デバイス情報を基にＵＩを構築する操作端末においては、同一のデバイス情報を取得した場合でも、操作端末において、複数種類のＵＩを構築する事が要求される場合がある。例えば、単一のデバイスを操作対象として表示領域一杯にＵＩを構築している状態から、複数のデバイスを同時に操作する為の複合的なＵＩ画面に変更するものや、あるいは、デバイスからの映像表示画面が中心となるＵＩでは、デバイスの設定操作を行う場合には各種のＵＩ部品を表示し、設定終了後に映像を楽しむ場合にはＵＩ画面内の映像表示領域を大きく表示し、操作の為の最低限のＵＩのみを表示するもの等がある。
【００１５】
また、操作端末におけるＵＩは、デバイス自体のネットワークへの接続検知や、デバイスの状態変化、あるいはユーザによるＵＩへの操作など、操作端末が受け取る各種のイベント情報により、ＵＩ自体を動的に変更するものも知られている。例えば、操作端末が受け取るイベントの種類によっては、ＵＩを単一のデバイスのものから複数のデバイスからなる複合ＵＩに動的に変更したり、あるいは、その逆にＵＩの数を減らしたり、また、当該複数のデバイスに対応するＵＩを相互に入れ替えたりするものも存在していた。
【００１６】
【特許文献１】特開２０００−３３３２６９号公報
【特許文献２】特開２００３−２８０７３１号公報
【特許文献３】特開２００４−１８５５４１号公報
【特許文献４】特開２００１−３３３４２１号公報
【特許文献５】特開平７−４４２９０号公報
【特許文献６】特開２００２−１６９６７７号公報
【特許文献７】特開２００１−５１８２２号公報
【発明の開示】
【発明が解決しようとする課題】
【００１７】
しかし、前記のUPnPの仕組みを利用する事で、操作端末で構成されるＵＩは、同一の操作端末上においては、ＵＩ部品やレイアウト等のＵＩの見た目や操作感がメーカーや機種形式に関わらず同一のものとなる為に、ＵＩによる差別化が図り辛いものであった。
【００１８】
さらに、操作が可能なはずのデバイス種別のデバイスであっても、操作端末が知らない機能や、新たなデバイス種別のデバイスについては、操作アプリケーションにおける条件判定が行えず、その結果、操作端末内のアプリケーションを変更しない限り、当該デバイスの新機能や新デバイスの操作自体行う事はできなかった。
【００１９】
さらに、デバイスから該デバイスに適した標準的な文書形式のＵＩデータを得ることによりＵＩを構成する場合には、デバイスが保持している操作端末によらないＵＩデータを利用するため、操作端末の画面サイズなどによっては操作性の悪いものになる場合があった。
【００２０】
さらに、特許文献１に記載の「ＧＵＩ（Graphical User Interface）駆動型ネットワーク制御システム、及びＧＵＩ駆動型ネットワーク制御システムに用いるデバイス並びにコントローラ」においては、操作されるデバイス自身がＧＵＩ部品及び当該ＧＵＩ部品の機能情報を保持し、操作端末がこれらのオブジェクトを読み込む事でＵＩを構成する為に、多くのＵＩの為の画面を持つデバイスの場合は、デバイスの持つデータ量及び操作端末に送るデータ量が莫大な物となってしまうという問題点があった。
【００２１】
また、操作端末においても、ＧＵＩ部品の機能情報を理解し、これに基づいて実行する仕組みが必要となる。さらに、操作端末上で、簡単にＵＩのＧＵＩ部品等のデザインを変更する事は不可能であるという問題点もあった。
【００２２】
さらに、特許文献２に記載の「制御仲介サーバ、制御機器及び制御対象機器」においては、デバイスと操作端末の他に、統合されたＵＩを構成する為の仲介サーバが必要であり、また、仲介サーバは予め決められたデバイス同士の組み合わせにしか対応しておらず、それ以外のデバイスではＵＩが構成されないという問題点があった。また、デバイスの状態関連情報は仲介サーバで使用される為に、操作端末において、状態関連情報を基に、動的なＵＩの変更が行えないという問題点もあった。
【００２３】
さらに、特許文献３に記載の「デバイス管理装置」においては、操作端末とは別のデバイス管理装置が必要であり、また、当該デバイス管理装置において、デバイス情報に基づいてデバイスの状態によりテンプレートを選択変更するだけの構成であるので、デバイス管理装置においてテンプレートが選択された後は、操作端末においては、相手を識別する情報（デバイス識別子）を直接利用して、デバイスの状態やユーザ操作に基づき、テンプレートを選択変更し、ＵＩを動的に変更する事ができず、情報の表示は可能であるが、デバイスの操作を行うことが困難であった。
【００２４】
さらに、特許文献４に記載の「画像表示装置、画像表示システム、及び画像表示方法」においては、メインデータファイル、マップデータファイル、カメラリストデータファイルには、対応するスタイルシートのリンクが直接含まれており、スタイルシートにリンクを埋め込む際（すなわち、モニタリング画面をユーザが編集する際）のカメラの接続状況と実際にモニタリング画面を表示する場合のカメラの接続状況が一致しない場合があるという問題点があった。
【００２５】
さらに、特許文献５に記載の「システム制御方式及び装置」においては、デバイスを制御する為のオブジェクト化された操作情報を操作端末が読み込み、当該オブジェクトを実行する事でＵＩが実行され、当該ＵＩを操作する事で、デバイスに対する操作を行うものである為に、デバイスと操作端末が、オブジェクト化された操作情報を共有する為の、共通のアーキテクチャを必要とするものであり、さらに、オブジェクト化された操作情報は、その容量も大きくなり易く、通信や記憶装置に対するリソース要求が大きくなるという問題点があった。
【００２６】
さらに、特許文献６に記載の「入力制御装置、画像入力装置、画像出力管理装置、画像出力システム、プログラム、及び記録媒体」においては、ネットワークから構成される画像入出力システムにおいて、サーバが個々のデバイス情報に基づいてＵＩを生成する信号を生成して、これを操作端末に送信する事で、デバイス種別共通のＵＩを提供するものである為に、操作端末が異なっても、デバイス毎に同じＵＩが生成され、また、操作端末においては、生成されたＵＩを動的に変更できないという問題点があった。
【００２７】
さらに、従来のテンプレートを利用してWebページを作成する場合には、自由度の高いページを作成することが可能であったが、Webページ作成者に高い能力が必要とされるという問題があった。また、特許文献７に記載の「表示情報確定方法及び装置、表示情報確定のためのソフトウェア・プロダクトを格納した記憶媒体」においては、ページテンプレートから起動するフォーマッタというWeb作成の為のツールを用意することでWeb作成者の負荷を軽減することができるが、フォーマッタはハードコーディングされたプログラムであり、フォーマッタが対応しない表示属性の制御を行おうとする場合や、フォーマッタが適応したルール以外でレイアウト等の表示制御を行おうとする場合には、新しいフォーマッタをプログラミングし直す必要があるために、作成されるページの自由度は用意されるフォーマッタに制限されるという問題があった。
【００２８】
さらに、デバイス情報を基にＵＩを構築する操作端末において、同一のデバイス情報から、状況に応じて複数種類のＵＩを構築する事が要求される場合は、操作端末において予め、デバイス毎に複数のＵＩを実行可能なＵＩアプリケーションとして用意しておく必要があり、アプリケーションの容量を肥大化させてしまうという問題点があると同時に、数多くの種類のＵＩを保持する事は操作端末のリソースを浪費するものであり、また、後から新規のＵＩを追加する事は、当該容量の大きくなったＵＩアプリケーション自体を入れ替える必要があり、事実上不可能であるという問題点があった。
【００２９】
また、操作端末におけるＵＩを、デバイス自体のネットワークへの接続検知や、デバイスの状態変化、あるいはユーザによるＵＩへの操作など、操作端末が受け取る各種のイベント情報により、ＵＩ自体を動的に変更するものは、操作端末のＵＩアプリケーションが、ＵＩを動的に変更するべきイベントそれぞれに対応する必要があり、また、複数のデバイスに対応する複数種類のＵＩを動的に変更するものも、操作端末で対応するデバイスの数が増えるにつれ、ＵＩアプリケーションの容量が爆発的に増えてしまうという致命的な問題点があった。
【００３０】
以上のような従来例の構成は図２８のように示すことができる。例えば、操作端末と操作されるデバイスが直接接続される構成の場合は（a）、操作端末と操作されるデバイスの間に仲介サーバを設ける構成の場合は（b）のようになる。
【００３１】
操作端末２８０１とデバイス２８０２とが直接接続される場合には、例えば特許文献１においてはデバイス２８０２自身がＧＵＩ部品およびＧＵＩ部品の機能情報（アプリ情報）を保持し、それを操作端末との間でやり取りすることにより、ＵＩを構成しているが、操作画面の数が増えるほど、また操作画面が複雑になればなるほど、操作端末２８０１−デバイス２８０２間を流れるデータは膨大な物となってしまうという問題があった。またこの場合、デバイスは操作端末の能力などを全く考慮せずしないため、デバイスが送るプレゼンテーションが操作端末に最適であるとは限らなかった。
【００３２】
また、特許文献５においては操作端末側で複数のＵＩアプリケーション（操作情報２８０６などを含むアプリケーションロジック２８０５等）を用意しておく必要があり、数多くのＵＩを用意するためには、操作端末のリソースを浪費され、後から新規のＵＩを追加する為には、アプリケーション自体を入れ替える必要があった。
【００３３】
また、操作端末２８０７とデバイス２８０８がデバイス管理装置や制御装置などの仲介サーバ２８０９を介して接続される場合には、特許文献２においては仲介サーバ２８０９が操作端末とデバイスの対応表などのように予め決められた組み合わせにしか対応しておらず、対応表にないデバイスではＵＩが構成されないなどの問題があった。
【００３４】
また、特許文献３および特許文献６においてはデバイス情報２８１１を基に、デバイスの情報やデバイス種別によってＵＩ定義データ２８１２（ＵＩデータ作成のためのテンプレート等）を選択するが、一旦選択した後は、デバイスの状態や操作端末におけるユーザ操作によってＵＩを動的に変更することができないという問題があった。
【００３５】
本発明は前述の問題点に鑑み、動的なＵＩ（ユーザーインターフェース）を提供できるようにすることを目的としている。
【課題を解決するための手段】
【００３６】
本発明は前記課題を解決するために、デバイスとネットワークにより接続された、前記デバイスを操作するリモート操作端末装置であって、前記デバイスよりデバイス情報を取得する取得手段と、前記デバイスに対応したデバイステンプレートと、前記取得手段で取得したデバイス情報及び前記デバイステンプレートから、前記デバイスを操作する為のユーザインタフェースを構築する構築手段とを有することを特徴とするリモート操作端末装置等、を提供する。
【発明の効果】
【００３７】
本発明によれば、デバイスを操作する為のＵＩは、デバイス情報及びデバイステンプレートから構築される為に、操作端末のプログラムを変更する事無くデバイステンプレートを入れ替える事でＵＩの変更が可能となる効果がある。
【００３８】
また、本発明によれば、複数のデバイステンプレートから各デバイスに対応したデバイステンプレートを選択することができるので、デバイス毎に最適なＵＩを構築することができるという効果がある。
【００３９】
また、本発明によれば、デバイステンプレートに、デバイス情報に記載の、操作コマンドとデバイステンプレートに記載のＵＩ部品との対応情報、及び、デバイスＩＤを代入する為のデバイス識別情報を含み、さらに、当該デバイス識別情報にデバイスＩＤを代入する手段を持つ事で、デバイス毎に最適なレイアウトやＵＩ部品を使用したＵＩを構築できると共に、複数あるデバイスの内、特定のデバイスを特定したインタラクティブなＵＩが実現できる効果がある。
【００４０】
また、本発明によれば、デバイステンプレートに、構築されるＵＩにおけるＵＩ部品の有無及びＵＩのレイアウトを変更する為の条件記述を含む事で、同一のデバイステンプレートを用いた場合でも、デバイス情報の内容に基づき、各デバイスに最適な、それぞれ異なるＵＩ部品やレイアウトからなるＵＩを構築することが可能となる効果がある。
【００４１】
また、本発明によれば、必要に応じてデバイステンプレートを入れ替えることができるので、より柔軟にＵＩを変更することができるという効果がある。
【００４２】
また、本発明によれば、複数のデバイスからのデバイス情報と、それぞれのデバイスに対応するデバイステンプレートを複数組み合わせて、複数のデバイスを制御するためのユーザインタフェースを構築する事で、ある１つのデバイスが機能更新などのバージョンアップをした場合でも全ＵＩを更新することなく、そのデバイスに対応するデバイステンプレートのみを変更することで、複数のデバイスを制御する為のユーザインタフェースを更新することができる効果がある。
【００４３】
また、本発明によれば、複数のデバイスからのデバイス情報に順位付けを行い、その順位付けに従って、それぞれのデバイスに対応する複数のデバイステンプレートから構成されているＵＩを、デバイステンプレートの組み合わせを変更する事で、操作対象となる複数のデバイスの組み合わせが変更されたＵＩを容易に実現できる効果がある。
【００４４】
また、本発明によれば、ＵＩを構成している複数のデバイステンプレートが、それぞれのデバイステンプレートが適用される操作画面上のレイアウト情報を保持する親テンプレートと共に用いられ、さらに、複数のデバイスからのデバイス情報に順位付けを行い、この順位付けに従って、前記親テンプレートにおけるレイアウト情報とデバイステンプレートとの対応情報を変更してＵＩを再構築する事により、デバイスに対応する個々のＵＩを簡単に入れ替える事ができる効果がある。
【００４５】
また、本発明によれば、複数のデバイスからのデバイス情報の順位付けに従って、前記親テンプレートにおけるレイアウト情報とデバイステンプレートとの対応情報を変更してＵＩを再構築し、前記レイアウト情報と対応する特定のデバイステンプレートを第二のデバイステンプレートに変更することでより柔軟なＵＩ実現ができるという効果がある。
【００４６】
また、本発明によれば、操作端末内外からの特定のイベント情報を適宜受ける事で、現在使用中のデバイステンプレートを変更し、当該イベント情報が発生した状況に合った、第二のデバイステンプレートからなる新たなＵＩを動的に再構築し、イベント情報が発生した状況に対応した適切なＵＩに変更できる効果がある。
【００４７】
また、本発明によれば、操作端末内外からの特定のイベント情報を受ける事で、複数のデバイステンプレートから構成されているＵＩを、前記複数のデバイステンプレートを部分的に、あるいは全面的に、第二のデバイステンプレートに変更し、操作対象となる複数のデバイスの、ＵＩ画面構成上の主従関係等を変更するイベント情報などに対応した、新たなＵＩを動的に再構築できる効果がある。
【００４８】
また、本発明によれば、操作端末内外からの特定のイベント情報を受け、複数のデバイステンプレートから構成されているＵＩを、デバイステンプレートの組み合わせを変更する事で、操作対象となる複数のデバイスの組み合わせが変更されたＵＩを容易に実現できる効果がある。
【００４９】
また、本発明によれば、ＵＩを構成している複数のデバイステンプレートが、それぞれのデバイステンプレートが適用される操作画面上のレイアウト情報を保持する親テンプレートと共に用いられ、操作端末内外からの特定のイベント情報を受け、前記親テンプレートにおけるレイアウト情報とデバイステンプレートとの対応情報を変更してＵＩを再構築する事により、デバイスに対応する個々のＵＩを簡単に入れ替える事ができる効果がある。
【００５０】
また、本発明によれば、ＵＩを構成している複数のデバイステンプレートが、それぞれのデバイステンプレートが適用される操作画面上のレイアウト情報を保持する親テンプレートと共に用いられるとともに、操作端末内外からの特定のイベント情報を受け、前記親テンプレートにおけるレイアウト情報とデバイステンプレートとの対応情報を変更すると同時に、適用するデバイステンプレートも変更する事で、例えば、操作対象となる主従関係からなる複数のデバイスの、ＵＩ画面構成上の主従関係等を、それぞれのデバイスのＵＩ画面を変更すると同時に、レイアウトされる位置も簡単に入れ替える事ができる効果がある。
【００５１】
また、本発明によれば、操作端末が受け取るイベント情報により、親テンプレートを、適用するデバイステンプレートのレイアウト情報が異なる第二の親テンプレートに入れ替える事で、個々のデバイスのデバイステンプレートを変更する事無しに、ＵＩ画面を簡単に変更できる効果がある。
【発明を実施するための最良の形態】
【００５２】
（第１の実施形態）
図１は、本実施形態の全体構成の一例を示す概念図である。
図１において、１０１、１０２、１０６、１０７はそれぞれ被操作対象のデバイスであり、１０３、１０５はそれぞれデバイスの操作を行う操作端末装置である。１０４はデバイスおよび操作端末装置を接続し、それらの間でデータおよび命令のやり取りを行うためのネットワークである。操作端末装置１０３、１０５はそれぞれ、ネットワーク１０４を通じて操作コマンドを送ることにより、デバイス１０１、１０２、１０６、１０７を操作する。
【００５３】
図２は本実施形態における操作端末装置１０３のハードウェア構成の一例を示すブロック図である。
２０２はＣＰＵであり、各種処理のための演算や論理判断等を行い、バス２０１に接続された各構成要素を制御する。本装置には、プログラムメモリとデータメモリを含むメモリが搭載されている。プログラムメモリには、フローチャートにつき後述する処理手順を含むＣＰＵによる制御のためのプログラムを格納する。メモリはＲＯＭ２０３であってもよいし外部記憶装置などからプログラムがロードされるＲＡＭ２０４であってもよい。
【００５４】
２０５はデータやプログラムを記憶しておくための不揮発性メモリやハードディスクなどの記憶装置である。２０６はユーザからの情報を入力するための入力装置であり、この装置はマウス、タッチパネル、キーボードなどある。２０８は分析されたデータ出力情報を出力する出力装置であり、ＣＲＴや液晶表示器などの表示装置である。２０７はネットワークＩ／Ｆであり、ネットワークで接続された他のデバイスとのやり取りを行う。
【００５５】
図３は、本実施形態における全体の構成の一例を表わす図である。
３１７は図１における１０３、１０５に相当する操作端末装置を示している。この操作端末装置３１７は操作端末全体の処理を制御する操作端末３０１を中心として、種別・デバイス対応テーブル３０４、テンプレート３０５、ＵＩデータ３１２などを内部に所持しており、例えば図２で説明したようなハードウェア構成をしている。
【００５６】
また、３１８は、図１の１０１、１０２、１０６、１０７に相当するデバイスを示している。このデバイス３１８はデバイス全体の処理を制御するデバイス３０２を中心として、デバイス情報３０３を内部に所持しており、操作端末３０１からの要求に応じてネットワークを経由してデバイス情報３０３を操作端末３０１に送信する。
【００５７】
デバイス情報３０３は、ネットワークカメラ、ビデオ、プリンタなどといったデバイス種別３０７と、そのデバイスを操作するための操作コマンド３０８と、個々のデバイス固有のデバイスＩＤ３１５を含む。
【００５８】
操作端末３０１は、デバイス情報３０３を元にＵＩを構成するためのＵＩデータ３１２を動的に生成するためのテンプレート３０５を有する。テンプレートには、その１種としてデバイステンプレート３０６があり、該デバイステンプレートはデバイス識別情報３１１と、ＵＩ部品３１０と、ＵＩ部品と操作コマンドの対応情報３０９を含む。
【００５９】
該デバイス識別情報３１１は、デバイス情報３０３中のデバイスＩＤ３１５によって補完されるべきであることを示しており、生成されるＵＩがどのデバイスのＵＩであるのかを識別するために使用される。該ＵＩ部品３１０は、実際に表示されるＵＩ上のボタン、スライダ、リストボックスなどの部品である。
【００６０】
該ＵＩ部品と操作コマンドの対応情報３０９は、どのＵＩ部品３１０を操作するとどの操作コマンド３０８がデバイス３０２に対して発行されるかという対応関係を表わす情報である。
【００６１】
また、操作端末３０１は、該デバイス種別と該デバイステンプレート３０６との対応関係を表わす種別・テンプレートの組３１４を複数含む種別・テンプレート対応テーブル３０４を有する。３１６は、操作端末が生成したＵＩデータ３１２からＵＩを構築するブラウザであり、出力３１３に対して表示を行う。
【００６２】
図３に示される全体の構成は具体的には図２７にように表現することができる。
２７０１は図３の操作端末３０１に相当し、例えば、デバイス（ネットワークカメラ）２７０２とネットワークによって接続されている。このデバイス（ネットワークカメラ）２７０２は図３のデバイス３０２に相当する。
【００６３】
操作端末２７０１はデバイス（ネットワークカメラ）２７０２からデバイス情報２７０４を取得する。このデバイス情報２７０４は図３におけるデバイス情報３０３に相当し、その中の情報である操作コマンド２７０５は図３における操作コマンド３０８に、デバイス種別２７０６はデバイス種別３０７にそれぞれ相当する。操作端末２７０１は、取得したデバイス情報２７０４を、現在接続中のデバイスを制御するＵＩを構築する際に使用する。
【００６４】
操作端末２７０１は、デバイス（ネットワークカメラ）２７０２のデバイス情報２７０４中のデバイス種別２７０６をキーとして種別・テンプレート対応テーブル２７０７における、デバイス種別とデバイステンプレートファイル名２７０８の組を順に検索し、デバイス（ネットワークカメラ）２７０２のデバイス種別２７０６（ここでは、"urn:schemas-canon-org:
device:NetworkCamera:1"とする）に対応するテーブル上の組を発見し、デバイステンプレートのファイル名２７０８であるネットワークカメラテンプレート２７１２を決定する。
【００６５】
ここで、種別・デバイステンプレート対応テーブル２７０７は図３における種別・テンプレート対応テーブル３０４に、デバイス種別とデバイステンプレートファイル名２７０８の組は種別・テンプレート組３１４に、ネットワークカメラテンプレート２７１２はテンプレート３０５の一種であるデバイステンプレート３０６に相当する。このデバイステンプレート３０６の具体的な一例は図６に示される。図６については後で詳細に説明する。
【００６６】
操作端末２７０１はネットワークカメラテンプレート２７１２とデバイス情報２７０４からデバイス２７０２用のＵＩデータ２７１０を生成する。このＵＩデータ２７１０は図３におけるＵＩデータ３１２に相当する。
【００６７】
操作端末２７０１は各デバイスのデバイステンプレート３０６を使用して各デバイス用のＵＩを構築し、ＵＩデータ２７１０として生成、最後にブラウザ２７１５に対してＵＩを表示する。このブラウザ２７１５は図３におけるブラウザ３１６に相当し、実際に出力３１３（ハードウェア構成上は図２の出力装置２０８）に表示する。
【００６８】
図４は本実施形態におけるＵＩ生成処理の流れの一例を示すフローチャートである。図４において、ステップＳ４０１からステップＳ４０７は各ステップを表わす。
まず、操作端末３０１はデバイス３０２にデバイス情報３０３を要求し、デバイスからデバイス情報３０３を取得する（ステップＳ４０１）。
【００６９】
次に、取得したデバイス情報３０３からデバイス種別３０７を取り出し（ステップＳ４０２）、該デバイス種別３０７を用いて、デバイス３０２に対応するデバイステンプレート２７１１を検索する（ステップＳ４０３）。
【００７０】
そして、該検索の結果、該デバイス種別に対応するデバイステンプレート２７１１が存在するか否かを判断し（ステップＳ４０４）、対応するデバイステンプレート２７１１が存在する場合には、該デバイステンプレート２７１１を入力とし、ＵＩデータ領域を新たに出力とする入出力の設定を行った（ステップＳ４０５）後に、ＵＩデータ生成処理を行う（ステップＳ４０６）。
【００７１】
それから、該ＵＩデータ３１２によりＵＩを構築・表示し（ステップＳ４０７）、処理を終了する。ステップＳ４０４の判断の結果、ステップＳ４０２で得たデバイス種別３０７に対応するデバイステンプレート３０６が存在しない場合には、処理を終了する。
【００７２】
図７は本実施形態におけるデバイス情報３０３の一例としてXMLデータを示す図である。
図７において、左端の数字は行番号を示したものであり、実際のデータには含まれていない。行番号０７０８にある７Ａはデバイス情報３０３におけるデバイス種別３０７を示す記述である。このうち"urn:schemas-canon-org:device:NetworkCamera:1"が実際のデバイス種別３０７を示す文字列である。
【００７３】
行番号０７０９にある７Ｂはデバイス名を示す記述である。このうち"Catharine"が実際のデバイス名を示す文字列である。行番号０７１７にある７ＣはデバイスＩＤ３１５を示す記述である。このうち"uuid:upnp-canon-nc1＿1＿0-00008522CD3A"が実際のデバイスＩＤ３１５を示す文字列である。行番号０７２４にある７Ｄはデバイス３０２を操作するための操作サービスを示すXMLデータへのリンクを示している。
【００７４】
図９は、本実施形態における種別・テンプレート対応テーブル９００の一例を示す図である。
図９において、９００は種別・テンプレート対応テーブル全体であり、種別・テンプレート対応テーブル３０４を具体的に表わしたものである。該テーブル９００はファイルとして記憶装置２０５中に保持されており、更新することが可能である。
【００７５】
９１０、９２０はそれぞれ１組のデバイスの種別とデバイステンプレートファイルの対応関係を表わしており、種別・テンプレート組３１４を具体的に表わしたものである。９１１、９２１はそれぞれ、１つのデバイス種別を表わしており、共にデバイス種別３０７を具体的に表わしたものである。
【００７６】
９１２、９２２はそれぞれ、１つのデバイステンプレートを表わしており、共にデバイステンプレート３０６に対応している。これらは、記憶装置２０５に保存されており、それぞれの文字列はファイル名を表わしている。
【００７７】
すなわち、図９はデバイス種別が９１１であれば、デバイステンプレート９１２が選択され、デバイス種別が９２１であれば、デバイステンプレート９２２が選択されることを表わしている。
【００７８】
図１１は、本実施形態における対応テンプレート検索処理の流れの一例を示すフローチャートである。図１１において、ステップＳ１１０１からステップＳ１１０５は各ステップを表わす。
【００７９】
まず、種別・テンプレート対応テーブル９００にまだデバイス種別とテンプレートの組が存在するか否かを判断し（ステップＳ１１０１）、存在するならば該デバイス種別とテンプレート２７１１の組を得て（ステップＳ１１０２）、その中のデバイスの種別を得る（ステップＳ１１０３）。
【００８０】
次に、該デバイスの種別がステップＳ４０２で得たデバイスの種別に一致するか否かを判断し（ステップＳ１１０４）、一致するならばステップＳ１１０２で得たデバイス種別３０７とテンプレート３０５の組からデバイステンプレート２７１１を得て、対応するデバイステンプレート２７１１として（ステップＳ１１０５）、処理を終了する。
【００８１】
ステップＳ１１０４の判断の結果、両デバイスの種別が一致しない場合には、ステップＳ１１０１の判断に戻る。ステップＳ１１０１の判断の結果、種別・テンプレート対応テーブル９００にもうデバイス種別３０７とテンプレート３０５の組が存在しないならば、処理を終了する。
【００８２】
すなわち本処理は、本実施形態においてはデバイス種別が"urn:schemas-canon-org:device:NetworkCamera:1"であるデバイス種別３０７とテンプレート３０５の組を種別・テンプレート対応テーブル９００から検索し、デバイス種別３０７とテンプレート３０５の組９１０を得て、対応するデバイステンプレート２７１１のファイル名として「ネットワークカメラテンプレート」を返す。
【００８３】
図６は本実施形態におけるデバイステンプレート３０６の一例としてXMLデータを示す図である。
図６において、左端の数字は行番号を示したものであり、実際のデータには含まれていない。行番号０６０８、０６１５、０６１７、０６１９の６Ａ〜６Ｄは、それぞれデバイス情報３０３中のデバイス識別情報３１１を意味する特別な変数（$uid）である。行番号０６２２の６Ｅは、デバイス情報３０３中のデバイス名識別情報（$devName）である。
【００８４】
また、行番号０６１４から０６１９は、デバイスに対して操作コマンドが発行されることを示している。例えば、行番号０６１５の６Ｇは"method="CameraControlPan""となっており、この行が実行された時に発行される操作コマンドが"CameraControlPan"であることを示している。また、行番号０６１４には６Ｆに示すように本データ中で一意な識別子として"pan"が与えられている。
【００８５】
また、６Ｉ、６Ｊ、６Ｋには、ＵＩを構成するＵＩ部品についての記述がある。６Ｉ〜６Ｋはそれぞれ特定の範囲からの選択を行うＵＩ部品"xforms:range"を表わしており、それぞれのレイアウト情報および現在の値を保持しているデータモデルへの参照と、値が変更された場合にどの操作コマンドが発行されるかの対応情報がふくまれている。
【００８６】
例えば、６Ｉ中の行番号０６３５中の６Ｈは"submission="pan" "となっており、ＵＩ部品"xforms:range"の値が変更された場合に識別子が"pan"である行を実行することが示されている。すなわち、０６１４行の６Ｆと０６３５行の６Ｈの記述により、６ＩのＵＩ部品と６Ｇの操作コマンド"CameraControlPan"が対応付けられている。よって、このデバイステンプレート２７１１中には、デバイス情報３０３に記載の操作コマンドとデバイステンプレート９２２に記載のＵＩを構成するＵＩ部品との対応情報が含まれている。
【００８７】
図８は、本実施形態におけるデバイス２７０２を操作するための操作サービスを示すデバイス情報２７０４の一例としてXMLデータを示す図である。
図８において、左端の数字は行番号を示したものであり、実際のデータには含まれていない。図８は、図７において７Ｄで表わされた操作サービスを示すデバイス情報である。
【００８８】
図８において、８Ａ、８Ｂ、８Ｃはそれぞれ別の操作コマンドを表わしており、それぞれの操作コマンド名がCameraControlPan、CameraControlTilt、CameraControlZoomであること、およびそれぞれの操作コマンドの引数などを示している。また、８Ｄは状態変数を示しており、その名称がMotionDetectであることを示している。
【００８９】
図５は、本実施形態におけるＵＩ生成処理の流れを示すフローチャートである。図において、ステップＳ５０１からステップＳ５０９は各ステップを表わす。
まず、ステップＳ４０５で設定された入力において現在の位置が入力の終端に達しているか否かを判断し（ステップＳ５０１）、まだ終端に達していない場合には、構文上の１行を読み込む（ステップＳ５０２）。
【００９０】
次に、読み込んだ行中にデバイス識別情報３１１が含まれているか否かを判断し（ステップＳ５０３）、デバイス識別情報３１１が含まれている場合には、ステップＳ４０１で得たデバイス情報３０２中から得たデバイスＩＤを得て（ステップＳ５０４）、バッファに読み込んだ行中のデバイス識別情報３１１に実際のデバイスＩＤを挿入する（ステップＳ５０５）。ステップＳ５０３の判断の結果、デバイス識別情報３１１が含まれていない場合には、ステップＳ５０６の判断に移る。
【００９１】
次に、読み込んだ行中にデバイス名識別情報が含まれているか否かを判断し（ステップＳ５０６）、デバイス名識別情報が含まれている場合には、ステップＳ４０１で得たデバイス情報中から得たデバイス名を得て（ステップＳ５０７）、バッファに読み込んだ行中のデバイス名識別情報に実際のデバイス名を挿入する（ステップＳ５０８）。ステップＳ５０６の判断の結果、デバイス名識別情報が含まれていない場合には、ステップＳ５０９の処理に移る。
【００９２】
そして、バッファ中の読み込んだ行をＵＩデータ２７１０に書き込んだ（ステップＳ５０９）後ステップＳ５０１の判断に戻り、一連の処理を繰り返す。ステップＳ５０１の判断の結果、すべての行の処理を終えて、デバイステンプレート２７１１の終端に達した場合には、処理を終了する。
【００９３】
すなわち本処理においては、ステップＳ４０５で入力に設定された図６のようなデバイステンプレート９２２を、ステップＳ５０２において１行ずつ読み込む。
【００９４】
図６の行番号０６０８、０６１５、０６１７、０６１９においては、ステップＳ５０３の判断において行中にデバイス識別情報６Ａ〜６Ｄ（$uid）が含まれているので、ステップＳ５０４において図７のデバイス情報７Ｃに含まれるデバイスＩＤ（"uuid:upnp-canon-nc1＿1＿0-00008522CD3A"）を得て、ステップＳ５０５で該デバイス識別情報に該デバイスＩＤを代入する。
【００９５】
すなわち、文字列６Ａ〜６Ｄ"$uid"を"uuid:upnp-canon-nc1＿1＿0-00008522CD3A"に置換する。これらの行においては、デバイス名識別情報は行中に含まれていないので、ステップＳ５０６の判断において判定結果が否となり、ステップＳ５０９の処理に移り、デバイスＩＤが補完されたデータがＵＩデータ２７１０に追加され、ステップＳ５０１の判断に戻る。
【００９６】
図６の行番号０６２２においては、ステップＳ５０３の判断においてデバイスＩＤ識別の為の変数が行中に含まれないため、判断結果が否となり、ステップＳ５０６の判断に移る。ステップＳ５０６の判断においては、行中にデバイス名識別情報（$devName）が含まれているので、ステップＳ５０７において図７のデバイス情報７Ｂに含まれるデバイス名（"Catharine"）を得て、ステップＳ５０８で該デバイス名識別情報に該デバイス名を代入する。すなわち、文字列６Ｅの"$devName"を"Catharine"に置換する。そして、ステップＳ５０９において、デバイス名が補完されたデータがＵＩデータ２７１０に追加され、ステップＳ５０１の判断に戻る。
【００９７】
他の行はステップＳ５０３、ステップＳ５０６の判断とも偽となるので、ステップＳ５０９においてそのままＵＩデータ２７１０に追加される。図６のテンプレートが行番号０６５０に達すると、ステップＳ５０１の判断において、デバイステンプレート２７１１の現在の位置がテンプレートの終端に達しているので、処理を終了する。この結果、本処理によって図６のようなデバイステンプレート２７１１から図１０のようなＵＩデータ２７１０を生成することができる。
【００９８】
図１０は、本実施形態におけるＵＩデータ生成処理によって生成されたＵＩデータの一例としてXMLデータを示す図である。
図１０において、左端の数字は行番号を示したものであり、実際のデータには含まれていない。該ＵＩデータは図６のデバイステンプレート２７１１を基に、図７のデバイス情報を用いて図５のＵＩデータ生成処理によって生成されるものであり、ＵＩデータ３１２、および２７１０に該当する。
【００９９】
図１０において、１０Ａ、１０Ｂ、１０Ｃ、１０Ｄはそれぞれ図６のデバイステンプレート２７１１中の６Ａ、６Ｂ、６Ｃ、６Ｄがデバイス情報中のデバイスＩＤ７Ｃにより補完されたものであり、１０Ｅは図６のデバイステンプレート２７１１中の６Ｅがデバイス情報中のデバイス名７Ｂにより補完されたものである。このＵＩデータ３１２をブラウザ３１６に渡すことによりＵＩが構築され、出力３１３によりＵＩが表示される。
【０１００】
図１７は、本実施形態におけるデバイスと表示されるＵＩとの関係を示す図である。
図１７において、図１７ａのように操作端末１７０５に対してデバイス（ネットワークカメラ）１７０６が接続されている場合には、デバイスの種別がネットワークカメラを表わすデバイス種別（本実施形態においては"urn:schemas-canon-org:device:NetworkCamera:1"）であるので、これまでに説明した流れで図１０のようなＵＩデータ２７１０が生成され、それを基にブラウザ３１６によりＵＩ１７０１のようなＵＩが構築される。
【０１０１】
ＵＩ１７０１において、１７０２はカメラの横方向の回転を表わすＵＩ部品であり、図１０の行番号１０３３から１０３５に記載の特定の範囲からの選択を行うＵＩ部品を表わす要素"xforms:range"から生成されたものである。同様に１７０３、１７０４はそれぞれカメラのズーム、縦方向の回転を表わすＵＩ部品であり、図１０の行番号１０３９から１０４１、１０４５から１０４７に記載の特定の範囲からの選択を行うＵＩ部品を表わす要素"xforms:range"から生成されたものである。
【０１０２】
一方、図１７ｂのように操作端末１７１２に対してデバイス（ビデオ）１７１３が接続されている場合には、デバイスの種別がビデオを表わすデバイス種別（本実施形態においては"urn:schemas-canon-org:device:Video:1"）であるので図９の種別・テンプレート対応テーブル９００中からデバイステンプレート９２２が選択され、同様の処理で対応するＵＩデータ２７１０が生成され、それを基にブラウザ３１６によりＵＩ１７１１のようなＵＩが構築される。
【０１０３】
以上のように、本実施形態の操作端末１７１２においては、デバイスを操作する為のＵＩは、デバイス情報３０３及びデバイステンプレート２７１１から構築される為に、操作端末１７１２のプログラムを変更する事無く、デバイステンプレート２７１１を入れ替える事で、ＵＩの変更が可能になる。また、個々のデバイスの識別子をＵＩデータ２７１０中に埋め込むことにより、ＵＩからの個々の機器の操作が可能となる。
【０１０４】
（第２の実施形態）
本実施形態においては、構築されるＵＩにおけるＵＩ部品の有無及びＵＩのレイアウトを変更する為の条件記述をデバイステンプレートに含む場合について、図面を参照しながら説明する。
【０１０５】
図１２は、本実施形態におけるデバイステンプレートの一例としてXMLデータを示す図である。
図１２において、左端の数字は行番号を示したものであり、実際のデータには含まれていない。１２Ａ〜１２Ｇ、１２Ｉ、１２Ｊは、それぞれ図８に示したデバイスを操作するための操作サービスを示すデバイス情報３０３中に、操作コマンドが存在するか否かによって生成するＵＩデータ２７１０を変えるための条件の記述部分である。
【０１０６】
このうち、行番号１２１０、１２２０、１２４６はすべて同様の記述となっており、XMLの属性の記述"control="CameraControlPan""のうち、属性名"control"は条件文がデバイス情報３０３中の操作コマンドを対象とすることを表わしており、"CameraControlPan"は操作コマンド名が"CameraControlPan"であることを示している。
【０１０７】
そして、XMLの要素名"ui＿template:ifexist"が属性で示したものがデバイス情報中に存在するならば、該要素の子要素を解釈し、必要に応じてＵＩデータ２７１０に追加するという条件を表わしている。
【０１０８】
すなわち、行番号１２１０、１２２０、１２４６はすべて、デバイス情報３０３中に"CameraControlPan"という操作コマンドが存在するならば、それぞれの子要素を解釈し、必要に応じてＵＩデータ２７１０に追加するという条件文である。
【０１０９】
同様に、行番号１２１３、１２２４、１２６６はすべて、デバイス情報３０３中に"CameraControlTilt"という操作コマンドが存在するならば、それぞれの子要素を解釈し、必要に応じてＵＩデータ２７１０に追加するという条件文であり、行番号１２１６、１２２８、１２７３はすべて、デバイス情報３０３中に"CameraControlZoom"という操作コマンドが存在するならば、それぞれの子要素を解釈し、必要に応じてＵＩデータ２７１０に追加するという条件文である。
【０１１０】
これにより、１２Ｇ、１２Ｉ、１２Ｊの条件文の子要素として記述されている特定の範囲からの選択を行うＵＩ部品"xforms:range"はそれぞれの条件が満たされた場合にはＵＩ上に存在するが、条件が満たされない場合には存在しないことになる。
【０１１１】
また、１２Ｈはデバイス情報３０３中の状態変数の値によって生成するＵＩデータ２７１０を変えるための条件の記述部分である。このうち、行番号１２５５のXMLの属性の記述"variable="MotionDetect""は、条件文の対象となる状態変数名が"MotionDetect"であることを示しており、"value="1""は、条件文の指定する値が"1"であることを示している。そして、XMLの要素名"ui＿template:ifcond"が属性で示した状態変数の値の条件が満たされているならば、該要素の子要素をＵＩデータ２７１０に追加するという条件を表わしている。
【０１１２】
すなわち、行番号１２５５は、図８に示したデバイスを操作するための操作サービスを示すデバイス情報中の状態変数"MotionDetect"の値が"1"であるならば、子要素をＵＩデータ２７１０解釈し、必要に応じてに追加するという条件文である。
【０１１３】
また、１２Ｋは変数の定義部である。行番号１２４３、１２４４共に、要素名"ui＿template:variable"は変数の定義であることを示しており、属性名"name"は変数名を、"value"は変数の初期値を表わしている。すなわち、行番号１２４３は"$x"という名前で初期値は９７である変数の定義を、行番号１２４４は"$y"という名前で初期値は３８１である変数の定義を表わしている。１２Ｍ、１２Ｏはそれぞれ式を表わしており、１２Ｍは１２Ｋで定義した変数$xに５０を加算する式を、１２Ｏは１２Ｋで定義した変数$yに５０を加算する式を表わしている。
【０１１４】
１２Ｌ、１２Ｎ、１２Ｐはすべて同様の記述となっており、"x="$x""と"y="$y""の２つのXMLの属性の記述をあわせたものである。このうち、"x="$x""はＸ座標として変数$xの値を使うことを意味しており、"y="$y""はＹ座標として変数$yの値を使うことを意味している。すなわち、行番号１２４７および１２７４の要素名"xforms:range"で表わされる特定の範囲からの選択を行うＵＩ部品のＸおよびＹ座標は、それぞれその時点の変数$x、$yの値によって変わる事を表わしている。
【０１１５】
したがって、１２Ｇおよび１２Ｈの条件ブロックの条件文が成立するか否かに応じて、それぞれ１２Ｍ、１２Ｏの式が実行されるか否かが変わり、それによって行番号１２５９の画像および行番号１２７４の特定の範囲からの選択を行うＵＩ部品のレイアウトが変わることを表わしている。
【０１１６】
図１３は、本実施形態におけるＵＩ生成処理の流れを示すフローチャートである。図１３において、ステップＳ１３０１からステップＳ１３１８は各ステップを表わす。
まず、あらかじめ本処理の外部で設定された入力において現在の位置が入力の終端に達しているか否かを判断し（ステップＳ１３０１）、まだ終端に達していない場合には、構文上の１行を読み込む（ステップＳ１３０２）。
【０１１７】
次に、読み込んだ行が条件文であるか否かを判断し（ステップＳ１３０３）、該判断の結果、条件文ではない場合には、読み込んだ行が変数の定義であるか否かを判断する（ステップＳ１３０４）。
【０１１８】
該判断の結果、読み込んだ行が変数の定義ではない場合には、読み込んだ行の子要素が変数の式であることを示す行か否かを判断し（ステップＳ１３０５）、該判断の結果、読み込んだ行の子要素が変数の式あることを示す行でない場合には、読み込んだ行中にデバイス識別情報３１１が含まれているか否かを判断し（ステップＳ１３０６）、デバイス識別情報３１１が含まれている場合には、ステップＳ４０１で得たデバイス情報３０３中から得たデバイスＩＤを得て（ステップＳ１３０７）、バッファに読み込んだ行中のデバイス識別情報３１１に実際のデバイスＩＤを挿入する（ステップＳ１３０８）。ステップＳ１３０６の判断の結果、デバイス識別情報３１１が含まれていない場合には、ステップＳ１３０９の判断に移る。
【０１１９】
次に、読み込んだ行中にデバイス名識別情報が含まれているか否かを判断し（ステップＳ１３０９）、デバイス名識別情報が含まれている場合には、ステップＳ４０１で得たデバイス情報中から得たデバイス名を得て（ステップＳ１３１０）、バッファに読み込んだ行中のデバイス名識別情報に実際のデバイス名を挿入する（ステップＳ１３１１）。ステップＳ１３０９の判断の結果、デバイス名識別情報が含まれていない場合には、ステップＳ１３１２の処理に移る。
【０１２０】
次に、変数があるならば該変数に現在の値を代入する処理を行い（ステップＳ１３１２）、バッファ中の読み込んだ行をＵＩデータ２７１０に書き込んだ（ステップＳ１３１３）後、ステップＳ１３０１の判断に戻り、一連の処理を繰り返す。
【０１２１】
ステップＳ１３０３の判断の結果、読み込んだ行が条件文である場合には、該条件文とその子要素の処理を行った（ステップＳ１３１４）後、ステップＳ１３０１の判断に戻る。ステップＳ１３０４の判断の結果、読み込んだ行が変数の定義である場合には、該変数の変数名とその初期値を登録する処理を行った（ステップＳ１３１５）後、ステップＳ１３０１の判断に戻る。
【０１２２】
ステップＳ１３０５の判断の結果、読み込んだ行の子要素が変数の式であることを示す行である場合には、さらに１行を読み込み（ステップＳ１３１６）、読み込んだ行の子要素が変数の式であることを示す要素の終端を示す行であるか否かを判断する（ステップＳ１３１７）。
【０１２３】
ステップＳ１３１７の判断の結果、読み込んだ行の子要素が変数の式であることを示す要素の終端を示す行でない場合には、読み込んだ行は変数の式であるので、該変数の式の処理を行い（ステップＳ１３１８）、ステップＳ１３１６の処理に戻る。ステップＳ１３１７の判断の結果、読み込んだ行が子要素が変数の式であることを示す要素の終端を示す行である場合には、ステップＳ１３０１の判断に戻る。ステップＳ１３０１の判断の結果、すべての行の処理を終えて、入力の終端に達した場合には、処理を終了する。
【０１２４】
図１４は、本実施形態における条件文とその子要素の処理の流れを示すフローチャートである。図１４において、ステップＳ１４０１からステップＳ１４１１は各ステップを表わす。
まず、読み込んだ行が操作コマンドの有無に関する条件文であるか否かを判断し（ステップＳ１４０１）、該判断の結果、読み込んだ行が操作コマンドの有無に関する条件文ではない場合には、読み込んだ行が状態変数の有無に関する条件文であるか否かを判断する（ステップＳ１４０２）。
【０１２５】
該判断の結果、読み込んだ行が状態変数の有無に関する条件文ではない場合には、読み込んだ行が状態変数の値に関する条件文であるか否かを判断し（ステップＳ１４０３）、該判断の結果、読み込んだ行が状態変数の値に関する条件文である場合には、ステップＳ４０１で得たデバイス情報中から得た状態変数の値を得て（ステップＳ１４０４）、条件文が満たされているか否かを判断する（ステップＳ１４０５）。
【０１２６】
同様に、ステップＳ１４０１の判断の結果、読み込んだ行が操作コマンドの有無に関する条件文である場合には、ステップＳ４０１で得たデバイス情報中から得た操作コマンドの一覧から指定された操作コマンドを検索し（ステップＳ１４１０）、ステップＳ１４０２の判断の結果、読み込んだ行が状態変数の有無に関する条件文である場合には、ステップＳ４０１で得たデバイス情報中から得た状態変数の一覧から指定された状態変数を検索し（ステップＳ１４１１）、条件文が満たされているか否かを判断する（ステップＳ１４０５）。
【０１２７】
ステップＳ１４０５の判断の結果、読み込んだ行の条件文が満たされているならば、該条件の範囲の保存処理を行い（ステップＳ１４０６）、該保存された条件の範囲を新たな入力とする設定を行った（ステップＳ１４０７）後に、該入力すなわち保存された条件の範囲に対して本ＵＩデータ処理を再帰的に実行する（ステップＳ１４０８）。
【０１２８】
そして、保存した条件の範囲を破棄し（ステップＳ１４０９）、処理を終了する。ステップＳ１４０５の判断の結果、読み込んだ行の条件文が満たされていない場合には、該条件の範囲を読み飛ばした（ステップＳ１４１２）後、処理を終了する。
【０１２９】
図１５は、本実施形態における条件の範囲保存処理の流れを示すフローチャートである。図１５において、ステップＳ１５０１からステップＳ１５０５は各ステップを表わす。
まず、条件の範囲保存用のファイルを開き（ステップＳ１５０１）、入力から１行を読み込む（ステップＳ１５０２）。
【０１３０】
次に、入力が終端に達しているか否かを判断し（ステップＳ１５０３）、入力が終端に達していないならば、読み込んだ行を条件の範囲保存用のファイルに書き込み（ステップＳ１５０４）、ステップＳ１５０２の処理に戻る。ステップＳ１５０３の判断の結果、入力が終端に達したならば、条件の範囲保存用のファイルを閉じて（ステップＳ１５０５）、処理を終了する。
【０１３１】
図１６は、本実施形態における変数に現在の値を代入する処理の流れを示すフローチャートである。図１６において、ステップＳ１６０１からステップＳ１６０４は各ステップを表わす。
【０１３２】
まず、登録されている変数から最初の変数とその現在値を得て（ステップＳ１６０１）、変数があったか否かを判断する（ステップＳ１６０２）。該判断の結果、変数があったならば、バッファに読み込んだ行中の該変数の変数名に一致する変数をすべて該変数の現在値に置き換え（ステップＳ１６０３）、登録されている次の変数とその現在値を得て（ステップＳ１６０４）、ステップＳ１６０２の判断に戻る。ステップＳ１６０２の判断の結果、登録されている変数がもうないならば、処理を終了する。
【０１３３】
次に、図１３のＵＩデータ生成処理とそのサブルーチンである図１４から図１６によって、図７、図８のデバイス情報および図１２のデバイステンプレート２７１１からＵＩデータ２７１０を生成する処理について具体的に説明する。
【０１３４】
まず、ステップＳ４０６において行われるＵＩデータ生成処理は、ステップＳ４０５でデバイステンプレート２７１１を入力としているので、図１２のデバイステンプレート２７１１を１行ずつ処理する。行番号１２０１から１２０９まではステップＳ１３０３からステップＳ１３０５のいずれの判断も偽なので、図５のＵＩデータ生成処理と同様にステップＳ１３０６の判断からステップＳ１３１２の処理を実行し、必要な置換が行われた後、ステップＳ１３１３でＵＩデータ２７１０に書き込まれる。
【０１３５】
次に、ブロック１２Ａの処理においては、行番号１２１０はステップＳ１３０３において判断が真となるので、ステップＳ１３１４において図１４に記載の条件文とその子要素の処理に移る。その後、ステップＳ１４０１の判断が真となるため、ステップＳ１４１０において操作コマンド"CameraControlPan"が図８のデバイス情報から検索され、行番号０８０９に存在するため、ステップＳ１４０５の条件判断が真となる。よって、ステップＳ１４０６において条件の範囲すなわち行番号１２１１が保存され、条件文の終端を表わす行番号１２１２まで読み込みが終わる。
【０１３６】
次に、ステップＳ１４０７で該条件の範囲を入力とし、ステップＳ１４０８において該入力に対してＵＩデータ生成処理を再帰的に行う。ここでは、行番号１２１１がＵＩデータ２７１０に追加される。そして、ステップＳ１４０９において保存した条件の範囲が破棄され、次の行に処理が進む。
【０１３７】
１２Ｂ、１２Ｃについても同様のステップを踏んで、それぞれ行番号１２１４、１２１７がＵＩデータ２７１０に追加される。１２Ｄ、１２Ｅ、１２Ｆは処理の流れは１２Ａと同様であるが、条件の範囲がそれぞれ行番号１２２１と１２２２、１２２５と１２２６、１２２９と１２３０の２行であること、またデバイス識別情報を有することが異なる。
【０１３８】
これらの行は行番号１２１１と同様に、図１４のステップＳ１４０８において再帰的に呼び出されたＵＩデータ処理の中で、ステップＳ１３０８においてデバイスＩＤを置換された後にステップＳ１３１３でＵＩデータ２７１０に書き込まれる。
【０１３９】
１２Ｋは２行とも変数の定義であるので、それぞれステップＳ１３０４で判断が真となり、ステップＳ１３１５において変数の変数名とその初期値、すなわち変数名として$x、その値として９７が、また変数名として$y、その値として３８１が登録される。
【０１４０】
１２Ｇは１２Ａと同様に行番号１２４６が条件文であるため、ステップＳ１３０３において判断が真となるので、ステップＳ１３１４において図１４に記載の条件文とその子要素の処理に移る。その後、ステップＳ１４０１の判断が真となるため、ステップＳ１４１０において操作コマンド"CameraControlPan"が図８のデバイス情報から検索され、行番号０８０９に存在するため、ステップＳ１４０５の条件判断が真となる。よって、ステップＳ１４０６において条件の範囲すなわち行番号１２４７から１２５３が保存され、条件文の終端を表わす行番号１２５４まで読み込みが終わる。
【０１４１】
次に、ステップＳ１４０７で該条件の範囲を入力とし、ステップＳ１４０８において該入力に対して図１３に記載のＵＩデータ生成処理を再帰的に行う。ここで、その処理について具体的に説明する。行番号１２４７および１２４８が読み込まれると、この行はステップＳ１３０３からステップＳ１３０６、そしてステップＳ１３０９のいずれの判断も偽なので、ステップＳ１３１２に処理が進み、図１６に詳細を示したステップＳ１３１２の変数に現在の値を代入する処理により、１２Lの部分が"x="97"y="381""と置換され、ＵＩデータ２７１０に追加される。
【０１４２】
行番号１２４９および１２５０は、ステップＳ１３０３からステップＳ１３０６ 、そしてステップＳ１３０９のいずれの判断も偽なので、ステップＳ１３１３においてそのままＵＩデータ２７１０に追加される。
【０１４３】
１２Ｍの部分は、行番号１２５１は子要素が変数の式であることを示す行であるため、当該行の処理においてステップＳ１３０５の判断が真となる。その結果、行番号１２５２がステップＳ１３１６において読み込まれ、ステップＳ１３１８において当該行の処理が行われ、変数$yに５０が加算され、値が４３１に更新される。そして行番号１２５３がステップＳ１３１６で読み込まれ、子要素が変数の式であることを示す要素の終端を表わす行であるため、ステップＳ１３１７において判断が真となり、次の行へ処理が進む。
【０１４４】
行番号１２５４は条件文の終端を表わす行なので、以上でステップＳ１４０８における１２Gの条件範囲のＵＩデータ生成処理は終了し、ステップＳ１４０９において保存した条件の範囲が破棄され、次の行に処理が進む。
【０１４５】
次に、１２Ｈの部分の処理について説明する。１２Ｈの処理は１２Ｇの処理とほぼ同様であるが、行番号１２５５が状態変数の値に関する条件文であるため、行番号１２４６が図１４のステップＳ１４０１の判断が真になるのに対して、行番号１２５５はステップＳ１４０３の判断が真となる。そのためステップＳ１４０４において状態変数"MotionDetect"の値"0"が図８のデバイス情報の行番号０８４３から得られ、行番号１２５５の条件文すなわち「状態変数"MotionDetect"の値が"1"である」が真であるか否かがステップＳ１４０５において判断される。この条件文は真でないため、処理はステップＳ１４１２に移り、条件文の終端である行番号１２６４までが読み捨てられる。１２Ｉ、１２Ｊの処理は１２Gの処理と同様である。
【０１４６】
その他の行はステップＳ１３０３からステップＳ１３０５のいずれの判断も偽なので、行番号１２０１から１２０９までと同様にＵＩデータ２７１０に追加される。
【０１４７】
以上、説明したような処理により、図７、図８のデバイス情報および図１２のデバイステンプレート２７１１から図１０のＵＩデータ２７１０が生成され、ブラウザ３１６によりそれを基に図１７で説明したように１７０１のようなＵＩが構築される。
【０１４８】
図１８は、本実施形態において図８同様にデバイス３０２を操作するための操作サービスを示すデバイス情報３０３として示すXMLデータを示す図である。
図１８において、左端の数字は行番号を示したものであり、実際のデータには含まれていない。図８との差異は、１８Ａで表わされた部分に記載された状態変数MotionDetectの値が"0"ではなく"1"であることである。
【０１４９】
図１９は、図１８のデバイスを操作するための操作サービスを示すデバイス情報３０３を用いた場合に生成されるＵＩデータ２７１０の一例としてXMLデータを示す図である。
図１９において、左端の数字は行番号を示したものであり、実際のデータには含まれていない。
【０１５０】
図８のデバイス情報用いた場合に生成される図１０のＵＩデータ２７１０との差異は、図１８の１８Ａにおいて状態変数MotionDetectの値が"1"であることにより、図１２に示すデバイステンプレートの１２Ｈを処理する際に、行番号１２５５の処理において、ステップＳ１４０５の判断が真となるために、行番号１２５６から１２６０までが必要な置換を行った上で追加された１９Ａの部分が存在することである。また、１２Ｏの変数の式が１２Ｍと同様に処理されることにより、１９Ｄで示したＸ座標の値が図１０とは異なる。
【０１５１】
図２０は、図１９のＵＩデータ２７１０により構築されたＵＩの一例を示す図である。
図２０において、ＵＩ部品１７０２および１７０３は図１７と同様であるが、図１９の１９Ａの部分により、行番号１９４１に記載の動体検知を表わすイメージデータ２００１がＵＩ１７０１上に表示される。また、１９ＢのＸ座標の値が異なることによりＵＩ部品１７０３の位置が移動している。
【０１５２】
図２１は、本実施形態において図８同様にデバイスを操作するための操作サービスを示すデバイス情報の一例としてXMLデータを示す図である。
図２１において、左端の数字は行番号を示したものであり、実際のデータには含まれていない。図８との差異は、データ中に８Ｃ、８Ｄと同様の２１Ａ、２２Ｂは含むが、８Ａ、８Ｂに相当する部分が存在しないことである。
【０１５３】
図２２は、図２１のデバイスを操作するための操作サービスを示すデバイス情報３０３を用いた場合に生成されるＵＩデータ２７１０の一例としてXMLデータを示す図である。
図２２において、左端の数字は行番号を示したものであり、実際のデータには含まれていない。
【０１５４】
図８のデバイス情報用いた場合に生成される図１０のＵＩデータ２７１０との差異は、図２１において、図８の８Ａ、８Ｂに相当する部分が存在しないことにより、図１２に示すデバイステンプレート２７１１の１２Ｇおよび１２Ｉを処理する際に、行番号１２４６および１２６６の処理において、ステップＳ１４０５の判断が偽となるために、１２Ｇおよび１２Ｉの部分が読み捨てられ、図１０の行番号１０３３から１０３７および行番号１０３９から１０４３の部分が存在しないことである。また、１２Ｍの変数の式が処理されないことにより、２２ＡのＹ座標の値が図１０とは異なる。
【０１５５】
図２３は、図２２のＵＩデータ２７１０により構築されたＵＩの一例を示す図である。
図２３において、図２２には図１０の行番号１０３３から１０３７および行番号１０３９から１０４３の部分が存在しないことにより、図１７とは異なりＵＩ部品１７０２および１７０３が存在しない。また、ＵＩ部品１７０３は２２ＡのＹ座標の値が異なることにより位置が移動している。
【０１５６】
以上のように、本実施形態のリモート操作端末においては、同一のデバイステンプレートにより、デバイスの機能あるいは状態に応じて、ＵＩ部品の有無およびのレイアウトを変更することが可能になる。
【０１５７】
（第３の実施形態）
本実施形態においては、デバイステンプレート２７１１を変更した場合について、図面を参照しながら説明する。
図２４は、本実施形態におけるデバイステンプレート２７１１の一例としてXMLデータを示す図である。
図２４において、左端の数字は行番号を示したものであり、実際のデータには含まれていない。該デバイステンプレート２７１１は図６に示したデバイステンプレート２７１１とほぼ同様であるが、２４Ａに示したスライダの向きを指定する部分が変更されている。また、２４Ｂに示した部分において各座標値が変更されている。
【０１５８】
このように特定のデバイスに対するデバイステンプレート２７１１は、記憶装置２０５に複数保持している、あるいは外部のサーバに保持されているものを、ユーザが選択することにより、種別・テンプレート対応テーブル３０４中に記載されているデバイステンプレートファイル名を変更することで変更可能である。
【０１５９】
図２５は、図２４のデバイステンプレート２７１１を用いた場合に生成されるＵＩデータ２７１０の一例としてXMLデータを示す図である。
図２５において、左端の数字は行番号を示したものであり、実際のデータには含まれていない。図６のデバイステンプレート２７１１を用いた場合に生成される図１０のＵＩデータ２７１０との差異は、２５Ａ、２５Ｂの部分が、図２４の２４Ａ、２４Ｂ部分がそのまま反映されているために異なる。
【０１６０】
図２６は、図２５のＵＩデータ２７１０により構築されたＵＩの一例を示す図である。
図２６において、図１７とは異なり、カメラのズームを表わすＵＩ部品１７０３がＵＩ部品２６０１のように変更されている。これは、図２５の２５Ａの部分によりスライダの向きが、２５Ｂの部分によりスライダの位置が変更されたものである。
【０１６１】
（第４の実施形態）
本実施形態においては操作端末が複数のデバイスとネットワーク接続されると、操作端末はネットワーク接続された各々のデバイス情報をデバイスリストとして保持し、フレームテンプレートを基に、それぞれのデバイスに対応するデバイステンプレートを複数組み合わせて、同時に複数のデバイスを制御する為のＵＩを構築する例を示す。
【０１６２】
図２９は、本実施形態における具体的な構成を示す図である。
操作端末２９０１はデバイス（ネットワークカメラ）２９０２、デバイス（ビデオ）２９０３、デバイス（プリンタ）２９０４とネットワークによって接続されている。
【０１６３】
操作端末２９０１はデバイス（ネットワークカメラ）２９０２、デバイス（ビデオ）２９０３、デバイス（プリンタ）２９０４からデバイス情報２９０５、デバイス情報２９０６、デバイス情報２９０７を取得する。
【０１６４】
取得したデバイス情報２９０５〜２９０７をデバイスリスト２９０８として管理し、現在接続中のデバイスを制御するＵＩを構築する際に使用する。このデバイスリストの詳細は図３１に示される。
【０１６５】
操作端末２９０１はデバイスを制御するＵＩを構築するために、まず、フレームテンプレート２９０９を読み込む。操作端末２９０１はフレームテンプレート２９０９を解析し、必要に応じて、各デバイスのデバイステンプレート２９１１を使用してＵＩを構築する。
【０１６６】
例えば、フレームテンプレート２９０９中にデバイス（ネットワークカメラ）２９０２のＵＩを構築する内容が記載されていた場合には、操作端末２９０１はデバイスリスト２９０８を参照し、デバイス（ネットワークカメラ）２９０２のデバイス情報２９０５中のデバイス種別をキーとして種別・テンプレート対応テーブル２９１０を検索し、デバイス（ネットワークカメラ）２９０２に対応するデバイステンプレート２９１１であるネットワークカメラテンプレート２９１２を決定する。
【０１６７】
デバイス（ビデオ）２９０３に対応するデバイステンプレート２９１１はビデオテンプレート２９１３、デバイス（プリンタ）２９０４に対応するデバイステンプレート２９１１はプリンタテンプレート２９１４である。
【０１６８】
操作端末２９０１はネットワークカメラテンプレート２９１２とデバイス情報２９０５から２９１５に対してデバイス（ネットワークカメラ）２９０２用のＵＩデータ２９１５を追加生成する。
【０１６９】
操作端末２９０１はフレームテンプレート２９０９に記載されている通り、各デバイスのデバイステンプレートを使用して各デバイス用のＵＩを構築し、複数のデバイスのＵＩを一つのＵＩデータ２９１５として合成し、最後にブラウザ２９１６に対してＵＩを表示する。
【０１７０】
図３０は、本実施形態における、デバイスとデバイスＩＤ・種別の対応を表す図である。
欄３００１は、図２９中のデバイス（ネットワークカメラ）２９０２のデバイスＩＤは「uuid:upnp-canon-vbc＿1＿0-00008522CD3A」デバイス種別は「urn:schemas-canon-org:device:NetworkCamera:1」であることを示している。
【０１７１】
同様に、欄３００２は、デバイス（ビデオ）２９０３のデバイスＩＤは「uuid:upnp-canon-video＿1＿0-00009633DE4B」デバイス種別は「urn:schemas-canon-org:device:Video:1」であることを示している。
【０１７２】
同様に、欄３００３は、デバイス（プリンタ）２９０４のデバイスＩＤは「uuid:upnp-canon-printer＿1＿0-00000744EF5C」デバイス種別は「urn:schemas-canon-org:device:Printer:1」であることを示している。
【０１７３】
図３１は、図２９における２９０８デバイスリストの例を示す図である。ここで、図２９において接続されている３つのデバイス２９０２〜２９０４のデバイスリスト３１０１は、先頭がデバイス（ネットワークカメラ）２９０２のデバイス情報３１０２（デバイス情報２９０５と同じ）、続いて、デバイス（ビデオ）２９０３のデバイス情報３１０３（デバイス情報２９０６と同じ）、最後がデバイス（プリンタ）２９０４のデバイス情報３１０４（デバイス情報２９０７と同じ）となっている。このデバイスリストの生成方法については、ネットワークに参加した順番や、ユーザ独自のデバイス優先度、などを基に順序を変えることが可能である。
【０１７４】
図３２は、本実施形態における全体処理の流れを示すフローチャートである。
操作端末２９０１は、複数のデバイスを制御するＵＩを構築するために、まずステップＳ３２０１においてフレームテンプレート２９０９を参照する。
【０１７５】
続いて、操作端末２９０１はステップＳ３２０２においてフレームテンプレート２９０９の全てを処理したかどうかを判定する。ステップＳ３２０２の判定においてフレームテンプレート２９０９の全てについて処理が終了していない場合には処理の流れはステップＳ３２０３へ進み、処理が終了した場合には、ステップＳ３２０７へ進む。
【０１７６】
ステップＳ３２０３において、フレームテンプレート２９０９から１行読み込む。続いてステップＳ３２０３において読み込んだ１行がＵＩデータ２９１５の生成処理の開始を指示した文であるかどうかを判定する（ステップＳ３２０４）。
【０１７７】
読み込んだ１行がＵＩデータ２９１５の生成処理の開始指示文でない場合にはステップＳ３２０６へ進み、読み込んだ行をそのままＵＩデータ２９１５に書き込む。読み込んだ１行がＵＩデータ２９１５の生成処理の開始指示文である場合にはステップＳ３２０５のＵＩデータ生成処理へ進む。この処理の流れは図３３に示される。
【０１７８】
ステップＳ３２０５またはステップＳ３２０６の処理が終了すると、ステップＳ３２０２の判定に戻り、フレームテンプレート２９０９全てについて処理が終了するまで処理を繰り返す。
【０１７９】
ステップＳ３２０２の判定において２９０９フレームテンプレート全てについて処理が終了したと判定された場合には、最後にステップＳ３２０７において、操作端末２９０１は生成されたＵＩデータ２９１５を用いてＵＩデータ表示処理を行い（ステップＳ３２０７）、ブラウザ２９１６に依頼してＵＩを表示して全体の処理を終了する。
【０１８０】
図３３は、本実施形態におけるＵＩデータ生成処理の流れを示すフローチャートである。本処理は第２の実施形態の図１３に示すＵＩデータ生成処理にステップＳ３３１９〜ステップＳ３３２３を追加したものである。
まず現在の読込位置のカレントポインタが対象範囲の終端に達しているかどうかをステップＳ３３０１にて判断し、未だ終端に達していない場合には、構文上の１行を読み込む（ステップＳ３３０２）。
【０１８１】
次に、読み込んだ行がＵＩデータ生成処理の対象範囲の終了を示す構文行であった場合には、処理を終了する（ステップＳ３３１９）。続いて、デバイステンプレートの読込指示文であった場合には、ステップＳ３３２０の判定はステップＳ３３２１へ進み、読込指示文によって指定されたデバイスリスト２９０８中の指定デバイスのテンプレート読込処理を行う。（ステップＳ３３２１）。この処理の詳細は図３４に示される。
【０１８２】
ステップＳ３３２０の判定において、デバイステンプレート２９１１の読込指示文でなかった場合には、読み込んだ１文がデバイスリスト２９０８の各デバイスに対する処理であるかどうかを判定する（ステップＳ３３２２）。
【０１８３】
各デバイスに対する処理指示文であった場合には、ステップＳ３３２２の判定はステップＳ３３２３へ進み、各デバイスに対する処理を行う。この処理の詳細は図３５に示される。
【０１８４】
以上の処理をステップＳ３３０１の判定においてフレームテンプレート２９０９全てについて処理が終了するまで繰り返す。ステップＳ３３０１の判定において処理が終了したと判定された場合には、ＵＩデータ生成処理を終了する。
【０１８５】
図３４は、ステップＳ３３２１に相当するデバイステンプレート読込処理の流れを示すフローチャートである。
まず、ステップＳ３４０１において、デバイスリスト２９０８上のポインタであるカレントデバイスの位置をindexの値とする。カレントデバイスの位置の初期値は０となっている。
【０１８６】
次に、ステップＳ３４０２において、ステップＳ３３２１への入力である読込文のindex属性値が指定されているかどうかを判定する。指定されている場合には、ステップＳ３４０３において、indexの値を指定値とする。
【０１８７】
続いて、デバイスリスト２９０８中のindex番目のデバイスを検索し（ステップＳ３４０４）、対応するデバイスを検索できた場合にはステップＳ３４０５の判定はステップＳ３４０６へ進む。指定されたindex番目のデバイスが存在しない場合には、そのまま処理を終了する。
【０１８８】
この結果、検索したデバイスのデバイス情報を取得し（ステップＳ３４０６）、そのデバイス情報中から、デバイス種別を取得する（ステップＳ３４０７）。取得されたデバイス種別をもとに、対応するデバイステンプレート２９１１を検索する（ステップＳ３４０８）。この処理の流れは図１１に示されるものと同様である。
【０１８９】
該検索の結果、該デバイス種別に対応するデバイステンプレート２９１１が存在するか否かを判断し（ステップＳ３４０９）、対応するデバイステンプレー２９１１トが存在する場合には、該デバイステンプレート２９１１を入力とし、ＵＩデータ領域を新たに出力とする入出力の設定を行った（ステップＳ３４１０）後に、ＵＩデータ生成処理を行う（ステップＳ３４１１）。ステップＳ３４０９の判断の結果、ステップＳ３４０７で得たデバイス種別に対応するデバイステンプレート２９１１が存在しない場合には、処理を終了する。
【０１９０】
図３５は、ステップＳ３３２３に相当するデバイスリスト中の各デバイスに対する処理の流れを示すフローチャートである。
まず変数indexの値を０とし（ステップＳ３５０１）、ステップＳ３３２３への入力である読込文にstart属性値が指定されているかどうかを判定する（ステップＳ３５０２）。start属性値が指定されている場合には、変数indexの値をstart属性値で指定された値に設定する（ステップＳ３５０３）。
【０１９１】
続いて、各デバイスに対する処理を宣言する文（foreach文）の終端を条件の終端として設定し（ステップＳ３５０４）、第２の実施形態と同様に、条件の範囲を保存する（ステップＳ３５０５）。この処理の流れは図１５に示されるとおりである。
【０１９２】
更に、ステップＳ３５０５で保存された条件の範囲を入力として設定する（ステップＳ３５０６）。ステップＳ３５０７において、indexで指定されたデバイスをデバイスリスト２９０８から検索し、指定されたデバイスが存在した場合には、ステップＳ３５０８の判定はステップＳ３５０９へ進む。
【０１９３】
デバイスリスト２９０８中のカレントデバイスは検索されたデバイスと設定し（ステップＳ３５０９）、ステップＳ３５０６で指定された条件の範囲を入力として、ＵＩデータ生成処理を行う（ステップＳ３５１０）。
【０１９４】
ステップＳ３５１０の処理の終了後、変数indexの値を１増やし（ステップＳ３５１１）、ステップＳ３５０７へ戻り、ステップＳ３５０８において、デバイスリスト２９０８からデバイスを検索できなくなるまで処理を繰り返す。
【０１９５】
図３６は、本実施形態における操作端末２９０１が所持する具体的なフレームテンプレートの例を示す図である。図において、左端の数字は行番号を示したものであり、実際のデータには含まれていない。
行３６０６（３６Ａ）「<ui＿template:template>」はＵＩデータ生成処理の開始を宣言する構文であり、行３６２６（３６Ｉ）「</ui＿template:template>」でＵＩデータ生成処理の終了を宣言している。よって行３６０６から行３６２６までがＵＩデータ生成処理の対象範囲を示している。
【０１９６】
行３６０７（３６Ｂ）はＵＩデータ２９１５の変数の定義部であり、複数のデバイスのＵＩを合成した際に、各デバイスのセッションを管理するための変数$sessionの初期値を２０と設定している。
【０１９７】
また、行３６１２（３６Ｄ）、行３６１８（３６Ｆ）、行３６２４（３６Ｈ）では、要素名"ui＿template:device"によって、デバイステンプレート２９１１の読込を指示しており、属性名"index"はデバイスリスト２９０８中の順番を示している。即ち、３６Ｃ（行３６０９〜３６１３）、３６Ｅ（３６１５〜３６１９）、３６Ｇ（３６２１〜３６２５）では、指定したindex番目のデバイス情報をデバイスリスト２９０８から取得し、対応するデバイスのＵＩを指定された範囲（位置/レイアウト）に合成することが記述されている。
【０１９８】
例えば、行３６１２（３６Ｄ）「<ui＿template:device index="1"」という記述は、３６Ｃ（行３６０９〜３６１３）の<svg></svg>で囲まれた範囲に、デバイスリスト２９０８の先頭にあるデバイスのＵＩを合成することを指示している。
【０１９９】
図３７は、本実施形態におけるデバイス（ネットワークカメラ）２９０２が所持するネットワークカメラテンプレート２９１２に対応するデバイステンプレート２９１１の具体的な例を示す図である。
本図において、３７０４、３７１７、３７１８、３７２１に記載の"$uid"は、デバイス識別情報を示す記号である。３７２１に記載の$sessionは、図３６中の３６０７において定義された変数で、デバイスのセッション管理のために用いられている。他のデバイスと区別するために、行３７３３〜３７３５においてデバイス毎に１０ずつ、ずらすように記述されている。
【０２００】
３７２３に記載の"$devName"はデバイス名識別情報を示す記号であり、実際の値はデバイス情報２９０５から得られる。また、行３７０６〜３７０８、行３７０９〜３７１１、行３７１２〜３７１４に記載されている<ui＿template:ifexist></ ui＿template:ifexist >で囲まれた範囲は、対応するデバイス情報中に指定された変数・操作コマンドが存在するかどうかを判定して、ＵＩデータ２９１５を生成する。この処理は第２の実施形態と同様である。
【０２０１】
デバイス（ビデオ）２９０３、デバイス（プリンタ）２９０４も各々が対応するデバイステンプレートを所持している。デバイス（ネットワークカメラ）２９０２、デバイス（ビデオ）２９０３、デバイス（プリンタ）２９０４が順にネットワークに接続されたとき、操作端末２９０１が図３１のようなデバイスリスト２９０８を作成し、図３６のようなフレームテンプレート２９１１を使用した際の、図３２における処理の流れについて以下で詳細に説明する。
【０２０２】
図３１のデバイスリスト３１０１は、ネットワークに接続された順に並んでいる。即ち、新しくネットワークに接続されたものが後ろに繋がっていくように作成されている。操作端末２９０１は図３２のステップＳ３２０１において、図３６のようなフレームテンプレート２９１１を参照する。続いて、ステップＳ３２０２において図３６のフレームテンプレート２９１１の処理が未終了であるので、処理の流れはステップＳ３２０３へ進む。
【０２０３】
ステップＳ３２０３において、図３６のフレームテンプレート２９１１から１行読み込む。その内容は、行３６０１「<svg id="svg" x="0" y="0" width="100%" height="100%"」である。ステップＳ３２０４において、読み込んだ１行がＵＩデータ２９１５の生成処理の開始指示文（<ui＿template:template>）でないので、処理の流れはステップＳ３２０６へ進み、読み込んだ行「「<svg id="svg" x="0" y="0" width="100%" height="100%"」をそのままＵＩデータ２９１５に書き込み、ステップＳ３２０２の判定に戻る。
【０２０４】
ステップＳ３２０２の判定において、図３６のフレームテンプレート２９１１の処理は未終了であるので、ステップＳ３２０３において、図３６の次の行３６０２「preserveAspectRatio="none"」を読み込む。行３６０２〜３６０６までは行３６０１の処理と同様に、ステップＳ３２０４の判定はステップＳ３２０６へ進み、読み込んだ１行をそのままＵＩデータ２９１５に書き込み、ステップＳ３２０２の判定に戻ることを繰り返す。
【０２０５】
続いて、ステップＳ３２０３において行３６０７「<ui＿template:template>」を読み込む。ステップＳ３２０４において、読み込んだ１行がＵＩデータ２９１５の生成処理の開始指示文「<ui＿template:template>」であるので、処理の流れはステップＳ３２０５へ進む。
【０２０６】
続いてステップＳ３２０５においてＵＩデータ生成処理を行う。まず、ステップＳ３３０２において、構文上の１行、行３６０７「<ui＿template:variable name="$session" value="20"/>」を読み込む。読み込んだ行３６０７はＵＩデータ生成処理の終了構文「</ui＿template:template>」ではないので、ステップＳ３３１９の判定はステップＳ３３２０へ進む。
【０２０７】
さらに、読み込んだ行３６０７はデバイステンプレート２９１１の読込指示文（「<ui＿template:device」で始まる文）でないので、ステップＳ３３２０の判定はステップＳ３３２２へ進む。ここでも、読み込んだ行３６０７は各デバイスに対する処理を指示する構文「<ui＿template:foreach device」ではないので、ステップＳ３３０３へ進み、第２の実施形態と同様に、変数$sessionの設定処理を行い、ステップＳ３３０１の判定に戻る。行３６０８〜３６１１までは第１及び第２の実施形態と同様に処理を行う。
【０２０８】
ステップＳ３３０２において、行３６１２「<ui＿template:device index="0"/>」を読み込むと、読み込んだ行３６１２はＵＩデータ生成処理の終了構文「</ui＿template:template>」ではないので、ステップＳ３３１９の判定はステップＳ３３２０へ進む。
【０２０９】
続いて、行３６１２は、デバイステンプレートの読込みを指示した文（「<ui＿template:device」で始まる文）であるので、ステップＳ３３２０の判定はステップＳ３３２１へ進みデバイステンプレート読込処理を行う。
【０２１０】
デバイステンプレート読込処理においては、まず、ステップＳ３４０１において、デバイスリスト２９０８上のポインタであるカレントデバイスの位置をindexの値とする。現在カレントデバイス位置は初期値の０となっている。
【０２１１】
ステップＳ３４０２において、行３６１２「<ui＿template:device index="0" />」によって、index="0"であるデバイスの読み込みを指示されているの、indexの値を０と設定する（ステップＳ３４０３）。続いて、デバイスリスト２９０８中の０番目のデバイスを検索し、対応するデバイスを検索する（ステップＳ３４０５）。
【０２１２】
ここで、図３１のデバイスリスト３１０１の０番目はデバイスリスト３１０１の先頭であるのでステップＳ３４０５の判定はステップＳ３４０６へ進み、検索された指定デバイス（デバイスリストの先頭）のデバイス情報を取得し（ステップＳ３４０６）、そのデバイス情報中から、検索された先頭のデバイスのデバイス種別「urn:schemas-canon-org:device:NetworkCamera:1」を取得する （ステップＳ３４０７）。
【０２１３】
このデバイス種別「urn:schemas-canon-org:device:NetworkCamera:1」をキーとして、２９１０種別・テンプレート対応テーブルを検索し、対応するデバイステンプレート２９１１を検索する（ステップＳ３４０８）。このデバイステンプレート２９１１の検索については第１の実施形態に説明したとおりである。この結果、デバイステンプレート「ネットワークカメラテンプレート」が取得される。
【０２１４】
検索されたデバイス種別に対応するデバイステンプレート２９１１が存在するので、ステップＳ３４０９の判定はステップＳ３４１０へ進み、ＵＩデータ領域を新たに出力とする入出力の設定を行う。検索されたデバイステンプレート２９１１と、ステップＳ３４０６において取得されたデバイス情報を基に、第１及び第２の実施形態と同様にＵＩデータ生成処理を行う（ステップＳ３４１１）。以上の処理をステップＳ３３０１の判定が終了となるまで繰り返すと、図３８のようなＵＩデータ２９１５となる。
【０２１５】
図３８は、デバイス（ネットワークカメラ）２９０２、デバイス（ビデオ）２９０３、デバイス（プリンタ）２９０４が順にネットワークに接続されたとき、操作端末２９０１がこれら３つのデバイスのＵＩを合成して作成したＵＩデータ２９１５の例を示す図である。
図３８中の３８Ａの部分に図３１のデバイスリスト３１０１先頭のデバイス（ネットワークカメラ）のＵＩが合成されており、３８Ｂの部分にデバイスリスト３１０１の２番目のデバイス（ビデオ）のＵＩ、３８Ｃの部分にデバイスリスト３番目のデバイス（ディスプレイ）のＵＩが合成されている。
【０２１６】
このＵＩデータ２９１５を用いてＵＩデータ表示処理を行い（ステップＳ３２０７）、ブラウザ２９１６に依頼してＵＩを表示して全体の処理を終了する。表示された画面は図３９のように示される。
【０２１７】
図３９は、３つのデバイスを同時に操作できるように１つのＵＩに合成した画面の例を示す図である。
３９０１はデバイス（ネットワークカメラ）のＵＩ、３９０２はデバイス（ビデオ）のＵＩ、３９０３はデバイス（ディスプレイ）のＵＩであり、図３６のフレームテンプレート２９１１に指定されたとおりの位置にレイアウトされている。
【０２１８】
例えば、デバイスリスト３１０１の順番が図４０のようになっている場合には、デバイスリスト３１０１の２番目、３番目のデバイスが入れ替わり、作成される画面も図４１のように、デバイス（ネットワークカメラ）のＵＩ４１０１はほぼ同じであるが、デバイス（ビデオ）のＵＩ４１０３とデバイス（プリンタ）のＵＩ４１０２の位置が異なる画面となる。
【０２１９】
また、操作端末２９０１がデバイス（ネットワークカメラ）２９０２、デバイス（ビデオ）２９０３、デバイス（プリンタ）２９０４の接続によって図３１のようなデバイスリストを作成し、図４２のようなフレームテンプレート２９１１を使用した場合について説明する。ここで、デバイス（ネットワークカメラ）２９０２のデバイステンプレートが２９１１図４３のように表されるとする。
【０２２０】
図４２は、本実施形態における操作端末２９０１が所持する具体的なフレームテンプレート２９０９の例を示す図である。図４２において、左端の数字は行番号を示したものであり、実際のデータには含まれていない。
行４２０６（４２Ａ）「<ui＿template:template>」はＵＩデータ生成処理の開始を宣言する構文であり、行４２１２（４２Ｅ）「</ui＿template:template>」でＵＩデータ生成処理の終了を宣言している。よって行４２０６から行４２１２までがＵＩデータ生成処理の対象範囲を示している。
【０２２１】
４２ＢはＵＩデータの変数の定義部である。行４２０７においては変数$xの初期値を１０５と設定・定義しており、行４２０８のおいては、複数のデバイスのＵＩを合成した際に、各デバイスのセッションを管理するための変数$sessionの初期値を２０と設定している。
【０２２２】
また、４２Ｃは、行４２０７の要素名" <ui＿template:foreach device"によって、デバイスリストに存在するデバイス全てに対して、行４２１１「</ui＿template:foreach>」で終了が宣言される範囲までの処理を行うように指示しており、行４２０７の属性名"start"はデバイスリスト２９０８の開始位置を指示している。
【０２２３】
ここで、全てのデバイスに対する処理として、行４２１０の「ui＿template:device/>」によって、テンプレートの読込を指示している。ここで、行４２１０は、図３６の３６１２等と違い、属性"index"が指定されていない。この場合は、デバイスリストのカレントポインタで指定された位置にあるデバイスのＵＩを合成することを指示している。
【０２２４】
図４３は、本実施形態におけるデバイス（ネットワークカメラ）２９０２が所持するネットワークカメラテンプレート２９１２に対応するデバイステンプレートの具体的な例を示す図である。図４３において、左端の数字は行番号を示したものであり、実際のデータには含まれていない。
【０２２５】
図４３において、行４３３３〜４３３６は式を表しており、行４３３３は図４２の行４２０７において定義した変数$xに１３０を加算する式を、行４３３５は図４２の行４２０８において定義した変数$sessionに１０を加算する式を表している。
【０２２６】
４３０１の"x="$x""はX座標として、変数$xの値を使うことを意味している。即ち、読み込まれるデバイステンプレート（図４３）の行４３０１の要素名"<svg id="svg""で表される特定の範囲に読み込まれるデバイスのＵＩ表示位置のX座標がその時点での$xの値によって変わることを表している。従って、このデバイステンプレートが読み込まれる以前に$xの値が変化しているかどうかによって、デバイステンプレートのレイアウトが変化することを意味している。
【０２２７】
４３０４、４３１７、４３１８、４３２１に記載の"$uid"は、デバイス識別情報を示す記号である。４３２１に記載の"$session"は、図４２中の４２０８において定義された変数で、デバイスのセッション管理のために用いられている。他のデバイスと区別するために、行４３３５においてデバイス毎に１０ずつ、ずらすように記述されている。４３２３に記載の"$devName"はデバイス名識別情報を示す記号であり、デバイス情報２９０５から得られる。
【０２２８】
また、行４３０６〜４３０８、行４３０９〜４３１１、行４３１２〜４３１４に記載されている<ui＿template:ifexist></ ui＿template:ifexist >で囲まれた範囲は、対応するデバイス情報中に指定された変数・操作コマンドが存在するかどうかを判定して、ＵＩデータ２９１５を生成する。この処理は第２の実施形態と同様である。
【０２２９】
デバイス（ビデオ）２９０３、デバイス（プリンタ）２９０４も各々が対応するデバイステンプレート２９１１を所持しており、これらのデバイステンプレート２９１１中には、変数$xを変化させるような記述が含まれている場合がある。
【０２３０】
本実施形態の処理によって図４２のようなフレームテンプレート２９１１と図４３のようなデバイステンプレート２９１１と、図３１のようなデバイスリスト３１０１を用いて作成されるＵＩデータ生成処理に関して、図４２の４２Ｃの部分についての処理の流れを説明する。
【０２３１】
図３３ステップＳ３３０２において、行４２０９「<ui＿template:foreach device start="0">」を読み込むと、ステップＳ３３２２の判定は、ステップＳ３３２３へ進む。ステップＳ３３２３各デバイスに対する処理（図３５）において、まず変数indexの値を０とし（ステップＳ３５０１）、行４２０９にはstart属性値が指定されているので、ステップＳ３５０２の判定はステップＳ３５０３へ進み、変数indexの値をstart属性値で指定された値（"0"）に設定する（ステップＳ３５０３）。
【０２３２】
続いて、各デバイスに対する処理を宣言する文（foreach文）の終端（行４２１１の読込）を条件の終端として設定し（ステップＳ３５０４）、第２の実施形態と同様に、条件の範囲を保存する（ステップＳ３５０５）。
【０２３３】
更に、ステップＳ３５０５で保存された条件の範囲「行４１２０「<ui＿template:device/>」」を入力として設定し（ステップＳ３５０６）、ステップＳ３５０７において、indexで指定されたデバイスリスト３１０１の先頭のデバイスを検索する。
【０２３４】
先頭のデバイスが存在するので（ステップＳ３５０８）、デバイスリスト中のカレントデバイスを検索されたデバイス（デバイスリストの先頭デバイス）と設定し（ステップＳ３５０９）、ステップＳ３５０６で指定された条件の範囲を入力として、ＵＩデータ生成処理を行う（ステップＳ３５１０）。ステップＳ３５１０の処理により、先頭デバイスのデバイステンプレートの読込が図３４の処理の流れに従って、行われる。
【０２３５】
ステップＳ３５１０の処理の終了後、変数indexの値を１増やしながら、ステップＳ３５０８において、デバイスリストからデバイスを検索できなくなる（デバイスリストの全デバイスに対する処理が終了する）まで処理を繰り返す。この処理によって作成されるＵＩ画面は図４４のようにデバイス（ネットワークカメラ）のＵＩ４４０１、デバイス（プリンタ）のＵＩ４４０２、デバイス（ビデオ）のＵＩ４４０３が並んで表示される。
【０２３６】
以上説明したように、本実施形態に拠れば、複数のデバイスからのデバイス情報と、それぞれのデバイスに対応するデバイステンプレート２９１１を複数組み合わせて、複数のデバイスを制御するためのユーザインタフェースを構築する事で、ある１つのデバイスが機能更新などのバージョンアップをした場合でも全ＵＩを更新することなく、そのデバイスに対応するデバイステンプレート２９１１のみを変更することで、複数のデバイスを制御する為のユーザインタフェースを更新することができる効果がある。
【０２３７】
また、複数のデバイスからのデバイス情報に順位付けを行い、その順位付けに従って、それぞれのデバイスに対応する複数のデバイステンプレート２９１１から構成されているＵＩを、デバイステンプレート２９１１の組み合わせを変更する事で、操作対象となる複数のデバイスの組み合わせが変更されたＵＩを容易に実現できる効果がある。
【０２３８】
（第５の実施形態）
本実施形態においては第３の実施形態におけるフレームテンプレートから別のフレームテンプレートをリンクし、それぞれのテンプレートにデバイスに対応するデバイステンプレートを複数組み合わせて、同時に複数のデバイスを制御する為のＵＩを構築する例を示す。本実施形態においても全体の流れは第３の実施形態の図３２と同様である。
【０２３９】
図４５は、本実施形態における具体的な構成を示す図である。
本実施形態においては第３の実施形態の構成（図２９）と比べると、フレームテンプレート４５０９の構成、種別・デバイステンプレート対応テーブル４５１０の構造、デバイステンプレート４５１１の種類が異なっている。
【０２４０】
操作端末４５０１はデバイスを制御するＵＩを構築するために、まず、親フレームテンプレート４５１６を読み込む。ここで、操作端末４５０１は図４６に示されるようなデバイスリスト４６０１を所持しているとする。
【０２４１】
操作端末４５０１は親フレームテンプレート４５１６を解析し、必要に応じて、子フレームテンプレート４５１７や各デバイスのデバイステンプレート４５１１を使用してＵＩを構築する。ここで、親フレームテンプレート４５１６から呼び出されるデバイステンプレートのテンプレートタイプを"メイン"、子フレームテンプレート４５１７から呼び出されるデバイステンプレート４５１１のテンプレートタイプを"サブ"とする。
【０２４２】
例えば、親フレームテンプレート４５１６中にデバイス４５０３のＵＩを構築する内容が記載されていた場合には、操作端末４５０１はデバイスリスト４５０８を参照し、デバイス（ＴＶ）４５０３のデバイス情報４５０５中のデバイス種別とテンプレートタイプ＝"メイン"（親フレームテンプレート４５１７からの呼び出しであるので）とキーとして種別・テンプレート対応テーブル４５１０を検索してデバイス（ＴＶ）４５０３のテンプレートタイプ＝"メイン"に対応するデバイステンプレート４５１１であるテレビメインテンプレート４５１３を決定する。
【０２４３】
操作端末４５０１はテレビメインテンプレート４５１２とデバイス情報４５０６から４５１４に対してデバイス４５０３用のテンプレートタイプがメインであるＵＩデータ４５１４を追加生成する。
【０２４４】
操作端末４５０１はフレームテンプレート４５０９に記載されている通り、各デバイスのデバイステンプレートを使用して各デバイス用のＵＩを構築し、複数のデバイスのＵＩを一つのＵＩデータ４５１４として合成し、最後にブラウザ４５１５に対してＵＩを表示する。
【０２４５】
ここで、デバイス（ネットワークカメラ）４５０２のデバイスＩＤは「uuid:upnp-canon-vbc＿1＿0-0008522CD3A」、デバイス種別は「urn:schemas-canon-org:device:NetworkCamera:1」、デバイス（ＴＶ）４５０３のデバイスＩＤは「uuid:upnp-canon-csed-1000-00008522NEKO」、デバイス種別は「urn:schemas-canon-org:device:TvDevice:1」、デバイス（ネットワークカメラ）４５０４のデバイスＩＤは「uuid:upnp-canon-vbc＿1＿0-0007411BC2Z」、デバイス種別は「urn:schemas-canon-org:device:NetworkCamera:1」である。
【０２４６】
図４６は、本実施形態においてデバイス（ＴＶ）４５０３、デバイス（ネットワークカメラ）４５０２、デバイス（ネットワークカメラ）４５０４が順にネットワークに接続されたとき、操作端末４５０１が作成するデバイスリスト４６０１を表す図である。
【０２４７】
デバイスリストの先頭４６０２にデバイス（ＴＶ）４５０３に対応するデバイス情報が、デバイスリストの２番目４６０３にデバイス（ネットワークカメラ）４５０２に対応するデバイス情報が、デバイスリストの３番目４６０４にデバイス（ネットワークカメラ）４５０４に対応するデバイス情報がつながっている。
【０２４８】
デバイスリストの２番目と３番目は、同じデバイス種別「urn:schemas-canon-org:device:NetworkCamera:1」をもつデバイスの情報であるが、図７の（７Ｃ）のようにデバイス情報中にデバイスＩＤが記載されており各々を識別できる。
【０２４９】
図４７は、本実施形態におけるＵＩデータ生成処理の流れを示すフローチャートである。本処理は第３の実施形態の図３５に示すＵＩデータ生成処理にステップＳ４７２２〜ステップＳ４７２５までを追加したものである。
操作端末４５０１は、複数のデバイスを制御するＵＩを構築するために、まずステップＳ４７０１において親フレームテンプレート４５１６を参照する。
【０２５０】
続いて４５０１操作端末はステップＳ４７０２においてフレームテンプレート４５０９の全てを処理したかどうかを判定する。まず、読込位置のカレントポインタが対象範囲の終端に達しているかどうかをステップＳ４７０１にて判断し、未だ終端に達していない場合には、構文上の１行を読み込む（ステップＳ４７０２）。次に、読み込んだ行がＵＩデータ生成処理の終了を示す構文行であった場合には、処理を終了する。（ステップＳ４７１９）。
【０２５１】
続いて、読み込んだ行が親フレームテンプレート４５１６から他のファイル（他のフレームテンプレート、子フレームテンプレート４５１７等）の読み込みを指示する構文行であった場合には、ステップＳ４７２２の判定は処理の流れはステップＳ４７２３へ進む。
【０２５２】
ステップＳ４７２４において、読み込みを指示された他のファイルが存在するかどうかを判定し、存在する場合には、このファイルを対象にＵＩデータ生成処理を再帰的に呼び出す（ステップＳ４７２５）。存在しない場合には、ステップＳ４７０１へ戻る。
【０２５３】
ステップＳ４７２２の判定において、他のファイル（他のフレームテンプレート、子フレームテンプレート４５１７等）の読み込みを指示する構文行でなかった場合には、ステップＳ４７２２の判定はステップＳ４７２０へ進み、第４の実施形態と同様に処理を行い、ステップＳ４７０１の判定へ戻る。
【０２５４】
以上の処理をステップＳ４７０１の判定において親フレームテンプレート４５１６全てについて処理が終了するまで、あるいはステップＳ４７１９において対象範囲の終了文を繰り返す。ステップＳ４７０１の判定において処理が終了したと判定された場合には、ＵＩデータ生成処理を終了する。
【０２５５】
図４８は、本実施形態におけるステップＳ４７２１に相当する、デバイステンプレート読込処理の流れを示すフローチャートである。この図は第４の実施形態におけるデバイステンプレート読込処理にステップＳ４８０４およびステップＳ４８０５を追加した物である。
【０２５６】
本実施形態におけるデバイステンプレート読込処理においてはステップＳ４７２１への入力である読込文にtype属性値が指定されているかどうかを判定し（ステップＳ４８０４）、指定されている場合には、typeの値を指定値として設定する（ステップＳ４８０５）。
【０２５７】
ここで指定されたテンプレートタイプの値とステップＳ４８０９で取得されたデバイス種別を用いて、対応するデバイステンプレート４５１１を検索する（ステップＳ４８１０）。この処理の流れは図４９ に示される。
【０２５８】
図４９は、本実施形態におけるステップＳ４８１０に相当する対応テンプレート検索処理の流れを示すフローチャートである。
まず、種別・テンプレート対応テーブル４５１０にまだデバイス種別とテンプレートとタイプの組が存在するか否かを判断し（ステップＳ４９０１）、存在するならば該デバイス種別とテンプレートとタイプの組を得て（ステップＳ４９０２）、その中のデバイスの種別を得る（ステップＳ４９０３）。
【０２５９】
次に、該デバイスの種別がステップＳ４８０９で得たデバイスの種別に一致するか否かを判断し（ステップＳ４９０４）、一致するならばステップＳ４９０５において、ステップＳ４８０５で設定された（テンプレート）タイプを得て、ステップＳ４９０２で得た（テンプレート）タイプが一致する場合には、ステップＳ４９０２で得たデバイス種別とテンプレートとタイプの組からデバイステンプレート４５１１を得て、対応するデバイステンプレート４５１１として（ステップＳ４９０７）、処理を終了する。
【０２６０】
ステップＳ４９０４の判断の結果、両デバイスの種別が一致しない場合には、ステップＳ４９０１の判断に戻る。ステップＳ４９０１の判断の結果、種別・テンプレート対応テーブル４５１０にもうデバイス種別とテンプレートとタイプの組が存在しないならば、処理を終了する。
【０２６１】
ステップＳ４９０６の判断の結果、両デバイスの種別が一致するが、タイプのみが異なる場合には、ステップＳ４９０８において、仮の結果テンプレートとして設定し、もしステップＳ４８０５において（テンプレート）タイプが設定されていない場合には、始めに見つかった種別・テンプレート対応テーブルの組に対応するテンプレートが返される。
【０２６２】
図５０は本実施形態における操作端末４５０１が所持する具体的な親フレームテンプレート４５１６の例を示す図である。図５０において、左端の数字は行番号を示したものであり、実際のデータには含まれていない。
【０２６３】
行５０１１（５０Ａ）「<ui＿template:template>」はＵＩデータ生成処理の開始を宣言する構文であり、行５０２０（５０Ｅ）「</ui＿template:template>」でＵＩデータ生成処理の終了を宣言している。よって行５０１１から行５０２０までがＵＩデータ生成処理の対象範囲を示している。
【０２６４】
行５０１７（５０Ｃ）では、要素名"ui＿template:device"によって、デバイステンプレート４５１１の読込を指示しており、属性名"type"はデバイスのテンプレートタイプを示している。但し、属性値"index"による指定はないため、読み込むデバイスはデバイスリスト４６０１のカレントポインタ（初期値は先頭）である。
【０２６５】
即ち、５０Ｂ（行５０１２〜５０１８）では、指定したテンプレートタイプでデバイスリスト４６０１の先頭にあるデバイスのデバイス情報を取得し、対応するデバイスのＵＩを指定された範囲５０Ｂ（位置/レイアウト）に合成することが記述されている。
【０２６６】
また、行５０１９（５０Ｄ）では、要素名"<ui＿template:import"により、ファイルの読み込みを指定している。ここで、属性名"xlink:href"のファイルパスで指定されているファイルを読み込むことを指示している。即ち行５０２０（５０Ｅ）では、ファイル"sub＿template.svg"を読み込んで処理することを指示している。
【０２６７】
図５１は、本実施形態におけるデバイス（ＴＶ）４５０３が所持するテレビメインテンプレート４５１３に対応するテンプレートタイプ="main"であるデバイステンプレート４５１１の具体的な例を示す図である。図５１において、左端の数字は行番号を示したものであり、実際のデータには含まれていない。
【０２６８】
図５１において、５１Ａ、５１Ｂ、５１Ｃ、５１Ｄ、５１Ｅ、５１ＦはＵＩにおけるＵＩ部品の有無及びレイアウトを変更するための条件記述であり、図５２のようなデバイス情報および図５３に記載の操作コマンドの有無によってＵＩ部品<xforms:range>を表示するか否かを判定する条件記述である。
【０２６９】
図５２は、本実施形態におけるデバイス（ＴＶ）４５０３のデバイス情報４５０６の一例としてXMLデータを示す図である。
図５２において、左端の数字は行番号を示したものであり、実際のデータには含まれていない。行番号５２０８にある５２Ａはデバイス情報におけるデバイス種別を示す記述である。このうち"urn:schemas-canon-org:device:TvDevice:1"が実際のデバイス種別を示す文字列である。
【０２７０】
行番号５２０９にある５２Ｂはデバイス名を示す記述である。このうち"Canon TV"が実際のデバイス名を示す文字列である。行番号５２１７にある５２ＣはデバイスＩＤを示す記述である。このうち"uuid:upnp-canon-csed-1000-00008522NEKO"が実際のデバイスＩＤを示す文字列である。行番号５２２４にある５２Ｄはデバイスを操作するための操作サービスを示すXMLデータへのリンクを示している。
【０２７１】
図５３は、本実施形態においてデバイスを操作するための操作サービスを示すデバイス情報の一例としてXMLデータを示す図である。
図５３において、左端の数字は行番号を示したものであり、実際のデータには含まれていない。図５３は、図５２において５２Ｄで表わされた操作サービスを示すデバイス情報である。
【０２７２】
図５３において、５３Ａ、５３Ｂ、５３Ｃはそれぞれ別の操作コマンドを表わしており、それぞれの操作コマンド名がIncreaseChannel、DecreaseChannel、ControlVolumeであること、およびそれぞれの操作コマンドの引数などを示している。
また、５３Ｄ、５３Ｅは状態変数を示しており、その名称がそれぞれ、Channel、Volumeであることを示している。
【０２７３】
図５４は、図５０の行５０１９（５０Ｄ）よりインポートされている子テンプレート（sub＿template.svg）の例を示す図である。このファイルはSVGファイルであってもよいし、別の形式のテキストファイルであってもよい。図５４において、左端の数字は行番号を示したものであり、実際のデータには含まれていない。
【０２７４】
５４ＡはＵＩデータ４５１４の変数の定義部である。行５４０６においては変数$xの初期値を１０５と設定・定義しており、行５４０７のおいては、複数のデバイスのＵＩを合成した際に、各デバイスのセッションを管理するための変数$sessionの初期値を２０と設定している。
【０２７５】
また、５４Ｃは、行５４０８の要素名"<ui＿template:foreach device"によって、デバイスリスト４６０１に存在するデバイス全てに対して、行５４１０「</ui＿template:foreach>」で終了が宣言される範囲までの処理を行うように指示おり、行５４０８の属性名"start"はデバイスリスト４６０１の開始位置を指示している。
【０２７６】
ここで、デバイスリスト４６０１のindex=１（先頭から２番目）のデバイスから初めて、全てのデバイスに対する処理として、行５４０９の「<ui＿template:device」によって、テンプレートの読込を指示している。
【０２７７】
さらに行５４０９では、属性"type"によって、読み込むデバイスのテンプレートタイプが指定されている。ここではテンプレートタイプ＝"sub"であるものを指定している。また行５４０９では属性"index"が指定されていない。この場合は、デバイスリスト４６０１のカレントポインタで指定された位置にあるデバイスのＵＩを合成することを指示している。
【０２７８】
図５５は、本実施形態における４５０２デバイス（ネットワークカメラ）に対応する４５１８ネットワークカメラに対応するテンプレートタイプ="sub"であるデバイステンプレート４５１１の具体的な例を示す図である。
図５５において、左端の数字は行番号を示したものであり、実際のデータには含まれていない。
【０２７９】
本図において、行５５０６〜５５０８は式を表しており、行５５０７において、変数$xに１３０を加算する式を表している。５５０１の"x="$x""はX座標として、変数$xの値を使うことを意味している。即ち、読み込まれるデバイステンプレート（図５５）の行５５０１の要素名"<svg id="svg""で表される特定の範囲に読み込まれるデバイスのＵＩ表示位置のX座標がその時点での$xの値によって変わることを表している。したがって、このデバイステンプレート４５１１が読み込まれる以前に$xの値が変化しているかどうかによって、デバイステンプレート４５１１のレイアウトが変化することを意味している。
【０２８０】
各デバイスはテンプレートタイプ（main/sub）に対応するデバイステンプレート４５１１をそれぞれ所持しており、これらのデバイステンプレート４５１１中には、変数$xを変化させるような記述が含まれている場合がある。
【０２８１】
ここで、デバイス（ＴＶ）４５０３、デバイス（ネットワークカメラ）４５０２、デバイス（ネットワークカメラ）４５０４が順にネットワークに接続によって、操作端末４５０１が図４６のようなデバイスリスト４６０１を作成し、図５０のような親フレームテンプレート４５１６を使用した際の、図３２および図４７における処理の流れについて以下で詳細に説明する。図４６のデバイスリスト４６０１は、ネットワークに接続された順に並んでいる。即ち、新しくネットワークに接続されたものが後ろに繋がっていくように作成されている。
【０２８２】
操作端末４５０１は図３２のステップＳ３２０１において、図５０のような親フレームテンプレート４５１６を参照する。続いてステップＳ３２０２において図５０の親フレームテンプレートの処理が未終了であるので、処理の流れはステップＳ３２０３へ進む。ステップＳ３２０３において、図５０の親フレームテンプレートから１行読み込む。その内容は、行５００１「<?xml version="1.0" standalone="no"?>」である。
【０２８３】
ステップＳ３２０４において、読み込んだ１行がＵＩデータ４５１４の生成処理の開始指示文（<ui＿template:template>）でないので、処理の流れはステップＳ３２０６へ進み、読み込んだ行「<?xml version="1.0" standalone="no"?>」をそのままＵＩデータ４５１４に書き込み、ステップＳ３２０２の判定に戻る。
【０２８４】
ステップＳ３２０２の判定において、図３６のフレームテンプレート４５１１の処理は未終了であるので、ステップＳ３２０３において、図５０の次の行５００２「<svg id="svg" x="0" y="0" width="100%" height="100%"」を読み込む。
【０２８５】
行５００２〜５０１０までは行５００１の処理と同様に、ステップＳ３２０４の判定はステップＳ３２０６へ進み、読み込んだ１行をそのままＵＩデータ４５１４に書き込み、ステップＳ３２０２の判定に戻ることを繰り返す。ステップＳ３２０３において行５４１１「<ui＿template:template>」を読み込む。
【０２８６】
ステップＳ３２０４において、読み込んだ１行がＵＩデータ４５１４の生成処理の開始指示文「<ui＿template:template>」であるので、処理の流れはステップＳ３２０５へ進む。
ステップＳ３２０５においてＵＩデータ生成処理を行う。この処理は図４７に示されるとおりである。
【０２８７】
処理は終了していないのでステップＳ４７０１の判定はステップＳ４７０２へ進み、構文上の１行、行５０１２「<svg id="svg" x="0" y="0" width="100%" height="100%"」を読み込む（ステップＳ４７０２）。読み込んだ行５０１２はＵＩデータ生成処理の終了構文「</ui＿template:template>」ではないので、ステップＳ４７１９の判定はステップＳ４７２２へ進む。
【０２８８】
ステップＳ４７２２の判定において、他のファイル（フレームテンプレート）の読み込みを指示する構文行「<ui＿template:import」ではないでの、ステップＳ４７２２の判定はステップＳ４７２０へ進む。
【０２８９】
さらに、読み込んだ行５０１２はデバイステンプレート４５１１の読込指示文（「<ui＿template:device」で始まる文）でないので、ステップＳ４７２０の判定はステップＳ４７０３へ進み、第２の実施形態と同様に処理を行い、ステップＳ４７０１の判定に戻る。行５０１２〜５０１６までは第２の実施形態と同様に処理を行う。
【０２９０】
ステップＳ４７０２において、行５０１７「<ui＿template:device type="main">」を読み込むと、読み込んだ行がＵＩデータ生成処理の終了を示す構文行「</ui＿template:template>」でないので、ステップＳ４７１９の判定はステップＳ４７２２へ進む。
【０２９１】
ステップＳ４７２２の判定において、他のフレームテンプレートの読み込みを指示する構文行「<ui＿template:import」ではないので、ステップＳ４７２２の判定はステップＳ４７２０へ進む。ここで、読み込んだ行５０１７はデバイステンプレート４５１１の読込指示文（「<ui＿template:device」で始まる文）であるので、処理の流れはステップＳ４７２１へ進む。
【０２９２】
読込指示文によって指定されたデバイスリスト中の指定デバイスに対するデバイステンプレート読込処理を行う（ステップＳ４７２１）。ここで、行５０１７では属性値"index"による指定はないため、ステップＳ４８０１で取得されたカレントデバイス（index=0）により、デバイスリスト４６０１の先頭にあるデバイスのデバイス（ネットワークカメラ）４５０２が検索される（ステップＳ４８０６）。
【０２９３】
さらに、デバイスリスト４６０１から検索したデバイス情報を取得する（ステップＳ４８０８）。このデバイス情報は図５２、５３に示されるようなものである。取得したデバイス情報から５２０８のデバイス種別"urn:schemas-canon-org:device:TvDevice:1"を取得する（ステップＳ４８０９）。
【０２９４】
行５０１７では属性名"type"が"main"と指定されているので、ステップＳ４８０４の判定はステップＳ４８０５へ進み、デバイスのテンプレートタイプを"メイン"（type=main）と設定する。
【０２９５】
この結果、ステップＳ４８０９において取得したデバイス種別"urn:schemas-canon-org:device:TvDevice:1"とステップＳ４８０５において設定したテンプレートタイプ"メイン"（type=main）をキーとして、種別・テンプレート対応テーブル４５１０を検索し、対応するデバイステンプレート４５１１であるテレビメインテンプレート４５１３を検索する（ステップＳ４８１０）。このテレビメインテンプレート４５１３は図５１に示されるようなものである。
【０２９６】
検索の結果、デバイス種別に対応するデバイステンプレート４５１１が存在するので、ステップＳ４８１１の判定はステップＳ４８１２へ進み、ＵＩデータ領域を新たに出力とする入出力の設定を行う。
【０２９７】
検索されたテレビメインテンプレート４５１３（図５１）と、ステップＳ４７２２において取得されたデバイス情報（図５２、５３）を基に、第１及び第２の実施形態と同様にＵＩデータ生成処理を行う（ステップＳ４８１３）。ステップＳ４８１３のＵＩデータ生成処理が終了後、ステップＳ４７０１の判定へ戻り、処理を続ける。
【０２９８】
ステップＳ４７０２において行５０１９「<ui＿template:import…」を読み込むと、読み込んだ行がＵＩデータ生成処理の終了を示す構文行「</ui＿template:template>」でないので、ステップＳ４７１９の判定はステップＳ４７２２へ進む。ステップＳ４７２２の判定において、他のファイル・フレームテンプレートの読み込みを指示する構文行「<ui＿template:import」であるので、処理の流れはステップＳ４７２３へ進む。
【０２９９】
ステップＳ４７２３において、属性値"xlink:href"によって読み込みを指示された他のフレームテンプレート"sub＿template.svg"を参照し、このファイルが存在するので、入力を"sub＿template.svg"に設定し（ステップＳ４７２４）、このフレームテンプレートを対象にＵＩデータ生成処理を再帰的に呼び出す（ステップＳ４７２５）。sub＿template.svgは図５４に示されるような物である。
【０３００】
ステップＳ４７２５においては、図５４に示されるようなフレームテンプレート４５０９を対象にＵＩデータ生成処理を行う。この再帰的に呼び出されるＵＩデータ生成処理において、ステップＳ４７０２において、行５４０８を読み込んだ際には、デバイスリスト４６０１のindex=1（先頭から２番目）のデバイスから始めて、デバイスリスト４６０１中の全てのデバイスに対して、行５４０９の「<ui＿template:device」によって指示された、テンプレートタイプ＝"sub"であるデバイステンプレート４５１１のＵＩをＵＩデータ４５１４に追加する処理を行う。この処理の流れは図４７、４９に示される処理の流れに従って行なわれる。
【０３０１】
続いて、ステップＳ４７０２において行５０２０「</ui＿template:template」を読み込むと、読み込んだ行がＵＩデータ生成処理の終了を示す構文行「</ui＿template:template>」であるのでＵＩデータ生成処理を終了する。このようにして生成されたＵＩデータ４５１４は図５６のように示される。
【０３０２】
図５６中の５６Ａは親フレームテンプレート４５１６から読み込まれた、図４６にあるデバイスリストの先頭のテンプレートタイプ＝"メイン"のデバイス（デバイス（ＴＶ）、デバイスID：uuid:upnp-canon-csed-1000-00008522NEKO）のデバイステンプレート４５１１から作成されたＵＩである。
【０３０３】
５６Ｂは、親フレームテンプレート４５１６からimportされた他のフレームテンプレート（子フレームテンプレート４５１７）により構成されたＵＩである。この中で、５６Ｃは子フレームテンプレート４５１７から読み込まれた、図４６にあるデバイスリスト４６０１の２番目のデバイス（デバイス（ネットワークカメラ）、デバイスID：uuid:upnp-canon-vbc＿1＿0-0008522CD3A）のテンプレートタイプ＝"サブ"のデバイステンプレート４５１１から作成されたＵＩである。
【０３０４】
また、５６Ｄは子フレームテンプレート４５１７から読み込まれた、図４６にあるデバイスリストの３番目のデバイス（デバイス（ネットワークカメラ）、デバイスID：uuid:upnp-canon-vbc＿1＿0-0007411BC2Z）のテンプレートタイプ＝"サブ"のデバイステンプレート４５１１から作成されたＵＩである。
【０３０５】
図５６のようなＵＩデータ４５１４をブラウザ４５１５に対して表示を依頼すると、図５７のような画面が表示される。
５７０１はデバイス（ＴＶ）、デバイスID：uuid:upnp-canon-csed-1000-00008522NEKOのデバイスを操作するためのＵＩである。
【０３０６】
５７０４、５７０５、５７０６は図５１のテレビメインテンプレート４５１３中の５１Ｅによって表示された、ＴＶのチャンネルを変えるためのＵＩ部品である。５７０７、５７０８は図５１のテレビメインテンプレート４５１３中の５１Ｆによって表示されたＴＶの音量を変えるためのＵＩ部品である。
【０３０７】
同様に、５７０２はデバイス（ネットワークカメラ）、デバイスID：uuid:upnp-canon-vbc＿1＿0-0008522CD3AのＵＩ、５７０３はデバイス（ネットワークカメラ）、デバイスID：uuid:upnp-canon-vbc＿1＿0-0007411BC2ZのＵＩを示しており、複数のデバイスのＵＩを一つのＵＩとして合成表示している。
【０３０８】
以上説明したように、本実施形態に拠れば、ＵＩを構成している複数のデバイステンプレート４５１１が、それぞれのデバイステンプレート４５１１が適用される操作画面上のレイアウト情報を保持する親テンプレートと共に用いられ、さらに、複数のデバイスからのデバイス情報に順位付けを行い、この順位付けに従って、前記親テンプレートにおけるレイアウト情報とデバイステンプレート４５１１との対応情報を変更してＵＩを再構築する事により、デバイスに対応する個々のＵＩを簡単に入れ替える事ができる効果がある。
【０３０９】
（第６の実施形態）
前述の第１〜第５の実施形態においては、デバイステンプレートにデバイス情報が適用される事により生成されるＵＩデータは、操作端末において、ユーザがリモート操作を行おうとする際、即ち、ユーザがデバイスを選択し、その結果、最初にＵＩが構築される時に一度だけ作成されるものであった。しかし、実際に、操作端末においてデバイスに対するリモート操作を行う際には、ユーザによって使用されるＵＩは、デバイス自体のネットワークからの離脱や新たなデバイスの参加によるイベント通知、ユーザのＵＩ部品に対する操作によるイベント発生、そしてデバイスからのデバイス内の状態変数の変化によるイベント通知など、様々なイベントにより、ＵＩ自体を再構築する必要が生じる場合がある。
【０３１０】
例えば、ユーザがリモート操作中のデバイスが、ネットワークから離脱した場合には、操作中のＵＩは操作端末の画面からは消去され、あるいは、その代わりとなるデバイスのＵＩに再構築されなくてはならない。また、操作端末において、親子画面からなるＵＩを構築し、親画面でＴＶデバイスを操作しながら映像を鑑賞中に、子画面の監視カメラデバイスで睡眠中の子供の様子をモニタしている様な場合に、子供が起きた事による監視カメラデバイスからの動体監視イベントにより、子画面で構成されていた監視カメラ用のＵＩが、ＴＶデバイスと入れ替わり、ＴＶデバイスが子画面となる新たなＵＩに再構築される場合もある。また、前述のＴＶデバイスと監視カメラのＵＩ再構築に関しては、ユーザによるＵＩへの親子画面の入れ替えボタン操作等によっても行われる可能性がある。
【０３１１】
図５８は、本実施形態における操作端末の、具体的な構成を示す図である。
本実施形態においては第５の実施形態の図４５の構成に較べて、各デバイスからの、ネットワーク接続及び離脱の際に通知されるイベント情報及びデバイスの状態変数の変化を通知するイベント情報、さらに、操作端末におけるＵＩ操作によるイベント情報の記述が追加されている点が異なっている。
【０３１２】
以下、デバイスリスト５８０８に登録された情報に基づき、第４の実施形態と同様に、ＵＩデータ５８１４の作成が行われる。操作端末５８０１はデバイスを制御するＵＩを構築するために、まず、親フレームテンプレート５８１６を読み込む。操作端末５８０１は親フレームテンプレート５８１６を解析し、必要に応じて、子フレームテンプレート５８１７や各デバイスのデバイステンプレート５８１１を使用してＵＩを構築する。
【０３１３】
ここで、親フレームテンプレート５８１６から呼び出されるデバイステンプレート５８１１のテンプレートタイプを"メイン"、子フレームテンプレート５８１７から呼び出されるデバイステンプレート５８１１のテンプレートタイプを"サブ"とする。
【０３１４】
例えば、親フレームテンプレート５８１６中にデバイス（テレビ）５８０２のＵＩを構築する内容が記載されていた場合には、操作端末５８０１はデバイスリスト５８０８を参照し、デバイス（テレビ）５８０２のデバイス情報５８０５中のデバイス種別とテンプレートタイプ＝"メイン"（親フレームテンプレート５８１６からの呼び出しであるので）とキーとして種別・テンプレート対応テーブル５８１０を検索してデバイス（テレビ）５８０２のテンプレートタイプ＝"メイン"に対応するデバイステンプレート５８１１であるテレビメインテンプレート５８１３を決定する。
【０３１５】
操作端末５８０１はテレビテンプレート５８１３とデバイス情報５８０５からＵＩデータ５８１４に対してデバイス（テレビ）５８０２用のテンプレートタイプがメインであるＵＩデータ５８１４を追加生成する。
【０３１６】
また同様に、デバイスリスト５８０８中に次のデバイスとしてデバイス（ネットワークカメラ）５８０３が存在していた場合には、親フレームテンプレート５８１６から参照される子フレームテンプレート５８１７及び、デバイス情報５８０６中のデバイス種別とテンプレートタイプ＝"サブ"とをキーとして種別・テンプレート対応テーブル５８１０を検索してデバイス（ネットワークカメラ）５８０３のテンプレートタイプ＝"サブ"に対応するネットワークカメラサブテンプレート５８１８を決定する。
【０３１７】
操作端末５８０１はフレームテンプレート５８０９に記載されている通り、各デバイスのデバイステンプレートを使用して各デバイス用のＵＩを構築し、複数のデバイスのＵＩを一つのＵＩデータ５８１４として合成し、最後にブラウザ５８１５に対してＵＩを表示する。
【０３１８】
ここで、デバイス（ネットワークカメラ）５８０３は、撮影対象の画像に変化が生じ、撮影対象が動いたとする事でデバイス内の状態変数を変更し、それに伴い、イベント情報を発行する動体検知機能を搭載しており、当該イベント情報はネットワーク接続により操作端末に通知される。また、５８０２〜５８０４の全てのデバイスは、ネットワークへの接続及び離脱の際は、やはり同様に、操作端末に通知を行う。これにより、操作端末においては、デバイスリストの変更を行い、ユーザに対して、現在リモート操作可能なデバイスの一覧を提示する事が可能となる。さらには、ユーザによるＵＩ操作によってもＵＩの構成を変更する為のイベント情報が発信される場合がある。
【０３１９】
図５９は、本実施形態において操作端末上に構成されているＵＩ画面を示す図である。ここで、５９０１は操作端末の全体表示画面、５９０２はＴＶデバイスの表示画面を含むＵＩ、５９０３及び５９０４はネットワークカメラのＵＩを示している。
【０３２０】
５９０２、５９０３及び５９０４は、PinP（Picture in Picture）の構成からなる親子関係を構成する親フレームテンプレート５８１６と複数の子フレームを収容可能な子フレームテンプレート５８１７を用いて作成されている。即ち、親フレームテンプレート５８１６にはテレビデバイスのメインテンプレートタイプであるデバイステンプレート５８１１が、そして子フレームテンプレート５８１７にはネットワークカメラデバイスのサブテンプレートタイプであるデバイステンプレート５８１１が適用されてＵＩデータ５８１４の構築が行われる。
【０３２１】
その結果、テレビデバイスについては表示画面を含むＵＩ画面、そしてネットワークカメラデバイスについては子フレームテンプレート５８１７に適用され表示されている為に、映像のみを表示するＵＩデータ５８１４が生成され、ブラウザ５８１５において５９０１の如くＵＩの表示が行われている。また、５９０９は、親フレームテンプレート５８１６に記述されている親子ＵＩの入れ替えを実行する為のボタンＵＩ部品である。
【０３２２】
図６０は、前述の図５９のＵＩ画面を構成する親フレームテンプレート５８１６を示す図である。
図６０において、左端の数字は行番号を示したものであり、実際のデータには含まれていない。ここで、行６０１８から行６０２１はＵＩ画面における親子関係を入れ替える為のチェンジ操作の為のボタンＵＩ部品の記述であり、ユーザが当該ボタンを操作する事により、操作端末５８０１に対し"DOMActivate"イベントが発生し、"changeWindow"という名称のハンドラが呼ばれる記述である。
【０３２３】
操作端末５８０１においては、前記のハンドラが呼ばれる事で、操作端末５８０１に現在登録されているデバイスリスト５８０８の順番を先頭に向かって一つずつ入れ替え、またデバイスリストの先頭にあったものを最後尾に移動する。
【０３２４】
続いて、操作端末５８０１内では、順番が入れ替わったデバイスリスト５８０８に対応じて、各フレームテンプレートに割り当てられるデバイステンプレート５８１１の変更が行われる。この様に、フレームテンプレート５８０９に新たなデバイステンプレート５８１１が適用される事により、新たなＵＩデータ５８１４が構築され、当該ＵＩデータ５８１４をブラウザ５８１５で表示する事で親子関係にあるデバイスのＵＩ画面が入れ替わるものである。
【０３２５】
図６１は、前記の図５９のＵＩ画面を構成する子フレームテンプレート５８１７を示す図である。
ここでは、第５の実施形態に示す子フレームテンプレート４５１７と同様、一つのメイン画面に複数の子画面が並ぶ事が可能な子フレームテンプレート５８１７となっている。
【０３２６】
図６２は、テレビデバイスのメイン画面用デバイステンプレートの例を示す図である。
図６２において、左端の数字は行番号を示したものであり、実際のデータには含まれていない。当該メイン画面用デバイステンプレートが、前述の親フレームテンプレート５８１６に適用される事で、テレビデバイスのＵＩがPinP表示の親画面となる様なＵＩデータ５８１４が構築される。
【０３２７】
図６３は、動体検知イベントを発行可能なネットワークカメラデバイスのサブ画面用デバイステンプレートの例を示す図である。
図６３において、左端の数字は行番号を示したものであり、実際のデータには含まれていない。当該サブ画面用デバイステンプレートが前述の子フレームテンプレート５８１７に適用される事で、ネットワークカメラデバイスのＵＩがPinP表示の子画面となる様なＵＩデータ５８１４が構築される。
【０３２８】
ここで、行６３０５から行６３０６はネットワークカメラデバイスが動体検知による特定の状態変数の変化を通知して来た際の動作を記述している。当該特定の状態変数の変化がイベント通知されると、行６３０５のsubmission動作が行われ、次の行６３０６で、当該submission動作において、操作端末５８０１に対して、メソッド"UIMANAGER＿MOVE＿TO＿1ST"を実行する為の記述がされている。
【０３２９】
操作端末５８０１が前記のメソッドを受け取る事で、当該デバイステンプレート５８１１に対応するデバイスをデバイスリスト５８０８の先頭へと移動し、空いた部分のリストが詰められて、順番が入れ替わったデバイスリスト５８０８が作成される。続いて、操作端末５８０１内では、順番が入れ替わったデバイスリスト５８０８に対応じて、それぞれのフレームテンプレート５８０９に割り当てられるデバイステンプレート５８１１の変更が行われる。
【０３３０】
この様に、フレームテンプレート５８０９に新たなデバイステンプレート５８１１が適用される事により新たなＵＩデータ５８１４が構築され、当該ＵＩデータ５８１４をブラウザ５８１５で表示する事で親子関係にあるデバイスのＵＩ画面が入れ替わるものである。
【０３３１】
図６４は本実施形態におけるＵＩデータ生成処理によって生成されたＵＩデータ５８１４の一例としてXMLデータを示す図である。
図６４において、左端の数字は行番号を示したものであり、実際のデータには含まれていない。また、６４Ａ、６４Ｂ、６４Ｃ、６４Ｄはそれぞれデバイステンプレート５８１１である図６２、図６３が、フレームテンプレートで図６０、図６１に基づいて構成されたものであり、デバイステンプレート５８１１中のデバイスを特定する為の各種情報は、ＵＩデータ５８１４が構築される時点で適宜、補完される事になる。
【０３３２】
このＵＩデータ５８１４を操作端末５８０１のブラウザ５８１５に渡すことによりＵＩが構築され、出力５８１５によりＵＩが表示される。
【０３３３】
図６５は、操作端末内に作成されるデバイスリスト６５０１の構造図を示すであり、ユーザが予め選択した順番にリストに登録されているものである。本実施形態においては、ＴＶデバイスを視聴中にネットワークカメラデバイスの映像モニタする必要が生じた為に、先頭にＴＶデバイス、以降に、２つのネットワークカメラデバイスが登録されている。
【０３３４】
図６６は、操作端末５８０１において、図６４のＵＩデータ５８１４による親子画面から成るＵＩが表示されている状態で、ユーザ操作により親子画面を順番に入れ替える為のボタンが操作された際に、現在保持しているデバイスリストの順番を入れ替え、ＵＩデータ５８１４を再構築すると共に、ＵＩの再表示を行うchangeWindowメソッドハンドラに対応する処理を示すフローチャートである。
【０３３５】
ここで、ステップＳ６６０１はchangeWindowの処理を開始するステップ、ステップＳ６６０２はデバイスリスト６５０１の先頭デバイスをテンポラリに仮保存するステップ、ステップＳ６６０３は、デバイスリスト６５０１の２番目をデバイスリスト６５０１の参照先となる先頭デバイスとして設定するステップ、ステップＳ６６０４は先に仮保存したデバイスをデバイスリスト６５０１の最後尾に追加するステップである。
【０３３６】
ここまでの流れにより、デバイスリスト６５０１は、親画面に対応していたデバイスがデバイスリスト６５０１の最後尾に移動し、子画面の一番目に表示されていたデバイスがデバイスリスト６５０１の先頭へと移動する事になる。
【０３３７】
さらに、ステップＳ６６０５においては、当該作り直されたデバイスリスト６５０１を使用してＵＩデータ５８１４の再構築が行われ、ステップＳ６６０６において、再構築されたＵＩデータ５８１４がブラウザ５８１５に送られ、新たなＵＩとして表示され、ステップＳ６６０７において、処理を終了する。
【０３３８】
図６７は、操作端末５８０１において、図６４のＵＩデータ５８１４による親子画面から成るＵＩが表示されている状態で、子画面に表示中のネットワークカメラデバイスから、撮影中の被写体について、動体検知イベントが通知され、当該通知を行ったデバイスをデバイスリスト６５０１の先頭に移動させると共に、ＵＩデータ５８１４を再構築し、ＵＩの再表示を行うUIMANAGER＿MOVE＿TO＿1STメソッドの処理を示すフローチャートである。
【０３３９】
ここで、ステップＳ６７０１はUIMANAGER＿MOVE＿TO＿1STの処理を開始するステップ、ステップＳ６７０２はデバイスリスト６５０１内でイベントを通知したデバイスを特定するステップ、ステップＳ６７０３はステップＳ６７０２で特定されたデバイスを仮保存するステップ、ステップＳ６７０４はデバイスリスト６５０１内の特定されたデバイスの前後を短絡するステップである。
【０３４０】
ステップＳ６７０５は、現在のデバイスリスト６５０１の先頭を仮保存するステップ、ステップＳ６７０６はイベントを通知したデバイスをデバイスリスト６５０１の参照先にするステップ、ステップＳ６７０７は通知したデバイスを参照先とする新たなデバイスリスト６５０１に、ステップＳ６７０５で保存した旧デバイスリスト６５０１を追加するステップ、ステップＳ６７０８は更新されたデバイスリストを基に、ＵＩデータ５８１４の再構築を行うステップ、ステップＳ６７０９は再構築されたＵＩデータ５８１４を基に、ＵＩを再表示するステップである。
【０３４１】
以下、図６５に示すデバイスリスト６５０１が構築され、図５９に示す様なＵＩが操作端末に表示されている状態から、各種のイベント通知が操作端末に対して行われた場合を詳細に説明する。
【０３４２】
今、ユーザが図５９のPinP画面構成となっているＵＩ画面において、「入れ替え」ボタン５９０９の操作を行ったとする。すると、ＵＩを構成している図６４のＵＩデータ５８１４の行６４５３から行６４５６に記載のボタンが操作された事になり、その結果、DOMActivateイベントが発生する。
【０３４３】
当該ボタン５９０９において、DOMActivateイベントが発生した際には、行６４５５に記載された様に"changeWindow"ハンドラが呼ばれる事になる。"changeWindow"ハンドラは、ＵＩデータ５８１４を処理する操作端末５８０１の内部で記述され、処理されるメソッドであり、その結果、図６６に示す処理が行われる。
【０３４４】
図６６の処理が行われると、図６５のデバイスリスト６５０１の内、テレビデバイス６５０２がデバイスリスト６５０１の最後尾に移動し、先頭がネットワークカメラ６５０３に変更される。即ち、デバイスリスト６５０１は図６８の如く変化し、その結果ＵＩ画面も図６９の様に変化する事になる。
【０３４５】
次に、先程と同様に、図６５に示すデバイスリスト６５０１が構築され、図５９に示す様なＵＩ５９０１が操作端末５８０１に表示されている状態から、今度は、画像サムネールＵＩを表示中のネットワークカメラデバイスＵＩ５９０３より、動体検知のイベントが発生した際の動作を説明する。
【０３４６】
カメラからの動体検知イベント５８２１が、図５８の如く操作端末５８０１に通知されると、図６４のＵＩデータ５８１４に記載の、２番目のネットワークカメラの記述となる行６４７９から行６４９１のうち、行６４８３に記載のDOMCharacterDataModifiedイベントが通知され、その結果、行６４８５の"UIMANAGER＿MOVE＿TO＿1ST"メソッドが呼ばれる事になる。
【０３４７】
"UIMANAGER＿MOVE＿TO＿1ST"が呼ばれると、図６７の処理が実行され、図６５のデバイスリスト６５０１の内、ネットワークカメラデバイス６５０４がデバイスリストの先頭になり、以下、テレビデバイス６５０２、ネットワークカメラデバイス６５０３の順にデバイスリスト６５０１が変更される。即ち、デバイスリスト６５０１は図７０の如く変化し、その結果ＵＩ画面も図７１の様に変化する事になる。
【０３４８】
以上説明した様に、本実施形態によれば、操作端末５８０１が受け取る各種のイベント通知により、フレームテンプレート５８０９に対応するデバイステンプレート５８１１の割り当て及びタイプを変更する事で、デバイスのネットワーク接続状態変化、デバイス自体の状態変化、及びユーザによるＵＩ操作などのイベント発生手段により、現在提示中のＵＩを動的に変更する事が可能であり、且つ、前記のイベントに対応した適切なＵＩを構築する事が可能となる。
【０３４９】
（第７の実施形態）
前述の第６の実施形態においては、現在提示中のＵＩを構成するフレームテンプレート５８０９を固定のものとし、操作端末が受け取る各種のイベント通知により、当該フレームテンプレート５８０９に対応するデバイステンプレート５８１１及びそのタイプを変更する事で、動的にＵＩを変更していたが、当該イベント通知により、デバイステンプレート５８１１を適用するフレームテンプレート５８０９自体を変更する構成としてもよい。
【０３５０】
図７２は、イベントの種類と、当該イベントが受け取られた際に使用されるフレームテンプレートの名称を対応付けたテーブルである。ここで、イベントは、先の実施例にあげたネットワークカメラデバイスの動体検知によるイベントDOMCharacterDataModifiedやユーザのボタン操作によるイベントDOMActivate、そして初期立ち上げ時など、イベントによらないＵＩ画面の起動などが上げられている。
【０３５１】
また、フレームテンプレートの種類としては、PinP画面となる親及び子のフレームテンプレート、及び左画面及び右画面からなる２画面を構成する為のフレームテンプレート５８０９などが存在している。
【０３５２】
このテーブルは、操作端末がＵＩ画面を、フレームテンプレート５８０９を用いて構築する際に、そのトリガとなったイベントの種類に応じて使用するフレームテンプレート５８０９を選択するものである。
【０３５３】
初期立ち上げ状態において、図７２のテーブルに基づき、親及び子のフレームテンプレートと、図６５からなるデバイスリスト６５０１により、図５９に示す様なＵＩ画面が構成されている。この時、ネットワークカメラデバイスより動体検知イベントが通知されると、先の実施形態と同様にデバイスリスト６５０１の再構成が行われ、次に、図７２のテーブルに基づき、動体検知によるイベントDOMCharacterDataModifiedに対応する左画面及び右画面からなる２画面を構成するフレームテンプレート５８０９が選択され、デバイスリスト５８０８の順番に、左画面、右画面の順番にデバイスが対応したＵＩデータ５８１４が作成され、その結果、図７３に示す様な２画面表示が行われる。
【０３５４】
以上説明した様に、本実施形態によれば、操作端末５８０１が受け取る各種のイベント通知の種類により、再構成するＵＩ画面を変更する事ができ、例えば、テレビを視聴中に、動体検知イベント通知を操作端末が受け取り、当該動体検知イベントを通知したデバイスのＵＩ画面を拡大されて表示される状況でも、テレビのＵＩ画面をいきなり小さな画面にする事無く視聴でき、イベント種類毎に、ユーザに最適なＵＩ画面を提供する事が可能となる。
【０３５５】
（本発明に係る他の実施形態）
本発明に係るＵＩデータ生成処理において、ＵＩデータに埋め込む情報として、デバイスＩＤ、デバイス名以外にIPアドレス、シリアル番号、MACアドレスなどを利用するように構成してもよい。
【０３５６】
本発明に係る第２の実施形態に記載の条件文処理において、条件とは前述したものだけではなく、操作コマンドや状態変数がない場合や、状態変数が特定の値に一致しない場合のみ、あるいは状態変数の値が特定の値より大きい場合や小さい場合、あるいは状態変数の値が特定の範囲内である場合など、様々な条件に応じて子要素の記述が有効となるように構成してもよい。
【０３５７】
また、本発明において、表示装置を操作端末とは別体として、あるいはブラウザ３１６を含む表示装置を操作端末とは別体として構成しても良い。
【０３５８】
前述した本発明の実施形態におけるリモート操作端末装置を構成する各手段は、コンピュータのＲＡＭやＲＯＭなどに記憶されたプログラムが動作することによって実現できる。このプログラム及び前記プログラムを記録したコンピュータ読み取り可能な記録媒体は本発明に含まれる。
【０３５９】
また、本発明は、例えば、システム、装置、方法、プログラムもしくは記録媒体等としての実施形態も可能であり、具体的には、複数の機器から構成されるシステムに適用してもよいし、また、一つの機器からなる装置に適用してもよい。
【０３６０】
なお、本発明は、前述した実施形態の機能を実現するソフトウェアのプログラムを、システムまたは装置に直接、または遠隔から供給する。そして、そのシステムまたは装置のコンピュータが前記供給されたプログラムコードを読み出して実行することによっても達成される場合を含む。
【０３６１】
したがって、本発明の機能処理をコンピュータで実現するために、前記コンピュータにインストールされるプログラムコード自体も本発明を実現するものである。つまり、本発明は、本発明の機能処理を実現するためのコンピュータプログラム自体も含まれる。
【０３６２】
その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、ＯＳに供給するスクリプトデータ等の形態であってもよい。
【０３６３】
プログラムを供給するための記録媒体としては、例えば、フロッピー（登録商標）ディスク、ハードディスク、光ディスク、光磁気ディスクなどがある。さらに、ＭＯ、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、磁気テープ、不揮発性のメモリカード、ＲＯＭ、ＤＶＤ（ＤＶＤ−ＲＯＭ、ＤＶＤ−Ｒ）などもある。
【０３６４】
その他、プログラムの供給方法としては、クライアントコンピュータのブラウザを用いてインターネットのホームページに接続する方法がある。そして、前記ホームページから本発明のコンピュータプログラムそのもの、もしくは圧縮され自動インストール機能を含むファイルをハードディスク等の記録媒体にダウンロードすることによっても供給できる。
【０３６５】
また、本発明のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるホームページからダウンロードすることによっても実現可能である。つまり、本発明の機能処理をコンピュータで実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるＷＷＷサーバも、本発明に含まれるものである。
【０３６６】
また、その他の方法として、本発明のプログラムを暗号化してＣＤ−ＲＯＭ等の記録媒体に格納してユーザに配布し、所定の条件をクリアしたユーザに対し、インターネットを介してホームページから暗号化を解く鍵情報をダウンロードさせる。そして、その鍵情報を使用することにより暗号化されたプログラムを実行してコンピュータにインストールさせて実現することも可能である。
【０３６７】
また、コンピュータが、読み出したプログラムを実行することによって、前述した実施形態の機能が実現される。さらに、そのプログラムの指示に基づき、コンピュータ上で稼動しているＯＳなどが、実際の処理の一部または全部を行い、その処理によっても前述した実施形態の機能が実現され得る。
【０３６８】
さらに、その他の方法として、まず記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれる。そして、そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によっても前述した実施形態の機能が実現される。
【図面の簡単な説明】
【０３６９】
【図１】本発明の第１の実施形態における全体構成の一例を示す図である。
【図２】本発明の第１の実施形態における操作端末のハードウェア構成の一例を示すブロック図である。
【図３】本発明の第１の実施形態における全体の構成の一例を表わす図である。
【図４】本発明の第１の実施形態におけるＵＩ生成処理の流れの一例を示すフローチャートである。
【図５】本発明の第１の実施形態におけるＵＩ生成処理の流れを示すフローチャートである。
【図６】本発明の第１の実施形態におけるデバイステンプレートの一例としてXMLデータを示す図である。
【図７】本発明の第１の実施形態におけるデバイスのデバイス情報の一例としてXMLデータを示す図である。
【図８】本発明の第１の実施形態におけるデバイスを操作するための操作サービスを示すデバイス情報としてXMLデータを示す図である。
【図９】本発明の第１の実施形態における種別・テンプレート対応テーブルの一例を示す図である。
【図１０】本発明の第１の実施形態におけるＵＩデータ生成処理によって生成されたＵＩデータの一例としてXMLデータを示す図である。
【図１１】本発明の第１の実施形態における対応テンプレート検索処理の流れの一例を示すフローチャートである。
【図１２】本発明の第２の実施形態におけるデバイステンプレートの一例としてXMLデータを示す図である。
【図１３】本発明の第２の実施形態におけるＵＩ生成処理の流れを示すフローチャートである。
【図１４】本発明の第２の実施形態における条件文とその子要素の処理の流れを示すフローチャートである。
【図１５】本発明の第２の実施形態における条件の範囲保存処理の流れを示すフローチャートである。
【図１６】本発明の第２の実施形態における変数に現在の値を代入する処理の流れを示すフローチャートである。
【図１７】本発明の第１の実施形態におけるデバイスと表示されるＵＩとの関係を示す図である。
【図１８】本発明の第２の実施形態におけるデバイスを操作するための操作サービスを示すデバイス情報の一例としてXMLデータを示す図である。
【図１９】図１８のデバイスを操作するための操作サービスを示すデバイス情報を用いた場合に生成されるＵＩデータの一例としてXMLデータを示す図である。
【図２０】図１９のＵＩデータにより構築されたＵＩの一例を示す図である。
【図２１】本発明の第２の実施形態におけるデバイスを操作するための操作サービスを示すデバイス情報の一例としてXMLデータを示す図である。
【図２２】図２１のデバイスを操作するための操作サービスを示すデバイス情報を用いた場合に生成されるＵＩデータの一例としてXMLデータを示す図である。
【図２３】図２２のＵＩデータにより構築されたＵＩの一例を示す図である。
【図２４】本発明の第３の実施形態におけるデバイステンプレートの一例としてXMLデータを示す図である。
【図２５】図２４のデバイステンプレートを用いた場合に生成されるＵＩデータの一例としてXMLデータを示す図である。
【図２６】図２５のＵＩデータにより構築されたＵＩの一例を示す図である。
【図２７】本発明の第１の実施形態において図３に対応する具体的な構成を示す図である。
【図２８】従来例における全体構成の一例を示す図である。
【図２９】本発明の第４の実施形態における具体的な構成を示す図である。
【図３０】本発明の第４の実施形態におけるデバイスとデバイスＩＤ・デバイス種別の対応表を示す図である。
【図３１】本発明の第４の実施形態におけるデバイスリストの一例を示す図である。
【図３２】本発明の第４の実施形態におけるＵＩ生成処理の流れを示すフローチャートである。
【図３３】本発明の第４の実施形態におけるＵＩデータ生成処理の流れを示すフローチャートである。
【図３４】本発明の第４の実施形態におけるデバイステンプレート読込処理の流れを示すフローチャートである。
【図３５】本発明の第４の実施形態における各デバイスに対する処理の流れを示すフローチャートである。
【図３６】本発明の第４の実施形態におけるＵＩ画面を構築するための基本となるフレームテンプレートの一例を示す図である。
【図３７】本発明の第４の実施形態におけるデバイスを操作するための操作サービスを示すデバイス情報の一例としてXMLデータを示す図である。
【図３８】図３６のフレームテンプレートと、図３７のデバイスを操作するための操作サービスを示すデバイス情報を用いた場合に生成されるＵＩデータの一例としてXMLデータを示す図である。
【図３９】図３８のＵＩデータにより構築されたＵＩの一例を示す図である。
【図４０】図３３のデバイスリストの順番を入れ替えた場合のデバイスリストの一例を示す図である。
【図４１】図４０のデバイスリストを用いた場合に生成されるＵＩの一例を示す図である。
【図４２】図３６のフレームテンプレートを変更した場合の一例を示す図である。
【図４３】図４２のフレームテンプレートと共に用いるデバイスを操作するための操作サービスを示すデバイス情報の一例としてXMLデータを示す図である。
【図４４】図４２のフレームテンプレートと図４３のデバイステンプレートと、図３１のようなデバイスリストを用いて作成されるＵＩの一例を示す図である。
【図４５】本発明の第５の実施形態における具体的な構成を示す図である。
【図４６】本発明の第５の実施形態におけるデバイスリストの一例を示す図である。
【図４７】本発明の第５の実施形態におけるＵＩデータ生成処理の流れを示すフローチャートである。
【図４８】本発明の第５の実施形態におけるデバイステンプレート読込処理の流れを示すフローチャートである。
【図４９】本発明の第５の実施形態における対応テンプレート検索処理の流れの一例を示すフローチャートである。
【図５０】本発明の第５の実施形態における親フレームテンプレートの一例を示す図である。
【図５１】本発明の第５の実施形態におけるデバイステンプレートの一例としてXMLデータを示す図である。
【図５２】本発明の第５の実施形態におけるデバイスのデバイス情報の一例としてXMLデータを示す図である。
【図５３】本発明の第５の実施形態におけるデバイスを操作するための操作サービスを示すデバイス情報のとしてXMLデータを示す図である。
【図５４】本発明の第５の実施形態における子フレームテンプレートの一例を示す図である。
【図５５】本発明の第５の実施形態におけるデバイステンプレートの一例としてXMLデータを示す図である。
【図５６】図４９の親フレームフレームテンプレートと図５３の子フレームテンプレート、図５０と図５４のデバイステンプレート、図５１のデバイスを操作するための操作サービスを示すデバイス情報を用いた場合に生成されるＵＩデータの一例としてXMLデータを示す図である。
【図５７】図５４のＵＩデータにより構築されたＵＩの一例を示す図である。
【図５８】本発明の第６の実施形態における具体的な構成を示す図である。
【図５９】図６３のＵＩデータにより構築されたＵＩの一例を示す図である。
【図６０】本発明の第６の実施形態における親フレームテンプレートの一例を示す図である。
【図６１】本発明の第６の実施形態における子フレームテンプレートの一例を示す図である。
【図６２】本発明の第６の実施形態におけるメインデバイステンプレートの一例としてXMLデータを示す図である。
【図６３】本発明の第６の実施形態におけるサブデバイステンプレートの一例としてXMLデータを示す図である。
【図６４】本発明の第６の実施形態における生成されるＵＩデータの一例としてXMLデータを示す図である。
【図６５】本発明の第６の実施形態におけるデバイスリストの一例を示す図である。
【図６６】本発明の第６の実施形態におけるchangeWindowメソッドハンドラに対応する処理を示すフローチャートである。
【図６７】本発明の第６の実施形態におけるイベントによる処理を示すフローチャートである。
【図６８】本発明の第６の実施形態における新たに再構築されたデバイスリストの一例を示す図である。
【図６９】本発明の第６の実施形態における新たに構築されたＵＩの一例を示す図である。
【図７０】本発明の第６の実施形態における新たに再構築されたデバイスリストの一例を示す図である。
【図７１】本発明の第６の実施形態における新たに構築されたＵＩの一例を示す図である。
【図７２】本発明の第７の実施形態におけるイベント種別とフレームテンプレートの対応を表す図である。
【図７３】本発明の第７の実施形態における新たに構築されたＵＩの一例を示す図である。
【符号の説明】
【０３７０】
１０１  デバイス
１０２  デバイス
１０３  操作端末
１０４  ネットワーク
１０５  操作端末
１０６  デバイス
１０７  デバイス
２０１  バス
２０２  ＣＰＵ
２０３  ＲＯＭ
２０４  ＲＡＭ
２０５  記憶装置
２０６  入力装置
２０７  ネットワークＩ／Ｆ
２０８  出力装置
３０１  操作端末
３０２  被操作対象のデバイス
３０３  デバイス情報
３０４  種別・テンプレート対応テーブル
３０５  テンプレート
３０６  テンプレート
３０７  デバイス種別
３０８  操作コマンド
３０９  ＵＩ部品と操作コマンドの対応情報
３１０  ＵＩ部品
３１１  デバイス識別情報
３１２  ＵＩデータ
３１３  出力
３１４  種別・テンプレートの組
３１５  デバイスＩＤ
３１６  ブラウザ
９００  種別・テンプレート対応テーブル
９１０  種別・テンプレートの組
９１１  デバイス種別
９１２  デバイステンプレート
９２０  種別・テンプレートの組
９２１  デバイス種別
９２２  デバイステンプレート
１７０１  ＵＩ
１７０２  カメラの横方向の回転を表わすＵＩ部品
１７０５  操作端末
１７０６  ネットワークカメラ
１７１１  ＵＩ
１７１２  操作端末
１７１３  デバイス（ビデオ）
２００１  動体検知を表わすイメージデータ
２６０１  カメラのズームを表わすＵＩ部品
【図１】
2007114888.tif 000003
【図２】
2007114888.tif 000004
【図３】
2007114888.tif 000005
【図４】
2007114888.tif 000006
【図５】
2007114888.tif 000007
【図６】
2007114888.tif 000008
【図７】
2007114888.tif 000009
【図８】
2007114888.tif 000010
【図９】
2007114888.tif 000011
【図１０】
2007114888.tif 000012
【図１１】
2007114888.tif 000013
【図１２】
2007114888.tif 000014
【図１３】
2007114888.tif 000015
【図１４】
2007114888.tif 000016
【図１５】
2007114888.tif 000017
【図１６】
2007114888.tif 000018
【図１７】
2007114888.tif 000019
【図１８】
2007114888.tif 000020
【図１９】
2007114888.tif 000021
【図２０】
2007114888.tif 000022
【図２１】
2007114888.tif 000023
【図２２】
2007114888.tif 000024
【図２３】
2007114888.tif 000025
【図２４】
2007114888.tif 000026
【図２５】
2007114888.tif 000027
【図２６】
2007114888.tif 000028
【図２７】
2007114888.tif 000029
【図２８】
2007114888.tif 000030
【図２９】
2007114888.tif 000031
【図３０】
2007114888.tif 000032
【図３１】
2007114888.tif 000033
【図３２】
2007114888.tif 000034
【図３３】
2007114888.tif 000035
【図３４】
2007114888.tif 000036
【図３５】
2007114888.tif 000037
【図３６】
2007114888.tif 000038
【図３７】
2007114888.tif 000039
【図３８】
2007114888.tif 000040
【図３９】
2007114888.tif 000041
【図４０】
2007114888.tif 000042
【図４１】
2007114888.tif 000043
【図４２】
2007114888.tif 000044
【図４３】
2007114888.tif 000045
【図４４】
2007114888.tif 000046
【図４５】
2007114888.tif 000047
【図４６】
2007114888.tif 000048
【図４７】
2007114888.tif 000049
【図４８】
2007114888.tif 000050
【図４９】
2007114888.tif 000051
【図５０】
2007114888.tif 000052
【図５１】
2007114888.tif 000053
【図５２】
2007114888.tif 000054
【図５３】
2007114888.tif 000055
【図５４】
2007114888.tif 000056
【図５５】
2007114888.tif 000057
【図５６】
2007114888.tif 000058
【図５７】
2007114888.tif 000059
【図５８】
2007114888.tif 000060
【図５９】
2007114888.tif 000061
【図６０】
2007114888.tif 000062
【図６１】
2007114888.tif 000063
【図６２】
2007114888.tif 000064
【図６３】
2007114888.tif 000065
【図６４】
2007114888.tif 000066
【図６５】
2007114888.tif 000067
【図６６】
2007114888.tif 000068
【図６７】
2007114888.tif 000069
【図６８】
2007114888.tif 000070
【図６９】
2007114888.tif 000071
【図７０】
2007114888.tif 000072
【図７１】
2007114888.tif 000073
【図７２】
2007114888.tif 000074
【図７３】
2007114888.tif 000075