“初学者向け基礎知識”
WEBアプリにおける”MVC”という機能について
”そもそもWEBアプリケーションの仕組みとは?”
WEBアプリケーションを一言で表すと、
”WEBで公開されているプログラム”のことです。
クラインアントがリクエストを送り、WEBアプリがレスポンスを返します。
例えば、”Twitterにログインしている状態で自分のプロフィール画面を表示する”場合。
ここでは、
・クライアント=自分(ログインしているユーザー)
・WEBアプリ=Twitter
・リクエスト=プロフィール画面を見たいので「プロフィール」ボタンをクリック
・レスポンス=アカウントのプロフィール画面を表示
このように、WEBアプリでは「リクエストとレスポンス」のやり取りが行われています。
"MVCの言葉の意味"
MVCとは「アプリケーション内での処理の機能の総称」です。
それぞれ機能の頭文字を取ってM・V・Cとなっています。
・M:Model(モデル)。データに関わる処理を行う。
・V:View(ビュー)。ブラウザにレスポンスとして返す見た目を決める。
・C:Controller(コントローラー)。ルーティングからリクエストを受け取り、決められた処理を行う。ModelとViewの橋渡しの役割をしている。最終的にクライアントにレスポンスを返す。
また、MVCの前にルーティングも合わせて理解する必要があります。
それは下記の処理の流れで触れます。
”WEBアプリケーションの処理の流れ”
大まかな処理の流れは次の通りです。
1.クライアントがリクエスト送る。
2.ルーティングでリクエスを受け取り、処理を振り分ける。
3.コントローラーで”ルーティングからのリクエスト”を受け取り、その内容によってモデル・ビューで処理を行い、最終的にクライアントへ”レスポンス”を返す。
"MVCのメリット"
一言で表すと役割分担を明確にできる!
上記で述べた様に「MVC」には、
・Model:データに関する処理を行う。
・View:クライアントへの見た目を返す。
・Controller:ルーティングからリクエストを受け取り、ModelとViewにリクエストを送る。また、図1の通りModelとViewの橋渡しになってもいる。
という役割がそれぞれにあります。
この時、役割を分けずにコードを記述した場合どんな手間が発生するのかを考えました。
・MVCで記述をしない場合の問題その1
見た目の変更が起きた時に対処が大変!
→どこになんのコードがあるのかを探すが面倒!
・MVCで記述をしない場合の問題その2
条件分岐の記述が大変!
→仮に”A”と”B”のボタンを押したら”画面1”に遷移する。”C”のボタンを押すと”画面2”へ遷移する……など条件分岐がある場合、その分岐ごとにコードを記述したとします。その時点で、複雑で分かりにくい見た目にもなりますし、さらに後々にレイアウトの変更があったら、「問題その1」のように全てに変更を反映させるのに大変な労力を要します。
これらの問題を解決するために、役割ごとに分割をするということがとても重要になっています。
以上がMVCのメリットでした。
・参照URL
https://qiita.com/tshinsay/items/5b1724baf32b8b5113c2
→簡潔に説明してくれているので、軽く読める!
https://www.geekly.co.jp/column/cat-technology/1911_040/
→他のサイトよりも詳しく触れている。ある程度の理解がある人向け。
https://bap-software.net/knowledge/mvc-model/
→MVCの例えが分かりやすい!
https://kanda-it-school-kensyu.com/php-framework-contents/pfc_ch07/pfc_0701/
→ 神田ITスクールの記事です。信憑性が高いです。
以上がWEBアプリケーションにおける大まかな処理の流れとなります。
この流れを把握していると、エラーが発生した際に「どこに問題があるのか」を推測することが可能です。
各機能の詳細な処理の内容については、この記事内では触れませんのでご了承ください。
