2パーセントの割引でUSD 21.80 税込
紙の本の価格: USD 22.25
獲得予定ポイント: +104 pt (3%)
期間限定ポイント
ご請求額:JPY 3,450

これらのプロモーションはこの商品に適用されます:

一部のプロモーションは他のセールと組み合わせることができますが、それ以外のプロモーションは組み合わせることはできません。詳細については、これらのプロモーションに関連する規約をご覧ください。

を購読しました。 続刊の配信が可能になってから24時間以内に予約注文します。最新刊がリリースされると、予約注文期間中に利用可能な最低価格がデフォルトで設定している支払い方法に請求されます。
メンバーシップおよび購読」で、支払い方法や端末の更新、続刊のスキップやキャンセルができます。
次に追加されました:

申し訳ありません。問題が発生しました。

ウィッシュリストの取得中にエラーが発生しました。もう一度やり直してください。

申し訳ありません。問題が発生しました。

リストを利用できません。
Kindleアプリのロゴ画像

無料のKindleアプリをダウンロードして、スマートフォン、タブレット、またはコンピューターで今すぐKindle本を読むことができます。Kindleデバイスは必要ありません

ウェブ版Kindleなら、お使いのブラウザですぐにお読みいただけます。

携帯電話のカメラを使用する - 以下のコードをスキャンし、Kindleアプリをダウンロードしてください。

KindleアプリをダウンロードするためのQRコード

  • 改訂新版 良いコード/悪いコードで学ぶ設計入門 ―保守しやすい 成長し続けるコードの書き方

著者をフォロー

新刊とおすすめタイトルの情報を入手
何か問題が発生しました。後で再度リクエストしてください。

改訂新版 良いコード/悪いコードで学ぶ設計入門 ―保守しやすい 成長し続けるコードの書き方

5つ星のうち4.5 (72)

(概要)

※この商品はリフロー型epubで作成されております。デバイスに合わせて文字の大きさやレイアウトが変更可能です。また,電子書籍内で検索をかけたり,マーカーを引いたり,自動読み上げを行うことも可能です。

本書は、より成長させやすいコードの書き方と設計を学ぶ入門書です。筆者の経験をふまえ構成や解説内容を見直し、より実践的な一冊になりました。
システム開発では、ソフトウェアの変更が難しくなる事態が頻発します。 コードの可読性が低く調査に時間がかかる、 コードの影響範囲が不明で変更すると動かなくなる、 新機能を追加したいがどこに実装すればいいかわからない......。

変更しづらいコードは、成長できないコードです。 ビジネスの進化への追随や、機能の改善が難しくなります。
成長できないコードの問題を、設計で解決します。


(こんな方におすすめ)

・コードの設計スキルに興味がある人

・日々、悪いコードと向き合っていて改善したい人

・より良いコードを書きたい人


(目次)

第1章 悪しき構造の弊害を知覚する

1.1 意味不明な命名

1.2 理解を困難にする条件分岐のネスト

1.3 さまざまな悪魔を招きやすいデータクラス

1.4 悪魔退治の基本

第2章 設計の初歩

2.1 省略せずに意図が伝わる名前を設計する

2.2 変数を使い回さない、目的ごとの変数を用意する

2.3 ベタ書きせず、目的ごとのまとまりでメソッド化

2.4 関係し合うデータとロジックをクラスにまとめる

第3章 カプセル化の基礎―ひとつにまとめる―

3.1 クラス単体で正常に動作するよう設計する

3.2 成熟したクラスへ成長させる設計術

3.3 悪魔退治の効果を検証する

3.4 プログラム構造の問題解決に役立つ設計パターン

第4章 不変の活用―安定動作を構築する―

4.1 再代入

4.2 可変がもたらす意図せぬ影響

4.3 不変と可変の取り扱い方針

第5章 バラバラなデータとロジックをカプセル化する実践技法

5.1 プリミティブ型執着

5.2 staticメソッドの誤用

5.3 初期化ロジックの分散

5.4 共通処理クラス(Common・Util)

5.5 結果を返すために引数を使わないこと

5.6 多すぎる引数

5.7 アクセス連鎖

第6章 関心の分離という考え方―分けて整理する―

6.1 関心の分離の基本

6.2 目的の違いを見破り、分離しカプセル化する

6.3 インターフェイスと実装の分離

第7章 関心が混ざったコードを分けて整理する実践技法

7.1 ロジックの流用

7.2 継承による関心の混在

7.3 関心が混在する各種事例と対処方法

第8章 条件分岐―迷宮化した分岐処理を解きほぐす技法―

8.1 条件分岐のネストによる可読性低下

8.2 switch文の重複

8.3 interface設計の考え方を身につけよう

8.4 条件分岐の重複とネスト

8.5 型の判定で分岐しないこと

8.6 フラグ引数

8.7 interfaceの使いこなしが中級者への第一歩

第9章 コレクション―ネストを解消する構造化技法―

9.1 自前でコレクション処理を実装してしまう

9.2 ループ処理中の条件分岐ネスト

9.3 バラバラなコレクション処理

第10章 設計の健全性をそこなうさまざまな悪魔たち

10.1 デッドコード

10.2 YAGNI原則

10.3 マジックナンバー

10.4 文字列型執着

10.5 グローバル変数

10.6 null問題

10.7 例外の握り潰し

10.8 設計秩序を破壊するメタプログラミング

10.9 技術駆動パッケージング

10.10 サンプルコードのコピペ

10.11 銀の弾丸

第11章 名前設計―あるべき構造を見破る名前―

11.1 悪魔を呼び寄せる名前

11.2 名前を設計する―目的駆動名前設計

11.3 設計時の注意すべきリスク

11.4 意図がわからない名前

11.5 構造を歪ませてしまう名前

11.6 名前的に居場所が不自然なメソッド

11.7 名前の省略

第12章 コメント―保守と変更の正確性を高める書き方―

12.1 退化コメント

12.2 コメントで命名をごまかす

12.3 目的や仕様変更時の注意点を読み手に伝えること

12.4 コメントのルール まとめ

12.5 ドキュメントコメント

第13章 メソッド(関数) ―良きクラスには良きメソッドあり―

13.1 必ず自身のクラスのインスタンス変数を使うこと

13.2 不変をベースに予期せぬ動作を防ぐ関数にすること

13.3 尋ねるな、命じろ

13.4 コマンド・クエリ分離

13.5 引数

13.6 戻り値

第14章 モデリング―クラス設計の土台―

14.1 邪悪な構造に陥りがちなUserクラス

14.2 モデリングの考え方とあるべき構造

14.3 良くないモデルの問題点と解決方法

14.4 機能性を左右するモデリング

第15章 リファクタリング―既存コードを成長に導く技―

15.1 リファクタリングの流れ

15.2 安全にリファクタリングする方法

15.3 あやふやな仕様を理解するための分析方法

15.4 IDE のリファクタリング機能

15.5 リファクタリングで注意すべきこと

第16章 設計の意義と設計への向き合い方

16.1 本書はなんの設計について書いたものなのか

16.2 設計しないと開発生産性が低下する

16.3 ソフトウェアとエンジニアの成長性

16.4 課題を解決する

16.5 コードの良し悪しを判断する指標

16.6 コード分析をサポートする各種ツール

16.7 設計対象と費用対効果

16.8 時間を操る超能力者になろう

第17章 設計を妨げる開発の進め方との戦い

17.1 コミュニケーション

17.2 設計

17.3 実装

17.4 レビュー

17.5 チームの設計力を高める

第18章 設計技術の理解の深め方

18.1 さらにステップアップするための設計技術書紹介

18.2 設計スキルを高める学び方
この本はファイルサイズが大きいため、ダウンロードに時間がかかる場合があります。Kindle端末では、この本を3G接続でダウンロードすることができませんので、Wi-Fiネットワークをご利用ください。

お買い得タイトル

あなたの購入および読書履歴からのおすすめ

登録情報

  • ASIN ‏ : ‎ B0DPW38VVV
  • 出版社 ‏ : ‎ 技術評論社
  • アクセシビリティ ‏ : ‎ 詳細はこちら
  • 発売日 ‏ : ‎ 2024/12/25
  • 言語 ‏ : ‎ 日本語
  • ファイルサイズ ‏ : ‎ 25.8 MB
  • Text-to-Speech(テキスト読み上げ機能) ‏ : ‎ 有効
  • タイプセッティングの改善 ‏ : ‎ 有効
  • X-Ray ‏ : ‎ 有効にされていません
  • Word Wise ‏ : ‎ 有効にされていません
  • 本の長さ ‏ : ‎ 583ページ
  • ISBN-13 ‏ : ‎ 978-4297146238
  • Page Flip ‏ : ‎ 有効
  • Amazon 売れ筋ランキング: Kindleストア - 7,610位 (Kindleストアの売れ筋ランキングを見る)
  • カスタマーレビュー:
    5つ星のうち4.5 (72)

著者について

著者をフォローして、新作のアップデートや改善されたおすすめを入手してください。
仙塲 大也
Brief content visible, double tap to read full content.
Full content visible, double tap to read brief content.

著者の本をもっと見つけたり、似たような著者を調べたり、おすすめの本を読んだりできます。

カスタマーレビュー

星5つ中4.5つ
72グローバルレーティング
考えを整理するには最適。ただし「正解本」ではない点に注意
星5つ中4つ
考えを整理するには最適。ただし「正解本」ではない点に注意
【購入理由】 設計思想をもう一段深く理解したく、本書のタイトルに惹かれて購入しました。 良いコード・悪いコードの対比で学べるというコンセプトに興味を持ち、現場での設計判断に活かせるヒントを期待していました。 【内容と特徴】 本書は「なぜこのコードが良くて、なぜ悪いのか」という視点から、設計における考え方を示す構成になっています。 抽象的な理論書というよりは、実際のコード例をもとに「より良くするための改善」を重ねていく実践的なスタイルです。 【評価と注意点】 結果として、設計に関する自分の考えが整理され、読書体験自体は非常に有意義でした。 一方で、知識が少ない状態で読むと誤解を招きやすいと感じました。 本書で紹介されているサンプルコードの品質はやや低く、設計思想に一貫したポリシーが感じられない部分があります。 また、Value ObjectやDomain Modelなど、他の設計手法との関係性にはほとんど触れられておらず、抽象的な背景理解がないと誤った解釈をしてしまう可能性もあります。 【具体的な気づき】 • ストラクチャー(構造体)をやや否定的に扱っているが、必ずしもデータクラスが悪ではないと感じた。 • 一般的な用語と独自用語の区別がやや曖昧で、読者によっては混乱を招く可能性がある。 • 「書いている瞬間には効果が見えないが、後々の保守性を高める」という品質概念に焦点を当てており、長期的なコードの健全性を考える上では有用。 【総評】 エンジニアとして設計思想を見直すきっかけには十分な価値がありましたが、「正解集」ではなく「思考の材料集」として読むのが良いでしょう。 ある程度の経験があるエンジニアが、自分の設計方針を検証・整理するために読む本としておすすめです。 星評価:★★★★☆(考えが深まるが、初心者にはやや難あり)
フィードバックをお寄せいただきありがとうございます
申し訳ありませんが、エラーが発生しました
申し訳ありませんが、レビューを読み込めませんでした

