『レガシーコードからの脱却』を読んだ

本書はタイトルに「レガシーコード」と入っているため、イメージ的に『レガシーコード改善ガイド (Object Oriented SELECTION)』『レガシーソフトウェア改善ガイド (Object Oriented Selection)』といった書籍といった系譜の書籍を思い浮かべる人もいるかもしれない。しかし、実際には本書は『アジャイルソフトウェア開発の奥義 第2版 オブジェクト指向開発の神髄と匠の技』や『Clean Code アジャイルソフトウェア達人の技』、『アジャイルプラクティス 達人プログラマに学ぶ現場開発者の習慣』といった書籍の系譜、すなわち「より良いソフトウェアを作り出すために(レガシーコードを生み出さないために)どのようなテクニック、スキル、考え方が必要か」を説いている書籍だ。

本書は、大きくそれを次の9つのプラクティスにまとめ、1つずつをとても読みやすい内容、文量で教えてくれる。

  • やり方より先に目的、理由、誰のためかを伝える
  • 小さなバッチで作る
  • 継続的に統合する
  • 協力しあう
  • 「CLEAN」コードを作る
  • まずテストを書く
  • テストでふるまいを明示する
  • 設計は最後に行う
  • レガシーコードをリファクタリングする

本書を読んでとくにいいなあと思ったのは、ところどころで原則とプラクティスの関係、原則を見失わないように、というアドバイスを著者がはさんでくれることだ。

原則はドライブの目的地で、プラクティスはその道筋である。(...略...)プラクティスは私たちが原則を理解するのを助けてくれるし、原則は私たちがプラクティスを正しく使うのを助けてくれる。ただ、両方に目を配っておかなければ、迷子になってしまう。やり方をまったく知らない偉大な理論家か、日々のタスクはこなせても終わりを見通せない実務家のどちらかになってしまう。両方のバランスが必要だ。

こうした原則への目線は、XPに触れたときに感じた「間違えない方に方向付けしてくれる感じ」を思い出させてくれ、安心できる感じ、信頼できる感じを与えてくれる。

同じ系譜の書籍群は、いずれをとってもその厚さ(ぜんぶが500-600ページくらいの厚さ)と価格からなかなか多くの人に手に取ってもらうことは難しい。それに比べて、本書は前述の書籍群の内容をうまくカバーしながら、それを300ページという文量に抑えており、多くの人に手に取ってもらえる形にしていることがとても素晴らしいと感じた。技術的卓越に関するプラクティスが散りばめられているところも、本書を良いと思うことの一つだ。

これから現代的な技術プラクティスを身につけていこうとする人やチームに何か書籍を1つお勧めするなら、本書は最良の一冊だろう。