hogeとはワイルドカードのようなものです。日々起こった、さまざまなこと −すなわちワイルドカード− を取り上げて日記を書く、という意味で名付けたのかというとそうでもありません。適当に決めたらこんな理由が浮かんできました。
07/27/2010 ふーむ [長年日記]
tDiary 2833日目
■ [日記] むー
python や perl でプラグイン機能を持つものをたまに書くことがあるのだけれど,プラグインのさせ方に毎回疑問を持ちながら書くことになる.
大体以下のような感じなのだけれど,
- プラグイン置き場を glob する
- 特定の prefix や suffix を持つものを動的にロードする (python なら __import__,perl なら require,等)
- 定めてあるインタフェースを持たないものを除外
- 残ったものをプラグインとして register
- ご利用は計画的に.プラグインを呼んだ時に例外送出しても大元が死なないようにした上で可能ならスタックトレースをログるくらいの根性で使う
プラグイン置き場やインタフェースやプラグイン保持のためのデータ構造などを考えるのがとってもめんどくさい. 更に,プラグインの分類やリロードのサポートなど,周辺のことを考え始めると,おえーめんどくさー,となってしまう.
ある程度はしょうがないとしても (ほんとか?), こういうめんどくさい接着剤部分は汎用化してライブラリ化するのがいいはずだよなぁ,そういうライブラリ絶対誰か作ってるよなぁ,などと思いながら.
まあ探すのもめんどくさいので結局もやもやしつつも適当にやっつけで書いてしまうのだが.
今日重い腰を上げて軽くぐぐってみたら,割とみんな思い思いの方法で実装してるようで,どうも「これがデファクトなやり方だぜ」みたいなのがないくさい. プラグインシステムは機能追加のために必要なコストが最小となるようにしないと意味がないので,あまりオレオレなフレームワークにはしたくないのだけど,何だかなぁ.
イメージ的には gsignal プラスアルファといったところか.