Upgrade to Pro — share decks privately, control downloads, hide ads and more …

モバイルアプリ開発の "標準"を探る #CookpadTechConf

Avatar for FUJI Goro FUJI Goro
January 23, 2016

モバイルアプリ開発の "標準"を探る #CookpadTechConf

Avatar for FUJI Goro

FUJI Goro

January 23, 2016
Tweet

More Decks by FUJI Goro

Other Decks in Technology

Transcript

  1. ͸͡Ίʹ • ໊લ • FUJI Goro (GitHub: gfx, Twitter: @__gfx__)

    • ෦ॺ • ٕज़෦ ϞόΠϧ։ൃج൫ • ۙگ • Ϛάωοτגࣜձࣾʹग़޲தʢ2015೥9݄~ʣ
  2. ϞόΠϧ୺຤͔ΒͷΞΫηεͷ಺༁ • PC vs εϚϗ • ΞΧ΢ϯτ࣋ͪϢʔβ͸ʮεϚϗͷΈʯ͕8ׂ • ήετϢʔβͷ͏ͪʮεϚϗʯ͸7ׂ •

    ΞϓϦ vs ΢Σϒ • ΞΧ΢ϯτ࣋ͪϢʔβ͸ʮΞϓϦͷΈʯ͕6ׂ • ήετϢʔβͷ͏ͪʮΞϓϦʯ͸1ׂ
  3. ͜͜Ͱ͍͏ʮ৽ٕज़ʯͱ͸ • ϓϩάϥϛϯάݴޠʢe.g. Swiftʣ • ϑϨʔϜϫʔΫ΍ϥΠϒϥϦʢe.g. RxJavaʣ • ϓϩτίϧʢe.g. HTTP/2ʣ

    • σʔλϑΥʔϚοτʢe.g. WebPʣ • ΞʔΩςΫνϟʢe.g. MVVM, Clean Architectureʣ • ͦͷଞιϑτ΢ΣΞɾαʔϏε
  4. ಋೖࡁΈɾݕ౼தͷٕज़ • ಋೖࡁΈ • WebP, Shared Web Credentials, Smart Lock

    for Passwords, Retrolambda, Dokumi, Pull-Request Builder • ݕ౼த • Swift, Kotlin, fastlane, Issue Tracking System, CI as a Service (Travis, CircleCI)
  5. ྫ4XJGU • 2015೥12݄ʹOSSԽ͞ΕͨiOS༻ͷϓϩάϥϛϯάݴޠ • ৽نͰ͸SwiftΛ࢖ͬͨΞϓϦ΋͋Γ • طଘͷObjective-CΛॻ͖׵͑Δͷ͸Ұྫ͚ͩ͋Γ • Global Cookpad

    iOS app • SwiftͷӨڹͰ࣮૷͞ΕͨObjective-Cͷ৽ػೳ͸ੵۃతʹ ࢖͍ͬͯ͘ํ਑ʢͨͱ͑͹δΣωϦΫεʣ • AppleʹΑΓະདྷ͕໿ଋ͞Ε͍ͯΔ
  6. ྫ,PUMJO • JetBrainsࣾͷ։ൃ͢ΔJVM༻ͷϓϩάϥϛϯάݴޠ • Android༻ͷϓϩάϥϛϯάݴޠͱͯ͠஫໨͞Ε͍ͯΔ • ߏจ͸ (Java + Swift)

    / 2 ͱ͍ͬͨͱ͜Ζ • ݴޠ࢓༷͸͔ͳΓΑ͘IDEͷαϙʔτ΋े෼ • ϥΠϯλΠϜͷϑοτϓϦϯτ΋1MBఔ౓ͱখ͞Ί • Javaͷࢿ࢈Λͦͷ··࢖͑ͯίʔυྔ͸JavaΑΓগͳ͍ • ͨͩ͜ΕʹΑͬͯʮԿΛղܾ͢Δͷ͔ʯ͸͸͖ͬΓͱ͠ͳ͍
  7. ϞόΠϧΞϓϦͷಛ௃ʢʣ • ࣮ߦ؀ڥΛ੍ޚ͢Δ͜ͱ΋Ͱ͖ͳ͍ • ୺຤ͷεϖοΫ / OSͷόʔδϣϯ / ௨৴؀ڥ͸· ͪ·ͪ

    • ΢ΣϒΞϓϦΑΓ΋ࣦഊ͕ॏ͘ςετ΋೉͍͠ • ςετίʔυ΋΢ΣϒΞϓϦΑΓॻ͘ͷ͕೉͍͠ • ίʔυϨϏϡʔɾCIɾQAͳͲͷ඼࣭؅ཧ͕ॏཁ
  8. $*+FOLJOT NVMUJTMBWFT • Android͸Linux/EC2 • iOS͸Mac࣮ػ • Travis CI, Circle

    CIͳͲ΋ݕ౼͕ͨ͠ະಋೖ • ίετʹରͯͦ͜͠·Ͱར఺͕ͳ͍ͱ͍͏൑அ • ؀ڥΛ੍ޚ͠΍͍͢ͱ͍͏ར఺Λͱ͍ͬͯΔ
  9. "OESPJE$*Ϛγϯ ςετσόΠεͷมભ 1. EC2 + emulator 2. Macbook ProʢiOS CIͱಉ͡Ϛγϯʣ

    + ࣮ػ୺຤ 3. ϋΠεϖοΫLinuxϚγϯ + ࣮ػ୺຤ • εέʔϧΞοϓͰͦͦ͜͜շద 4. EC2 + emulator • ؆୯ʹεέʔϧΞ΢τͰ͖ΔΑ͏ʹͨ͠ • ϨΠςϯγΑΓ΋εϧʔϓοτΛͱͬͨ݁Ռ
  10. 1VMM3FRVFTU#VJMEFS͕ߦ͏͜ͱ • Pull-Request Builder (+Dokumi) • ςετΛ࣮ߦͯ͠PRʹࣦഊϝοηʔδΛϙετ • ੩తղੳΛ࣮ߦͯ͠PRͷ֘౰ՕॴʹϝοηʔδΛϙετ •

    ػցʹίʔυϨϏϡʔͤͯ͞ਓͷෛ୲ΛݮΒ͢ • ΞϓϦύοέʔδΛϏϧυʢapk, ipaʣ • ΞϓϦύοέʔδΛDeployGateʹΞοϓϩʔυ • ΤϯδχΞҎ֎Ͱ΋։ൃதͷ৽ػೳΛࢼ͠΍͘͢
  11. 6OJU5FTU2" • ςετΤϯδχΞ2ਓମ੍ • 2ਓڞίʔυΛॻ͚Δ • ςετίʔυ͸ϓϥοτϑΥʔϜ͝ͱͷඪ४ςετϑϨʔ ϜϫʔΫʢAndroid JUnit4, XCTestʣ

    • ։ൃऀ΋ॻ͘͠ɺςετΤϯδχΞ΋ॻ͘ • Appium΍಺੡πʔϧʹΑΔࣗಈԽ͞Εͨςετ΍ɺख࡞ ۀʹΑΔςετ΋࣮ࢪ
  12. "1*ίʔϧ͸ೝূ͕௨Δ·Ͱ଴ͭ w w • ͜ͷ଴ͪ߹Θͤʹ Object#wait() Λ࢖͍ͬͯͨ • -assumenosideeffects class

    Log { <methods>; } ͸Ϋϥε ֊૚ΛḪͬͯద༻͞ΕΔ • LogΫϥεͷεʔύʔΫϥεͰ͋ΔObjectΫϥεͷશϝ ιου͕෭࡞༻ͳ͠ͱղऍ͞ΕΔʂ • ͜ͷΑ͏ͳܦҢͰ Object#wait() ͷݺͼग़͕͠όΠτίʔ υ͔Β࡟আ͞Ε͍ͯͨ…