MVCとは何か
これに関して、そこら中で議論が起こる。WikiをみるとTrygve Reenskaug氏が考案したと書かれている。定義した人間以外が黒と言えば黒だし、白といえば白なのだ。MVCとはもしかしたら、一人一人の心の中にあるのかも知れない。今回はこのMVCに対して、自分なりの解釈を書いていきたいと思う。
まずは基本的なことを確認してみる
項目 | 内容 |
---|---|
Model | アプリケーションの振る舞い、あらゆるデータやロジックの処理 |
View | 視覚的な部分 |
Controller | ユーザ入力 |
では、これを元に図を作ってみたい。
深淵への案内、MVCを図にしてみた
1. MVCで間違った例として叩きのめされる例
コントローラがサーバにあるので、ユーザはどうやってコントロールすれば良いのか分からない例である。
2. MVCでユーザがコントローラに触れられる例
ビューに操作オブジェクトがある場合と、単純にキーボードやマウスの状態を拾うことを考慮する例である。しかしよく考えるとおかしい。たとえばキーボードから入力した文字を画面に表示しているのは誰なのだろう?
3. お前、実はそこにいたんだという例
人間の認識ではビューとコントローラが同じ場所にいるように見えるが、モデルからみれば全く別物である。実はモデルがあなたの背後をとり、気づかれずに入力したモノを対象となる位置に表示する指示を出しているに過ぎない。JavaScriptを使っていない場合でもそれは変わらないのだ。
4. いや、人間の手はブラウザに触れないだろ突っ込みを入れる例
「なんか視点が変わってない?」と誰しも突っ込みを入れたくなるところだろう。昔のアニメで、主人公がディスプレイに吸い込まれる描写を見たことがある。「いや、吸い込むならキーボードからだろ!」と私も突っ込みを入れたことがある。まったく見当外れな突っ込みなのは気にしてはいけない。さらに、今のディスプレイにはタッチパネルの機能もあるという突っ込みの応酬が起きそうだが、出力装置の上に入力装置をのっけただけで、結局は出力部分から入力できるわけでは無いのだ。突っ込むのは、狭いところを目指して突撃する猫だけで良い。
そもそもビューとはどのように表示するのか、色や形、大きさの最終情報を持っているらしい。Webブラウザは本当にその情報を持っているか?いや違う。ディスプレイに表示されるまでは、本当のサイズなど誰にも分からない。
5. 本当にそれでいいのか?答えはノウだ!
脳である。まず視覚情報について考えるが、ディスプレイに表示されたからと言って、それが最終情報だろうか?いや、人間は東京タワーを見て、赤という人もいればオレンジという人もいる。正解はインターナショナルオレンジだ。つまり人間によって最終情報は異なるのだ。
そして人間の入力である。キーボードやマウス、それを操作する手は一定のプロトコルで動く通信経路の一部として考えることは出来ないだろうか。実はそのスイッチを入れているのは、脳なのである。
6. それは本当に自分なのか?
人間が本当に人間の意思で動いているのだろうか?なにか別の意思の介在を感じることは無いだろうか?考えれば考えるほど、深みにはまっていく。まるで深淵を覗き込んだかのようだ。
つまり言いたいこと
冗談です。