---
# System prepended metadata

title: 2021-05-05 Pair-A v2 定例
tags: [Pair-A v2]

---

# 2021-05-05 Pair-A v2 定例

## 疑問
### 粟田
#### 集約ルートは必ずエンティティになるか
- 値オブジェクトが集約ルートになることはない

#### ファクトリで行うバリデーションとドメインオブジェクトで行うバリデーション
- チーム名の重複チェック => ファクトリ
- チーム名のフォーマット => ドメインオブジェクト
    - ドメインオブジェクトに書けるやつはドメインオブジェクトに
    - ファクトリから作ることを分からせるにはどうする

#### オブジェクト生成時に別集約のエンティティIDが必要な場合、引数で受け取るのはオブジェクトかIDのみか
- オブジェクトを渡す
    - データの整合性が強い
    - オブジェクトを作るコスト
    - オブジェクトを勝手に操作される可能性がある
- IDを渡す
    - コストが低い
    - 変なIDが渡される可能性がある
    - ちゃんとしたデータかどうかはドメインサービスでチェックすれば良いのでは

#### 永続化したものを再構築する時はバリデーションをしないべきか
- 仕様変更があればデータも合わせて直すべき
- しなくて良いのでは問題

### 玄徳

### 永井
- DBにある設定値をアプリ側でどう定義すべきか
    - アプリ側かDB側のどちらかに置くべき
    - どちらにおくべきか
        - 必要に応じてどちらに置くか考える
          - どういう基準で考えるか
              - DBに置く
                  - ユーザーが触る場合
              - アプリに定義する
                  - 都道府県のように変更がない場合
```typescript=
export const ProgressStatusEnum = {
  complete: '完了',
  readyForReview: 'レビュー待ち',
  notStarted: '未着手',
} as const;
type progressStatusType = typeof ProgressStatusEnum[keyof typeof ProgressStatusEnum];
```

- コンストラクタでバリデーション処理があって、同じバリデーション処理を別メソッドでも使いたいときどうする
https://github.com/ampersand-github/DDD-praha-challenge/blob/Praha_challenge_ddd_%E5%8F%82%E5%8A%A0%E8%80%85%E9%9B%86%E7%B4%84(%E3%83%89%E3%83%A1%E3%82%A4%E3%83%B3%E5%B1%A4)_%E3%81%9D%E3%81%AE2/serverSide/src/domain/participant/team/team.ts



###### Tags: `Pair-A v2`