MVC ってこういうこと?(4) -Controller-
2009/10/06 22:27 - AS3.0
MVC を学ぶシリーズ、今回は Controller の話。
Controller の役目はユーザ入力を Model に伝えること、ただそれだけです。 今回組んだコードで具体的にいうと、以下のように Controller から Model に流れています。
- Controller はユーザがクリックする3つのボタンから、クリックイベントを受け取る
- Controller は押されたボタンに応じて、Model にある3つの関数から適切なものを呼び出す
- Model は Controller からの関数呼び出しに応じて、自分の状態を変える
そして Controller の Controller たる所以はまさにこの 2 の機能に他なりません。
「Head First デザインパターン」461ページの想定問答コラムでは、「Controller っていらなくね?」という質問に対し、「そんなことありません」というスタンスで説明が加えられています。
ここでは、「Controller 不要というのは『Controller が担うべき役目をなぜ View にコードとして記述してはいけないのか。そうすれば MV で完結じゃないですか』という意味ですよね、でもそうするといろいろ問題があるんですわコレが」と説明がされています。 たしかに言われてみればそうだなぁ、という理由が書かれています。
ところで、その Controller の命である 2 はなぜ実現できているのかというと、Controller が Model の参照を持っているからです。
View は Model の状態に応じて自分を変える存在です。 それに対して Controller は Model の状態を変えるための存在です。
View が自分を変えるのも、Controller が Model を変えるのも、どちらもそれぞれが Model の参照を持つからですが、それぞれが Model の参照を持つ目的は正反対になっています。
ここで話がリープしますよ。前々回の Model 篇で Model を涼宮ハルヒ、Controller をキョンに譬えましたが、アニメ「涼宮ハルヒの憂鬱」のオープニングソング「冒険でしょでしょ?」には以下の一節があります。
いいえ違います。
Model と Controller の関係は、参照の持ち方に着目すると、ハルヒがキョンを選んだのではなく、実はキョンがハルヒを選んでいる、という構造になっているのが分かります。 Model こそがプログラムの主役、と思わせておいて、実は、Model は Controller の掌の上で踊っているだけと言ってもよいのではないでしょうか。
ところでどうせハルヒ縛りにするんなら前回の View は、宇宙人謹製メガネっ娘型端末や、おっぱいデカいだけの使えねー未来人や、あくまで脇役ですからエスパーに譬えりゃよかったですね。 ハルヒの一挙手一投足が自分たちの存在に関わりかねないからハルヒを監視し、振り回されている宇宙人、未来人、超能力者は、Model によって動向を左右される View に重ね合わせられないこともない。
とか言いながら、実はハルヒよく知らないんですよねワタクシ。 DVD4巻まで見て挫折したクチ。原作本に至っては触ったことすらない。
ま、んなこたぁどーでもいいんですが。
シリーズ
- MVC ってこういうこと?(5) -取りあえずのまとめ-
- MVC ってこういうこと?(3) -View-
- MVC ってこういうこと?(2) -Model-
- MVC ってこういうこと?(1) -前説-
- MVC について思うこと -巷間にあふれる説明に対する疑問-