想定外を想定し不具合を潰しておく|未経験プログラマーとしての強み
GEEK JOB編集部
初心者のプログラミング学習者に向けて、用語をわかりやすくご紹介します。今回は「MVCとは」です。参考書などを片手に読むと、より理解が進むと思いますのでぜひご覧ください。
ー 今日は、プログラミングを始めたてとかちょっと初めて見たぐらいの人がつまづくであろうMVCって言われるものについてお伺いできればなと思っております。
MVCですか。
これ難しい所ですよね。
じゃあ、ちょこっとプログラムは触っていて、ある程度学習してきてここでつまづいてしまったと。
というぐらいの方向けでお話しましょうか。
ー そうですね、よろしくお願いします。
そもそもMVCって何かっていう事なんですけど、これはプログラムの役割分担の一つなんですね。
例えば、僕達がWebサイトを作ろうといったときに、全部を一つのファイルで作るんではなくって、画面表示専用のファイル。
それから例えば、データベースアクセス専用のファイル。
両者を上手く仲介するファイル。
この3つに分けようっていうのがMVCです。
だから英単語で言うと、MVCのMがModel。
これがデータベースアクセスですね。
それからViewが画面表示。
それからConrtollerがちょうど中間となってお互いをコントロールしていると、仲立ちって感じですかね。
ー なるほど、じゃあModelViewConrolの略なんですね。
その概念ってそもそもなんで必要なんですか?
昔って今ほどプログラムの規模って大きくなかったじゃないですか。
だから人が皆、思い思いにプログラムを一つのファイルに書いていたわけですね。
それがどんどん最近作りたい物が複雑になってきて、ファイルの数が増えてきた。
やらなきゃいけない事も増えてきた。
こうなると明確な役割分担とか、明確な仕組みが必要になってくるんですね。
ー それじゃあ、サイトが大きくなってくると、大体一般的だとどれくらいのファイル数になってくるんですか?
例えば、僕達が見てるサイトでちょっと複雑だなっていうサイトだと100ファイルとか300ファイルとか、500ぐらいあるかもしれないですね。
そうなってくると、これをパソコンの画面に500ファイルをバッーってやってたら、とてもじゃないけど管理しきれないっていうのは僕達としても分かりますよね。
言ってみればMVCみたいなのは、フォルダ分けに近い考え方かもしれないですね。
沢山のファイルをデスクトップに全部置いとくんじゃなくって、例えばこれは仕事用とか、これはプライベート用とかっていう風に分けていくイメージですね。
ー しかもそれを自分一人でやるわけじゃなくて、何十人とかで一気にいじるから、ちゃんと管理しやすいのにっていうのが必要なんですね。
まさにそういう事で、自分一人でつくるんだったらどんな分け方でもいいんですよ。
でもそれを沢山の人で作るってなった時に、先にどこ分けるのかっていう基準を作っておく必要がある。
その基準の一つがさっき言ったようなViewとModelがあって、真ん中にControllerがある。
この基準ってことですね。
ー 詳しく詳細にModelViewControllerそれぞれの説明をお願いできますか。
じゃあまずModelからいきましょうか。
Modelっていうのが実は皆さん一番理解しずらい所だと思うんですね。
一般のWebサイトとか見るとよく業務処理とか書いてある。
処理ってなんだ。
全部処理じゃないかって思うと思うんですけど、僕が説明する時によく言うのはデータベースアクセスです。
例えば商品を誰かが購入したから買い物かごの中に入れますとか、在庫の中に入ってる商品を減らしますとか、こういう風にWebサイトっていうのは沢山あるデータを操作したいっていうために使うから、データベースアクセスする物はModelっていう風に考えて、最初の間はいいかなと思います。
それからViewなんですけど、Viewは分かりやすくてこれは画面の事ですね。
ー 見た目の表現とかですね。
そうですね。
僕達に見えてるのはほとんどViewだけですね。
それからControllerっていう物がViewとModelの間に立ってViewからModelにデータ送ったり、ModelからViewにデータ送ったりっていう事をしています。
ー 聞いてると難しそうに聞こえて、今は僕自身がプログラミング始めたばかりなんですけど、今のうちにこれって勉強しておく必要ってあるんですか?
僕としてはまだやらなくていいと思いますね。
ある程度学習が進んできて、完全にオブジェクト指向に則ったプログラムが書きたいとか、フレームワークを利用したいってなった時にこのMVCを理解している必要があります。
例えば最近だとRailsとかPHPのLaravelとか。
主なフレームワークっていう物はMVCだったりMVCから派生した物の考え方を使ってる事が多いんですね。
なのでMVCの考え方が理解できてると、フレームワークを使いやすいっていうのはありますね。
ー じゃあ開発は色んな所でフレームワーク使われてるんで、将来そのプログラミングを仕事にするっていう上ではこのMVCの概念は学んでおいたほうがいいっていう事ですね。
最初の段階って自分の目の前で動いていればOKってなってると思うんですけど、それを仕事にすると。
沢山の人達と一緒にプログラム書かなきゃいけない。
この段階では必須知識になると思います。
ー なるほど、ありがとうございました。
ありがとうございました。