
10.7
大きなインフラストラクチャ変更の管理
185
来必要になりそうなシナリオや要件をすべて処理できるシステムを構築する必要などないのである。
求められているのはその逆だ。よいシステムを生むために大切なのは単純さである。必要とするも
のだけを作ろう。そうすれば、自分が作ったものが正しいことを保証しやすくなる。コードの再構成に
よって新たな価値が生まれる場合、たとえば今している仕事が簡単で安全なものになるというなら、
コードを再構成すればよい。「破れた窓」が見つかったら、修復していくことである。
10.6.2
プラクティス:技術的負債をマネジメントせよ
技術的負債とは、システム内の修正されずに残っている問題点という意味の比喩である。金融界の
ほとんどの負債と同様に、システムは技術的負債に利息を課している。コードを動かし続けるために
必要な手作業による問題回避という形の利息を払わなければならないのである。クリーンなアーキテク
チャならずっと簡単に加えられるような変更のために、余分な時間という形で利息を支払うかもしれな
い。ユーザーにとって信頼性が低く使いにくいサービスという形で利息を払う場合もある。
ソフトウェアクラフトマンシップは、主として技術的負債を防ぐことをテーマとしている。問題点や
欠陥は、見つけ次第修正する習慣を付ける。それも、コードが今の段階で十分よい状態になっている
かを考えるという悪癖に陥らずに、コードを作りながら問題点を見つけて修復するようにしたい。
ここの考え方には論争がある。実装がまずいシステムの ...