Tana Gone
Tana Gone
~1 min read

Categories

Tags

なぜReactive Extensionなのか?

これは、何か?Frameworkだ。ということは、Class, Protocol, Struct, Enumを提供するのだ。それは、非同期処理、Event処理とデータ処理の直交化する事を支援する。

Eventの発生とその結果は常にタイムラグがある。ボタンを押してテキストが変化するのは瞬時に行われる様に見えるが、Web APIへのリクエストとレスポンスは常にタイムラグがあり、テキスト入力だって、それが完了するまでBSを押したり、タイムラグが存在する。

タイムラグの存在を加味して、Event処理を行いやすくするのがReactive Extensionなのだ。

🔹データ処理の直交化

  1. コレクションを処理するためにSequneceを導入
  2. イベントを処理するためにPublisherを導入
  3. ともにmap, flatMapで統一的に扱える

素敵なリンク集

ReactiveX入門 俺が書きたかった事が書いてある。

Rxとは?Linqとの繋がりは?

Reactive Extensionsの概要と利用方法

記載事項に正誤あり!

誤:「Pull型の場合は、プログラムはIEnumeratorオブジェクトを取得し、以降はそれを介して能動的に値を取り出す。」

正:「Pull型の場合は、プログラムはIEnumerableオブジェクトを取得し、以降はそれを介して能動的に値を取り出す。」▶️要するにプログラムはオブジェクトに値を取りに行くのがPull型。Push型はプログラムに値を押付けてくる。その契機は、外部イベントの発生。

▶️IEnumerableはforに応答するオブジェクトを抽象化したものだ。内部では、++する様に、IEnumeratorに対してnextメソッドを呼出す。iに相当するIIteratorも内包する。

IEnumerableに適合したArrayはforに代わるforEachに応答する様になる。さらに、map, reduce, filterにも応答する様になる。

▶️同様にObservableはOberverを内包、というかsubscribeしており、Oberverのnextメソッドを呼出す。Observableに適合したPublisherはmap, reduce, filterにも応答する様になる。

RxSwiftの内部実装

RxSwift の Observable とは何か

RxSwiftを動かしてみる

RxSwift 入門 その1

その1にSubjectとその派生物4つの説明が、よく読めばわかる程度に記載されている。PublishSubject, ReplaySubject, BehabiorSubject, Variantの4つ。最後のヤツは、DisposeBagを保存せずとも、勝手にunsubscribeされる便利屋なつ。

SubjectがObservable, Observerの2役をこなす、ってところがよく解らん。❓

Rxマーブルダイアグラム

RxJS Marbles

Rx公式サイト

Introduction

Apple Combine Video

Introducing Combine

Qiitaの記事:Swift5.1カスタム属性

SwiftUIのProperty Wrappers

CombineとMVVM

[和文で読めるCombine記事、[Swift] はじめてのCombine Apple製の非同期フレームワークを使ってみよう](https://dev.classmethod.jp/smartphone/swift-combine-framework-for-beginners/)