WebアプリでMVCを使う理由ってなに?
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2012/06/25(月) 22:58:18.06ID:???0069nobodyさん
2013/01/06(日) 21:26:03.11ID:???> モデル is a ORM ですか? 違うでしょう?
>
> モデルがORMを継承するのはおかしいんだよ。
誰がそんな話をしてるんだ?
どこを読んでそう思ったんだ?
話を元に戻すと、Modelの定義はなんだ?
あるのか?ないのか?「ロジックを書くところがモデル」っていう稚拙な回答で終了していいのか?
0070nobodyさん
2013/01/06(日) 22:01:20.73ID:???それをウェブに持ち込んだからおかしくなった。
本来はViewからModelを参照したり、ModelからViewにイベント
通知したりするものだが(Ajaxがでるまで)ウェブでは実装できなかった。
だからウェブアプリで言うMVCは本来のMVCではない。
それを理解しているところはMVC2と言ったりしているが本来のMVCとは違うもの
つまり、MVCにおけるモデルの定義は簡単だが、それはウェブアプリのモデルにあてはまらない。
ウェブアプリのモデルはどうあるべきか、その答えは色々あるが共通しているのはビジネスロジックを書く場所。
理想的には何も継承しないPlain Objectで作るべき(JavaでいうPOJO)
ウェブ特有のデータ(セッションやクッキー) や データストレージ(RDMBSやキーバリューストア)に
依存しないように書くことで、フレームワークに依存しない寿命が長いシステムを作ることが可能になる。
残念なことに今のフレームワークはモデルと呼ばれるものがO/Rマッパーに密結合しているものが多い。
これだとフレームワークを変更することが出来ない。
フレームワークは便利だから使うべきだが、肝心のビジネスロジックはフレームワークに依存してはならない。
まとめると、
ウェブアプリには「ビジネスロジックを書く部分」がある。これはフレームワークに依存しないPlain Object。
モデルとは、ビジネスロジックにO/Rマッパーを密結合させてGUIアプリのMVCの名前を借りた、意味不明な物。
0071nobodyさん
2013/01/06(日) 22:32:51.78ID:???> 誰がそんな話をしてるんだ?
>>67
> だから、ORMのベースがあって、それを派生させて、Webアプリ固有のORMにカスタマイズしてしてコントローラに書くロジックを減らしなさい
正しくは、Webアプリ固有のロジック層を作って、(当たり前だがコントローラではない)
ORMはそのロジック層から使うもの。ORMのベースを派生させる必要はない。
ORMのベースを派生して作ったものはORMに依存してしまう。
ORMを派生して作ったものは、最小限(単純な読み書き程度)に抑えるべき。
0073nobodyさん
2013/01/07(月) 13:36:28.58ID:???0074nobodyさん
2013/01/07(月) 13:42:47.54ID:???そんな面倒なことしてる?
現実問題としてはフレームワークに依存するから開発が楽なんじゃない?
0075nobodyさん
2013/01/07(月) 18:34:00.05ID:???ビジネスロジック以外をまとめて面倒みるのがフレームワークの本質なんだから
0076nobodyさん
2013/01/08(火) 00:01:08.04ID:???1つのフレームワークがあって、それがアプリ全体に
結合しているものみたいな感じになってるからなぁ。
フルスタックなフレームワークを細かく分解すると、
まずコントローラフレームワークがある。
このコントローラのフレームワークの役割は、CLIプログラムの
引数解析ライブラリと同じで、ブラウザを使って操作して発生した引数を解釈するもの
次にビューのフレームワーク、いわゆるテンプレートエンジン。
出力したいオブジェクトを特定のテキスト形式に変換して出力するもの。
コントローラのフレームワーク(引数解析)とビューのフレームワーク(出力形式整形)は
明らかにプログラムの中核の処理とは分離されてる。便利なライブラリとして使うが
処理自体は依存しておらず、中核の処理に対して前処理と後処理を行うものでしかない。
あとはモデルというかロジック部分。ロジックでは一般的にファイルやデータベースへアクセスすることになる。
そこでO/Rマッパーなどが利用されるが、ロジックで直接ファイルやデータベースへアクセスするのではなく
間に一層入れてロジックは特定クラスの読み書きメソッドを呼ぶだけにしておくと、物理的なストレージを変更しやすくなる。
図にするとこんな感じ
入力→ ┐
├ ビジネスロジック ⇔ 読み書き
出力← ┘
入力、出力、読み書き、はフレームワークを使って便利にする。しかしビジネスロジックはフレームワークに依存させない
0077nobodyさん
2013/01/08(火) 00:20:34.96ID:???GUIアプリのMVCのモデルではなく
ウェブアプリのモデル。
そのモデルという名前のせいかオブジェクト指向バンザイな発想のせいか、
ナンセンスなことに、データベース全体を一つにモデリングしようとしている。
1テーブルが1クラスになって、そのクラス同士を1対1や、1対多などのリレーションでつなげて
巨大なデータの塊を作ろうとしている。
そのせいでクラスとしてはわかれているけれどクラス間の依存関係がきつすぎて関係を把握できなくなってしまっている。
もうね、お疲れさん(笑)というしか無いよ。
そんなのやっても疲れるだけでしょ。
昔から言われてるように、データの寿命は長いけど、ロジックの寿命は短い。
寿命が違うものを一つに合わせるなと。
オブジェクト指向はシステムの構造を作ったり、高機能な値(オブジェクト)を作るために使うけれども
データ自体はオブジェクト指向の発想で作らないほうがいい。適材適所ってやつだ。
寿命の長いデータはロジックを含まない単なるデータとして保存しておき、
ロジック部分でそのデータを読み書きする。
0078nobodyさん
2013/01/09(水) 13:35:29.63ID:???> ビジネスロジックはフレームワークに依存しないだろ
> ビジネスロジック以外をまとめて面倒みるのがフレームワークの本質なんだから
んじゃ、symfonyで作った掲示板をZendに移植してみてよ。
そこまで言うならサンプルをアップしてみてくれ。
0079nobodyさん
2013/01/09(水) 14:01:48.63ID:???なんか雲行きが怪しくなってきたなぁ。
君の言ってるのはビジネスロジックであって、モデルの原理原則ではないなぁ。
そもそも、その理論では、なぜ「モデル」と名乗っているのか説明できないしさ。
0080nobodyさん
2013/01/10(木) 00:36:43.40ID:???サンプル作るの面倒だろw
そんな面倒なことやる気しないし、
それで出来ないじゃないかと言われるのは心外だな。
まず君がサンプル作ってくれ。
それをベースとしようじゃないか。
>>79
> なぜ「モデル」と名乗っているのか説明できないしさ。
そもそもモデルと名乗るのが間違いだった。
最初にモデルと名乗ったバカが悪い
0081nobodyさん
2013/01/10(木) 08:43:23.45ID:???> >>78
> まず君がサンプル作ってくれ。
> それをベースとしようじゃないか。
いや、俺には作れない。
なぜなら、ビジネスロジックをフレームワークから分断することはできないから。
全くできないわけではないが、それではフレームワークを使う意味がなくなってしまう。
> >>79
> > なぜ「モデル」と名乗っているのか説明できないしさ。
> そもそもモデルと名乗るのが間違いだった。
> 最初にモデルと名乗ったバカが悪い
いや違うんだな。まだ君が、モデルはロジックを書く場所。って程度の理解しか持ってないだけなんだよ。
モデルって名前の由来はある。
0082nobodyさん
2013/01/10(木) 19:59:22.41ID:???いつのまにViewが単体でクラスになったんだ。
0084nobodyさん
2013/01/13(日) 11:27:12.10ID:???0085nobodyさん
2013/01/13(日) 14:58:41.08ID:???なら説明しようね。
0086nobodyさん
2013/01/13(日) 20:09:33.62ID:???それじゃどんな説明受けても理解は無理だろ。
0087nobodyさん
2013/01/13(日) 21:41:23.94ID:???自分が理解していないことは確定することになる。
でも他人が理解しているかどうかは判断できない。
なぜなら、言った本人は理解していないのだから
書いてある内容が正しいか間違いかは判断できない。
0088nobodyさん
2013/01/14(月) 08:18:45.08ID:???このスレ以外の知人にも聞いてもらうから説明よろしく
できないなら批判しかできない無能なカスと決定するよ
0089nobodyさん
2013/01/14(月) 12:18:33.63ID:???0090nobodyさん
2013/01/14(月) 12:23:17.76ID:???0091nobodyさん
2013/01/14(月) 13:04:10.54ID:???0092nobodyさん
2013/01/14(月) 13:19:46.32ID:???0094nobodyさん
2013/01/23(水) 19:23:56.24ID:???以下ループ
0095nobodyさん
2013/01/24(木) 08:48:04.55ID:???0096nobodyさん
2013/04/17(水) 23:41:05.48ID:???0097nobodyさん
2013/11/01(金) 18:03:07.87ID:???http://www.slideshare.net/MugeSo/mvc-14469802
0098nobodyさん
2013/11/01(金) 18:04:41.52ID:???http://at-grandpa.hatenablog.jp/entry/2013/11/01/072636
0099nobodyさん
2014/05/29(木) 22:16:10.29ID:???http://www.infoq.com/jp/news/2014/05/facebook-mvc-flux
■ このスレッドは過去ログ倉庫に格納されています