Read DroidKaigi2019 app source code

Read DroidKaigi2019 app source code

A445824f9bb334ec104f5c1c7b67fee2?s=128

Kazuki Chigita

April 25, 2019
Tweet

Transcript

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

  2. None
  3. features

  4. features

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

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

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

    coroutinesをどう活かしてるのか? • JetPackのどんな機能を使っているのか? • どのようなTestを書いているのか? features ίʔυϕʔεͰ ௥ͬͯΈ·͠ΐ͏ʂ
  8. topic1: MultiModule & Dagger

  9. topic1: MultiModule & Dagger setting.gradle

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

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

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

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

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

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

  16. topic1: MultiModule & Dagger

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

  18. topic1: MultiModule & Dagger MainActivity.kt

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

  20. topic1: MultiModule & Dagger DbComponentModule.kt

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

  22. topic1: MultiModule & Dagger AppComponent.kt

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

  24. topic1: MultiModule & Dagger

  25. topic1: MultiModule & Dagger

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

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

    coroutinesをどう活かしてるのか? • JetPackのどんな機能を使っているのか? features
  28. topic2: Coroutines

  29. topic2: Coroutines 1 2 2

  30. topic2: Coroutines 1 2 2

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

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

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

  34. topic2: Coroutines KtorDroidKaigiApi.kt

  35. topic2: Coroutines RoomDatabase.kt

  36. topic2: Coroutines DataSessionRepository.kt

  37. topic2: Coroutines SessionContentsActionCreator.kt

  38. topic2: Coroutines 1 2 2

  39. topic2: Coroutines 1 2 2

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

  41. topic2: Coroutines Dispatcher.kt

  42. topic2: Coroutines Dispatcher.kt

  43. topic2: Coroutines Dispatcher.kt

  44. topic2: Coroutines Dispatcher.kt

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

    coroutinesをどう活かしてるのか? • JetPackのどんな機能を使っているのか? features
  46. topic3: Android JetPack LifeCycle DataBinding LiveData Navigation 等

  47. topic3: Android JetPack LifeCycle DataBinding LiveData Navigation 等 ֤.PEVMFͱ%BHHFSͷ.PEVMFΛ ඥ͚ͮͯ؅ཧ͍ͯ͠Δ

    ҙ֎ʹ߇͑Ί
  48. ·ͱΊ

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