Slide 1

Slide 1 text

Swift Concurrency࣌୅ͷ
 ϦΞΫςΟϒϓϩάϥϛϯάͷجૅཧղ iOSDC Japan 2022 גࣜձࣾZOZO ςοΫϦʔυ ͹Μ͡ΎΜ! / @banjun Copyright © ZOZO, Inc.

Slide 2

Slide 2 text

© ZOZO, Inc. 2 גࣜձࣾZOZO ςοΫϦʔυ ZOZOTOWN iOS ͹Μ͡ΎΜ! / @banjun -PWF-JWFS NBD04 $SFBUF-JWF1IPUPTGSPN.PWJFT 'MJDL4,, J04 +BQBOFTF$VTUPN,FZCPBSE&YUFOTJPO ݸਓϓϩδΣΫτɾ1PEDBTU ͖ͷ͜ΔΤϑΤϜX!USFCZ͖ͷ͜Δ

Slide 3

Slide 3 text

© ZOZO, Inc. https://zozo.jp/ 3 ● ϑΝογϣϯEC ● 1,500Ҏ্ͷγϣοϓɺ8,500Ҏ্ͷϒϥϯυͷऔΓѻ͍ ● ৗ࣌90ສ఺Ҏ্ͷ঎඼ΞΠςϜ਺ͱຖ೔ฏۉ2,600఺Ҏ্ͷ৽ண
 ঎඼Λܝࡌʢ2022೥6݄຤࣌఺ʣ ● ϒϥϯυݹணͷϑΝογϣϯκʔϯʮZOZOUSEDʯ΍ ίεϝઐ໳ϞʔϧʮZOZOCOSMEʯɺۺͷઐ໳Ϟʔϧ ʮZOZOSHOESʯɺϥάδϡΞϦʔˍσβΠφʔζκʔϯ ʮZOZOVILLAʯΛల։ ● ଈ೔഑ૹαʔϏε ● ΪϑτϥοϐϯάαʔϏε ● πέ෷͍ ͳͲ

Slide 4

Slide 4 text

© ZOZO, Inc.

Slide 5

Slide 5 text

جૅγϦʔζ΁Α͏ͦ͜

Slide 6

Slide 6 text

© ZOZO, Inc. 6 جૅγϦʔζ΁Α͏ͦ͜ ʮجૅʯͬͯ "ͳΜ͔؆୯ͦ͏ͩ͠ྑͦ͞͏ #ͳΜ͔ාͦ͏

Slide 7

Slide 7 text

© ZOZO, Inc. 7 جૅγϦʔζ΁Α͏ͦ͜ ;0;0Ͱ͸ʮجૅʯʮΑ͘Θ͔Δʯ γϦʔζͷࣾ಺ษڧձΛ΍ͬͯ·͢ $ϓϩμΫτͷण໋͸ϥΠϒϥϦ ΍ύϥμΠϜͷण໋ΑΓ௕͍ %ৗʹਖ਼ղͷʮٕज़બఆʯ͕͋Δ Θ͚͡Όͳ͍

Slide 8

Slide 8 text

جૅ Ԡ༻ Ԡ༻ Ԡ༻ Ԡ ༻

Slide 9

Slide 9 text

Ԡ༻ Ԡ༻ Ԡ༻ Ԡ ༻ جૅ جૅ جૅ جૅ جૅ جૅ جૅ جૅ جૅ جૅ

Slide 10

Slide 10 text

جૅ جૅ جૅ جૅ جૅ جૅ جૅ جૅ جૅ جૅ Ԡ༻ Ԡ༻ Ԡ༻ Ԡ ༻

Slide 11

Slide 11 text

ࠓ೔͸ ϦΞΫςΟϒϓϩάϥϛϯά(RP) ͱ Swift Concurrency

Slide 12

Slide 12 text

