質問: サービスの役割について教えて下さい。 CakePHPでMVCを学んだのですが、CakePHPにはサービスというものがないのでどういう役割なのかがわかりません。 コントローラはユーザからの要求に対して必要な処理を抽出し、 ビューは結果などを伝えるために表示するもの、 モデルはコントローラから要求される処理をまとめておくものだと認識しています。 (間違っていますでしょうか) 最近サービスという概念があることを知ったのですが、これはモデルの中に更に分けられるものなのでしょうか。それともモデルのことを言ってるのでしょうか? わかりやすくサービスというものについて教えていただけると嬉しいです。
回答: WebアプリでのMVCでは通常コントローラー/アクションが特定のURLパターン、モデルがDBのテーブルという物理的な意味を持っています。 要件によってはアクションから一括更新や分割検索など複雑なモデル操作が必要になる場合がありますが、これをコントローラーやモデルに記述するのは行儀が良くないということでコントローラーとモデルの間にサービス層を挟み、データ上有効なモデル操作の単位で分割してサービスのメソッドを実装します。 > > モデルはコントローラから要求される処理をまとめておくものだと認識しています。 > > > という認識なら、モデルを単純なSQLに対応する部分とSQLを組み合わせたロジック部分に分割したロジック側がサービスということになるかと思います。 MVC以外のアーキテクチャではビジネスロジックと呼ばれることが多いです。