モデル層へのロジック集約と
Fat Controller 回避
2026.04.18
10 MIN READ
AUTHOR: MAYA
"コントローラーに何百行ものコードを書くのは、指揮者が楽器を奪って自分で演奏を始めるようなものです。"
1. 指揮者に専念させる
初期の開発では、データの加工もバリデーションもすべてコントローラーに書きがちです。私はこの「Fat Controller(肥大なコントローラー)」を避け、コントローラーの責務を「リクエストを受け取り、適切なモデルを呼び出し、ビューを返す」という3点に限定しました。
Ideal MVC Flow
- Controller: ユーザーの意図を解釈する
- Model: データの計算・保存・ルールを担う
- View: モデルの状態を視覚化する
2. ドメインロジックの隠蔽
たとえば「投稿の公開条件」などのビジネスルールは Model 内のメソッドに閉じ込めます。これにより、API 経由でも画面経由でも、同じ Model を呼び出すだけで一貫した挙動が保証されます。この設計思想が、後の BICSTATION の堅牢性を支えることになりました。
Encapsulation Example
$post->publish() と呼ぶだけで、日付チェックやステータス変更、ログ記録が内部で完結する。利用側はその詳細を知る必要はありません。