© ZOZO, Inc. 12 ࣌୅എܠͱղܾ͍ͨ͠՝୊ 4XJGUͰJ04ΞϓϦΛॻ͚ΔΑ͏ʹͳͬͨ ઃܭύλʔϯ͕ྲྀߦΓɺ31 ϦΞΫςΟϒϓϩάϥϛϯά ΋ ྲྀߦͬͨ 4XJGU6*ͱ$PNCJOF͕ग़ͨ 4XJGU$PODVSSFODZ͕ग़ͨ Θͨͨͪ͠͸Ͳ͜΁޲͔͑͹͍͍ͷ͔ʁ    

Slide 13

Slide 13 text

© ZOZO, Inc. 13 ϦΞΫςΟϒϓϩάϥϛϯά(RP)ͱ
 Swift Concurrency 4XJGU$PODVSSFODZ ϦΞΫςΟϒϓϩάϥϛϯά ඇಉظϓϩάϥϛϯά σʔλετϦʔϜ ϥΠϒϥϦͰ͋Δ ݴޠͰ͋Δ ʮ͍ΘΏΔRPʯΛ ࣮ݱ͍ͨ͠ ฒߦॲཧΛ࣮ݱ͍ͨ͠ ڞ௨఺

Slide 14

Slide 14 text

© ZOZO, Inc. 14 ʮ͍ΘΏΔRPʯ ※͝஫ҙ 31ͷࢦ͢΋ͷ͸ॾઆ͋ΔͷͰɺ͜ͷεϥΠυͰ͸ɺΈͳ͞Μ͕J04 ΞϓϦΛ࡞Δͷʹ࢖͏Α͏ͳ΋ͷΛʮ͍ΘΏΔ31ʯ·ͨ͸୯ʹ ʮ31ʯͱݴ͍·͢ɻ ͍ΘΏΔRP ϦΞΫςΟϒϓϩάϥϛϯά (ҰൠͷRPؚΉ) FRP ଞͷRP Functional Reactive Programming iOSΞϓϦΛ࡞Δͱ͖ʹ ࢖͏RP αʔόαΠυ Ϋϥ΢υ ͱ͔

Slide 15

Slide 15 text

© ZOZO, Inc. 15 ʮ͍ΘΏΔRPʯ ※͝஫ҙ ͍ΘΏΔ31Ͱ͸ɺ6*͕ͦ͜31Λ࢖͏ཧ༝ͷத৺ͱͳΔͱ͍͏ಛ௃͕ ͋Δ ͜ΕΒΛܨ͙ &6* &ωοτϫʔΫ &ଞʹ΋ɺηϯαʔɾΧϝϥɾपลػثͳͲͳͲ

Slide 16

Slide 16 text

RPͱपลͷؔ࿈ͷ੔ཧ & ݱঢ়ͱաڈͷ͢Γ͋Θͤ

Slide 17

Slide 17 text

© ZOZO, Inc. 17 RPؔ࿈ਤ ......ྩ࿨4೥࠷৽൛(งғؾ) struct, class, var, didSet, closure, property wrapper, … Swiftجຊػೳ async/await, AsyncStream, … Swift Concurrency swift-async-algorithms, AsyncChannel, … ඇಉظϓϩάϥϛϯά ReactiveSwift RxSwift Combine + UIͷΞμϓλ RPϥΠϒϥϦ ·ͩͳ͍? RPϥΠϒϥϦ (iOSΞϓϦ޲͚) RP (Ұൠ) ͍ΘΏΔϦΞΫςΟϒϓϩάϥϛϯά RP (iOSΞϓϦ)

Slide 18

Slide 18 text

© ZOZO, Inc. 18 RPؔ࿈ਤ ......Swift ConcurrencyҎલ struct, class, var, didSet, closure, property wrapper, … Swiftجຊػೳ ඇಉظϓϩάϥϛϯά ReactiveSwift, RxSwift, Combine + UIͷΞμϓλ RPϥΠϒϥϦ RP (iOSΞϓϦ) RPϥΠϒϥϦΛඇಉظ༻్Ͱ ࢖͍ͬͯΔέʔε ͨͩͷඇಉظ completion handlerͱ͔ ͍ΘΏΔϦΞΫςΟϒϓϩάϥϛϯά MVVMͷܨ͗ͱ͔ completionͱdidSetͰܨ͍Ͱ΋޿ٛͷRP͔΋...?

