Regnessemの基本構成

モジュール構成

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

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

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

モジュール名

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

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

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

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

モジュール間通信

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

サービス名とイベント名

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

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

システム関数

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

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