[バウンデッドコンテキスト名]

最終更新: [ 更新日を記載 ]

概要

このバウンデッドコンテキストの目的と責務:

  • 対象ビジネス領域: [ 具体的な業務領域(例:ユーザー管理、注文処理、在庫管理) ]

  • 主要責務: [ このコンテキストが担う責任(例:会員の登録・認証・管理) ]

  • 境界: [ 他のコンテキストとの境界(例:支払いコンテキストとの連携点) ]

  • 主要なビジネスルール: [ 中核となるビジネスルール(例:一意性制約、業務フロー) ]

エンティティ

[エンティティ名]

プロパティ:

  • ID: [ ID型 ]([ 説明 ])

  • [プロパティ名1]: [ 型 ]([ 用途・制約 ])

  • [プロパティ名2]: [ 型 ]([ 用途・制約 ])

  • [プロパティ名3]: [ 型 ]([ 用途・制約 ])

  • 作成日時: DateTime([ エンティティ作成日時 ])

  • 更新日時: DateTime([ 最終更新日時 ])

メソッド:

  • [メソッド名1]([引数]): [ 戻り値型 ]

    • 目的: [ メソッドの目的 ]

    • 事前条件: [ 必要な前提条件 ]

    • 事後条件: [ 実行後の状態 ]

    • 例外: [ 発生する例外とその条件 ]

  • [メソッド名2]([引数]): [ 戻り値型 ]

    • 目的: [ メソッドの目的 ]

    • ビジネスルール: [ 適用されるビジネスルール ]

    • 副作用: [ ドメインイベント発行など ]

ビジネス不変条件:

  • [不変条件1 ](例:IDは一意である必要がある)

  • [不変条件2 ](例:ステータスは定義された値のみ有効)

  • [不変条件3 ](例:作成日時は更新日時以前である必要がある)

値オブジェクト

[値オブジェクト名1]

プロパティ:

  • [プロパティ名]: [ 型 ]([ 制約・説明 ])

バリデーション:

  • [バリデーション名1]: [ ルール詳細(例:RFC 5322準拠のメール形式) ]

  • [バリデーション名2]: [ ルール詳細(例:最大文字数制限) ]

  • [バリデーション名3]: [ ルール詳細(例:必須文字種の組み合わせ) ]

不変条件:

  • [不変条件1 ](例:nullや空文字は許可されない)

  • [不変条件2 ](例:形式チェックに通った値のみ有効)

[値オブジェクト名2]

プロパティ:

  • [プロパティ名1]: [ 型 ]([ 制約・説明 ])

  • [プロパティ名2]: [ 型 ]([ 制約・説明 ])

  • [プロパティ名3]: [ 型 ]([ 制約・説明 ])

バリデーション:

  • [複合バリデーション1]: [ 複数フィールドの組み合わせルール ]

  • [複合バリデーション2]: [ 相互依存関係のルール ]

集約

[集約名1]

集約ルート: [エンティティ名]

含まれるオブジェクト:

  • [エンティティ名](集約ルート)

  • [値オブジェクト名1]

  • [値オブジェクト名2]

  • [子エンティティ名](存在する場合)

集約不変条件:

  • [集約レベル不変条件1](例:集約内の一意性保証)

  • [集約レベル不変条件2](例:状態遷移の整合性)

  • [集約レベル不変条件3](例:ビジネスルールの強制)

集約操作:

  • [操作名1]([引数]): [戻り値型]

    • 引数: [引数の詳細説明]

    • 戻り値: [戻り値の詳細説明]

    • ビジネスルール: [適用されるルール]

    • 副作用: [ドメインイベント発行など]

    • 例外: [発生する例外条件]

[集約名2]

集約ルート: [エンティティ名]

含まれるオブジェクト:

  • [エンティティ名](集約ルート)

  • [値オブジェクト名]

ライフサイクル:

  • 作成: [作成条件とプロセス]

  • 更新: [更新可能な状態と条件]

  • 削除: [削除条件と制約]

ドメインサービス

[サービス名1]

責務: [サービスの主要な責務(例:複数集約にまたがるビジネスロジック)]

メソッド:

  • [メソッド名]([引数]): [戻り値型]

    • 目的: [メソッドの目的]

    • 引数: [引数の詳細]

    • 戻り値: [戻り値の詳細]

    • 処理概要: [処理の流れ]

    • 業務ルール: [適用するビジネスルール]

    • 依存関係: [使用する他のドメインオブジェクト]

[サービス名2]

責務: [サービスの主要な責務(例:外部システム連携のビジネスロジック)]

協調オブジェクト:

  • [集約名1]

  • [集約名2]

  • [他のドメインサービス名]

リポジトリ

[リポジトリ名1]

対象集約: [集約名]

基本操作:

  • 保存: save([集約名]) : void

  • ID取得: findById([ID型]) : [集約名] | null

  • 削除: delete([集約名]) : void

検索操作:

  • [検索メソッド名1]([条件パラメータ]): [戻り値型]

    • 検索条件: [検索条件の詳細]

    • 戻り値: [単一オブジェクト/リスト/ページネーション]

    • パフォーマンス考慮: [インデックス要件など]

  • [検索メソッド名2]([条件パラメータ]): [戻り値型]

制約:

  • 一意性制約: [一意性を保証する項目]

  • 参照整合性: [他のエンティティとの関係]

  • ビジネス制約: [ビジネスルールに関する制約]

アプリケーションサービス

[アプリケーションサービス名]

責務:

  • [責務1(例:ユースケースの調整とトランザクション管理)]

  • [責務2(例:ドメインサービスとリポジトリの協調)]

  • [責務3(例:ドメインイベントの発行管理)]

依存関係:

  • [ドメインサービス名1]

  • [ドメインサービス名2]

  • [リポジトリ名1]

  • [リポジトリ名2]

  • [外部サービス名]

メソッド:

  • [メソッド名]([引数]): [戻り値型]

    • ユースケース: [対応するユースケース]

    • トランザクション: [トランザクション境界]

    • 処理フロー: [主要な処理ステップ]

    • 例外処理: [エラーハンドリング方針]

    • ドメインイベント: [発行するイベント]

ドメインイベント

[イベント名1]

発生タイミング: [イベントが発生する具体的なタイミング]

イベントデータ:

  • [データ名1]: [型]([データの説明])

  • [データ名2]: [型]([データの説明])

  • 発生日時: DateTime(イベント発生日時)

  • 集約ID: [ID型](関連する集約の識別子)

処理対象:

  • [処理システム/コンテキスト名1]: [処理内容]

  • [処理システム/コンテキスト名2]: [処理内容]

[イベント名2]

発生条件: [より具体的な発生条件]

統合パターン: [他のバウンデッドコンテキストとの統合方法]

関連情報

関連ユースケース:

  • ../usecase/[関連ユースケース名1]

  • ../usecase/[関連ユースケース名2]

関連データベース設計:

  • ../database/[関連テーブル名1]

  • ../database/[関連テーブル名2]

関連ドメインモデル:

関連情報

関連ユースケース:

  • ../usecase/[関連ユースケース名1]

  • ../usecase/[関連ユースケース名2]

関連データベース設計:

  • ../database/[関連テーブル名1]

  • ../database/[関連テーブル名2]

関連ドメインモデル: