(57)【要約】【目的】モジュール間でのメッセージの通信を効率的に行なえるようにする。【解決手段】データ処理システム５０は、複数のプロセス５２，５４と、プロセス間のメッセージ通信を管理するメッセージマネージャ８０とを含む。プロセス５２，５４の各々は、１又は複数の入力及び出力を持ち、入力データに所定の処理を行なうモジュール６０，６２，６４，７０，７２，７４と、プロセス内におけるメッセージ通信を管理するメッセージマネージャ６６，７６とを含む。メッセージマネージャ６６，７６は、プロセス内のモジュールから受けたメッセージに含まれる送信元モジュール識別子及びメッセージの型に基づいて送信先モジュールを決定し、そのモジュールがプロセス内か外かに従って、メッセージをプロセス内で配信する処理と、メッセージマネージャ８０に送信する処理とを選択的に行なう。【選択図】      図２
2005292981.tif 000002
【特許請求の範囲】
【請求項１】
複数のモジュールを含むプロセス内において、前記複数のモジュール相互の間のメッセージ通信、及び前記複数のモジュールと当該プロセス外のモジュールとの間のメッセージ通信を管理するためのメッセージ管理装置であって、
各モジュールはいずれもモジュール識別子により一意に特定され、
各モジュール間で通信されるメッセージは、送信元モジュール識別子と、送信先モジュール識別子と、送信されるメッセージの型と、送信されるべきデータとを含み、
前記メッセージ管理装置は、
メッセージを一時格納するためのメッセージキューと、
前記メッセージキューに格納されたメッセージを、前記プロセス内の、当該メッセージの送信先モジュール識別子により特定されるモジュールに配信するためのメッセージ配信手段と、
予め定められたデータの流れに従って、メッセージの送信元モジュール識別子及びメッセージの型に基づいてメッセージの送信先モジュールを決定し、送信先モジュール識別子を出力するためのメッセージフロー管理手段と、
前記プロセス内のモジュールから受けたメッセージに応答して、当該メッセージに含まれる送信元モジュール識別子及びメッセージの型に基づいて、前記メッセージフロー管理手段からメッセージの送信先モジュール識別子を取得して当該メッセージの送信先モジュール識別子に設定し、取得された送信先モジュール識別子により特定されるモジュールが前記プロセス内のモジュールか否かに従って、当該メッセージを前記メッセージキューに格納する処理と、前記プロセス外の所定のメッセージ送信先に送信する処理とを選択的に行なうためのメッセージ振分手段とを含む、メッセージ管理装置。
【請求項２】
前記メッセージ振分手段は、
前記プロセス内のモジュール識別子を記憶するためのモジュール識別子記憶手段と、
前記プロセス内のモジュールから受けたメッセージに応答して、当該メッセージに含まれる送信元モジュール識別子及びメッセージの型に基づいて、前記メッセージフロー管理手段からメッセージの送信先モジュール識別子を取得するための手段と、
前記取得するための手段により取得された送信先モジュール識別子を、前記受けたメッセージの送信先モジュール識別子に設定するための手段と、
前記取得するための手段により取得された送信先モジュール識別子が、前記モジュール識別子記憶手段に記憶されているか否かを判定するための判定手段と、
前記判定手段により、前記取得するための手段により取得された送信先モジュール識別子が前記モジュール識別子記憶手段に記憶されていると判定されたことに応答して、前記受信したメッセージを前記メッセージキューに格納するための手段と、
前記判定手段により、前記取得するための手段により取得された送信先モジュール識別子が前記モジュール識別子記憶手段に記憶されていないと判定されたことに応答して、前記受信したメッセージを前記プロセス外の前記所定のメッセージ送信先に送信するための手段とを含む、請求項１に記載のメッセージ管理装置。
【請求項３】
各々が１又は複数のモジュールを含む複数のプロセスからなるシステムにおいて、モジュール間のメッセージ通信を管理するためのメッセージ管理装置であって、
前記システム内の各モジュールは、いずれもモジュール識別子により一意に特定され、
各モジュール間で通信されるメッセージは、送信元モジュール識別子と、送信先モジュール識別子と、送信されるメッセージの型と、送信されるべきデータとを含み、
前記メッセージ管理装置は、
予め定められたデータの流れに従って、メッセージの送信元モジュール識別子及びメッセージの型に基づいてメッセージの送信先モジュールを決定し、送信先モジュール識別子を出力するためのメッセージフロー管理手段と、
前記プロセス内のモジュールから受けたメッセージに応答して、当該メッセージに含まれる送信元モジュール識別子及びメッセージの型に基づいて、前記メッセージフロー管理手段からメッセージの送信先モジュール識別子を取得し、取得された送信先モジュール識別子により特定されるモジュールを含むプロセスに前記受けたメッセージを配信するためのメッセージ振分手段とを含む、メッセージ管理装置。
【請求項４】
コンピュータにより実行されると、請求項１〜請求項３のいずれかに記載のメッセージ管理装置として当該コンピュータを動作させる、コンピュータプログラム。
【請求項５】
複数のプロセスと、
各プロセス間でのデータの流れを実現するメッセージ通信を管理するためのプロセス間メッセージ管理手段とを含むデータ処理システムであって、
前記複数のプロセスの各々は、
各々が１又は複数の入力及び出力を持ち、入力されるデータに対し所定の処理を行なって出力する複数のモジュールと、
当該プロセス内において、前記複数のモジュール相互の間のメッセージ通信、及び前記複数のモジュールと当該プロセス外のモジュールとの間のメッセージ通信を管理するためのプロセス内メッセージ管理手段とを含み、
各モジュールはいずれもモジュール識別子により一意に特定され、
各モジュール間で通信されるメッセージは、送信元モジュール識別子と、送信先モジュール識別子と、送信されるメッセージの型と、送信されるべきデータとを含み、
前記プロセス内メッセージ管理手段は、
メッセージを一時格納するためのメッセージキューと、
前記メッセージキューに格納されたメッセージを、プロセス内の、当該メッセージの送信先モジュール識別子により特定されるモジュールに配信するためのメッセージ配信手段と、
予め定められたデータの流れに従って、メッセージの送信元モジュール識別子及びメッセージの型に基づいてメッセージの送信先モジュールを決定し、送信先モジュール識別子を出力するための第１のメッセージフロー管理手段と、
プロセス内のモジュールから受けたメッセージに応答して、当該メッセージに含まれる送信元モジュール識別子及びメッセージの型に基づいて、前記第１のメッセージフロー管理手段からメッセージの送信先モジュール識別子を取得して当該メッセージの送信先モジュール識別子に設定し、取得された送信先モジュール識別子により特定されるモジュールが前記プロセス内のモジュールか否かに従って、当該メッセージを前記メッセージキューに格納する処理と、前記プロセス間メッセージ管理手段に送信する処理とを選択的に行なうためのメッセージ振分手段とを含む、システム。
【請求項６】
前記メッセージ振分手段は、
前記プロセス内のモジュール識別子を記憶するためのモジュール識別子記憶手段と、
前記プロセス内のモジュールから受けたメッセージに応答して、当該メッセージに含まれる送信元モジュール識別子及びメッセージの型に基づいて、前記第１のメッセージフロー管理手段からメッセージの送信先モジュール識別子を取得するための手段と、
前記取得するための手段により取得された送信先モジュール識別子を、前記受けたメッセージの送信先モジュール識別子に設定するための手段と、
前記取得するための手段により取得された送信先モジュール識別子が、前記モジュール識別子記憶手段に記憶されているか否かを判定するための判定手段と、
前記判定手段により、前記取得するための手段により取得された送信先モジュール識別子が前記モジュール識別子記憶手段に記憶されていると判定されたことに応答して、前記受信したメッセージを前記メッセージキューに格納するための手段と、
前記判定手段により、前記取得するための手段により取得された送信先モジュール識別子が前記モジュール識別子記憶手段に記憶されていないと判定されたことに応答して、前記受信したメッセージを前記プロセス外の前記所定のメッセージ送信先に送信するための手段とを含む、請求項５に記載のシステム。
【請求項７】
コンピュータにより実行されると、請求項５又は請求項６に記載のデータ処理システムとして当該コンピュータを動作させる、コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、コンピュータ上で動作する機能モジュールの間のメッセージ通信に関し、特に、複数のモジュールで一つのプロセスを構成し、複数のプロセスで一つのタスクを実現するシステムにおいて、モジュール間のメッセージ通信を高速化するシステムに関する。
【背景技術】
【０００２】
実時間の音声認識システム等の構築過程においては、音声認識のための処理の設定を様々に変えて、認識率等の性能を確認したいことがある。そのために例えばオプション値等を変えて同じプログラムを動作させるだけでなく、処理の流れそのものも自由に変更して実験できれば便利である。そのため、それぞれ特有の機能を持つ複数のモジュールを予め準備し、それらモジュールを目的にあわせて適切な形で組合せることができるシステムがあれば好ましい。
【０００３】
さらに、実験結果を早く確認するためには、一つのコンピュータ上だけでなく、複数のコンピュータを互いに結合し、それらコンピュータ上で別々に、互いに連携させながらモジュールを動作させることができれば便利である。
【０００４】
そのための原理的構成として考えられるものを図１に示す。図１に示すシステム２０は、第１のプロセス２２と第２のプロセス２４とを含む。
【０００５】
第１のプロセス２２は、第１のモジュール３０と、第２のモジュール３２と、第３のモジュール３４とを含む。第２のプロセス２４は、第４のモジュール３６と、第５のモジュール３８と、第６のモジュール４０とを含む。
【０００６】
例えば第１のプロセス２２をあるコンピュータ上で実行し、第２のプロセス２４を別のコンピュータで実行することで、全体的な処理速度の向上を図ることができる。もちろん、第１のプロセス２２と第２のプロセス２４とを同一のコンピュータ上で動作させても問題はない。
【０００７】
こうしたシステムを実現するためには、あるモジュールの出力を別のモジュールの入力に与えるため、予め各モジュールの入力と出力とを明確に定義しておかなければならないが、それに加えて各モジュール間及びプロセス間でのデータ（メッセージ）の受け渡しをどのように実現するかを考える必要がある。
【０００８】
例えば同じプロセスに含まれるモジュールであれば、プロセス内のメモリ空間を共有しているため、互いのメッセージ交換は高速に行なえる。しかしプロセス間の通信に要するシステムのオーバヘッドは大きく、プロセス間のメッセージ通信には比較的時間がかかる。
【０００９】
そうした問題を解決するために、あるモジュールの出力先が同じプロセス内か別プロセスかで、それぞれ異なる通信方式で通信するようにモジュールを設計することが考えられる。
【発明の開示】
【発明が解決しようとする課題】
【００１０】
しかし、モジュールの設計を出力先にあわせて変えるのでは、モジュールの組合せが固定されてしまい、モジュール化の当初の目的を達成できない。従って、モジュールが属するプロセスに関わらず、モジュール化の利点を残しながら、モジュール間の通信を効率的に行なうことができるシステムが望まれている。
【００１１】
それゆえに本発明の目的は、自由に組合せたモジュール間でのメッセージの通信を効率的に行なうことが可能なメッセージ管理装置、及びそのようなメッセージ管理装置を備えたデータ処理システムを提供することである。
【課題を解決するための手段】
【００１２】
本発明の第１の局面に係るメッセージ管理装置は、複数のモジュールを含むプロセス内において、複数のモジュール相互の間のメッセージ通信、及び複数のモジュールと当該プロセス外のモジュールとの間のメッセージ通信を管理するためのメッセージ管理装置であって、各モジュールはいずれもモジュール識別子により一意に特定され、各モジュール間で通信されるメッセージは、送信元モジュール識別子と、送信先モジュール識別子と、送信されるメッセージの型と、送信されるべきデータとを含み、メッセージ管理装置は、メッセージを一時格納するためのメッセージキューと、メッセージキューに格納されたメッセージを、プロセス内の、当該メッセージの送信先モジュール識別子により特定されるモジュールに配信するためのメッセージ配信手段と、予め定められたデータの流れに従って、メッセージの送信元モジュール識別子及びメッセージの型に基づいてメッセージの送信先モジュールを決定し、送信先モジュール識別子を出力するためのメッセージフロー管理手段と、プロセス内のモジュールから受けたメッセージに応答して、当該メッセージに含まれる送信元モジュール識別子及びメッセージの型に基づいて、メッセージフロー管理手段からメッセージの送信先モジュール識別子を取得して当該メッセージの送信先モジュール識別子に設定し、取得された送信先モジュール識別子により特定されるモジュールがプロセス内のモジュールか否かに従って、当該メッセージをメッセージキューに格納する処理と、プロセス外の所定のメッセージ送信先に送信する処理とを選択的に行なうためのメッセージ振分手段とを含む。
【００１３】
好ましくは、メッセージ振分手段は、プロセス内のモジュール識別子を記憶するためのモジュール識別子記憶手段と、プロセス内のモジュールから受けたメッセージに応答して、当該メッセージに含まれる送信元モジュール識別子及びメッセージの型に基づいて、メッセージフロー管理手段からメッセージの送信先モジュール識別子を取得するための手段と、取得するための手段により取得された送信先モジュール識別子を、受けたメッセージの送信先モジュール識別子に設定するための手段と、取得するための手段により取得された送信先モジュール識別子が、モジュール識別子記憶手段に記憶されているか否かを判定するための判定手段と、判定手段により、取得するための手段により取得された送信先モジュール識別子がモジュール識別子記憶手段に記憶されていると判定されたことに応答して、受信したメッセージをメッセージキューに格納するための手段と、判定手段により、取得するための手段により取得された送信先モジュール識別子がモジュール識別子記憶手段に記憶されていないと判定されたことに応答して、受信したメッセージをプロセス外の所定のメッセージ送信先に送信するための手段とを含む。
【００１４】
本発明の第２の局面に係るメッセージ管理装置は、各々が１又は複数のモジュールを含む複数のプロセスからなるシステムにおいて、モジュール間のメッセージ通信を管理するためのメッセージ管理装置であって、システム内の各モジュールは、いずれもモジュール識別子により一意に特定され、各モジュール間で通信されるメッセージは、送信元モジュール識別子と、送信先モジュール識別子と、送信されるメッセージの型と、送信されるべきデータとを含み、メッセージ管理装置は、予め定められたデータの流れに従って、メッセージの送信元モジュール識別子及びメッセージの型に基づいてメッセージの送信先モジュールを決定し、送信先モジュール識別子を出力するためのメッセージフロー管理手段と、プロセス内のモジュールから受けたメッセージに応答して、当該メッセージに含まれる送信元モジュール識別子及びメッセージの型に基づいて、メッセージフロー管理手段からメッセージの送信先モジュール識別子を取得し、取得された送信先モジュール識別子により特定されるモジュールを含むプロセスに受けたメッセージを配信するためのメッセージ振分手段とを含む。
【００１５】
本発明の第３の局面に係るコンピュータプログラムは、コンピュータにより実行されると、上記したいずれかのメッセージ管理装置として当該コンピュータを動作させる。
【００１６】
本発明の第４の局面に係るデータ処理システムは、複数のプロセスと、各モジュール間でのデータの流れを実現するメッセージ通信を管理するためのプロセス間メッセージ管理手段とを含むデータ処理システムである。複数のプロセスの各々は、各々が１又は複数の入力及び出力を持ち、入力されるデータに対し所定の処理を行なって出力する複数のモジュールと、当該プロセス内において、複数のモジュール相互の間のメッセージ通信、及び複数のモジュールと当該プロセス外のモジュールとの間のメッセージ通信を管理するためのプロセス内メッセージ管理手段とを含む。各モジュールはいずれもモジュール識別子により一意に特定される。各モジュール間で通信されるメッセージは、送信元モジュール識別子と、送信先モジュール識別子と、送信されるメッセージの型と、送信されるべきデータとを含む。プロセス内メッセージ管理手段は、メッセージを一時格納するためのメッセージキューと、メッセージキューに格納されたメッセージを、プロセス内の、当該メッセージの送信先モジュール識別子により特定されるモジュールに配信するためのメッセージ配信手段と、予め定められたデータの流れに従って、メッセージの送信元モジュール識別子及びメッセージの型に基づいてメッセージの送信先モジュールを決定し、送信先モジュール識別子を出力するための第１のメッセージフロー管理手段と、プロセス内のモジュールから受けたメッセージに応答して、当該メッセージに含まれる送信元モジュール識別子及びメッセージの型に基づいて、第１のメッセージフロー管理手段からメッセージの送信先モジュール識別子を取得して当該メッセージの送信先モジュール識別子に設定し、取得された送信先モジュール識別子により特定されるモジュールがプロセス内のモジュールか否かに従って、当該メッセージをメッセージキューに格納する処理と、プロセス間メッセージ管理手段に送信する処理とを選択的に行なうためのメッセージ振分手段とを含む。
【００１７】
好ましくは、メッセージ振分手段は、プロセス内のモジュール識別子を記憶するためのモジュール識別子記憶手段と、プロセス内のモジュールから受けたメッセージに応答して、当該メッセージに含まれる送信元モジュール識別子及びメッセージの型に基づいて、第１のメッセージフロー管理手段からメッセージの送信先モジュール識別子を取得するための手段と、取得するための手段により取得された送信先モジュール識別子を、受けたメッセージの送信先モジュール識別子に設定するための手段と、取得するための手段により取得された送信先モジュール識別子が、モジュール識別子記憶手段に記憶されているか否かを判定するための判定手段と、判定手段により、取得するための手段により取得された送信先モジュール識別子がモジュール識別子記憶手段に記憶されていると判定されたことに応答して、受信したメッセージをメッセージキューに格納するための手段と、判定手段により、取得するための手段により取得された送信先モジュール識別子がモジュール識別子記憶手段に記憶されていないと判定されたことに応答して、受信したメッセージをプロセス外の所定のメッセージ送信先に送信するための手段とを含む。
【００１８】
本発明の第５の局面に係るコンピュータプログラムは、コンピュータにより実行されると、上記したいずれかのデータ処理システムとして当該コンピュータを動作させる。
【発明を実施するための最良の形態】
【００１９】
以下、本発明の一実施の形態に係るシステムについて説明する。本システムは、複数のモジュールを組合せることにより、音声認識を行なうためのシステムである。
【００２０】
音声のような時系列データを処理する場合、発話単位で処理を行なうと、すなわち、話し終わってからまとめて処理を行なうと、少なくとも発話時間分のタイムラグが発生する。その結果、リアルタイムに処理することができない。
【００２１】
そこで本システムでは、音声データを１０ｍｓｅｃ程度の時間間隔で、所定の長さの単位（これをフレームと言う）に分割して、フレーム単位で各モジュールの間でデータを受け渡しながら処理を実行する。フレーム単位のデータは、あるモジュールに入力され、そのモジュールで当該フレームに対する処理を行なった後に、次のモジュールに渡される。このフレーム単位のデータを「イベントメッセージ（以後イベントと略す）」という。
【００２２】
イベントには、データの種類に応じていくつかの型がある。例えば、生の音声データの場合はＷＡＶＥ型、特徴パラメータの場合はＦＥＡＴＵＲＥ型等、である。従ってモジュールの入出力においては、そこに入力されるデータ、又はそこから入力されるデータがどのような型かを明確に定義しておく必要がある。
【００２３】
そして、システムを組む場合には、目的に従ってモジュールを選択し、どのモジュールのどの出力をどのモジュールのどの入力に与えるかを、データの型を考慮しながら決定する必要がある。このように、モジュール間のデータの流れを予め記述したものを本明細書ではフロー定義と呼び、典型的にはコンピュータ読取可能な形式で記憶装置に格納される。
【００２４】
図２に本システム５０のブロック図を示す。この本システム５０は、図１に示すシステム２０と同様、第１のプロセス５２及び第２のプロセス５４を含む。本システム５０はさらに、第１のプロセス５２及び第２のプロセス５４をそれぞれ構成するモジュール間のデータの流れを定義するフロー定義ファイル５８と、第１のプロセス５２及び第２のプロセス５４、並びに本システム５０の外部とに接続され、第１のプロセス５２及び第２のプロセス５４内のモジュール間、及びこれらモジュールと本システム５０の外部との間のイベントの流れをフロー定義ファイル５８の記述に従って制御するためのモジュールマネージャ５６とを含む。
【００２５】
第１のプロセス５２は、第１のモジュール６０と、第２のモジュール６２と、第３のモジュール６４と、これら３つのモジュール６０，６２及び６４の間、ならびにこれらモジュールとモジュールマネージャ５６との間のイベントの流れをフロー定義ファイル５８の記述に従って制御し、プロセス内のメッセージ通信を管理するためのメッセージマネージャ６６とを含む。
【００２６】
第２のプロセス５４も第１のプロセス５２と同様、第４のモジュール７０と、第５のモジュール７２と、第６のモジュール７４と、これら３つのモジュール７０，７２及び７４の間、ならびにこれらモジュールとモジュールマネージャ５６との間のイベントの流れをフロー定義ファイル５８の記述に従って制御するためのメッセージマネージャ７６とを含む。
【００２７】
モジュール６０〜７４は、いずれも入力と出力とを一個以上有する。各モジュールは、入力されたデータをそのモジュール特有の機能に従って内部で処理し、結果を出力する機能を持つ。例えば、音声の特徴抽出モジュールは、音声データを入力とし、その特徴パラメータを出力とする。
【００２８】
モジュールマネージャ５６は、本システム５０の外部から与えられる入力を受けるための入力モジュール８２と、本システム５０からの出力を外部に与えるための出力モジュール８４と、入力モジュール８２、出力モジュール８４、メッセージマネージャ６６及びメッセージマネージャ７６に接続され、フロー定義ファイル５８の記述に基づいて、各プロセス５２及び５４、並びに入力モジュール８２及び出力モジュール８４の間のイベントの流れを制御するためのメッセージマネージャ８０とを含む。すなわちメッセージマネージャ８０は、プロセス間のメッセージ通信を管理するものということができる。
【００２９】
図３に、モジュール間で通信されるイベント１２０の構成を示す。図３を参照して、イベント１２０は、送信元モジュール識別番号（以下「ＩＤ」と呼ぶ。）と、送信先モジュールＩＤと、イベントの型と、データの内容とを含む。イベントの型とは、イベントに含まれるデータの型のことであり、前述したＷＡＶＥ型、ＦＥＡＴＵＲＥ型などがその一例である。
【００３０】
図４に、フロー定義ファイル５８内に記述される内容を表形式で示す。図４を参照して、フロー定義ファイル５８内には、「ｐｒｏｃｅｓｓ」、「ａｒｃ」及び「ｆｉｌｅ」という三つの項目が定義されている。
【００３１】
ｐｒｏｃｅｓｓは、どのプロセスにどのモジュールが含まれているかを示す情報である。ａｒｃ（以下「アーク」と呼ぶ。）は、どのモジュールからどのモジュールにどのようなイベントが送られるかを示す情報である。この中にはイベントの型も含まれる。ｆｉｌｅは、外部からどのようなイベントがシステム５０に送られ、結果がどのようなイベントとして外部に出力されるかを示す。
【００３２】
図５にメッセージマネージャ８０の構成をブロック図形式で示す。図５を参照して、メッセージマネージャ８０は、メッセージマネージャ８０に入力されるイベントの送信先モジュールを決定するため、イベントの送信元モジュールＩＤとイベントの型とをキーとして、送信先モジュールのモジュールＩＤを検索できるような構成を有するフロー管理テーブル９２と、どのプロセスにどのモジュールが含まれているかを検索できる構成を持つモジュール管理テーブル９４と、フロー定義ファイル５８の記述に基づいて、フロー管理テーブル９２及びモジュール管理テーブル９４を作成するためのテーブル作成処理部９６とを含む。
【００３３】
メッセージマネージャ８０はさらに、第１のプロセス５２、第２のプロセス５４、入力モジュール８２及び出力モジュール８４に接続され、第１のプロセス５２、第２のプロセス５４及び入力モジュール８２から与えられるイベントを、フロー管理テーブル９２及びモジュール管理テーブル９４の記述に基づいて第１のプロセス５２、第２のプロセス５４、及び出力モジュール８４のいずれかに出力するためのメッセージ振分処理部９０を含む。
【００３４】
図６にフロー管理テーブル９２の構成の一例を、図７にモジュール管理テーブル９４の構成の一例を、それぞれ示す。図６を参照して、フロー管理テーブル９２は複数のエントリを含み、各エントリは、送信元モジュールＩＤと、イベントの型と、送信先モジュールＩＤとを含む。これらは、図４に示すフロー定義ファイル５８のアークの記述に相当する。受信したイベントに含まれる送信元モジュールＩＤ及びイベントの型（図３を参照されたい。）をキーにフロー管理テーブル９２を検索することにより、当該イベントをどのモジュールに送信すべきかが、送信先モジュールＩＤの欄を見ることで判定できる。なお図６に示すフロー管理テーブル９２は、図２に示す構成に必要な情報の一部のみを示す。
【００３５】
図７を参照して、モジュール管理テーブル９４も通常は複数のエントリを含む。各エントリはモジュールに対応するものであり、そのモジュールが属するプロセス名と、そのモジュールのモジュールＩＤとを含む。図７に示すモジュール管理テーブル９４も、図２に示す本システム５０の構成に必要な情報の一部のみを示す。
【００３６】
次に図２の第１のプロセス５２及び第２のプロセス５４を構成する各部について説明する。各モジュールの構成については本発明とは直接関係ないので、それらについての詳細な説明は省略する。またメッセージマネージャ６６とメッセージマネージャ７６とは同じ構成を有しているので、以下、メッセージマネージャ６６について説明する。
【００３７】
図８を参照して、メッセージマネージャ６６は、メッセージマネージャ６６に入力されるイベントの送信先モジュールを決定するため、イベントの送信元モジュールＩＤとイベントの型とをキーとして、送信先モジュールのモジュールＩＤを検索できるような構成を有する、図５に示すものと同様形式のフロー管理テーブル１０２と、このメッセージマネージャ６６が管理するプロセス（本実施の形態では第１のプロセス５２）にどのモジュールが含まれているかを記述したモジュール管理テーブル１００と、図５に示すフロー管理テーブル９２を複写してフロー管理テーブル１０２を作成するためのフロー管理テーブル作成処理部１０６と、フロー定義ファイル５８の記述に基づき、第１のプロセス５２に含まれるモジュールＩＤを含むモジュール管理テーブル１００を作成するためのモジュール管理テーブル作成処理部１０４とを含む。
【００３８】
メッセージマネージャ６６はさらに、第１〜第３のモジュール６０，６２及び６４とモジュールマネージャ５６とからイベントを受取り、フロー管理テーブル１０２とモジュール管理テーブル１００とを参照して、当該イベントを第１〜第３のモジュール６０，６２及び６４、並びにモジュールマネージャ５６のいずれに送信すべきかを判定し判定結果に従って当該イベントを振り分けるためのメッセージ振分処理部１０８と、メッセージ振分処理部１０８によってメッセージ振分処理部１０８の管理するプロセス（本実施の形態では第１のプロセス５２）に送信するよう判定されたイベントを一時的にＦＩＦＯ形式で格納するためのイベントキュー１１０と、イベントキュー１１０からイベントを一つずつ読出し、当該イベントに含まれる送信先モジュールＩＤに基づいて、当該イベントを第１〜第３のモジュール６０、６２及び６４のいずれかに配信するためのプロセス内メッセージ配信部１１２とを含む。
【００３９】
図９にモジュール管理テーブル１００の形式を模式的に示す。メッセージマネージャ６６が管理する第１のプロセス５２の場合、そこに含まれるモジュールは第１のモジュール６０、第２のモジュール６２、及び第３のモジュール６４である。従ってこの場合のモジュール管理テーブル１００の内容は図９に示した通りとなる。
【００４０】
実際にはメッセージ振分処理部１０８は、後述するようにコンピュータハードウェア上で実行されるプログラムにより実現される。本実施の形態の場合、メッセージ振分処理部１０８が受信したイベントの送信元がプロセス内のものか、プロセス外のものか、によって異なる処理を行なう。それぞれを実現するコンピュータプログラムの制御構造について図１０及び図１１を参照して説明する。
【００４１】
図１０は、プロセス内のモジュールからイベントを受信した場合に、図８に示すメッセージマネージャ６６のメッセージ振分処理部１０８が実行する処理プログラムのフローチャートである。図５に示すメッセージマネージャ８０のメッセージ振分処理部９０についても同様である。図１０を参照して、プロセス内モジュールからイベントを受信すると、ステップ１３０で、当該イベントの送信元モジュールＩＤとイベント型とをキーにフロー管理テーブル１０２を検索し、該当する全てのアークを取出す。
【００４２】
続いて、ステップ１３０の処理の結果見つかった全てのアークについて、以下の処理を行なう。すなわち、ステップ１３２で、当該アークの送信先モジュールＩＤが当該プロセス内のモジュールのものか否かを判定する。送信先モジュールＩＤが当該プロセス内のモジュールのものであればステップ１３４に進み、さもなければステップ１４０に進む。
【００４３】
ステップ１３４では、イベントの送信先に、検索されたアークに含まれる送信先モジュールＩＤを設定する。送信先モジュールが同じプロセス内なので、ステップ１３６でこのイベントをイベントキュー１１０に出力する。
【００４４】
一方ステップ１４０では、イベントの送信先に、同じく検索されたアークに含まれる送信先モジュールＩＤを設定する。送信先モジュールがプロセス外に存在しているので、ステップ１４２でこのイベントをモジュールマネージャ５６に出力する。
【００４５】
ステップ１３４、１３６、１４０及び１４２の処理を、ステップ１３０で見出された全てのアークに対して行なうことにより、一つのイベントに対し、見つかった数だけのイベントが生成され、送信先モジュールの所在に応じて、それぞれイベントキュー１１０又はモジュールマネージャ５６に送信されることになる。
【００４６】
図１１は、プロセス外からイベントを受信した場合に、図５に示すメッセージマネージャ８０のメッセージ振分処理部９０が実行する処理プログラムのフローチャートである。図１１を参照して、プロセス外からイベントを受信すると、ステップ１６０で、モジュール管理テーブル９４中でイベント中の送信先モジュールＩＤを検索し、当該送信先モジュールを含むプロセスを決定する。ステップ１６２では、決定されたプロセスが自分自身が否かを判定する。もし自分自身が送信先であればステップ１６４で自己のイベントキューに当該イベントを格納する。もし自分自身が送信先でなければ、ステップ１６６で送信先モジュールを含むプロセスに当該イベントを送信する。
【００４７】
一方、図８に示すメッセージマネージャ６６がプロセス外からイベントを受信した場合、当該イベントの送信先については、プロセス内であることが保証されている。従って当該イベントを図８に示すメッセージ振分処理部１０８に格納する。
【００４８】
−動作−
図２〜図１１を参照して、以上のような構成を有する本システム５０は以下のように動作する。まず、図２を参照して、最初にシステムの構成が定められ、その構成に従ってフロー定義ファイル５８が記述され所定の記憶装置に格納される。図５に示すテーブル作成処理部９６がフロー定義ファイル５８に基づいて図５に示すフロー管理テーブル９２及びモジュール管理テーブル９４を作成する。各プロセスでは、図８に示すフロー管理テーブル作成処理部１０６及びモジュール管理テーブル作成処理部１０４が、それぞれフロー管理テーブル９２及びフロー定義ファイル５８に基づいてフロー管理テーブル１０２及びモジュール管理テーブル１００を作成する。
【００４９】
動作において、入力モジュール８２に入力データが与えられる。入力データは本システムでは通常は音声データファイルである。このシステムでは、ファイルはプロセスと同様に扱われるので、入力ファイルから作成されたフレームデータがイベントとして入力モジュール８２に与えられる。本例の場合、図１に示すようにモジュールを組合せるものとすれば、入力モジュール８２に与えられるイベントの送信先モジュールＩＤは第１のモジュールに対応するものであり、イベントの型は「ＷＡＶＥ」となる。送信元モジュールＩＤは入力ファイルに相当するものになる。このイベントは入力モジュール８２からメッセージマネージャ８０に与えられる。
【００５０】
図５を参照して、メッセージマネージャ８０のメッセージ振分処理部９０は、フロー管理テーブル９２及びモジュール管理テーブル９４を参照して、当該イベントの送信先のモジュールを含むプロセスを決定し（図１１のステップ１６０）、イベントを当該プロセスに送信する（ステップ１６４又は１６６）。本例では、例えば第１のプロセス５２にこのイベントが送信されるものとする。
【００５１】
図８を参照して、メッセージマネージャ６６のメッセージ振分処理部１０８は、このイベントがプロセス外からのものなので、当該イベントをイベントキュー１１０に格納する。プロセス内メッセージ配信部１１２が、イベントキュー１１０からイベントを読出し、送信先モジュールＩＤにより指定されるモジュールにイベントを配信する。
【００５２】
このイベントを受けたモジュールは、結果のイベントをメッセージマネージャ６６のメッセージ振分処理部１０８に返信してくる。このとき、イベントの送信元モジュールＩＤ及びイベント型には、それぞれ当該モジュールにより値が設定されている。送信先モジュールＩＤについては設定されていない。
【００５３】
メッセージ振分処理部１０８は、受けたイベントの送信元モジュールＩＤとイベント型とをキーにフロー管理テーブル１０２を検索し（図１０のステップ１３０）、一致するアークを得る。メッセージ振分処理部１０８はさらに、モジュール管理テーブル１００を参照して、当該送信先モジュールが第１のプロセス５２内か否かを判定する（ステップ１３２）。第１のプロセス５２内であれば（すなわち当該モジュールＩＤがモジュール管理テーブル１００内に存在すれば）、当該アークに含まれている送信先モジュールＩＤをイベントの送信先モジュールＩＤに設定し（ステップ１３４）、メッセージ振分処理部１０８はこのイベントをイベントキュー１１０に書出す（ステップ１３６）。
【００５４】
送信先が第１のプロセス５２外であれば、アークに含まれている送信先モジュールＩＤをイベントの送信先モジュールＩＤに設定し（ステップ１４０）、モジュールマネージャ５６にこのイベントを送信する（ステップ１４２）。
【００５５】
モジュールマネージャ５６のメッセージマネージャ８０では、最初の入力データを受けた場合と同様、フロー管理テーブル９２とモジュール管理テーブル９４とに基づいてこのイベントの送信先プロセスを決定し、そのプロセスのメッセージマネージャにイベントを送信する。フロー管理テーブル９２により、システム外に出力することが示されている場合、メッセージ振分処理部９０は出力モジュール８４にイベントを出力する。出力モジュール８４は、このイベントをさらに外部に出力する。
【００５６】
以下、メッセージマネージャ８０のメッセージ振分処理部９０、並びに第１のプロセス５２及び第２のプロセス５４のメッセージマネージャ６６及び７６は、上記したのと同様の処理を繰返す。その結果、外部から次々に入力モジュール８２に入力されたデータは、それぞれ所定のモジュールによって処理され、結果のイベントが出力モジュール８４から出力される。
【００５７】
上に説明したシステム５０では、各モジュールは自己の処理した結果のイベントをどのモジュールに送信するかについては全く意識する必要がない。どのプロセスにおいても、モジュールではなくメッセージマネージャが送信先モジュールを決定し、さらに送信先モジュールが同一プロセス内であればイベントキューを用いて当該イベントを配信し、プロセス外であれば、モジュールマネージャに当該イベントを配信する。イベントの配信を受けたモジュールマネージャが、送信先モジュールＩＤに基づいて送信先のプロセスを決定し、送信する。
【００５８】
従って、モジュールの独立性が極めて高くなり、システム構成に従ってモジュールを変更したりする必要はない。さらに、プロセス間通信については、どのプロセスも送信先のプロセスを意識せず、すべてモジュールマネージャに送信するだけでよい。従って、各プロセス間通信のためのオーバヘッドが少なくなる。
【００５９】
従って、このようなプロセス間通信の仕組みを用いることで、イベントを効率よく配信することが可能となり、さらに各モジュールの独立性を高め、自由にシステムを組むことが可能になる。また、データはプロセス間を転送されながら各モジュールで処理され、かつ各プロセスではイベントキューによって処理時間の調整を行ないながら正しい順序でデータ処理を行なうことができる。その結果、リアルタイムで、音声認識などの多量のデータ処理を行なうことができる。またモジュールの組合せが自由にできるので、異なる構成のシステムの性能実験などを簡単に、かつ短い時間に行なうことが可能になる。
［コンピュータによる実現］
この実施の形態のシステムは、コンピュータハードウェアと、そのコンピュータハードウェアにより実行されるプログラムと、コンピュータハードウェアに格納されるデータとにより実現される。図１２はこのコンピュータシステム３３０の外観を示し、図１３はコンピュータシステム３３０の内部構成を示す。なお、前述したとおりこのシステムは、これら複数のコンピュータをネットワークなどで結合したものによって実現することもできる。
【００６０】
図１２を参照して、このコンピュータシステム３３０は、ＦＤ（フレキシブルディスク）ドライブ３５２及びＣＤ−ＲＯＭ（コンパクトディスク読出専用メモリ）ドライブ３５０を有するコンピュータ３４０と、キーボード３４６と、マウス３４８と、モニタ３４２とを含む。
【００６１】
図１３を参照して、コンピュータ３４０は、ＦＤドライブ３５２及びＣＤ−ＲＯＭドライブ３５０に加えて、ＣＰＵ（中央処理装置）３５６と、ＣＰＵ３５６、ＦＤドライブ３５２及びＣＤ−ＲＯＭドライブ３５０に接続されたバス３６６と、ブートアッププログラム等を記憶する読出専用メモリ（ＲＯＭ）３５８と、バス３６６に接続され、プログラム命令、システムプログラム、及び作業データ等を記憶するランダムアクセスメモリ（ＲＡＭ）３６０とを含む。コンピュータシステム３３０はさらに、プリンタ３４４を含んでいる。
【００６２】
コンピュータ３４０はさらにローカルエリアネットワーク（ＬＡＮ）への接続を提供するネットワークアダプタボード３６８を含む。
【００６３】
コンピュータシステム３３０にこの実施の形態に係る本システム５０（又はその一部の第１のプロセス５２、第２のプロセス５４、モジュールマネージャ５６など）としての動作を行なわせるためのコンピュータプログラムは、ＣＤ−ＲＯＭドライブ３５０又はＦＤドライブ３５２に挿入されるＣＤ−ＲＯＭ３６２又はＦＤ３６４に記憶され、さらにハードディスク３５４に転送される。又は、プログラムはネットワークを通じてコンピュータ３４０に送信されハードディスク３５４に記憶されてもよい。プログラムは実行の際にＲＡＭ３６０にロードされる。ＣＤ−ＲＯＭ３６２から、ＦＤ３６４から、又はネットワークを介して、直接にＲＡＭ３６０にプログラムをロードしてもよい。
【００６４】
このプログラムは、コンピュータ３４０にこの実施の形態に係るシステム５０に含まれる各プロセス５２、５４、モジュールマネージャ５６、各プロセス中で実行されるモジュール等としての動作を行なわせる複数の命令を含む。このために必要な基本的機能のいくつかはコンピュータ３４０上で動作するオペレーティングシステム（ＯＳ）又はサードパーティのプログラム、もしくはコンピュータ３４０にインストールされる各種ツールキットのモジュールにより提供される。従って、このプログラムはこの実施の形態のシステムを実現するのに必要な機能全てを必ずしも含まなくてよい。このプログラムは、命令のうち、所望の結果が得られるように制御されたやり方で適切な機能又は「ツール」を呼出すことにより、上記した換言規則選別装置を実行する命令のみを含んでいればよい。コンピュータシステム３３０の動作は周知であるので、ここでは繰返さない。
【００６５】
上記した実施の形態では、モジュール管理テーブルについては各プロセスに用意した。しかし本発明はそのような実施の形態には限定されず、モジュール管理テーブルをシステム内の全てのモジュールで同じものを使用するようにしてもよい。また、上記実施の形態では、モジュール識別子はシステム内で一意であるものとした。しかし本発明はそのような実施の形態には限定されず、プロセス内でのみモジュール識別子が一意になるようにしてもよい。ただしその場合、イベント通信ではプロセス名とモジュール識別子とによって送信元及び送信先を特定する必要がある。
【００６６】
今回開示された実施の形態は単に例示であって、本発明が上記した実施の形態のみに制限されるわけではない。本発明の範囲は、発明の詳細な説明の記載を参酌した上で、特許請求の範囲の各請求項によって示され、そこに記載された文言と均等の意味及び範囲内でのすべての変更を含む。
【図面の簡単な説明】
【００６７】
【図１】各々複数のモジュールを含む複数のプロセスからなるシステムの構成例を示す図である。
【図２】本発明の一実施の形態に係るシステム５０のブロック図である。
【図３】イベント１２０の構成を示す図である。
【図４】フロー定義ファイル５８の構成を示す図である。
【図５】図２に示すモジュールマネージャ５６のメッセージマネージャ８０のブロック図である。
【図６】フロー管理テーブル９２の構成を示す図である。
【図７】モジュール管理テーブル９４の構成を示す図である。
【図８】図２に示す第１のプロセス５２のメッセージマネージャ６６のブロック図である。
【図９】モジュール管理テーブル１００の構成を示す図である。
【図１０】プロセス内イベントを受信したときの、各メッセージ振分処理部で実行される処理を示すフローチャートである。
【図１１】モジュールマネージャ５６のメッセージ振分処理部９０がプロセス外イベントを受信したときに実行する処理を示すフローチャートである。
【図１２】本発明の一実施の形態に係るシステム５０又はその一部のプロセスを実現するためのコンピュータシステムの外観図である。
【図１３】図１２に示すコンピュータシステムの内部構成を示すブロック図である。
【符号の説明】
【００６８】
５０  システム、５２，５４  プロセス、５６  モジュールマネージャ、５８  フロー定義ファイル、６０，６２，６４，７０，７２，７４  モジュール、６６，７６，８０  メッセージマネージャ、８２  入力モジュール、８４  出力モジュール、９０，１０８  メッセージ振分処理部、９２，１０２  フロー管理テーブル、９４，１００  モジュール管理テーブル、９６  テーブル作成処理部、１０４  モジュール管理テーブル作成処理部、１０６  フロー管理テーブル作成処理部、１１０  イベントキュー、１１２  プロセス内メッセージ配信部
【図１】
2005292981.tif 000003
【図２】
2005292981.tif 000004
【図３】
2005292981.tif 000005
【図４】
2005292981.tif 000006
【図５】
2005292981.tif 000007
【図６】
2005292981.tif 000008
【図７】
2005292981.tif 000009
【図８】
2005292981.tif 000010
【図９】
2005292981.tif 000011
【図１０】
2005292981.tif 000012
【図１１】
2005292981.tif 000013
【図１２】
2005292981.tif 000014
【図１３】
2005292981.tif 000015