柔軟さと骨無し

世の中で一般的に「柔軟性があるか無いか」を論ずるとき、たいていの場合は「ある」方が優れているとみなされる。頭が固いとか、融通が利かないとか、時代に取り残されるというのは「柔軟性が無い証拠」であり、善悪論でいえば「悪」に属する。
ソフトウェアの世界でも似たようなもので、「XXXしかできない」というプログラムよりは「XXXもYYYも、後付けでZZZその他何でもできる」というプログラムの方が一般的に価値が高く、もてはやされる。しかし業界人となって十余年、僕は「柔軟」という語について疑念を感じて止まない。
何でもこなせるのが柔軟性の証拠である。それは間違ってはいない。しかし最近は「柔軟性」を謳いながら、実際に何かをやらせて見ると、あちらこちらでボロが出るという製品が多い。親切を売り物にする製品は往々にしてお節介で鬱陶しく、必要以上にメモリとCPUを浪費し、かえって嫌悪感すら感じさせる。かといって本当に知りたいことにアクセスするためには莫大な労力が必要なうえ、得られた結果も大したモノではない。一方、何でも出来そうな大規模なライブラリを備えるプログラミング環境製品でいざ何かを作ると、たったこれだけの機能なのになぜこんなに複雑なプログラミングが必要なのかと頭を抱えてしまうものもある。そこで僕は思う。こういうのは「柔軟」なのではなく「骨無し」というべきではないか。
ソフトウェアの世界では「フレームワーク」という語を多用する。一般的には「誰かが再利用できるような、一定の規則と構造を持った拡張可能なプログラム部品群」といえる。ところが最近かかわるプロジェクトでは、プロジェクトの大きさに比較してフレームワーク、すなわち骨格が小さすぎて、それらを無理矢理再利用して出来た現実のプログラム製品は機能欠損・サイズ超過・性能不足の三重苦に陥っている。これは骨格というよりも骨片といった方が適当なのではないか、と思う「フレームワーク」に出くわしたこともあった。骨が無いながらも柔軟な筋肉で自由自在に動ける蛸ならまだしも、体中に極小の骨片がばら撒かれていながら何の役にも立ってなさそうに見える海鼠のような「フレームワーク」。
当のフレームワーク側担当者にすれば、「どんな使用も可能なように柔軟性を高めた」つもりなのだろうが、使う側へ指針が示されなければ何の意味もない。いや、もともと「どう使われるべきか」が考えられていないがゆえに「無い方がマシ」と判断され、各人の自分勝手なモノ作りが各所バラバラに始まる。出来上がったものはとても重くて遅くて使い物にならない。まさに海鼠のように、そこにゴロリと転がっているだけ。かといって海鼠とは違い、決して喰えない。かつて僕もたずさわったのだが、予算と期間を喰い潰した挙句に廃棄された、とある超大型プロジェクトが丁度こんな感じだった。
翻って見れば、世間に広く流通している米国の巨大ソフトウェアメーカーM社謹製のパーソナルコンピューター向けオペレーティングシステム。年々、機能追加を上回るのではないかと懸念されるほどのバグと不安定さが追加され、悪戯の格好の餌食となり、今では「便利だが決して信頼できないもの」の代名詞となった。あれも「柔軟性」を不必要に追求しすぎた結果ではないかと思えてならないのだ。
2003/04/11