MVVMってないに?それ美味しいの?
安心してください。はいてますよ。ちゃんと
今回はですね、みなさん大好きなRx Swiftについての雑談です!
最初独学のときはMVC(Model View Controller)開発していたのですがアプリの機能が増えていくにつれてmainVCが肥大化して、とんでもないコードを書いてしまっていたり、、、
これだと後々保守の時に大変だったりします。。。
本当に探すのめんどい。。。
MassiveVCとか言われてたり笑
理由としてはDelegateで肥大化するのがほとんどですが、、、、
その悩みを解決してくれるのが!!!
なんと、なんと、、、MVVM(Model View ViewModel)なんです!!
あれ?VCどこいたの?とりあえず、その話は後で笑
何が変わったのーと言われますと 新しく view を バインディングする viewmodelが新しく追加されているところが大きな違いですね!!
バインディングする ってなんやねんですが、簡単にいうとずっと監視している状態のことです!変数が変わったら、viewに即座に反映するみたいなことをしているわけですね。
最初は分からなくても、なんか記事読んで言ったら、自分も理解できました。。
これがですよ、、最高なんですよ、、、めっちゃVCを綺麗に描ける。。。
結論はRxSwiftライブラリーを使ってリアクティブプログラミングを行おう!ってことですね!!!
非同期処理(API通信など)はModelに任せてしまってください!
ViewModelはviewを常に監視!
View はタップされた時に view Model タップされたよーって即座にに伝えます!!!(Observer)
でも端末も観察し続けると、メモリーリークする可能性がありますが、大丈夫!ちゃんと開放する処理を問題ありません!!
これがですよ、、Redux開発の時に最高のパフィーマンスを発揮してくれます。!!ReSwift + RxSwift があればもう何もいらない。。。。
ReSwiftに関しましてはまた後日説明いたします!
今の現場はReSwift + RxSwift がメインで開発してますねー
前の現場はひどいMVCでしたけど笑
開発のしやすさが段違いですね笑笑
さてここから勉強の仕方ですが、すごく簡単!!
◯まずグーグル先生にMVVMってなに?って聞く
◯実際delegateに頼らずMVVMでタイマーアプリなど作ってみる
◯実際の自分が開発しているの環境で試してみる
簡単でしょ?私もこのフローで学びました。実際にメッセージの未読カウントを数えて反映するみたいな感じをMVVMで実装しましたね
そんな難しくないので学習意欲のある方はぜひ!!
まじで世界変わります!
是非初心者の方でMVVCを学びたいって方がいらっしゃいましたら、連絡ください!最近の案件はほとんどMVVMだと勝手に思っていますw
以上!