Slide 19

Slide 19 text

© ZOZO, Inc. 19 RPؔ࿈ਤ ......Swift ConcurrencyҎ߱Ͳ͏ม͑Δ͔ struct, class, var, didSet, closure, property wrapper, … Swiftجຊػೳ async/await, AsyncStream, … Swift Concurrency ඇಉظϓϩάϥϛϯά ReactiveSwift, RxSwift, Combine + UIͷΞμϓλ RPϥΠϒϥϦ RP (iOSΞϓϦ) RPϥΠϒϥϦΛඇಉظ༻్Ͱ ࢖͍ͬͯΔέʔε ͨͩͷඇಉظ ͍ΘΏΔϦΞΫςΟϒϓϩάϥϛϯά MVVMͷܨ͗ͱ͔ async/awaitͱdidSetͰܨ͍Ͱ΋޿ٛͷRP͔΋...? Swift ConcurrencyΛ ࢖ͬͨ΄͏͕ ྑͦ͞͏ ͦͷ·· RPϥΠϒϥϦΛ ࢖͏ͱྑͦ͞͏

Slide 20

Slide 20 text

© ZOZO, Inc. 20 struct, class, var, didSet, closure, property wrapper, … Swiftجຊػೳ async/await, AsyncStream, … Swift Concurrency ඇಉظϓϩάϥϛϯά ReactiveSwift, RxSwift, Combine + UIͷΞμϓλ RPϥΠϒϥϦ RP (iOSΞϓϦ) RPϥΠϒϥϦΛඇಉظ༻్Ͱ ࢖͍ͬͯΔέʔε ͨͩͷඇಉظ ͍ΘΏΔϦΞΫςΟϒϓϩάϥϛϯά MVVMͷܨ͗ͱ͔ async/awaitͱdidSetͰܨ͍Ͱ΋޿ٛͷRP͔΋...? Swift ConcurrencyΛ ࢖ͬͨ΄͏͕ ྑͦ͞͏ ͦͷ·· RPϥΠϒϥϦΛ ࢖͏ͱྑͦ͞͏ ͍ΘΏΔRPͷ෦෼΁

Slide 21

Slide 21 text

UIͱσʔλϑϩʔ

Slide 22

Slide 22 text

© ZOZO, Inc. 22 σʔλϑϩʔ 31Ͱ͸6*ΛؚΉσʔλϑϩʔΛ੩తʹهड़ ͢Δͷ͕໨త ྫӈͷؔ܎Λ੩తʹهड़͍ͨ͠ 31ͷͳ͍4XJGUͰ͸ɺʮ͜ΕΛ࠶ܭࢉ͢ Δʯ໋ྩจ͕ඞཁ ੩తʹॻ͚ͳ͍ ͜ͷྫ: https://reactivecocoa.io/philosophy.html in in out A = B + C var a: Int var b: Int { didSet { a = b + c } } var c: Int { didSet { a = b + c } }

Slide 23

Slide 23 text

© ZOZO, Inc. 23 ໋ྩతͱ͔એݴతͱ͔ એݴతͷྨٛޠ ੩త ͦΕͬΆ͍ྫ "VUP-BZPVU $PEBCMFͰ"1* ϦΞΫςΟϒϓϩάϥϛϯά ໋ྩతͷྨٛޠ ಈతɾखଓత ͦΕͬΆ͍ྫ खಈϨΠΞ΢τv.frame = ... ࣙॻऔΓग़͠Ͱ"1*d["id"] = 42 खͰσʔλߋ৽updateState(); updateUI()

Slide 24

Slide 24 text

