互換性との戦い

halts2005-11-04


実際に検証したことはないが,少なくとも PSS Ver.7 の設計段階においては PSS Ver.3 時代の(本当に情けなくなるような)データベース仕様も(移行という形で)下位互換性を維持する戦略を採っていた.

この戦略がどれほどの労力を要することか!
そもそも Ver.6 と 7 で DB の仕様が9割以上変わっているというのにユーザの誰もが Ver.6 のデータを使えることを期待し,さもなくば僕を含めた皆が大事なモノを失うことになる.

・「そんなの今時、誰も使っていないよ」と言うような非常に限られた過去の遺産の為に追加された機能の為に、余計な出費を強いられる事。

使われているかどうか,使えるようにすることで開発側としてどれだけのメリットがあるのか,常にこれらの費用対効果を意識すべき.

DB 仕様の変化のようなソフトウェアのメジャーバージョンアップなんて数年に一度あるかないかのことなので,それはもう本当に詳細な設計をするし,もしできなければそのソフトの未来はないともいえるソフトウェア開発にとっての一大イベントだ.だから,互換性との戦いが発生するのも当然.

だがこの戦いはそんな大国同士の戦争ばかりではなく,地域紛争的,いやいやもっと小さい縄張り争い的な戦いにも形容できる.
(あーもうこういう文章嫌い!いみわかんない)

つまり,ちっぽけな新機能の追加はもとより,セキュリティ上の脅威も含めた大小様々な不具合の修正作業,果ては UI 上のほんの小さな修正(たとえばタブオーダの変更)に至るまで,常に互換性との戦いがつきまとう.

これらは大々的な設計作業を伴わないいわゆるパッチ的な修正になりがちであり,Spec. に表しきれない Behavior との戦いであることから,ゲリラ戦にも似た泥沼の戦いに突入することが多い.

言うまでもないことだが,これらに対処すべく様々なソフトウェア工学的手法が,各方面で提案されている.

(ここで「続く」としたいけどそんなにネタがないです…)

たとえば XP のテストファーストアプローチ,を持ち出すまでもないことだろうけど,いわゆる検収という作業を開発のフィードバックループに入れ込むことがその一つ.

閑話休題

で,いずれにしてもコストがかかりすぎるのね.互換性の維持って.だから PSS の開発やめたいなぁと思ってる.
でも僕にとっての PSS は(多くの方のご想像の通り)当初は自分の単語学習のためのソフトだったんだけど,ある時期を過ぎてからは自分のプログラミングスキルを上げるための道具だったとも言える.スキル向上という意味でこれほど格好の材料はなかなかない.
互換性の維持に関わる作業をばっさりと切り捨てて開発をやめるのは大変結構なんだけど,(例えるなら教科書ではなくノートと筆記用具に値するような)勉強材料まで捨ててしまうのはあまりにも惜しい.

そんなわけでこれからしばらくは自分のやりたいようにやろう,と.

# モチベーションを失ったのは「敵」がいなくなったからなんだけどそれはまた別の話.

その第一弾が先日の HTML To RichText Helper Library の PSS への実装となるわけですね.

あー長い!!

(以上,mixi に載せていた日記,多少修正)