Regnessemの基本構成

モジュール構成

Regnessemは、システムモジュールと呼ばれる本体(nsmsgs.exe)に、UIモジュールとその他必要なモジュールを組み合わせて動作します。システムモジュール以外の全てのモジュールはここでいう"プラグイン"として実現されています。表[モジュールの種類と機能]にモジュールの種類と機能を、図[Regnessemの構成]にRegnessemの構成例を示します。

Regnessemを起動するためには、システムモジュールはもちろんですが、少なくとも1つのUIモジュールが必要です。プロトコルモジュールとアドインモジュールについては、複数の異なるモジュールを同時に利用することが可能です。

モジュールの種類と機能
モジュールの種類 機能
システムモジュール 基本的なサービスの提供と、イベントの通知を行います。
UIモジュール ユーザインターフェイスを提供します。
プロトコルモジュール IMを始め、様々な外部サービスとのインターフェイスを提供します。
アドインモジュール その他任意の機能を提供します。
Regnessemの構成

モジュール名

モジュールの種類はモジュール名によって識別されます。それ故、モジュールの作者は、作成したモジュールにどのようなモジュール名をつけるかに気を配らなくてはなりません。

システムモジュールは、モジュールが備えるGetPluginInfo関数を使ってモジュール名を確認します。同一のモジュール名を持つ複数のモジュールがあった場合、最初に発見されたモジュールのみが利用され、そのほかのモジュールは利用されません。

表[モジュールの種類とモジュール名]にモジュールの種類とモジュール名の規約を示します。

モジュールの種類とモジュール名
モジュールの種類 モジュール名
システムモジュール "System"
UIモジュール "UI"
プロトコルモジュール "Protocol/***"(***の部分は任意)
アドインモジュール "AddIn/***"(***の部分は任意)

モジュール間通信

各モジュールはサービスイベントを用いて通信します。サービスは各モジュールの機能を他のモジュールに提供するもので、イベントはモジュール内で発生した事象を他のモジュールに通知するものです。各モジュールは、イベントに対応した処理を登録することで、他のモジュールの動作に応じて動作することが可能になります。

サービス名とイベント名

全てのサービスとイベントはそれぞれ固有の名前によって管理されます。それぞれのモジュールが提供するサービスとイベントの名前が同じにならないように、サービス名とイベント名にはモジュール名を冠します。表[サービス名とイベント名の例]にモジュールとサービス名の例を示します。

サービス名とイベント名の例
モジュール サービス名の例
システムモジュール "System/GetPluginInfo"、"System/Connection/Create"
UIモジュール "UI/Notify"、"UI/MessageBox"

システム関数

モジュール間通信はシステムモジュールが媒介することで実現されています。すなわち、サービスとイベント処理はシステムモジュールに登録され、他のモジュールの提供するサービスの実行や、他のモジュールへのイベント通知はシステムモジュールに依頼します。このために表[システムモジュールの提供する関数]に示す関数がシステムモジュールから提供されています。これらのシステム関数を用いたサービスとイベントの処理タイミングをそれぞれ図[サービスの処理]図[イベント周りの処理]に示します。

システムモジュールの提供する関数
システム関数 機能
CreateService サービスを登録します
GetService サービス名からサービスのハンドルを得ます
CallService サービスを呼び出します
CreateEvent イベントを登録します
GetEvent イベント名からイベントのハンドルを得ます
NotifyEvent イベントを通知します
HookEvent イベント処理を登録します
UnhookEvent イベント処理の登録を解除します
サービスの処理
イベント周りの処理