© ZOZO, Inc. એݴతͷྨٛޠ ੩త ͦΕͬΆ͍ྫ "VUP-BZPVU $PEBCMFͰ"1* ϦΞΫςΟϒϓϩάϥϛϯά ໋ྩతͷྨٛޠ ಈతɾखଓత ͦΕͬΆ͍ྫ खಈϨΠΞ΢τv.frame = ... ࣙॻऔΓग़͠Ͱ"1*d["id"] = 42 खͰσʔλߋ৽updateState(); updateUI() 24 ઐ໳ಛԽ ඼࣭Αͦ͞͏ ͦΕͧΕษڧ͠ͳ͍ͱग़དྷͳ͍ ͠͹͠͹ʮΉ͍ͣʯͱ͞ΕΔ ͍ͭͰ΋ྗٕͰॻ͚Δ ॲཧൈ͚Ͱෆ۩߹ग़ͦ͏ ଞͷݴޠ͔͠஌Βͳͯ͘΋ษڧ͠ͳ͘ ͯ΋ͳΜͱ͔ॻ͚ͦ͏ ʮ࢓༷ɾઃܭʯʹ͍ۙهड़ ʮ࢓༷ɾઃܭʯΛ໋ྩʹ຋༁͢Δ ͍͔ʹ΋ͳϓϩάϥϛϯάͷ͓͠͝ͱ ໋ྩతͱ͔એݴతͱ͔

Slide 25

Slide 25 text

© ZOZO, Inc. એݴతͷྨٛޠ ੩త ͦΕͬΆ͍ྫ "VUP-BZPVU $PEBCMFͰ"1* ϦΞΫςΟϒϓϩάϥϛϯά ໋ྩతͷྨٛޠ ಈతɾखଓత ͦΕͬΆ͍ྫ खಈϨΠΞ΢τv.frame = ... ࣙॻऔΓग़͠Ͱ"1*d["id"] = 42 खͰσʔλߋ৽updateState(); updateUI() 25 ઐ໳ಛԽ ඼࣭Αͦ͞͏ ͦΕͧΕษڧ͠ͳ͍ͱग़དྷͳ͍ ͠͹͠͹ʮΉ͍ͣʯͱ͞ΕΔ ͍ͭͰ΋ྗٕͰॻ͚Δ ॲཧൈ͚Ͱෆ۩߹ग़ͦ͏ ଞͷݴޠ͔͠஌Βͳͯ͘΋ษڧ͠ͳ͘ ͯ΋ͳΜͱ͔ॻ͚ͦ͏ ʮ࢓༷ɾઃܭʯʹ͍ۙهड़ ʮ࢓༷ɾઃܭʯΛ໋ྩʹ຋༁͢Δ ͍͔ʹ΋ͳϓϩάϥϛϯάͷ͓͠͝ͱ ໋ྩతͱ͔એݴతͱ͔

Slide 26

Slide 26 text

© ZOZO, Inc. એݴతͷྨٛޠ ੩త ͦΕͬΆ͍ྫ "VUP-BZPVU $PEBCMFͰ"1* ϦΞΫςΟϒϓϩάϥϛϯά ໋ྩతͷྨٛޠ ಈతɾखଓత ͦΕͬΆ͍ྫ खಈϨΠΞ΢τv.frame = ... ࣙॻऔΓग़͠Ͱ"1*d["id"] = 42 खͰσʔλߋ৽updateState(); updateUI() 26 ઐ໳ಛԽ ඼࣭Αͦ͞͏ ͦΕͧΕษڧ͠ͳ͍ͱग़དྷͳ͍ ͠͹͠͹ʮΉ͍ͣʯͱ͞ΕΔ ͍ͭͰ΋ྗٕͰॻ͚Δ ॲཧൈ͚Ͱෆ۩߹ग़ͦ͏ ଞͷݴޠ͔͠஌Βͳͯ͘΋ษڧ͠ͳ͘ ͯ΋ͳΜͱ͔ॻ͚ͦ͏ ʮ࢓༷ɾઃܭʯʹ͍ۙهड़ ʮ࢓༷ɾઃܭʯΛ໋ྩʹ຋༁͢Δ ͍͔ʹ΋ͳϓϩάϥϛϯάͷ͓͠͝ͱ ໋ྩతͱ͔એݴతͱ͔

