今回はMVCモデルについてとにかくわかりやすく解説していきます。
Webシステムの開発を学習しようとしたら「MVCモデル」という言葉が頻繁にでてきますが、実際にサービスを作った経験が無いと、
「モデルはシステムの中でビジネスロジックを担当する」
などと急に言われてもイメージしずらいかと思います。
なので今回は全くWebシステムの開発をしたことが無い方でも気軽にお読みいただける内容で解説を進めていきます。
MVCモデルとは
MVCモデルとは、Webシステムのもつ機能を役割ごとに大きく3つに分けて開発を進めていく方法のことです。
3つの役割とは
・Model
・View
・Controller
です。
この3つの頭文字をとってMVCとなります。
前提として、このように役割ごとに分けなくても動くサービスは作れます。
ならばなぜ役割を分けるのかというと、システム開発では複数の人が開発に携わる中で、エラーが起きたり、開発メンバーが入れ替わったり、機能の改良が必要になったりさまざまなことが起きます。
そのようなことが起きた際に、機能ごとの分類分けができていない状態で数十万行のコードから1つの処理を探すのはとても時間がかかってしまいます。
それを防ぐためにMVCモデルという方法を使うことで、機能ごとにコードを整理整頓してプロジェクトにかかわる全員が共通認識を持って効率的に開発を進めることができるようになります。
Model、View、Controllerそれぞれの役割
Model(モデル)
データベースと直接やりとりしたり、データベースからとってきた値を加工したりするときはここにコードを書きます。
View(ビュー)
実際に見ている画面に表示されるものはここに書きます。
Controller(コントローラー)
全体の中心にいます。モデルやビューに指令を出し、処理の中核を担います。
さらに具体的に!
インターネット上の掲示板を使っているとしましょう。
実際に以下の行動をしたときにそれぞれどこのどんな処理が動いているか見ていきましょう。
①投稿を入力する画面を表示した。
1,Controller
「投稿入力画面を表示したいという命令が来た。投稿入力画面のファイルは〇〇フォルダの△△にあります。」
↓
2,View
「はい私が投稿入力画面のファイルです。文字や画像の大きさ、背景の色など画面のデザインが書いてあります。私を表示してください。」
↓
投稿入力画面が表示される!
②タイトル、本文を入力し、投稿ボタンを押した。
1,Controller
「投稿するという命令が来た。投稿モデルさんタイトルと本文を登録してください。」
↓
2,Model
「はい、投稿モデルです。データベースの投稿テーブルにタイトル、本文を登録します...登録が完了しました。」
↓
3,Controller
「登録が完了したという返答が来た。投稿完了画面を表示したい。投稿完了画面のファイルは〇〇フォルダの□□にあります。」
↓
4,View
「はい私が投稿完了画面のファイルです。私を表示してください。」
↓
投稿完了画面が表示される!
③マイページのプロフィール編集画面からユーザー名を変更した。
1,Controller
「ユーザー名を変更するという命令が来た。会員モデルさんユーザー名を更新してください。」
↓
2,Model
「はい、会員モデルです。データベースの会員テーブルから該当する会員を見つけ、その会員のユーザー名を更新します...更新が完了しました。」
↓
3,Controller
「更新が完了したという返答が来た。更新完了画面を表示したい。更新完了画面のファイルは◇◇フォルダの●●にあります。」
↓
4,View
「はい私が更新完了画面のファイルです。私を表示してください。」
↓
更新完了画面が表示される!
以上が具体的な流れです。
上記の文章をコードにしたものが、実際にそれぞれのファイルに書かれます。
まとめ
いかがでしたでしょうか。上記が理解できていればあとは実際にサービスを作り細かい部分の理解を深めていきましょう。
あくまでもソフトウェアの設計モデルの一つなので、MVCモデル以外にも色々な考え方があり、プロジェクトごとに細かな体系は異なります。
この記事を読んで。サービスを作っていくときはコードを整理整頓し、役割ごとに分け、処理を追いやすくすると皆がストレスなくエラーの出にくいサービスになるんだと思っていただけたら幸いです。