またどこかのCTOになった人のブログ

またどこかのCTOになった人が書いてます。最近はCakePHP3とConoHaのネタが多いです。

MVCとメイドシステム。

Webアプリを作っている人であれば、何回も聞いたことがあるはずの「MVC」という言葉。

Model・View・Controllerの頭文字ですね。

何となくわかる方、完璧にわかる方。

よくわからないけど、とりあえず知ってる素振りの方など色々いらっしゃると思います。

今回はこれをメイドシステム(仮)に例えて書いてみます。

 

登場人物は以下の通り。

 

・View:ご主人さま

・Controller:メイド長

・Model:メイド

 

何か大きな屋敷でも想像してもらえれば。

ちなみに自分にはメイド属性ありません。

 

まず、モデルというのは別にDB操作のために存在しているわけではありません。

この子は「雑用でしたらお任せくださいませ」という役割です。

まぁ何でもやるわけです。DB操作もやりますし、それ以外のバリデーションもやります。

 

このメイドを束ねるのがメイド長であるControllerですね。

この人はメイドに指示を出して、アレコレとViewであるご主人さまのためにせっせと働くわけです。

 

で、ご主人さまであるViewがTV見たりゲームしたり、何してるのか知りませんが色々と命令するわけです。

 

View「この画面でこの検索結果が見たい」

Controller「かしこまりました、ご主人さま」

Controller「メイド達、お仕事よ。このデータを取っていらっしゃい」

Model「かしこまりました、メイド長さま」

 

こんな感じです。

なんですが、ご主人様はメイド長をカッ飛ばしてメイドにお願いすることもあるかもしれません。

これ、別にいいんです。ご主人さまなので呼んでいいんです。偉いのです。

CakePHPだとヘルパーを使いますね。まぁ直通電話みたいなもんです。

 

View「あのさ、メイド長に内緒でこんなデータ取ってきてくれない?」

Model「かしこまりました、ご主人さま」

 

まぁ別に内緒にする必要はないのですが、多分こんな具合です。

 

よくある「作ってたらControllerが肥大化した!」という状況は、Modelに仕事を振ればいいのにメイド長が自分で色々やってしまっている状況です。

責任感が強すぎですね。そんなに背負いこむ必要って本来はないのです。

 

となると、メイドは結構暇ですね。

メイドは働き者なのですが、暇だと仕事後にどこに行こうとか、あそこのケーキが美味しいらしいみたいな話をしているかもしれません。

まぁ、これもどうだか知りませんが。

 

MVCのキモはControllerです。

日々やってくる仕事をテキパキ片付けなければいけません。なので、メイド長がその仕事を担うのです。

とは言え、メイド長にも限界がありますのでメイドに仕事を振らざるを得ない。

でもそれでいいのです。メイドは働き者ですから。

 

このメイドシステム(仮)が上手く機能すると、Controllerは用件をお伺いした後でModelに仕事を指示して報告を受け取るだけのコードが出来上がります。

 

これできっと、メイド長もティータイムを満喫できることでしょう。