MVCの理解が学習効率と転職可能性を高める
今回は「MVCモデル」についてお話します。
MVCモデルが理解できると3つのメリットがあります。
- 処理の流れに沿ってコードが書けるようになる
- エラーが発生したときにも原因が見つけやすくなる
- 転職時にプログラミングの基礎理解を示せる
データの流れが理解できるようになるため、どの場所に何を書けばいいかわかるようになります。
その結果、エラーが発生した時に「この場合はコントローラーまで値が来ていないから、ビュー側の問題だな」というように原因を切り分けられるようになります。
転職を前提にプログラミングを学ぶなら、確実に理解しておきたいところです。企業はフレームワークを使ってなんとなくアプリを作成した人か、裏側の仕組みまで理解しているか確認します。
つまり、自分で考えて行動しているか、言われたままなんとなく行動しているかを見極めようとします。その時の質問が「MVCとは何か?」になります。
「自分で考えて行動できる」を示すために、今日でマスターしてしまいましょう
MVCモデルは役割分担の仕組み
役割を知る
MVCモデルとはModel(モデル)、View(ビュー)、Controller(コントローラ)が役割分担することで、効率的に開発する仕組みです。
仕事でも、効率的に行うために役割分担しています。指揮をする管理職がいて、その下に広報担当、経理担当がいるのと同じです。
プログラムをバラバラに組むと「どこで何をやっているのかわからなくなる」ので、役割と処理順をルール化して運用しています。その手法の一つがMVCモデルです。
それぞれの役割はこうなります。
モデル:データベースとやり取り
ビュー:ユーザーの目に見える部分の表示
コントローラー:モデルとビューに仕事を割りふる役割
先程の例で言えば、モデルが経理担当、ビューが広報担当、コントローラーが管理職みたいなものです。
具体例で考える
ここから具体的な例で見ていきましょう。
「アクセスしたユーザーの氏名をデータベースから取得して表示する場合」を考えます。
クライアントからリクエストが送られると、どのコントローラーが行う処理か決めます。
コントローラーは「ユーザーに関すること」「商品に関すること」のように役割によって複数存在します。企業のPRに関することの場合、会社内の全部署の中から広報部に任せるイメージです。
リクエストに対してどのコントローラーが担う処理か決めることを「ルーティング」といいます。
今回のリクエストの場合、やらなければいけない仕事は2つあります。コントローラーは各仕事をモデルとビューに振ります。
②見つけた氏名を画面に表示すること→ビュー
それぞれが仕事をした結果次のような流れになります。
①【指示】コントローラー→モデル
データベースから氏名情報探索依頼「モデルくん調査よろしく!」
②【調査】モデル→データベース
データベースへアクセス「氏名情報見つかるかなぁ・・」
③【情報取得】データベース→モデル
氏名の情報を取得「うぉぉぉぉ!見つけた!」
④【報告】モデル→コントローラー
データベースから氏名情報をコントローラーに渡す「氏名情報見つけました!0.001秒かかりました」
⑤【指示】コントローラー→ビュー
モデルを経由して取得した氏名の情報をビューに渡す「氏名情報画面に表示していてね」
これで、ビューに氏名の情報が渡されて画面に表示できるようになるわけです。
まとめ
ビュー:ユーザーの目に見える部分の表示
コントローラー:モデルとビューに仕事を割りふる役割
MVCモデルが理解できると、エラーの発見が簡単になります。ビューに問題があるのか、コントローラーに問題があるのか、モデルに問題があるのか切り分けられるからです。
未経験エンジニア転職ではMVCモデルを問われることも多いです。「何もわかってない人」を簡単にあぶり出すことができるからです。
逆に、最初に理解してしまえばコードの理解が進む・エラーが特定できる・転職に強くなるとメリットだらけです。
コメント