改訂新版 良いコード/悪いコードで学ぶ設計入門 -保守しやすい 成長し続けるコードの書き方(カイテイシンパン イイコードワルイコードデマナブセッケイニュウモン ホシュシヤスイ セイチョウシツヅケルコードノカキカタ)
ソフトウェア工学・設計- 著者:
- 仙塲 大也(センバ ダイヤ)
- 出版社:
- 技術評論社
- 出版日:
- 2024年12月25日頃
- ISBN:
- 9784297146221
- 在庫:
- 在庫あり
なぜ注目されているか
書籍紹介
本書は、より成長させやすいコードの書き方と設計を学ぶ入門書です。筆者の経験をふまえ構成や解説内容を見直し、より実践的な一冊になりました。
システム開発では、ソフトウェアの変更が難しくなる事態が頻発します。 コードの可読性が低く調査に時間がかかる、 コードの影響範囲が不明で変更すると動かなくなる、 新機能を追加したいがどこに実装すればいいかわからない......。
変更しづらいコードは、成長できないコードです。 ビジネスの進化への追随や、機能の改善が難しくなります。
成長できないコードの問題を、設計で解決します。
技書の森解説
動くコードは書ける。しかし数か月後に開き直すと読めず、変更すればどこかが壊れる。『改訂新版 良いコード/悪いコードで学ぶ設計入門』は、その状態から抜け出すための「変更容易性」の設計入門書です。著者は X (旧 Twitter) で「ミノ駆動」として知られるアプリケーションアーキテクトの仙塲大也氏。 2022 年刊行の初版はエンジニア投票で選ぶ IT エンジニア本大賞 2023 の技術書部門大賞を受賞しており、その改訂新版が 2024 年 12 月に技術評論社から刊行されました。 A5 判 408 ページ、全 18 章です。
Before/After で学ぶ全 18 章の構成
書名のとおり、悪いコードと良いコードを並べて見せる Before/After が本書の基本形です。意味不明な命名、深くネストした条件分岐、データと処理が泣き別れたデータクラスといった「悪しき構造」をまず知覚させ (第 1 章) 、命名・メソッド化・クラス化という設計の初歩から、カプセル化、不変の活用、値オブジェクト や完全コンストラクタといった実践パターンへ積み上げます。低凝集や密結合が招く不具合を「悪魔」と呼ぶ比喩のとおり語り口は軽妙ですが、扱っているのは凝集度・結合度・単一責任の原則という設計論の古典概念そのもので、それを現場のコードの言葉に翻訳してくれるのが本書の役割です。終盤はリファクタリングの進め方 (第 15 章) から、設計の意義、設計を妨げる開発の進め方との向き合い方、次に読むべき 設計技術書 の紹介 (第 18 章) まで踏み込みます。
『リーダブルコード』との違いと読む順番
「読みやすさ」ではなく「変更容易性」をゴールに据えている点は、類書との一番の違いです。定番の『リーダブルコード』 (オーム社、 2012 年) が命名やコメントなど読み手への伝わりやすさに焦点を当てるのに対し、本書は仕様変更に強い構造をどう作るかまで踏み込みます。コードは書く時間より読まれ変更される時間のほうが長く、ビジネスの変化に追随できないコードは資産ではなく負債になっていく。この前提を共有した上で、条件分岐の整理や不正値の混入防止といった毎日の実装判断レベルに設計を落とし込むので、「設計 = 上級者がやる別工程」という思い込みが解けていきます。読む順番としては、リーダブルコードの次の一冊 としてちょうど段差が合います。
改訂新版で変わった点
改訂新版は、版元の説明にあるとおり筆者の経験をふまえて構成や解説内容を見直した、より実践寄りの版です。コード例は Java を中心としつつ、異なる言語への応用を扱うコラムも収められているため、 C# や TypeScript など他のオブジェクト指向言語の読者でも考え方はそのまま持ち帰れます。これから買うなら旧版ではなくこの改訂新版を選べば間違いがありません。
向いている読者と本書の範囲外
効果が大きいのは、実務 1 〜 3 年目で「動くけれど直しにくいコード」を量産している自覚が出てきた人、レビューで「なんとなく読みにくい」以上の指摘語彙が欲しい人です。読み終えると、凝集度・結合度・不変・値オブジェクトといった概念で自分のコードの問題を名指しできるようになり、レビューコメントが感想から根拠に変わります。一方、マイクロサービスの分割やインフラ構成といったシステム全体のアーキテクチャ設計を期待する本ではなく、関数型スタイル中心の開発者にはオブジェクト指向前提の説明が遠回りに感じられるはずです。設計の学びを「いつか読む重厚な古典」から「今日のプルリクエストに効く判断基準」に変えたい人にとって、最初の一冊として堅実な投資になります。
言及 Qiita 記事 (16 件)
SE 2年目で読んだ技術書45冊+α
♡ 284技術書, Se, 新人プログラマ応援, 新人プログラマ応援_記事投稿キャンペーンGWも勉強したい方向けに、よくオススメされる技術書をカテゴリ別にまとめてみた
♡ 212Python, AWS, Security, 初心者, AI【読書の夏?】各分野のおすすめ技術書を75冊まとめてみた
♡ 120AWS, Security, 初心者, 技術書, AIMarkdown原稿からPandocしてLaTeX組版する本作りの事例
♡ 45LaTeX, Markdown, Pandoc入社前・新卒1年目に読んだ12の技術書
♡ 39初心者, 技術書, 書籍紹介TypeScriptと仲良くなろう~インターフェース編~
♡ 7TypeScriptJava Spring/SpringBoot習得向けおすすめ本
♡ 4Java, spring, 初心者, 書籍, SpringBoot読書感想『良いコード悪いコードから学ぶ設計入門』
♡ 3設計, 読書感想文「改訂新版 良いコード/悪いコードで学ぶ設計入門」を読んで
♡ 3設計, 技術書良いコードとは何かを考えるために読んだ3冊|リーダブルコードを読み返して考えたこと
♡ 2リファクタリング, リーダブルコード, コードレビュー, プリンシプルオブプログラミング, 良いコード/悪いコードで学ぶ設計入門
この本に興味がある方におすすめ
この本に関連
関連記事
コードレビューが上手い人は何を読んでいるのか
的確なコードレビューができる人は、指摘を裏づける語彙と判断基準を持っています。レビュー力を支える 3 つの読書領域と、レビューに直結する知識の身につけ方を解説します。
リーダブルコードの次に読む本 - ステップアップの読書ルート
リーダブルコードを読み終えた後、設計力を段階的に高めるための読書ルートと、各レベルで学ぶべきテーマを紹介します。
「とりあえず動く」で 5 年過ごしたエンジニアの末路
「動けばいい」のマインドセットで 5 年間コードを書き続けると何が起きるか。技術的負債の蓄積、キャリアの停滞、そしてそこから抜け出すための読書戦略を考えます。