はじめに
以下のチュートリアルの記事を元に、Combineの概要についてまとめてみました。
Combine: Getting Started | raywenderlich.com
※この記事は自分用のメモとしてまとめており、基本的には上記の記事を参考にしてください。また、参考先の文章を意訳する可能性がありますのでご注意ください。
本題
Combineとは
"The Combine framework provides a declarative API to process values over time."
※引用:Combine: Getting Started | raywenderlich.com
「Combineフレームワークは、時間の経過とともに値を処理するための宣言的なAPIを提供します。」
Combineを構成する3つのコンポーネント
Publishers
値を送信するもの。3つの要素を送信する。
- Output型の出力値
- Completion(終了通知)
- Failure型の失敗通知
Operators
Publisherで送信した値を処理する(変換する)もの。
値を変換したり、値を追加したり、値を削除したり、その他多くの動作の振る舞いをする。
Publisherと同様の値(出力値や、終了通知、失敗通知)か別のPublisherを返す。
このように、送信される値は上流のPublisherから下流のPublisher(Operatorで加工されたPublisher)へと流れていく。
Subscribers
PublisherやOperatorが発行した値を受け取るもの。
Subscriberを構成する2つの要素は以下。
- Input
- Failure
上記の要素は、PublisherのOutputとFailureと一致する。
処理の流れ
※参考の図:
https://koenig-media.raywenderlich.com/uploads/2020/01/Publisher-Subscriber.png
Publisherがsubscribe(_:)メソッドを呼び出すと、PublisherはSubscriberに値を届け始める。
この時点で、PublisherはSubscriberに「サブスクリプション(というものとしておこう・・・)」を送信する。
このサブスクリプションを利用して、以下の2点が可能になる。
- SubscriberはPublisherに値をリクエストできる
- Publisherは値を送信できる
送信する値が有限の場合、Publisherは最後に終了イベントを返すか、送信失敗イベントを返す。
おわりに
Combineを実践する中で記事にできそうなものがあれば、別途まとめたいと思います。