🧭 このDayを終えると説明できること
「ビジネスロジックをどこに置くか」「複数の更新をどう整合させるか」「同時アクセスの競合をどう防ぐか」を、具体例で説明できる。
Fat Controller問題 — コントローラに何もかも書くと何が壊れるか
テスト困難・再利用不可・読めない。肥大化したコントローラの具体的な害を知る。
設問 2 問
サービス層 — ビジネスロジックの置き場所
業務手順を専用クラスに集約し、コントローラ・モデルと責務を分担。DIで受け取る。
設問 3 問
トランザクション — 複数の更新を全部成功か全部失敗に
ACIDの考え方と、DB::transactionで整合性を守るべき場面。
排他制御 — 同時アクセスの競合を防ぐ
悲観ロックと楽観ロックの仕組みと使い分け。在庫・残高の競合で理解する。