LoginSignup
1
3

More than 3 years have passed since last update.

RxSwiftの特徴をさらに詳しく

この記事は、俺的RxSwiftまとめ①の続きです。

RxSwiftの特徴

非同期処理には、気を付けるポイントが2点ある。

  • コードの実行順序
  • 共有されたmutableなデータをどのように取り扱うか

である。

RxSwiftは、これらの問題に対して、以下の2つの概念を取り入れて、対処している。

そして、以下の5つの特徴を手に入れている。(=Reactive System)

  • Resposive→UIにアプリの最新状態を常に反映すること
  • Resilient→各処理が分離されていて、エラーリカバリが容易であること
  • Elastic→変動ワークロードに対して、遅延読み込みスロットリング、リソースシェアなどの機能で対処する
  • Message-driven→コンポーネント間のやりとりをメッセージベースの通信を使用して非同期に行い、疎結合にして再利用性を高め、クラスのライフサイクルと別に実装すること

RxSwiftの構成要素

RxSwiftはObservable/operator/schedulerの3つの構成要素を持っている。

Observable

Observable<type>で定義する、観察対象のこと。
時間の経過とともに生成される一連のデータの不変なsnapshot(その瞬間のデータのコピー)を流す一連のイベントを、非同期に生成することができる。

複数のobserver(観察者)がリアルタイムにイベントに反応して、UIを更新したり、データを利用できる。
ObservableType protocolは以下の3つのイベントを生成することができる。

  • next → 次のデータをobserverに持ってくるイベント。completedが起こるまで、値をobserverに持ってき続ける。
  • completed → 一連のイベントをsuccessで終了させ、observerに通知する。
  • errorobservableerrorで終了したことを通知する。

Operators

Observable<type>には、非同期、イベントに基づいた処理を行うメソッド(Operators)が多数含まれている。これらはSide effect(ユーザー側にUIで反映すること)なしに出力のみを生成するので、Operatorを組み合わせて入力を任意の値に変換することができる。
代表的なOperatorを挙げると、

  • filiter → 条件に合う値のみを抽出する
  • mapObservableで流れてきた全ての値に対して処理を行う
  • skip → 特定の値をスキップする

などがあります。(後ほど別記事でまとめたいと思います。)

Scehduler

SchedulerDispatch queueと同じようなもので、処理をメインスレッドとサブスレッドで分けることができる。RxSwiftは定義済みのSchedulerがたくさんあるので、便利!
*UIの更新はメインスレッドで行う

RxCocoa

RxSwiftは、Swiftに限らないRxの共通使用に関するものだ。Swift特有のUIKitなどは、RxCocoaを用いて扱っていく。
RxCocoaは多くのUIパーツにリアクティブな機能を追加しているライブラリである。

1
3
0

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
1
3