What is it, naokirin?

RxJava リアクティブプログラミング を読んだ

「RxJava リアクティブプログラミング」という本をもらって読んだのでその感想を書いていきます。

ちなみに自分はRxについて他の言語で多少やったことがあるので、Rx自体の初心者ではないです。

RxJavaリアクティブプログラミング (CodeZine BOOKS)

RxJavaリアクティブプログラミング (CodeZine BOOKS)

RxJava初心者なら読んで損はないかも

個人的にはRx自体は概念が結構難しく、実際に使い始めると全体にまたがる知識を覚える必要があると思います。例えば、Reactive Streamsのルール(onNext/onComplete/onErrorなど)、Cold/Hot、バックプレッシャーなどです。

そういったものを理解するためにはそれなりにドキュメントを読む必要があるのですが、この書籍を読むことである程度そういった知識を理解することができるようになると思います。とくに各挙動の解説時に適宜図が入るため、挙動の把握をしやすくなっています。

ページ数も基礎知識部分に当たる部分までで160ページ程度、オペレータ(メソッド)の解説を含めて380ページ程度なので読みやすいと思います。

またRxJavaで非同期プログラミングをやったことがないという人(初心者以外ではいないかもしれないですが)なら、Javaのスレッドと変数の関係などについても書かれており、非同期時の注意点などもわかりやすく書かれています。概念から実行まとまっているのでおすすめできると思います。

逆に中級者以上のFlowable/Observableの使い分けやCold/Hotなどを使いこなせていて、非同期での利用の注意点なども理解している場合はメソッドのリファレンスなどを眺めるなどになるかもしれません。

注意点がわかりやすい

RxJavaを使っている際の注意すべき点が簡潔にまとまっていて、今後使っていく際に気をつけることを把握しやすくなっていると思います。非同期でのメモリとスレッド上のキャッシュや、flatMapでの順不同など、それぞれのタイミングで気をつける点が書かれています。

とくに初心者では気が付きにくい部分をわかりやすく書いてくれているのは非常に良いと感じました。

Androidで使うことを想定していると、用途は別途学ぶべきかも

RxJavaを利用する人で多いのが、Androidでの利用だと思います。

この本の中でAndroidでの利用を想定して書かれている部分はほとんどないです(書籍内ではモジュールの紹介程度にとどまっています)。これはもちろんRxJava自体の解説の書籍なのでそこは仕方ないと思います。Android Architecture Components などでもRxJavaをサポートしていたりしますが、そういう点は自分でWebなどで学ぶなどするのが良いと思います。

ただし、それらを利用する際にもこの書籍に書かれている知識がかなり使えると思います。

まとめ

RxJavaを使い始めようという人なんとなくで使っていた人はぜひ読んでみると良いと思います。

一方、中級以上の人は復習や漏れている落とし穴や、使わないために知らなかったメソッドなどを知る機会としてこの書籍を読んでみるとよいのではないかと思います。

しかしながら、RxJava以外のRxライブラリやフレームワークの学習のための場合には言語的な違いや実装されている内容の差異を理解する必要があるかもしれません。そういう人は、一度書店で手にとって試し読みするなどがおすすめしたいと思います。

個人的にはRxJavaでの非同期実行時の注意点などは知らない部分があったので非常に勉強になりました。