Slide 27

Slide 27 text

© ZOZO, Inc. એݴతͷྨٛޠ ੩త ͦΕͬΆ͍ྫ "VUP-BZPVU $PEBCMFͰ"1* ϦΞΫςΟϒϓϩάϥϛϯά ໋ྩతͷྨٛޠ ಈతɾखଓత ͦΕͬΆ͍ྫ खಈϨΠΞ΢τv.frame = ... ࣙॻऔΓग़͠Ͱ"1*d["id"] = 42 खͰσʔλߋ৽updateState(); updateUI() 27 ઐ໳ಛԽ ඼࣭Αͦ͞͏ ͦΕͧΕษڧ͠ͳ͍ͱग़དྷͳ͍ ͠͹͠͹ʮΉ͍ͣʯͱ͞ΕΔ ͍ͭͰ΋ྗٕͰॻ͚Δ ॲཧൈ͚Ͱෆ۩߹ग़ͦ͏ ଞͷݴޠ͔͠஌Βͳͯ͘΋ษڧ͠ͳ͘ ͯ΋ͳΜͱ͔ॻ͚ͦ͏ ʮ࢓༷ɾઃܭʯʹ͍ۙهड़ ʮ࢓༷ɾઃܭʯΛ໋ྩʹ຋༁͢Δ ͍͔ʹ΋ͳϓϩάϥϛϯάͷ͓͠͝ͱ ໋ྩతͱ͔એݴతͱ͔

Slide 28

Slide 28 text

© ZOZO, Inc. 28 σʔλϑϩʔ A = B + C C B A + in in out ͪͳΈʹσʔλϑϩʔͷਤͱ͍͏ͱ ԼͷΑ͏ͳײ͡ ͜ͷྫ: https://reactivecocoa.io/philosophy.html

Slide 29

Slide 29 text

© ZOZO, Inc. 29 σʔλͷശ + ઀ଓͷ໼ҹ C B A + ʮม਺ͱ͸ശͰ͋ΔʯശΛܨ͍ͩ΋ͷ͕ σʔλϑϩʔͰ͋Γ31 ͨͩ͠σʔλϑϩʔͷശ͸ɺ มߋ఻೻ͷػೳΛ΋ͭ͜ͱ MutableProperty BehaviorRelay CurrentValueSubject @Published ֤ϥΠϒϥϦͰͷʮശʯ

Slide 30

Slide 30 text

© ZOZO, Inc. 30 σʔλͷശ + ઀ଓͷ໼ҹ C B A + map flatMap filter combineLatest : ശͱശͷ઀ଓ͸໼ҹ ্ྲྀɾԼྲྀ͕͋Δ  ʮΦϖϨʔλʔʯͱݺ͹ΕΔ ֤ϥΠϒϥϦͰͷʮ໼ҹʯ

Slide 31

Slide 31 text

© ZOZO, Inc. 31 σʔλͷശ + ઀ଓͷ໼ҹ ઀ଓͷ໼ҹ͸ඇಉظͰ΋Α͍ɻ࣌ؒతͳॲཧΛͯ͠΋Α͍ɻ ෭࡞༻Λ࣮ߦͯ͠΋Α͍ɻ ͜Ε͕31ϥΠϒϥϦͷ࣮૷Λ࢖͏ͱศརͩͱΑ͘ݴΘΕΔ෦෼ debounce throttle : ୹͍࣌ؒʹͨ͘͞ΜมԽͯ͠΋ ճ͚ͩ఻͑Δɺͱ͔ ֤ϥΠϒϥϦͰɺ࣌ؒͰ ؒҾ͖͢Δʮ໼ҹʯ

