4章9つのプラクティス

ソフトウェア開発は複雑だ。おそらく、人類が関わるものの中でいちばん複雑なものだ。ソフトウェアを作ることは規律であり、うまく書くには幅広いスキルと鍛錬を必要とする。

間違うのは簡単だ。仮想世界と物理世界の違いは大きい。何かを作るのに何が必要なのかを理解するのは物理世界では容易だ。しかし、仮想世界では見て理解するのははるかに難しくなる。ソフトウェア開発という職業は、今やっとものごとを理解し始めたところだ。数百年前の医学界と同じである。

ほんの200年前、病気を引き起こすのは顕微鏡でしか見えない生物であるというイグナーツ・センメルヴェイスの説を医学界は一笑に付した。手術前に手を洗うかどうかといった些細なことがどうして患者の生死に関係があるというのか?

当時、細菌学はまだ存在しておらず、見えない悪霊が病気を引き起こすという迷信を解こうと医学界が躍起になっていた時期だった(迷信と真実の共通点は少なくない)。そのため、手術前に手を洗うことは必須だと思われていなかったのだ。

南北戦争の軍医は細菌学を知っていたが、器具を消毒する時間はないと主張していた。足を切断しなければいけない兵士がいても、手術用のこぎりを洗う時間はなかったのだ。あとになって、医学界が南北戦争の戦場における手術の成功率を調査すると、ケガによる死亡よりも感染症による死亡が多かったことがわかった。医学界は主張を考え直さざるを得なくなった。

細菌学を理解していれば、器具をすべて洗浄する必要がある理由はわかる。これが、プラクティス(特定の器具を消毒すること)に従うことと、原則(すべての器具を消毒する理由)に従うこととの差だ。

ソフトウェア開発プラクティスに従うことは手術の前の消毒のようなもので、どのようなソフトウェアを開発していても正しく行われる必要がある。従わなければ細菌が患者を殺してしまうように、たった1つのバグがアプリケーションを殺してしまうかもしれない。規律が必要だ。 ...

Get レガシーコードからの脱却 ―ソフトウェアの寿命を延ばし価値を高める9つのプラクティス now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.