2015年7月24日金曜日

MVCモデルを見直そう

最近では定番となったMVCモデル。

名前はネット上で沢山の記事があるので知っている方、使っている方は多い。
ASP.NETもMVCやMVVMという進化を経て現在でも発展している。

このMVCモデルを簡単に説明すると、プログラムをModel-View-Controlの3つのブロックに分けて作りましょうというオブジェクト思考、UMLなど言葉が生まれる前のプログラム言語smalltalkで生まれた構造化設計手法である。

では次にsmalltalkを知っている方、使ったことがある方はいるだろうか。

知らずに使うことは可能だけど、アーキテクトの理解を進めた先に見える何かがあるので今回はここをテーマです。

まずはsmalltalkについてはWikipedia参照してください。
https://ja.wikipedia.org/wiki/Smalltalk


smalltalkの中核ツールであるclass browser
http://www.bing.com/images/search?q=Class+Browser&FORM=HDRSC2

注目ポイントはsmalltalkの設計思想。

計算機を計算機の集合体として構築し、さらに計算機を構成する個々の計算機も計算機の集合体で構築するというように、再帰的な計算機を構築すること。

再帰的な計算機を構築している無数の計算機は、個々の内部には干渉せずメッセージによる通信のみによって相互作用を発生させ目的の計算を完遂させる。

計算機=オブジェクトに置き直して読んでみると、

objectをobjectの集合体として構築し、さらにobjectを構成する個々のobjectもobjectの集合体で構築するというように、再帰的なobjectを構築すること。

再帰的なobjectを構築している無数のobjectは、個々の内部には干渉せずメッセージによる通信のみによって相互作用を発生させ目的の計算を完遂させる。

オブジェクトといっても解釈が沢山あるので以前書いた、オブジェクト指向の間違いを正す の通り、実データの集合体、という理解で進めてほしい。
オブジェクトはクラスで表す事ができるので、先ほどの文章のobjectをclassに置き換えるとsmalltalkとはどういう構造しているのかが分かる。つまりこれがMVCフレームワークの元祖、オリジナルである。

はたして、いろんなフレームワークでsmalltalkで設計されたMVCフレームワークが実装されているかどうか。別に進化をとげる事は良いが、オリジナルを知ることでフレームワークの良くなった・悪くなったかどうかが判断できるようになる。

ざっとまとめると、
classをコンポジットパターンで構築し、さらにそのクラスもコンポジットパターンで構築される。
これを再帰的であると表現する。
このような構造にしておくことで無数のclassが存在していても個々は独立したclassになるので互いに干渉しない。
中身を知らなくてもコンポジットパターンの頂点に立つclassを扱う事で内部には干渉せず相互作用を発生させ目的の動作を完遂させれる。


ネット上ではいろんな人が聖書のようにいろんな解釈で説明、またはフレームワークとして実装されている中、何がオリジナルであるかを知ることで派生のMVCがどうであるかの判断もつくようになり、MVCはの本質について理解は深まったでしょうか。
コメントを投稿

Androider