初心者用kotlin

kotlinのメモです。

3590 views

1. Reactive Streamsの概念

  • 生産者 (Publisher, Flowable)
    データを生成し、購読者に通知する役割を持ちます。Flowableはストリーム対応のデータプロデューサーで、バックプレッシャー(消費者が処理できるデータ量を制御する仕組み)に対応しています。

  • 購読者 (Subscriber, subscribe)
    Subscriberは生産者からのデータを受け取り、処理を行います。subscribeメソッドを使って、購読を開始します。

公式ライブラリのダウンロードリンクはこちら:
RxKotlin on GitHub

2. Reactive Streamsプロトコル

プロトコル 説明
onSubscribe 購読の準備ができたことを通知します。
onNext データが届いたことを通知します。
onError エラーが発生した場合に通知します。
onComplete データの配信が完了したことを通知します。

3. インターフェースの概要

インターフェース 説明
Publisher データを生産し、購読者に通知する役割を持つインターフェース。
Subscriber データを受け取り処理を行うインターフェース。
Subscription データのリクエストや購読解除を管理します。
Processor PublisherSubscriberの両方の性質を持ち、データの中継・変換が可能なインターフェース。

Subscriptionの処理はSubscriberの外部からは呼ばれない想定で実装されていますが、外部から購読解除が必要な場合、非同期で呼び出せる設計が求められます。
ProcessorはReactive Streams専用のインターフェースです。

4. Streams対応の比較

生産者 消費者
Streams対応あり Flowable Subscriber
Streams対応なし Observable Observer

Streams非対応Observableはバックプレッシャーの機能を持たず、データのリクエストは行いません。代わりに、Disposableという購読解除のインターフェースが用意されています。

メソッド 説明
dispose() 購読を解除します。
isDisposed() 購読が解除されている場合はtrue、解除されていない場合はfalseを返します。

5. オペレーター

RxJavaのオペレーターは、生産者が通知したデータを消費者に届けるまでの間にデータを操作するメソッドです。
例えば、不要なデータのフィルタリングや、データを使いやすい形式に変換する際に使用されます。メソッドチェーンとしてつなげることができ、柔軟なデータ処理が可能です。

6. 非同期処理とScheduler

RxJavaではデータを通知する処理と、データを受け取る処理を別スレッドで分けることができます。
Schedulerを使用することで、スレッド管理を簡単に行え、直接スレッドを管理する必要がなくなります。

7. Completable

Completableはデータの通知はせず、完了通知かエラー通知のみを行うクラスです。データベースのレコード挿入や更新など、成功・失敗の結果だけを知りたい処理に適しています。

8. Single

SingleemitteronSuccessが一度だけ呼ばれると、ObserverまたはSubscriberonSuccessが呼ばれます。
複数回onSuccessを呼んでも、一度しか発火しません。また、onCompleteメソッドは存在しないため、onSuccessで結果を通知する必要があります。

9. fromCallable

fromCallableメソッドを使うと、Callableからデータを取得し、それを通知します。例えば、システム時間を取得するCallableを使用して、その結果をSingleとして処理することができます。

まとめ

Reactive StreamsやRxJavaを使うことで、非同期データ処理の管理が容易になります。特に、バックプレッシャー対応のFlowableや、簡単な完了通知を行うCompletable、結果を1度だけ通知するSingleなどのさまざまなクラスを活用することで、効率的な非同期処理を実現できます。

Page 17 of 36.

前のページ 次のページ



[添付ファイル]


お問い合わせ

プロフィール

すぺぺぺ

自己紹介

本サイトの作成者。
プログラムは趣味と勉強を兼ねて、のんびり本サイトを作っています。
フレームワークはdjango。
ChatGPTで自動プログラム作成に取り組み中。

サイト/ブログ

https://www.osumoi-stdio.com/novel/

ツイッター

@darkimpact0626