以前 ( 3 年ほど前でした。 ) に 『レガシーソフトウェア改善ガイド』 を読んで、当時の読書感想文があったので記事にしました。

レガシーソフトウェア改善ガイド

本書の日本訳は 2016年 に出版されており、表示はシリーズもので地味なのですが、取り上げているツール類は新し目のものが多かったです。( 拝読時点で。 )


姉妹書に『レガシーコード改善ガイド』があり、こちらのほうがメジャーなきがします。

『レガシーコード改善ガイド』はコードと向き合うための内容であるのに対し、『レガシーソフトウェア改善ガイド』は コードから開発環境、コードを生み出す文化にまで言及している 点が大きく異なりますね。

本書で述べられている通り、スコープがとても広いのです。

しかしそれは「 レガシーになってしまうのは、多くの場合技術的な問題よりも人に起因する (同書より引用)  ためであるからなのですね。

このあたりは抽象的になりやすく、具体的なコードと違って退屈と感じる方もいらっしゃるようですが、理念や思想を知ることはとても重要、というのが私のスタンスです。

定番のツールからリライトまで

本書は幅が広く、特に「レガシーコードを保守することになった経験が浅い目のエンジニアさん」にオススメな内容でした。

内容として

  • Ansible、Jenkins で開発環境の統一
  • テスト、デプロイの自動化
  • 定番のJava ツールの紹介 ( FindBugs や CheckStyle )

などがあり、モダン開発環境を構築するためのノウハウが多く掲載されています。

また、コードの改善としては、

  • リファクタリング
  • リアーキテクティング
  • ビッグ・リライトと称した小規模なコードの改善からリライト

を、実例を示しながら紹介しています。

また、「データベースを新旧システムに合わせて移行する」という内容もあり、こういった例は貴重だと感じました。

レガシーコードをなくすために

プログラマは新しいものが好きで、新しい技術に触れて遊んでいるという方がたくさんいらっしゃると思います。

けれども、大半のエンジニアは保守を担当しているのではないでしょうか ?

それなのに、レガシーコードに関する話題はタブーのようになっていて、誰も語りたがらないのではないですか ?

というのが本書の出発点のようです。

レガシーなコード、レガシーな環境を脱出して、使いやすいモダンな環境に移行することはリスクもありますが、ハッピーに慣れる人も多く、そして大変な勉強になりますよね。


厚めの技術書ってちょっと敬遠してしまいますが、勇気を出して手にとった『レガシーソフトウェア改善ガイド』はなかなか良い応えのある良い書籍でした。