「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典イメージぴよ画像「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典

MVCモデル

pointこの用語のポイント

pointプログラムの構成だよ

point中身を「モデル(Model)」「ビュー(View)」「コントローラ(Controller)」の3つに分類しておくよ

スポンサーリンク

簡単に書くよ

MVCモデル(読:エムブイシーモデル)とは

プログラムの中身整理術のひとつ。
もう少し具体的に書くと

プログラムの中身を「モデル(Model)」「ビュー(View)」「コントローラ(Controller)」の3つに分類しておくこと
です。


image piyo

詳しく書くよ

プログラムというのは、同じ処理をする場合でもいろいろな書き方ができます。
全部の処理をまとめて書くこともできますし、処理ごとに関数を分けて整理しておくことも可能です。
プログラムの書き方はたくさんあるのです。

ですが、皆が皆、好き勝手に作っていたら、他の人が作ったプログラムの中身を見るのが大変ですよね。

そこで、いろんな人たちが「プログラムの中身はこんな構成にしておけば分かりやすいんじゃね?」な提案をしています。

その中で比較的、世の中に受け入れられたのが「MVCモデル」です。

あくまで「こんな構成にしておけば分かりやすいんじゃね?」な1つの方法論です。
一般的に良しとされてはいますが、絶対の正解では ありません。
ご注意ください。

MVCモデルでは、プログラムの中身を

・モデル(Model):表示や入力に関連しない処理
・ビュー(View):表示や入力に関する処理
・コントローラ(Controller):ビューとモデルの橋渡し役


に分類して作ります。

MVCモデル

例えば、そうですね。
データベースからデータを持ってきて画面に表示する「ピヨピヨプログラム」が あったとしましょう。
このプログラムの処理は

1.データベースからデータを持って来る処理
2.データを画面に表示する処理
3.「1.」と「2.」を動かす処理


の3つに分けられます。
そして、それぞれの処理を

関数A:データベースからデータを持って来る処理をする
関数B:データを画面に表示する処理をする
関数C:関数Aを動かして、その後で関数Bを動かす


のように関数化して、関数Aはモデルのところに、関数Bはビューのところに、関数Cはコントローラのところに置きました。
これがMVCモデルに基づいた作り方です。

蛇足ですが、例えば

関数X:データベースからデータを持って来て画面に表示する処理

を作ってそれを動かすだけでもピヨピヨプログラムとしては完成です。
ですが、この作り方はMVCモデルでは ありません。
MVCモデルと言ったら、モデルとビューとコントローラを分けるのです。

MVCモデルのメリットは「(ある程度)整理されて分類されている」ことです。
そのため、はじめて見るシステムでも中身を推測しやすいです。
例えば「○○の処理は表示に関する処理だからビューの中身を見れば良いのかな~」と推測しやすくなります。

また、それぞれ(モデル、ビュー、コントローラ)は独立しているのが普通ですので、分業もしやすくなります。
Webデザイナーさんがビューを変更している間にプログラマさんがモデルを直す、といったことも(理屈上は)できますよ。

一方のデメリットは「実は正解がないこと」これに尽きるでしょう。
良くも悪くも、あくまで「MVC『モデル』」なのです。
例えば「××の処理はモデルに入れるべき?それともコントローラかな?」と処理自体は決まっていても、その処理をどこに入れるかで悩むこともあるでしょう。
私はいつも「これ、処理自体は簡単だけど、どこに書けばいーのよ?」と悩みます。
また人によって意見も異なると思います。
そこら辺の足並みを揃えるのが面倒と言えば面倒ですね。


image piyo2

一言でまとめるよ

まぁ「MVCモデル」って単語が出てきたら「プログラムの中身をModelとViewとControllerに分けて作れってことなんだな~」と お考えください。

一番上に戻るよ
スポンサーリンク
書籍画像032
書籍画像049

おまけ

■訳してみるよ

「MVC」は「Model(モデル)」「View(ビュー)」「Controller(コントローラ)」の頭文字を合体させた用語です。
「model(モデル)」の意味は「模型」とか「ひな形」とか「原型」とか「型式」とか「模範」とか「手本」とか「複雑系を簡潔に表現したもの」とかです。
ぶっちゃけ、カタカナで「モデル」と解釈した方が分かりやすいと思います。
「view(ビュー)」の意味は「見る」とか「眺める」とかです。
「controller(コントローラ)」は「control(コントロール)」+「er」です。
「control(コントロール)」の意味は「管理する」とか「統制する」とか「制御する」とかです。
接尾辞「er」を付けると「~する人」とか「~するもの」的な意味になります。
何となく くっつけると

「ひな形」「見る」「制御するやつ」モデル

となります。




書籍画像
わわわ説明術コラム
宣伝だよ
エンジニア育成現場の「失敗」集めてみた。 42の失敗事例で学ぶマネジメントのうまい進めかた
「分かった!」と思わせる説明の技術 知識ゼロの相手にも伝わるようになる本
7日間でハッキングをはじめる本 TryHackMeを使って身体で覚える攻撃手法と脆弱性