Domain
Software Design
A systematic learning path for software design — from clean code to architecture, testing, and quality culture. Covers code quality, TDD, DDD, distributed system design, and DevOps/quality organization.
The Terrain of This Field
The terrain of software design can be read as a single ascending path: it begins at "readable code" under your feet, rises through the habits that preserve quality (refactoring and test-driven development), and continues up to the highlands of "architecture" that overlook the whole system.
The first continent is the realm of "code quality" — variable names, functions, and responsibilities at the micro scale. Beyond it spread the hills of "testing and refactoring" for growing code without breaking it, and further on rise the mountain ranges of "clean architecture" and "domain-driven design," where you design the direction of dependencies and the boundaries between modules.
Deeper still lie the plateaus of "scale and operations" — distributed systems, data-intensive design, and DevOps/quality organizations. The key to surveying this field is recognizing that the scale of concerns connects continuously, from the micro (code) to the macro (organization and operations).
Share this map
グループ化
Difficulty
Difficulty
Dependencies
グラフを計算中...
Books in this domain
33 booksLeanとDevOpsの科学[Accelerate]
テクノロジーの戦略的活用が組織変革を加速する
Nicole Forsgren, Jez Humble, Gene Kim
進化的アーキテクチャ
絶え間ない変化を支える
Neal Ford, Rebecca Parsons, Patrick Kua
マイクロサービスアーキテクチャ
第2版
Sam Newman
Building Secure and Reliable Systems
Best Practices for Designing, Implementing, and Maintaining Systems
Heather Adkins, Betsy Beyer, Paul Blankinship, Piotr Lewandowski, Ana Oprea, Adam Stubblefield
Clean Architecture
達人に学ぶソフトウェアの構造と設計
Robert C. Martin
Clean Code
アジャイルソフトウェア達人の技
Robert C. Martin
データ指向プログラミング
ソフトウェアがもつ複雑さの軽減に向けて
Yehonathan Sharvit
データ指向アプリケーションデザイン
信頼性、拡張性、保守性の高い分散システム設計の原理
Martin Kleppmann
Designing Distributed Systems
Patterns and Paradigms for Scalable, Reliable Services
Brendan Burns
エリック・エヴァンスのドメイン駆動設計
Eric Evans
Effective Software Testing
A developer's guide
Mauricio Aniche
フルスタックテスティング
10のテスト手法で実践する高品質ソフトウェア開発
Gayathri Mohan
ソフトウェアアーキテクチャの基礎(第2版)
エンジニアリングに基づく体系的アプローチ
Mark Richards, Neal Ford
生成AI時代のソフトウェア開発
ツールを賢く選択、評価、活用し、より速く効率的な開発を進めるために
Sergio Pereira
オブジェクト指向における再利用のためのデザインパターン
Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides
実践テスト駆動開発
テストに導かれてオブジェクト指向ソフトウェアを育てる
Steve Freeman, Nat Pryce
Head Firstデザインパターン
頭とからだで覚えるデザインパターンの基本
Eric Freeman, Elisabeth Robson
LEADING QUALITY
優れたリーダーはいかにして高品質のソフトウェアを提供し成長を加速させるか
Ronald Cummings-John, Owais Peer
ドメイン駆動設計をはじめよう
ソフトウェアの実装と事業戦略を結びつける実践技法
Vlad Khononov
モノリスからマイクロサービスへ
モノリスを進化させる実践移行ガイド
Sam Newman
エンタープライズ アプリケーションアーキテクチャパターン
Patterns of Enterprise Application Architecture
Martin Fowler
A Philosophy of Software Design, 2nd Edition
John Ousterhout
達人プログラマー
熟達に向けたあなたの旅 第2版
David Thomas, Andrew Hunt
実践プロパティベーステスト
PropErとErlang/Elixirではじめよう
Fred Hebert
リーダブルコード
より良いコードを書くためのシンプルで実践的なテクニック
Dustin Boswell, Trevor Foucher
リファクタリング
既存のコードを安全に改善する 第2版
Martin Fowler
責任あるソフトウェアエンジニアリング
現実社会におけるGoogleのケーススタディとともに
Daniel Barrett, Goggle Engineering
ソフトウェアアーキテクチャ・ハードパーツ
分散アーキテクチャのためのトレードオフ分析
Neal Ford, Mark Richards, Pramod Sadalage, Zhamak Dehghani
Googleのソフトウェアエンジニアリング
持続可能なプログラミングを支える技術、文化、プロセス
Titus Winters, Tom Manshreck, Hyrum Wright
テスト駆動開発
Kent Beck
チームトポロジー
価値あるソフトウェアをすばやく届ける適応型組織設計
Matthew Skelton, Manuel Pais
単体テストの考え方/使い方
Vladimir Khorikov
レガシーコード改善ガイド
Michael C. Feathers
Dependencies
- 01devops-handbooksoftware-engineering-at-googleRecommended / DevOps文化から大規模組織文化へ
- 02testing-javascript-applicationsfull-stack-testingRelated / JS テスト戦略からフルスタック品質戦略へ
- 03micro-frontendsbuilding-microservicesRelated / FE分散からBE分散の対応概念へ
- 04clean-coderefactoringRecommended / コード品質からリファクタリングへ
Reason: Once you know what good code looks like, you need techniques to safely move existing code toward that standard. Refactoring offers a systematic way to improve structure without changing behavior, guided by code smells.
- 05clean-codetdd-by-exampleRecommended / コード品質からTDDへ
Reason: To keep writing clean code, you need a foundation that lets you change it without fear. Test-driven development instills the discipline of growing clean, working code in small cycles, turning quality into a habit.
- 06clean-codeclean-architectureRecommended / コード品質からアーキテクチャへ
Reason: Once quality at the function and class level is second nature, the next step is to design the direction of dependencies and boundaries across the whole system. Clean Architecture provides the principle of pushing details outward and keeping business rules at the core.
- 07head-first-design-patternsgof-design-patternsRecommended / パターン入門から原典へ
- 08tdd-by-exampleunit-testing-principlesRecommended / TDD基礎からテスト設計原則へ
- 09tdd-by-examplegrowing-oo-softwareRecommended / TDD基礎から高度なTDDへ
- 10refactoringworking-with-legacy-codeRecommended / リファクタリングからレガシーコード改善へ
- 11clean-architecturefundamentals-of-software-architectureRecommended / アーキテクチャ原則から体系的学習へ
Reason: After gaining an intuition for the ideal shape from Clean Architecture, you formalize architectural characteristics and trade-offs into a shared vocabulary. This book elevates design judgment from personal instinct to a discipline you can reason about.
- 12clean-architecturelearning-dddRecommended / アーキテクチャからDDD入門へ
Reason: Once you can control the direction of dependencies, the next question becomes where to draw the boundaries. Domain-Driven Design derives bounded contexts from the language of the business, giving architectural decomposition real meaning.
- 13fundamentals-of-software-architecturebuilding-microservicesRecommended / アーキテクチャ基礎から分散設計へ
- 14fundamentals-of-software-architecturesoftware-architecture-the-hard-partsRecommended / 基礎から実践的な設計判断へ
- 15fundamentals-of-software-architecturebuilding-evolutionary-architecturesRecommended / 基礎から進化的アーキテクチャへ
- 16learning-ddddomain-driven-designRecommended / DDD入門から原典へ
Reason: After mapping the strategic and tactical landscape with an introductory text, you verify the origin and precise definitions of the concepts in the source. Evans' DDD grounds the ubiquitous language and model-driven design, forming the foundation for applied judgment.
- 17building-microservicesmonolith-to-microservicesRecommended / マイクロサービス基礎から移行戦略へ
- 18building-microservicesdesigning-data-intensive-applicationsRecommended / 分散設計からデータシステムへ
- 19unit-testing-principlesworking-with-legacy-codeRelated / テスト設計からレガシー改善へ
- 20unit-testing-principlesgrowing-oo-softwareRelated / テスト原則から高度なTDDへ
- 21clean-architecturephilosophy-of-software-designRecommended / アーキテクチャから複雑性管理の哲学へ
- 22refactoringphilosophy-of-software-designRelated / リファクタリングから設計哲学へ
- 23unit-testing-principleseffective-software-testingRecommended / テスト原則から設計技法へ
- 24effective-software-testingproperty-based-testing-practiceRecommended / テスト設計技法から不変条件検証へ
- 25unit-testing-principlesfull-stack-testingRecommended / 単体テストからフルスタック品質戦略へ
- 26full-stack-testingaccelerate-lean-devopsRecommended / CI/CD戦略からDORAメトリクスへ
- 27accelerate-lean-devopssoftware-engineering-at-googleRecommended / DevOps科学から大規模組織文化へ
- 28software-engineering-at-googleleading-qualityRecommended / 組織文化から品質リーダーへ
- 29full-stack-testingleading-qualityRelated / フルスタック品質から組織文化へ
- 30clean-architectureteam-topologiesRecommended / アーキテクチャからチーム設計へ
- 31team-topologiesdomain-driven-designRecommended / チーム編成からドメインモデルへ
- 32monolith-to-microservicesteam-topologiesRecommended / モノリス分割からチーム境界へ
- 33building-evolutionary-architecturessoftware-architecture-the-hard-partsRecommended / 進化的設計から分散の難所へ
- 34growing-oo-softwareeffective-software-testingRecommended / 高度なTDD実践からテスト設計技法へ
- 35philosophy-of-software-designdomain-driven-designRelated / 複雑性管理からDDDへ
- 36clean-codedomain-driven-designRecommended / コード品質からドメインモデリングへ
- 37clean-architecturebuilding-microservicesRecommended / アーキテクチャ原則から分散実装へ
- 38unit-testing-principlesfrontend-testing-introRecommended / 単体テスト原則からFEテストへ
- 39readable-codeclean-codeRecommended / 可読性入門からコード品質体系へ
Reason: After grasping the basics of readability such as naming and function decomposition, you move on to binding them into principles of why. Clean Code connects individual techniques into a coherent system of craftsmanship and design principles.
- 40readable-codepragmatic-programmerRecommended / 可読性入門から達人哲学へ
- 41readable-coderefactoringRelated / 可読性入門からリファクタリングへ
- 42pragmatic-programmerclean-codeRecommended / 達人哲学からコード品質原則へ
- 43pragmatic-programmerrefactoringRelated / 達人哲学からリファクタリングへ
- 44clean-architecturepatterns-of-enterprise-app-architectureRecommended / クリーンアーキテクチャから PoEAA 原典へ
- 45patterns-of-enterprise-app-architecturedesigning-data-intensive-applicationsRelated / PoEAA から分散データ設計へ
- 46gof-design-patternspatterns-of-enterprise-app-architectureRelated / GoF パターンからエンタープライズパターンへ
- 47head-first-design-patternsrefactoringRelated / パターン認識からリファクタリング技法へ
- 48property-based-testing-practicefull-stack-testingRelated / 性質ベーステストからフルスタック品質戦略へ
- 49domain-driven-designdata-oriented-programmingRelated / DDD の永続化を不変データ駆動で再考する
- 50philosophy-of-software-designdata-oriented-programmingRelated / 複雑性管理の異なるアプローチとしてデータ指向へ
- 51head-first-design-patternsworking-with-legacy-codeRelated / パターン認識からレガシーコード改善へ
- 52gof-design-patternsclean-architectureRelated / GoFパターン原典からアーキテクチャ原則へ
- 53learning-dddteam-topologiesRecommended / DDD境界からチーム編成設計へ
- 54software-architecture-the-hard-partsdesigning-data-intensive-applicationsRecommended / 難しい設計判断から分散データシステムへ
- 55software-engineering-at-googlegenerative-ai-software-devRecommended / Googleの開発実践からAI駆動開発へ
- 56pragmatic-programmergenerative-ai-software-devRecommended / プラクティカル開発からAIツール活用へ
- 57generative-ai-software-devresponsible-software-engineeringRecommended / AI活用の実践から責任ある設計へ
- 58building-secure-reliable-systemsresponsible-software-engineeringRecommended / 安全・信頼性から社会的責任へ