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
マルチモジュールでandroidアプリを救う | Scramble Tech #0
Search
Mori Atsushi
December 18, 2019
Programming
1
1.1k
マルチモジュールでandroidアプリを救う | Scramble Tech #0
https://scramble.connpass.com/event/157710/
tags: android, multi module, OPENREC, java, kotlin
Mori Atsushi
December 18, 2019
Tweet
Share
More Decks by Mori Atsushi
See All by Mori Atsushi
Kotlin Coroutinesで共有リソースに正しくアクセスする
moriatsushi
6
4.5k
Jetpack Composeで Reduxっぽいアーキテクチャを試す
moriatsushi
2
1k
Kotlin MultiplatformでもKSPを使う
moriatsushi
1
750
実例から学ぶJetpack Composeのパフォーマンス改善
moriatsushi
3
6.9k
WindowInsets 2022 feat. Jetpack Compose #ca_aab
moriatsushi
1
1.5k
Jetpack Composeで UI Catalog Libraryを 作っている話 #android_meetup
moriatsushi
1
1.2k
良いコードとは何か - エンジニア新卒研修 スライド公開
moriatsushi
92
150k
AndroidでKotlin Coroutineを使うときの注意点 | CA BASE NEXT
moriatsushi
4
3.2k
新卒1年目で Androidアプリの アーキテクチャ移行を主導した話
moriatsushi
1
480
Other Decks in Programming
See All in Programming
SQL Server ベクトル検索
odashinsuke
0
170
gen_statem - OTP's Unsung Hero
whatyouhide
1
200
アプリを起動せずにアプリを開発して品質と生産性を上げる
ishkawa
0
2.8k
自分のために作ったアプリが、グローバルに使われるまで / Indie App Development Lunch LT
pixyzehn
1
160
リアクティブシステムの変遷から理解するalien-signals / Learning alien-signals from the evolution of reactive systems
yamanoku
3
1.2k
メモリウォールを超えて:キャッシュメモリ技術の進歩
kawayu
0
1.9k
AWSで雰囲気でつくる! VRChatの写真変換ピタゴラスイッチ
anatofuz
0
150
Boost Your Performance and Developer Productivity with Jakarta EE 11
ivargrimstad
0
1.6k
AIコーディングワークフローの試行 〜AIエージェント×ワークフローでの自動化を目指して〜
rkaga
2
3.6k
AI Coding Agent Enablement - エージェントを自走させよう
yukukotani
14
6k
DataStoreをテストする
mkeeda
0
290
On-the-fly Suggestions of Rewriting Method Deprecations
ohbarye
1
1.8k
Featured
See All Featured
GraphQLの誤解/rethinking-graphql
sonatard
71
10k
The Invisible Side of Design
smashingmag
299
50k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
5
550
How GitHub (no longer) Works
holman
314
140k
Testing 201, or: Great Expectations
jmmastey
42
7.5k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
34
2.9k
Bootstrapping a Software Product
garrettdimon
PRO
307
110k
Making the Leap to Tech Lead
cromwellryan
133
9.2k
A designer walks into a library…
pauljervisheath
205
24k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
8
660
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
331
21k
Optimising Largest Contentful Paint
csswizardry
36
3.2k
Transcript
ϚϧνϞδϡʔϧͰ BOESPJEΞϓϦΛ ٹ͏ ಞ࢙c4DSBNCMF5FDIc
ಞ࢙ .PSJ"UTVTIJ ໌ੴߴઐ ஜେֶ גࣜձࣾαΠόʔΤʔδΣϯτגࣜձࣾ$ZCFS;01&/3&$ ܦྺ BOESPJEXFCJPTDBNFSB εΩϧ ୈճશࠃߴઐϓϩάϥϛϯάίϯςετ,"/";"8"ΦʔϓϯσʔλΞϓϦίϯςετ -0%νϟϨϯδୈճશࠃߴઐϓϩάϥϛϯάίϯςετ
ฏىۀՈߕࢠԂ*NBHJOF$VQ.BTIVQ"XBSET .BTIVQ"XBSET(6(&/ ίϯςετ
ήʔϜ࣮گϓϨΠಈըɺ ϥΠϒ৴ָ͕͠ΊΔɺ ಈըίϛϡχςΟ ϓϥοτϑΥʔϜ
σβΠϯϦχϡʔΞϧ ࡁ ݄ ݄
ೖࣾc݄̐ ؔ+BWB ؔ.7$ ؔ$BMMCBDLࠈ ۀքతͰLPUMJOͰͷ։ൃ͕ओྲྀ (PPHMF.77.Λਪ 3Y+BWBར༻͍ͯ͠ͳ͍
BOESPJEද 01&/3&$ ϦϦʔε ,PUMJOΛ ਖ਼ࣜ։ൃݴޠʹ
,PUMJOpSTU +FU1BDLͷൃද "OESPJEΞϓϦͷ։ൃΛՃͤ͞Δ࣍ੈͷ ίϯϙʔωϯτɺπʔϧɺΞʔΩςΫνϟΨΠμϯε .77.͕ڧ͘ਪ͞Εɺ.7$ඇਪͱ͞Εͨ ,PUMJOͰͷ։ൃΛ(PPHMF͕ਖ਼ࣜʹαϙʔτ ͢ΔΑ͏ʹͳͬͨɻKBWBͱ͖ͳํ͕બΔɻ ৽نػೳɾ৽نϥΠϒϥϦΛ,PUMJO༏ઌͰϦϦʔε͠ ͍ͯ͘ͱએݴɻ +BWBͩͱ࠷৽ػೳͷԸܙ͕ड͚ΒΕͳ͍Մೳੑ͕ +BWBͰͷ։ൃ͕ओྲྀɻ .7$.71.77.ɺ ༷ʑͳΞʔΩςΫνϟ͕ཚཱ͍ͯͨ͠
ࠓ෩ʹॻ͖͍͑ͨʙʂ
ઈରʹͳ͘ͳΒͳ͍ͷ
ػೳՃ ઈରʹͳ͘ͳΒͳ͍ͷ
ܧଓతʹ։ൃͭͭ͠ ৽ઃܭʹҠߦͰ͖ΔΈ
͍͋Ͱ͌͋ ৽ΞʔΩςΫνϟ چΞʔΩςΫνϟ ৽ΞʔΩςΫνϟΛ࡞ͬͯঃʑʹͦͪΒʹҠߦ͍ͯ͘͠ ঃʑʹҠߦ "DUJWJUZ'SBHNFOU 7JFX.PEFM 6TF$BTF 3FQPTJUPSZ %BUB4PVSDF
6UJM "DUJWJUZ'SBHNFOU $POUSPMMFS .PEFM 6UJM
༧͞ΕΔ͜ͱ +BWBͷ6UJMॆ࣮ͯ͠Δ͓ͦͬͪ͠͏ʜ ৽ΞʔΩςΫνϟ چΞʔΩςΫνϟ "DUJWJUZ'SBHNFOU 7JFX.PEFM 6TF$BTF 3FQPTJUPSZ %BUB4PVSDF 6UJM
"DUJWJUZ'SBHNFOU $POUSPMMFS .PEFM 6UJM
༧͞ΕΔ͜ͱ ݹ͍ը໘Ͱ৽͍͠ػೳʹΞΫηε͠ͳ͚Εʜ ৽ΞʔΩςΫνϟ چΞʔΩςΫνϟ "DUJWJUZ'SBHNFOU 7JFX.PEFM 6TF$BTF 3FQPTJUPSZ %BUB4PVSDF 6UJM
"DUJWJUZ'SBHNFOU $POUSPMMFS .PEFM 6UJM
༧͞ΕΔ͜ͱ 6TF$BTFҎԼ࡞ΔͷϝϯυΫαΠ͠ɺ+BWBͷ$POUSPMMFSʜ ৽ΞʔΩςΫνϟ چΞʔΩςΫνϟ "DUJWJUZ'SBHNFOU 7JFX.PEFM 6TF$BTF 3FQPTJUPSZ %BUB4PVSDF 6UJM
"DUJWJUZ'SBHNFOU $POUSPMMFS .PEFM 6UJM
༧͞ΕΔ͜ͱ ґଘ͕ؔΊͪΌΊͪΌʹʜ ৽ΞʔΩςΫνϟ چΞʔΩςΫνϟ "DUJWJUZ'SBHNFOU 7JFX.PEFM 6TF$BTF 3FQPTJUPSZ %BUB4PVSDF 6UJM
"DUJWJUZ'SBHNFOU $POUSPMMFS .PEFM 6UJM
৽-FHBDZ ༧͞ΕΔ͜ͱ ৽ΞʔΩςΫνϟ چΞʔΩςΫνϟ "DUJWJUZ'SBHNFOU 7JFX.PEFM 6TF$BTF 3FQPTJUPSZ %BUB4PVSDF 6UJM
"DUJWJUZ'SBHNFOU $POUSPMMFS .PEFM 6UJM
৽-FHBDZ ༧͞ΕΔ͜ͱ ৽ΞʔΩςΫνϟ چΞʔΩςΫνϟ "DUJWJUZ'SBHNFOU 7JFX.PEFM 6TF$BTF 3FQPTJUPSZ %BUB4PVSDF 6UJM
"DUJWJUZ'SBHNFOU $POUSPMMFS .PEFM 6UJM
ͳʹ͕͍͚ͳ͔͔ͬͨ ৽ΞʔΩςΫνϟ چΞʔΩςΫνϟ ૄ݁߹Ͱ͋Δ͜ͱ͕ॏཁ ಛʹɿ৽ΞʔΩςΫνϟچΞʔΩςΫνϟʹґଘ͍͚ͯ͠ͳ͍ "DUJWJUZ'SBHNFOU 7JFX.PEFM 6TF$BTF 3FQPTJUPSZ %BUB4PVSDF
6UJM "DUJWJUZ'SBHNFOU $POUSPMMFS .PEFM 6UJM
ͳʹ͕͍͚ͳ͔͔ͬͨ ৽ΞʔΩςΫνϟ چΞʔΩςΫνϟ ૄ݁߹Ͱ͋Δ͜ͱ͕ॏཁ ಛʹɿ৽ΞʔΩςΫνϟچΞʔΩςΫνϟʹґଘ͍͚ͯ͠ͳ͍ "DUJWJUZ'SBHNFOU 7JFX.PEFM 6TF$BTF 3FQPTJUPSZ %BUB4PVSDF
6UJM "DUJWJUZ'SBHNFOU $POUSPMMFS .PEFM 6UJM
ؾΛ͚ͭͯ։ൃ͠Α͏ʂ ͓ΘΓ
ຊʹେৎͰ͔͢ʁ
ਓؒ͠͠ աͪΛى͜͢
"OESPJE .VMUJ .PEVMF
ϚϧνϞδϡʔϧ ҰͭͷϓϩδΣΫτͰίϯύΠϧ୯ҐΛׂ͢Δ͜ͱ͕Ͱ͖Δ ϞδϡʔϧؒͷґଘؔΛ໌ࣔతʹఆٛ͢Δ ॥ͨ͠ґଘఆٛͰ͖ͳ͍ Ϟδϡʔϧ" Ϟδϡʔϧ#
ࠓճͷྫ ৽ΞʔΩςΫνϟ چΞʔΩςΫνϟ ΈͰ༧ظͤ͵ґଘΛ͙ "DUJWJUZ'SBHNFOU 7JFX.PEFM 6TF$BTF 3FQPTJUPSZ %BUB4PVSDF 6UJM
"DUJWJUZ'SBHNFOU $POUSPMMFS .PEFM 6UJM
۩ମతʹ GFBUVSFEJTDPWFS BQQ GFBUVSFXBUDI GFBUVSFTFUUJOH MFHBDZ EBUBVTFDBTF EBUBSFQPTJUPSZ EBUBTPVSDFBQJ EBUBTPVSDFMPDBM
DPSF ˞؆ུԽͷͨΊҰ෦NPEVMFґଘলུ͞Ε͍ͯΔ ˞VTFDBTFSFQPTJUPSZEBUBTPVSDFͷJOUFSGBDFͱ ͦͷ࣮ɺ࣮ࡍʹผNPEVMFʹͳ͍ͬͯΔ
ܧଓతʹ։ൃͭͭ͠Ҡߦ͢Δ ᶃ'SBHNFOU୯ҐͰҠߦ͢Δ ᶄԼҐϨΠϠʔ͔ΒੵۃతʹҠߦ͢Δ ᶅ#BTF"DUJWJUZͷҠߦ݁ہྗͮ͘ BDUJWJUZ୯ҐͰେ͖͗͢ΔNPEVMFΛ͑ͯ'SBHNFOUΛ͢ʹʁ ԼҐϨΠϠʔೖΕସ͍͑͢ Δؾͱࠜؾ
'SBHNFOU୯ҐͰҠߦ͢Δ Α͠ʂ͜ͷ"DUJWJUZʢը໘ʣΛ Ҡߦ͢Δͧʂ ͋Εɺͳ͔ͳ͔ऴΘΒͳ͍ʜ ͖͋ΒΊ·ͨ͠
'SBHNFOU୯ҐͰҠߦ͢Δ Α͠ʂ͜ͷ"DUJWJUZʢը໘ʣΛ Ҡߦ͢Δͧʂ ͋Εɺͳ͔ͳ͔ऴΘΒͳ͍ʜ ͖͋ΒΊ·ͨ͠ ҠߦযΒͣ গͣͭ͠
'SBHNFOU୯ҐͰҠߦ͢Δ ҠߦࡁΈ ະҠߦ λϒ୯ҐͰҠߦத ҰͷσόοάϦϦʔεΛখ͘͞ Ϟνϕʔγϣϯҡ࣋
'SBHNFOU୯ҐͰҠߦ͢Δ GFBUVSFOFX MFHBDZ BQQ MFHBDZͷ'SBHNFOUΛ औಘ͍͕ͨ͠औΕͳ͍
GFBUVSFOFX MFHBDZ BQQ DPSFOBWJHBUJPO 'SBHNFOU୯ҐͰҠߦ͢Δ *OUFSGBDFΛఆٛ *OUFSGBDFΛ࣮ %*Ͱ*NQMΫϥεΛΔ
'SBHNFOU୯ҐͰҠߦ͢Δ λϒλοϓͰ Ұ൪্·ͰεΫϩʔϧ BDUJWJUZ͔Β GSBHNFOUΛૢ࡞͍ͨ͠
GFBUVSFOFX MFHBDZ BQQ DPSFOBWJHBUJPO 'SBHNFOU୯ҐͰҠߦ͢Δ *OUFSGBDFΛఆٛ 'SBHNFOUʹ*OUFSGBDFΛ࣮ͤ͞Δ 'SBHNFOUʹ*OUFSGBDFΛνΣοΫ͢Δ
GFBUVSFOFX MFHBDZ BQQ DPSFOBWJHBUJPO 'SBHNFOU୯ҐͰҠߦ͢Δ *OUFSGBDFΛఆٛ *OUFSGBDFΛ࣮ *OUFSGBDFΛνΣοΫ͢Δ நʹґଘͤΑ
'SBHNFOU୯ҐͰҠߦ͢Δ ৽ը໘TDSPMMBCMFͳGSBHNFOUͰ͋Δ ͜ͱ͔͠Βͳ͍ TDSPMMBCMFͳGSBHNFOUʹଈ࠲ʹ ஔ͖͑Մೳ நʹґଘͤ͞ΔͱԿ͕ྑ͍͔
ԼҐϨΠϠʔ͔ΒੵۃతʹҠߦ͢Δ %BUB4PVSDF ৽ΞʔΩςΫνϟ "DUJWJUZ'SBHNFOU $POUSPMMFS .PEFM چΞʔΩςΫνϟ ύλʔϯᶃ%BUB4PVSDFʢ-PDBM%#ʣ͚ͩ৽ʹࠩ͠ସ͑ ґଘ͕গͳ͘Έ͘͢ɺσʔλͷෆ߹͕ى͖ʹ͘͘ͳΔ
ԼҐϨΠϠʔ͔ΒੵۃతʹҠߦ͢Δ ৽ΞʔΩςΫνϟ "DUJWJUZ'SBHNFOU چΞʔΩςΫνϟ ύλʔϯᶄ6TF$BTFҎԼΛ৽ʹࠩ͠ସ͑ ৽͍͠ػೳΛ৽ΞʔΩςΫνϟͰ࡞Γɺچ"DUJWJUZ͔Βݺͼग़͢ ৽"DUJWJUZʹҠߦ͢Δͱָ͖ʑ 6TF$BTF 3FQPTJUPSZ %BUB4PVSDF
ԼҐϨΠϠʔ͔ΒੵۃతʹҠߦ͢Δ ৽ΞʔΩςΫνϟ چΞʔΩςΫνϟ ൪֎ฤ6UJMΛNPEVMFҠߦ ڞ௨NPEVMFʹ͑ͦ͏ͳVUJMͲΜͲΜҠ͍ͯ͘͠ ϦϑΝΫλ͢Δ͍͍λΠϛϯάʂ 6UJM "DUJWJUZ'SBHNFOU $POUSPMMFS .PEFM
#BTF"DUJWJUZͷҠߦ #BTF"DUJWJUZංେԽ͕ͪ͠ʜ ϩάܥॲཧͷڞ௨ԽݖݶपΓΞϓϦͷόοΫάϥϯυɾ ϑΥΞάϥϯυݕ1*1੍ޚڧ੍Ξοϓσʔτڧ੍ϩάΞ τϓϨϛΞϜձһνΣοΫʜ
#BTF"DUJWJUZͷҠߦ جຊઓུ ᶃࠓ·Ͱͷ#BTF"DUJWJUZΛ-FHBDZ#BTF"DUJWJUZʹ ϦωʔϜ͠ɺ-FHBDZNPEVMFʹ͓͘ ᶄڞ௨NPEVMFʹਅ#BTF"DUJWJUZΛ࡞Γɺ ຊʹඞཁͳͷ͚ͩΛҠ͢ ᶅ-FHBDZ#BTF"DUJWJUZʹऔΓ͞ΕͨॲཧΛ Α͠ͳʹղ͢Δ
#BTF"DUJWJUZͷҠߦ #BTF"DUJWJUZͷղϓϥϯ ॲཧͷڞ௨ԽΛ͍ͨ͠ 6UJM*OUFSGBDFʹΓग़͢ 'SBHNFOUͱ"DUJWJUZɺ'SBHNFOUؒͰσʔλͷΓऔΓ͕͍ͨ͠ "DUJWJUZTDPQFͷ7JFX.PEFMΛ͏ ΞϓϦͷCBDLHSPVOE GPSFHSPVOEΛݕ͍ͨ͠ 1SPDFTT-JGFDZDMF0XOFSΛ͏ Ͳ͏ʹͰ͖ͳ͍͚Ͳɺ৽ΞʔΩςΫνϟͰ͍ͨ͘ͳ͍
*OUFSGBDFʹͬͯ!%FQSFDBUFEΛ͚ͭΔ
#BTF"DUJWJUZͷҠߦ #BTF"DUJWJUZͷղϓϥϯ ॲཧͷڞ௨ԽΛ͍ͨ͠ 6UJM*OUFSGBDFʹΓग़͢ 'SBHNFOUͱ"DUJWJUZɺ'SBHNFOUؒͰσʔλͷΓऔΓ͕͍ͨ͠ "DUJWJUZTDPQFͷ7JFX.PEFMΛ͏ ΞϓϦͷCBDLHSPVOE GPSFHSPVOEΛݕ͍ͨ͠ 1SPDFTT-JGFDZDMF0XOFSΛ͏ Ͳ͏ʹͰ͖ͳ͍͚Ͳɺ৽ΞʔΩςΫνϟͰ͍ͨ͘ͳ͍
*OUFSGBDFʹͬͯ!%FQSFDBUFEΛ͚ͭΔ
·ͱΊ ϚϧνϞδϡʔϧΛͬͯ৽ઃܭͱچઃܭΛΓ͚Δͱ ґଘ͕ؔڧ੍Ͱ͖ͯྑ͍ ϞδϡʔϧΛ͑Δ߹நʹґଘͤ͞ΔΑ͏ʹ͢Δ ݁ߏͰΓΒͳ͍ͱ͍͚ͳ͍ͱ͜Ζଟ͍