DDD

開発ツールを最大限活かすために大切なこと

アジャイル、スクラム、テスト駆動開発、ドメイン駆動設計、継続的インテグレーション…。色々な開発ツールや開発の考え方があります。それぞれ素晴らしいツール(手段)であり、取り入れるだけで開発方法を変えることができます。ただ、このような素晴らしい…

【DDDメモ】サービス

DDD

エリック・エヴァンス ドメイン駆動開発P.104 ソフトウェア表現されたモデル サービス ドメインから生まれる概念の中には、オブジェクトとしてモデル化すると不自然なものもある。こうしたドメインで必要な機能をエンティティや値オブジェクトの責務として押…

【DDDメモ】関連

DDD

エリック・エヴァンスのドメイン駆動設計 P.81 現実の世界では、多対多の関連がたくさんあり、その多くはもともと双方向である。【中略】だが、これらの一般的な関連のせいで、実装と保守が複雑になってしまう。しかも、こうした一般的な関連は、そこにある…

【DDDメモ】モデルの整合性を維持する:腐敗防止層

DDD

腐敗防止層 エリック・エヴァンスのドメイン駆動設計 P.374 外部システムとのインタフェースには多くの渉外がある。例えば、インフラストラクチャ層は、プラットフォームが異なっていたり、異なるプロトコルを使用していたりするかもしれない他システムとの…

【DDDメモ】モデルの整合性を維持する:順応者

DDD

順応者 エリック・エヴァンスのドメイン駆動設計 P.371 上流チームのモデルに隷従することで生じる、境界づけられたコンテキスト間での複雑な変換を取り除くこと。確かに下流の設計者がとれるスタイルは制限され、そのアプリケーションにとって理想的なモデ…

【DDDメモ】モデルの整合性を維持する:顧客/供給者の開発チーム

DDD

エリック・エヴァンスのドメイン駆動設計 P.365 蒸溜チームが自由に開発の舵をとれなくなるのは、下流のチームが変更に対する拒否権を持っている場合や、変更を要求されるための手続きがあまりに面倒な場合である。下流のシステムを壊してしまうのではないか…

【DDDメモ】モデルの整合性を維持する:共有カーネル

DDD

共有カーネル エリック・エヴァンスのドメイン駆動設計 P.363 まとまりのない複数のチームが、密接に関連したアプリケーションに取り組んでいると、暫くの間は作業を急いで進めることができても、それぞれが作り出すものはうまく適合しないだろう。結果的に…

【DDDメモ】モデルの整合性を維持する:コンテキストマップ

DDD

コンテキストマップ エリック・エヴァンスのドメイン駆動設計 P.352 他のチームに所属する人々は、コンテキストの境界をあまり意識せず、境目をぼかしたり相互の接続を複雑にしたいする変更を、そうとは知らずに加えるかもしれない。別々のコンテキスト同士…

【DDDメモ】モデルの整合性を維持する:継続的な統合

DDD

継続的な統合 エリック・エヴァンスのドメイン駆動設計 P.349 多くの人々が同一の境界づけられたコンテキストで作業していると、モデルが分裂する傾向は強くなる。チームが大きければ大きいほど、問題も大きくなるが、3、4人ほどの少人数でも深刻な問題に直…

【DDDメモ】モデルの整合を維持する

DDD

境界づけられたコンテキスト エリック・エヴァンスのドメイン駆動設計 P.344 複数のモデルはどんな巨大なプロジェクトにも存在する。だが、別々のモデルに基づくコードが組み合わされると、ソフトウェアは、バグの温床となり、信頼できなくなり、理解しにく…

【DDDメモ】抽象化されたコア

DDD

抽象化されたコア エリック・エヴァンスのドメイン駆動設計 P.441 別々のモジュールに置かれたサブドメインの間で大量の相互作用があると、モジュール間で多数の参照を生成する必要が生じて、分割したことの価値をほとんどなくしてしまうか、相互作用を間接…

【DDDメモ】ドキュメントの作成

DDD

蒸溜ドキュメント エリック・エヴァンスのドメイン駆動設計 P.425 簡潔なドキュメントを書き、コアドメインとコアを構成する要素間の主要な相互作用を記述すること。 ドキュメントを独立させることに伴う通常のリスクは、すべてここにも該当する。 ドキュメ…