探検
MVVMについて語ろう
■ このスレッドは過去ログ倉庫に格納されています
2012/06/06(水) 11:03:33.21
WPF/Silverlight/WinRT開発の必須技術、MVVMについて語ろうではないか!
519デフォルトの名無しさん
2012/11/18(日) 23:51:14.50 で、そのPDSとMVVMに何の関係が?
520518
2012/11/18(日) 23:57:05.51 MVVMは、XAML系フレームワークにおけるP(resentation層)の問題を解決するもの
その前提としてPとD(omain層)の分離がある
その前提としてPとD(omain層)の分離がある
521518
2012/11/18(日) 23:59:12.80 とはいえこれはあくまでパターンであり、絶対の解法ではない
その証拠として、MicrosoftもXAML系コンポーネントベンダーもMVVMを推奨してないという事実がある
その証拠として、MicrosoftもXAML系コンポーネントベンダーもMVVMを推奨してないという事実がある
522518
2012/11/19(月) 00:02:35.76 WPF・Silverlight・RTの公式ドキュメントで、一ヶ所でもMVVM必須と謳っている箇所があるだろうか?
また国内だとGrapeCity・Infragistics等のベンダーがXAML系コンポーネントを販売している
これらベンダーのマニュアルにも、MVVMを必須・提唱しているドキュメントは全く見当たらない
また国内だとGrapeCity・Infragistics等のベンダーがXAML系コンポーネントを販売している
これらベンダーのマニュアルにも、MVVMを必須・提唱しているドキュメントは全く見当たらない
523デフォルトの名無しさん
2012/11/19(月) 00:07:49.16 MがちゃんとしててVMはぺらっぺらになるのがMVVMの設計としては理想だからな
Web MVCではいくらぺらっぺらでもC無しというわけにはいかないが
VMがぺらっぺらになっていき、ついに無くなるのは別に問題ない
微妙に矛盾したパターンだよ
Web MVCではいくらぺらっぺらでもC無しというわけにはいかないが
VMがぺらっぺらになっていき、ついに無くなるのは別に問題ない
微妙に矛盾したパターンだよ
524デフォルトの名無しさん
2012/11/19(月) 00:07:57.56 そりゃ必須なわけがない
MSDNマガジンやChannel9とかで適度に触れられている程度だな
あと「推奨していない」だと非推奨と主張しているように聞こえるから注意だ
「触れていない」あたりでいい
MSDNマガジンやChannel9とかで適度に触れられている程度だな
あと「推奨していない」だと非推奨と主張しているように聞こえるから注意だ
「触れていない」あたりでいい
525518
2012/11/19(月) 00:08:10.96 勘違いしてはいけないのは、パターンはあくまでパターンであり、絶対の解法ではないことだ
逆にパターンに振り回されてその本質を見失えば、返って障害が発生する場合もある
MVVMを使わずに開発できるのならそれでよし
逆にパターンに振り回されてその本質を見失えば、返って障害が発生する場合もある
MVVMを使わずに開発できるのならそれでよし
526デフォルトの名無しさん
2012/11/19(月) 00:09:31.95 VMとテスト
527デフォルトの名無しさん
2012/11/19(月) 00:11:53.87 >>526
MがちゃんとしててMのテストだけで済むならそれに越したことはない
MがちゃんとしててMのテストだけで済むならそれに越したことはない
528デフォルトの名無しさん
2012/11/19(月) 00:12:18.51 >>524
どうかな?
「MVVMが必須」という誤ったイメージが蔓延し過ぎて参入障壁が上がり過ぎると
Microsoftや周辺ベンダーしては返って喜ばしくない事態になると思う
・・・いやすでになっているな
「触れていない」というより、いまとなっては「触れたくない」が正解だと思う
どうかな?
「MVVMが必須」という誤ったイメージが蔓延し過ぎて参入障壁が上がり過ぎると
Microsoftや周辺ベンダーしては返って喜ばしくない事態になると思う
・・・いやすでになっているな
「触れていない」というより、いまとなっては「触れたくない」が正解だと思う
529518
2012/11/19(月) 00:15:52.43 かくいう私はどうかといえばMVVMは割と好きなパターンであるし、
実際これでかなり問題を解決できているのも事実だ
しかし、使えない、理解できない、開発速度が極端に落ちて苦痛に感じるくらいなら、
そこまで無理に使う必要もないと思う
実際これでかなり問題を解決できているのも事実だ
しかし、使えない、理解できない、開発速度が極端に落ちて苦痛に感じるくらいなら、
そこまで無理に使う必要もないと思う
530デフォルトの名無しさん
2012/11/19(月) 00:28:44.37 VMがわかりにくいのって、CとかPとかと違ってVMにはこれといって
Mとの間に役割の違いが無いことだよ
特定のVとバインドすることを意識して作ったMってだけだからな
Mとの間に役割の違いが無いことだよ
特定のVとバインドすることを意識して作ったMってだけだからな
531デフォルトの名無しさん
2012/11/19(月) 00:53:44.94 なにいってんだ?
ビューの状態を表すモデルデータという
役割があるだろ。
ビューの状態を表すモデルデータという
役割があるだろ。
532デフォルトの名無しさん
2012/11/19(月) 00:58:48.11 別に選択状態持つためのMを設けてもいいんだぜ?
533デフォルトの名無しさん
2012/11/19(月) 01:02:55.31 それはもはやMではない。
Mの役割としては、GUIアプリではなく
CUIアプリからでも普通に使えるようなものを
目指すべきだ。
そんなGUIに依存した機能を持たせるべきじゃない。
Mの役割としては、GUIアプリではなく
CUIアプリからでも普通に使えるようなものを
目指すべきだ。
そんなGUIに依存した機能を持たせるべきじゃない。
534デフォルトの名無しさん
2012/11/19(月) 01:04:56.93 その選択状態がGUIとしてあらわす際に必要となる選択状態なのか、
そのプログラムの動作自体を構成するにおいて存在する必然性のある選択状態なのかによるね
そのプログラムの動作自体を構成するにおいて存在する必然性のある選択状態なのかによるね
535デフォルトの名無しさん
2012/11/19(月) 01:19:56.04 画面ごとのVMはいいけど、モデルごとのVMはめんどい
536デフォルトの名無しさん
2012/11/19(月) 10:20:32.56 >>532
GUIの選択状態を維持するためのモデルをViewModelという
GUIの選択状態を維持するためのモデルをViewModelという
537デフォルトの名無しさん
2012/11/19(月) 22:03:23.29 グリッドのボタン付けるときとかの
行ごとにVM作る派と作らない派の比率が知りたい
行ごとにVM作る派と作らない派の比率が知りたい
538デフォルトの名無しさん
2012/11/19(月) 22:15:46.48 行って何の話だよ
539デフォルトの名無しさん
2012/11/19(月) 22:20:34.86 WPFでデータグリッド使ったら負けだろ
それならWinForms使うわ
WPFならテンプレートで作れ
それならWinForms使うわ
WPFならテンプレートで作れ
540デフォルトの名無しさん
2012/11/19(月) 22:29:30.62 普通コンボボックスの項目毎VM作るだろ
541デフォルトの名無しさん
2012/11/19(月) 23:23:02.89 グリッドって何かと思ったらDataGridのほうか
542デフォルトの名無しさん
2012/11/20(火) 13:30:22.35543デフォルトの名無しさん
2012/11/20(火) 13:54:25.91 HeaderedItemsControlとかをこねくり回すのは常套手段なのか
544デフォルトの名無しさん
2012/11/28(水) 11:11:37.09 考え増やしたいから、
MVVM の各レイヤーの具体的な責務を教えてください
以下、テンプレ
M:
V:
VM:
MVVM の各レイヤーの具体的な責務を教えてください
以下、テンプレ
M:
V:
VM:
545デフォルトの名無しさん
2012/11/28(水) 11:22:45.65 >>544
> M:
ビューに関係無いデータ構造など変更部分。いわゆるモデル。UIスレッドと分離されてる事が望ましい。
> V:
ビューの見た目。極力もらったデータを表示したりインプットを上にあげるだけで何もしない。
> VM:
その両者を繋ぐもの。そのビューに関係するコーディネーター。ユニットテストできること。スレッド間の調整をここで吸収。
> M:
ビューに関係無いデータ構造など変更部分。いわゆるモデル。UIスレッドと分離されてる事が望ましい。
> V:
ビューの見た目。極力もらったデータを表示したりインプットを上にあげるだけで何もしない。
> VM:
その両者を繋ぐもの。そのビューに関係するコーディネーター。ユニットテストできること。スレッド間の調整をここで吸収。
546デフォルトの名無しさん
2012/11/28(水) 11:22:46.45 Set-Location : ドライブが見つかりません。名前 'M' のドライブが存在しません。
547デフォルトの名無しさん
2012/11/28(水) 11:34:44.90 一番ありそうな間違いは、WebMVCの典型的な間違った使い方のように
M: データ
VM: ロジック
としてしまうことだな
注文画面のMは注文処理クラス。VMはあくまでインターフェイスの差を吸収するだけ。
M: データ
VM: ロジック
としてしまうことだな
注文画面のMは注文処理クラス。VMはあくまでインターフェイスの差を吸収するだけ。
549デフォルトの名無しさん
2012/11/28(水) 12:47:28.47 使う側ならそれでいい
550デフォルトの名無しさん
2012/11/28(水) 14:02:32.93 Mのビジネスロジックがバックエンドに移って
結果的にMがデータだけになることはあるだろうけど
VMから見たら特に関係ない話。VMにビジネスロジックを書いてるわけじゃない。
結果的にMがデータだけになることはあるだろうけど
VMから見たら特に関係ない話。VMにビジネスロジックを書いてるわけじゃない。
551デフォルトの名無しさん
2012/11/28(水) 21:50:02.31 プレゼンテーションに関わるものとしてVMに置いとくべきデータやロジックがあるって意見も耳にするけど
自分には区別が難しいので極力Mに持たせるわ。
自分には区別が難しいので極力Mに持たせるわ。
552544
2012/11/28(水) 22:50:19.03 永続化しないデータとか?
553デフォルトの名無しさん
2012/11/28(水) 23:14:06.28 MVVM界隈の話はVMが強調されすぎるきらいがあるよな。
本当はMの方が遥かに重要なのに。どちかか省くなら迷わずM。
VMはMVVMパターンのアイデンティティだから仕方がないけど。
本当はMの方が遥かに重要なのに。どちかか省くなら迷わずM。
VMはMVVMパターンのアイデンティティだから仕方がないけど。
554553
2012/11/28(水) 23:14:52.00 間違えた省くならVM
555デフォルトの名無しさん
2012/11/29(木) 00:02:45.23 プレゼンテーションにかかわるものはVに書くんじゃないのか
556デフォルトの名無しさん
2012/11/30(金) 06:22:26.73 VMは、抽象的な、表示する「ための」データだな
例えば、VでItemsSourceにバインドして表示する一連のデータのコレクションとか
特定のデータを、手段は特定しないからとにかく強調表示しろ、ということを示すプロパティとか
Vは、具体的な、表示「の仕方」だな
同じVMからでも、同じコレクションを表示させる方法はListBoxだったりDataGridだったり単なるテキストだったり
どんな形で表示するのかはVが決めることでVMは手を出せない
また、強調表示の仕方にしても、単なる色変化だったり太字だったり、その部分だけ無意味にアニメーションさせたり
表示の仕方もVに任せられててVMは手を出せない
例えば、VでItemsSourceにバインドして表示する一連のデータのコレクションとか
特定のデータを、手段は特定しないからとにかく強調表示しろ、ということを示すプロパティとか
Vは、具体的な、表示「の仕方」だな
同じVMからでも、同じコレクションを表示させる方法はListBoxだったりDataGridだったり単なるテキストだったり
どんな形で表示するのかはVが決めることでVMは手を出せない
また、強調表示の仕方にしても、単なる色変化だったり太字だったり、その部分だけ無意味にアニメーションさせたり
表示の仕方もVに任せられててVMは手を出せない
557デフォルトの名無しさん
2012/12/11(火) 16:23:56.96 VBでペタポトプログラミングしか経験ない奴にパターン教えても一向に概念理解してくれない
ましてMVVMなんか到底無理無理
ましてMVVMなんか到底無理無理
558デフォルトの名無しさん
2012/12/11(火) 18:18:42.11 そんな動けばいいという考えの奴に何をいってもダメだ。
平気でModel部分にフォームやコントロール(UI)のインスタンスを食わそうとしたりするからな。
平気でModel部分にフォームやコントロール(UI)のインスタンスを食わそうとしたりするからな。
559デフォルトの名無しさん
2013/01/16(水) 20:12:33.47 MVVMって従来のASP.NETやWindowsフォームに慣れた人に説明するなら、
V Aspxファイル/フォーム
VM コードビハインドのcs
M 業務ロジック
と対応してて、従来のASP.NETやWindowsフォームとの大きな違いは、
ViewとViewModelがバインディングを介すると言う制約があるので分離しやすい、
と言う理解なんだけど大体合ってるかな?
V Aspxファイル/フォーム
VM コードビハインドのcs
M 業務ロジック
と対応してて、従来のASP.NETやWindowsフォームとの大きな違いは、
ViewとViewModelがバインディングを介すると言う制約があるので分離しやすい、
と言う理解なんだけど大体合ってるかな?
560デフォルトの名無しさん
2013/01/16(水) 22:46:55.45 全然
561デフォルトの名無しさん
2013/01/17(木) 23:06:47.49 大体合ってるみたいですね。
VB6脳なPGとJava/Struts脳なPG、どっちがMVVM覚えるのに向いてますかね?
VB6脳なPGとJava/Struts脳なPG、どっちがMVVM覚えるのに向いてますかね?
562デフォルトの名無しさん
2013/01/18(金) 08:37:02.03 >>561
全然違うと言われてんだろ
概念がそもそも違うがそれが分からない人間でも
・コードビハインドは画面と同一クラスだがVMは別クラス
・コードビハインドとViewは一対一だが、View:VMは1:n
・VSでコントロールをダブルクリックしてもコマンドが作られて自動的にバインドされたりしない
・そもそもコードビハインドはコードビハインドで存在するだろ
と、上げ出したらきりが無い
MVVM使うならちゃんとMVVMの概論くらいは理解させないとあとで自分が地獄行きだぞ
全然違うと言われてんだろ
概念がそもそも違うがそれが分からない人間でも
・コードビハインドは画面と同一クラスだがVMは別クラス
・コードビハインドとViewは一対一だが、View:VMは1:n
・VSでコントロールをダブルクリックしてもコマンドが作られて自動的にバインドされたりしない
・そもそもコードビハインドはコードビハインドで存在するだろ
と、上げ出したらきりが無い
MVVM使うならちゃんとMVVMの概論くらいは理解させないとあとで自分が地獄行きだぞ
563デフォルトの名無しさん
2013/01/18(金) 09:03:18.93 的外れな回答()キター
564デフォルトの名無しさん
2013/01/18(金) 14:28:02.15 いまだにVB6脳なんて他のこと何も向いてないだろ
565デフォルトの名無しさん
2013/01/18(金) 14:46:29.63 違うって言われてるのに合ってると受け取っちゃうのはどこにも向いてないな。
566デフォルトの名無しさん
2013/01/18(金) 17:07:06.64 全然合ってるかもしれない
567デフォルトの名無しさん
2013/01/20(日) 07:38:18.01 559は大体あってるよね?
というより562が間違いすぎw
・コードビハインド(各種イベントで呼び出される関数)は
手動で設定すれば Viewとは別のクラスにすることは可能だし
・V:VM は 一つのデータを別表現で表示することがあるので V:VM = n:1
・デザイナでダブルクリックしても自動で出来ない
→細かい処理を行いたければデザイナに任せずに手動で操作するのは当たり前。
・そもそもコードビハインドはコードビハインドで存在するだろ
→別にイベントで関数呼び出しても、
CommandやActionのバインディングで関数呼び出してもよくね?
というより562が間違いすぎw
・コードビハインド(各種イベントで呼び出される関数)は
手動で設定すれば Viewとは別のクラスにすることは可能だし
・V:VM は 一つのデータを別表現で表示することがあるので V:VM = n:1
・デザイナでダブルクリックしても自動で出来ない
→細かい処理を行いたければデザイナに任せずに手動で操作するのは当たり前。
・そもそもコードビハインドはコードビハインドで存在するだろ
→別にイベントで関数呼び出しても、
CommandやActionのバインディングで関数呼び出してもよくね?
568デフォルトの名無しさん
2013/01/20(日) 07:50:01.85 そういえば、データバインディングって
ほんの少し MFCのValue変数とDDX_〜 に似てないか?
ほんの少し MFCのValue変数とDDX_〜 に似てないか?
569デフォルトの名無しさん
2013/01/20(日) 09:40:48.58 >>568
ほんの少しな( ´Д`)y━・~~
ほんの少しな( ´Д`)y━・~~
570デフォルトの名無しさん
2013/01/22(火) 07:57:45.76 @Grabacr07 いままでのオレオレICommandの正しい実装基底クラス
Prismのパクリなのになんでこんなに偉そうなの?
Prismのパクリなのになんでこんなに偉そうなの?
571デフォルトの名無しさん
2013/01/22(火) 19:39:17.12 心底どうでもいい
572デフォルトの名無しさん
2013/01/22(火) 21:17:29.87 MVVMライブラリはすべてPrismのパクリだからな
いまさらだろ
いまさらだろ
573デフォルトの名無しさん
2013/01/25(金) 10:23:59.51 別に偉そうじゃない件について
どれだけコンプレックス感じてんだよw ダッセーやつw ぷげら
どれだけコンプレックス感じてんだよw ダッセーやつw ぷげら
574デフォルトの名無しさん
2013/01/25(金) 23:38:53.69 実際やってみたらMVVMではなくWPFやSilverlight固有の部分でかなり躓いた
初見でXAMLを自由自在に扱える奴とかいるのか?
初見でXAMLを自由自在に扱える奴とかいるのか?
575デフォルトの名無しさん
2013/01/25(金) 23:46:59.77 固有の約束事を理解しないといけないのはWinFormsだってASP.NETだって
PHPとかのWebフレームワークだって一緒だ
PHPとかのWebフレームワークだって一緒だ
576デフォルトの名無しさん
2013/01/26(土) 00:00:26.99 パネル使ったレイアウトに慣れてないだけじゃね?
577デフォルトの名無しさん
2013/01/26(土) 00:07:18.85 >>574
ちなみに躓いたのどこら編?
ちなみに躓いたのどこら編?
578デフォルトの名無しさん
2013/01/26(土) 00:11:58.51 ControlTemplateとか初見でMSDNだけで使いこなせたら神だわ
579デフォルトの名無しさん
2013/01/28(月) 10:43:39.37 Templateカスタマイズする時点で折れるな
580デフォルトの名無しさん
2013/01/29(火) 02:16:53.83 >>573
別にウガヤが考えたロジックじゃあないのに
まるで自分で考案したような口ぶりが臭いだけじゃろ。
特にcommandのweakeventなんてprismのアイデアそのまんまだし。
++c++やneueと違って.NETやC#(言語)の知識は薄っぺらいのに
ビックマウスだから余計に臭い。
別にウガヤが考えたロジックじゃあないのに
まるで自分で考案したような口ぶりが臭いだけじゃろ。
特にcommandのweakeventなんてprismのアイデアそのまんまだし。
++c++やneueと違って.NETやC#(言語)の知識は薄っぺらいのに
ビックマウスだから余計に臭い。
581デフォルトの名無しさん
2013/01/29(火) 05:30:37.24 >>580
詳しくは知らんが咀嚼して自分のライブラリとしてまとめ上げて、それを採用してくれてるとこもあるんだから、口だけ番長のお前より遥かにまし。
リアルでフルボッコにされたの?悔しいのぅ悔しいのぅ。
詳しくは知らんが咀嚼して自分のライブラリとしてまとめ上げて、それを採用してくれてるとこもあるんだから、口だけ番長のお前より遥かにまし。
リアルでフルボッコにされたの?悔しいのぅ悔しいのぅ。
582デフォルトの名無しさん
2013/01/29(火) 07:57:35.12 奴が自分で考案したみたいなことを言っているのは見たことないが
どの辺で言ってたのか気になるな
どの辺で言ってたのか気になるな
583デフォルトの名無しさん
2013/01/29(火) 08:22:09.37 別に好きでも嫌いでもないが、世の中のMVVMフレームワークは全てLivetより下と言ってるように取れる文書ならみた
MVVMが普及しないのは既存のインフラが不十分なせいで、Livetがそれを解決するんだとか
確かアンチMVVMに反論する記事だったかと思う
MVVMが普及しないのは既存のインフラが不十分なせいで、Livetがそれを解決するんだとか
確かアンチMVVMに反論する記事だったかと思う
584デフォルトの名無しさん
2013/01/29(火) 08:34:30.68 現場でMVVMゴリ押しして使ったら大失敗したからアホにも使えるように作ったんだっけ?
部下も可哀想だな
部下も可哀想だな
585デフォルトの名無しさん
2013/01/29(火) 08:50:43.67 まあ既存のが不十分なのはあってるな
ただLivetが必要十分かと言うとそうでもない
ただLivetが必要十分かと言うとそうでもない
586デフォルトの名無しさん
2013/01/29(火) 09:18:58.54 Javascriptエンジン組み込んでknockout.jsを逆移植するのがいいと思う
ビューに振る舞いを書けた方がいいのは、それを最初否定してたMVVM自身によって証明されたし
VMも静的言語で書くのは面倒な単純作業すぎる
ビューに振る舞いを書けた方がいいのは、それを最初否定してたMVVM自身によって証明されたし
VMも静的言語で書くのは面倒な単純作業すぎる
587デフォルトの名無しさん
2013/01/29(火) 09:31:08.32 ReactiveExtensions絡めて作ってるがすこぶる楽だし見通し良くなってイイよ。
まぁ向き不向き有るかもしれんが。まだ試しで作ってるだけなので後でいろいろはまるのかもしれんけど。
内部の状態遷移など含めて綺麗に落とし込みたいんだけどまだそこまで出来とらん。
まぁ向き不向き有るかもしれんが。まだ試しで作ってるだけなので後でいろいろはまるのかもしれんけど。
内部の状態遷移など含めて綺麗に落とし込みたいんだけどまだそこまで出来とらん。
588デフォルトの名無しさん
2013/01/29(火) 10:26:40.09 MVVMとリアクティブプログラミングの相性は非常にいいね。
ただ、ReactiveExtensionsは記述が冗長になるので
人にはお勧めできないな。
async,awaitみたいにコンパイラ支援があればいいんだけど。
ただ、ReactiveExtensionsは記述が冗長になるので
人にはお勧めできないな。
async,awaitみたいにコンパイラ支援があればいいんだけど。
589デフォルトの名無しさん
2013/01/29(火) 10:36:58.35590デフォルトの名無しさん
2013/01/29(火) 12:29:20.69 MVVMって何ですか?
591デフォルトの名無しさん
2013/01/29(火) 12:40:25.22 wwwwみたいなAAの一種
592デフォルトの名無しさん
2013/01/29(火) 12:51:58.26 >>588
俺は非同期についてはasync,awaitを使ってるから気にしてなくて、
リアクティブプログラミング本来の "関係性を記述する" って部分で冗長性が気になる。
例えば、
int A { get { return B ? C : D.E; } }
って単純な関係性を記述するだけでも、それなりの量になる。
> F#だとその辺を自分でクエリ構文を定義してよしなに出来なくもないけど。
F#の計算式は羨ましいね。
async, awaitがTask<T>を生成するのと同じように、
計算式で ReactiveProperty<T> を生成すると非常にすっきり書ける。
俺は非同期についてはasync,awaitを使ってるから気にしてなくて、
リアクティブプログラミング本来の "関係性を記述する" って部分で冗長性が気になる。
例えば、
int A { get { return B ? C : D.E; } }
って単純な関係性を記述するだけでも、それなりの量になる。
> F#だとその辺を自分でクエリ構文を定義してよしなに出来なくもないけど。
F#の計算式は羨ましいね。
async, awaitがTask<T>を生成するのと同じように、
計算式で ReactiveProperty<T> を生成すると非常にすっきり書ける。
593デフォルトの名無しさん
2013/01/29(火) 13:51:35.91 >>592
> int A { get { return B ? C : D.E; } }
> って単純な関係性を記述するだけでも、それなりの量になる。
自分もまだそこまで突っ込んで触ってないのでなんだが、自分で用途に合わせた複数要素を取れるZipみたいな物とか作らないと記述が冗長になりそうな気はしてる。
Zip重ねてとかでもいいけど見た目的にも身微妙な気がしなくもない。
> 計算式で ReactiveProperty<T> を生成すると非常にすっきり書ける。
その辺でSelectManyとかSwitchで上手く合成出来ると綺麗に書けるんかね( ´Д`)y━・~~
> int A { get { return B ? C : D.E; } }
> って単純な関係性を記述するだけでも、それなりの量になる。
自分もまだそこまで突っ込んで触ってないのでなんだが、自分で用途に合わせた複数要素を取れるZipみたいな物とか作らないと記述が冗長になりそうな気はしてる。
Zip重ねてとかでもいいけど見た目的にも身微妙な気がしなくもない。
> 計算式で ReactiveProperty<T> を生成すると非常にすっきり書ける。
その辺でSelectManyとかSwitchで上手く合成出来ると綺麗に書けるんかね( ´Д`)y━・~~
594デフォルトの名無しさん
2013/01/29(火) 15:41:47.19 F#で計算式を使うと言っても、do!やlet!でやるのは
ReactiveProperty<T>からをT型の値を取得すると同時に値の監視を開始するだけだから
C#でも似たようなことはできるけどね。
上の int A { get { return B ? C : D.E; } } の関係性なら
ReactiveProperty<int> A
{
get { return ReactiveProperty.Create(x => x(B) ? x(C) : x(x(D).E)); }
}
と書けるReactiveProperty.Createは実装可能。
逆に言えばF#でも同程度の記述の冗長性は残るという事になる。
ReactiveProperty<T>からをT型の値を取得すると同時に値の監視を開始するだけだから
C#でも似たようなことはできるけどね。
上の int A { get { return B ? C : D.E; } } の関係性なら
ReactiveProperty<int> A
{
get { return ReactiveProperty.Create(x => x(B) ? x(C) : x(x(D).E)); }
}
と書けるReactiveProperty.Createは実装可能。
逆に言えばF#でも同程度の記述の冗長性は残るという事になる。
595デフォルトの名無しさん
2013/01/29(火) 16:11:47.74 >>594
自分が言ってるのはQueryExpressionsの方。
使ってる例としてはこんな感じ。
http://mnajder.blogspot.jp/2011/09/when-reactive-framework-meets-f-30.html
これはクエリ式への直接変換的な感じだけど、望みのクエリ式を追加できるので独自のDSL的に定義できる。
自分が言ってるのはQueryExpressionsの方。
使ってる例としてはこんな感じ。
http://mnajder.blogspot.jp/2011/09/when-reactive-framework-meets-f-30.html
これはクエリ式への直接変換的な感じだけど、望みのクエリ式を追加できるので独自のDSL的に定義できる。
596デフォルトの名無しさん
2013/01/30(水) 18:31:22.62 従来型のほうがいいだろ
誰かさんにプレゼント
優れた言語より流行ってる言語
優れたフレームワークより使われてるフレームワーク
誰かさんにプレゼント
優れた言語より流行ってる言語
優れたフレームワークより使われてるフレームワーク
597デフォルトの名無しさん
2013/01/30(水) 18:52:28.14 アプリケーションで、各種バー表示のon/offや配置等の、GUIに関する設定がよくあると思いますが
そういう設定の保存・読み込みロジックはVMでいいんですよね?
MVVMの概念がまだあやふやで確信が持てません。
そういう設定の保存・読み込みロジックはVMでいいんですよね?
MVVMの概念がまだあやふやで確信が持てません。
598デフォルトの名無しさん
2013/01/30(水) 18:55:35.45 一番使われてるフレームワークが一番、ってのなら、
一番のラーメンはインスタントラーメンだぜ?
一番のラーメンはインスタントラーメンだぜ?
599デフォルトの名無しさん
2013/01/30(水) 19:04:13.88 Haskell大流行だもんな
600デフォルトの名無しさん
2013/01/30(水) 19:13:05.88601デフォルトの名無しさん
2013/01/30(水) 20:13:22.03 COBOL最高だろうが
602デフォルトの名無しさん
2013/01/30(水) 20:49:05.37603デフォルトの名無しさん
2013/01/30(水) 20:55:18.66 メニューとか(共有の)ツールバーとかウィンドウ制御のようなシェル的な部分に
MVVMを適用しようと考えてはいけない
そういうのはインフラとしてMVVMの枠外で実装して、その中で扱うドキュメントには
必要に応じてMVVM適用するのがスマート
MVVMを適用しようと考えてはいけない
そういうのはインフラとしてMVVMの枠外で実装して、その中で扱うドキュメントには
必要に応じてMVVM適用するのがスマート
604デフォルトの名無しさん
2013/01/30(水) 22:12:56.62 あくまでVの都合だしな
MVVMは本体処理とUIの組み合わせ方のパターンでしかないので、ウィンドウのサイズ保存とかはロジックとは無関係
MVVMは本体処理とUIの組み合わせ方のパターンでしかないので、ウィンドウのサイズ保存とかはロジックとは無関係
605デフォルトの名無しさん
2013/01/30(水) 22:13:53.89606デフォルトの名無しさん
2013/01/30(水) 22:14:56.02 あぁ、確かにビジネスロジックではないのか
607デフォルトの名無しさん
2013/01/30(水) 22:45:08.78 あえてシェルにMVVMを適用するんならMだろうな
どちらにしろGUIに閉じた話であって、ビジネスロジックの世界とは分けて考えるべき
どちらにしろGUIに閉じた話であって、ビジネスロジックの世界とは分けて考えるべき
608デフォルトの名無しさん
2013/01/30(水) 22:47:03.45609デフォルトの名無しさん
2013/01/30(水) 22:56:21.08 >>608
それこそビジネスロジックとUIがごっちゃになってね?
もともとビジネスロジックから見たらVの実装の詳細にすぎないことで、
それが少々複雑になるからMVVM適用しようってんなら
GUIの設定情報を持つためのMを使うのが適切だと思うよ
それこそビジネスロジックとUIがごっちゃになってね?
もともとビジネスロジックから見たらVの実装の詳細にすぎないことで、
それが少々複雑になるからMVVM適用しようってんなら
GUIの設定情報を持つためのMを使うのが適切だと思うよ
610デフォルトの名無しさん
2013/01/30(水) 23:00:06.22 アプリケーションモデルというやつですか。
611デフォルトの名無しさん
2013/01/30(水) 23:07:07.58 そもそもそんなロジックに直接関係なくてGUIに閉じた混みいった制御と
金,人間,住所,データベース,入力フォーム云々を一緒にして扱うのがおかしい
そこ明確に分けるのが一番大事だろ
金,人間,住所,データベース,入力フォーム云々を一緒にして扱うのがおかしい
そこ明確に分けるのが一番大事だろ
612デフォルトの名無しさん
2013/01/30(水) 23:19:21.22 そんなめんどくさいことせんでも、VBで画面にぽちぽちボタンとか張って、
ダブルクリックしてイベント追加したら、その中に全部処理書けばええやろww
ダブルクリックしてイベント追加したら、その中に全部処理書けばええやろww
613デフォルトの名無しさん
2013/01/30(水) 23:22:23.10 PrismだとShellに対してVとVMがあって、ShellのVMのプロパティに
入力画面とかのVM渡して、ShellのVの中でその画面開いて、ツールバーなども
Shellが管理するようになってたはず。サンプルではShellに対するMは無かったけど、
ツールバーの細かい設定入れるとしたら当然この設計ではShellのMになるよね。
ShellのVMが本当に必要かどうかはかなり怪しいが。
入力画面とかのVM渡して、ShellのVの中でその画面開いて、ツールバーなども
Shellが管理するようになってたはず。サンプルではShellに対するMは無かったけど、
ツールバーの細かい設定入れるとしたら当然この設計ではShellのMになるよね。
ShellのVMが本当に必要かどうかはかなり怪しいが。
614デフォルトの名無しさん
2013/01/30(水) 23:22:30.14 >>609
ビジネスロジックというのを定形的に捉えすぎてね?
アプリケーションシェルと言った物の実装も対象が違うだけでビジネスロジックの実装と変わらんだろ。
MVVMはロジックとビューをブリッジ介して分離する仕組みでその対象がシェルでも構わんと思うけどね。
他の実装がしやすいなら無理に適応する必要はないけど。
ビジネスロジックというのを定形的に捉えすぎてね?
アプリケーションシェルと言った物の実装も対象が違うだけでビジネスロジックの実装と変わらんだろ。
MVVMはロジックとビューをブリッジ介して分離する仕組みでその対象がシェルでも構わんと思うけどね。
他の実装がしやすいなら無理に適応する必要はないけど。
615デフォルトの名無しさん
2013/01/30(水) 23:26:54.51616609
2013/01/30(水) 23:32:29.95 >>614-615
うん。だからシェルの抽象化がVMだしシェルのロジックやデータがMとするなら
Mじゃないかってことが言いたかった。省くならVMを省くべきじゃない?
バインディングもあんまり役に立たなそうだし。
うん。だからシェルの抽象化がVMだしシェルのロジックやデータがMとするなら
Mじゃないかってことが言いたかった。省くならVMを省くべきじゃない?
バインディングもあんまり役に立たなそうだし。
617デフォルトの名無しさん
2013/02/04(月) 00:54:01.35 ViewModelHelper.ReadOnlyDispatcherCollectionのソース見てるんだけど
Dispatcher経由でViewModelのDisposeしなくていいの?
Dispatcher経由でViewModelのDisposeしなくていいの?
618デフォルトの名無しさん
2013/02/04(月) 02:17:34.63 WeakReferenceがなんとか
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【おこめ券】物価高対策の“おこめ券”全米販は1枚477円で販売へ 鈴木農水大臣「国民の皆様に活用いただきやすいよう工夫いただいた」★2 [ぐれ★]
- 高市首相の答弁書に「台湾有事答えない」と明記 存立危機発言当時 ★5 [蚤の市★]
- 神田沙也加さん元恋人で元俳優の前山剛久 六本木のメンズラウンジ勤務を報告「真叶(まなと)です。よろしく」 [muffin★]
- 「偽サッチャー」「自滅的」「時代遅れ」 高市首相の経済政策を海外メディアが酷評 ★5 [蚤の市★]
- ハリウッド実写版『ストリートファイター』初映像解禁 リュウ&春麗らのビジュアルも公開 [muffin★]
- 【麻雀】プロ雀士の岡田紗佳さんが勝訴、点数計算めぐる発言は「違法とは言えず」 大宮簡裁 [征夷大将軍★]
- ムミィ🥺いる❓🏡
- 【高市悲報】片山さつき「かじ取り間違えてデフレになったらどうすんの!😡」😲 [359965264]
- 【乞食速報】43インチ4Kモニターが19800円。テレビも見れるぞ [419111196]
- ママカースト、地獄すぎるwwwwwwwwwwwwwwwwwwwww [977790669]
- VTuber叩きが大流行してる理由、1枚の画像で解説される…!! [858219337]
- 寒すぎる(´ ・ω・`)
