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
原則から考える保守しやすいComposable関数設計
moriatsushi
3
670
Kotlin Coroutinesで共有リソースに正しくアクセスする
moriatsushi
6
4.9k
Jetpack Composeで Reduxっぽいアーキテクチャを試す
moriatsushi
2
1.1k
Kotlin MultiplatformでもKSPを使う
moriatsushi
2
810
実例から学ぶJetpack Composeのパフォーマンス改善
moriatsushi
3
7.2k
WindowInsets 2022 feat. Jetpack Compose #ca_aab
moriatsushi
1
1.6k
Jetpack Composeで UI Catalog Libraryを 作っている話 #android_meetup
moriatsushi
1
1.2k
良いコードとは何か - エンジニア新卒研修 スライド公開
moriatsushi
93
160k
AndroidでKotlin Coroutineを使うときの注意点 | CA BASE NEXT
moriatsushi
4
3.3k
Other Decks in Programming
See All in Programming
あなたとJIT, 今すぐアセンブ ル
sisshiki1969
1
600
Scale out your Claude Code ~自社専用Agentで10xする開発プロセス~
yukukotani
9
1.9k
CLI ツールを Go ライブラリ として再実装する理由 / Why reimplement a CLI tool as a Go library
ktr_0731
3
1k
No Install CMS戦略 〜 5年先を見据えたフロントエンド開発を考える / no_install_cms
rdlabo
0
480
20250808_AIAgent勉強会_ClaudeCodeデータ分析の実運用〜競馬を題材に回収率100%の先を目指すメソッドとは〜
kkakeru
0
140
What's new in Adaptive Android development
fornewid
0
140
AIのメモリー
watany
13
1.4k
11年かかって やっとVibe Codingに 時代が追いつきましたね
yimajo
1
260
CEDEC2025 長期運営ゲームをあと10年続けるための0から始める自動テスト ~4000項目を50%自動化し、月1→毎日実行にした3年間~
akatsukigames_tech
0
120
『リコリス・リコイル』に学ぶ!! 〜キャリア戦略における計画的偶発性理論と変わる勇気の重要性〜
wanko_it
1
470
一人でAIプロダクトを作るための工夫 〜技術選定・開発プロセス編〜 / I want AI to work harder
rkaga
12
2.5k
Comparing decimals in Swift Testing
417_72ki
0
170
Featured
See All Featured
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4k
Fantastic passwords and where to find them - at NoRuKo
philnash
51
3.4k
[RailsConf 2023] Rails as a piece of cake
palkan
56
5.8k
How STYLIGHT went responsive
nonsquared
100
5.7k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
Producing Creativity
orderedlist
PRO
347
40k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
126
53k
The Invisible Side of Design
smashingmag
301
51k
How to Ace a Technical Interview
jacobian
278
23k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
23
1.4k
Designing for Performance
lara
610
69k
What's in a price? How to price your products and services
michaelherold
246
12k
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Λ͚ͭΔ
·ͱΊ ϚϧνϞδϡʔϧΛͬͯ৽ઃܭͱچઃܭΛΓ͚Δͱ ґଘ͕ؔڧ੍Ͱ͖ͯྑ͍ ϞδϡʔϧΛ͑Δ߹நʹґଘͤ͞ΔΑ͏ʹ͢Δ ݁ߏͰΓΒͳ͍ͱ͍͚ͳ͍ͱ͜Ζଟ͍