Kotlin Coroutinesの並行処理やException処理を確認するデモアプリを作りました

作ってみました。MITです。

github.com

デモアプリについて

目的

現職ではフルタイム3人+副業1人の4人体制でAndroid版の開発を行っています。機能開発6割、不具合修正2割、既存コードの書き換え2割といったところでしょうか。

既存コードはJava + RxJava、新規コードはKotlin + Kotlin Coroutinesで書くことにしています。多くの場合、Kotlin Coroutinesと言ってもRoomやRetrofitなどを介して利用するケースが大半であったため、そこまで並行な処理を意識する必要がありませんでした。要は、RxJavaのSingleやCompletableな処理を suspend に書き換えることで事足りていました。

とはいえ。。。 書き換えが進み、新規機能開発が増えるに連れ、徐々にRxJavaで言うzip処理などが必要になるケースが増えてきました。

そのため並行な処理やエラーハンドリングについて、手元で動かしながら議論する事ができればなーと感じる場面が増えてきました。 そんな訳で、よくよく使うパターンを中心にデモアプリとしたのが、上記のリポジトリとなります。

使い方

ザッとクローンして、Android 8以上の端末に繋ぐかエミュレーターを立ち上げて実行してください。 (Android 8なのは自分の手元に8.1以上の端末しかないからです。引き下げたい場合はissue立てていただければ)

アプリの操作と同時に logcat をAndroidStudioかコマンドラインから確認できるようにしてください。 というのも、あえて試すとアプリがクラッシュするパターンを用意したので、スタックトレースを確認できるようにしておいてほしいからです。

一応、実行環境はREADMEにも記載してあります。

確認できるパターン

launch async coroutineScope sipervisorScope を一通り試せるようにしてあります。 その他は自分の理解が進んだら追加します。追加PRもお待ちしています。

coroutineScopesupervisorScope の動きの違いをよくよく確認したかった(≒レビューで詰まった)ので、そのあたりで実装間違っていたらご指摘いただけますとたいへん助かります。

終わりに

明日がKotlin Fest 2019なので開催前に公開できて良かったなーと思ってます。 contract とか、扱えるようになりたい……!

kotlin.connpass.com

あ、ほしがほしいです。ほしだけに。