withアプリーチRxSwiftのObservableクラスの概要と使い方などをまとめていきます。勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。おすすめ記事:【RxSwiftとは?導入方法と使い方まとめ!ストリームを理解するObservableクラスとは?そもそもObservableとは日本語で「観測可能」を意味する英単語です。ReactiveXではストリームを観測、検知可能なクラスのことをObservableと呼び変化やエラー、完了を検知すると観測者に対して通知してくれます。RxSwiftではObservableクラスとして定義されています。}}引用:GitHub/Observable.swiftここではsubscribeとasObservableの2つのメソッドを確認できます。これについては後述します。検知できるイベントObservableクラスで検知できるイベントは以下の3種類です。completed}引用:GitHub/Event.swiftonNextはイベントの発生のたびに複数回検知される可能性があり、onErrorまたはonCompletedはストリームの中でどちらか1回しか観測されません。onErrorまたはonCompletedのどちらかを検知したタイミングまたは明示的に指定したタイミングで監視は終了します。onNextにはイベントの発生(通知)とともに任意の値を格納して渡すことができます。格納する値は通知のたびに異なる値を含めることができます。マーブルダイアグラムに表すと以下のような感じになります。1つのストリームの中に様々な値を保持したイベントが発生し、最後にエラーか完了通知が発生すると役目を終えます。subscribeメソッドイベントを検知して処理を行うためには2人の登場人物が必要になります。それが「観測される側(Subject)」と「観測する側(Observer)」です。subscribeメソッドで発行」subscribeは日本語で「購読」という意味を持つ英単語です。Observableクラスのsubscribeメソッドを実行することで対象のObservableクラスの観測が開始され各引数の中で各イベントを取得できます。TextFieldの入力イベントを観測しLabelのテキストにバインディングさせる場合を見てみます。この場合は入力されるたびにonNextが発火され観測者に対して通知が送られます。観測者はその通知を元に定義されている処理(ここではUILabelに適応)を実行します。}}asObservableメソッドasObservableメソッドは自身であるObservableクラスを返すメソッドです。SubscribeOn<Observable<Optional<String>>>Dispose:購読の廃棄subscribeメソッドで購読を開始したObservableクラスをそのまま観測しつづけるとメモリリークの原因になるので任意のタイミングで購読を終了させる必要があります。これを「Dispose(廃棄)」と呼びます。購読が廃棄されるタイミングは明示的に廃棄処理を行った時かonErrorまたはonCompletedが呼ばれイベントが終了した時です。subscribeメソッドの定義をもう一度みてみると返り値がDisposableクラスとなっています。このインスタンスからdispose()メソッドを呼び出すことで購読を廃棄することができます。rxAbstractMethod()}しかし実際に明示的にdispose()メソッドを呼び出すことは少なくDisposeBagクラスを使用して一括で購読を廃棄する方法が使用されます。おすすめ記事:【RxSwift】DisposeBagクラスの使い方!DisposableObservableクラスの使用方法TextFieldの入力値を観測する際はObservableクラスが目に見えずらかったのでObservableクラスを使用してイベントを発生させるコードを実装してみます。ViewControllerクラスを用意してライブラリをimportしておきます。}}Observableクラスをインスタンス化する際にはObservable<Element>形式で型を指定します。ここで指定したデータ型をonNextで渡せるようになります。複数の型を渡したいときはタプルなどを使用すればOKです。Observableクラスの生成Observableクラスを生成するにはcreateメソッドを使用します。引数subscribeの中に渡すクロージャの中ではAnyObserver型を受け取ることができそこから各イベントを定義できます。最終的にこのメソッドはObservableオブジェクトを返します。AnonymousObservable(subscribe)}イベント名称そのままのメソッドが用意されておりonNextメソッドでは引数に渡したい値を記述します。この値はObservable<Element>形式で定義した型と同じである必要があります。}}引用:GitHub/ObserverType.swiftcreateメソッド以外にも生成するメソッドは存在します。購読の開始と処理の定義これでObservableオブジェクトを取得(生成)できたのでsubscribeメソッドを使用して購読を開始し、イベントごとに実行したい処理を定義していきます。subscribeメソッドでは各引数の中のクロージャからイベントから渡されるデータを参照できます。最後にdisposedメソッドを呼び出し引数にDisposeBagオブジェクトを渡します。disposeBag)この段階ではエラーdisposeBagを定義していないためエラーが発生してしまうのでDisposeBagインスタンスをプロパティとして用意しておきます。DisposeBagDisposeBagの詳細な説明はここでは割愛しますが「ゴミ箱」とよく表現されます。不要になり廃棄したい観測中のObservableオブジェクトを格納しておき任意のタイミングで一括で削除するイメージです。}}Observableの生成createメソッドはイベントの回数や種類を記述できるフレキシブルなメソッドでした。RxSwiftではそれ以外にもObservableクラスを生成するメソッドが複数用意されています。just例えばjustメソッドはonNextとonCompletedを1回ずつ発行します。createメソッドでも同じ挙動を実装することは可能ですがjustメソッドを使用すると1行で済ませることができます。Completed")from公式リファレンス:GitHub:RxSwift/Sequence.swiftfromメソッドを使用することで配列の値を元に自動で要素数分のonNextとonCompletedを発行してくれます。Observable<Int>.from([1,2,3])1:next2:next3:nextcompleted他にもいろいろあるので公式を参考に確認してみてください。GitHub:RxSwift/Observables/SubjectSubjectとはRxSwiftにおけるイベントの検知と発生が可能なクラスです。RxSwiftにおいてイベントの検知が可能なクラスといえばObservableクラスですがさらに自身でイベント流せるのが大きな違いです。詳しくは以下の記事を参考にしてください。おすすめ記事:【RxSwift】Subjectとは?Relayとの違いと使い方ご覧いただきありがとうございました。友達や家族の誕生日を登録しておくと当日に通知が届きお知らせしてくれるiOSアプリです。貸し借り管理アプリお金の貸し借りを管理するためのアプリです。貸借の色が分かれているので識別しやすく、使いやすさを求めてできるだけシンプルなUIにしています。カシホン人に貸すことが多く、誰に貸したか忘れがちな本の貸し借りを記録できるアプリです。