Slide 32

Slide 32 text

© ZOZO, Inc. ؅ཧ͢΂͖ঢ়ଶ͸ͲΕ͚ͩ͋Δ͔ ͦΕΛശʹ͢Δ ঢ়ଶ͕มΘͬͨͱ͖ɺശ͔Βശ΁఻೻͢΂͖͔ ͦΕΛ໼ҹʹ͢Δ σʔλϑϩʔͷ֎͔ΒมߋͰ͖Δശ͸  σʔλϑϩʔͷ֎΁Өڹ͢Δശ͸  มߋ఻೻͕͋Δ͚ͩͰɺϝϯόม਺ͷઃܭͱมΘΒͳ͍ Ұ࣌ม਺΋Ұ࣌తͳശ΋ϝϯόʹ࣋ͨͳ͍͍ͯ͘ 32 σʔλϑϩʔΛઃܭ͢Δ

Slide 33

Slide 33 text

© ZOZO, Inc. ߏ଄తʹ֎ଆ͔ΒΈΔͱγϯϓϧʹΈ͑Δ 33 σʔλϑϩʔΛઃܭ͢Δ

Slide 34

Slide 34 text

© ZOZO, Inc. 34 UIͱͷ઀ଓ(ೖޱɾग़ޱ) *#"DUJPOͰड໋͚ͯྩతʹೖྗB.value = text 6*ΞμϓλͰശ૬౰ͷ΋ͷ͕͋ΔB = fieldB.reactive.textValues B A PCTFSWF TVCTDSJCF TJOL໋ͯ͠ྩతʹग़ྗlabelA.text = $0 6*ΞμϓλͰശ૬౰ͷ΋ͷ͕͋ΔlabelA.reactive.text <~ A σʔλϑϩʔͷ֎ͱ͸໋ྩతʹ΍ΓͱΓ͢Δ͔ɺϥΠϒϥϦʹ༻ҙ͞Ε ͍ͯΔ6*ΞμϓλΛ࢖ͬͯσʔλϑϩʔͷҰ෦ͱͯ͠઀ଓ͢Δ

Slide 35

Slide 35 text

© ZOZO, Inc. APIϨεϙϯε ετϦʔϛϯά payload 35 UIҎ֎ͷೖޱɾग़ޱ 6*ʹ௚͍݁ͯ͠ͳ͍ΠϕϯτΛೖޱ΍ग़ޱͱ͢Δ͜ͱ͸͋Δ ηϯαʔ஋ ݕࡧςΩετ ೖޱ ηϯαʔ J#FBDPOΛݕ஌ͨ͠ͱ͔ɺͳΜͰ΋ ωοτϫʔΫ ݕࡧςΩετ͕มߋ͞ΕͨΒ"1*ϦΫΤετ ग़ޱ

Slide 36

Slide 36 text

© ZOZO, Inc. ֤ϥΠϒϥϦͰͷʮശ૬౰ʯ 36 RPͰσʔλϑϩʔʹ઀ଓͰ͖Δ ͦͷଞͷϞϊ جຊతͳσʔλϑϩʔΛ֦ுͯ͠͞Βʹߴ౓ʹ Ͱ͖ΔϞϊ͕֤31ϥΠϒϥϦͰ༻ҙ͞Ε͍ͯΔ લड़ͷʮശ૬౰ͷ΋ͷʯͳͲ APIϨεϙϯε ετϦʔϛϯά payload ηϯαʔ஋ Signal SignalProducer Observable Publisher

Slide 37

Slide 37 text

Swift Concurrency͔? RP͔?

Slide 38

Slide 38 text

