リファクタリング (第 2 版)

リファクタリングダイニハン

既存のコードを安全に改善する

リファクタリング (第 2 版) の表紙
プログラミング
著者:
Martin Fowler 著 / 児玉 公信 / 友野 晶夫 / 平澤 章 / 梅澤 真史(マーチン ファウラー / コダマ キミノブ / トモノ マサオ / ヒラサワ アキラ / ウメザワ マサシ)
出版社:
オーム社
出版日:
2019年12月01日頃
ISBN:
9784274224546
在庫:
在庫あり
4.29(14 件 / 楽天ブックス)
中級者向け
リファクタリングソフトウェアエンジニアリングコード改善JavaScriptソフトウェア開発コード品質設計パターンソフトウェア設計実務向け技術書

なぜ注目されているか

総合185位 ↓ 3 ランクダウン 言及 12 件・うち記事 10 件を掲載
言及数
268位
02420222023202420252026

書籍紹介

ソフトウェア開発の名著、第 2 版登場!
リファクタリングは、ソフトウェアの外部的な振る舞いを保ったままで、内部の構造を改善する作業を指します。本書はリファクタリングのガイドブックであり、リファクタリングとは何か、なぜリファクタリングをすべきか、どこを改善すべきか、実際の事例で構成され、ソフトウェア開発者にとって非常に役立つものとなっています。

本第 2 版では、約 20 年前のオリジナル原稿の構成は変わらないものの、大幅に書き換えられているほか、サンプルコードが Java から Java Script になるなど、現代的にアレンジされています。

技書の森解説

動いているコードの外から見える振る舞いを変えずに、内部の構造だけを少しずつ良くしていく作業を リファクタリング と呼びます。『リファクタリング (第 2 版) 既存のコードを安全に改善する』 (Martin Fowler 著、児玉公信 / 友野晶夫 / 平澤章 / 梅澤真史 訳、オーム社、2019 年 12 月刊) は、この技法を体系化した原著 Refactoring の第 2 版を日本語に翻訳したもので、版元が「ソフトウェア開発の名著」と紹介する定番書です。版元の紹介文によれば、本書はリファクタリングのガイドブックとして、リファクタリングとは何か、なぜリファクタリングをすべきか、どこを改善すべきかを、実際の事例を交えて解説する構成をとります。

全 12 章の構成、最初の例と原則からカタログ 7 章へ

本文は Chap.1 から Chap.12 までの全 12 章です。Chap.1「リファクタリング-最初の例」で一連の作業を実例として通しで見せ、Chap.2「リファクタリングの原則」、Chap.3「コードの不吉な臭い」、Chap.4「テストの構築」、Chap.5「カタログの紹介」で考え方と準備を固めます。Chap.6「リファクタリングはじめの一歩」から Chap.12「継承の取り扱い」までの 7 章がカタログ本体で、Chap.7「カプセル化」、Chap.8「特性の移動」、Chap.9「データの再編成」、Chap.10「条件記述の単純化」、Chap.11「API のリファクタリング」と、改善の対象ごとに手法が整理されています。巻頭には「第 2 版翻訳にあたって」と初版の「本書に寄せて」、巻末には文献リスト、訳者あとがき、索引が付きます。

第 2 版の変更点、サンプルコードは Java から JavaScript へ

版元の紹介によれば、第 2 版は約 20 年前のオリジナル原稿の構成を変えないまま大幅に書き換えられ、サンプルコードは Java から JavaScript に変わりました。版元は対象読者に「旧版読者」も挙げています。初版で技法を学んだ人にとっては、同じ骨格の上で説明と例が書き直された本として読み直す価値があります。JavaScript を日常的に書いていない読者は、例を追うために基本的な文法に慣れておく必要がありますが、扱う手法の考え方そのものは言語に依存しません。逆に言えば、本書は JavaScript の入門書でも、特定のフレームワークの本でもない点は押さえておく必要があります。

小さな安全な手順がコードの寿命を延ばす理由

ソフトウェアは要求の変化に応じて書き足されるうちに、当初の設計から外れた構造が積み重なり、変更のたびに壊れやすくなります。そのまま放置した結果が 技術的負債 で、返済の手段が大掛かりな書き直ししかないと、事業側の合意が得られず手が付かないままになります。リファクタリングの考え方が効くのは、返済を振る舞いを保った小さな一歩の連続に分解し、各一歩をテストで確かめながら進めることで、開発を止めずに構造を改善できる点にあります。目次で Chap.3 に「コードの不吉な臭い」、Chap.4 に「テストの構築」が置かれているのはこの順序の反映で、重複や長すぎる関数といった コードの不吉な匂い を見つける目と、変更の安全網になるテストを、カタログに入る前に用意させる構成です。手法に名前が付いていることの価値も大きく、統合開発環境が備える自動リファクタリング機能の多くはこうした名前で呼ばれており、コードレビューでも関数の抽出といった共通の言葉で改善案を議論できるようになります。

ソフトウェア開発者向けの前提知識と、向かない読み方

版元が対象として挙げるのはソフトウェア開発者、プログラマー、旧版読者で、難易度表記は中級です。何らかの言語で実務のコードを書き、自分や他人のコードが読みにくくなっていく経験をしたことがある人が、いちばん元を取れる読者です。反対に、プログラミングをこれから始める人には前提が足りず、また本書が扱うのはコードの内部構造の改善なので、システム全体の分割やアーキテクチャの再設計を主題にした本を探している人には目的がずれます。カタログ部分は通読するより、手元のコードに当てはまる項目を引く辞書のように使うほうが実務では役立ちます。

「動いているから触るのが怖い」コードを抱えているチームにとって、本書は安全に手を入れる手順と語彙を与えてくれる一冊です。設計力をどの順で伸ばすかについては当サイトの 設計 / アーキテクチャ本の選び方 も参考になりますが、コードそのものの改善をこれから学ぶなら、出発点として堅実な選択です。

言及した記事 (10 件)

この本に興味がある方におすすめ

関連する本

関連記事

関連用語

共有: