Curated Tech Reading Map

次に読むべき技術書が見つかるサイト

Domain

ソフトウェア設計

クリーンコードからアーキテクチャ、テスト・品質文化まで、ソフトウェア設計の体系的学習パス。 コード品質、テスト駆動開発、ドメイン駆動設計、分散システム設計、DevOps/品質組織までカバー。

この分野の地形

ソフトウェア設計の地形は、足元の「読みやすいコード」から始まり、 品質を保つ習慣(リファクタリング・テスト駆動開発)を経て、 システム全体を見渡す「アーキテクチャ」の高地へと続く一本の登り道として描ける。

最初の大陸は、変数名・関数・責務といったミクロな単位を扱う「コード品質」の領域。 ここを越えると、コードを壊さず育てるための「テスト・リファクタリング」の丘陵が広がり、 その先に、依存の向きと境界を設計する「クリーンアーキテクチャ」「ドメイン駆動設計」の山脈が現れる。

さらに奥地には、分散システム・データ指向設計・DevOps/品質組織といった 「大規模・運用」の高原が広がる。この分野を俯瞰する鍵は、 ミクロ(コード)からマクロ(組織・運用)まで、関心事のスケールが連続して繋がっている点にある。

矢印の向きに読み進めます/実線=必須・破線=推奨

この地図を共有

難易度

入門
中級
上級

依存関係

必須前提
推奨前提
参考

グラフを計算中...

収録書籍

難易度
読了状態
タグ

33件

