MVC

  • モデル:ビジネスロジックの表象
  • ビュー:モデルの視覚的表現
  • コントローラー:ユーザーの入力に対しモデルやビューを制御する

ECサイトにおけるビジネスロジック

  • ユーザー、商品、注文などの実体
  • 注文は複数の商品を含む関係
  • カートの内の商品の合計金額の計算といった処理

f:id:naegi82:20180821235000p:plain

コンピュータシステム上のビジネスロジックをユーザーと繋ぐのがコントローラーやビュー

上記のような考え方をMVCアーキテクチャという

  • 役割分担することでコードを整理・理解しやすくなる
  • 基本的にはオブジェクト思考を用いる
  • Rails, Laravel(PHP), Play Framework(Java)

 フレームワークの基本機能

  • HTTPリクエスト、レスポンスの制御
  • URIと画面の対応づけ
  • ユーザーの認証
  • データベースアクセス
  • HTMLの組み立て

一般的なコントローラ

  • モデルを呼び出す仕組み
  • 対応するビューを呼び出す仕組み

DBのテーブルに対応するモデル

  • DB操作用のメソッドが用意されている

ビュー(HTML)を組み立てやすくする仕組み

MVCフレームワークビジネスロジック以外の基本的な処理を部分を骨組み化したもの

→これを導入することでビジネスロジックに注力することができる。

MVCのモデルとMVCフレームワークのモデルは意味合いが違う

MVCとは、モデル、ビュー、コントローラの3つの役割からなる考え方。MVCにおけるモデルは、ビジネスロジックを指し示す。

MVCフレームワークのモデルは、そのフレームワークごとに意味合いが変わるので注意。

フレームワークによってビジネスロジックが制限されることが多い。モデルというクラスを継承すると予めメソッドが用意されてしまう。

アプリケーションによって、ビジネスロジックは異なる。

Symfony(PHP)は,HTTPの制御、認証処理などを細かくコンポーネントとして分離した設計になっている。それを組合わせてSymfonyができている。その組み合わせ方を変えてプラスαしたのが、Laravel. 

Symfonyは、継承を少なくして設計の自由度が高い。その分(高度な設計になる分)勉強が難しい。

アンチパターン

  • ファットコントローラ→モデルを単なるデータオブジェクトとして捉えてしまうと発生してしまう。