Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ドメイン駆動設計 #3

Open
shtnkgm opened this issue Jan 29, 2023 · 0 comments
Open

ドメイン駆動設計 #3

shtnkgm opened this issue Jan 29, 2023 · 0 comments

Comments

@shtnkgm
Copy link
Owner

shtnkgm commented Jan 29, 2023

ドメイン
解決すべき問題領域
講義のドメインとしては解決領域も含む
解決したい問題領域を整理する

コアドメイン
最も重要であり、事業的に他と差別化されており最優先で取り組まれるもの(競合優位なもの)

サブドメイン
コアドメインから使われる必要な部分
支援サブドメイン:業務的に特別だが重要でないもの
汎用サブドメイン:業務的に特別でないが必要なもの(認証系など)

ユビキタス言語
プロダクト全体で統一された言葉を使う
関係者は様々、企画、設計、開発者、デザイナー、顧客、関係部署
ただし関係者によって必要とするプロパティは異なるので、統一したモデルを作ることは難しい

境界付けられたコンテキスト
技術的なソリューションで解決するもの(解決領域)
コンテキストによってシステムの分割をし、モデルを使い分ける
大規模なシステムではモデリング対象をコンテキストで区切らないと定義できない(巨大なモデルを避ける)
1コンテキスト1アプリケーション
腐敗防止層:それぞれのコンテキストにて利用するモデルの変換を行う

コンテキストマップ(コンテキストマッピング)
分割したシステム間の関係を整理する(コンテキスト間の関係)
コンテキストとドメインが1:1だと開発しやすい

ドメインモデル
ドメインの構成要素
エンティティ:識別子を持つもの、DBでライフサイクルを管理するものなど
値オブジェクト:値に型を与えたもの、不変性あり
サービス:振る舞いだけを与えるもの、状態を持たない
リポジトリ:永続化の仕組み
ファクトリ:オブジェクトを生成する仕組み
集約:不変条件を管理する単位
ドメインイベント:エンティティの変化を表現したイベント

ヘキサゴナルアーキテクチャ
依存性逆転の原則により、ドメインモデルから外部システム(DB/UIなど)への依存を排除

CQRS
コマンドクエリ責務分離
ドメイン駆動設計はコマンドと相性が良い
クエリ:変更を伴わない処理(副作用なし)
コマンド:変更を伴う処理(副作用あり)、整合性が必要

名前を大切にする
曖昧な言葉はドメインに対する理解不足が原因かも

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant