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
Why Jakarta EE Matters to Spring - and Vice Versa
ivargrimstad
0
820
as(型アサーション)を書く前にできること
marokanatani
4
1k
初めてDefinitelyTypedにPRを出した話
syumai
0
250
ピラミッド、アイスクリームコーン、SMURF: 自動テストの最適バランスを求めて / Pyramid Ice-Cream-Cone and SMURF
twada
PRO
10
1.2k
ふかぼれ!CSSセレクターモジュール / Fukabore! CSS Selectors Module
petamoriken
0
150
推し活の ハイトラフィックに立ち向かう Railsとアーキテクチャ - Kaigi on Rails 2024
falcon8823
6
2.8k
リアーキテクチャxDDD 1年間の取り組みと進化
hsawaji
1
200
Amazon Bedrock Agentsを用いてアプリ開発してみた!
har1101
0
320
Jakarta EE meets AI
ivargrimstad
0
360
プロジェクト新規参入者のリードタイム短縮の観点から見る、品質の高いコードとアーキテクチャを保つメリット
d_endo
1
1.1k
Nurturing OpenJDK distribution: Eclipse Temurin Success History and plan
ivargrimstad
0
650
よくできたテンプレート言語として TypeScript + JSX を利用する試み / Using TypeScript + JSX outside of Web Frontend #TSKaigiKansai
izumin5210
3
1.1k
Featured
See All Featured
Stop Working from a Prison Cell
hatefulcrawdad
267
20k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
232
17k
The Cost Of JavaScript in 2023
addyosmani
45
6.7k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
665
120k
4 Signs Your Business is Dying
shpigford
180
21k
No one is an island. Learnings from fostering a developers community.
thoeni
19
3k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
33
1.8k
Fashionably flexible responsive web design (full day workshop)
malarkey
405
65k
How STYLIGHT went responsive
nonsquared
95
5.2k
Making Projects Easy
brettharned
115
5.9k
Fontdeck: Realign not Redesign
paulrobertlloyd
82
5.2k
Optimising Largest Contentful Paint
csswizardry
33
2.9k
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