LoginSignup
47
44

More than 5 years have passed since last update.

MVVMやFRPに取り組みやすくするために

Last updated at Posted at 2015-12-08

概要

  • MVVMやFRPを練習しやすいように、有名ドコロのライブラリを持ってきてサンプルを作る。

参考リンク

今までのiOSの設計の流れをざっくり


MVC ( ~ 2012)

MVC.png


MVP ( ~ 2014)

MVP.png


MVVM ( ~ 2015 ~ )

MVVM.png


ライブラリ

下記の◎○△xは、個人的な使い勝手です。

MVVM用 FRP or タスク分割用 総サイズ
RxSwift 33MB
ReactiveCocoa 26.8MB
ReactKit 7.8MB
ReactiveKit
SwiftBond x 7.4MB
SwiftTask x 2.6MB

 ライブラリのインターフェースの扱いやすさ(個人的な感想です。)

RxSwift
・扱いやすい/直感的
・XCode等のコード補完が効きやすい
ReactiveCocoa3.0(昔のもの)
・扱いにくい/理解に時間がかかる
・XCode等のコード補完が効きにくい
RxSwift SwiftBond
SwiftTask
ReactiveCocoa4.0 ReactKit ReactiveCocoa3.0
  • ReactiveCocoaは、だんだんRxSwiftにインターフェースを寄せてきている印象
  • ReactiveKit(≠ReactKit)は、RxSwiftに便利なExtension(例えばCollectionまわり)を足したような印象(調査不足..)

サイズ詳細

ライブラリ framework1 framework2 framework3
RxSwift RxSwift.framework(22M) RxCocoa.framework(9.6M) RxBlocking.framework(648K)
ReactiveCocoa ReactiveCocoa.framework(26M) Result.framework(872K)
ReactKit ReactKit(5.4M) SwiftTask.framework(2.8M)
SwiftBond Bond.framework(7.1M)
SwiftTask SwiftTask.framework(2.8M)

※実際にarchiveするとReactiveCocoaで10MB程度だった

個人的な使い勝手について

 前提

  • 方向性
    • 最終的には、MVVM + FRP をアプリに組み込むことを目指している。
    • MVVM + FRP 移行については、段階的に移行する。
  • 移行順序
    1. 値変化の監視機能(KVO)を使ってMVVMを実現する。-> MVVM
    2. 値変化の監視機能を拡張(FRP)して監視能力に幅を持たせる。-> MVVM + FRP

 前提を実現するために

  1. MVVM導入パート
    • KVOの単純なWrapperとして扱うことができ、MVVMを実現出来るライブラリ。
    • FRP用として扱うライブラリと互換性がある。
    • 学習コストが低い。
      • -> SwiftBond
  2. MVVM導入パート
    • MVVM+FRPを実現できること。(FRPについては、ReactiveXでも可とする)
    • -> SwiftBondからRxSwiftへ移行する。

 ライブラリ選定の理由

  • 初期は、MVVMだけの導入でいいのでチームの学習コストを抑えたい。
  • SwiftBondとRxSwiftのインターフェースが似ている。
  • (時間がある or チームのキャッチアップ力が高い 場合は、いきなりRxSwiftを利用する。)

本題

47
44
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
47
44