LoginSignup
0
0

More than 1 year has passed since last update.

RxKotlinとかRxJavaとかの”Rx”って何?

Posted at

はじめに

インターンの中でRxJavaとRxKotlinというライブラリを聞くことがあったのですがいまいち理解できていなかったためそれらの理解も深めつつ、リアクティブプログラミングについてもキャッチアップすることがこの記事の目的です。

リアクティブプログラミング(RP)とは?

Wikipediaでは以下のように説明されていました。

リアクティブプログラミング(以下:RP)は値の変更を伝播させるデータフロー志向のプログラミングパラダイム。値の関係性を記述してプログラミングする。

なるほど?つまりリクエストを投げるような積極性はなくて、値の変更があったらそれを受け取る受け身のような感じ?

Rxとは?

Reactive Extentionの略。

非同期/イベント/時間に関する処理を、簡潔かつ宣言的に記述することができるC#ライブラリ。これが**ReactiveX**として多言語に移植され、RxKotlinやRxJavaのようなライブラリが生まれました。

Reactive Streamとは?

Rxを構成するインターフェースとして、Reactive Streamというものがあるみたいです。Reactive Streamは、ライブラリやフレームワークに関係なく、データストリームを非同期で扱えるようにするための共通の仕組みが作れるインターフェースを提供しています。

インターフェース 役割
Publisher データを生産し、通知をする役割
Subscriber 通知されたデータを受け取り、データ処理をする役割
SubScription データ数のリクエストおよび購読の解除等。Subscriptionのリクエストを設定でもち、Publisherに教える役割
Processor PublisherとSubscriberの両方の性質を持つ

Rxを使用するモチベーション

正直ここまで調べてきた感想として「Rxってとても難しいのになぜ導入する必要があるの?」と思いました。

そうしてRxを使用するメリットを調べてたら、こちらの記事を見つけました。こちらの記事によると、

Rxを導入すると標準のeventではできなかった、あんなことやこんなことが簡単にできるようになり、結果的にソースコードの可読性・保守性が飛躍的に高めることができます。

また、コード全体でRxを導入することで、イベント駆動型2のコーディングスタイルとなり、結果的にクラス同士が疎結合となるような設計がしやすくなります。

とありました。なるほど、Rxについて少しだけ分かった気がします。

まとめ

今回はRxについて簡単にまとめてみました。

次回はRxKotlinを用いて一つアプリを作ってみようと思います。

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0