Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
大公開! ZOZOTOWN iOSのコードレビューを覗きながらレビューの必要性を再確認しよう!...
Search
Saya Matsui
December 07, 2021
Programming
2
2.9k
大公開! ZOZOTOWN iOSのコードレビューを覗きながらレビューの必要性を再確認しよう! / Big reveal! Let's revisit the need for reviews with a peek into the ZOZOTOWN iOS code review!
ZOZO Tech Talk #2 - iOSでの登壇資料です。
Saya Matsui
December 07, 2021
Tweet
Share
Other Decks in Programming
See All in Programming
急成長期の品質とスピードを両立するフロントエンド技術基盤
soarteclab
0
810
nekko cloudにおけるProxmox VE利用事例
irumaru
2
160
DevTools extensions で 独自の DevTool を開発する | FlutterKaigi 2024
kokiyoshida
0
460
プロダクトの品質に コミットする / Commit to Product Quality
pekepek
2
710
rails statsで大解剖 🔍 “B/43流” のRailsの育て方を歴史とともに振り返ります
shoheimitani
2
720
CSC305 Lecture 25
javiergs
PRO
0
130
Symfony Mapper Component
soyuka
2
620
フロントエンドのディレクトリ構成どうしてる? Feature-Sliced Design 導入体験談
osakatechlab
8
3.8k
イマのCSSでできる インタラクション最前線 + CSS最新情報
clockmaker
5
3.9k
我々のデザインシステムは Chakra v3 にアップデートします
shunya078
2
3k
[JAWS-UG横浜 #76] イケてるアップデートを宇宙いち早く紹介するよ!
maroon1st
0
390
eBPF Deep Dive: Architecture and Safety Mechanisms
takehaya
12
1.3k
Featured
See All Featured
Docker and Python
trallard
41
3.1k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
44
9.3k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
44
6.9k
Art, The Web, and Tiny UX
lynnandtonic
298
20k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
330
21k
The MySQL Ecosystem @ GitHub 2015
samlambert
250
12k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
159
15k
The Art of Programming - Codeland 2020
erikaheidi
53
13k
Faster Mobile Websites
deanohume
305
30k
Designing on Purpose - Digital PM Summit 2013
jponch
116
7k
How GitHub (no longer) Works
holman
310
140k
Adopting Sorbet at Scale
ufuk
73
9.1k
Transcript
େެ։ʂ ZOZOTOWN iOSͷίʔυϨϏϡʔΛ͖ ͳ͕ΒϨϏϡʔͷඞཁੑΛ࠶֬ೝ͠Α͏ʂ גࣜձࣾZOZ O ZOZOTOWN։ൃຊ෦ ZOZOTOWNΞϓϦ෦ iOSϒϩοΫ Saya
Matsui Copyright © ZOZO, Inc.
© ZOZO, Inc. גࣜձࣾZOZO ZOZOTOWN։ൃຊ෦ ZOZOTOWNΞϓϦ෦ iOSϒϩοΫ দҪ ࠼ʢSaya Matsuiʣ
20207݄ʹೖࣾ ZOZOTOWN iOSΞϓϦͷ։ൃΛ୲ 2
© ZOZO, Inc. 3 talk topic
© ZOZO, Inc. ZOZOTOWN iOSͷPull RequestʢҎԼɺPRʣϨϏϡʔࣄͱ ະܦݧͰೖࣾͨ͠Θ͕ͨ͠ɺखް͍ϨϏϡʔચྱΛड͚ͳ͕Β 1ͰͲͷΑ͏ʹͨ͠ͷ͔Λ͓͠·͢ɻ 4
© ZOZO, Inc. Agenda 5 1. ZOZOTOWN iOSͷνʔϜମ੍ͱϨϏϡʔࣄ 2. Θͨ͠Λͤͨ͞PRϨϏϡʔ
3.PRΛग़͢ͱ͖ʹҙ͍ࣝͯ͠Δ͜ͱ 4.·ͱΊɿPRϨϏϡʔͷඞཁੑ
© ZOZO, Inc. 6 ZOZOTOWN iOS ͷ νʔϜମ੍ͱϨϏϡʔࣄ 01 CHAPTER
© ZOZO, Inc. 7 ຊ࣭վળɾPRඞਢϨϏϡϫʔ ZOZOTOWN iOS νʔϜମ੍ νʔϜϦʔμʔ ։ൃ
© ZOZO, Inc. 8 ຊ࣭վળɾPRඞਢϨϏϡϫʔ ػೳ։ൃɾෆ۩߹मਖ਼ ZOZOTOWN iOS νʔϜମ੍
© ZOZO, Inc. ٕज़ސɹ؛͞Μ 9
© ZOZO, Inc. PRϨϏϡʔΛͯ͠ΒͬͨΓ SlackͰٕज़తͳ࣭ʹ ͑ͯΒͬͨΓ͍ͯ͠·͢ʂ 10
© ZOZO, Inc. 11 શʹۀ୲͞Ε͍ͯΔͷʁ🤔 ඞਢϨϏϡϫʔ͕͍ͳ͍࣌ɺ։ൃࢭ·ΔΜͰ͔͢ʁ💥
© ZOZO, Inc. 12 ຊ࣭վળɾPRඞਢϨϏϡϫʔ ػೳ։ൃɾෆ۩߹मਖ਼ ZOZOTOWN iOS νʔϜମ੍
© ZOZO, Inc. ZOZOTOWN iOS ։ൃࣄ 13 ෳͷϓϩδΣΫτ͕ฒߦɺ ϒϥϯν͕ཚཱ͕ͪ͠ ͱ͋Δͷϒϥϯνঢ়گ
© ZOZO, Inc. 14 ࣮ͷҰ෦ΛݟΔࢹͱશମΛݟ௨͢ࢹҟͳΔ ϨϏϡʔʹूதͯ͠Β͏͜ͱͰಘΒΕΔϝϦοτ ࣭୲อ શମతͳυϝΠϯࣝΛ࣋ͭਓ͕ෳ͍Δ͜ͱͰɺ ଞͷը໘ͷӨڹൣғʹؾͮ͘͜ͱ͕Ͱ͖ΔͳͲ
࣭୲อʹܨ͕Δ ඞਢϨϏϡϫʔϨϏϡʔʹूதͰ͖ΔͨΊɺ ઃܭॻ͖ํͳͲΑΓྑ͍ํ๏Λࡉ͔͘ ݟΔ͜ͱ͕Ͱ͖ΔͷͰɺϨϏϡΠʔͷʹܨ͕Δ
© ZOZO, Inc. 15 Θͨ͠Λͤͨ͞PRϨϏϡʔ 02 CHAPTER
© ZOZO, Inc. 16 ීஈΒ͍ͬͯΔ ϨϏϡʔίϝϯτΛ େެ։͠·͢ʂ
© ZOZO, Inc. ೖࣾͯ͠͡Ίͯग़ͨ͠PRͷ͓ 17 ͓ मਖ਼diff ಛఆͷಈ࡞Λͨ࣌͠ʹૹΒΕΔΠϕϯτͷIDΛ͔Βจࣈྻʹมߋ͢Δ
© ZOZO, Inc. ೖࣾͯ͠͡Ίͯग़ͨ͠PRͷ͓ 18 ͓ मਖ਼diff ಛఆͷಈ࡞Λͨ࣌͠ʹૹΒΕΔΠϕϯτͷIDΛ͔Βจࣈྻʹมߋ͢Δ ͜ͷPRɺԿ݅ίϝϯτ͕ ͍ͭͨͱࢥ͍·͔͢ʁ
© ZOZO, Inc. thinking time!! 19
© ZOZO, Inc. 16݅ 20 ʘͨͬͨ1ߦमਖ਼ͳͷʹʂʁʗ
© ZOZO, Inc. 21 ͔͠1ͭ1ͭͷίϝϯτΊͬͪΌ͍Μʂ
© ZOZO, Inc. 22 ਤΛ༻͍ͨઆ໌׆ൃʹ͓͜ͳΘΕ͍ͯ·͢
© ZOZO, Inc. 23 վળޙ
© ZOZO, Inc. 24 1ؒͰग़ͨ͠ PRͷ ࢲͷPRʹ͍ͭͨ ૯ίϝϯτ PR1ݸʹ͖ͭ ฏۉίϝϯτ
Θͨ͠ͷ1ؒͷPRʹؔ͢ΔࣈΛݟͯΈΑ͏ʂ
© ZOZO, Inc. 25 1ؒͰग़ͨ͠ PRͷ 120 ࢲͷPRʹ͍ͭͨ ૯ίϝϯτ PR1ݸʹ͖ͭ
ฏۉίϝϯτ Θͨ͠ͷ1ؒͷPRʹؔ͢ΔࣈΛݟͯΈΑ͏ʂ
© ZOZO, Inc. 26 1ؒͰग़ͨ͠ PRͷ 120 1426 ࢲͷPRʹ͍ͭͨ ૯ίϝϯτ
PR1ݸʹ͖ͭ ฏۉίϝϯτ Θͨ͠ͷ1ؒͷPRʹؔ͢ΔࣈΛݟͯΈΑ͏ʂ
© ZOZO, Inc. 27 1ؒͰग़ͨ͠ PRͷ 120 1426 12 ࢲͷPRʹ͍ͭͨ
૯ίϝϯτ PR1ݸʹ͖ͭ ฏۉίϝϯτ Θͨ͠ͷ1ؒͷPRʹؔ͢ΔࣈΛݟͯΈΑ͏ʂ
© ZOZO, Inc. 28 ͜Ε·ͰΒͬͨίϝϯτͰ جຊ͚ͩͲͱͯେࣄͩͱࢥͬͨ ۩ମྫΛհ͠·͢ʂ
© ZOZO, Inc. 29 01. มؔͷ໊͚ͮ
© ZOZO, Inc. 30 ͓ ίʔσΟωʔτใΛAPI͔Βऔಘ͠ɺ CollectionViewʹදࣔͤ͞Δ
© ZOZO, Inc. Question!! 31
© ZOZO, Inc. 32 मਖ਼diff thinking time!!
© ZOZO, Inc. 33 ϨϏϡʔ
© ZOZO, Inc. 34 मਖ਼diff
© ZOZO, Inc. νϣοτσΩϧΑ͏ʹͳͬͨPoint 35 ɾฦΓͷͳ໋͍ྩతͳfuncಈࢺͰॻ͘ ɾରͷfuncΛ࡞Δ࣌ରশੑͷ͋ΔಈࢺΛ͏ ɾಉ͡Α͏ͳॲཧͷͱ͖पลίʔυͰͲΜͳ໊͚͕ͮ͞Ε͍ͯΔ͔֬ೝ͢Δ
© ZOZO, Inc. 36 02. Λߟ͑Δ
© ZOZO, Inc. 37 ͓ ΦϑϥΠϯঢ়ଶͰͷ ʮΧʔτʹೖΕΔʯϘλϯΛԡͨ࣌͠ɺ దͳΤϥʔΛදࣔͤ͞Δ
© ZOZO, Inc. Question!! 38
© ZOZO, Inc. 39 मਖ਼diff thinking time!!
© ZOZO, Inc. 40 मਖ਼diff
© ZOZO, Inc. 41 ϨϏϡʔ
© ZOZO, Inc. νϣοτσΩϧΑ͏ʹͳͬͨPoint 42 ɾׂΛཧղͯ͠దͳॴʹίʔυΛॻ͘ ɾPRΛग़͢લʹࣗͷॻ͍͍ͯΔίʔυ͕దͳॴʹॻ͔Ε͍ͯΔ͔ݕ౼͢Δ
© ZOZO, Inc. 43 03. ίʔυͷՄಡੑΛߴΊΔ
© ZOZO, Inc. 44 ͓ ΞΠςϜͷ͕حͷ߹ ۭനηϧΛදࣔ͢Δ Before After brandName
brandName Name brandName Name
© ZOZO, Inc. 45 طଘ࣮ goodsListͱ͍͏ม͕ใΛ͓࣋ͬͯΓɺ goodsListͷcountͰηϧ͕࡞ΒΕΔ࣮ʹͳ͍ͬͯͨ
© ZOZO, Inc. Question!! 46
© ZOZO, Inc. 47 मਖ਼diff goods͕nilͷ࣌emptyCellΛද͍ࣔͤͨ͞ͷͰɺ goodsΛΦϓγϣφϧʹ͠ɺisEmptyΛBoolͰදݱͰ͖ΔܕΛ࡞Γɺ ͦΕΛgoodsListͷܕʹͨ͠ goodsΛgoodͱλΠϙ͍ͯ͠Δ… thinking
time!!
© ZOZO, Inc. 48 ϨϏϡʔ
© ZOZO, Inc. 49 վળޙ enumΛͬͯgoods͕ଘࡏ͢Δঢ়ଶͳͷ͔ɺ emptyͷঢ়ଶͳͷ͔ΛΘ͔Γͨ͘͢͠
© ZOZO, Inc. νϣοτσΩϧΑ͏ʹͳͬͨPoint 50 ɾঢ়ଶͷཧʹؾΛ͚Δ ɾϩʔΧϧมͰྑ͍ͷΛϝϯόมʹ͠ͳ͍Α͏ʹ͢Δ ɾؔʹ໊͚ͭͨલҎ֎ͷॲཧΛͤ͞ͳ͍Α͏ʹ͢Δ ɾదͳίϝϯτΛੵۃతʹ͚ͭΔ
© ZOZO, Inc. 51 ͍·ͰɺޙഐͷPRϨϏϡʔΛ͢ΔͳͲ ͕ࣗڭ͑ͯΒ͖ͬͯͨ͜ͱΛؐݩ͍ͯ͠·͢
© ZOZO, Inc. 52 PRΛग़͢ͱ͖ʹҙ͍ࣝͯ͠Δ͜ͱ 03 CHAPTER
© ZOZO, Inc. ϨϏϡϫʔͷෛ୲Λܰݮ͢ΔͨΊʹɾɾɾ 53 ɾͲͷΑ͏ʹमਖ਼ͨ͠ͷ͔ɺͳͥͦͷमਖ਼Ҋʹͨ͠ͷ͔ ਤΛͬͯઆ໌͢ΔͱΘ͔Γ͍͢͜ͱ͋Δ ʢͱ͘ʹෳͷঢ়ଶύλʔϯ͕͋Δ߹ͳͲʣ
© ZOZO, Inc. ϨϏϡϫʔͷෛ୲Λܰݮ͢ΔͨΊʹɾɾɾ 54 ɾͲ͜ΛͲ͏͍͏෩ʹमਖ਼ͨ͠ͷ͔ɺͳͥͦͷ मਖ਼Ҋʹͨ͠ͷ͔ΛͳΔ͘ॻ͘Α͏ʹ͢Δ
© ZOZO, Inc. ϨϏϡϫʔͷෛ୲Λܰݮ͢ΔͨΊʹɾɾɾ 55 ɾमਖ਼ՕॴӨڹൣғΛύοͱݟͰΘ͔ΔΑ͏ʹ ɹ໌ࣔ͢Δ ʢνʔϜϝϯόʔ͔Βڭ͑ͯΒͬͨ͜ͱͷ1ͭͰ͢ʂʣ
© ZOZO, Inc. 56 ·ͱΊɿPRϨϏϡʔͷඞཁੑ 04 CHAPTER
© ZOZO, Inc. 57 ͜ΜͳʹϨϏϡʔΛ͔ͬ͠ΓΔͱɺ૿͑·͢ΑͶʁ🤔 ͦΕ͚ͩΛඅͯ͠େৎͳΜͰ͔͢ʁ⚠
© ZOZO, Inc. 58 ݟੵΓஈ֊ͰɺϨϏϡʔظؒΛؚΊͯΛࢉग़ ϦϦʔεʹରͯ͠ॊೈͳରԠ࣮ࢪ͍ͯ͠Δ ʢಈ࡞ʹ͕ͳ͘ɺίʔυͷॻ͖ํ͚ͩͷϨϏϡʔʹ͍ͭͯ λεΫΛ͚ͯϦϑΝΫλϦϯάͱͯ͠ޙͰରԠ͢ΔͳͲʣ
© ZOZO, Inc. PRϨϏϡʔͷඞཁੑ 59 • ϓϩμΫτͷ࣭୲อͷͨΊʹඞཁͰ͋Δ • ઃܭɺॻ͖ํ͕ΑΓྑ͍ͷʹͳΔ •
ϨϏϡʔ͢Δ͜ͱͰυϝΠϯ͕ࣝʹͭ͘ • ʹܨ͕Δ
None