Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up
for free
チーム開発と Android アプリの構成
Ryutaro Miyashita
July 14, 2017
Programming
5
900
チーム開発と Android アプリの構成
第4回スタートアップAndroid勉強会
https://connpass.com/event/59928/
Ryutaro Miyashita
July 14, 2017
Tweet
Share
More Decks by Ryutaro Miyashita
See All by Ryutaro Miyashita
ryugoo
0
1.2k
ryugoo
0
310
ryugoo
1
1.6k
ryugoo
2
1.2k
ryugoo
4
570
ryugoo
0
470
ryugoo
2
340
ryugoo
1
2.1k
ryugoo
0
680
Other Decks in Programming
See All in Programming
orgachem
1
210
seike460
7
2.2k
uhyo
19
9.1k
kubode
1
170
wafuwafu13
1
130
deepu105
1
190
yusuke57
2
270
dnskimo
7
1.3k
ajstarks
2
750
andrewgodwin
1
150
amakza
0
170
hkusu
0
270
Featured
See All Featured
imathis
479
150k
kneath
294
39k
3n
163
22k
mongodb
23
3.9k
colly
66
3k
hursman
107
9.3k
chriscoyier
146
20k
philhawksworth
192
8.9k
bryan
32
3.5k
ddemaree
273
31k
sugarenia
233
880k
zakiwarfel
88
3.4k
Transcript
νʔϜ։ൃͱ"OESPJEΞϓϦͷߏ ୈճελʔτΞοϓ"OESPJEษڧձ ελʔτΞοϓʹ͓͚ΔΞʔΩςΫνϟͱͷ͖߹͍ํ
ٶԼཽେ $IBU8PSLגࣜձࣾ ΞϓϦέʔγϣϯ։ൃ෦νʔϜϦʔμʔ !SZVHPP@
ߏ
"OESPJEΞϓϦͷߏ ΞʔΩςΫνϟ ύοέʔδߏ
ΞʔΩςΫνϟ .7$ .71 .77. 'MVY 7*1&3 $MFBO"SDIJUFDUVSF FUD
ϥΠϑαΠΫϧʹண͢ΔΞʔΩςΫνϟ ‣ 3Y+BWB&WFOU#VTΛ͍ͬͯΕҙࣝ͢Δͣ PO4UBSUPO4UPQͰTVCTDSJCFVOTVCTDSJCF ߪಡ͕ഁغ͞Εͨͱ͖ͷࢹରͷదͳഁغ ‣ ϥΠϑαΠΫϧʹண͢Δͱ͞Βʹҙࣝ͢Δ͜ͱ
ׂͷ ը໘ͱใ ใͱϩδοΫ ϩδοΫͱӬଓԽػߏ
"OESPJE"SDIJUFDUVSF$PNQPOFOUT ‣ (PPHMF*0Ͱൃද͞Εͨ ‣ (PPHMFͷߟ͑ΔਪનΞʔΩςΫνϟ ‣ "DUJWJUZ'SBHNFOUͷϥΠϑαΠΫϧʹண ؍ଌՄೳͳϥΠϑαΠΫϧͱඥ͘σʔλ -JGFDZDMF-JWF%BUB
ը໘ճసʹӨڹ͞Εͳ͍σʔλͷอ࣋ 7JFX.PEFM σʔλͷӬଓԽΛखॿ͚͢Δ 3PPN1FSTJTUFODF-JCSBSZ
ΞʔΩςΫνϟࣅͯ͘Δ ‣ "DUJWJUZ'SBHNFOU$VTUPN7JFX 7JFX6*ͷ੍ޚʹूத͢Δ ‣ 7JFX.PEFM 7JFXͷͨΊͷΛอ࣋͢Δ
7JFXͱϏδωεϩδοΫͷڮ͠ ‣ #VTJOFTT-PHJD ΦϒδΣΫτ ϏδωεϩδοΫ
7JFX 7JFX.PEFM #VTJOFTT-PHJD ‣ 3Y+BWB ‣ JOUFSGBDF ‣ &WFOU#VT
7JFX 7JFX.PEFM #VTJOFTT-PHJD ‣ 3Y+BWB ‣ JOUFSGBDF ‣ &WFOU#VT
"OESPJEͷ7JFX͍͜͠ ‣ "DUJWJUZ 'SBHNFOU %JBMPH'SBHNFOU #PUUPN4IFFU $VTUPN7JFX ‣
ը໘ͷίϯϙʔωϯτಉ࢜௨৴͕ඞཁ 7JFX.PEFMΛͲͷΑ͏ʹ͏͔ %BUB#JOEJOHͱͲ͏Έ߹ΘͤΔ͔
7JFX.PEFMΛͲͷΑ͏ʹ͏͔ ‣ Ϣʔβʔ͕ݟ͍ͯΔlը໘zʹؔ৺Λ͚Δ ʷ )PHF"DUJWJUZ⾮)PHF"DUJWJUZ7JFX.PEFM ̋ )PHF"DUJWJUZ )PHF'SBHNFOU )PHF$VTUPN7JFX )PHF7JFX.PEFM
lը໘zͷؔ৺ʹରͯ͠7JFX.PEFM͕͋Δ ۃྗ"OESPJE߹ʹҾͬுΒΕͨ͘ͳ͍
7JFX.PEFMΛͲͷΑ͏ʹ͏͔ ‣ "OESPJE"SDIJUFDUVSF$PNQPOFOUT 7JFX.PEFM1SPWJEFSTܦ༝Ͱڞ༗Ͱ͖Δ class MyFragment: Fragment() { val
viewModel: MyViewModel by lazy { ViewModelProviders.of(activity) .get(MyViewModel::class.java) } }
%BUB#JOEJOHͱͲ͏Έ߹ΘͤΔ͔ ‣ ֤ϨΠΞτͱ7JFX.PEFMΛόΠϯυ 7JFX.PEFMը໘ͷτοϓίϯϙʔωϯτ͔Βऔಘ <?xml version="1.0" encoding="utf-8"?> <layout> <data>
<variable name="hogeViewModel" type="com.example.view.hoge.HogeViewModel"/> </data> </layout>
%BUB#JOEJOHͱͲ͏Έ߹ΘͤΔ͔ ‣ 0CTFSWBCMF'JFMEͳͲͬͯํόΠϯυ <TextView android:text="@={hogeViewModel.textValue}"> data class HogeViewModel( val textValue:
ObservableField<String> = ObservableField() )
7JFXͱ7JFX.PEFM )PHF "DUJWJUZ )PHF 'SBHNFOU )PHF 7JFX l)PHFz %BUB#JOEJOH l)PHF7JFX.PEFMz
0CTFSWBCMF'JFME SY0CTFSWBCMF $PNNBOE &WFOU
Έ ‣ Ϣʔβʔ͕ݟ͍ͯΔlը໘zʹؔ৺Λ͚Δ Ͳ͜·Ͱ͕ಉ͡ίϯςΩετͷը໘ͳͷ͔ )PHF"DUJWJUZ͕ΞΫςΟϒͰ͋Εɺ ͦ͜ʹදࣔ͞ΕΔͷಉ͡ίϯςΩετʁ ྫ͑l%JBMPH'SBHNFOUzͲ͏ͩΖ͏ʁ
)PHF7JFX.PEFMΛ͖͔࣋ͭ൱͔ ઐ༻ͷ7JFX.PEFM͕͋ͬͨํ͕ྑ͍ͷ͔ දࣔ͞ΕΔ%JBMPHͷதͰมΘΓͦ͏͚ͩͲ ʅЏʆʀ řŖƃʜ
ύοέʔδߏ
ύοέʔδߏ ‣ "OESPJEΞϓϦͷύοέʔδߏࣗ༝͕ߴ͍ ϓϩδΣΫτσϑΥϧτͰ.BJO"DUJWJUZ͕ ύοέʔδԼʹυʔϯͱஔ͔Ε͍ͯΔ ‣ ྫ͑044ͳ"OESPJEϓϩδΣΫτͰʁ - root
- ui - activities - fragments - views - viewmodels - root - ui - Activity.java - Fragment.java - model - utils
Ͳ͜ʹ͢Δ͔ ‣ ύοέʔδߏΛͲ͏ׂ͢Δ͔ lVJzlNPEFMzʹ͚Δͷྑ͋͘Δ ͔Γ͍͢ ‣ Ͱ
lBDUJWJUZzͳͲͰ͚͍ͯ͘ͷ͕ຊʹྑ͍ͷ͔ lը໘zʹண͢Δͱίʔυ͕ࢄͯ͘͠Δ ͞ΒʹlWJFXNPEFMzग़ͯ͘Δͱʜʜʁ ̻̻̻ƅЧƅ űŘŎŎŎ
ఏҊ ‣ Ϣʔβʔ͕ண͢Δը໘Λߏ͢ΔཁૉͰ·ͱΊΔ - root - ui - hoge -
HogeActivity.kt - HogeFragment.kt - HogeCustomView.kt - HogeViewModel.kt - fuga - ……
ఏҊ ‣ ϝϦοτ ύοέʔδϓϥΠϕʔτʹͰ͖Δ ը໘Λߏ͢ΔཁૉͰ·ͱΊΒΕΔͷͰࢄΒΒͳ͍ (JU)VCͷ3FQPTJUPSZ7JFXFSͰݟΔͱָ͖ʑ ‣
σϝϦοτ ࢥ͍͔ͭͳ͍ʂ
ʹΌΜͳΜͷͨΊʹ
ͳͥlΞʔΩςΫνϟzʹ͢Δͷ͔ ‣ ਓͳΒ ଟ ͲΜͳܗͰͳ͍ ਓ ਓʜʜνʔϜʹͳ͖ͬͯͨΒʁ டং͕ඞཁ
ΞʔΩςΫνϟடং νʔϜͷͨΊʹΞʔΩςΫνϟ͕͋Δ ‣ டং͕ͳ͍ͱͲ͏ͳΔͷ͔ ։ൃ͕མͪɺόάੜ·ΕɺΧΦεʹͳΔ ϢʔβʔͷՁఏڙ͕ૄ͔ʹͳΔ
ελʔτΞοϓͱΞʔΩςΫνϟ ‣ Ϗδωεޭ͢Δ͔͔Βͳ͍ ϐϘοτ͢Δ͜ͱ͋Δ ૉૣ͘։ൃͯ͠ɺՁͷݕূΛߦ͍͍ͨ ͰɺϢʔβʔͷͱͯख़͍ͯ͠Δ ͡Ί͔Βҙਤ͢ΔػೳΛਖ਼͘͠ಈ࡞ͤ͞Δඞཁ͕͋Δ
ૉૣ͍։ൃWTਖ਼͘͠ಈ࡞͢ΔϓϩάϥϜ ΞʔΩςΫνϟʹΑͬͯடংΛखʹೖΕΑ͏ டংʹΑͬͯϢʔβʔͷՁఏڙΛखॿ͚͢Δ
டং͋Δ։ൃΛߦ͏ؒΛ୳͍ͯ͠·͢ ‣ $IBU8PSLͰ"OESPJEJ04ΤϯδχΞΛืूத ΞʔΩςΫνϟͱڞʹ͋Δ։ൃΛ͠·ͤΜ͔ʁ ౦ژΦϑΟεେࡕΦϑΟε ౦ژΦϑΟε݄ʹ౦ژλϫʔͦʹҠస͠·͢ ࠓઙ ͔ͬͺڮಓ۩֗ͷத
ʹ͋Γ·͢ IUUQDPSQDIBUXPSLDPNKBSFDSVJUFOHJOFFS
͓͠·͍