「プログラムの一部を取り替えるという作業」がある。理由は、そのモジュールが、「よろしくない」から。
「よろしくない」というケースは
・動いてはいるけど
・バグが多かったり
「なんか、いつもその辺でバグってるね」
・仕様追加、変更がしにくかったり
「あのモジュールいじりたくないんすよ~」
・そもそも切り分けが不完全だったり
「その部分だけ取り替えればいいじゃないの」「その部分と言われてもゴニョゴニョ・・・」
そんなときの作戦を一つ。基本的には「モジュール化をしっかりしよう」「インタフェースを明確化しよう」ということ。
図解で、そのイメージを伝えたい。怪しげだけど・・・。
/////
コマンドラインで動くコンバートツールのお話。
登場モジュール
黄色:
ツール本体、何らかのコンバータ
どどめ色:
コマンドライン解析部。稼働中ではあるが。
新しいオプションが足しにくい。
黄色の本体とべったりくっつきすぎ。
赤色:
コマンドライン解析部。
他のツールで使われている。
評価が高い。また、他のツールと相乗りした方がお得。
/////
図1
動いているアプリケーションがあって稼働中。だけどコマンドラインオプションを追加しようとしたら、なんだかそれがやりにくいという。
黄色がアプリケーション(なんかのコンバータ)本体。
どどめ色が、”オプション足しにくい”、コマンドライン解析部。
解析部と本体の切り分けがなんだか不明確。
図2
赤色は、別な「コマンドラインオプション解析モジュール」のGOODなやつ。どどめ色をみんなも使ってるこの赤色に置き換えたいなぁ。
図3
ただし、図のように、本体と密着したカタチでくっけたくはない。下手するとせっかくGOODな赤が壊れだすかも。
図4
コネクタ(インタフェース)を通してつながっているのでこんな形は結構よい。だだし、コネクタに追加や変形を行うときには、赤も黄色もそれに追従しなければならない。(USBメモリ的)
図5
もうひとつ、すすめて、赤にはコネクタ赤用R、黄色本体にコネクタ黄色用YをつけてそこをケーブルRY(細線)でつないでおくと、さらには使いまわしがよい。
赤の都合でコネクタRに変更があったときは、ケーブルRYだけその変更に追従すればよいという運営ができる。そのとき黄色とコネクタYには変更なし。
(周辺機器のUSBケーブル接続のような感じ)
図6
図4や図5の形にしておけば、どどめ色によるアクセスの道(コンパチビリティーのためなど)も残しておける。その際、図4、5、6、の黄色モジュールとそのコネクタはまるっきり同形、共通にできる。
開発に際しては、図1から図6を目指しそのあと、図5を目指す作戦が考えられる。最終的には図5、図6も両方動作可能。
追加20090410
関連事項:
・デザインパターンのadapter
・C#のinterface