依存関係

  1. 01The DevOps ハンドブックGoogleのソフトウェアエンジニアリング推奨前提 / DevOps文化から大規模組織文化へ

    理由: 『The DevOps ハンドブック』で DevOps の文化と実践を学んだら、それを超巨大組織が長期間どう運用しているかの実例へ。『Googleのソフトウェアエンジニアリング』は「時間の経過とともに変化するプログラミング」という視点で、大規模・長寿命なエンジニアリング文化の知見を与えるクロスドメインな橋渡し。

  2. 02Testing JavaScript Applicationsフルスタックテスティング参考 / JS テスト戦略からフルスタック品質戦略へ

    理由: JavaScript のテスト戦略を確立したら、フロントエンドに閉じず CI/CD まで含めた品質の全体最適へ視野を広げる。フルスタックテスティングは契約・性能・セキュリティ・E2E を横断する品質戦略を与え、テストを開発文化として位置づける。

  3. 03マイクロフロントエンドマイクロサービスアーキテクチャ参考 / FE分散からBE分散の対応概念へ

    理由: フロントエンドを独立した部品へ分割する発想を掴むと、それがバックエンドのマイクロサービスと同じ根を持つことに気づく。マイクロサービスアーキテクチャは境界・自律デプロイ・組織との対応というサーバー側の体系を与え、分散の原理を両面から理解させる。

  4. 04Clean Codeリファクタリング推奨前提 / コード品質からリファクタリングへ

    理由: 良いコードの基準を学んだ次は、既存コードをその基準へ安全に近づける技術が要る。リファクタリングは「コードの臭い」を手がかりに振る舞いを変えず構造を改善する体系を与える。

  5. 05Clean Codeテスト駆動開発推奨前提 / コード品質からTDDへ

    理由: クリーンなコードを書き続けるには、変更を恐れず検証できる足場が要る。テスト駆動開発は「動くきれいなコード」を小さなサイクルで育てる規律を与え、品質を習慣として定着させる。

  6. 06Clean CodeClean Architecture推奨前提 / コード品質からアーキテクチャへ

    理由: 関数やクラス単位の品質が身についたら、次はシステム全体の依存の向きと境界を設計する視点へ広げる。クリーンアーキテクチャは詳細を外側へ追いやり、ビジネスルールを中心に据える原則を与える。

  7. 理由: 図解と豊富な例でパターンを体感的に掴んだら、意図・適用可能性・帰結が厳密に定義された原典で語彙を確かにする。GoF はパターンを設計の共通言語として体系化し、議論の土台を与える。

  8. 08テスト駆動開発単体テストの考え方/使い方推奨前提 / TDD基礎からテスト設計原則へ

    理由: TDD の小さなサイクルで「動くテスト」を書く感覚を得たら、何を・どの粒度でテストするかの設計原則へ進む。良いテストは壊れにくく、リファクタリングを妨げず、回帰を確実に捉える。

  9. 09テスト駆動開発実践テスト駆動開発推奨前提 / TDD基礎から高度なTDDへ

    理由: 単体の TDD に慣れたら、外側から駆動する TDD(受け入れテスト→単体)でオブジェクト間の協調そのものを設計する段階へ進む。モックは実装の代用ではなく、協調を表現する設計ツールになる。

  10. 10リファクタリングレガシーコード改善ガイド推奨前提 / リファクタリングからレガシーコード改善へ

    理由: 安全なリファクタリング手順を身につけたら、テストの無いレガシーコードという最難関へ挑む。まず依存を切り離す継ぎ目を見つけてテストで覆い、変更の安全網を張ってから構造を直す。

  11. 11Clean Architectureソフトウェアアーキテクチャの基礎(第2版)推奨前提 / アーキテクチャ原則から体系的学習へ

    理由: クリーンアーキテクチャで「あるべき形」の直観を得たら、アーキテクチャ特性やトレードオフを体系的な語彙で扱えるようにする。本書は属人的な設計判断を、議論可能な工学へと引き上げる。

  12. 12Clean Architectureドメイン駆動設計をはじめよう推奨前提 / アーキテクチャからDDD入門へ

    理由: 依存の向きを制御できるようになると、次の関心は「境界をどこに引くか」へ移る。ドメイン駆動設計はビジネスの言葉から境界づけられたコンテキストを導き、アーキテクチャの分割に意味を与える。

  13. 理由: アーキテクチャ特性とトレードオフの語彙を得たら、その判断を分散システムという具体に適用する。マイクロサービスは独立デプロイと自律性のために、あえて結合を切る設計を要求する。

  14. 理由: 基礎的な特性を理解したら、唯一の正解が無い「難所」——分解の粒度・データ所有・分散トランザクション——でのトレードオフ分析へ進む。同じ著者陣が「答え」ではなく「判断の仕方」を示す。

  15. 15ソフトウェアアーキテクチャの基礎(第2版)進化的アーキテクチャ推奨前提 / 基礎から進化的アーキテクチャへ

    理由: 静的なアーキテクチャ判断を学んだら、変化に適応し続ける設計へ視野を広げる。適応度関数でアーキテクチャ特性を継続的に検証し、進化を計測可能なものにする考え方を得る。

  16. 理由: 入門書で戦略・戦術の地図を得たら、概念の出どころと厳密な定義を原典で確かめる。エヴァンスの DDD はユビキタス言語やモデル駆動設計の根拠を与え、応用の判断を支える土台になる。

  17. 17マイクロサービスアーキテクチャモノリスからマイクロサービスへ推奨前提 / マイクロサービス基礎から移行戦略へ

    理由: マイクロサービスの原則を理解したら、既存モノリスからの現実的な移行戦略へ進む。多くの成功例はモノリスから段階的に切り出しており、最初から分散させない判断も含めて学ぶ。

  18. 理由: サービスを分割すると、次の難所はデータの分散・整合性・信頼性になる。DDIA は複製・分割・トランザクションといった分散データシステムの基礎理論とトレードオフを体系的に与える。

  19. 19単体テストの考え方/使い方レガシーコード改善ガイド参考 / テスト設計からレガシー改善へ

    理由: 良いテストの原則を理解したら、テストを書きにくいレガシーコードへその原則を適用する。依存を断ち切る継ぎ目を作り、特性テストで現状の振る舞いを固定してから安全に変更する。

  20. 20単体テストの考え方/使い方実践テスト駆動開発参考 / テスト原則から高度なTDDへ

    理由: テスト単体の良し悪しを判断できるようになったら、テストでオブジェクトの責務と協調を「育てる」設計手法へ広げる。テストダブルの使い分けが設計のフィードバックになる。

  21. 21Clean ArchitectureA Philosophy of Software Design, 2nd Edition推奨前提 / アーキテクチャから複雑性管理の哲学へ

    理由: 依存と境界の原則を得たら、その根底にある「複雑性をどう抑えるか」という普遍的な問いへ降りる。Ousterhout は深いモジュール・情報隠蔽という観点で複雑性管理を体系化する。

  22. 22リファクタリングA Philosophy of Software Design, 2nd Edition参考 / リファクタリングから設計哲学へ

    理由: 戦術的な改善手段を持ったら、「なぜ改善するのか」の戦略的視点=複雑性の正体へ視野を上げる。リファクタリングの判断基準に「複雑性を減らせているか」という軸が加わる。

  23. 23単体テストの考え方/使い方Effective Software Testing推奨前提 / テスト原則から設計技法へ

    理由: 良いテストの性質(回帰の検出・壊れにくさ・素早いフィードバック)を理解したら、境界値分析・同値分割・構造化テストといった体系的な技法で「何をテストすべきか」を引き上げる。直感頼みのケース選びを工学にする。

  24. 24Effective Software Testing実践プロパティベーステスト推奨前提 / テスト設計技法から不変条件検証へ

    理由: 例示ベースのテスト技法を押さえたら、入力を網羅的に生成して不変条件を検証するプロパティベーステストへ進む。人が思いつかない反例を機械に探させ、仕様の穴をあぶり出す。

  25. 25単体テストの考え方/使い方フルスタックテスティング推奨前提 / 単体テストからフルスタック品質戦略へ

    理由: 単体テストの土台ができたら、テストピラミッドに沿って統合・契約・E2E テストを適切な比率で積み上げ、システム全体の品質戦略へ広げる。下層を厚く、上層を薄くが原則。

  26. 26フルスタックテスティングLeanとDevOpsの科学[Accelerate]推奨前提 / CI/CD戦略からDORAメトリクスへ

    理由: テストと CI/CD で品質を作り込む土台ができたら、それが組織のデリバリ性能にどう効くかを計測の視点で捉える。DORA の4指標は「速さと安定はトレードオフではない」ことを実証的に示す。

  27. 27LeanとDevOpsの科学[Accelerate]Googleのソフトウェアエンジニアリング推奨前提 / DevOps科学から大規模組織文化へ

    理由: デリバリ性能を計測で改善できるようになったら、それを大規模・長期で支える組織文化と工学的実践へ視野を広げる。Google は「時間とスケールを統合したプログラミング」として持続可能性を論じる。

  28. 28GoogleのソフトウェアエンジニアリングLEADING QUALITY推奨前提 / 組織文化から品質リーダーへ

    理由: 大規模組織の工学的実践を理解したら、品質を「個人の努力」から「組織が育てる文化」へと引き上げるリーダーシップの視点へ進む。品質はマネジメントの戦略課題になる。

  29. 29フルスタックテスティングLEADING QUALITY参考 / フルスタック品質から組織文化へ

    理由: 技術的な品質戦略を一通り押さえたら、それをチーム・組織のレベルで根づかせる方法へ視野を広げる。テストの量や種類ではなく、品質に対する意思決定と文化が主題になる。

  30. 30Clean Architectureチームトポロジー推奨前提 / アーキテクチャからチーム設計へ

    理由: 技術的な境界を設計できるようになったら、その境界がチーム構造と相互に影響し合う事実(コンウェイの法則)へ視野を広げる。アーキテクチャはコードだけでなく組織の問題でもある。

  31. 31チームトポロジーエリック・エヴァンスのドメイン駆動設計推奨前提 / チーム編成からドメインモデルへ

    理由: チーム境界を流れに沿って設計したら、その境界をビジネスドメインの言葉で裏打ちする。境界づけられたコンテキストは、チームの輪郭とモデルの輪郭を同時に定義する。

  32. 32モノリスからマイクロサービスへチームトポロジー推奨前提 / モノリス分割からチーム境界へ

    理由: サービスを切り出す移行を進めると、分割の単位がチームの認知負荷と一致しているかが問われる。逆コンウェイ戦略で、望むアーキテクチャに合わせてチームを編成し直す。

  33. 理由: 適応度関数で進化を導く発想を得たら、同じ著者陣が扱う分散アーキテクチャの難所——粒度・データ所有・通信のトレードオフ——の具体的な分析へ進む。

  34. 34実践テスト駆動開発Effective Software Testing推奨前提 / 高度なTDD実践からテスト設計技法へ

    理由: テスト駆動で設計を育てる実践を経たら、テストケースそのものの十分性を体系的な技法で高める。設計の良さとケースの網羅性という両輪を回し、テストの抜けを減らす。

  35. 理由: 複雑性を抑える普遍原則を得たら、それをドメインの複雑性に特化して適用する。DDD はビジネスに内在する本質的な複雑性を、モデルとユビキタス言語で飼いならす。

  36. 36Clean Codeエリック・エヴァンスのドメイン駆動設計推奨前提 / コード品質からドメインモデリングへ

    理由: コード単位の品質基準を身につけたら、その表現力をドメインの言葉へ向ける。意味のある名前は、ユビキタス言語としてビジネスとコードを橋渡しし、モデルを語れるコードにする。

  37. 37Clean Architectureマイクロサービスアーキテクチャ推奨前提 / アーキテクチャ原則から分散実装へ

    理由: 依存方向と境界の原則は、サービス境界の設計にそのまま効く。境界づけられた責務を、独立にデプロイ可能な単位へ写像する具体的な設計判断へつなげる。

  38. 38単体テストの考え方/使い方フロントエンド開発のためのテスト入門推奨前提 / 単体テスト原則からFEテストへ

    理由: テスト設計の原則はフロントエンドにも通じる。テストピラミッドを土台に、UI は少数の E2E で要を押さえ、ロジックは単体で厚く守る——層を跨いでも判断基準は同じ。

  39. 39リーダブルコードClean Code推奨前提 / 可読性入門からコード品質体系へ

    理由: 命名や関数分割といった可読性の基礎を押さえたら、それらを「なぜそうするのか」の原則へ束ねる段階に進む。クリーンコードは個別テクニックを職業倫理と設計原則の体系へと接続する。

  40. 40リーダブルコード達人プログラマー推奨前提 / 可読性入門から達人哲学へ

    理由: 命名や整形といった可読性の具体技法を押さえたら、日々の判断を貫く職業哲学(DRY・直交性・変化への構え)へ視野を広げる。達人プログラマーは個々のテクニックを「なぜそうするか」の態度へ束ねる。

  41. 41リーダブルコードリファクタリング参考 / 可読性入門からリファクタリングへ

    理由: 読みやすいコードの形を知ったら、既存コードを壊さずその形へ寄せていく技法が要る。リファクタリングは「コードの臭い」を手がかりに、振る舞いを変えず小さく構造を改善する段取りを与える。

  42. 42達人プログラマーClean Code推奨前提 / 達人哲学からコード品質原則へ

    理由: 達人の心構え(割れた窓を放置しない・DRY を徹底する)を得たら、それを関数やクラス単位の具体的な品質基準へ落とし込む。クリーンコードは「良いコードとは何か」を原則と実例で体系化する。

  43. 43達人プログラマーリファクタリング参考 / 達人哲学からリファクタリングへ

    理由: 「割れた窓を放置しない」という達人の規律を、実際のコードへ適用する手段がリファクタリングである。劣化の兆候を見つけたその場で、振る舞いを保ったまま小さく直す習慣に変える。

  44. 44Clean Architectureエンタープライズ アプリケーションアーキテクチャパターン推奨前提 / クリーンアーキテクチャから PoEAA 原典へ

    理由: 層と依存方向の原則を得たら、それを実装へ落とす定番パターン(Repository・Service Layer・Domain Model)の原典へ進む。原則とパターンが対応づくと設計の語彙が一段深まる。

  45. 理由: 単一DBを前提としたエンタープライズパターンを押さえたら、複数ノードに分散したデータの一貫性・レプリケーション・パーティショニングへ視野を広げる。スケールの前提が変わる。

  46. 理由: 汎用的なオブジェクト間パターンを学んだら、層・永続化・分散といったエンタープライズ固有の文脈に効くパターン群へ進む。Fowler の PoEAA はその語彙(Repository・Domain Model 等)を与える。

  47. 47Head Firstデザインパターンリファクタリング参考 / パターン認識からリファクタリング技法へ

    理由: パターンを認識できる目を持つと、既存コードを「あるべきパターン」へ向けて安全に動かす技法が活きる。リファクタリングはパターン導入を一足飛びにせず、段階的な変換として進める道筋を与える。

  48. 48実践プロパティベーステストフルスタックテスティング参考 / 性質ベーステストからフルスタック品質戦略へ

    理由: 不変条件の検証技法を持ったら、それを単体から統合・E2E までの品質戦略の中に位置づける。各層で「何を性質として保証するか」を設計し、ピラミッド全体に一貫性を与える。

  49. 49エリック・エヴァンスのドメイン駆動設計データ指向プログラミング参考 / DDD の永続化を不変データ駆動で再考する

    理由: ドメインモデルをオブジェクトで表現する手法を学んだら、対照的に「コードとデータを分離し、不変データで複雑性を抑える」データ指向の発想に触れ、設計の前提を相対化する。

  50. 50A Philosophy of Software Design, 2nd Editionデータ指向プログラミング参考 / 複雑性管理の異なるアプローチとしてデータ指向へ

    理由: 複雑性管理の一般原則を得たら、その具体的な処方の一つとして「データと振る舞いの分離・不変性」を掲げるデータ指向プログラミングを検討する。同じ目的に異なる道がある。

  51. 51Head Firstデザインパターンレガシーコード改善ガイド参考 / パターン認識からレガシーコード改善へ

    理由: パターンの目で既存コードの構造を読めるようになると、テストの無いレガシーコードに安全に手を入れる足場づくりへ進める。継ぎ目を見つけてテストで覆い、そこから設計を改善していく。

  52. 52オブジェクト指向における再利用のためのデザインパターンClean Architecture参考 / GoFパターン原典からアーキテクチャ原則へ

    理由: クラス/オブジェクト単位のパターン語彙を得たら、それらを束ねてシステム全体の依存方向と境界を律する視点へ広げる。クリーンアーキテクチャは詳細を外側へ追いやり、ビジネスルールを中心に据える。

  53. 53ドメイン駆動設計をはじめようチームトポロジー推奨前提 / DDD境界からチーム編成設計へ

    理由: 境界づけられたコンテキストを引けるようになったら、その境界をチーム編成へ写像する。コンテキストとチームを一致させると認知負荷が下がり、価値の流れが速くなる。

  54. 54ソフトウェアアーキテクチャ・ハードパーツデータ指向アプリケーションデザイン推奨前提 / 難しい設計判断から分散データシステムへ

    理由: 分散アーキの難所でデータ分解の判断を迫られたら、その土台となる分散データの理論へ降りる。整合性・レプリケーション・ストレージエンジンの原理が、設計判断の根拠になる。

  55. 55Googleのソフトウェアエンジニアリング生成AI時代のソフトウェア開発推奨前提 / Googleの開発実践からAI駆動開発へ

    理由: 大規模組織の工学的実践を理解したら、生成 AI が開発の流れをどう変えるかを同じ規律で捉える。AI は道具であり、レビュー・テスト・設計判断という土台があってこそ生きる。

  56. 56達人プログラマー生成AI時代のソフトウェア開発推奨前提 / プラクティカル開発からAIツール活用へ

    理由: 達人の心構え(道具を磨き、自分の判断に責任を持つ)を得たら、生成 AI を新しい道具として取り込む。AI の出力を鵜呑みにせず検証できる基礎力こそ、AI 時代の達人性になる。

  57. 57生成AI時代のソフトウェア開発責任あるソフトウェアエンジニアリング推奨前提 / AI活用の実践から責任ある設計へ

    理由: AI を開発に取り込めるようになったら、その力が社会に及ぼす影響=責任の問いへ進む。生成物の正しさ・バイアス・説明責任を、設計の段階から織り込む視点を持つ。

  58. 58Building Secure and Reliable Systems責任あるソフトウェアエンジニアリング推奨前提 / 安全・信頼性から社会的責任へ

    理由: システムの安全性と信頼性を設計に組み込めるようになったら、その射程を利用者・社会への責任まで広げる。技術的な堅牢さは、倫理的・社会的な責任を果たすための土台になる。

次に探索する

依存関係でつながる分野