1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?