Upgrade to Pro — share decks privately, control downloads, hide ads and more …

OkHttp3+Retrofit2+...

Yoshihisa
February 01, 2018

 OkHttp3+Retrofit2+...

OkHttp3とRetrofit2そしてコルーチンを組み合わせて非同期通信を実現するお話

Yoshihisa

February 01, 2018
Tweet

More Decks by Yoshihisa

Other Decks in Technology

Transcript

  1. OkHttp3+Retrofit2+...

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  6. コールバック地獄…!

    View full-size slide

  7. ReactiveX(Rx)

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  12. OkHttp3+Retrofit2+Coroutine

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  17. Deferredを返すように書く

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide