ドメインルールの書き方
ドメインルールとは、ビジネスロジック固有の制約です。これらはLinterやフレームワークでは検出できないため、CLAUDE.mdに明記する価値が非常に高い領域です。
ビジネスロジックの制約
## ドメインルール
### 金額計算
- 金額は必ず \`Decimal\` 型(または整数でセント単位)で扱う
- 浮動小数点(\`float\`, \`double\`)での金額計算は禁止
- 税額計算は切り捨て(\`ROUND_DOWN\`)で統一
- 通貨は ISO 4217 コードで管理(例: JPY, USD)
### ユーザー管理
- 論理削除を使用(物理削除は禁止)
- メールアドレスは正規化してから保存(小文字変換 + トリム)
- パスワードは bcrypt でハッシュ化(コスト因子: 12)
コンプライアンス要件
### 個人情報の扱い
- 個人情報(PII)はログに出力しない
- APIレスポンスに不要な個人情報を含めない(必要最小限の原則)
- 個人情報を含むテーブルへのアクセスは監査ログを記録する
- テストデータに実在の個人情報を使わない(ダミーデータを使用)
### データ保持期間
- アクセスログ: 90日
- 監査ログ: 7年
- 退会ユーザーのデータ: 30日後に匿名化
ドメイン用語集
チーム内で用語のブレを防ぐために、用語集を定義します。
### ドメイン用語
| 用語 | 英語名 | 定義 |
|------|--------|------|
| 施設 | Facility | サービスを提供する物理的な場所 |
| 予約 | Reservation | 施設の利用枠を確保すること |
| 枠 | Slot | 予約可能な時間帯の最小単位(30分) |
| 会員 | Member | 有料プランに加入しているユーザー |
ドメイン用語集があると、Claudeはコード内の変数名やテーブル名を統一してくれます。たとえば「施設」に関するモデルは必ず Facility になり、Shop や Store とブレることがなくなります。