Slide 1

Slide 1 text

߈ΊͷϞόΠϧΞϓϦ։ൃ Fuji, Goro (@__gfx__) #devloveٕ 4ճද ʢඈͼೖΓࢀՃʣ 2014/08/23

Slide 2

Slide 2 text

ࣗݾ঺հ • ౻ ޗ࿠ (gfx) • CookpadͷϞόΠϧΤϯδχΞ(iOS/Android) • ϥΠϒϥϦ։ൃ΍։ൃ؀ڥ੔උɾࣗಈԽͳͲ • background: C/C++, Perl, JavaScript (LLଟΊ) • ߈Ίͷ։ൃ؀ڥɾମ੍ͮ͘ΓΛ͍͖͍ͯͨ͠

Slide 3

Slide 3 text

– Fuji, Goro (#devloveٕ, 2014) “ʮ߈Ίʯͱ͸ɺݱঢ়ҡ࣋ʹྲྀ͞ΕΔؾ࣋ ͪʹཱͪ޲͔͏ҙࢤͰ͋Δ”

Slide 4

Slide 4 text

߈Ίͷ։ൃϫʔΫϑϩʔ

Slide 5

Slide 5 text

Web։ൃݱ৔ͷ͋Δ1γʔϯ • ܧଓతσϦόϦʔ࠷ߴʂCI͋Δ͔Β࠷௿ݶͷ ඼࣭͸อূͰ͖Δ͠ɺ໰୊͋ͬͨΒϩʔϧόο Ϋ͢Ε͹͍ΑͶʂ • ϦʔϯελʔτΞοϓ࠷ߴʂMVP͔Βͷվྑ ͰάΠάΠՁ஋Λ͔ͨΊͯ͜㽉㽉

Slide 6

Slide 6 text

Q. ϞόΠϧΞϓϦ΋ಉ͡ϊϦͰ࡞ΕΔʁ

Slide 7

Slide 7 text

A. ແཧ

Slide 8

Slide 8 text

ܧଓσϦόϦʔ͸Ͱ͖ͳ͍ • ςετ͕WebΞϓϦͱൺֱͯ͠೉͘͠CIͰࣗಈͰς ετͰ͖Δൣғ͕ڱ͍ • Ξοϓσʔτͷڧ੍͕೉͍͠ɻ͋ΒΏΔόʔδϣϯ ΋ࢢ৔ʹ࢒Γଓ͚ΔʢϢʔβʔͷυϩοϓΛ֮ޛ͢ ΔͳΒڧ੍ΞοϓσʔτΛଅ͢͜ͱ΋Ͱ͖Δ͕…ʣ • submit͔Β഑৴·Ͱ਺࣌ؒ(Play)͔Β਺िؒ (AppStore)͔͔Δ

Slide 9

Slide 9 text

MVP͔ΒҭͯΔͷ͸೉͍͠ • ϚʔέςΟϯάతʹϓϥοτϑΥʔϜετΞͷϨϏϡʔ ͕ͱͯ΋ॏཁͰɺΫΦϦςΟͷ௿͍όʔδϣϯ͕ΞϓϦ ࣗମͷ଍ΛҾͬுΔʢGoogle Playʣ • Πϯετʔϧͷϋʔυϧ͕ߴ͍ͨΊɺ࠷ॳͷҹ৅͕ѱ͘ ͯΞϯΠϯετʔϧ͞ΕΔͱɺ͋ͱ͔Βͦͷҹ৅Λ෴͠ ͯ࠶Πϯετʔϧͯ͠΋Β͏ͷ͕೉͍͠ • ࠷ॳͷόʔδϣϯͷΫΦϦςΟ͸͔ͳΓେࣄʢPlayͷβ഑ ৴΍DeployGateͰ͸Ϧʔϯ։ൃ͢Δʹ͸ෆे෼ʣ

Slide 10

Slide 10 text

WebͱൺֱʹͳΒͳ͍ଟ༷ੑ • ϒϥ΢βͷଟ༷ੑ: platform x software • platform: Windows, MacOSX • software: IE7/8/9/10, Safari, Chrome • IEͰ͑͞ยखͰ਺͑ΒΕΔఔ౓ͷ਺ • ୺຤ͷଟ༷ੑ: platform x OS ver. x device • ୺຤ͷछྨ͕ଟ͗ͯ͢ɺϦϦʔεલʹ͢΂ͯͷ؀ڥͰಈ࡞ ֬ೝ͢Δͷ͸ෆՄೳ

Slide 11

Slide 11 text

! ໰୊͕͋ͬͨΒ ߈Ί͍͔ͯ͘͠ͳ͍

Slide 12

Slide 12 text

ϞόΠϧ։ൃϑϩʔͷ޻෉ • ໰୊͸͍͍ͩͨʮߴ඼࣭ͳΞϓϦέʔγϣϯΛϦϦʔε͢Δ೉ ͠͞ʯʹ͖ͭΔ • ܧଓతσϦόϦʔͳ؀ڥͰ͸ଘࡏ͠ͳ͍ɺ໌֬ͳίʔυϑ ϦʔζͱQAظؒΛઃ͚ͨ • AndroidΞϓϦͷ৔߹͸ݶఆެ։ػೳΛར༻ͯ͠க໋తͳ໰୊ ͷ͋Δόʔδϣϯͷ഑෍Λ࠷௿ݶʹ͢Δ • iOSΞϓϦͷ৔߹͸ϓϩϞίʔυʹΑΔ௚લͷࢼݧͰக໋తͳ όʔδϣϯͷ഑෍ͷՄೳੑΛݮΒ͢

Slide 13

Slide 13 text

ίʔυϑϦʔζ • Web։ൃ: github-flow • ։ൃϒϥϯν(master)ΛৗʹσϓϩΠՄೳʹอͭ • ΞϓϦ։ൃ: git-flow (a successful git branching model) • ։ൃϒϥϯν͔Βϒϥϯνϯάͯ͠CFͯ͠ϦϦʔεϒϥϯ νΛͭ͘ΓɺϦϦʔεϒϥϯνͰ͸ඞཁෆՄܽͳόάϑΟ ΫεҎ֎͸Ұ੾ߦΘͳ͍ • ͳ͓developϒϥϯν͸ͭ͘Βͳ͍

Slide 14

Slide 14 text

$PEF 'SFF[F 3$ 'FBUVSF GPS NBTUFS GFBUVSF SFMFBTF JNQPSUBOU CVHpY OFX GFBUVSF USJWJBM CVHpY

Slide 15

Slide 15 text

ݶఆެ։ • Google PlayͷػೳͰɺҰఆͷׂ߹ͷϢʔβʔ ʹ͚ͩΞοϓσʔτΛ഑৴Ͱ͖Δ • ࠷ॳʹ5%ϦϦʔε͢Δ͜ͱͰ • ͪ͜Βʹͱͬͯ͸5%Ͱ΋ʮ౰ͨΓʯΛҾ͍ͨ Ϣʔβʹͱͬͯ͸ͦΕ͕શͯͳͷͰɺ࠷ऴόʔ δϣϯͷͭ΋ΓͰग़͢ͷ͸લఏ

Slide 16

Slide 16 text

ϓϩϞίʔυ • ΞϓϦͷϨϏϡʔ͕௨ͬͨΒiTune connectͰ ϓϩϞίʔυΛ഑෍Ͱ͖Δ • ެ։લʹɺެ։൛ͷΞϓϦΛ೚ҙͷ୺຤ʹΠ ϯετʔϧͰ͖Δ • ࠷ऴνΣοΫͰ໰୊͕͓͖ͨΒ༰ࣻͳ͘ϦϦʔ εதࢭ

Slide 17

Slide 17 text

߈Ίͷ։ൃ؀ڥ

Slide 18

Slide 18 text

߈Ίͷ։ൃ؀ڥͮ͘Γ • ΞϓϦ։ൃ͕δϦශʹͳΔύλʔϯ • ΞϓϦ։ൃͰ͖Δϝϯόʔ͕গͳ͍ • ΞϓϦ։ൃνʔϜ͕ɺαʔϏε։ൃΛ͍ͯ͠Δ෦ ॺ͔ΒҎདྷΛ͏͚ͯΞϓϦΛͭ͘Δडୗ։ൃ૊৫ ʹͳͬͯ͠·͏ • ࣗಈԽ͕೉͍͠Օॴ͕ଟ͍ • ؾ߹Ͱख࡞ۀ͢Δ͜ͱʹ׳Εͯ͠·͏

Slide 19

Slide 19 text

औΓ૊Έ • ϞόΠϧΤϯδχΞΛ૿΍ͦ͏ʂ • ։ൃͷϊ΢ϋ΢Λڞ༗͠Α͏ʂ • ࣗಈԽ͠Α͏ʂ

Slide 20

Slide 20 text

ϞόΠϧΤϯδχΞΛ૿΍ͦ͏ʂ • τοϓμ΢ϯͷϞόΠϧϑΝʔετએݴ • ੵۃతʹϖΞϓϩ͠ͳ͕Βͷ৽ػೳ։ൃ • ϞόΠϧ։ൃ͸Web։ൃͱ͔ͳΓҧ͏ • ࠷ॳͷนΛ௒͑Δ·Ͱ͸ͱ͜ͱΜ෇͖߹͏ • ͜ͷ൒೥ͰϞόΠϧ։ൃΛܦݧͨ͠ΤϯδχΞ͸ ͍ͩͿ૿͑ͨ

Slide 21

Slide 21 text

։ൃϊ΢ϋ΢Λڞ༗͠Α͏ʂ • ڞ௨ϥΠϒϥϦΛ੔උͯ͠ϋΠεΩϧͳΤϯδχΞͷ੒Ռʹ͋ ͔ͣΔ • ࣾ಺ʹmaven repository΍cocoapods repositoryΛઃఆͯ͠ ϥΠϒϥϦΛ؅ཧ • ৘ใൃ৴Λ࢓૊ΈԽ͢Δ • potatotipsͱ͍͏ษڧձΛ࣮ࢪ • WEB+DB PRESS Vol81ʮAndroidΞϓϦ։ൃ࠷લઢʯΛدߘ

Slide 22

Slide 22 text

ࣗಈԽ͠Α͏ʂ • ϦϦʔεΤϯδχΞϦϯά͸࡞ۀྔ͕ଟ͍ • ଐਓԽ͸μϝɺઈର • ϦϦʔεϏϧυ͸JenkinsͰߦ͏ • Google Play Developer APIʢ·ͩಋೖͯ͠ͳ͍ʣ • apkΛplayʹΞοϓϩʔυ͢Δ • ΞϓϦͷઆ໌จ΍εΫγϣΛgit؅ཧ͢Δ

Slide 23

Slide 23 text

Q & A (1) • Q. ࣗಈςετ͸Ͳ͏ͯ͠Δʁ • A. ϞσϧͱϢʔςΟϦςΟ͸ଟগɻUIͷࣗಈς ετ͸͍ͯ͠ͳ͍͕ɺCIͰओཁͳը໘ͷεΫγϣ ΛࡱΔͷ͸΍Γ࢝Ί͍ͯΔ • Q. ϦϦʔεαΠΫϧ͸ʁ • A. iOS/Androidͱ΋ʹ2िؒʹҰ౓ͷϦϦʔε

Slide 24

Slide 24 text

Q & A (2) • Q. ίϛϡχέʔγϣϯͲ͏ͯ͠Δʁ • A. HipChat + github issuesɻgithub webhookͰrepo ΁ͷมߋΛHipChatʹ௨஌͢Δʢ಺ॹͰforce push͸Ͱ ͖ͳ͍ʂʣ • Q. CI͸ʁ • A. JenkinsΛ࢖ͬͯίϛοτ͝ͱʹjobΛ૸Βͤɺ੒Ռ෺Λ DeployGate/TestFlightͰ։ൃ൛Λ഑෍͍ͯ͠Δ

Slide 25

Slide 25 text

Q & A (3) • Q. υοάϑʔσΟϯάͲ͏ͯ͠Δʁ • A. Ͱ͖͍ͯͳ͍ɻ͍͍ํ๏͕͋ͬͨΒڭ͑ͯ΄ ͍͠ • Q. ͦΕͰɺࣾ಺डୗମ੍͸ղফͰ͖ͨͷ͔ • A. ·ͩ׬શʹ͸ղফͰ͖͍ͯͳ͍ɻ͍͍ํ๏͕ ͋ͬͨΒڭ͑ͯ΄͍͠

Slide 26

Slide 26 text

ؔ࿈ࢿྉ • Mobile First Development at COOKPAD 
 (2014/5/29) • rebuild.fm/45 (podcast)
 (2014/5/30) • AndroidΞϓϦͷϦϦʔεͯ͠·͔͢ 
 (2014/8/20)