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
Kazuki Chigita
April 25, 2019
Technology
1
410
Read DroidKaigi2019 app source code
Kazuki Chigita
April 25, 2019
Tweet
Share
More Decks by Kazuki Chigita
See All by Kazuki Chigita
あの日のHotReloadはなぜ動かなかったのか? 〜OSセキュリティ(W^X)とJITコンパイラの攻防〜
chigichan24
3
900
「 動く」サンプルでスムーズなコミュニケーションを
chigichan24
1
810
Claude CodeでサクサクTestコードを移行しよう
chigichan24
2
1k
Live Update notificationのつかいどころ
chigichan24
0
280
不具合調査とTest
chigichan24
1
430
Flutterと難読化
chigichan24
0
5.5k
Building Android and looking into the Android System
chigichan24
2
4.2k
DroidKaigiカンファレンスアプリの歴史からみるアプリアーキテクチャのこれまでとこれから
chigichan24
2
3.5k
継続的に機能開発を進めながら行うマルチモジュール化
chigichan24
2
6.1k
Other Decks in Technology
See All in Technology
Red Hat OpenStack Services on OpenShift
tamemiya
0
140
SREが向き合う大規模リアーキテクチャ 〜信頼性とアジリティの両立〜
zepprix
0
480
~Everything as Codeを諦めない~ 後からCDK
mu7889yoon
3
520
ブロックテーマ、WordPress でウェブサイトをつくるということ / 2026.02.07 Gifu WordPress Meetup
torounit
0
200
日本の85%が使う公共SaaSは、どう育ったのか
taketakekaho
1
250
Greatest Disaster Hits in Web Performance
guaca
0
290
SRE Enabling戦記 - 急成長する組織にSREを浸透させる戦いの歴史
markie1009
0
170
フルカイテン株式会社 エンジニア向け採用資料
fullkaiten
0
10k
広告の効果検証を題材にした因果推論の精度検証について
zozotech
PRO
0
210
Webhook best practices for rock solid and resilient deployments
glaforge
2
310
顧客との商談議事録をみんなで読んで顧客解像度を上げよう
shibayu36
0
330
ClickHouseはどのように大規模データを活用したAIエージェントを全社展開しているのか
mikimatsumoto
0
270
Featured
See All Featured
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
86
Designing for Timeless Needs
cassininazir
0
130
Bash Introduction
62gerente
615
210k
We Are The Robots
honzajavorek
0
170
Designing for humans not robots
tammielis
254
26k
The agentic SEO stack - context over prompts
schlessera
0
650
30 Presentation Tips
portentint
PRO
1
230
How Software Deployment tools have changed in the past 20 years
geshan
0
32k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
760
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.4k
The Cult of Friendly URLs
andyhume
79
6.8k
How to Talk to Developers About Accessibility
jct
2
140
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のコードは集合知.どんどん参考にする. 今⽇話せなかったこともいろいろ⾯⽩いので,まとめます.