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
640
原則から考える保守しやすいComposable関数設計
moriatsushi
3
790
Kotlin Coroutinesで共有リソースに正しくアクセスする
moriatsushi
6
5.4k
Jetpack Composeで Reduxっぽいアーキテクチャを試す
moriatsushi
2
1.2k
Kotlin MultiplatformでもKSPを使う
moriatsushi
2
900
実例から学ぶJetpack Composeのパフォーマンス改善
moriatsushi
3
7.6k
WindowInsets 2022 feat. Jetpack Compose #ca_aab
moriatsushi
1
1.7k
Jetpack Composeで UI Catalog Libraryを 作っている話 #android_meetup
moriatsushi
1
1.3k
良いコードとは何か - エンジニア新卒研修 スライド公開
moriatsushi
101
160k
Other Decks in Programming
See All in Programming
守る「だけ」の優しいEMを抜けて、 事業とチームを両方見る視点を身につけた話
maroon8021
3
1.2k
Windows on Ryzen and I
seosoft
0
340
GoのDB アクセスにおける 「型安全」と「柔軟性」の両立 - Bob という選択肢
tak848
0
260
ポーリング処理廃止によるイベント駆動アーキテクチャへの移行
seitarof
3
1.1k
20260228_JAWS_Beginner_Kansai
takuyay0ne
5
600
CDIの誤解しがちな仕様とその対処TIPS
futokiyo
0
230
AI 開発合宿を通して得た学び
niftycorp
PRO
0
160
Takumiから考えるSecurity_Maturity_Model.pdf
gessy0129
1
150
Java 21/25 Virtual Threads 소개
debop
0
190
メタプログラミングで実現する「コードを仕様にする」仕組み/nikkei-tech-talk43
nikkei_engineer_recruiting
0
200
Claude Code Skill入門
mayahoney
0
410
Migration to Signals, Signal Forms, Resource API, and NgRx Signal Store @Angular Days 03/2026 Munich
manfredsteyer
PRO
0
120
Featured
See All Featured
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
450
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
110
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
2.5k
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
2
570
Agile that works and the tools we love
rasmusluckow
331
21k
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
380
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2k
VelocityConf: Rendering Performance Case Studies
addyosmani
333
24k
Testing 201, or: Great Expectations
jmmastey
46
8.1k
Designing Experiences People Love
moore
143
24k
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
1
1.4k
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
480
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Λ͚ͭΔ
·ͱΊ ϚϧνϞδϡʔϧΛͬͯ৽ઃܭͱچઃܭΛΓ͚Δͱ ґଘ͕ؔڧ੍Ͱ͖ͯྑ͍ ϞδϡʔϧΛ͑Δ߹நʹґଘͤ͞ΔΑ͏ʹ͢Δ ݁ߏͰΓΒͳ͍ͱ͍͚ͳ͍ͱ͜Ζଟ͍