contentみんたくみんたくの技術ブログDDD実践入門を読んでモデリングやエンティティなどについて整理する2021年12月5日アーキテクチャDDD実践入門を読んでエンティティや値オブジェクト、モデリングについて整理してみました。エンティティのバリデーションを検討DDDとは「顧客と開発者が業務を戦略的に理解し、共通の言葉を使いながらシステムを発展させる手法」です。具体的には、チームの共通言語である「ユビキタス言語」を用いて「ドメインモデル」を構築し、それをコードとして実装します。大規模で密結合なシステムにならないように、「ドメイン」と「境界づけられたコンテキスト」でシステムを分割し、「コアドメイン」という最重要領域に集中して開発を行います。DDDは高品質のソフトウェアを設計する手法ここでいう高品質とはバグがないということではなく、ビジネス的に成功していることを指しています。「事業を理解し、チームの知識を1つにまとめる」ことを重視し、それを「ユビキタス言語」と呼ばれるチームの共通語でプログラムを実装します。設計を始めるにあたり、まず業務内容から整理していきます。開発する対象業務についてドメインエキスパートから要望を聞き出していきます。ここでは業務仕様を簡単なソフトウェア用件という形でユースケースやユーザーストーリという形で作成します。モデリングを検討しエンティティを抽出チームで共通のユビキタス言語を構築することを意識して、ドメインエキスパートと議論を行います。エンティティの抽出においては、シナリオにおいて「変更」というキーワードがある箇所に注目します。主語の用語がエンティティとなる可能性が高くなります。エンティティを識別する属性と振る舞いを検討エンティティに注目してモデリングを行います。エンティティ設計の初期段階ではエンティティを一意に特定する属性と振る舞いにだけ注目します。「一意な識別子」の設計エンティティを識別する一意な識別子を検討します。一意な識別子を決定したら、一意な識別子(IDや主キー値)の生成方法と生成タイミングについて検討します(生成方法と生成タイミングは省略)。一意な識別子を設定した後は、その識別子の値を変更しないようにします。識別子が設定済みにもかかわらず、変更処理が呼び出された場合はエラーとなるようにしなければいけません。エンティティの振る舞い(メソッド)を検討エンティティが持つ振る舞いについて検討していきます。ソフトウェア要件に登場する同志に注目することで、メソッドの候補を洗い出していきます。エンティティの作成方法を検討これまで検討してきたモデルをコードとして実装していきます。エンティティは一意である必要があるため、エンティティのコンストラクタには「識別子の生成に必要な情報」や「問い合わせを行うために必要な情報」を引数として渡します。エンティティのバリデーションを検討エンティティでは「属性単位」「オブジェクト全体」「複数オブジェクト時」という3つの粒度に分けてバリデーションを管理します。属性単位エンティティの属性/プロパティに値をセットする場合、「空ではないか」「5文字以上か」「30文字以下か」といった妥当性のチェックを行います。オブジェクト全体オブジェクト全体のチェックでは、実装クラスに対応した「バリデータ」クラスを作成し、適切なタイミングで呼び出すようにします。複数オブジェクトの状態が妥当かチェックするケースでは、必要な数だけバリデータを用意します。コメントをキャンセルメールアドレスが公開されることはありません。コメントデータの処理方法の詳細はこちらをご覧ください。