ReactiveX と MVVM と DataBinding の関係について図にしてみた

などなどをいろいろ眺めておりまして(東京うらやましい)、Reactive Extensions とか MVVM とかいろいろ熱い!楽しい!と思っているわけですが、いろいろなライブラリがあって、それらのカバーする範囲がいまいち明確になってない気がしたので、自分なりに整理してみました。

reactive mvvm databindings relations 01

MVVM っていうと、Messenger とか DIコンテナ的なものとかもあるわけですが、主に DataBinding と Rx の違いにフィーチャーしたかったので除外しました。

 DataBinding は、DependencyPropertyBindableProperty みたいなものがあるかどうかという感じで考えていて、「XAMLとかのマークアップでバインディング指定できなければならない」という考えではないです。

 View, DataBinding, ViewModel, ReactiveX の各ブロックは基本的にはどの組み合わせでもよくて(特に ReactiveX は他とは別の世界のものなので)、しかし中には ReactiveProperty のように ReactiveX に依存しつつ ViewModel の機能を提供するものがあったり、ReactiveCocoa のように「全部入り」のものがあったりします。また、View と ViewModel を繋ぐためにはなんらかの DataBinding が必要です。

という理解なんですが、あってますかね?

 私は Xamarin 推しの人なので、 Xamarin.Forms + ReactiveProperty が、MVVM+Rx のパワーをフル活用できて、しかも iOS/Android で大部分のコードが共有できるという最強の組み合わせなんですよ! というのを言いたいわけです。

Links