#navi_header|技術| Web開発でもJSのライブラリやフレームワークで目にするようになったMVVM(Model View ViewModel)とかData Binding って何だろう、とぐぐったので、2015-03時点の参考URLのメモ。 - WPF(Windows Presentation Foundation)やSilverlightの世界で生まれた考え方らしい。 - そのため、MSDNとかWindows系の開発者のblog等で丁寧に動作原理を解説してる記事が多い。 - Model View ViewModel - Wikipedia -- http://ja.wikipedia.org/wiki/Model_View_ViewModel 分かりやすかった: - MVVMパターンの常識 ― 「M」「V」「VM」の役割とは? - @IT -- http://www.atmarkit.co.jp/fdotnet/chushin/greatblogentry_02/greatblogentry_02_01.html - MVVM パターンをより深く理解する - Yuta Watanabe's Blog -- http://yutawatanabe.hatenablog.com/entry/mvvm-sessions - いまさら聞けない「MVVM + Messenger パターン」超入門 - present -- http://tnakamura.hatenablog.com/entry/20110218/mvvm_messenger - WPF MVVM初心者がみたMVVMライブラリが提供するもの | tocsworld -- https://tocsworld.wordpress.com/2014/06/13/wpf-mvvm%E5%88%9D%E5%BF%83%E8%80%85%E3%81%8C%E3%81%BF%E3%81%9Fmvvm%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA%E3%81%8C%E6%8F%90%E4%BE%9B%E3%81%99%E3%82%8B%E3%82%82%E3%81%AE/ MSDNの固めの解説記事: - Model-View-ViewModel (MVVM) パターンの使用 - Windows app development -- https://msdn.microsoft.com/ja-jp/library/windows/apps/jj883732.aspx -- Windows デベロッパーセンタ > ゲームの開発 > Windows ストアゲーム "リバーシ" (XAML、C#、C++) -> Model-View-ViewModel(MVVM) パターンの使用 - 5: Implementing the MVVM Pattern Using the Prism Library 5.0 for WPF -- https://msdn.microsoft.com/en-us/library/gg405484(v=pandp.40).aspx -- MSDN Developer Network > Documentation > Prism > Prism 5 - Developer's Guide to Microsoft Prism Library 5.0 for WPF > 5:Implementing the MVVM Pattern MVVMとData Bindingの関連性の自分なりの認識: - MVVMのキーとなるのがObserverパターンであり、この応用としてData Bindingがある。 - View と ViewModelはData Bindingで結ばれている、つまり双方向でObserveな関係(誤解してるかもなので、今の時点でのイメージ的な言い回し)。 - Viewへの変更イベントはそのままViewModelへ通知され、ViewModelが対応するModelをアップデートする。 - 逆に、別のコードからのModelへの変更はそのままViewModelに通知され、ViewModelが適切なPresentationに変換してViewに通知する。 Data Bindingについては、以下の記事が基本的な作りを解説してくれてて分かりやすかった: - 連載 WPF/Silverlight UIフレームワーク入門:第2回 データの表示と入力に必要な知識 (1/5) - @IT -- http://www.atmarkit.co.jp/ait/articles/0905/19/news145.html ただ、Observeによる処理の流れでは、重い処理が間に入ると流れがそこで止まってしまう。そのためマルチスレッドで重い処理を切り出すなどの工夫が必要となる。 MVVMにおけるマルチスレッド処理の活用について、いくつか参考になりそうな記事が見つかったのでメモ: - wpf - MVVM and multi threading - Stack Overflow -- http://stackoverflow.com/questions/4604878/mvvm-and-multi-threading - MVVM - MVVM アプリにおけるマルチスレッドとディスパッチ -- https://msdn.microsoft.com/ja-jp/library/dn630646.aspx - MVVM and Threading | Actively Lazy -- http://blog.activelylazy.co.uk/2015/01/11/mvvm-and-threading/ #navi_footer|技術|