想定と拡張性

Regnessem というソフトウェアがある。

http://regnessem.osdn.jp/

これはインスタントメッセンジャではあるが、より厳密に言うとそれらの基盤となるもので、プラグインで機能を追加できる。 プラグインを大別すればユーザーインターフェイスと通信 (プロトコル) とその他に分けられる。 プラグインは必ずしも通信系のものだけではなく、たとえばノートパソコンの電池残量を通知するようなものもある。

私はとあるウェブチャットを Regnessem を通じてやりとりするためにプラグインを書いたことがあるのだが、そのときに RegnessemAPI に合わせるのに手間がかかった部分がある。 それはログインだ。 私が通信したかったウェブチャットには入室という仕組みがなく、名前と発言を入力すればすぐに発言できるものだった。 何の前触れもなく誰かが発言することがあったのである。

RegnessemAPI はセッション (プロトコルによってはチャンネルとか部屋などといわれる概念) を生成した後にそこへの参加者のアカウントを登録してから実際のメッセージのやりとりが始まるという手順を想定していたので、辻褄を合わせるにはプラグインの側で擬似的なログイン処理をするしかなかった。 発言するのが初めての人がいればその時点でログインしたとみなし、発言がない状態が続けばログアウト扱いとする具合である。

この場合はプラグインの側でどうにか出来たが、若干の無理をしたことにはかわりない。 フレームワークだとかライブラリの想定から外れてしまうと無理をせざるを得ない部分が出てくる。 フレームワークだとかライブラリは拡張性を確保しようとするなら、用途を充分に想定しないといけないな、ということを思った。

Document ID: dac77474f2f7a366afbad4185cd217e7