(57)【特許請求の範囲】
【請求項１】
ネットワークを介してクライアント装置に接続されているとともに複数または単一のデバイスがローカル接続されたデバイス制御装置であって、前記クライアント装置に前記デバイスがローカル接続されたかのように仮想化制御させるデバイス制御装置において、
前記デバイスの状態変化を検知するための検知情報と、前記状態変化の検知結果に応じた処理を実施するためのトリガ処理条件とを記憶する検知情報記憶手段と、
前記検知情報に基づいて前記状態変化を検知するデバイス監視手段と、
前記デバイス監視手段によって検知された前記状態変化を前記トリガ処理条件と照合し、当該照合結果に基づき、前記デバイスを前記仮想化制御するために前記クライアント装置に対する処理要求の送信制御であるトリガ通知送信処理を行うトリガ処理手段と、を備え、
前記トリガ通知送信処理は、前記デバイスにおける複数の前記状態変化の全部または一部の組み合わせに応じ、前記クライアント装置に対する前記処理要求を決定すること、
を特徴とするデバイス制御装置。
【請求項２】
複数または単一のデバイスがローカル接続されるべきデバイス制御装置にネットワークを介して接続されているクライアント装置であって、
前記デバイス制御装置にローカル接続されたデバイスのデバイス情報と、前記デバイスの状態変化の検知結果に応じた処理を実施するためのトリガ処理条件を記憶する記憶手段と、
前記デバイスが前記クライアント装置にローカル接続されたかのようにデバイスを制御する仮想化制御手段と、
前記状態変化を検知した前記デバイス制御装置から当該状態変化の検知を示すトリガ通知を受信するトリガ通知受信手段と、
前記トリガ通知受信手段によって受信した複数のトリガ通知の組み合わせを、前記トリガ処理条件と照合し、当該照合結果に基づき、前記デバイスを前記仮想化制御するための処理を実行するトリガ処理手段と、
を備えることを特徴とするクライアント装置。
【請求項３】
ネットワークを介してクライアント装置に接続されているとともに複数または単一のデバイスがローカル接続されたデバイス制御装置によって実行されるデバイス制御方法であって、前記クライアント装置に前記デバイスがローカル接続されたかのように仮想化制御させるデバイス制御装置のデバイス制御方法において、
検知情報取得手段が前記デバイスの状態変化を検知するための検知情報と、前記状態変化の検知結果に応じた処理を実施するためのトリガ処理条件とを記憶する検知情報記憶ステップと、
デバイス監視手段が前記検知情報に基づいて前記状態変化を検知するデバイス監視ステップと、
トリガ処理手段が前記デバイス監視ステップによって検知された前記状態変化を前記トリガ処理条件と照合し、当該照合結果に基づき、前記デバイスを前記仮想化制御するために前記クライアント装置に対する処理要求の送信制御であるトリガ通知送信処理を行うトリガ処理ステップと、を備え、
前記トリガ処理ステップにおける前記トリガ通知送信処理は、前記デバイスにおける複数の前記状態変化の全部または一部の組み合わせに応じ、前記クライアント装置に対する前記処理要求を決定すること、
を特徴とするデバイス制御方法。
【請求項４】
複数または単一のデバイスがローカル接続されるべきデバイス制御装置にネットワークを介して接続されているクライアント装置によって実行されるデバイス制御方法であって、
記憶手段が前記デバイス制御装置にローカル接続されたデバイスのデバイス情報と、前記デバイスの状態変化の検知結果に応じた処理を実施するためのトリガ処理条件を記憶する記憶ステップと、
前記デバイスが前記クライアント装置にローカル接続されたかのようにデバイスを制御する仮想化制御ステップと、
トリガ通知受信手段が前記状態変化を検知した前記デバイス制御装置から当該状態変化の検知を示すトリガ通知を受信するトリガ通知受信ステップと、
トリガ処理手段が前記トリガ通知受信ステップで受信した複数のトリガ通知の組み合わせを、前記トリガ処理条件と照合し、当該照合結果に基づき、前記デバイスを前記仮想化制御するための処理を実行するトリガ処理ステップと、
を備えることを特徴とするデバイス制御方法。
【請求項５】
請求項１または請求項２の何れか１項に記載の各手段をコンピュータに機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークを介してデバイスを制御する機能を備えたデバイス制御装置、クライアント、デバイス制御方法、及びデバイス制御システムに関するものである。
【背景技術】
【０００２】
近年、プリンタ、ストレージ、スキャナなどのデバイスを、ネットワーク上のクライアントＰＣからデバイスサーバを介して共有デバイスとして利用可能とするための実現方法がいくつか提案されている。
【０００３】
例えば、本出願人は、デバイスサーバがデバイスサーバ自身にローカル接続されたデバイスの動作状態の変化を監視して、デバイスの状態変化を検知すると、その状態変化の検知結果を示す情報をクライアントＰＣに通知するようにし、この状態検知結果を示す情報によって、クライアントＰＣは必要に応じてデバイスがローカル接続されたものと認識して、デバイスの制御（以下、仮想化制御という）を行うデバイス制御システムを提案している（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】国際公開第２０１１／０５５８３１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１のデバイス制御システムにおいては、デバイスと、クライアントＰＣへ送られるデバイスの状態変化検知の通知とは１対１の関係で紐づいているが、複数の状態変化を検知し、それぞれの状態変化の組み合わせで処理内容を決定したい場合がある。
【０００６】
例えば、１台のデバイスサーバに２台のデバイスが接続されており、２台のデバイスの状態の組み合わせがある特定の条件に達したときにクライアントＰＣがユーザにサービス（所定の処理）を提供するシステムの場合（例えば、２台のカードリーダにカードがかざされていることをサービス提供の条件とするなど）である。
【０００７】
本発明は、特許文献１のデバイス制御装置を更に発展させ、デバイスサーバに接続されたデバイスの複数の状態変化の組み合わせを判断し、複数の状態変化の組み合わせに応じた処理内容を決定することを目的とする。
【課題を解決するための手段】
【０００８】
上記の課題を解決するために、請求項１に記載のデバイス制御装置は、ネットワークを介してクライアント装置に接続されているとともに複数または単一のデバイスがローカル接続されたデバイス制御装置であって、前記クライアント装置に前記デバイスがローカル接続されたかのように仮想化制御させるデバイス制御装置において、前記デバイスの状態変化を検知するための検知情報と、前記状態変化の検知結果に応じた処理を実施するためのトリガ処理条件とを記憶する検知情報記憶手段と、前記検知情報に基づいて前記状態変化を検知するデバイス監視手段と、前記デバイス監視手段によって検知された前記状態変化を前記トリガ処理条件と照合し、当該照合結果に基づき、前記デバイスを前記仮想化制御するために前記クライアント装置に対する処理要求の送信制御であるトリガ通知送信処理を行うトリガ処理手段と、を備え、前記トリガ通知送信処理は、前記デバイスにおける複数の前記状態変化の全部または一部の組み合わせに応じ、前記クライアント装置に対する前記処理要求を決定することを特徴とする。
【発明の効果】
【０００９】
本発明によれば、デバイスサーバに接続されたデバイスの複数の状態変化および状態の組み合わせを判断し、複数の状態変化の組み合わせに応じた処理内容を決定することができる。
【図面の簡単な説明】
【００１０】
【図１】本発明のデバイス制御システムの概略構成の一例を示す図である。
【図２】クライアントＰＣ１００における、定義ファイル１１４とトリガ検知アルゴリズム１１５、及びトリガ処理条件１１６の送信に関する制御の一例を説明するフローチャートである。
【図３】クライアントＰＣ１００から送信される定義ファイル１１４、トリガ検知アルゴリズム１１５、及びトリガ処理条件１１６をデバイスサーバ２００が受信する際の、デバイスサーバ２００の処理の一例を説明するフローチャートである。
【図４】定義ファイル１１４とトリガ検知アルゴリズム１１５、及びトリガ処理条件１１６を含む電文（パケット）のデータ構造データ構成を例示する図である。
【図５】デバイスサーバ２００におけるトリガ検知処理の全体について説明するフローチャートである。
【図６】本発明のデバイスサーバ２００におけるトリガ検知処理の詳細について説明するフローチャートである。
【図７】デバイスサーバ２００におけるトリガ検知後の処理の詳細について説明するフローチャートである。
【図８】クライアントＰＣ１００における通知ＩＤに応じた処理を実施する際の制御について説明するフローチャートである。
【図９】トリガ検知処理条件の例を説明する図である。
【図１０】クライアントＰＣ１００のアプリケーションの処理の例を説明するフローチャートである。
【図１１】デバイス制御システムのシーケンスを例示する図である。
【発明を実施するための形態】
【００１１】
以下、本発明の実施形態について、図面を参照しながら詳細に説明する。
＜１．デバイス制御システムの概要＞
【００１２】
本実施形態で例示するシステムは、デバイスサーバに接続されたデバイスを使用して、ネットワーク上に存在するクライアントＰＣに対して、デバイスサーバに接続されたデバイスから遠隔操作を提供するシステムである。
【００１３】
加えて、前述の遠隔操作は特定のユーザのみを許可する。そのためにユーザが所持する認証用の情報をデバイス及びデバイスサーバを経由してクライアントＰＣへ伝達し、クライアントＰＣは認証用の情報からユーザを特定し、遠隔操作を提供する。
【００１４】
具体的には、デバイスサーバには「人感センサ」及び「カードリーダ」が接続されており、ユーザが人感センサに検知され、かつカードリーダにカードをかざす事でクライアントＰＣはユーザ認証を実施する。
【００１５】
前述のユーザ認証にて適切なユーザであれば、クライアントＰＣはデバイスサーバに接続された「ディスプレイ」に自身の画面を表示し、デバイスサーバに接続された「マウス、キーボード」からの操作を自身の操作に反映する。
【００１６】
加えて、デバイスサーバは、前述の「人感センサ」「カードリーダ」の状態を監視し、「人感センサ」がユーザを検知したか、また「カードリーダ」にカードをかざしたかどうかの状態変化を通知することで、クライアントＰＣに対して遠隔操作の終了を指示する。本実施形態ではユーザがカードリーダへカードをかざしている間、かつデバイスサーバの付近にいる間に遠隔操作を提供し、それ以外は提供を終了する。
＜２．デバイス制御システムの構成＞
【００１７】
図１は、本実施形態に係るデバイス制御システムの概略構成の一例を示す図である。クライアントＰＣ１００、デバイスサーバ２００、デバイス３００（３００Ａ，３００Ｂ，３００Ｃ，３００Ｄ，３００Ｅ）から構成される。  
【００１８】
本実施形態において、デバイス３００Ａは「人感センサ」とする。デバイス３００Ｂは「カードリーダ」とし、ユーザの所持するＩＣカードの情報を取得するために使用する。デバイス３００Ｃは「Ｗｅｂカメラ」とし、ユーザの顔画像を取得するために使用する。デバイス３００Ｄは「ディスプレイ」とし、クライアントＰＣ１００上の表示部１０３が生成する画面を表示するために使用する。デバイス３００Ｅは「マウス、キーボード」とし、クライアントＰＣ１００を操作するために使用する。
【００１９】
このデバイス制御システムでは、デバイスサーバ２００とデバイス３００をＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）やＩＥＥＥ１３９４などのインターフェースに準拠した接続ケーブル４００で接続する。また、デバイスサーバ２００とクライアントＰＣ１００は、有線または無線のネットワーク５００で接続する。
【００２０】
次に、デバイス制御システムを構成する各装置について順次説明する。
【００２１】
＜３．クライアントＰＣ１００の構成＞
クライアントＰＣ１００のハードウェア構成及びソフトウェア構成について図１を用いて説明する。
【００２２】
クライアントＰＣ１００は、本発明のクライアント装置の実施形態の一例であり、ＣＰＵ１０１、入力部１０２、表示部１０３、メモリ１０４、通信部１０５、記憶部１０６などから構成されており、これらが内部バス１０７で相互に接続されている。
【００２３】
ＣＰＵ１０１は、中央処理制御部であり、メモリ１０４や記憶部１０６に格納された所定のプログラムを実行することによってクライアントＰＣ１００を全体的に制御する。
【００２４】
入力部１０２は、各種入力、指示操作などを行うための操作部であり、キーボードやマウスなどで構成される。
【００２５】
表示部１０３は、各種画面などを表示するディスプレイであり、クライアントＰＣ１００に内蔵もしくは外部接続される。
【００２６】
メモリ１０４は、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）及びＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）で構成される記憶領域であり、所定のプログラムやデータを格納する。
【００２７】
通信部１０５は、Ｅｔｈｅｒｎｅｔ（登録商標）のような有線ネットワーク、若しくは、ＩＥＥＥ８０２．１１ａやＩＥＥＥ８０２．１１ｇのような無線ネットワークなど、ネットワーク５００に対応したネットワークパケットによる送受信や通信制御を行うためのインターフェースである。クライアントＰＣ１００は、通信部１０５を介してデバイスサーバ２００とデータの送受信を行うことができる。
【００２８】
記憶部１０６には、ＯＳ１０８、アプリケーションプログラム１０９、常駐モジュール１１０、デバイスドライバ１１１、仮想化制御部１１２、通信制御部１１３、定義ファイル１１４、トリガ検知アルゴリズム１１５、トリガ処理条件１１６などの各種ソフトウェアプログラムや各種データを記憶する。
【００２９】
記憶部１０６に記憶されたこれらのソフトウェアプログラムやデータは、ＣＰＵ１０１の制御に従い、メモリ１０４上に読み出されて実行される。
【００３０】
デバイスドライバ１１１、仮想化制御部１１２は、常駐モジュール１１０がデバイス３００のデバイス情報を取得、登録することにより、動的に生成されるドライバソフトウェア部品である。
【００３１】
アプリケーションプログラム１０９は、デバイスドライバ１１１、仮想化制御部１１２、及び通信制御部１１３を介し、デバイス３００に対してデータ送受信要求を送るソフトウェア部品である。
【００３２】
常駐モジュール１１０は、ＯＳ１０８が起動している間、常に待機及び動作しているソフトウェア部品である。ネットワーク５００上にあるデバイスサーバ２００とデータの送受信を行うことにより、デバイスサーバ２００に接続されたデバイス３００を認識し、当該デバイス３００のデバイス情報を受信する。受信したデバイス情報をもとに、デバイス３００とのデータ送受信に必要なソフトウェア部品（デバイスドライバ１１１、仮想化制御部１１２）を一意に特定し、各ソフトウェア部品を順次動的に生成する。
【００３３】
デバイスドライバ１１１は、ＯＳ１０８やアプリケーションプログラム１０９など（以下、「上位層のソフトウェア」と呼ぶ）の指示により、デバイス３００に対する制御コマンドを生成し、この制御コマンドに対する応答を待ち、この応答を上位層のソフトウェアへ通知するソフトウェア部品である。本実施形態においては、ＵＳＢデバイスを制御するためのＵＳＢデバイスドライバとする。
【００３４】
仮想化制御部１１２は、プラグアンドプレイイベントを生成し、また、制御コマンドを送受信するためのＵＳＢポートを作成するとともに、その上位にデバイスドライバ１１１をロードする。さらに、デバイスドライバ１１１で生成される制御コマンドをＵＳＢパケットに変換し、ＵＳＢパケットを制御コマンドに変換するソフトウェア部品である。
【００３５】
また、仮想化制御部１１２は、デバイスドライバ１１１を経由して送られてくるアプリケーションプログラム１０９からのデータ送受信要求を受信すると、デバイス３００がクライアントＰＣ１００に直結（ローカル接続）しているときと同様の振る舞い（仮想化制御機能）を提供するソフトウェア部品である。この「仮想化制御機能」によって、クライアントＰＣ１００はデバイス３００をローカル接続したときと同じ状態であると認識してデータ送受信することができる。
【００３６】
通信制御部１１３は、仮想化制御部１１２から送られてくるＵＳＢパケットとデバイスサーバ２００とネットワーク５００を介して通信するためのネットワークパケットとのプロトコル変換を行い、通信部１０５を介してデバイスサーバ２００との間のデータ送受信を制御するソフトウェア部品である。仮想化制御部１１２を経由して送られてくるアプリケーションプログラム１０９からのデータ送受信要求を受信すると、デバイスサーバ２００とのセッションを開始し、データ送受信が完了すると、セッションを切断する。
【００３７】
定義ファイル１１４は、デバイスサーバ２００において、トリガ検知用デバイス３０１（デバイス３００Ａ，デバイス３００Ｂ）の監視を実行する際、トリガ検知アルゴリズム１１５に必要な命令・情報等を格納しているデータファイルである。図４で定義ファイル１１４のデータ構造の一例について詳述する。
【００３８】
トリガ検知アルゴリズム１１５は、デバイスサーバ２００において、対象となるデバイス３００を監視し、その状態変化を検知するための実行手順が記述されたプログラムコードである。実行時に定義ファイル１１４を読み込むことで、本実行手順に従って、トリガ検知用デバイス３０１の監視処理（以下、「トリガ検知処理」と呼ぶ）が行なわれる。
【００３９】
ここで、デバイスの状態変化とは、例えば実施例１に基づく場合、デバイス３００Ａ（人感センサ）に対して人が検知されていない状態から検知された状態へ移行することや、逆に検知された状態から検知されていない状態へ移行することなどである。このようなデバイス３００の状態変化の検知を契機（トリガ）として、クライアントＰＣ１００は、デバイスサーバ２００とのセッションを開始する。
【００４０】
トリガ処理条件１１６は、トリガ検知用デバイス３０１の状態の組み合わせに応じて実行する処理を定義している。本実施形態ではトリガ検知用デバイス３０１がデバイス３００Ａとデバイス３００Ｂの複数ある場合について例示するが、トリガ検知用デバイス３０１が単一であってもよい。その場合は、単一のデバイスでの複数の状態変化の組み合わせに応じて実行する処理を定義するものとする。
【００４１】
＜４．デバイスサーバ２００の構成＞
続いて、デバイスサーバ２００のハードウェア構成及びソフトウェア構成について、図１を用いて説明する。
【００４２】
デバイスサーバ２００は、本発明におけるデバイス制御装置の実施形態の一例であり、ＣＰＵ２０１、メモリ２０２、通信部２０３、記憶部２０５、ＵＳＢ  Ｉ／Ｆ２２０などから構成されており、これらが内部バス２０４で相互に接続されている。
【００４３】
ＣＰＵ２０１、メモリ２０２、通信部２０３及び内部バス２０４については、前述したクライアントＰＣ１００における構成と同一であるため詳細な説明を省略する。
【００４４】
ＵＳＢ  Ｉ／Ｆ２２０は、例えば、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）仕様に準拠した入出力インターフェースであって、デバイス３００との接続に利用される。
【００４５】
記憶部２０５は、通信制御部２０６、仮想化通信部２０７、デバイス制御部２０８などのソフトウェア機能部やデータを記憶するためのものである。
【００４６】
記憶部２０５に記憶されたこれらのソフトウェアプログラムやデータは、ＣＰＵ２０１の制御に従い、メモリ２０２上に読み出されて実行される。
【００４７】
通信制御部２０６は、通信部２０３を介してネットワーク５００経由で接続されているクライアントＰＣ１００との間のセッションを制御（開始と切断）するとともに、クライアントＰＣ１００と通信するためのネットワークパケットを送受信する。
【００４８】
仮想化通信部２０７は、クライアントＰＣ１００との間で送受信するネットワークパケットとデバイス３００との間で送受信するＵＳＢパケットとのプロトコル変換を行い、クライアントＰＣ１００とデバイス３００との間のデータ送受信を仲介（中継）するための機能部である。
【００４９】
デバイス制御部２０８は、定義ファイル２０９、トリガ検知アルゴリズム２１０、トリガ処理条件２１１、デバイス情報２１２、監視制御部２１３を記憶している。また、トリガ検知用デバイス３０１を監視して、その状態変化を検知し、クライアントＰＣ１００へ通知したり、トリガ検知用デバイス３０１の監視開始、及び監視停止を制御するための機能部である。
【００５０】
デバイス制御部２０８に記憶される定義ファイル２０９、トリガ検知アルゴリズム２１０、およびトリガ処理条件２１１の構成は、クライアントＰＣ１００の記憶部１０６に記憶される定義ファイル１１４、トリガ検知アルゴリズム１１５、およびトリガ処理条件１１６と同一であるため詳細な説明を省略する。ただし、デバイスサーバ２００は、自身に接続されたデバイス３００の監視（ポーリング）に必要な定義ファイル２０９とトリガ検知アルゴリズム２１０、およびトリガ処理条件２１１だけを保持する。
【００５１】
デバイス情報２１２は、デバイス３００を識別するための情報である。例えば、メーカーを識別するために機器を製造したメーカー毎に割り当てられたベンダーＩＤ（ＶＩＤ）、機種を識別するために機種毎に割り当てられた製品ＩＤ（ＰＩＤ）、機器の個体を識別するために機器毎に割り当てられたシリアル番号などである。デバイス３００がデバイスサーバ２００に接続された際などに、デバイス制御部２０８がデバイス３００から取得する情報である。
【００５２】
監視制御部２１３は、デバイス３００から取得したデバイス情報２１２に基づいて、接続されたデバイス３００の機種を特定する。次に、特定されたデバイス３００の機種に対応する定義ファイル１１４、トリガ検知アルゴリズム１１５、及びトリガ処理条件１１６をクライアントＰＣ１００から受信し、受信した定義ファイル１１４とトリガ検知アルゴリズム１１５、及びトリガ処理条件１１６を、定義ファイル２０９とトリガ検知アルゴリズム２１０、及びトリガ処理条件２１１として記憶部２０５に保存する機能を有する。
【００５３】
また、監視制御部２１３は、保存した定義ファイル２０９とトリガ検知アルゴリズム２１０を用いて、接続されたトリガ検知用デバイス３０１に対して一定間隔で監視（ポーリング）を行うことでデバイス３００の状態変化を検知する機能を有する。
【００５４】
加えて、監視制御部２１３は、接続された全てのトリガ検知用デバイス３０１の状態を保持し、各デバイスに対して実施された監視結果を自身に反映し記憶する機能を有する。
【００５５】
＜５．デバイス３００の構成＞
デバイス３００は、ＵＳＢインターフェースを持つ汎用的な入出力装置である。例えば、カードリーダや人感センサなどの単機能周辺装置、あるいは、プリント機能の他にスキャン機能やコピー機能、ストレージ機能などを兼ね備えた多機能周辺機器である。ただし、これらに限定されるものでなく、別のデバイスであってもよい。
【００５６】
デバイス３００は、トリガ検知用デバイス３０１、認証用デバイス３０２、リモートデスクトップ用デバイス３０３に分けられる。
【００５７】
トリガ検知用デバイス３０１は、デバイスの状態変化を監視する対象のデバイスである。本実施形態においてはデバイス３００Ａ、デバイス３００Ｂをトリガ検知用デバイス３０１とする。
【００５８】
認証用デバイス３０２は、クライアントＰＣ１００がユーザにサービスを提供する際のログイン認証を行うために必要なデバイスである。本実施形態においてはデバイス３００Ｂ、デバイス３００Ｃを認証用デバイス３０２とする。なお、デバイス３００Ｂはトリガ検知用デバイス３０１と認証用デバイス３０２としての機能を兼ねることが可能である。
【００５９】
リモートデスクトップ用デバイス３０３は、クライアントＰＣ１００がユーザに提供するサービスのために必要なデバイスである。本実施形態においてはデバイス３００Ｄ、デバイス３００Ｅをリモートデスクトップ用デバイス３０３とする。
【００６０】
また、デバイスサーバ２００、デバイス３００をそれぞれ別体の装置として説明したが、これに限定されるものではなく、デバイスサーバ２００をデバイス３００のケーシング内に収まるように一体構造としても良い。
【００６１】
＜６．クライアントＰＣ１００における定義ファイルなどの送信＞
図２は、クライアントＰＣ１００における、定義ファイル１１４、トリガ検知アルゴリズム１１５、及びトリガ処理条件１１６の送信に関する制御の一例を示したものである。
【００６２】
クライアントＰＣ１００内の常駐モジュール１１０は、デバイスサーバ２００を介してネットワーク５００に接続されたデバイス３００を知るために、通信部１０５を介して、デバイスサーバ２００に対して検索パケットをブロードキャストする（ステップＳ１０１）。具体的には、ＵＤＰ（Ｕｓｅｒ  Ｄａｔａｇｒａｍ  Ｐｒｏｔｏｃｏｌ）などのプロトコルを用いて、デバイスサーバ２００の検索（問い合わせ）を行う。
【００６３】
常駐モジュール１１０は、デバイスサーバ２００からの応答を待ち、デバイスサーバ２００からの応答電文に含まれるデバイスサーバ２００に接続されたデバイス３００のデバイス情報２１２（ディスクリプタ）を取得する（ステップＳ１０２）。
【００６４】
常駐モジュール１１０は、取得したデバイス情報２１２のうち、デバイスディスクリプタに記述されたベンダーＩＤ（ＶＩＤ）と製品ＩＤ（ＰＩＤ）、ストリングディスクリプタに記述されたシリアル番号とデバイス名称によってデバイスサーバ２００に接続されたデバイスの個体を識別する。常駐モジュール１１０は、識別されたデバイスの個体に関する情報に基づいて、仮想化制御処理に必要なソフトウェア部品を一意に特定し、各ソフトウェア部品を順次動的に生成する。
【００６５】
続いて、常駐モジュール１１０は、取得したデバイス情報２１２からデバイス３００の種別（機種）を識別し、そのデバイス３００に対応する定義ファイル１１４、トリガ検知アルゴリズム１１５、及びトリガ処理条件１１６が記憶部１０６に記憶されているか判別する（ステップＳ１０３）。
【００６６】
次に常駐モジュール１１０は、トリガ検知用デバイス３０１がデバイスサーバ２００に接続されているか判別する（ステップＳ１０４）。
【００６７】
取得したデバイス情報２１２で特定されるデバイス３００に対応する定義ファイル１１４、トリガ検知アルゴリズム１１５及びトリガ処理条件１１６を記憶部１０６に記憶しており（ステップＳ１０３でＹｅｓ）、トリガ検知用デバイス３０１がデバイスサーバ２００と接続されている場合（ステップＳ１０４でＹｅｓ）、デバイスサーバ２００とのセッションを開始する（ステップＳ１０５）。
【００６８】
デバイス３００に対応する定義ファイル１１４、トリガ検知アルゴリズム１１５及びトリガ処理条件１１６を含むインストール用の電文（パケット）をデバイス３００が接続されたデバイスサーバ２００に送信する（ステップＳ１０６）。
【００６９】
電文の送信後は、デバイスサーバ２００とのセッションを切断し、処理を終了する（ステップＳ１０７）。なお、定義ファイル１１４、トリガ検知アルゴリズム１１５、及びトリガ処理条件１１６を含む電文（パケット）は、図４で詳述する。
【００７０】
一方、ステップＳ１０２で取得したデバイス情報２１２で特定されるデバイス３００に対応する定義ファイル１１４、トリガ検知アルゴリズム１１５、及びトリガ処理条件１１６を記憶部１０６に記憶していない場合（ステップＳ１０３でＮｏ）、処理を終了する。
【００７１】
また、トリガ検知用デバイス３０１がデバイスサーバ２００に接続されていない場合（ステップＳ１０４でＮｏ）、処理を終了する。
【００７２】
＜７．デバイスサーバ２００における定義ファイルなどの受信＞
図３はデバイスサーバ２００がクライアントＰＣ１００から送信される定義ファイル１１４、トリガ検知アルゴリズム１１５、及びトリガ処理条件１１６を受信する際の、デバイスサーバ２００の処理を示したものである。
【００７３】
デバイスサーバ２００は、通信制御部２０６を介してクライアントＰＣ１００から接続要求があるまで待機する（ステップＳ２０１）。クライアントＰＣ１００から接続要求を受信したら、クライアントＰＣ１００とのセッションを開始し、電文を受信する（ステップＳ２０２）。
【００７４】
次に、仮想化通信部２０７において、クライアントＰＣ１００から受信した電文（パケット）が定義ファイル１１４、トリガ検知アルゴリズム１１５、及びトリガ処理条件１１６のインストール用電文かデータ送受信用電文かを解析する（ステップＳ２０３）。
【００７５】
インストール用電文の場合、インストール用電文に含まれる定義ファイル１１４、トリガ検知アルゴリズム１１５及びトリガ処理条件１１６を、それぞれ定義ファイル２０９とトリガ検知アルゴリズム２１０、及びトリガ処理条件２１１としてデバイス制御部２０８に格納する（ステップＳ２０４）。
【００７６】
データ送受信用電文の場合、インストールが不要なケース（トリガ検知処理を利用しないシステム）またはインストール後のデータ通信と判断し、デバイス３００に対して電文の内容を元にデータ送受信を行う（ステップＳ２０６）。
【００７７】
そして、ステップＳ２０４あるいはステップＳ２０６の処理を終えるとクライアントＰＣ１００とのセッションを切断（ステップＳ２０５）し、再び、ステップＳ２０１に戻る。
【００７８】
なお、トリガ処理条件１１６は、クライアントＰＣ１００から受信するだけでなく、クライアントＰＣ１００以外から情報を取得・格納してもよい。
【００７９】
＜８．インストール用パケットのデータ構造＞
定義ファイル１１４、トリガ検知アルゴリズム１１５、及びトリガ処理条件１１６を含む電文（パケット）のデータ構造の一例を図４に示す。
【００８０】
パケットは署名データ６０１、電文サイズ６０２、コマンドＩＤ６０３、使用するトリガ検知用デバイス３０１数６０４、使用するトリガ検知用デバイス３０１固有のデバイス情報６０５、デバイスＮ情報６０６、トリガ処理条件１１６で構成される。なお、前述の定義ファイル１１４及びトリガ検知アルゴリズム１１５はデバイス固有のデバイス情報６０５に含まれている。
【００８１】
トリガ検知用デバイス３０１固有のデバイス情報６０５は、前述のデバイス情報２１２と同一であり、ベンダーＩＤ６０７、製品ＩＤ６０８、シリアル番号６０９、定義ファイル１１４、トリガ検知アルゴリズム１１５で構成される。
【００８２】
このうち、ベンダーＩＤ６０７、製品ＩＤ６０８、シリアル番号６０９によって、トリガ検知用デバイス３０１をデバイス制御部２０８が一意に識別することができる。
【００８３】
定義ファイル１１４は、トリガ検知アルゴリズム１１５の実行に必要な命令・情報などが格納されたファイルである。データ長６１２、トリガ検知アルゴリズム１１５に対応するデバイス３００のベンダーＩＤ６１３、プロダクトＩＤ６１４、インターフェース番号６１５、命令数（ｎ）６１６、デバイス３００からの応答に対して状態変化の有無を判定させるためのキー情報６１７、デバイス３００のトリガ検知処理に必要な手続きが記述された１つまたは複数の命令６１８で構成される。命令６１８には１〜ｎ（ｎ：命令数（ｎ））まで順にインデックスが付与されている。
【００８４】
命令６１８は、命令サイズ６２１、当該コマンド発行に必要なＵＳＢの規格で定義された転送タイプ６２２、Ｃｏｎｔｒｏｌ転送におけるＳｅｔｕｐ  Ｔｏｋｅｎで送信する転送用パラメータ６２３、エンドポイントアドレス６２４、デバイス３００からの応答に状態変化の情報を含むものであるかを示すキー判定フラグ６２５、デバイス３００に対して発行すべきデバイス固有のコマンド６２６で構成され、１つのコマンドを発行するためのパラメータが格納されたものである。
【００８５】
トリガ処理条件１１６は、デバイス情報６０５に示された複数のトリガ検知用デバイスに対して、条件数６１０及び、条件６１１（状態変化の組み合わせと実行する処理との紐づけ）により構成される。クライアントＰＣ１００からデバイスサーバ２００に送信され、トリガ処理条件２１１としてデバイス制御部２０８に保存される。
【００８６】
条件６１１は、各トリガ検知用デバイスの状態６１９と、条件（デバイスの状態６１９の組み合わせ）に一致した場合に実行すべき処理が記載された処理６２０で構成される。
【００８７】
トリガ検知用デバイス３０１の状態６１９は、「検知」「非検知」「停止」の３種の状態のいずれかである。各トリガ検知用デバイスに対して各々この３種の状態をデバイスサーバ２００の監視制御部２１３が記憶し、複数のトリガ検知用デバイスの状態の組み合わせを表現する。  
【００８８】
本実施形態では、トリガ検知用デバイス３０１の状態６１９はデバイスサーバ２００内に記憶するとして説明したが、これに限定されるものではなく、ローカルＩ／Ｆを介して接続された外部記憶媒体に記憶されていてもよい。
【００８９】
ここで、「検知」とは、デバイスサーバ２００がトリガ検知用デバイス３０１のトリガ検知処理により検知された状態（例えば、カードリーダにカードがかざされた状態）である。また、「非検知」とは、トリガ検知処理を実行するも検知されなかった状態（例えば、カードリーダにカードがかざされていない状態）である。また、「停止」とは、トリガ検知処理自体が停止している状態である。
【００９０】
処理６２０は、処理種別６２７として「ＩＤ通知」（６２７Ａ）か「シーケンス制御」（６２７Ｂ）のいずれかが定義されており、本種別により構成が異なる。
【００９１】
前述したように記憶されたトリガ検知用デバイス３０１の状態が、トリガ処理条件２１１に一致するものがあるか検索し、条件に一致する場合はクライアントＰＣ１００へＩＤ通知を実行する、もしくはトリガ検知用デバイス３０１に対してシーケンス制御を実行する機能を監視制御部２１３が実行する。
【００９２】
処理６２０は、処理種別６２７が「ＩＤ通知」であった場合、クライアントＰＣ１００もしくはデバイスサーバ２００内部の機能に対してＩＤを通知するための情報が記載され、処理種別６２７Ａ、通知先情報６２８、通知ＩＤ６２９で構成される。
【００９３】
通知ＩＤ６２９は、クライアントＰＣ１００またはデバイスサーバ２００内部の機能に対して通知するＩＤが記載される。なお通知ＩＤには、状態変化の組み合わせと、または状態変化と状態の組み合わせが記載される。
【００９４】
通知先情報６２８は「外部」か「内部」のいずれかが記載され、「外部」である場合はクライアントＰＣ１００に対して、「内部」である場合はデバイスサーバ２００のいずれかの内部機能に対して通知ＩＤ６２９で示したＩＤを通知することを意味する。
【００９５】
トリガ処理条件２１１に含まれるＩＤ通知の処理内容に従い、クライアントＰＣ１００に対してＩＤを通知する機能を監視制御部２１３が有する。
【００９６】
処理６２０は、処理種別６２７が「シーケンス制御」であった場合、トリガ検知用デバイス３０１に対する監視開始、監視停止を制御するための情報が記載され、処理種別６２７Ｂ、制御デバイス数６３０、各トリガ検知用デバイスに対する処理６３１にて構成される。
【００９７】
トリガ検知用デバイス３０１に対する処理６３１はデバイス番号６３２及び、シーケンス制御処理６３３により構成される。
【００９８】
デバイス番号６３２は、デバイス情報６０５に記載された各トリガ検知用デバイス３０１を示し、対象となるデバイスを特定する。
【００９９】
シーケンス制御処理６３３には、「監視開始」か「監視停止」のいずれかが記載される。「監視開始」である場合は、該当するデバイスのトリガ検知処理を開始し、「監視停止」である場合は、該当するデバイスのトリガ検知処理を停止することを意味する。
【０１００】
トリガ検知用デバイス３０１に対して、トリガ処理条件２１１に含まれるシーケンス制御の処理内容に従い、各デバイス（トリガ検知用デバイス３０１）の監視を実行或いは停止を制御する機能を監視制御部２１３が有する（例えば、デバイス３００Ａのみのトリガ検知処理を実行させたり、デバイス３００Ａ，３００Ｂ両方のトリガ検知処理を実行させたりする）。
【０１０１】
＜９．デバイスサーバ２００の制御フロー＞
次に、デバイスサーバ２００におけるトリガ検知処理の全体について図５のフローチャートを用いて説明する。
【０１０２】
デバイスサーバ２００は、はじめに、トリガ処理条件２１１から全てのトリガ検知用デバイス３０１の状態６１９が「停止」である組み合わせと一致する条件、及び処理６２０を検索する。本実施形態のシステム開始時は、全トリガ検知用デバイスのトリガ検知処理は停止している。該当する処理としては、処理種別６２７が「シーケンス制御」であり、いずれかのトリガ検知用デバイス３０１のトリガ検知処理を開始させるものである（ステップＳ３００）。
【０１０３】
また、トリガ処理条件２１１から全てのトリガ検知用デバイス３０１の状態６１９が「停止」である組み合わせと一致する条件が無い場合、全てのトリガ検知用デバイスのトリガ検知処理を開始する。
【０１０４】
その後、指定されたトリガ検知用デバイス３０１のトリガ検知処理（ステップＳ３０１）を実施する。トリガ検知処理（ステップＳ３０１）についての詳細は後述するが、本処理はデバイスの状態変化を検知し、デバイスサーバ２００内部のデバイス状態テーブル（不図示）にこれを更新するものである。デバイス状態テーブルには「検知」「非検知」「停止」の３種の状態のいずれかが情報として格納がされている。
【０１０５】
デバイスサーバ２００は、デバイス状態テーブルが更新された場合（ステップＳ３０２にてＹｅｓ）、デバイス状態テーブルとトリガ処理条件２１１を比較し、トリガ処理条件２１１に一致する条件があるか検索する（ステップＳ３０３）。
【０１０６】
その際にデバイス３００が複数の場合、デバイスサーバ２００は１台目のトリガ検知用デバイス３０１の状態変化を検知した後、任意の所定時間の間に残りのトリガ検知用デバイス３０１の状態を見てトリガ処理条件２１１に一致する条件があるか検索してもよい。また、１台目のトリガ検知用デバイス３０１の状態変化をクライアントＰＣ１００へ通知し、残りのトリガ検知用デバイス３０１のトリガ検知待ちであることを通知してもよい。その際、クライアントＰＣ１００は残りのトリガ検知用デバイス３０１のトリガ検知受信待ちとなる。その後、所定時間内に残りのトリガ通知を受信した場合、クライアントＰＣ１００は、複数のトリガ検知用デバイス３０１の状態の組み合わせに応じて処理を実行する。
【０１０７】
デバイス状態テーブルが更新されない場合は、再度トリガ検知処理（ステップＳ３０１）を実施する。
【０１０８】
デバイスサーバ２００は、トリガ処理条件２１１から一致する条件があるか検索し、一致するものがある場合は（ステップＳ３０３にてＹｅｓ）、トリガ処理条件２１１の記載に準じた処理（ステップＳ３０４）を実行し、再度トリガ検知処理ステップＳ３０１を実施する。一致するものがない場合は（ステップＳ３０３にてＮｏ）、何もせず、再度トリガ検知処理（ステップＳ３０１）を実施する。制御選択処理（ステップＳ３０４）の詳細については後述する。
【０１０９】
なお、状態変化が起こるデバイス３００が複数の場合について例示したが、単一のデバイスでもよい。その場合、デバイスサーバ２００はトリガ検知用デバイス３０１の最初の状態変化を検知した後、任意の所定時間の間に次の状態変化を検知し、トリガ処理条件２１１に一致する条件があるか検索を行う。
【０１１０】
＜１０．デバイスサーバ２００のトリガ検知処理フロー＞
次に、デバイスサーバ２００が実行するトリガ検知処理ステップＳ３０１について、図６のフローチャートを用いて説明する。
【０１１１】
デバイス制御部２０８は、トリガ検知アルゴリズム２１０の起動時に定義ファイル２０９の読み込みを行い、図４に示した形式に解読して、トリガ検知処理に必要なデバイス３００固有の情報をメモリ２０２上にセットする（ステップＳ４００）。
【０１１２】
次に、命令６１８に付与されているインデックスと命令数（ｎ）６１６の値を比較し（ステップＳ４０１）、当該インデックスが定義ファイル２０９に記述された命令数（ｎ）６１６の値に達したかどうかを判別する（ステップＳ４０１）。
【０１１３】
当該インデックスが定義ファイル２０９に記述された命令数（ｎ）６１６の値に満たない場合（ステップＳ４０１でＹｅｓ）には、メモリ２０２上にセットされた命令６１８を１つ読み出す。（ステップＳ４０２）
【０１１４】
デバイス制御部２０８は、命令６１８に記述された転送タイプ６２２を判別する（ステップＳ４０３）。判別結果によって、転送用パラメータをセットし（ステップＳ４０４）、電文をデバイス３００に送信する（ステップＳ４０５）。
【０１１５】
ステップＳ４０５で送信した電文に対して、トリガ検知用デバイス３０１からの応答を待ち、トリガ検知用デバイス３０１から応答を受信すると（ステップＳ４０６）、命令６１８のキー判定フラグ６２５が有効か判断する（ステップＳ４０７）。
【０１１６】
命令６１８のキー判定フラグ６２５が有効と判断した場合（ステップＳ４０７でＹｅｓ）、さらに、受信データ中にキー情報６１７と一致するデータが存在するか判断する（ステップＳ４０８）。
【０１１７】
受信データ中にキー情報６１７と一致するデータが存在する場合（ステップＳ４０８でＹｅｓ）、トリガ検知用デバイス３０１の状態が「検知」であると判断し、デバイス情報テーブルに「検知」として反映する（ステップＳ４０９）ことで、このフローの処理を終了する。
【０１１８】
一方、ステップＳ４０７において、命令６１８のキー判定フラグ６２５が無効の場合（ステップＳ４０７でＮｏ）、あるいは、ステップＳ４０８において、受信データ中にキー情報６１７に一致するデータが存在しない場合、インデックスをインクリメントし、次の命令６１８を読み出して（ステップＳ４１０）、ステップＳ４０１に戻る。そして、ステップＳ４０１で、当該インデックスが定義ファイル２０９に記述された命令数（ｎ）６１６の値に達し、全ての命令６１８の読み出しが終了した場合（検知できなかった場合）、トリガ検知用デバイス３０１の状態が「非検知」であると判断し、デバイス情報テーブルに「検知」として反映する（ステップＳ４０９）ことで、このフローの処理を終了する。
【０１１９】
＜１１．トリガ検知処理後の組み合わせ判定、及び制御＞
デバイスサーバ２００がトリガ検知処理後、トリガ処理条件２１１から組み合わせに基づいた制御選択処理（ステップＳ３０４）を実行する制御について、図７に示す。
【０１２０】
制御選択処理（ステップＳ３０４）において、監視制御部２１３がトリガ処理条件２１１の処理種別６２７を読み込み（ステップＳ５００）、処理種別６２７を判別する（ステップＳ５０１）。
【０１２１】
処理種別６２７が「シーケンス制御」である場合、デバイス番号６３２に記載されたデバイスの番号を元に制御すべきトリガ検知用デバイス３０１を特定する。シーケンス制御処理６３３の内容が「監視開始」である場合（ステップＳ５０３で「監視開始」）、デバイス状態テーブルの該当するトリガ検知用デバイス３０１の情報を「非検知」にした後、特定したトリガ検知用デバイス３０１に対してトリガ検知処理（ステップＳ３０１）の実行を開始する（ステップＳ５０４）。また、シーケンス制御処理６３３の内容が「監視停止」である場合（ステップＳ５０３で「監視停止」）、特定したトリガ検知用デバイス３０１に対してデバイス状態テーブルの該当するトリガ検知用デバイス３０１の情報を「停止」にした後、トリガ検知処理（ステップＳ３０１）を停止する（ステップＳ５０５）。
【０１２２】
その後、前述したシーケンス制御の処理が制御デバイス数６３０に示されたデバイス数分完了していなければ（ステップＳ５０６でＮｏ）、次のデバイス番号６３２を取得し（ステップＳ５０２）、同様に処理を行う。また、前述した処理がデバイス数分完了したならば（ステップＳ５０６でＹｅｓ）、シーケンス制御の処理を終了する。
【０１２３】
処理種別６２７が「ＩＤ通知」である場合、通知ＩＤ６２９を監視制御部２１３が取得し（ステップＳ５０７）、通知先情報６２８を判別する（ステップＳ５０８）。通知先情報６２８が「外部」である場合（ステップＳ５０８で「外部」）、通信制御部２０６を介してクライアントＰＣ１００へ通知ＩＤ６２９を通知（ステップＳ５０９）し、ＩＤ通知の処理を終了する。また、通知先情報６２８が「内部」である場合（ステップＳ５０８で「内部」）、デバイスサーバ２００のいずれかの内部機能に対して通知ＩＤ６２９を通知（ステップＳ５１０）し、終了する。なお、デバイスサーバ２００のいずれかの内部機能は、システムの用途に応じてデバイスサーバ２００に組み込まれた拡張機能である。例えば、タッチパネルが備える入出力機能などであるが、これに限定したものではない。
【０１２４】
＜１２．クライアントＰＣ１００における通知受信、及び処理＞
クライアントＰＣ１００がデバイスサーバ２００から通知ＩＤ６２９を受信し、通知ＩＤ６２９に応じた処理を実施する際の制御について、図８のフローチャートを用いて説明する。
【０１２５】
クライアントＰＣ１００は、アプリケーションプログラム１０９が、デバイスサーバ２００から通知ＩＤ６２９を受信するまで待機する（ステップＳ６００）。
【０１２６】
デバイスサーバ２００からの通知ＩＤ６２９をアプリケーションプログラム１０９が受信すると（ステップＳ６００でＹｅｓ）、通知ＩＤ６２９に応じた処理（ステップＳ６０１）を実施し、次の通知ＩＤ６２９を受信するまで待機する（ステップＳ６００）。
【０１２７】
なお、通知ＩＤ６２９において、次にトリガ通知が通知されるまで所定時間待機することを通知してもよい。
【０１２８】
通知ＩＤ６２９に応じた処理（ステップＳ６０１）は、後述する図１０のようにシステムにより任意に定義されるものである。
【０１２９】
＜１３．本実施形態におけるトリガ処理条件＞
本実施形態において、クライアントＰＣ１００がデバイスサーバ２００へインストールするトリガ処理条件１１６の例を図９に示す。
【０１３０】
図９（ａ）は、本実施形態においてクライアントＰＣ１００がデバイスサーバ２００へインストールするトリガ処理条件１１６を具体的に示したものである。また図９（ｂ）は図９（ａ）で定義している内容を表にまとめたものである。
【０１３１】
ここでは、トリガ処理条件１１６に含まれる条件数６１０は５つとして説明する。
【０１３２】
トリガ検知用デバイス３０１の状態６１９Ａをトリガ処理条件１１６は定義し、本状態６１９Ａには、人感センサの状態が「停止」で、かつカードリーダの状態が「停止」である場合、処理６２０Ａを実施する事を記載する。処理６２０Ａは、処理種別６２７Ａを「シーケンス制御」とし、制御デバイス数６３０を２台とし、トリガ検知用デバイス３０１（人感センサ、カードリーダ）両者に対して「検知開始」を定義する。これにより、本状態６１９Ａに一致した場合、デバイスサーバ２００は人感センサとカードリーダのトリガ検知処理を開始する。
【０１３３】
トリガ検知用デバイス３０１の状態６１９Ｂをトリガ処理条件１１６は定義し、本状態６１９Ｂには、人感センサの状態が「非検知」で、かつカードリーダの状態が「非検知」である場合、処理６２０Ｂを実施する事を記載する。処理６２０Ｂは、処理種別６２７Ｂを「ＩＤ通知」とし、通知先情報を「外部」、通知ＩＤ６２９Ｂを「１」と定義する。これにより、本状態６１９Ｂに一致した場合、デバイスサーバ２００はクライアントＰＣ１００へ通知ＩＤ「１」を送信する。これは、カードリーダにカードがかざされず、かつ人感センサがデバイスサーバ２００付近に人間を検知しない状態を意味する。
【０１３４】
トリガ検知用デバイス３０１の状態６１９Ｃをトリガ処理条件１１６は定義し、本状態６１９Ｃには、人感センサの状態が「検知」で、かつカードリーダの状態が「非検知」である場合、処理６２０Ｃを実施する事を記載する。処理６２０Ｃは、処理種別６２７Ｂを「ＩＤ通知」とし、通知先情報を「外部」、通知ＩＤ６２９Ｃを「２」と定義する。これにより、本状態６１９Ｃに一致した場合、デバイスサーバ２００はクライアントＰＣへ通知ＩＤ「２」を送信する。これは、カードリーダにカードがかざされず、かつ人感センサがデバイスサーバ２００付近に人間を検知している状態を意味する。
【０１３５】
トリガ検知用デバイス３０１の状態６１９Ｄをトリガ処理条件１１６は定義し、本状態６１９Ｄには、人感センサの状態が「非検知」で、かつカードリーダの状態が「検知」である場合、処理６２０Ｄを実施する事を記載する。処理６２０Ｄは、処理種別６２７Ｄを「ＩＤ通知」とし、通知先情報を「外部」、通知ＩＤ６２９Ｄを「３」と定義する。これにより、本状態６１９Ｄに一致した場合、デバイスサーバ２００はクライアントＰＣへ通知ＩＤ「３」を送信する。
これは、カードリーダにカードがかざされているが、人感センサはデバイスサーバ２００付近に人間を検知していない状態を意味する。
【０１３６】
トリガ検知用デバイス３０１の状態６１９Ｅをトリガ処理条件１１６は定義し、本状態６１９Ｅには、人感センサの状態が「検知」で、かつカードリーダの状態が「検知」である場合、処理６２０Ｅを実施する事を記載する。処理６２０Ｅは、処理種別６２７Ｅを「ＩＤ通知」とし、通知先情報を「外部」、通知ＩＤ６２９Ｅを「４」と定義する。これにより、本状態６１９Ｅに一致した場合、デバイスサーバ２００はクライアントＰＣへ通知ＩＤ「４」を送信する。これは、カードリーダにカードがかざされていて、かつ人感センサがデバイスサーバ２００付近に人間を検知している状態を意味する。
【０１３７】
＜１４．本実施形態におけるクライアントＰＣ１００の通知ＩＤを受けた時の処理＞
本実施形態において、クライアントＰＣ１００がデバイスサーバ２００から通知ＩＤ６２９を受けた時に実行する処理内容の例を図１０に示す。
【０１３８】
本実施形態のシステムにおいてはクライアントＰＣ１００のアプリケーションプログラム１０９は、「ログイン状態」、「ログアウト状態」の２つの状態を有するものとして説明する。
【０１３９】
「ログイン状態」とは、リモートデスクトップ用デバイス３０３（３００Ｄ、３００Ｅ）が全て仮想化制御部１１２及び仮想化通信部２０７を介してクライアントＰＣ１００にセッション接続され、デバイス３００Ｄ（ディスプレイ）からクライアントＰＣ１００の表示内容を見ることができ、かつクライアントＰＣ１００をデバイス３００Ｅ（マウス、キーボード）を介して遠隔操作する事ができる状態とする。
【０１４０】
「ログアウト状態」とは、リモートデスクトップ用デバイス３０３（３００Ｄ、３００Ｅ）がクライアントＰＣ１００からセッションが切断されている状態とする。
【０１４１】
ログアウト状態時、アプリケーションプログラム１０９は、デバイスサーバ２００から通知ＩＤ６２９として「４」以外を受信した場合、無視する。
【０１４２】
ログアウト状態時、アプリケーションプログラム１０９は、デバイスサーバ２００から通知ＩＤ６２９として「４」を受信した場合、認証用デバイス３０２（３００Ｂ，３００Ｃ）のセッション接続を実施し、カードリーダからカードＩＤを取得するとともに、Ｗｅｂカメラから顔画像を取得する。その後、取得したカードＩＤ及び、顔画像を用いてアプリケーションプログラム１０９がユーザ認証を実行する。
【０１４３】
認証に失敗した場合、不適切なユーザがログインしようとしたものと判断し、無視する。また、認証に成功した場合、リモートデスクトップ用デバイス３０３（３００Ｄ，３００Ｅ）をセッション接続し、ログイン状態に遷移する。
【０１４４】
ログイン状態時、アプリケーションプログラム１０９は、デバイスサーバ２００から通知ＩＤ６２９として「１」又は「２」を受信した場合、ユーザがクライアントＰＣ１００との遠隔操作を終了するものとして、リモートデスクトップ用デバイス３０３（３００Ｄ，３００Ｅ）のセッションを終了し、ログアウト状態に遷移する。
【０１４５】
ログイン状態時、アプリケーションプログラム１０９は、デバイスサーバ２００から通知ＩＤ６２９として「３」を受信した場合、ユーザがクライアントＰＣ１００との遠隔操作を継続するも、デバイスサーバ２００から何らかの理由で少し離れたものとして、本通知から所定時間リモートデスクトップ用デバイス３０３（３００Ｅ）からの入力が無い場合はリモートデスクトップ用デバイス３０３（３００Ｄ、３００Ｅ）のセッションを終了し、ログアウト状態に遷移する。
【０１４６】
ログイン状態時、アプリケーションプログラム１０９は、デバイスサーバ２００から通知ＩＤ６２９として「４」を受信した場合、無視する。
【０１４７】
これにより、通知を受信したクライアントＰＣ１００は通知ＩＤに従った処理、すなわち状態変化または状態の組み合わせに応じた処理を実施する事ができる。
【０１４８】
＜１５．本実施形態におけるシステム全体のシーケンス＞
これまでクライアントＰＣ１００とデバイスサーバ２００の各制御に関して説明してきた。ここで、本実施形態におけるシステム全体のシーケンスを図１１に示す。
【０１４９】
デバイス３００の検知を行いデバイス３００の仮想化後、クライアントＰＣ１００から定義ファイル１１４、トリガ検知アルゴリズム１１５及びトリガ処理条件１１６をトリガ検知用デバイス３０１が接続されている場合、デバイスサーバ２００に送信する（ステップＳ７０１）。
【０１５０】
デバイスサーバ２００は、クライアントＰＣ１００から定義ファイル１１４、トリガ検知アルゴリズム１１５及びトリガ処理条件１１６を受信するとトリガ処理条件１１６と一致する条件を検索し（ステップＳ７０２）、デバイス３００Ａ（人感センサ）及びデバイス３００Ｂ（カードリーダ）のトリガ検知処理を開始する（ステップＳ７０３〜ステップＳ７０４）。
【０１５１】
デバイス３００Ａ（人感センサ）の状態が非検知状態から検知状態へ変化した場合、デバイスサーバ２００へ状態変化の通知を行い（ステップＳ７０５）、トリガ処理条件１１６と一致する条件を検索する（ステップＳ７０６）。このとき、デバイス３００Ａ（人感センサ）が検知状態でデバイス３００Ｂ（カードリーダ）が非検知状態であるので、デバイス制御部２０８がアプリケーションプログラム１０９へ通知ＩＤ（２）を通知する（ステップＳ７０７）。アプリケーションプログラム１０９はログアウト状態で通知ＩＤ（２）を受信したので、これを無視する（ステップＳ７０８）。
【０１５２】
次にデバイス３００Ｂ（カードリーダ）の状態が非検知状態から検知状態へ変化した場合、デバイスサーバ２００へ状態変化の通知を行い（ステップＳ７０９）、トリガ処理条件１１６と一致する条件を検索する（ステップＳ７１０）。デバイス３００Ａ（人感センサ）及びデバイス３００Ｂ（カードリーダ）が共に検知状態であるので、デバイス制御部２０８がアプリケーションプログラム１０９へ通知ＩＤ（４）を通知する（ステップＳ７１１）。
【０１５３】
デバイス３００Ｂ（カードリーダ）のセッションを開始し（ステップＳ７１２）、デバイス３００Ｂ（カードリーダ）よりカードＩＤを取得する（ステップＳ７１３）。カードＩＤ取得後にデバイス３００Ｂ（カードリーダ）のセッションを停止する（ステップＳ７１４）。
【０１５４】
次に、デバイス３００Ｃ（Ｗｅｂカメラ）のセッションを開始し（ステップＳ７１５）、デバイス３００Ｃ（Ｗｅｂカメラ）より、顔画像を取得する（ステップＳ７１６）。顔画像取得後にデバイス３００Ｃ（Ｗｅｂカメラ）のセッションを停止する（ステップＳ７１７）。
【０１５５】
そして、取得したカードＩＤ及び顔画像を用いてユーザ認証を実行する（ステップＳ７１８）。
【０１５６】
ユーザ認証に成功後、リモートデスクトップ用デバイス３０３（デバイス３００Ｄ、デバイス３００Ｅ）のセッションを開始し、ログイン状態に遷移する（ステップＳ７１９）。ログイン状態に遷移後、リモートデスクトップ用デバイス３０３（３００Ｄ、３００Ｅ）を介してクライアントＰＣ１００の遠隔操作を提供する（ステップＳ７２０）。
【０１５７】
デバイスサーバ２００が、デバイス３００Ｂ（カードリーダ）の状態変化を検知すると（ステップＳ７２１）、トリガ処理条件１１６と一致する条件を検索し（ステップＳ７２）、クライアントＰＣ１００に対して通知ＩＤ「２」を通知する（ステップＳ７２３）。リモートデスクトップ用デバイス３０３（デバイス３００Ｄ、デバイス３００Ｅ）のセッションを停止し、ログアウト状態へ遷移する（ステップＳ７２４）。
【０１５８】
上述のように、本発明の実施形態では、デバイスサーバ２００に接続された複数のデバイスの状態変化の組み合わせを判断し、複数のデバイスの状態変化の組み合わせに応じた処理内容を決定することができる。
【０１５９】
そして、組み合わせに応じた処理内容をクライアントＰＣ１００の制御を必要とする場合にのみ通知することで、ネットワーク上の不要なトラフィックを低減することができる。
【０１６０】
また、複数のデバイスの組み合わせによっては、デバイスサーバ２００はクライアントＰＣ１００に対してデバイスの状態変化を通知するだけではなく、各デバイスのデバイス監視処理そのものの開始または停止を制御することができる。これにより、例えば１台目のデバイスの状態変化を検知後、２台目のデバイス監視処理を開始することができる。
【０１６１】
以上、本発明について実施形態に基づいて説明したが、本発明は、これらの実施形態に限定されるものではなく、この発明の要旨を逸脱しない範囲の様々な形態も本発明に含まれる。
【０１６２】
上記では、デバイスサーバ２００に定義ファイル２０９とトリガ検知アルゴリズム２１０、およびトリガ処理条件２１１を記憶（インストール）する場合、クライアントＰＣ１００から受信した定義ファイル１１４とトリガ検知アルゴリズム１１５、およびトリガ処理条件１１６を記憶すると説明したが、ＵＳＢ  Ｉ／Ｆ２２０を介して接続された可搬型記憶媒体から定義ファイル１１４、トリガ検知アルゴリズム１１５、およびトリガ処理条件１１６を取得し、デバイス制御部２０８に記憶してもよい。あるいは、システム全体を管理する管理サーバなどを別途設置し、この管理サーバからネットワークを介して定義ファイル１１４、トリガ検知アルゴリズム１１５、およびトリガ処理条件１１６を取得し、デバイス制御部２０８に記憶してもよい。
【０１６３】
また、デバイスサーバ２００は、以前、接続されたデバイスと同一機種のデバイス３００がデバイスサーバ２００に接続され、すでに、デバイスサーバ２００にその機種に対応する定義ファイル２０９とトリガ検知アルゴリズム２１０、およびトリガ処理条件２１１を記憶（インストール）している場合、クライアントＰＣ１００から受信した定義ファイル１１４、トリガ検知アルゴリズム１１５、およびトリガ処理条件１１６を記憶しなくてもよい。さらに、デバイスサーバ２００は、クライアントＰＣ１００に対して、定義ファイル１１４、トリガ検知アルゴリズム１１５、およびトリガ処理条件１１６が送信不要である旨を通知してもよい。
【０１６４】
また、本発明の目的は、上述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）が記憶媒体に格納されたプログラムコードを読み出して処理を実行することによっても達成することができる。
【０１６５】
この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶したコンピュータで読み取り可能な記憶媒体は本発明を構成することになる。
【０１６６】
また、プログラムコードの指示に基づき、コンピュータ上で稼働しているＯＳ（オペレーティングシステム）等が実際の処理の一部または全部を行い、その処理によって上述した実施形態の機能が実現されるように構成してもよい。
【０１６７】
さらに記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれたあと、このプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵ等が実際の処理の一部または全部を実行し、その処理に応じて上述した実施形態が実現される場合も含んでいる。
【０１６８】
なお、プログラムコードを供給するため、例えば、フロッピー（登録商標）ディスク、ハードディスク、光磁気ディスク、ＣＤやＤＶＤに代表される光ディスク、磁気テープ、不揮発性のメモリカード、ＲＯＭ等の記憶媒体を用いることができる。または、プログラムコードは、ネットワークを介してダウンロードしてもよい。
【符号の説明】
【０１６９】
１００：クライアントＰＣ
１０１：ＣＰＵ
１０２：入力部
１０３：表示部
１０４：メモリ
１０５：通信部
１０６：記憶部
１０７：内部バス
１０８：ＯＳ
１０９：アプリケーションプログラム
１１０：常駐モジュール
１１１：デバイスドライバ
１１２：仮想化制御部
１１３：通信制御部
１１４：定義ファイル
１１５：トリガ検知アルゴリズム
１１６：トリガ処理条件
２００：デバイスサーバ
２０１：ＣＰＵ
２０２：メモリ
２０３：通信部
２０４：内部バス
２０５：記憶部
２０６：通信制御部
２０７：仮想化通信部
２０８：デバイス制御部
２０９：定義ファイル
２１０：トリガ検知アルゴリズム
２１１：トリガ処理条件
２１２：デバイス情報
２１３：監視制御部
２２０：ＵＳＢ  Ｉ／Ｆ（ＵＳＢインターフェース）
３００：デバイス
トリガ検知用デバイス：３０１
認証用デバイス：３０２
リモートデスクトップ用デバイス：３０３
４００：接続ケーブル
５００：ネットワーク
【図１】
0006482272.tif 000002
【図２】
0006482272.tif 000003
【図３】
0006482272.tif 000004
【図４】
0006482272.tif 000005
【図５】
0006482272.tif 000006
【図６】
0006482272.tif 000007
【図７】
0006482272.tif 000008
【図８】
0006482272.tif 000009
【図９】
0006482272.tif 000010
【図１０】
0006482272.tif 000011
【図１１】
0006482272.tif 000012