WebアプリでMVCを使う理由ってなに?
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2012/06/25(月) 22:58:18.06ID:???0002nobodyさん
2012/06/26(火) 00:27:23.33ID:2etFBhgC0003nobodyさん
2012/07/02(月) 23:28:53.71ID:???0004nobodyさん
2012/07/13(金) 20:48:30.96ID:???おかげでロクなもんが出来てきやしねぇ。
0005nobodyさん
2012/07/22(日) 02:02:56.95ID:???0006nobodyさん
2012/08/27(月) 01:29:16.19ID:???0007nobodyさん
2012/08/27(月) 01:50:38.04ID:???0008nobodyさん
2012/08/27(月) 02:04:53.65ID:???0009nobodyさん
2012/08/28(火) 22:56:52.74ID:???0010nobodyさん
2012/08/30(木) 00:51:11.22ID:???0011nobodyさん
2012/08/31(金) 21:20:42.70ID:???反論したいなら
どこかで論文見つけてきてね。
くだらない話はいらない結論だけでいいから。
0012nobodyさん
2012/09/02(日) 19:10:50.85ID:7yiRRC3O>>1
複数人数でやるとき意思疎通がしやすい
(ドキュメントを読んでもらえば説明をいちいちしなくていい)
あとバグ、セキュリティホールが出る可能性が減る
まぁこれはフレームワークの利点であってMVCである必要はないかもしれんが
0015nobodyさん
2012/09/02(日) 22:26:25.18ID:???意外と知られてないのか、頭が固いのか、2ちゃんのレベルが低いのか、はたして?
0016nobodyさん
2012/09/02(日) 23:20:24.77ID:???その詳細は、謎に包まれている。
完
0017nobodyさん
2012/09/03(月) 12:15:11.17ID:???ユーザーやクライアントに知られる前にこそっと修正。
ユニットテストを書かないとダメだなんて、単に頭が硬いだけなんじゃないかな?
もっと発想を柔軟にしてみて!
0019nobodyさん
2012/09/03(月) 21:42:26.22ID:???もし本当にユニットテストを書かなくて済む実装方法があるなら教えて欲しいです。
自分も業務でユニットテスト書かされてますが、正直バカバカしい作業でうんざりです。
0020nobodyさん
2012/09/03(月) 22:17:03.36ID:???ユニットテストが必要ない=BaiduSpaiderだってw
0021nobodyさん
2012/09/08(土) 00:02:13.42ID:???Baiduspiderがテストツールときたもんだ。安心したよ。
まあ、unit testが不要ではなくて不可能な設計なら
むかぁーしのCOBOLerとかよくやりそうだけどね。
0022nobodyさん
2012/09/08(土) 16:11:03.82ID:???知らんことに口出すな。
COBOLってのは基本バッチ処理だから
逆にテストが簡単なんだよ。
入力データがあって、処理行なって、
出力データが生成されるだけだからな。
0023nobodyさん
2012/09/08(土) 21:03:28.39ID:???テストが簡単なんだというのはごもっともなんだけど、
入力データ食わせて出力データが出てくる一連の処理を流して
テストしたと言ってもそれはunit testではない。
それに気づかないような連中が、
unit test不可能な設計をしてくると言ってるんだ。
0024nobodyさん
2012/09/08(土) 22:45:26.24ID:???入力データを食わせて出力データを出す処理を
しているのが、一つのユニットであれば、
そのテストはユニットテストだよ。
0025nobodyさん
2012/09/09(日) 00:09:56.66ID:???神クラスに対して自分はまともなユニットテストはできそうにないわ。
COBOLerとか言っちゃって気に触ったのかもしれないけど、
普段からやってる設計見なおしたほうが良いよ。
0026nobodyさん
2012/09/09(日) 04:02:34.81ID:???一体お前は誰と戦っているんだ?
それが前提の話なんかしてねーだろ。
0027nobodyさん
2012/09/09(日) 16:18:09.35ID:???入力と出力、処理も含めて一手に引き受ける神クラスを作らないと
unit testの対象にできないんだが。
なんか全然別の世界の人と話してるようだ・・・
0029nobodyさん
2012/09/10(月) 00:08:41.94ID:???unit testの定義くらい理解しておこう。
おそらくそっちの世界では不要だろうしこの話は終わりで。
(BaiduSpaiderテストはまだ興味あるからちょっともったいないが)
MVCの話をしよう。
0030nobodyさん
2012/09/10(月) 00:12:04.21ID:???ユーザーの相手はView
ロジックはControllerがするけど…
0032nobodyさん
2012/09/10(月) 20:42:11.05ID:???神クラス作る前提が馬鹿だと気づけよ。
0033nobodyさん
2012/09/10(月) 21:32:42.40ID:???ttp://satoshi.blogs.com/life/2009/10/rails_mvc.html
ttp://d.hatena.ne.jp/p4life/20091014/1255532618
0034nobodyさん
2012/09/10(月) 21:39:44.83ID:???ってことだよね。
自分も分厚いController作ってしまったことがあって、今でも反省。
0035nobodyさん
2012/09/11(火) 10:34:58.90ID:???自分だけが唯一絶対に正しいと思っている。
0036nobodyさん
2012/09/15(土) 10:37:09.58ID:???そのうち画面1枚を1ユニットとか言い出すぞ。
0038nobodyさん
2012/09/23(日) 14:03:17.78ID:???0039nobodyさん
2012/10/05(金) 01:10:53.90ID:SY4rdWpkその一握りしかうまく作れないMVCって使えないって結論になるよね。
凡人でもうまく作れるような技法を誰か開発してくれんかのう。
0040nobodyさん
2012/10/05(金) 20:12:33.86ID:???0042nobodyさん
2012/11/17(土) 14:01:28.80ID:xEuSXpZt0043nobodyさん
2012/11/17(土) 16:42:04.07ID:6UBJdOdB別の話だけど、俺も凡人にも
うまく演奏できるピアノがほしいと思う
で、プロになって商売するんだ
0044nobodyさん
2012/11/17(土) 20:52:17.68ID:???0045nobodyさん
2012/11/17(土) 23:46:34.14ID:6UBJdOdB汎用的に使えますから、○に適当な言葉でも入れてください。
意味が無い文章ですねw
0047nobodyさん
2012/11/18(日) 18:39:27.66ID:Y/cfCv1Cもちろん入れ替えていいよw
中身が無い文章は、単語を用意に入れ替えられる。
見事に当てはまったので、これは中身が無い文章であるということ。
中身が無い文章は、他の場所の単語も容易に入れ替えられる。
0049nobodyさん
2012/11/18(日) 19:44:33.14ID:???0050nobodyさん
2012/11/18(日) 20:03:08.05ID:???単語を容易に入れ替えられるような文章から、
相手の言いたいことを読み取れず中身がないように感じてしまうあなたは、
コミュニケーション能力が大きく欠落しています。
0051nobodyさん
2012/11/18(日) 21:48:04.43ID:Y/cfCv1Cお前のさっきの言葉で言えば、デザパタを否定したんだから
その後の文章は、デザパタとはどういうものかってのが書かれているはず。
○○の単語部分だけ変えても同じようになるってことは、
○○ を否定してることにならないんだよ。
0052nobodyさん
2012/11/18(日) 22:59:04.61ID:???0053nobodyさん
2012/11/20(火) 00:56:00.79ID:???BaiduSpiderのテスト手法だけが気になるんだ!
0054nobodyさん
2012/11/20(火) 08:42:48.86ID:ZgN4QSxZ0055nobodyさん
2012/11/24(土) 14:28:02.49ID:???0056nobodyさん
2013/01/05(土) 03:29:54.86ID:???Model…DBの構造定義、O/Rマッピング
View…HTML出力担当
Service…専らDBの操作(CRUD)担当
Controller…HTTPリクエスト処理担当
のMVSCだな
0057nobodyさん
2013/01/05(土) 10:16:00.81ID:???0058nobodyさん
2013/01/06(日) 04:58:11.63ID:d/pWw/oNModelでO/Rマッパーを定義したらいかんのだよ。
0059nobodyさん
2013/01/06(日) 08:28:12.84ID:???0060nobodyさん
2013/01/06(日) 08:29:07.12ID:???0061nobodyさん
2013/01/06(日) 08:29:58.11ID:???0062nobodyさん
2013/01/06(日) 08:40:28.78ID:???モデルにO/Rマッパーを密結合するから
モデルが太るわけで。
0063nobodyさん
2013/01/06(日) 13:01:06.50ID:???マッパーが生成したオブジェクトを操作したりしてるだけで
で、マッパーが生成したオブジェクトがモデルじゃなければ何なんだ、って話じゃね
0064nobodyさん
2013/01/06(日) 13:18:24.23ID:???まずモデル、ここにロジックのすべてが入るべき。
そしてモデルには、ロジックは入るがO/Rマッパーを使っても
使わなくても成り立つようにするべき。
必然的にロジックとO/Rマッパーは分離させるべきという結論になる。
0066nobodyさん
2013/01/06(日) 15:33:21.91ID:???>まずモデル、ここにロジックのすべてが入るべき。
その理屈だと、viewにロジックを書いてはいけないってこと?controllerにも?
viewやcontrollerにロジックを書いた方がプログラムが読みやすくなっても、Model原理主義を貫けってこと?
0067nobodyさん
2013/01/06(日) 15:38:46.57ID:???>必然的にロジックとO/Rマッパーは分離させるべきという結論になる。
普通は、そりゃ、そうだろ?
特定のWebアプリのロジックが汎用化される訳がないわけで。
だから、ORMのベースがあって、それを派生させて、Webアプリ固有のORMにカスタマイズしてコントローラに書くロジックを減らしなさい、って思想がsymfonyとかにはあるわけで。
まぁ、そこまでORMを使い倒してる人は滅多にいないけど。
0068nobodyさん
2013/01/06(日) 17:03:34.03ID:???モデルだけで構成されているとして、
「Webアプリ固有のORMにカスタマイズ」とは
どういうこと?
is-a関係、has-a関係ってわかってるかな?
モデル is a ORM ですか? 違うでしょう?
モデルがORMを継承するのはおかしいんだよ。
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
> なぜ「モデル」と名乗っているのか説明できないしさ。
そもそもモデルと名乗るのが間違いだった。
最初にモデルと名乗ったバカが悪い
■ このスレッドは過去ログ倉庫に格納されています