MVC

なんだか最近 MVC という言葉が聞かれなくなった気がする。もう浸透して語る必要がなくなったのか?それとも最近のWeb開発では向かなくなったのか?Model(データ) と View(見てくれ) と Control (制御) のコードを分けろということなのだろうが、言うはやさしくても、実際に実践しようとすると難しい。

画面を伴ったアプリケーションを作る際、データと表示の内容は当然ながら密接につながっているわけだが、プログラマから見て、データを変更する部分ではそのデータがどのように表示されているかはあまり考えなくてよいし、画面を作る側からはいつ自分が扱うデータ
以外については関心を持たなくてよいというように意識したコードが望ましいというわけだ。

最近VC++でMFCを使って書かれたコードを見ているが、若手が書いたコード(今からほぼ10年前のコードなので、今はみんな中堅なんだが)はMVCの基本を抑えていないものがほとんどだ。
たとえば ダイアログの「OK」ボタンのイベントの中で実際に目的とする処理が長々と書いてあったりする。処理時間が長いものをそのようにコーディングするのはご法度なんだが、それを正しい形でやろうとするとそこからとたんにハードルがあがってしまう。たぶん別に実行スレッドなるものを起こし、メインのスレッドとやりとりをしながら実行スレッドが終了するのを監視するようにするのが普通かと思われるが、では実行中にユーザになにか問い合わせて判断を仰ぐ必要があればとうする?とかを考えるとどんどん処理が複雑になっていってしまう。

この大変さはたとえ言語が変わっても変わらないので、UIを伴うコードを書いている人たちにとっては普遍の法則かもしれない。

ちなみに MVC を実現しようとすると一番 MFC が難しいような気がする。 MFC では最初に画面を作る際、ウイザードを使ってアプリケーションのフレームを作ることが出来るが、それがほとんど役にたったためしがない。MVC の概念がしっかりと学べるのは Java の Swing や SWT であると自分は思っているが、なにせマイナーなものなのでコードを見る機会は少ないかもしれない。


コメントを残す