Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Read DroidKaigi2019 app source code
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Kazuki Chigita
April 25, 2019
Technology
410
1
Share
Read DroidKaigi2019 app source code
Kazuki Chigita
April 25, 2019
More Decks by Kazuki Chigita
See All by Kazuki Chigita
あの日のHotReloadはなぜ動かなかったのか? 〜OSセキュリティ(W^X)とJITコンパイラの攻防〜
chigichan24
3
1.1k
「 動く」サンプルでスムーズなコミュニケーションを
chigichan24
1
990
Claude CodeでサクサクTestコードを移行しよう
chigichan24
2
1.3k
Live Update notificationのつかいどころ
chigichan24
0
320
不具合調査とTest
chigichan24
1
450
Flutterと難読化
chigichan24
0
5.6k
Building Android and looking into the Android System
chigichan24
2
4.2k
DroidKaigiカンファレンスアプリの歴史からみるアプリアーキテクチャのこれまでとこれから
chigichan24
2
3.5k
継続的に機能開発を進めながら行うマルチモジュール化
chigichan24
2
6.2k
Other Decks in Technology
See All in Technology
AI駆動1on1〜AIに自分を育ててもらう〜
yoshiakiyasuda
0
130
No Types Needed, Just Callable Method Check
dak2
1
1.4k
Good Enough Types: Heuristic Type Inference for Ruby
riseshia
1
250
Chasing Real-Time Observability for CRuby
whitegreen
0
180
AgentCore×VPCでの設計パターンn選と勘所
har1101
3
290
昔はシンプルだった_AmazonS3
kawaji_scratch
0
340
2026年、知っておくべき最新 サーバレスTips10選/serverless-10-tips
slsops
13
5.2k
インターネットの技術 / Internet technology
ks91
PRO
0
210
扱える不確実性を増やしていく - スタートアップEMが考える「任せ方」
kadoppe
0
310
QGISプラグイン CMChangeDetector
naokimuroki
1
420
#jawsugyokohama 100 LT11, "My AWS Journey 2011-2026 - kwntravel"
shinichirokawano
0
350
ハーネスエンジニアリングをやりすぎた話 ~そのハーネスは解体された~
gotalab555
4
1.8k
Featured
See All Featured
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
740
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.8k
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
680
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
27
3.4k
Java REST API Framework Comparison - PWX 2021
mraible
34
9.3k
ラッコキーワード サービス紹介資料
rakko
1
3.1M
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
100
[SF Ruby Conf 2025] Rails X
palkan
2
960
Heart Work Chapter 1 - Part 1
lfama
PRO
6
35k
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
130
Designing Experiences People Love
moore
143
24k
Transcript
DroidKaigi2019ͷ ίʔυΛಡΈղ͘ @chigichan24 / Kazuki Chigita #student_apk 15 min
None
features
features
• いろんなことを学べる • どのように Multi Module を実現しているのか? • どのようにDaggerで配っているのか? •
coroutinesをどう活かしてるのか? • JetPackのどんな機能を使っているのか? features
• いろんなことを学べる • どのように Multi Module を実現しているのか? • どのようにDaggerで配っているのか? •
coroutinesをどう活かしてるのか? • JetPackのどんな機能を使っているのか? • どのようなTestを書いているのか? features ͳΜͱͳ͘ػೳՃ͕Ͱ͖Δ ͔Β ཪଆͷΈΛ͖ͪΜͱཧղ͢Δ
• いろんなことを学べる • どのように Multi Module を実現しているのか? • どのようにDaggerで配っているのか? •
coroutinesをどう活かしてるのか? • JetPackのどんな機能を使っているのか? • どのようなTestを書いているのか? features ίʔυϕʔεͰ ͬͯΈ·͠ΐ͏ʂ
topic1: MultiModule & Dagger
topic1: MultiModule & Dagger setting.gradle
topic1: MultiModule & Dagger setting.gradle MainActivityとprovideするFragmentの設定 Daggerの設定
topic1: MultiModule & Dagger setting.gradle Fluxに関するベース,各種拡張関数等 が⼊っている
topic1: MultiModule & Dagger setting.gradle 各種ページごとにmoduleが切られ Fragmentの具体的実装が⼊っている
topic1: MultiModule & Dagger setting.gradle modelを扱っている. iOSからも⾒えるがParcelableにしたいところをexpect/actualで⼯夫している
topic1: MultiModule & Dagger setting.gradle roomとかFireBaseとかで保存するデータを管理する データ保存先を抽象化するためにrepositoryを挟んでいる
topic1: MultiModule & Dagger setting.gradle Timberがいる
topic1: MultiModule & Dagger
topic1: MultiModule & Dagger DIで気になるところ ü MultiModuleでの戦略
topic1: MultiModule & Dagger MainActivity.kt
topic1: MultiModule & Dagger MainActivity.kt 各種Fragmentを配る
topic1: MultiModule & Dagger DbComponentModule.kt
topic1: MultiModule & Dagger DbComponentModule.kt 各種Storeを配る
topic1: MultiModule & Dagger AppComponent.kt
topic1: MultiModule & Dagger AppComponent.kt 各種moduleからcomponentをbuild
topic1: MultiModule & Dagger
topic1: MultiModule & Dagger
topic1: MultiModule & Dagger ֤.PEVMFͱ%BHHFSͷ.PEVMFΛ ඥ͚ͮͯཧ͍ͯ͠Δ
• いろんなことを学べる • どのように Multi Module を実現しているのか? • どのようにDaggerで配っているのか? •
coroutinesをどう活かしてるのか? • JetPackのどんな機能を使っているのか? features
topic2: Coroutines
topic2: Coroutines 1 2 2
topic2: Coroutines 1 2 2
topic2: Coroutines API Ktor-clientが基本的によしなにやってくれる DB withContext(coroutineContext)で実⾏する(指定したスレッドで実⾏)
topic2: Coroutines API Ktor-clientが基本的によしなにやってくれる DB withContext(coroutineContext)で実⾏する(指定したスレッドで実⾏) 結果をrepositoryで統合
topic2: Coroutines API Ktor-clientが基本的によしなにやってくれる DB withContext(coroutineContext)で実⾏する(指定したスレッドで実⾏) 結果をrepositoryで統合 ActionCreatorへ
topic2: Coroutines KtorDroidKaigiApi.kt
topic2: Coroutines RoomDatabase.kt
topic2: Coroutines DataSessionRepository.kt
topic2: Coroutines SessionContentsActionCreator.kt
topic2: Coroutines 1 2 2
topic2: Coroutines 1 2 2
topic2: Coroutines Dispatcherに dispatchする機能と, subscribeする機能が 実装されている
topic2: Coroutines Dispatcher.kt
topic2: Coroutines Dispatcher.kt
topic2: Coroutines Dispatcher.kt
topic2: Coroutines Dispatcher.kt
• いろんなことを学べる • どのように Multi Module を実現しているのか? • どのようにDaggerで配っているのか? •
coroutinesをどう活かしてるのか? • JetPackのどんな機能を使っているのか? features
topic3: Android JetPack LifeCycle DataBinding LiveData Navigation 等
topic3: Android JetPack LifeCycle DataBinding LiveData Navigation 等 ֤.PEVMFͱ%BHHFSͷ.PEVMFΛ ඥ͚ͮͯཧ͍ͯ͠Δ
ҙ֎ʹ߇͑Ί
·ͱΊ
まとめ DroidKaigiのコードで,⽩⽶が5杯くらい進むので, いっぱい読み解こう. DroidKaigiのコードは集合知.どんどん参考にする. 今⽇話せなかったこともいろいろ⾯⽩いので,まとめます.