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

Read DroidKaigi2019 app source code

Read DroidKaigi2019 app source code

Kazuki Chigita

April 25, 2019
Tweet

More Decks by Kazuki Chigita

Other Decks in Technology

Transcript

  1. DroidKaigi2019ͷ
    ίʔυΛಡΈղ͘
    @chigichan24 / Kazuki Chigita
    #student_apk
    15 min

    View Slide

  2. View Slide

  3. features

    View Slide

  4. features

    View Slide

  5. • いろんなことを学べる
    • どのように Multi Module を実現しているのか?
    • どのようにDaggerで配っているのか?
    • coroutinesをどう活かしてるのか?
    • JetPackのどんな機能を使っているのか?
    features

    View Slide

  6. • いろんなことを学べる
    • どのように Multi Module を実現しているのか?
    • どのようにDaggerで配っているのか?
    • coroutinesをどう活かしてるのか?
    • JetPackのどんな機能を使っているのか?
    • どのようなTestを書いているのか?
    features
    ͳΜͱͳ͘ػೳ௥Ճ͕Ͱ͖Δ ͔Β
    ཪଆͷ࢓૊ΈΛ͖ͪΜͱཧղ͢Δ ΁

    View Slide

  7. • いろんなことを学べる
    • どのように Multi Module を実現しているのか?
    • どのようにDaggerで配っているのか?
    • coroutinesをどう活かしてるのか?
    • JetPackのどんな機能を使っているのか?
    • どのようなTestを書いているのか?
    features
    ίʔυϕʔεͰ
    ௥ͬͯΈ·͠ΐ͏ʂ

    View Slide

  8. topic1: MultiModule & Dagger

    View Slide

  9. topic1: MultiModule & Dagger
    setting.gradle

    View Slide

  10. topic1: MultiModule & Dagger
    setting.gradle
    MainActivityとprovideするFragmentの設定
    Daggerの設定

    View Slide

  11. topic1: MultiModule & Dagger
    setting.gradle
    Fluxに関するベース,各種拡張関数等
    が⼊っている

    View Slide

  12. topic1: MultiModule & Dagger
    setting.gradle
    各種ページごとにmoduleが切られ
    Fragmentの具体的実装が⼊っている

    View Slide

  13. topic1: MultiModule & Dagger
    setting.gradle
    modelを扱っている.
    iOSからも⾒えるがParcelableにしたいところをexpect/actualで⼯夫している

    View Slide

  14. topic1: MultiModule & Dagger
    setting.gradle
    roomとかFireBaseとかで保存するデータを管理する
    データ保存先を抽象化するためにrepositoryを挟んでいる

    View Slide

  15. topic1: MultiModule & Dagger
    setting.gradle
    Timberがいる

    View Slide

  16. topic1: MultiModule & Dagger

    View Slide

  17. topic1: MultiModule & Dagger
    DIで気になるところ
    ü MultiModuleでの戦略

    View Slide

  18. topic1: MultiModule & Dagger
    MainActivity.kt

    View Slide

  19. topic1: MultiModule & Dagger
    MainActivity.kt
    各種Fragmentを配る

    View Slide

  20. topic1: MultiModule & Dagger
    DbComponentModule.kt

    View Slide

  21. topic1: MultiModule & Dagger
    DbComponentModule.kt
    各種Storeを配る

    View Slide

  22. topic1: MultiModule & Dagger
    AppComponent.kt

    View Slide

  23. topic1: MultiModule & Dagger
    AppComponent.kt
    各種moduleからcomponentをbuild

    View Slide

  24. topic1: MultiModule & Dagger

    View Slide

  25. topic1: MultiModule & Dagger

    View Slide

  26. topic1: MultiModule & Dagger
    ֤.PEVMFͱ%BHHFSͷ.PEVMFΛ
    ඥ͚ͮͯ؅ཧ͍ͯ͠Δ

    View Slide

  27. • いろんなことを学べる
    • どのように Multi Module を実現しているのか?
    • どのようにDaggerで配っているのか?
    • coroutinesをどう活かしてるのか?
    • JetPackのどんな機能を使っているのか?
    features

    View Slide

  28. topic2: Coroutines

    View Slide

  29. topic2: Coroutines
    1
    2
    2

    View Slide

  30. topic2: Coroutines
    1
    2
    2

    View Slide

  31. topic2: Coroutines
    API
    Ktor-clientが基本的によしなにやってくれる
    DB
    withContext(coroutineContext)で実⾏する(指定したスレッドで実⾏)

    View Slide

  32. topic2: Coroutines
    API
    Ktor-clientが基本的によしなにやってくれる
    DB
    withContext(coroutineContext)で実⾏する(指定したスレッドで実⾏)
    結果をrepositoryで統合

    View Slide

  33. topic2: Coroutines
    API
    Ktor-clientが基本的によしなにやってくれる
    DB
    withContext(coroutineContext)で実⾏する(指定したスレッドで実⾏)
    結果をrepositoryで統合
    ActionCreatorへ

    View Slide

  34. topic2: Coroutines
    KtorDroidKaigiApi.kt

    View Slide

  35. topic2: Coroutines
    RoomDatabase.kt

    View Slide

  36. topic2: Coroutines
    DataSessionRepository.kt

    View Slide

  37. topic2: Coroutines
    SessionContentsActionCreator.kt

    View Slide

  38. topic2: Coroutines
    1
    2
    2

    View Slide

  39. topic2: Coroutines
    1
    2
    2

    View Slide

  40. topic2: Coroutines
    Dispatcherに
    dispatchする機能と,
    subscribeする機能が
    実装されている

    View Slide

  41. topic2: Coroutines
    Dispatcher.kt

    View Slide

  42. topic2: Coroutines
    Dispatcher.kt

    View Slide

  43. topic2: Coroutines
    Dispatcher.kt

    View Slide

  44. topic2: Coroutines
    Dispatcher.kt

    View Slide

  45. • いろんなことを学べる
    • どのように Multi Module を実現しているのか?
    • どのようにDaggerで配っているのか?
    • coroutinesをどう活かしてるのか?
    • JetPackのどんな機能を使っているのか?
    features

    View Slide

  46. topic3: Android JetPack
    LifeCycle
    DataBinding
    LiveData
    Navigation

    View Slide

  47. topic3: Android JetPack
    LifeCycle
    DataBinding
    LiveData
    Navigation

    ֤.PEVMFͱ%BHHFSͷ.PEVMFΛ
    ඥ͚ͮͯ؅ཧ͍ͯ͠Δ
    ҙ֎ʹ߇͑Ί

    View Slide

  48. ·ͱΊ

    View Slide

  49. まとめ
    DroidKaigiのコードで,⽩⽶が5杯くらい進むので,
    いっぱい読み解こう.
    DroidKaigiのコードは集合知.どんどん参考にする.
    今⽇話せなかったこともいろいろ⾯⽩いので,まとめます.

    View Slide