Slide 1

Slide 1 text

OkHttp3+Retrofit2+...

Slide 2

Slide 2 text

● Yoshihisa Takeda ● @bomneko_attack ● 株式会社Diverse(ミクシィグループ) ● YYCというマッチングアプリの開発をしています ● Android開発をはじめてもうすぐ1年

Slide 3

Slide 3 text

APIを叩くAndroidアプリをつくるとき 通信部分を作り込むときにつかうライブラリ

Slide 4

Slide 4 text

OkHttp http://square.github.io/okhttp/

Slide 5

Slide 5 text

Retorofit http://square.github.io/retrofit/

Slide 6

Slide 6 text

No content

Slide 7

Slide 7 text

No content

Slide 8

Slide 8 text

No content

Slide 9

Slide 9 text

コールバック地獄…!

Slide 10

Slide 10 text

ReactiveX(Rx)

Slide 11

Slide 11 text

Observable系(Single,Flowableなど)を返すように書く

Slide 12

Slide 12 text

CallをRxJava2のObservable系に変換するCall Adapterを指定する

Slide 13

Slide 13 text

No content

Slide 14

Slide 14 text

コールバック地獄からの解放…!

Slide 15

Slide 15 text

Slide 16

Slide 16 text

完?

Slide 17

Slide 17 text

できることならこう書きたくないですか?

Slide 18

Slide 18 text

Coroutine

Slide 19

Slide 19 text

OkHttp3+Retrofit2+Coroutine

Slide 20

Slide 20 text

Coroutine ● 「中断・再開が可能な関数」 ○ とりあえずの理解としては「軽量スレッド」的なもの ● Kotlin1.1から実験的に導入された ● Coroutinesをゼロから説明すると本1冊書けるぐらいになるので 本発表では導入とRetrofitでの使い方についてのみ

Slide 21

Slide 21 text

警告 ● Kotlin CoroutineはKotlin1.2の時点ではExperimentalで提供 プロダクションへの導入はまだ控えたほうが安全 ○ 1.3でExperimentalが外れる予定なので勉強をはじめるには良いタイミング ○ 本資料の組み合わせは Kotlin 1.2 + kotlinx.coroutine 0.21.1

Slide 22

Slide 22 text

導入 ● build.gradleに2つライブラリを追加 ○ kotlin.coroutines=enable はいらない

Slide 23

Slide 23 text

Call Adapter ● Jake神のCall Adapter ○ 他にもう1つ見つけたけど今回はこれ ○ CallをCoroutineのDeferredに変換する

Slide 24

Slide 24 text

Deferredを返すように書く

Slide 25

Slide 25 text

CallをCoroutineのDeferredに変換するAdapterを指定

Slide 26

Slide 26 text

No content

Slide 27

Slide 27 text

レスポンスが返ってくるまで中断 (UIスレッドはブロックされない )

Slide 28

Slide 28 text

Rxはいらない子になるのか? ● No ● RxがPromise代わり使われてきたという歴史 ● コルーチンもPromiseを同期的に書く手法(async/await)を提供しているので勘違い しやすい ● Rxは「リアクティブプログラミングのためのフレームワーク」なのでそもそも比較対象 にならない

Slide 29

Slide 29 text

まとめ ● もうすぐくるかもしれないコルーチン時代に備えて勉強はしておこう ● Jakeのライブラリを使えばOkHttpとRetrofitの組み合わせにおいてコルーチンを簡 単に導入でき使える! ○ もう1つはこれ。どっちを使うかはお好みで … https://github.com/gildor/kotlin-coroutines-retrofit

Slide 30

Slide 30 text

宣伝 DiverseはDroidKaigi2018のPLATINUMスポンサーとして参加します 当日ブースで同人誌を無料配布します