りすと亭の各種機能を分割してプラグイン形式で柔軟に組み替え、拡張可能にする、というアイデアは昔からありました。ですが、具体的にどうすれば良いのか見えにくい状況でした。最近になって、だんだんと、どんな形にすれば良いか見えてきたので、ざっと書いてきます。
これは、あくまで現在のアイデアであって、こうするというお約束ではないことをお断りしておきます。また実現する場合でも、その時期は未定です。少なくとも現在のバージョンに即座に入ってくるということは無いでしょう。
●りすと亭の位置づけ
RFC2822メッセージを扱うフレームワーク
●りすと亭が主に想定する利用範囲
メーリングリスト
インテリジェントな電子メール応答システム
電子メールによるDM発送 (使い方によっては危険ではあるが)
●りすと亭の2つの拡張方法
2つの拡張方法を用意します。
1つは、純粋なプラググイン。これは、りすと亭本体と同じプロセス空間で動作するアセンブリとなります。
もう1つは、リモーティング インターフェース経由でりすと亭本体と通信しながら動作する別プロセス空間の任意の拡張プログラムです。これを経由して、Webサービス インターフェースなどが実現されます。
●りすと亭のコンポーネント分割
・りすと亭コア
りすと亭の動作の骨格となる部分。メール入出力機能を持ち、すべてのプラグインを呼び出す側に立ちます。
リモーティング インターフェースも持ちます。
・メッセージ ハンドラ プラグイン
入力キューのメールを処理し、出力する作業を行います。単純に配送希望ユーザー全員に転送すればメーリングリストになります。特定送信者からのメールのみを配送すればDM発送になります。メール内容を解析して応答すれば、インテリジェントな電子メール応答システムになります。また、DM発送で使う場合の名前の差し込みなども実現できます。
・メッセージ ストレージ プラグイン
メッセージを保存します。現在は、ファイルシステムに保存することが決め打ちになっていますが、このプラグインを作成することで、SQL-Serverに格納する等の選択も可能になります。
・メンバーDB プラグイン
メンバーリストを管理します。現在は、ファイルシステムに保存することが決め打ちになっていますが、このプラグインを作成することで、既存のデータベースにある情報を取りだして、それをメンバーDBとして使うことができます。たとえば、既に作成され管理されている名簿データベースなどがあれば、それを直接参照して処理することができます。
・ユーザー インターフェース プラグイン
現在は決め打ちでHTMLを出力していますが、これを置き換え可能とします。これにより、Webブラウザ経由で見たときの見かけをカスタマイズ可能になります。たとえば、携帯電話対応などもこのプラグイン経由で実現可能となります。
・アイソレーション オブジェクト
りすと亭コアの内部はどんどん変わっていくことが予想されますが、それによってプラグインを全て作り直しということがあっては困ります。そのため、そう簡単に変わらないインターフェースを提供するためのアイソレーション オブジェクトというものを用意します。これが、りすと亭のAPI、と見ることもできます。
●具体的に何を実現するか
基本的には、お客様のリクエスト次第で、何にでもなります。
私の方で作っても良いかな、と思っているものは、以下のようなものです。
・メーリングリスト (つまりは現行のものと同じ)
・DM発送
(プラグインの存在により強力なカスタマイズ機能を実現できる)
・Webサービス経由の各種インターフェース
(Webサービスの世界と電子メールの世界を容易に連携できる)
・簡単な電子メール通信で実現するゲーム (機能のデモンストレーション)
今のところ、ここまで。