レガシーコード改善ガイド(レガシー コード カイゼン ガイド)
保守開発のためのリファクタリング
ソフトウェア工学・設計- 著者:
- マイケル・C.フェザーズ/ウルシステムズ株式会社(フェザーズ,マイケル・C./ウルシステムズ カブシキ ガイシャ)
- 出版社:
- 翔泳社
- 出版日:
- 2009年07月
- ISBN:
- 9784798116839
- シリーズ:
- Object oriented selection
- 在庫:
- 在庫あり
なぜ注目されているか
書籍紹介
技書の森解説
仕様書はなく、書いた人はもういない。それでも明日、そのコードに機能を足さなければならない。『レガシーコード改善ガイド 保守開発のためのリファクタリング』は、システム保守のその現場に正面から答える技法書です。マイケル・ C ・フェザーズ氏の著書 Working Effectively with Legacy Code の日本語版で、ウルシステムズ株式会社の翻訳・監修 (個人訳者は平澤章氏ら 5 名) により翔泳社から 2009 年 7 月に刊行されました。版元はこの本を、構造が複雑で理解できないようなコードに対する分析手法・対処手法の解説書と位置づけています。
内容の柱: 理解し、テストし、改善する
内容の柱は版元の紹介文が簡潔に言い切っています。すなわち「コードを理解し、テストできるようにし、リファクタリングを可能にし、機能を追加できるテクニック」。具体的には、仕様が分からないコードの分析方法、そのコードの修正方法と テストコードの追加方法、そして修正のついでに 疎結合 な設計へ部分的に改善していく方法が語られます。一方で COBOL などメインフレーム上のアプリケーションの改修方法は扱わないと版元が明記しており、守備範囲はオブジェクト指向言語を中心とした業務システムのコードベースです。
読みどころ: テスト不在という前提から始める
この本が特別な位置を占めるのは、リファクタリング書の多くが暗黙に置く前提、つまり「テストがあること」を前提にしない点です。保守の現場の本当の恐怖はデグレーション (直したつもりが別の場所を壊すこと) であり、それを防ぐ安全網のテストがそもそも無い。しかしテストを書くにはコードの変更が必要で、変更するにはテストが欲しい。この鶏と卵のジレンマを、依存関係を少しずつ切り離しながらテストを差し込んでいく手順に分解して見せるのが本書の核心です。安全地帯を一歩ずつ広げていく地道な工程が、具体的なコードとともに示されます。
サンプル言語と 2009 年刊でも古びない理由
サンプルは Java ・ C ・ C++ で書かれていますが、版元はテクニック自体が言語に依存しないことを明言しており、他の言語の使い手にも読める作りです。 2009 年の訳書 (原題は Working Effectively with Legacy Code) という時点の本ながら、扱っているのは特定フレームワークではなく「テストのないコードにどう手を入れるか」という普遍の問題であり、レガシー保守が存在する限り古びない内容です。なお、これから設計を学ぶ入門者が最初に読む本ではなく、既存コードの改修経験があって初めて痛みと処方が結びつきます。
向いている読者: 保守の現場の担当者
版元が対象に挙げるのは、仕様が分からないシステムの保守に悩む担当者、修正はできるがデグレーションに悩む担当者、疎結合な設計手法を知りたい技術者 です。テストのないプロダクトコードを日常的に触る立場なら、読む前と読んだ後で手の動かし方が変わる種類の一冊であり、保守という仕事に体系と希望を与えてくれる定番書です。
言及 Qiita 記事 (85 件)
新人プログラマに正月休み中を使って読んでみてほしい技術書をセレクトしてみた。
♡ 3162技術書【Webエンジニアど素人から3年生ぐらいになるまでに読むと良い本】を段階的にまとめた
♡ 2567初心者, まとめ, 技術書, 勉強, 新人プログラマ応援エンジニアに読んで欲しい技術書90選
♡ 1965技術書, 書籍, 新人プログラマ応援新卒1年目が荒れ果てた開発環境に1年間でCIを導入し単体テストを布教した話
♡ 1576Java, CI, whi-adventプログラミング初学者のための「即戦力ノウハウ」(4 万字)
♡ 1422プログラミング, 初心者, 教育, 新人プログラマ応援リファクタリング自爆奥義集
♡ 784リファクタリング, DDD, 設計, アンチパターン【Webエンジニアど素人】が【3〜4年生】くらいになったら読むといい本を目的別にまとめた
♡ 657初心者, 技術書, 新人教育, キャリア, 新人プログラマ応援新人さんにすすめる有益な技術書達 2022春
♡ 528読書, まとめ, 新人プログラマ応援スクラムとは何か?〜Certified ScrumMaster 研修を受けて〜
♡ 498アジャイル, スクラム, スクラムマスター『Microservice Patterns』 まとめ
♡ 467DDD, ドメイン駆動設計, microservices, マイクロサービス
言及 Zenn 記事 (1 件)
関連記事
テスト本ガイド - テスト設計を学べる技術書の選び方
テストの書き方からテスト戦略まで学べる技術書の選び方を紹介。テストピラミッド、TDD の正しい読み方、テストの ROI の考え方を解説します。
「動くコード」と「良いコード」の間にある本
コードが動くようになった後、次に何を学べばよいのか。「動くコード」を「良いコード」に変えるために必要な知識と、それを効率的に学べる本の選び方を解説します。
「とりあえず動く」で 5 年過ごしたエンジニアの末路
「動けばいい」のマインドセットで 5 年間コードを書き続けると何が起きるか。技術的負債の蓄積、キャリアの停滞、そしてそこから抜け出すための読書戦略を考えます。