RxSwiftを2週間ほど触ってみて。

RxSwiftは学習コストが高いと言われている。 しかし2018年となった今は情報量が非常に多く日本語の記事もたくさんある。 すなわち学習難易度は低いのではないかと思う。

以下自分が2週間くらい手探りでわちゃわちゃやった結果、こんな感じで学んでいけばいいのかなと思ったことを整理してみた。


ざっくりと入門記事を眺めて見る。

オブザーバーパターンから始めるRxSwift入門 - Qiita

いきなり全部は無理。でもなんとなく読んで頭に入ってくる部分だけ吸収していけば多少は前提知識が生まれる。

 


適当にObservable作ってみる。
let observable = Observable<Int>.create { (observer) in 
    observer.on(.next(0))
    observer.on(.next(0))
    observer.on(.next(0))
    observer.on(.complete)
}


observable.subscribe { event in 
    switch event {
       case .next(let element): print(element)
       case .error(let error): print(error)
       case .completed: print("complete")
    }
}

RxSwift 入門 その1 - タコさんブログ

UIイベントを試してみる 
let label = UILabel()
let textField = UITextField()
textField.rx.text.bind(to: label.rx.text)

テキストの入力がラベルに反映される。簡単! button.rx.tapでaddTargetがいらない・・楽! ここら辺を少し試してみる。

あとは公式がすごい充実してる。

RxSwift/GettingStarted.md at master · ReactiveX/RxSwift · GitHub

Exampleの中にも初心者でも読めるような簡単なものがいくつもある。

RxSwift/SimpleValidationViewController.swift at master · ReactiveX/RxSwift · GitHub

 

似たような記事をぐるぐるぐるぐる何回も読めばだいたいわかってくる。

  • subjectってなんだ
  • hot, coldとは
  • weakとunownedって(基本)
  • Single Driverとは

気になったところを調べつつ、徐々に知識を広げて行く。

インクリメンタルサーチをやって見る。

これはREADMEに書いてあるやつ。私はオフィスにたまたま本があったのでこちらを使った。

gihyo.jp

最初怖いけどオペレータの使い方が徐々にわかってきた。

  • distinctUntilChanged
  • take
  • startWith
  • catchErrorJustReturn

RxSwiftの機能カタログ - Qiita

RxMarbles: Interactive diagrams of Rx Observables

 

MVVMで実装して見る。

rxswift mvvm sample とか github search mvvmとかで調べればいっぱい出てくる。

私はさっきの養成読本の著者の方のを参考に作ってみて

github.com

  • mearge
  • zip
  • withLatestFrom

などの合成を使えるようになった。何よりより実務に近付いた気がする。


これで入門は終わってなんとなく自分で動かせるようになった。 少し間違ってるかもしれないがMVVMの数字記憶アプリを作ってみたりした。

最低限はやったのであとはインターン行ったりして、できる人が近くにいる環境にいたい。

でもまだまだできることはたくさんあって。 公式のExampleとか

  • QiitaでRx関連の記事網羅したり
  • 勉強会の資料とか
  • そもそもRxSwiftのソース読めるところ結構あるし
  • RxSwift勉強すればRedux flux ReactorKitなども勉強できる。  

やることなかったら

https://www.amazon.co.jp/RxSwift-Reactive-Programming-Florent-Pillet/dp/1942878346/ref=sr_1_cc_1?s=aps&ie=UTF8&qid=1528985237&sr=1-1-catcorr&keywords=rxswift

ここら辺もきになる・・