日本からのトップレビュー

  • 星5つ中5つ
    1、2年目のエンジニアにおすすめ!
    2025年4月7日に日本でレビュー済み
    Brief content visible, double tap to read full content.
    Full content visible, double tap to read brief content.

    良書です。

    会社の後輩との輪読会に使いましたが、後輩がメキメキ設計の力をつけていったので、特にジュニアエンジニアにはおすすめだと思います。個人的にもいい復習になりました。

    9人のユーザーが役に立ったと感じています
    フィードバックを送信中...
    フィードバックをお寄せいただきありがとうございます。
    フィードバックを送信中...
    ありがとうございます。数日中に調査いたします。
  • 星5つ中5つ
    読みやすい
    2025年3月5日に日本でレビュー済み
    Brief content visible, double tap to read full content.
    Full content visible, double tap to read brief content.

    設計に関する本は難解な本が多いですが、最後までスラスラ読むことができました。変更容易性に関する設計手法を学ぶことができます。初心者にもおすすめです。

    4人のユーザーが役に立ったと感じています
    フィードバックを送信中...
    フィードバックをお寄せいただきありがとうございます。
    フィードバックを送信中...
    ありがとうございます。数日中に調査いたします。
  • 星5つ中4つ
    考えを整理するには最適。ただし「正解本」ではない点に注意
    2025年10月17日に日本でレビュー済み
    Brief content visible, double tap to read full content.
    Full content visible, double tap to read brief content.

    【購入理由】

    設計思想をもう一段深く理解したく、本書のタイトルに惹かれて購入しました。

    良いコード・悪いコードの対比で学べるというコンセプトに興味を持ち、現場での設計判断に活かせるヒントを期待していました。

    【内容と特徴】

    本書は「なぜこのコードが良くて、なぜ悪いのか」という視点から、設計における考え方を示す構成になっています。

    抽象的な理論書というよりは、実際のコード例をもとに「より良くするための改善」を重ねていく実践的なスタイルです。

    【評価と注意点】

    結果として、設計に関する自分の考えが整理され、読書体験自体は非常に有意義でした。

    一方で、知識が少ない状態で読むと誤解を招きやすいと感じました。

    本書で紹介されているサンプルコードの品質はやや低く、設計思想に一貫したポリシーが感じられない部分があります。

    また、Value ObjectやDomain Modelなど、他の設計手法との関係性にはほとんど触れられておらず、抽象的な背景理解がないと誤った解釈をしてしまう可能性もあります。

    【具体的な気づき】

    • ストラクチャー(構造体)をやや否定的に扱っているが、必ずしもデータクラスが悪ではないと感じた。

    • 一般的な用語と独自用語の区別がやや曖昧で、読者によっては混乱を招く可能性がある。

    • 「書いている瞬間には効果が見えないが、後々の保守性を高める」という品質概念に焦点を当てており、長期的なコードの健全性を考える上では有用。

    【総評】

    エンジニアとして設計思想を見直すきっかけには十分な価値がありましたが、「正解集」ではなく「思考の材料集」として読むのが良いでしょう。

    ある程度の経験があるエンジニアが、自分の設計方針を検証・整理するために読む本としておすすめです。

    星評価:★★★★☆(考えが深まるが、初心者にはやや難あり)

    考えを整理するには最適。ただし「正解本」ではない点に注意

    【購入理由】

    設計思想をもう一段深く理解したく、本書のタイトルに惹かれて購入しました。

    良いコード・悪いコードの対比で学べるというコンセプトに興味を持ち、現場での設計判断に活かせるヒントを期待していました。

    【内容と特徴】

    本書は「なぜこのコードが良くて、なぜ悪いのか」という視点から、設計における考え方を示す構成になっています。

    抽象的な理論書というよりは、実際のコード例をもとに「より良くするための改善」を重ねていく実践的なスタイルです。

    【評価と注意点】

    結果として、設計に関する自分の考えが整理され、読書体験自体は非常に有意義でした。

    一方で、知識が少ない状態で読むと誤解を招きやすいと感じました。

    本書で紹介されているサンプルコードの品質はやや低く、設計思想に一貫したポリシーが感じられない部分があります。

    また、Value ObjectやDomain Modelなど、他の設計手法との関係性にはほとんど触れられておらず、抽象的な背景理解がないと誤った解釈をしてしまう可能性もあります。

    【具体的な気づき】

    • ストラクチャー(構造体)をやや否定的に扱っているが、必ずしもデータクラスが悪ではないと感じた。

    • 一般的な用語と独自用語の区別がやや曖昧で、読者によっては混乱を招く可能性がある。

    • 「書いている瞬間には効果が見えないが、後々の保守性を高める」という品質概念に焦点を当てており、長期的なコードの健全性を考える上では有用。

    【総評】

    エンジニアとして設計思想を見直すきっかけには十分な価値がありましたが、「正解集」ではなく「思考の材料集」として読むのが良いでしょう。

    ある程度の経験があるエンジニアが、自分の設計方針を検証・整理するために読む本としておすすめです。

    星評価:★★★★☆(考えが深まるが、初心者にはやや難あり)

    4人のユーザーが役に立ったと感じています
    フィードバックを送信中...
    フィードバックをお寄せいただきありがとうございます。
    フィードバックを送信中...
    ありがとうございます。数日中に調査いたします。
  • 星5つ中5つ
    知的冒険の軌跡――コード設計の新たな地平へ
    2025年2月4日に日本でレビュー済み
    Brief content visible, double tap to read full content.
    Full content visible, double tap to read brief content.

    この商品を手に取ったのは、ある日常のひとときで、他者の意見としてもその実践的な内容や独自の視点が高く評価されていると聞いていたためです。実際に手元に届き、数日間にわたってじっくりと読み進める中で、改訂された新版ならではの鋭い洞察や具体例、そして現場で役立つ技法がふんだんに盛り込まれていることに驚かされました。内容は、良いコードと悪いコードの違いを学びながら、システム開発における設計の基本から応用までを、まるで一編の物語を紡ぐかのように順序立てて解説している印象を受けました。読み進めるにつれて、私自身の普段のプログラミングに対する考え方が少しずつ変わっていくのを感じ、実際に改善を試みる際の指針として大変役立ちました。

    特に感銘を受けたのは、具体的な悪いコード例と、それに対してどのように設計を修正すれば保守性や拡張性が向上するかという点に重点を置いて解説されている部分です。章ごとに分かりやすい例題と実践的なアプローチが記されており、コードの見直しやリファクタリングのプロセスを実際に体感できたことが大変良かった点です。読みやすい文章と図解が適切に配置され、初心者だけでなく、ある程度経験を積んだ開発者にとっても新たな発見がある内容となっていました。

    一方で、気になった点としては、内容の濃さゆえに一部の章で説明が抽象的になってしまい、実際のプロジェクトに直結する具体的なアプリケーション事例がもう少し多ければ、より実践的な理解が深まったのではないかという点がありました。実際に私自身、理論を理解した後に自分のコードに落とし込む際、具体的な実装例を求める声があると感じたため、今後の改訂版でさらなる具体例が追加されることを期待しております。

    また、この商品は、普段からコードの品質や設計手法に悩みを抱える方、そして改善意欲を持った開発者に非常におすすめです。実際に私も、これまで何度も試行錯誤を繰り返しながら業務でコードのリファクタリングを行ってきましたが、この商品のアプローチは、問題点を具体的に指摘しながら、どのようにして「あるべき構造」へと変革していくかを論理的かつ実践的に説明しているため、日々の開発作業に直接的な影響を与えてくれました。さらに、複雑な条件分岐やクラス設計の整理、名前設計に関する章は、コードの保守性や拡張性を高めるために欠かせない知識として、私自身の今後の設計の参考になると感じました。

    また、商品説明や他者の意見を踏まえると、幅広い層に対応できる内容であると感じます。単に技術的な理論だけでなく、どのようにして「成長し続けるコード」を実現するかという視点が新鮮であり、初心者から中級者、さらには実務に携わるエンジニアにとっても、学ぶべきポイントが豊富に詰まっています。選択のきっかけとなったのは、コードの改善や設計に対するお買い得感と、口コミでの高評価が大きく影響していたと思います。全体として、実際に使用してみて、その内容の充実度と実践への応用のしやすさは非常に高く、私自身も今後の業務において積極的に取り入れていきたいと感じる一冊でした。これからも継続して自身のスキルアップを目指す方には、ぜひ手に取っていただきたい商品です。

    6人のユーザーが役に立ったと感じています
    フィードバックを送信中...
    フィードバックをお寄せいただきありがとうございます。
    フィードバックを送信中...
    ありがとうございます。数日中に調査いたします。
  • 星5つ中5つ
    すぐに実践できる手法がいっぱい
    2025年10月16日に日本でレビュー済み
    Brief content visible, double tap to read full content.
    Full content visible, double tap to read brief content.

    わかりやすくまとまっています。

    現場で実践できることも多くありました。

    ゲーム開発をモデルにコードが開設されていくので、ゲームが好きな人には特におすすめです。

    4人のユーザーが役に立ったと感じています
    フィードバックを送信中...
    フィードバックをお寄せいただきありがとうございます。
    フィードバックを送信中...
    ありがとうございます。数日中に調査いたします。
  • 星5つ中4つ
    良書だと思う。
    2025年6月8日に日本でレビュー済み
    Brief content visible, double tap to read full content.
    Full content visible, double tap to read brief content.

    悪くないです。

    開発経験を積んでなんとなく良いコード悪いコードが分かってきた開発者がそれを自分の中にうまく落とし込むために使える感じでした。

    3人のユーザーが役に立ったと感じています
    フィードバックを送信中...
    フィードバックをお寄せいただきありがとうございます。
    フィードバックを送信中...
    ありがとうございます。数日中に調査いたします。
  • 星5つ中3つ
    読んでて表現がつらい
    2025年1月18日に日本でレビュー済み
    Brief content visible, double tap to read full content.
    Full content visible, double tap to read brief content.

    書いてることはコード品質における一般的な話なのたが、一々「悪魔」だの「悪しき」だのその他色々とページを捲るごとに無用な表現が目につく。

    第1章までで限界。

    51人のユーザーが役に立ったと感じています
    フィードバックを送信中...
    フィードバックをお寄せいただきありがとうございます。
    フィードバックを送信中...
    ありがとうございます。数日中に調査いたします。
  • 星5つ中1つ
    初学者はよんではいけない
    2026年2月11日に日本でレビュー済み
    Brief content visible, double tap to read full content.
    Full content visible, double tap to read brief content.

    思ったよりも突っ込みどころが多い本だった。

    これがエンジニア本大賞のTOP10に入ったことが信じられない。

    まずJAVAのコード例なのにSpringや依存性注入に一切触れていないので、近代的とは言えない。

    流し読みで一番気になったのは8章。interfaceを用いる例が致命的によくなかった。

    RPGの魔法を計算するのにinterfface + 多数の実装クラスでゴリ押しいようとしていたが、

    いまどきAIに聞けばもっと賢い選択肢を与えてくれる。その他にも視野の狭い記述が多数。

    著者はdbやプロパティファイルをjavaで扱ったことがないか、

    まともな業務システムに関わったことがない疑いを持たざるを得ない。

    あと、getter, setterを一切用いない流儀で、とにかくfinalをつけることを推奨するスタイルに違和感。

    複数書籍を読んでいるが、そういった説明は初めて。

    つぎに、本文全体に中途半端な解釈で名著に記されている考えを記載していたり、

    DDD主義の押し付けと感じられるな記述も問題と感じる。

    名著を読みやすくするためのガイドになっているのであれば良いのだが、

    著者の理解が浅すぎるためか説明がふわっとしすぎている。

    そのため、理解を深めるどころか逆に害になる部分が大きい。

    この本を読むよりEffective Java などの名著をAIに解説しながら読んだほうがよほどよい。

    カジュアルよりの本でも、よほど内容がまともで著者のノウハウがよく解説されいてる日本語の本もほかにある。

    こういったこの本に対する手厳しい批判はこのAmazonのレビュー以外にもいくつか見受けられる。

    それだけこの本に問題があるということの証左だろう。

    9人のユーザーが役に立ったと感じています
    フィードバックを送信中...
    フィードバックをお寄せいただきありがとうございます。
    フィードバックを送信中...
    ありがとうございます。数日中に調査いたします。

問題を報告


この商品には、不適切な内容が含まれていますか?
この商品は、著作権を侵害していると思いますか?
この商品には、品質または書式設定の問題が含まれていますか?