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 full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  5. topic1: MultiModule & Dagger

    View full-size slide

  6. topic1: MultiModule & Dagger
    setting.gradle

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  13. topic1: MultiModule & Dagger

    View full-size slide

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

    View full-size slide

  15. topic1: MultiModule & Dagger
    MainActivity.kt

    View full-size slide

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

    View full-size slide

  17. topic1: MultiModule & Dagger
    DbComponentModule.kt

    View full-size slide

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

    View full-size slide

  19. topic1: MultiModule & Dagger
    AppComponent.kt

    View full-size slide

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

    View full-size slide

  21. topic1: MultiModule & Dagger

    View full-size slide

  22. topic1: MultiModule & Dagger

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  25. topic2: Coroutines

    View full-size slide

  26. topic2: Coroutines
    1
    2
    2

    View full-size slide

  27. topic2: Coroutines
    1
    2
    2

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  31. topic2: Coroutines
    KtorDroidKaigiApi.kt

    View full-size slide

  32. topic2: Coroutines
    RoomDatabase.kt

    View full-size slide

  33. topic2: Coroutines
    DataSessionRepository.kt

    View full-size slide

  34. topic2: Coroutines
    SessionContentsActionCreator.kt

    View full-size slide

  35. topic2: Coroutines
    1
    2
    2

    View full-size slide

  36. topic2: Coroutines
    1
    2
    2

    View full-size slide

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

    View full-size slide

  38. topic2: Coroutines
    Dispatcher.kt

    View full-size slide

  39. topic2: Coroutines
    Dispatcher.kt

    View full-size slide

  40. topic2: Coroutines
    Dispatcher.kt

    View full-size slide

  41. topic2: Coroutines
    Dispatcher.kt

    View full-size slide

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

    View full-size slide

  43. topic3: Android JetPack
    LifeCycle
    DataBinding
    LiveData
    Navigation

    View full-size slide

  44. topic3: Android JetPack
    LifeCycle
    DataBinding
    LiveData
    Navigation

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

    View full-size slide

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

    View full-size slide