システムが生き物なら新陳代謝するべき
この投稿を読んでちょっと思い出したことがあるので少しメモを取っておく。これはテストコードを書くことの意義が一番のテーマなのだが、以下の一節を読んで昔読んだ本を思い出した。
そして、意外に思うかも知れませんが、サービスの変更頻度が多いほど、逆にシステムは安定することが明らかになっています。現代において、数多くのメジャーサービスは見た目はさほど変わらないかも知れませんが、裏側では一日に何度もシステムを変更(Deploy)しています。「動いているシステムは触るな」は過去の言葉になりました。
これはまさに福岡伸一の書いた『生物と無生物のあいだ』で説明されていた動的平衡という話ではないか、と思ったのだ。残念ながら、今手元に本がなく、参照できないのだけど、大まかにはこんな話だったと思う。
生き物の遺伝子は傷ついたりして情報にノイズが入る。外部から新しく情報をとりこみ、代謝させることでそのノイズを捨て、平衡状態を保っている。
生き物もアプリやサービスもシステムだとすると、代謝させることでかえって状態が安定するのだろう。ただ、プログラムの方はただ機能追加をしてリリースをすれば良いのではないのだと過去の経験から思う。
これまで経験したシステム開発では、旅館のように増築を重ねてあちらとこちらの整合性を取るのがしんどくなることが多かった。これは生物と違っていると思う。生物では、既存のものを取り除いて新しいものに入れ替えているので、システム開発でも何かを捨て去る必要があるのじゃないかと思った。