【65】目の前にあるのはレガシーシステムだという前提で設計せよ

デーブ・アンダーソン

 たとえ、今あなたが使っているシステムが最新鋭機で、最先端テクノロジーを使って開発していたとしても、明日になればレガシーシステムになります。このことに対する備えが必要です。現在のソフトウェア産業では、非常に速いペースであらゆるものが古くなっていきます。自分のシステムを稼働に持ち込み、たとえ数か月なりとも生き残らせたいと思うなら、いずれメンテナンスデベロッパーにフィックスしてもらわなければならなくなることを認めなければなりません。これは、システムが次の要件を満たさなければならないということです。

 別のチームがコードベースを開いて、何が起きているのかを探っていくのだということを考えるようにしてください。これは、優れたアーキテクチャーの基本です。必要以上に単純化したり、徹底的にドキュメントしたりする必要はありません。優れた設計は、さまざまな形でそれ自体がドキュメントになります。本番システムのふるまいも設計を伝えるものです。たとえば、依存関係がぐちゃぐちゃでつたが這い回るような感じのアーキテクチャーは、本番システムでも檻に入れられた動物のような挙動を示すものです。エラーをデバッグしなければならない、おそらくあなたより若いデペロッパーのことを思いやるようにしてください。

 レガシーは、ソフトウェアの世界では悪い意味を持つ言葉ですが、実際には、すべてのソフトウェアシステムがレガシーと形容されるべきものです。これは、決して悪いことではありません。あなたのシステムが耐久性を持ち、顧客の期待を満足させ、ビジネス上の価値を提供しているということなのです。レガシーと呼ばれたことのないソフトウェアシステムは、おそらく稼働に移される前に封印されたのです。それはアーキテクチャーの成功とはとても言えないでしょう。