==== Laravelで複雑なフィールド(たとえば JSON カラム)を型安全に扱いたいなら、独自の Eloquent キャスト(CastsAttributes)を作って Value Object を返すようにすると便利です。 手順の例: 1. `php artisan make:cast MoneyCast` 2. Cast クラスで `CastsAttributes` を実装し、`get()` で JSON→Money インスタンス、`set()` で Money→JSON に変換 3. モデルの `$casts` で指定 ```php // app/Casts/MoneyCast.php namespace App\Casts; use Illuminate\Contracts\Database\Eloquent\CastsAttributes; use App\ValueObjects\Money; class MoneyCast implements CastsAttributes { public function get($model, string $key, $value, array $attributes) { return new Money(json_decode($value, true)); } public function set($model, string $key, $value, array $attributes) { return json_encode($value instanceof Money ? $value->toArray() : (array)$value ); } } // app/Models/Product.php class Product extends Model { protected $casts = [ 'price' => \App\Casts\MoneyCast::class, ]; } ``` これで `$product->price` は常に Money インスタンスとして扱え、ドメインロジックを Value Object 側に集約できます。