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.2k
マルチモジュールで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
モバイルアプリ開発のためのDesign Doc実践ガイド
moriatsushi
4
600
原則から考える保守しやすいComposable関数設計
moriatsushi
3
760
Kotlin Coroutinesで共有リソースに正しくアクセスする
moriatsushi
6
5.2k
Jetpack Composeで Reduxっぽいアーキテクチャを試す
moriatsushi
2
1.2k
Kotlin MultiplatformでもKSPを使う
moriatsushi
2
880
実例から学ぶJetpack Composeのパフォーマンス改善
moriatsushi
3
7.5k
WindowInsets 2022 feat. Jetpack Compose #ca_aab
moriatsushi
1
1.7k
Jetpack Composeで UI Catalog Libraryを 作っている話 #android_meetup
moriatsushi
1
1.3k
良いコードとは何か - エンジニア新卒研修 スライド公開
moriatsushi
95
160k
Other Decks in Programming
See All in Programming
組み合わせ爆発にのまれない - 責務分割 x テスト
halhorn
1
170
メルカリのリーダビリティチームが取り組む、AI時代のスケーラブルな品質文化
cloverrose
2
430
PC-6001でPSG曲を鳴らすまでを全部NetBSD上の Makefile に押し込んでみた / osc2025hiroshima
tsutsui
0
200
「コードは上から下へ読むのが一番」と思った時に、思い出してほしい話
panda728
PRO
39
26k
GISエンジニアから見たLINKSデータ
nokonoko1203
0
190
Findy AI+の開発、運用におけるMCP活用事例
starfish719
0
2k
[AtCoder Conference 2025] LLMを使った業務AHCの上⼿な解き⽅
terryu16
6
970
AI Agent Tool のためのバックエンドアーキテクチャを考える #encraft
izumin5210
5
1.5k
Graviton と Nitro と私
maroon1st
0
150
CSC307 Lecture 02
javiergs
PRO
1
710
20251212 AI 時代的 Legacy Code 營救術 2025 WebConf
mouson
0
230
PostgreSQLで手軽にDuckDBを使う!DuckDB&pg_duckdb入門/osc25hi-duckdb
takahashiikki
0
230
Featured
See All Featured
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
2.8k
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
74
Bash Introduction
62gerente
615
210k
Game over? The fight for quality and originality in the time of robots
wayneb77
1
72
jQuery: Nuts, Bolts and Bling
dougneiner
65
8.3k
Building a Scalable Design System with Sketch
lauravandoore
463
34k
Darren the Foodie - Storyboard
khoart
PRO
0
2k
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
43
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
0
110
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.7k
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
260
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Λ͚ͭΔ
·ͱΊ ϚϧνϞδϡʔϧΛͬͯ৽ઃܭͱچઃܭΛΓ͚Δͱ ґଘ͕ؔڧ੍Ͱ͖ͯྑ͍ ϞδϡʔϧΛ͑Δ߹நʹґଘͤ͞ΔΑ͏ʹ͢Δ ݁ߏͰΓΒͳ͍ͱ͍͚ͳ͍ͱ͜Ζଟ͍