MVCについてわかっていることをまとめる
事前知識(間違っている部分がある可能性)
全体の流れ
- URLが入力されるとルーティングを操作するroute.rbにURLのルーティングと一致したコントローラのアクションに割り振る.
- 割り振られたコントローラのアクション内で操作を行う.
- この際にモデルとコントローラでのやり取りを行い,もしデータベースとのやり取りが行われる際はモデルが担当する.
- コントローラとモデルのやり取りを行いながら,アクション名と同じビューにコントローラのデータ(インスタンス変数)を渡してHTML等を描画する.
- 描画されたHTMLファイルをコントローラで受とり,それをブラウザに返す.
MVCの役割
-
Model
Model(以下モデル)はデータベースの操作や,データの管理等のビジネスロジックを行うもので,
特に重要なデータの処理等はここに書くべきである.
ただし,モデル自体が肥大化する可能性があるので,気をつけなければならない. -
Controller
Controller(以下コントローラ)は主にビューやモデルとのやり取りを行い,やり取りは各アクションで
まとめられている.
コントローラは軽量であるべきなので,処理は各コントローラのヘルパーやモデルに書くべきである. -
View
View(以下ビュー)は主にコントローラとやり取りを行い,コントローラからのデータを取得して,
専用のERB(埋め込みRuby)を使う.
ERBは最終的にHTMLとして描画される.
モデルからのデータはすべてコントローラを中継してビューに送られる.
ビューではDRYに基づいて部分ビュー(パーシャル)を使ってERBを細かく分けることができる.
ビューのHTMLはコントローラを経由してブラウザに送られる.
MVCの調査
MVCが使われる理由
簡単に言うと質の高いインタラクティブなアプリケーションを作成する際に役割を分けて分業ができるため.
なので,変更があっても他には変更の影響を受けにくくて済む.
MVCモデルについて
MVCには2種類の構造がある.これらの違いはMVCがやり取りを行う際にどういったやり取りをするかである.
- Push-MVC
- Pull-MVC
- Push-MVC
このMVCではモデルとビューがどのようにやり取りを行うかと言うときに,コントローラが中間となってモデルとビューのやり取りを行うMVCである.
RailsはこのPush-MVCを採用している.
- Pull-MVC
このMVCではモデルとビューが直接やり取りを行う.
なぜPush-MVCなのか?
Pull-MVCを実装するとなると,2つの問題が生じる.
- 特にビューがHTMLを描画する際に必ずモデルにアクセスを掛ける必要があり,Push型と比べて描画速度が遅くなる.
- HTTPの性質ステートレスがビューとどのモデルに紐付けられているかという情報を忘れてしまうため,セッションに関連付けの情報を保持する必要があり,実装が難しくなる.
このため実装は難しいとされている
M,V,Cについて(事前知識からの付け加え)
-
Model(モデル)
Model(以下モデル)はデータベースの操作や,データの管理等のビジネスロジックを行うもので,
アプリケーションの状態を表したり,その状態を加工するメソッドをまとめたもの.
その為,肥大化してしまう. -
Controller(コントローラー)
ユーザの操作に基づき,加工したモデルの操作をする役割を持っている.その為,コントローラーは肥大化しない.
View(ビュー)
モデルの状態を参照し,視覚表現するもの.
Author And Source
この問題について(MVCについてわかっていることをまとめる), 我々は、より多くの情報をここで見つけました https://qiita.com/Ago0727/items/fe3d282bcd7d9fd4a152著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .