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

live image 15 に行ってきました

イージーリスニング系の祭典、 live image 15 に行ってきました。今年で live image は 15 周年で、私が以前参加したのは live image 3 / 4 なので、 10 年ぶりの参加です。 会場は東京国際フォーラム ホール A で、この会場でライブに参加するのは昨年の Kalafina LIVE TOUR 2014 以来です。大きな会場で大好きな音楽を堪能できるのは幸せですね。 “地球に乾杯” や “風笛” 、 “パリは燃えているか”... Continue →