hydrakecat’s blog

Walking like a cat

DroidGirlsでRxJavaのハンズオンをしてきました

DroidGirlsで「RxJava2」を題材に解説とハンズオンをしてきました(connpassのページ)。

内容

題材の解説は30分、ハンズオンは1時間半弱ということで、今回はRx初心者が一通りRxJavaを使えるようになることを目的としました。 RxJava2を使っていますが、解説自体ではRxJava2の詳細には踏み込まずにRxの基本的な概念とよく使うオペレータを解説しています。

課題は https://github.com/DroidGirls/Meetup/tree/master/6_rxjava にあるので、腕に覚えのある方もない方も良かったら挑戦してみてください。 もっと良いやり方があるよ、ここが間違っているよ、という指摘があれば、ぜひ教えてください。

感想

ハンズオンは初めてだったのですが、人数も20人ほどとちょうど良く、会場の21Cafeも居心地良い場所でした。色々な人とお話できてたのしかったです。@yanzmさんや@namikiさん、@joooi13yさんを始め、招いていただいたDroidGirlsの運営の方々、ありがとうございました。

とはいえ、反省もないわけではなく、というか、だいぶあって、ここでは一人でちょっと反省会をしたいと思います。

ハンズオンのむずかしさ

課題を4つ、発展課題を2つ用意しました。時間内に課題4までいけるかなと思っていましたが、ほとんどの人は課題2か3くらいまでだったようです。

できるだけ、RxJavaを使うところ以外はこちらで済ませているつもりだったのですが、自分の準備のマズさもあって(課題を足す途中で加えた変更が課題1に影響したり subscribeOn/observeOn の説明が不十分だったり)、思ったよりも手がかかってしまったようです。申し訳ありませんでした 🙇🏻

また、質問も最初はなかなか出ず、もうちょっと質問しやすい雰囲気を作れば良かったかなと反省しています。歩き回ったり、詰まっていそうな人に声をかけるなどをすれば良かったです。

自分は、みんなの進捗を把握する余裕もあまり持てなかったのですが、ハンズオンの途中で@joooi13yさんが進捗を見つつ課題の解答を紹介する形式を取っていただいたのが、とても助かりました。 ハンズオンとはいえ、ずっと詰まったまま時間を過ごすのは勿体ないので、適宜解説を挟んで、前に進めた方が良いように思いました。

Rxのむずかしさ

今回は、Rxの難しい部分をできるだけスキップしたのですが、それでも、自分から見ても初見で理解するのはキツいだろうなというボリュームになってしまいました。

また自分は理解しているつもりだったのですが、subscribeOn/observeOnの使い分けについて聞かれたときに、うまく答えられなかったのが心残りです。subscribeの仕組みに触れずにうまく解説できるようになりたいです。ちなみに Reactive Programming with RxJavaを読んでいると、Observableはそもそも非同期で提供されるべきで、subscribeOnを使うケースはほとんどない、という前提があるようです。個人的には実行スレッドの制御を使い手に委ねる方が良いと思っているのですが、初めて触れるのなら、まずはobserveOnだけから始める方が良いのかもしれません。

次に向けて

オペレータの理解の難しさは、言葉やマーブルダイアグラムで理解するのが困難な点にあります。最終的には手を動かすことを通して理解するしかありません。 一方、RxJavaとAndroidという組み合わせは準備に手間がかかりビルド時間もすぐとは言えません。たとえばRxJSのようにすぐに実行できるような環境でtry-and-errorを繰り返せると良いのかなと思っています。

あと、準備はもう少し念入りにします。とくにハンズオンを行う場合は、最後にイチから試してみるべきでした。