© ZOZO, Inc. 38 ͍ΘΏΔඇಉظϓϩάϥϛϯάͷ෦෼͸ɺ ঃʑʹ4XJGU$PODVSSFODZʹ͍ͯ͘͠ͱγϯϓϧ Swift Concurrency͔? RP͔? ඇಉظϓϩάϥϛϯά RPϥΠϒϥϦΛඇಉظ༻్Ͱ ࢖͍ͬͯΔέʔε ͨͩͷඇಉظ Swift ConcurrencyΛ ࢖ͬͨ΄͏͕ ྑͦ͞͏ σʔλϑϩʔͰܨ͗͜ΊΔͱ͜Ζ͸ɺ31Λ࢖͏ 6*΍ωοτϫʔΫͱͷ઀ଓ͸ࠓޙ΋ඞཁ

Slide 39

Slide 39 text

© ZOZO, Inc. 39 RPؔ࿈ਤ ......࠶ܝʂ͓͞Β͍͠Α͏ struct, class, var, didSet, closure, property wrapper, … Swiftجຊػೳ async/await, AsyncStream, … Swift Concurrency ඇಉظϓϩάϥϛϯά ReactiveSwift, RxSwift, Combine + UIͷΞμϓλ RPϥΠϒϥϦ RP (iOSΞϓϦ) RPϥΠϒϥϦΛඇಉظ༻్Ͱ ࢖͍ͬͯΔέʔε ͨͩͷඇಉظ ͍ΘΏΔϦΞΫςΟϒϓϩάϥϛϯά MVVMͷܨ͗ͱ͔ async/awaitͱdidSetͰܨ͍Ͱ΋޿ٛͷRP͔΋...? Swift ConcurrencyΛ ࢖ͬͨ΄͏͕ ྑͦ͞͏ ͦͷ·· RPϥΠϒϥϦΛ ࢖͏ͱྑͦ͞͏

Slide 40

Slide 40 text

© ZOZO, Inc. 40 ͍ΘΏΔඇಉظϓϩάϥϛϯάͱݴ͍ͬͯΔ͕ ྫ͑͹͜͏͍͏ͱ͜Ζ "1*ίʔϧݸ Ұ࿈ͷBTZODGVODΛϩʔΧϧͰ·ͱΊ͍ͨ Swift Concurrency͔? RP͔? func f() async -> T { let a = await fa() let b = await fb(a) return b } func request() async -> Response

Slide 41

Slide 41 text

© ZOZO, Inc. 41 31Λ࢖͏ͱ͜Ζ͸ɺঢ়ଶมԽ͕͋Γɺঢ়ଶΛܨ͍ͰσʔλϑϩʔΛ ઃܭͰ͖Δͱ͜Ζ ྫ͑͹͜͏͍͏ͱ͜Ζ ϩʔΧϧείʔϓΛӽ͑ͯ7$΍7.ͷϝϯόม਺ͱͯ͠อ࣋͞ΕΔ ঢ়ଶ͕͋Γɺঢ়ଶؒʹ఻೻͕͋Δ ͍͔ͭ͘ͷঢ়ଶ͸6*΍ωοτ ϫʔΫʹΑΓมԽ͢Δ Swift Concurrency͔? RP͔?

Slide 42

Slide 42 text

͓ΘΓʹ

Slide 43

Slide 43 text

© ZOZO, Inc. 43 ͜Μͳ;͏ʹཧղͯ͠΋Β͑ͯͨΒ خ͍͠Ͱ͢ ࢲ͕ͨͪ࢖͖ͬͯͨʮ͍ΘΏΔ31ʯͷཱͪҐஔ͕Θ͔ͬͨʂ ΋΍ͬͱͯͨ͠4XJGU$PODVSSFODZ΍ඇಉظͱ31ͱͷҧ͍͕ϋοΩϦͨ͠ʂ جૅΛ͓͑͞Δ͜ͱͰɺܧଓతʹϓϩμΫτΛ੒௕ͤ͞Δྗʹ͠Α͏ͱࢥͬͨʂ ΋ͬͱ஌Γ͍ͨʂڭ͑ͯ΄͍͠ʂ

Slide 44

Slide 44 text

No content