[バウンデッドコンテキスト名] ============================================== **最終更新**: [ 更新日を記載 ] .. contents:: 目次 :depth: 2 :local: 概要 -------------------------------------------- このバウンデッドコンテキストの目的と責務: - **対象ビジネス領域**: [ 具体的な業務領域(例:ユーザー管理、注文処理、在庫管理) ] - **主要責務**: [ このコンテキストが担う責任(例:会員の登録・認証・管理) ] - **境界**: [ 他のコンテキストとの境界(例:支払いコンテキストとの連携点) ] - **主要なビジネスルール**: [ 中核となるビジネスルール(例:一意性制約、業務フロー) ] エンティティ -------------------------------------------- **[エンティティ名]** **プロパティ**: - **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]** **発生条件**: [より具体的な発生条件] **統合パターン**: [他のバウンデッドコンテキストとの統合方法] 関連情報 -------------------------------------------- **関連ユースケース**: - :doc:`../usecase/[関連ユースケース名1]` - :doc:`../usecase/[関連ユースケース名2]` **関連データベース設計**: - :doc:`../database/[関連テーブル名1]` - :doc:`../database/[関連テーブル名2]` **関連ドメインモデル**: - :doc:`../domain_model` の [関連エンティティ名]セクション 関連情報 -------------------------------------------- **関連ユースケース**: - :doc:`../usecase/[関連ユースケース名1]` - :doc:`../usecase/[関連ユースケース名2]` **関連データベース設計**: - :doc:`../database/[関連テーブル名1]` - :doc:`../database/[関連テーブル名2]` **関連ドメインモデル**: - :doc:`../domain_model` の [関連エンティティ名]セクション