読書会(RxJavaリアクティブプログラミング)第2回議事録

[ 戻る ]


=====================================================================================
Java読書会BOF 「RxJavaリアクティブプログラミング」を読む会 第2回
=====================================================================================

.. csv-table:: 開催概要

   "日時","2017年5月27日 10:00 - 17:00"
   "場所","川崎市教育文化会館 第3会議室"
   "出席者(敬称略)","高橋(智)、根本、青山、加藤、小棚木、平山、井上、長谷川、今井、遠藤、岩室(書記)"

chapter 2 RxJavaを使うためのJavaの基礎知識
==================================================

02 非同期処理
--------------------------------------------------

- p.87 下図 右端のスレッド2の中身の「処理1」→「処理2」

- p.90 下 「Counterメソッド」→「Counterクラス」

- マルチスレッドと非同期処理を混同しているように見える。シングルスレッドでも非同期処理は可能。

- 本書での「非同期処理」はマルチスレッドのことを指している模様。

- p.96 下 「pubic」→「public」

- p.97 「この処理中に外部からのアクセスできないようにします」?

- p.100 図8 右の矢印は「スレッド1」→「スレッド2」

- 過去のノウハウとして、「Objectオブジェクトよりもサイズ0配列の方がロックオブジェクトとしてメモリ効率が良い」が存在した(「Javaの鉄則」2000年8月)が、近年の実装には適用できるのか?

chapter 3 RxJavaのメカニズム
==================================================

01 RxJavaとデザインパターン
--------------------------------------------------

- 図の読み方
    - 実線矢印→継承
    - 点線矢印→インターフェース実装

- p.107 表3 「update」→「update(Subject)」になるのではないか? 引数がないと、変化があったSubjectを認識できない。

- p.108 状態の変化に伴い処理を行う「Observe」を消費者とすることができます → 「Observer」?

02 RxJavaの非同期処理
--------------------------------------------------

- 「非同期処理」なのか?
    - 「同期・非同期」や「平行・並列」が適切に使い分けられていないように見える。

- Publisherが使われているのでFlowable?

- リスト5/リスト6
    - doOnNext → Flowableのコンテキスト(スレッド)で動く
    - subscribe → Subscriberのコンテキスト(スレッド)で動く

- p.120 図8 図の見方がわからない → p.29参照

- Javaに非同期I/Oはある?
    - nio2はある? → ある。(Futureインターフェースに対応)

- computationとioの違いは?
    - 似たようなものだが生成パターンが違うのでは?

- subscribeOnは生産者で、subscribeは消費者のはずなのに、消費者のスレッドで生産者のスレッドが見えるのがよくわからない。

- p.126 1行目 2000L→7000L (正誤表参照)

- p.126 実行結果に15を追加 (正誤表参照)

- mergeしたとき、消費者はどのようなスレッドでうごいているのか?
    - それぞれ別のスレッドで動いているが、排他制御が行われている模様

03 RxJavaのエラーハンドリング
--------------------------------------------------

- p.141 「主なリトライを行うオペレータ」T1/T2のようなジェネリクスの指定はできないので注意。

04 RxJavaのリソース管理
--------------------------------------------------

- pp.147-148 CancellableとDisposableの説明が同じ。何が違う?
    - Cencellableはlambdaが使える。(それだけ?)

05 RxJavaのバックプレッシャー(Backpressure)
--------------------------------------------------

- 図23 capacity=2 ?

- p.159
    - buffer → 溜まるまで待つ
    - window → 溜まり切る前でも送る

chapter 4 FlowableとObservableのオペレータ
==================================================

01 Flowable/Observableを生成するオペレータ
--------------------------------------------------

- justの引数は何故可変長ではなく10個に制限されているのか?
    - 設計上の理由は不明だが、fromArrayが可変長引数も受け付けるので、代替として使える。
    - 歴史的事情ではないか?

- 空配列は渡せる? → 渡せると思われるが要確認。

- rangeと言いつつfrom/toではなくfrom/countなのは誤解をまねくのではないか?
    - 同意見多数。
    - マニュアル見ずにやったらバグったというコメントあり。

- initialDeleyが後ろじゃくて前
    - 引数の順序が変わるのは良くないのではないか?

- Thread.sleepじゃなくて待ち合わせるメソッドはないのか?
    - blockingSubscribeがあるらしい。
    - 考慮すべき情報が増えて書き方が変わるので、サンプルとしてはこれでよいのではないか。

- empty()はfromArray()と同等か? → 同等。

- p.181 リスト1のキャプションが間違い (errorになっている)

- neverは何かが生きている?
    - 管理オブジェクトとスレッドプールは生きているのでは?
    - ものの資料にテストに役立つ、と書いているらしい。

次回はp.183「02 通知するデータを変換するオペレータ」

(以上)


[ 戻る ]