DroidKaigi 2017 に登壇しました

DroidKaigi 2017 で「全て S になる -RxJava と LWS を持ち込む楽しさ-」というタイトルの発表をさせていただきました。

全てSになる -RxJavaとLWSを持ち込む楽しさ- from Ryutaro Miyashita

ちょうど 1 年前に Android N Preview 1 が登場し、同時に Jack を使って Java 8 を使った Android アプリ開発が行えるようになりましたが、 Stream API や Optional API は minSdkVersion 24 からと、非現実的な設定が必要でした。まだ Android 7.x は 3% 未満のシェアしかありません

しかし、 Retrolambda で Java 8 の言語機能を手に入れ、 Lightweight Stream API で Stream API / Optional API を手に入れ、 RxJava でより良いアーキテクチャを手に入れることができるということを今回伝えたくて発表を行いました。

RxJava も Lightweight Stream API も Fluent Interface となっていて、頭の中で考えた処理の順番をそのままコードに表現しやすいメリットがあると考えています。また、手続き的なコードから宣言的なコードになりやすいため、変数を final にして不変で安全なコードも書きやすいです。

// Before
FragmentManager fm = getSupportFragmentManager();
Fragment f = fm.findFragmentByTag("MY_FRAGMENT");
MyFragment mf;
if (f != null && f instanceof MyFragment) {
  mf = (MyFragment) f;
} else {
  mf = MyFragment.newInstance();
}

// After
final Fragment fm = getSupportFragmentManager();
final MyFragment = Optional.ofNullable(fm.findFragmentByTag("MY_FRAGMENT"))
  .select(MyFragment.class)
  .orElseGet(MyFragment::newInstance);

また、 RxJava の結果通知を Either 型を使って行うことで、

の 3 種類を Observable / Flowable の .subscribe で受け取れる件も話をしました。 Either 型を定義するときに Optional を使うことで「値が無い」ことを型として表現できるメリットがあります。

Optional を使った Either 型のコードは Gist に掲載しています

webApiRequest
  .subscribeOn(Schedulers.computation())
  .observeOn(AndroidSchedulers.mainThread())
  .subscribe(either -> either.apply(
    failure -> {}, // 意図した失敗
    success -> {}), // 成功
    error -> {} // 意図しない失敗
  );

View の各種イベントも RxBinding で Observable Stream に変換することができますし、 HTTP リクエストも Retrofit といったライブラリが既に RxJava 対応しています。つまり、 View も Business Logic も、 Android アプリ内のコード全てが Stream になる……という思いを込めて、今回のセッションタイトルとしました。

反省点としてはスライドにコードが多く、細かすぎて言葉では伝えづらかったこと、事前リハーサル通りに全く話せなかったことがあります。もし、来年も CFP を出すことがあり、それが通って話すことができるようであれば、反省点を活かしてよりよい発表ができるように努めます:)

 
2
Kudos
 
2
Kudos

Now read this

DroidKaigi 2017:After / 1 登壇者視点の感想

DroidKaigi 2017 から帰ってきました。登壇の内容は前のエントリに任せるとして、イベントの感想を書こうと思います。思いついたトピックを適当に書いています。 人の多さ まず始めに、イベントの規模に驚きました。一昨年は 400 名。昨年は 600 名。そして今年は 800 名と増えていったそうです。一昨年から参加していますが、今年は本当に人が多いように思いました。 それを実感したのは、実はイベント本編前日の夜に開催された登壇者、スタッフ、... Continue →