- ReactiveCocoa Tokyo #rac_tokyo - connpass
- RxJava Night #rxjnight - connpass
- #10 node.js sideshow | mozaic.fm
などなどをいろいろ眺めておりまして(東京うらやましい)、Reactive Extensions とか MVVM とかいろいろ熱い!楽しい!と思っているわけですが、いろいろなライブラリがあって、それらのカバーする範囲がいまいち明確になってない気がしたので、自分なりに整理してみました。
MVVM っていうと、Messenger とか DIコンテナ的なものとかもあるわけですが、主に DataBinding と Rx の違いにフィーチャーしたかったので除外しました。
DataBinding は、DependencyProperty や BindableProperty みたいなものがあるかどうかという感じで考えていて、「XAMLとかのマークアップでバインディング指定できなければならない」という考えではないです。
View, DataBinding, ViewModel, ReactiveX の各ブロックは基本的にはどの組み合わせでもよくて(特に ReactiveX は他とは別の世界のものなので)、しかし中には ReactiveProperty のように ReactiveX に依存しつつ ViewModel の機能を提供するものがあったり、ReactiveCocoa のように「全部入り」のものがあったりします。また、View と ViewModel を繋ぐためにはなんらかの DataBinding が必要です。
という理解なんですが、あってますかね?
私は Xamarin 推しの人なので、 Xamarin.Forms + ReactiveProperty が、MVVM+Rx のパワーをフル活用できて、しかも iOS/Android で大部分のコードが共有できるという最強の組み合わせなんですよ! というのを言いたいわけです。
Links
- Xamarin.Forms - Build a Native Android UI & iOS UI with Xamarin.Forms - Xamarin
- Prism - patterns & practices: Prism - Download: Prism 5.0 for .NET 4.5
- MVVM Light Toolkit - MVVM Light Toolkit - Home
- Reactive Extensions - Rx (Reactive Extensions) - Home
- ReactiveProperty - ReactiveProperty - MVVM Extensions for Rx - Home
- ReactiveUI - reactiveui/ReactiveUI
- MvvmCross - MvvmCross/MvvmCross
- RxJava - ReactiveX/RxJava
- RxAndroid - ReactiveX/RxAndroid
- android-binding - gueei/AndroidBinding
- ReactiveCocoa - ReactiveCocoa/ReactiveCocoa