---
# System prepended metadata

title: 2021-04-29 第11回メンターセッション
tags: [Team-2]

---

# 2021-04-29 第11回メンターセッション

## 項目

### ファーストクラスコレクションの実装について

- 実装としては概ね問題ない
- 気になったポイント
    - 松原さんは過去の実装でファーストクラスコレクションをあまり作ったことない
        - 集約にすることが多いので
        - ルールが複雑になってきた時大変
    - Repositoryの作り方に注意
        - BookではなくBookListにする、など
- 疑問
    - DBに聞きに行かなくても、メモリに乗ってるもの見ればいいというのはファーストクラスオブジェクトの利点では？
        - ドメイン次第かも
            - ファーストクラスコレクションはバリューオブジェクト的に扱わないといけない（更新ではなく、再構築）

### 値オブジェクトの永続化について
- IDの生成はインフラ層に隠蔽してOK
- そもそも在籍ステータスの追加とか更新とか削除は、アプリケーションで行う必要ないかも？（バッチでOKかも？アプリの寿命的に）
- ドメインモデリングはデータベースの都合とは切り離して考えるべき

### ファクトリの作り方について
- ファクトリは隠蔽されていればいるほど良い
- 複雑な生成を全てカプセル化するインターフェースを提供する
- インスタンス化されるオブジェクトの具象クラスをクライアントが知ってはならない

### メソッドの引数はインターフェースかクラスか
- 基本はクラスで良いのではないか
- インターフェースはビルド時のエラーをチェックできるがランタイム時のエラーをチェックできる

### DDDのモデリング後の実装手順
- 共同開発の場合、ユースケースから作ると複数人がドメインオブジェクトを変更するのでコンフリクトが起きやすい
- ユースケースは、まず要件をコメントで書いただけのものを全ユースケース分用意するとやりやすい

###### tags: `Team-2`
