MVCと作業の分担

MVCというのは,Webの開発をしていると出会うことになる仕組みの一つです。Mはモデル,Vはビュー,Cはコントローラーです。そしてここで言うモデルとは,美しい雑誌のモデルさん,ではなくて,中心部(外から見えない内部)の処理のことだとイメージしていただければと思います。つまりモデルと書いていても,日本語の一般的なモデルではないということです。

V(ビュー)は,表示,人間から見える部分を担当する部分であり,C(コントローラー)はそれら見える部分を処理するビューと内部処理であるモデルとの連携を担当しながら,人間からの操作を受け付ける部分も担当します。

これらを,BOSSの自動販売機で例えてみましょう。(サントリー)

ビュー(V)「こんなコーヒーとジュース売ってます,いくらです,ここがお金の投入口です。いかがっすかー。」

コントローラー(C)「うぉっ,お金入ってきた。100円だ。100円で買えるコーヒーあったよね,あ,あれとあれだ,ビュー,買えるコーヒーだけランプ付けて!」

ビュー(V)「了解っす。100円で買えるコーヒーだけランプ付けました~」

コントローラー(C)「OK。うわっ,さらに100円来たっ。合計200円か,これでペットボトルも含めて全部買えるようになったわけか。ビュー,全部ランプ付けて!…ちょっと待てよ,お茶だけは売り切れだった,それ以外のランプ付けて!」

ビュー(V)「了解です~。お茶以外全部ランプ付けました~」

コントローラー(C)「ボタン押されたー。なんだよ,200円入れたのに100円のカフェオレかい!ビュー,ランプ消して。モデルさん,カフェオレ一つお願いします」

モデル(M)「了解。カフェオレ在庫から取り出し口に送り込みます。」

ビュー(V)「ランプ消しました。」

コントローラー(C)「OK。あとは釣りだな。モデルさん,100円のお釣りお願いします」

モデル(M)「了解。お客が入れた200円のうち,100円は受け取って金庫に入金し,100円はつり銭口に送り込みます」

コントローラー(C)「はいOK。みなさんお疲れ様でしたー。ビューはCMモードでよろしく。今日はもう当分客来ないでしょ」

という感じです。三者の分担がきちんと分かれているから,お互いを尊重できるし,相手の領域に踏み込まないし,仕事はより確実になったりします。(BOSSの自販機である必要が全然ないですねこれ)

実際のWeb開発の現場でのMVCは,「イチイチフォルダが分かれてて面倒だな」とか,「ビューの処理だけ作ってて」とか,賛否両論色々です。けれども,複数人で作業する場合は重宝することが多いと思います。自己流にできる部分が少ないから,後から何が起こっているのか読みやすくなります。

仕事ってきちんと分担できると,お互いの人生の素晴らしい支えになりますよね。デキる人がみんなやっちゃう現場って,何だか殺伐としていて辛い。周りは見下されて全然気分よくならないし,本人はストレスどんどん溜まるしね。

周りの人が楽しく仕事できるように仕事を進められるようになったら,その人はずっと仕事が楽しくなります。何だか変な日本語になっちゃったけど,本当にそうなんです。それは,お客様だけではなくて同僚とか上司とか,みんなのニーズを汲み取ってそれに少しずつ応えることができるということです。どんな人でも仕事中に欲があって,認められたいとか,利益を上げたいとか,ちょっとだらだらしたいとか,そういう基本的な部分の欲を感じとって応えられるようになると,本当仕事って楽しくなります。ま,僕も全然うまくいかないことの方が多いんですけどね。けど目指しているのはそういうことです。

作業の分担って考える角度が色々とあって,一人にばっかりやらせたら悪いからとか,適材適所だとかありますけど,その人にきちんとポジションを与えてそれを他の人が奪わないようにする,っていう角度は結構大切だと考えてます。MVCはお互いに不可侵条約があって,そういうのはとても気持ちよく感じたりしてます。

モデル,ビュー,コントローラー。言い換えると,内部処理,表示処理,それらを人間を結びつける司令塔。開発部と,営業部と,マネージャー達って感じです。みんな敬意と楽しさを持ちつつ仕事できたらいいのにね。だって人生のうち,仕事している時間ってめちゃめちゃ長いんだもの。本当,人生の大部分。楽しくなきゃ損だよなぁ。