mcpField
V
value-objects-and-dtos

value-objects-and-dtos

github.com/dev-toolings開発22791 回インストール3 週間前に更新
リポジトリ

value-objects-and-dtos について

Symfony 開発向けのスキルです。ドメイン値には値オブジェクト、境界をまたぐデータには DTO を用いる設計を導きます。不変設計や Doctrine での永続化、不変条件のテストも扱います。

主な機能

  1. 01値オブジェクトと DTO の使い分け
  2. 02生成時の検証と不変性
  3. 03値による等価性と新しいインスタンスでの操作
  4. 04Doctrine 埋め込みとしての永続化
  5. 05入力 DTO と出力 DTO の分離
  6. 06各不変条件のテスト

活用シーン

  1. 01ドメイン概念の生のスカラー値を置き換える
  2. 02リクエストや API 境界のデータを設計する
  3. 03Doctrine エンティティに値オブジェクトを格納する

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/dev-toolings/superpowers-symfony --skill value-objects-and-dtos

インストール後、Claude Code で/value-objects-and-dtosを入力して読み込まれたか確認します。

同梱ファイルreference.md

詳細

値オブジェクトと DTO(Symfony)

使用する場面

  • 独自のルールを持つドメイン概念(お金、メールアドレス、住所など)が、生のスカラー値として渡されている場合。
  • データが境界を越える場合:リクエスト入力、API 出力、メッセージのペイロード。
  • Doctrine エンティティ内に値オブジェクトを保存する場合。

デフォルトのワークフロー

  1. 不変条件を持つドメイン概念には値オブジェクトを、境界を越えるデータには DTO を使うかを決めます。
  2. readonly にし、コンストラクターで検証して、すばやくエラーを返します。
  3. 値オブジェクトには値に基づく等価性を持たせ、新しいインスタンスを返す操作を実装します。
  4. 値オブジェクトは Doctrine の埋め込み可能オブジェクトとして永続化します。
  5. 入力 DTO(検証制約)と出力 DTO(シリアライザー属性)は分けておきます。

ガードレール

  • セッターや変更処理は使いません。変更する場合は新しいインスタンスを返します。
  • DTO は振る舞いを持たず、データのみを保持します。
  • エンティティを API の入力や出力として直接公開しないでください。
  • 金額は浮動小数点数ではなく、最小通貨単位の整数として保存します。

段階的な情報開示

  • 実行時の指針とリスク管理には、このファイルを使用します。
  • 詳細な実装情報が必要な場合は、参照資料を開きます。

出力要件

  • 不変条件と等価性を備えた値オブジェクト。
  • 入力 DTO と出力 DTO、およびそれらとエンティティとのマッピング。
  • 各不変条件の単体テスト。

参照資料

  • reference.md

コメント