2012.10.26
最適化と柔軟性のバランス
最適化というのは、ある状況や条件を前提として、できるだけ良い性能を出すように作ることだ。

性能は良いほうがいいので、最適化はいいことだ。しかし、特定の状況や条件を前提にしすぎると、柔軟性がなくなってしまう。つまり、状況や条件が変化したときに、対応できなくなる。

しかし、柔軟性を持たせるにもコストがかかる。多くの変化に対応できるようにするには、それだけのコストがかかってくる。

このように、最適化と柔軟性はトレードオフの関係にある。最適化ばかりやって、柔軟性がないと、変化に対応できずに、即死してしまう。いっぽう、柔軟性ばかり追いすぎると、最適化できず、性能が出ない。よって、最適化と柔軟性のあいだで、うまくバランスをとる必要がある。

この話は、情報システム、人間、会社、国など、さまざまな「システム」について言える。最適化と柔軟性のあいだで、どのあたりにバランスをとればいいかは、状況がどのくらい早く変化しているかで決まるだろう。状況がきわめて早く変化している場合は、柔軟性がより重要になる。

柔軟性を高めるには、システムを構成している部品どうしの結びつきをゆるくして(ITでいう「疎結合」)、部品を交換しやすくする必要がある。部品を「疎結合」にするということは、部品の「独立性」を高めることでもある。部品の「責務」を明確にして、それを組み合わせることで、システムを構成する。部品は自分の「責務」を果たしている限り、内部の詳細には干渉されない。