DevLOVE現場甲子園2014 東日本大会 http://devlove.doorkeeper.jp/events/11792 の発表資料です。
߈ΊͷϞόΠϧΞϓϦ։ൃFuji, Goro (@__gfx__)#devloveٕ 4ճද ʢඈͼೖΓࢀՃʣ2014/08/23
View Slide
ࣗݾհ• ౻ ޗ (gfx)• CookpadͷϞόΠϧΤϯδχΞ(iOS/Android)• ϥΠϒϥϦ։ൃ։ൃڥඋɾࣗಈԽͳͲ• background: C/C++, Perl, JavaScript (LLଟΊ)• ߈Ίͷ։ൃڥɾମ੍ͮ͘ΓΛ͍͖͍ͯͨ͠
– Fuji, Goro (#devloveٕ, 2014)“ʮ߈Ίʯͱɺݱঢ়ҡ࣋ʹྲྀ͞ΕΔؾ࣋ͪʹཱ͔ͪ͏ҙࢤͰ͋Δ”
߈Ίͷ։ൃϫʔΫϑϩʔ
Web։ൃݱͷ͋Δ1γʔϯ• ܧଓతσϦόϦʔ࠷ߴʂCI͋Δ͔Β࠷ݶͷ࣭อূͰ͖Δ͠ɺ͋ͬͨΒϩʔϧόοΫ͢Ε͍ΑͶʂ• ϦʔϯελʔτΞοϓ࠷ߴʂMVP͔ΒͷվྑͰάΠάΠՁΛ͔ͨΊͯ͜㽉㽉
Q. ϞόΠϧΞϓϦಉ͡ϊϦͰ࡞ΕΔʁ
A. ແཧ
ܧଓσϦόϦʔͰ͖ͳ͍• ςετ͕WebΞϓϦͱൺֱͯ͘͠͠CIͰࣗಈͰςετͰ͖Δൣғ͕ڱ͍• Ξοϓσʔτͷڧ੍͕͍͠ɻ͋ΒΏΔόʔδϣϯࢢʹΓଓ͚ΔʢϢʔβʔͷυϩοϓΛ֮ޛ͢ΔͳΒڧ੍ΞοϓσʔτΛଅ͢͜ͱͰ͖Δ͕…ʣ• submit͔Β৴·Ͱ࣌ؒ(Play)͔Βिؒ(AppStore)͔͔Δ
MVP͔ΒҭͯΔͷ͍͠• ϚʔέςΟϯάతʹϓϥοτϑΥʔϜετΞͷϨϏϡʔ͕ͱͯॏཁͰɺΫΦϦςΟͷ͍όʔδϣϯ͕ΞϓϦࣗମͷΛҾͬுΔʢGoogle Playʣ• Πϯετʔϧͷϋʔυϧ͕ߴ͍ͨΊɺ࠷ॳͷҹ͕ѱͯ͘ΞϯΠϯετʔϧ͞ΕΔͱɺ͋ͱ͔ΒͦͷҹΛ෴ͯ͠࠶Πϯετʔϧͯ͠Β͏ͷ͕͍͠• ࠷ॳͷόʔδϣϯͷΫΦϦςΟ͔ͳΓେࣄʢPlayͷβ৴DeployGateͰϦʔϯ։ൃ͢Δʹෆेʣ
WebͱൺֱʹͳΒͳ͍ଟ༷ੑ• ϒϥβͷଟ༷ੑ: platform x software• platform: Windows, MacOSX• software: IE7/8/9/10, Safari, Chrome• IEͰ͑͞ยखͰ͑ΒΕΔఔͷ• ͷଟ༷ੑ: platform x OS ver. x device• ͷछྨ͕ଟ͗ͯ͢ɺϦϦʔεલʹͯ͢ͷڥͰಈ࡞֬ೝ͢ΔͷෆՄೳ
!͕͋ͬͨΒ߈Ί͍͔ͯ͘͠ͳ͍
ϞόΠϧ։ൃϑϩʔͷ• ͍͍ͩͨʮߴ࣭ͳΞϓϦέʔγϣϯΛϦϦʔε͢Δ͠͞ʯʹ͖ͭΔ• ܧଓతσϦόϦʔͳڥͰଘࡏ͠ͳ͍ɺ໌֬ͳίʔυϑϦʔζͱQAظؒΛઃ͚ͨ• AndroidΞϓϦͷ߹ݶఆެ։ػೳΛར༻ͯ͠க໋తͳͷ͋ΔόʔδϣϯͷΛ࠷ݶʹ͢Δ• iOSΞϓϦͷ߹ϓϩϞίʔυʹΑΔલͷࢼݧͰக໋తͳόʔδϣϯͷͷՄೳੑΛݮΒ͢
ίʔυϑϦʔζ• Web։ൃ: github-flow• ։ൃϒϥϯν(master)ΛৗʹσϓϩΠՄೳʹอͭ• ΞϓϦ։ൃ: git-flow (a successful git branching model)• ։ൃϒϥϯν͔Βϒϥϯνϯάͯ͠CFͯ͠ϦϦʔεϒϥϯνΛͭ͘ΓɺϦϦʔεϒϥϯνͰඞཁෆՄܽͳόάϑΟΫεҎ֎ҰߦΘͳ͍• ͳ͓developϒϥϯνͭ͘Βͳ͍
$PEF'SFF[F3$'FBUVSFGPSNBTUFSGFBUVSFSFMFBTFJNQPSUBOUCVHpYOFXGFBUVSFUSJWJBMCVHpY
ݶఆެ։• Google PlayͷػೳͰɺҰఆͷׂ߹ͷϢʔβʔʹ͚ͩΞοϓσʔτΛ৴Ͱ͖Δ• ࠷ॳʹ5%ϦϦʔε͢Δ͜ͱͰ• ͪ͜Βʹͱͬͯ5%ͰʮͨΓʯΛҾ͍ͨϢʔβʹͱͬͯͦΕ͕શͯͳͷͰɺ࠷ऴόʔδϣϯͷͭΓͰग़͢ͷલఏ
ϓϩϞίʔυ• ΞϓϦͷϨϏϡʔ͕௨ͬͨΒiTune connectͰϓϩϞίʔυΛͰ͖Δ• ެ։લʹɺެ։൛ͷΞϓϦΛҙͷʹΠϯετʔϧͰ͖Δ• ࠷ऴνΣοΫͰ͕͓͖ͨΒ༰ࣻͳ͘ϦϦʔεதࢭ
߈Ίͷ։ൃڥ
߈Ίͷ։ൃڥͮ͘Γ• ΞϓϦ։ൃ͕δϦශʹͳΔύλʔϯ• ΞϓϦ։ൃͰ͖Δϝϯόʔ͕গͳ͍• ΞϓϦ։ൃνʔϜ͕ɺαʔϏε։ൃΛ͍ͯ͠Δ෦ॺ͔ΒҎདྷΛ͏͚ͯΞϓϦΛͭ͘Δडୗ։ൃ৫ʹͳͬͯ͠·͏• ࣗಈԽ͕͍͠Օॴ͕ଟ͍• ؾ߹Ͱख࡞ۀ͢Δ͜ͱʹ׳Εͯ͠·͏
औΓΈ• ϞόΠϧΤϯδχΞΛ૿ͦ͏ʂ• ։ൃͷϊϋΛڞ༗͠Α͏ʂ• ࣗಈԽ͠Α͏ʂ
ϞόΠϧΤϯδχΞΛ૿ͦ͏ʂ• τοϓμϯͷϞόΠϧϑΝʔετએݴ• ੵۃతʹϖΞϓϩ͠ͳ͕Βͷ৽ػೳ։ൃ• ϞόΠϧ։ൃWeb։ൃͱ͔ͳΓҧ͏• ࠷ॳͷนΛ͑Δ·Ͱͱ͜ͱΜ͖߹͏• ͜ͷͰϞόΠϧ։ൃΛܦݧͨ͠ΤϯδχΞ͍ͩͿ૿͑ͨ
։ൃϊϋΛڞ༗͠Α͏ʂ• ڞ௨ϥΠϒϥϦΛඋͯ͠ϋΠεΩϧͳΤϯδχΞͷՌʹ͔͋ͣΔ• ࣾʹmaven repositorycocoapods repositoryΛઃఆͯ͠ϥΠϒϥϦΛཧ• ใൃ৴ΛΈԽ͢Δ• potatotipsͱ͍͏ษڧձΛ࣮ࢪ• WEB+DB PRESS Vol81ʮAndroidΞϓϦ։ൃ࠷લઢʯΛدߘ
ࣗಈԽ͠Α͏ʂ• ϦϦʔεΤϯδχΞϦϯά࡞ۀྔ͕ଟ͍• ଐਓԽμϝɺઈର• ϦϦʔεϏϧυJenkinsͰߦ͏• Google Play Developer APIʢ·ͩಋೖͯ͠ͳ͍ʣ• apkΛplayʹΞοϓϩʔυ͢Δ• ΞϓϦͷઆ໌จεΫγϣΛgitཧ͢Δ
Q & A (1)• Q. ࣗಈςετͲ͏ͯ͠Δʁ• A. ϞσϧͱϢʔςΟϦςΟଟগɻUIͷࣗಈςετ͍ͯ͠ͳ͍͕ɺCIͰओཁͳը໘ͷεΫγϣΛࡱΔͷΓ࢝Ί͍ͯΔ• Q. ϦϦʔεαΠΫϧʁ• A. iOS/Androidͱʹ2िؒʹҰͷϦϦʔε
Q & A (2)• Q. ίϛϡχέʔγϣϯͲ͏ͯ͠Δʁ• A. HipChat + github issuesɻgithub webhookͰrepoͷมߋΛHipChatʹ௨͢ΔʢॹͰforce pushͰ͖ͳ͍ʂʣ• Q. CIʁ• A. JenkinsΛͬͯίϛοτ͝ͱʹjobΛΒͤɺՌΛDeployGate/TestFlightͰ։ൃ൛Λ͍ͯ͠Δ
Q & A (3)• Q. υοάϑʔσΟϯάͲ͏ͯ͠Δʁ• A. Ͱ͖͍ͯͳ͍ɻ͍͍ํ๏͕͋ͬͨΒڭ͑ͯ΄͍͠• Q. ͦΕͰɺࣾडୗମ੍ղফͰ͖ͨͷ͔• A. ·ͩશʹղফͰ͖͍ͯͳ͍ɻ͍͍ํ๏͕͋ͬͨΒڭ͑ͯ΄͍͠
ؔ࿈ࢿྉ• Mobile First Development at COOKPAD (2014/5/29)• rebuild.fm/45 (podcast) (2014/5/30)• AndroidΞϓϦͷϦϦʔεͯ͠·͔͢ (2014/8/20)