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

[ 戻る ]


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

.. csv-table:: 開催概要

  "日時", "2017年7月22日 10:00 - 17:00"
  "場所", "川崎市教育文化会館 第3会議室"
  "出席者(敬称略)", "高橋(智)、根本、遠藤、加藤、吉本、平山、岩室、井上、はせがわ、今井、石黒、高橋(徹)"

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

04. Flowable/Observableを結合するオペレータ
===========================================

本日は、p.261 concatEager/concatArrayEager から

p.261 concatEager/concatArrayEager
----------------------------------

p.264 startWith/startWithArray
------------------------------

p.266 zip/zipWith
-----------------

* ユースケースとして、時系列データにインデックスを付けるというのがある。

* BiFunction, Function3 とあるがFunction3は何?

  * 引数が2つはBiFunction、3つはFunction3
    
p.270 combineLatest/combineLatestDelayError
-------------------------------------------

* 図1 結果のタイムライン上の「完了を通知」が、2つ目の通知のタイムラインの完了より早いがこれは間違いではないか?

* 誤植

  * p.272 2つめの※箇条書き、combinerLatestの引数の最後はzipperではなくcombiner

* 命名について、zipとcombinerの違いは?

  * zipは、1つ1つを頭から組合せる意味(ファスナーのzip)

* p.273 リスト中の注記 1、2、3 がコメントなしに記述、他のリストではコメント後に記述

  * p.245などに一部コメントなしの記述もあり

    
05. Flowable/Observableの状態を通知するオペレータ
=================================================

p.275 isEmpty
-------------

* isEmptyの命名、分かりにくくないか?
  
  * isAtLeastOne とかにすると名前長くならない?
    
  * isNotEmpty ならどう?
    
    * 否定の疑問文は、答えのtrue/falseが空か空でないかどっちか分かりにくい
      
    * Predicateで使うとき、!を付けなくてよいのは書きやすいこともある

p.277 contains
--------------

* containsがtrueとなった後、元の通知のタイムラインは生き続けるのか?

p.279 all
---------

p.281 sequenceEqual
-------------------

p.284 count
-----------

* 前のsequenceEqualやcountの使い所ってどこだろう?
  RxJavaは無限ストリームな扱いなので、最後までcountが出ないとかは使いどころが不明

  * テストの時に使いたいかな

06 Flowable/Observableのデータを集計するオペレータ
==================================================

p.286 reduce/reduceWith
-----------------------

p.289 scan
----------

07 ユーティリティ系オペレータ
=============================

p.292 repeat
------------

p.294 repeatUntil
-----------------

* 誤植
  
  * p.295 下6行目 1000ミリ秒 → 100ミリ秒

p.296 repeatWhen
----------------

p.300 delay
-----------

* ColdとHotの説明がない。JustはCold?
  
  * 基本はColdで、Hotにするには別なメソッドがある。
    p.26の先頭に記述あり。
    
chapter 5 ProcessorとSubject
~~~~~~~~~~~~~~~~~~~~~~~~~~~~

01 Processor/Subjectとは
========================

* 誤植
  
  * p.312 Processorの実装の囲みコード 先頭のjavaは不要
    
    * abstract interface はあり?

      
* p.314 図2 subscribeメソッドがダイヤモンド継承になっているがJavaは問題ない?
  
  * 問題なし。
    
  * interfaceのデフォルト実装で衝突した場合は?

02 PublishProcessor/PublishSubject
==================================

* 誤植
  
  * p.320 実行結果 No.1: 5 改行が異なる

03 BehaviorProcessor/BehaviorSubject
====================================

* 接続した最初に状態を取りたい、以後はイベントで来たものを処理する、というケースで有用

04 ReplayProcessor/ReplaySubject
================================

* 誤植
  
  * p.326 実行結果 1行目 console が不要

05 lAsyncProccessor/AsyncSubject
================================

* p.328 リスト5
  
  * サンプルコード(別途ダウンロード)では、processor.onComplete() ではなく、processor.onError(new Exception()) となっている。

06 UnicastProcessor/UnicastSubjct
=================================

* 誤記
  
  * p.330 リスト7 と説明文章とに齟齬がある。「完了の通知後に2つ目のSubscriberを追加」
    コードは、onCompleteが最後に呼ばれている

chapter 6 RxJavaのデバッグとテスト
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

01 RxJavaのデバッグとテスト
===========================

02 「do」で名前が始まるメソッド
===============================

* 誤植
  
  * p.341 図: と番号が抜けている
    
  * p.344 リスト2 コードが壊れている
    
.. code-block:: java
   :linenos:
      
    System・・・
    onSubscribe(・・・

    
など。インデントもずれている。省略している意味が分からない。

* 次回、p.351から読みます。
  残ページ数が少ないので、読了後、RxJavaを使ったサンプルプログラムのハンズオン的な企画を検討しています。


[ 戻る ]