MVACってなぁに?
良いことが書いてあるのでその内容に突っ込む意図ではなく、単に「MVAC」という語についての雑感です。
Web Applicationを綺麗に設計するためのMVACという考え方 - $shibayu36->blog;
わたしのアンテナが低いのか、MVAC というのは初耳でした。のでちょっとググッてみたのですが元ネタがわかりせんでした。本当に「デブサミ2009 はてなの開発戦略」が元ネタなのかな?はてな社内ローカル用語?
というわけで、どこが言いだしっぺなのかよくわかりません。お願い、教えてエロい人。
このお話、個人的にはなんだかとってもデジャブでした。MVC、お前もか - みねこあで感じた「Mってなによ?」的なモヤモヤさが再びです。んー、MVC2 とか MMVC とか MVCS とか MVAC とか いっぱいあると混乱します。それぞれで各要素の絡み方も違えば、Mなどの各要素すら実は違ったりで。
誰かまとめてくれないかしら(sumimさんクォリティで)。
* * *
もうすこしダラダラ蛇足(つまり、デジャブの追体験)をすると、
ここで問題が一つあります。それはControllerが「リクエストをハンドリングする」という役割と、「Modelをいくつか利用して処理を行う」という、二つの違う役割を担っていることです。
Web Applicationを綺麗に設計するためのMVACという考え方 - $shibayu36->blog;
の部分がどうにもイボイボしていて、「Model をいくつか利用して処理をおこなう」も Model じゃん、と思ってしまう。由緒正しき Smalltalk GUI フレームワークに端を発する「MVC」の感覚では、Application といっているのも M じゃないかな。
そもそもの(GUIの) MVCは、単純に、対話型アプリケーションを作る際、変わりやすい Look&Feel *1から、変わりにくい Model を 開放閉鎖原則に従って 責務分割した姿です。
一方、Web の MVC (MVC2)は、構成要素の名前こそ元のMVCをインスパイアして付けられたと思うのですが、その構造はかなり構造が違います。けれどインスパイアされた「構成要素の名前」くらいは、だいたいの意味を引き継いで欲しいと願ってしまいます。
しかし、MVC2 について語られるものを(特にその問題を述べるものについて)読むとき、Controller が Model化してしまうくらいに、 「Model」=「ORMに毛が生えたもの」という定義になってるように感じます。それにより、「MVC」 だけじゃなく、「M」,「V」,「C」 の それぞれもバズワード化しているように思えます。そこまでして「MVC」という語を使う意味があるのかなぁ、とかとか。
「MVC」という語に拘るなら、MVAC という言い回しよりは、gfxさんがはてブコメントで 紹介している
すこし以前から言われていることですが、ORMをMVCモデルにおけるModelそのものとして扱うことで、本来Modelで扱うビジネスロジックをControllerに書いてしまい、Controllerのロジックが増大し、結果的にメンテナンスがしにくい、拡張が難しいコードが生まれてしまいがちです。
(中略)
その対策として、Modelを見直しを行い、ORM、DBI、Web API、他のKVS、そしてmemcachedなどマルチソースでビジネスロジックを記すレイヤーとしての位置づけとすることを考えてみたい。多くの情報を扱う今、こちらの考え方が自然に設計ができると考えます。
Re: @kazuho: handlersocket plugin や mycached を使えば memcached は不要か、それとも使うべきケースがあるか。考察せよ [10点] - blog.nomadscafe.jp
(強調はわたし)
のほうが、語の使い方として個人的にしっくりきます。
* * *
ここらへんはの用語の混乱のお話は、以前のデジャブエントリで頂いたコメント
umejava
MVC、お前もか - みねこあMVC、お前もか - みねこあ
2009/10/19 08:31
WebのMVCですが、Domain-Driven Designの言葉で語れば混乱は生じないと思うんですよね。http://www.ogis-ri.co.jp/otc/hiroba/technical/DDDEssence/chap1.html
のように、MVC じゃない語の方が筋がよいと思います。みんな DDD 用語で語ろうよ!名前重要だよ!・・ということでどうでしょう?
タイムリーなことに DDDはもうすぐ日本語で発売ですよ!
エリック・エヴァンスのドメイン駆動設計 (IT Architects’Archive ソフトウェア開発の実践)
- 作者: エリック・エヴァンス,今関剛,和智右桂,牧野祐子
- 出版社/メーカー: 翔泳社
- 発売日: 2011/04/09
- メディア: 大型本
- 購入: 19人 クリック: 1,360回
- この商品を含むブログ (131件) を見る
みんな、買おうぜっ!
*1:Look が View で、Feel が Controllerです