ZOZOTOWNのこの11ヶ月の取り組み 〜大きなアプリを長く開発しつづけるために〜 / What's done in 11 months on ZOZOTOWN -keep developing the large app-

9bda8755a689204677a198ee85c0eb07?s=47 banjun
January 27, 2020

ZOZOTOWNのこの11ヶ月の取り組み 〜大きなアプリを長く開発しつづけるために〜 / What's done in 11 months on ZOZOTOWN -keep developing the large app-

iOS開発チームの特徴と開発方法を公開!
各社の現場iOSエンジニアが生の声をお届けします!https://sansan.connpass.com/event/158478/

ZOZOTOWNのiPhoneアプリがリリースされてから今年で10年になります。今なお私たちはこのアプリを開発しつづけていますが、アプリの歴史とは対照的に、日々プロジェクトにジョインしつづけている新しいメンバーが活躍しています。新しいメンバーで歴史ある大きなアプリの開発と改善の両方を進めていくためにどんな技術とマインドが必要でしょうか。私たちの取り組みをご紹介します。

9bda8755a689204677a198ee85c0eb07?s=128

banjun

January 27, 2020
Tweet

Transcript

  1. ;0;0508/ͷ͜ͷϲ݄ͷऔΓ૊Έ ʙେ͖ͳΞϓϦΛ௕͘։ൃ͚ͭͮ͠ΔͨΊʹʙ $PQZSJHIU˜;0;05FDIOPMPHJFT *OD ;0;0ςΫϊϩδʔζ ։ൃ෦εϖγϟϦετ ͹Μ͡ΎΜ!CBOKVO ʮJ04։ൃνʔϜͷಛ௃ͱ։ൃํ๏Λެ։ʂʯ!4BOTBOגࣜձࣾ

  2. Copyright © ZOZO Technologies, Inc. All Rights Reserved. ϓϩϑΟʔϧ ;0;0ςΫϊϩδʔζ

    ։ൃ෦εϖγϟϦετ ͹Μ͡ΎΜ!CBOKVO -PWF-JWFS NBD04  $SFBUF-JWF1IPUPTGSPN.PWJFT 'MJDL4,, J04  +BQBOFTF$VTUPN,FZCPBSE&YUFOTJPO ݸਓϓϩδΣΫτ
  3. ˜;0;05FDIOPMPHJFT *OD IUUQT[P[PKQ ˔ ೔ຊ࠷େڃͷϑΝογϣϯ௨ൢαΠτ ˔  Ҏ্ͷγϣοϓɺ Ҏ্ͷϒϥϯυͷऔΓѻ͍ʢͱ΋ʹ ೥݄຤࣌఺ʣ

    ˔ ৗ࣌ສ఺Ҏ্ͷ঎඼ΞΠςϜ਺ͱຖ೔ฏۉ ఺Ҏ্ͷ৽ண ঎඼Λܝࡌ ˔ ଈ೔഑ૹαʔϏε ˔ ΪϑτϥοϐϯάαʔϏε ˔ πέ෷͍ͳͲ 3
  4. ˜;0;05FDIOPMPHJFT *OD IUUQTXFBSKQ ˔ ೔ຊ࠷େڃͷϑΝογϣϯίʔσΟωʔτΞϓϦ ˔  ສμ΢ϯϩʔυಥഁɺίʔσΟωʔτ౤ߘ૯਺͸ສ݅Ҏ ্ʢͱ΋ʹ೥݄຤࣌఺ʣ ˔

    શੈքʢ"QQ4UPSF(PPHMF1MBZ͕ར༻ՄೳͳશͯͷࠃʣͰμ΢ ϯϩʔυ͕Մೳ ˔ ສਓҎ্ͷϑΥϩϫʔΛ࣋ͭϢʔβʔʢ8&"3*45"ʣ΋஀ੜ 4
  5. ˜;0;05FDIOPMPHJFT *OD IUUQT[P[PKQNVMUJTJ[F ˔ ਎௕ͱମॏΛબ୒͢Δ͚ͩͰཧ૝ͷαΠζͷ঎඼͕ݟ͔ͭΔ৽͍͠ ༸෰ͷങ͍ํ ˔ ;0;046*5Ͱಘͨສ݅Ҏ্ͷମܕσʔλΛ׆༻͠ɺʙα ΠζͷϚϧναΠζʢଟαΠζʣʹల։ ˔

    ೥ळౙΞΠςϜ͔ΒɺਓؾϒϥϯυͷϚϧναΠζΞΠςϜ Λൢച։࢝ ʲࢀՃاۀʳ ɹגࣜձࣾΞʔόϯϦαʔνɺגࣜձࣾετϥΠϓΠϯλʔφγϣφϧɺ ɹגࣜձࣾσΠτφɾΠϯλʔφγϣφϧɺגࣜձࣾύϧɺגࣜձࣾϏʔϜεɺ ɹגࣜձࣾϕΠΫϧʔζɺ."3,45:-&3גࣜձࣾɺϦʔόΠɾετϥ΢εδϟύϯגࣜձࣾɹɹ ͳͲ 5
  6. ˜;0;05FDIOPMPHJFT *OD 6

  7. Copyright © ZOZO Technologies, Inc. All Rights Reserved. ࠓ೔͓࿩͍ͨ͜͠͠ͱ ZOZOTOWN

    iOSνʔϜͬͯͲΜͳνʔϜʁͳʹΛ͍ͯ͠Δͷʁ ੲ͔Β͋ΔΞϓϦͷ೉͠͞ͱ͸ʁ ࠔ೉Λ৐Γӽ͑ͯਐา͢ΔͨΊͷऔΓ૊Έ ͋Γ͍ͨϚΠϯυ One more thing…
  8. Copyright © ZOZO Technologies, Inc. All Rights Reserved. ;0;0508/ͷJ04νʔϜ Կਓ͍ΔΜͰ͔͢ʁ

    Ͳ͜Ͱ։ൃ͍ͯ͠ΔΜͰ͔͢ʁ
  9. Copyright © ZOZO Technologies, Inc. All Rights Reserved. ;0;0508/ͷJ04νʔϜ 6ਓͰ։ൃ͍ͯ͠·͢

    ΈΜͳ੨ࢁΦϑΟεͰ͢ (͜ͷձ৔ͰΤϨϕʔλʔ߱Γͯ3F)
  10. Copyright © ZOZO Technologies, Inc. All Rights Reserved. ;0;0508/ͷJ04νʔϜ ͦΕͧΕͷ໾ׂ͸?

  11. Copyright © ZOZO Technologies, Inc. All Rights Reserved. ;0;0508/ͷJ04νʔϜ Ϧʔμʔ

    Ҋ݅։ൃ ຊ࣭վળ ٕज़ސ໰
  12. Copyright © ZOZO Technologies, Inc. All Rights Reserved. ;0;0508/ͷJ04νʔϜ Ϧʔμʔ

    Ҋ݅։ൃ ຊ࣭վળ ٕज़ސ໰
  13. Copyright © ZOZO Technologies, Inc. All Rights Reserved. νʔϜͷϙδγϣϯ J04ΞϓϦ

    ओʹ੨ࢁΦϑΟε ओʹນுΦϑΟε 4%, ඼࣭؅ཧ σβΠφʔ αʔόʔ Slack Θͨͨͪ͠ ZOZOSUIT ZOZOMAT ࣗಈςετ खಈςετ ֤νʔϜ VC
  14. Copyright © ZOZO Technologies, Inc. All Rights Reserved. ৽ϝϯόʔଓʑࢀՃ 2019೥2݄

    2019೥4݄ 2019೥7݄ ݱϝϯόʔ6ਓͷZOZOTOWNࢀՃ͸2019೥ ✨ ✨ ✨ ✨ ✨ ✨
  15. Copyright © ZOZO Technologies, Inc. All Rights Reserved. 2019೥2݄ 2019೥4݄

    2019೥7݄ ;0;0508/ͷ͜ͷϲ݄ͷऔΓ૊Έ ʙେ͖ͳΞϓϦΛ௕͘։ൃ͚ͭͮ͠ΔͨΊʹʙ 11ϲ݄ͱn೔ ΠϚίί
  16. Copyright © ZOZO Technologies, Inc. All Rights Reserved. ϓϩδΣΫτྺ࠷௕ϲ݄ େৎ෉ͳͷ͔ʁ

  17. Copyright © ZOZO Technologies, Inc. All Rights Reserved. ϓϩδΣΫτྺ࠷௕ϲ݄ େৎ෉ɺͰ͖ͯ·͢ʂ

  18. Copyright © ZOZO Technologies, Inc. All Rights Reserved. ೥ʙͷओཁϦϦʔε ɾɾɾͳͲ28ճόʔδϣϯΞοϓ⏫

  19. Copyright © ZOZO Technologies, Inc. All Rights Reserved. Ͱ΋ੲ͔Β͋ΔΞϓϦͬͯେม ྺ࢙తܦҢ͕ੵ·Ε͍ͯΔ

    ZOZOTOWNͷiPhoneΞϓϦ͸͍͔ͭΒ͋Δʁ
  20. Copyright © ZOZO Technologies, Inc. All Rights Reserved. ;0;0508/J1IPOFΞϓϦप೥

  21. Copyright © ZOZO Technologies, Inc. All Rights Reserved. ੲ͔Β͋ΔΞϓϦͬͯେม ྺ࢙తܦҢ͕ੵ·Ε͍ͯΔ

    υΩϡϝϯτͰ௥͑Δൣғʹ͸ݶք͕͋Δ ྺ࢙తܦҢ͕෼͔ΔਓΛ୳͢͜ͱ΋ … AndroidνʔϜ΍ଞͷνʔϜ
  22. Copyright © ZOZO Technologies, Inc. All Rights Reserved. ੲ͔Β͋ΔΞϓϦͬͯେม ৽ن։ൃʮ͜͜ͷ෦෼Ҏ֎͸طଘɺ·ͨ͸ଞͷը໘ͱಉ͡ײ͡Ͱʯ

    طଘ࢓༷͕ίʔυ͔ΒಡΈऔΓ͖Εͳ͍
 ෆ۩߹ใࠂ͸ʮ৺౰ͨΓ͕ͳ͍ʯ ৽ͨͳؾ࣋ͪͰ࠶ݱ֬ೝ ௚ͯ͠͠·ͬͯΑ͍ͷ͔ɾɾɾʁ΍͸Γίʔυ͔ΒಡΈऔΓ͖Εͳ͍ ౰࣌ͷελΠϧͰॻ͔Εͨίʔυɺ͍ΘΏΔϨΨγʔ
  23. Copyright © ZOZO Technologies, Inc. All Rights Reserved. ੲ͔Β͋ΔΞϓϦͷ೉͠͞ͱ͸ʁ υϝΠϯ஌ࣝෆ଍͕։ൃ଎౓ΛԼ͛Δ

    ϨΨγʔ͕։ൃ଎౓ΛԼ͛Δ
  24. Copyright © ZOZO Technologies, Inc. All Rights Reserved. ࠔ೉Λ৐Γӽ͑ͯਐา͢ΔͨΊͷऔΓ૊Έ Ҋ݅։ൃͱϨϏϡʔମ੍

    ϨΨγʔ΁ͷٕज़తΞϓϩʔν: ͜Μͳ͜ͱ͕͋Γ·ͨ͠ औΓ૊Έ ࣾ಺ษڧձ
  25. Copyright © ZOZO Technologies, Inc. All Rights Reserved. Ҋ݅։ൃͱϨϏϡʔ ඞਢϨϏϡΞʔ

    ։ൃ&PR ✅ ✅ ✅ Approveඞਢ ϐΞϨϏϡʔ Ҋ݅ͷػೳ։ൃ
  26. Copyright © ZOZO Technologies, Inc. All Rights Reserved. υϝΠϯֶशϊ΢ϋ΢ڞ༗ ଟਓ਺ͷPRϨϏϡʔʹΑΓɺ৽نҊ݅΍վम͕νʔϜ಺ͰίʔυϨϕϧͰڞ༗͞ΕΔ

    ඼࣭֬อͱͱ΋ʹɺυϝΠϯͷֶश΋Ͱ͖Δ શһ͕ͭΒ͞Λ஌͍ͬͯΔ͔Βͦ͜ɺίϝϯτ΍࢓༷΁ͷϦϯΫɺνʔϜؒͰ༻ޠΛ ἧ͑ΔʮZOZOTOWN༻ޠूʯ׆༻͕ੵۃతʹߦͳΘΕΔΑ͏ʹ ϖΞϓϩ΋औΓೖΕͯΈΑ͏͔ͳɾɾɾͱ໛ࡧத
  27. Copyright © ZOZO Technologies, Inc. All Rights Reserved. ϨΨγʔ΁ͷٕज़తͳΞϓϩʔν ର৅Λ෼ׂͯ͠ӨڹൣғΛௐ੔Մೳʹ͢Δ

    ͍΋ͮΔࣜʹͳΓ΍͍͢ ʮશ෦·ͱΊͯ࠷༏ઌʯʹͤͣ੾அΛߟ͑Δ յ͞ͳ͍Α͏ʹஔ͖׵͑Δ σάϨ͠ʹ͍͘΍Γํɾ֬ೝ͠΍͍͢΍Γํ
  28. Copyright © ZOZO Technologies, Inc. All Rights Reserved. ϨΨγʔ΁ͷٕज़తͳΞϓϩʔν ͜Μͳ͜ͱ͕͋Γ·ͨ͠

     objcͷSwiftԽ & Swift཰΢Υον SwiftҠߦͷେ͖ͳ࡞ۀͷobjcϥϯλΠϜΛར༻ͨ͠෼ׂ DangerͰϨϏϡʔෛՙ௿ݮ ϦϦʔεଐਓੑͷഉআ εφοϓγϣοτςετͰσβΠϯอ࣋ͯ͠ϦϑΝΫλ UIςετͰৼ෣͍อ࣋ͯ͠ύϑΥʔϚϯεվળ ཭୤͍ͯ͘͠΂͖ಠࣗϥΠϒϥϦͷ੩తղੳ ࢖Θͳ͍Α͏ʹ͍ͨ͠ϝιου΁ͷwarning෇༩ & ݺͼग़͠਺ܭଌ
  29. Copyright © ZOZO Technologies, Inc. All Rights Reserved. ϨΨγʔ΁ͷٕज़తͳΞϓϩʔν ͜Μͳ͜ͱ͕͋Γ·ͨ͠

     objcͷSwiftԽ & Swift཰΢Υον SwiftҠߦͷେ͖ͳ࡞ۀͷobjcϥϯλΠϜΛར༻ͨ͠෼ׂ DangerͰϨϏϡʔෛՙ௿ݮ ϦϦʔεଐਓੑͷഉআ εφοϓγϣοτςετͰσβΠϯอ࣋ͯ͠ϦϑΝΫλ → ςοΫϒϩάग़͠·ͨ͠ UIςετͰৼ෣͍อ࣋ͯ͠ύϑΥʔϚϯεվળ ཭୤͍ͯ͘͠΂͖ಠࣗϥΠϒϥϦͷ੩తղੳ ࢖Θͳ͍Α͏ʹ͍ͨ͠ϝιου΁ͷwarning෇༩ & ݺͼग़͠਺ܭଌ
  30. Copyright © ZOZO Technologies, Inc. All Rights Reserved. ϨΨγʔ΁ͷٕज़తͳΞϓϩʔν ͜Μͳ͜ͱ͕͋Γ·ͨ͠

     objcͷSwiftԽ & Swift཰΢Υον SwiftҠߦͷେ͖ͳ࡞ۀͷobjcϥϯλΠϜΛར༻ͨ͠෼ׂ DangerͰϨϏϡʔෛՙ௿ݮ ϦϦʔεଐਓੑͷഉআ εφοϓγϣοτςετͰσβΠϯอ࣋ͯ͠ϦϑΝΫλ UIςετͰৼ෣͍อ࣋ͯ͠ύϑΥʔϚϯεվળ ཭୤͍ͯ͘͠΂͖ಠࣗϥΠϒϥϦͷ੩తղੳ ࢖Θͳ͍Α͏ʹ͍ͨ͠ϝιου΁ͷwarning෇༩ & ݺͼग़͠਺ܭଌ
  31. Copyright © ZOZO Technologies, Inc. All Rights Reserved. 4XJGUҠߦͷେ͖ͳ࡞ۀͷPCKDϥϯλΠϜΛ ར༻ͨ͠෼ׂ

    (ཪٕͰ΋ͳ͍͕) objcͷৼ෣͍Λ஌ͬͯར༻͢Δ͚ͩͰɺ
 Ұ౓ͷ࡞ۀྔ(=Ϗϧυ͕௨Δ୯Ґͱ͔ɺPR͢Δ୯Ґ)͕ௐ੔ՄೳʹͳΔ ͜Μͳͱ͖ʹ࢖͑Δ: αϚʔΠϯλʔϯͰ࣮ࢪͨ͠ྫ 300ߦ+300ߦ+600ߦͷ3αϒΫϥεΛࣄલʹશSwiftԽ͢Δ͜ͱͳ͘ɺڞ ௨ͷεʔύʔΫϥεΛSwiftԽͰ͖ͨ
  32. Copyright © ZOZO Technologies, Inc. All Rights Reserved. 4XJGUҠߦͷେ͖ͳ࡞ۀͷPCKDϥϯλΠϜΛ ར༻ͨ͠෼ׂ

    Ҡߦର৅ͷobjc class (interface + ϝιου) interfaceΛSwift classʹҠߦ ϝιου͸มߋͤͣɺSwift classͷΧςΰϦͱ͢Δ getter/setterͳͲͷϛεϚονʹͳΔՕॴΛNSObjectΧςΰϦ(ඇܗࣜ ϓϩτίϧ)ʹಀ͕͢
  33. Copyright © ZOZO Technologies, Inc. All Rights Reserved. ϨΨγʔ΁ͷٕज़తͳΞϓϩʔν ͜Μͳ͜ͱ͕͋Γ·ͨ͠

     objcͷSwiftԽ & Swift཰΢Υον SwiftҠߦͷେ͖ͳ࡞ۀͷobjcϥϯλΠϜΛར༻ͨ͠෼ׂ DangerͰϨϏϡʔෛՙ௿ݮ ϦϦʔεଐਓੑͷഉআ εφοϓγϣοτςετͰσβΠϯอ࣋ͯ͠ϦϑΝΫλ UIςετͰৼ෣͍อ࣋ͯ͠ύϑΥʔϚϯεվળ ཭୤͍ͯ͘͠΂͖ಠࣗϥΠϒϥϦͷ੩తղੳ ࢖Θͳ͍Α͏ʹ͍ͨ͠ϝιου΁ͷwarning෇༩ & ݺͼग़͠਺ܭଌ
  34. Copyright © ZOZO Technologies, Inc. All Rights Reserved. ࢖Θͳ͍Α͏ʹ͍ͨ͠ϝιου΁ͷXBSOJOH ෇༩ݺͼग़͠਺ܭଌ

    ʮಠࣗϥΠϒϥϦͷ͜ͷपลͷϝιου͸ҙਤ௨Γಈ͔ͳ͍࢖͍ ͔ͨΛ͠΍͍͔͢Βɺࠓޙ͸ͳΔ΂͘࢖Θͳ͍Α͏ʹ͍ͯ͜͠ ͏ʯ Ͱ΋طଘίʔυΛϚω࣮ͯ૷͢Δͱ͏͔ͬΓ࢖ͬͯ͠·͍͕ͪ deprecated warningΛ෇༩ͯ͠ݺͼՕॴΛݟΔ & ͲΕ͘Β͍ ࢖͍ͬͯΔ͔਺͑Δ
  35. Copyright © ZOZO Technologies, Inc. All Rights Reserved. ࢖Θͳ͍Α͏ʹ͍ͨ͠ϝιου΁ͷXBSOJOH ෇༩ݺͼग़͠਺ܭଌ

    Swift͔ΒobjcͷݺͼͰ΋__attribute__Λ׆༻Ͱ͖Δ xcodebuildͰwarningΛܭଌͯ͠ɺݺͼϑΝΠϧɾݺ͹Εϝ ιου͝ͱʹूܭͰ͖Δ Xcode্ͰදࣔͰ͖Δͱҙ͔ࣝΒ֎Εʹ͘͘ͳΔ ݱঢ়ͷվળ଎౓͔ΒରࡦΛܭըͰ͖Δ
  36. Copyright © ZOZO Technologies, Inc. All Rights Reserved. ࣾ಺ษڧձ ։ൃʹ΋վળʹ΋޿͍஌ݟ͕ඞཁͳͷͰɺνʔϜ֎ɾࣾ֎ͷϝϯ

    όʔͱͱ΋ʹɺ֤छͷձΛ݄1Ͱ։࠵͍ͯ͠·͢ iOSΤϯδχΞͰٕज़ڞ༗͢Δձ ٕज़ސ໰ͷ؛઒͞Μ΋ σβΠφʔͱUIΛֶͿձ ඼࣭؅ཧνʔϜͱςετΛֶͿձ
  37. Copyright © ZOZO Technologies, Inc. All Rights Reserved. վળ͸ΰʔϧͰ͸ͳ͘ϓϩηε ϨΨγʔΛ౗͢͜ͱࣗମ͸໨తͰ͸ͳ͍

    ʮϨΨγʔΛશͯ౗͢ͱͲ͏ͳΔʁʯ ച্֦େͷͨΊͷҊ݅։ൃΛαϙʔτ͚ͭͮ͠Δ ։ൃ଎౓ΛԼ͛ΔཁҼ͸আ͘ඞཁ͕͋Δ ࠓޙ΋ܧଓͯ͠։ൃ͍͚ͯ͠Δඞཁ͕͋Δ
  38. Copyright © ZOZO Technologies, Inc. All Rights Reserved. ։ൃͱվળͷϚΠϯυ ೔ৗతʹ҆ఆతʹϦϑΝΫλ

    վળࡇΓʹ͠ͳ͍ɾϦιʔεΛεύΠΫͤ͞ͳ͍ ٕज़ͷྲྀߦ͚ͩΛΈͳ͍ɾٕज़ͷಋೖΛ໨తʹ͠ͳ͍ ࣗ෼ͨͪͷίʔυϕʔε͸·ͩଟ਺೿ͱ཭Ε͍ͯΔ͔΋͠Ε ͳ͍ͱ͍͏؍఺Λ΋ͭ
  39. Copyright © ZOZO Technologies, Inc. All Rights Reserved. +PJOVT ΍Γ͍ͨ͜ͱ΍վળλεΫ͸ͨ͘͞Μ͋Γ·͢

    ͍ͭͰ΋։ൃͱվળͷλεΫ͕͋Δঢ়ଶͰ͓଴͓ͪͯ͠Γ·͢
  40. Copyright © ZOZO Technologies, Inc. All Rights Reserved. 5IBOL:PV and

    one more thing…