Swift・iOS

Swiftを中心に学んだことを記録に残すブログです。技術に関係ない記事もたまに書いています。

【Combine】Combineの概要

 

はじめに

以下のチュートリアルの記事を元に、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つの要素を送信する。

  1. Output型の出力値
  2. Completion(終了通知)
  3. Failure型の失敗通知

 

Operators

Publisherで送信した値を処理する(変換する)もの。
値を変換したり、値を追加したり、値を削除したり、その他多くの動作の振る舞いをする。
Publisherと同様の値(出力値や、終了通知、失敗通知)か別のPublisherを返す。

このように、送信される値は上流のPublisherから下流のPublisher(Operatorで加工されたPublisher)へと流れていく。

 

Subscribers

PublisherやOperatorが発行した値を受け取るもの。
Subscriberを構成する2つの要素は以下。

  1. Input
  2. Failure

上記の要素は、PublisherのOutputとFailureと一致する。

 

処理の流れ

※参考の図:

https://koenig-media.raywenderlich.com/uploads/2020/01/Publisher-Subscriber.png

 

Publisherがsubscribe(_:)メソッドを呼び出すと、PublisherはSubscriberに値を届け始める。

この時点で、PublisherはSubscriberに「サブスクリプション(というものとしておこう・・・)」を送信する。

このサブスクリプションを利用して、以下の2点が可能になる。

  1. SubscriberはPublisherに値をリクエストできる
  2. Publisherは値を送信できる

送信する値が有限の場合、Publisherは最後に終了イベントを返すか、送信失敗イベントを返す。

 

おわりに

Combineを実践する中で記事にできそうなものがあれば、別途まとめたいと思います。

 

参考