Slide 1

Slide 1 text

΄ΜͷҰॠ͚ͩͰ΋
 Concurrencyͷܭࢉཧ࿦ʹ৮ΕͯΈ·ͤΜ͔ʁ iOSDC Japan 2021 גࣜձࣾZOZOςΫϊϩδʔζ ςοΫϦʔυ ͹Μ͡ΎΜ🍓 / @banjun Copyright © ZOZO Technologies, Inc.

Slide 2

Slide 2 text

Swift Concurrency 🎉 🎉 🎉🎊

Slide 3

Slide 3 text

© ZOZO Technologies, Inc. 3 Swift Concurrency?????? Ͱ΋ͳΜ͔ඇಉظͬͯଊ͑Ͳ͜Ζ͕ͳͯ͘೉͍͠ҹ৅͋Δ… Concurrency = ඇಉظ 
 ͚ͩͬʁ ҙ֎ͱ 
 ؾΛ෇͚Δ͜ͱ͕ଟ͍? ϦϑΝΫλͱ͔ 
 ίʔυϨϏϡʔͱ͔ 
 Ͳ͏͠Α͏

Slide 4

Slide 4 text

େࣄͳͷ͸ Swift ConcurrencyͷػೳΛֶͼ ࢖͍͖ͬͯཧղΛਂΊ͍ͯ͘͜ͱ Ͱ͸͋Δ͕…

Slide 5

Slide 5 text

© ZOZO Technologies, Inc. 5 Swiftͦͷ΋ͷͰ͸ͳ͘… ۩ମతͳจ๏ ۩ମతͳίʔυΛॻ͘ΤϯδχΞ Concurrency ීஈͷϓϩάϥϛϯά

Slide 6

Slide 6 text

© ZOZO Technologies, Inc. 6 Swiftͦͷ΋ͷͰ͸ͳ͘…
 ผͷ֯౓͔ΒConcurrencyΛݟͯΈΔ ۩ମతͳจ๏ ۩ମతͳίʔυΛॻ͘ΤϯδχΞ ܭࢉཧ࿦ɾܗࣜख๏ ந৅తͳϞσϧ ந৅తͳϞσϧ্ͷϩδοΫ Concurrency ීஈͷϓϩάϥϛϯά ྫࣔ ʰCCSʱ ֓೦తͳੈք

Slide 7

Slide 7 text

© ZOZO Technologies, Inc. 7 ͘͘͢͢͝͝େࡶ೺ͳ۠ผͰ͍͏ͱ… ඇಉظ͕ಉ࣌ʹಈ͍ͯΔΠϝʔδ ීஈͷϓϩάϥϛϯά ֓೦తͳੈք ՄೳੑΛ
 ਺্͑͛Δ 1εςοϓͣͭ֬ೝ͢Δ

Slide 8

Slide 8 text

© ZOZO Technologies, Inc. 8 ◆ ConcurrencyΛભҠਤͰʁʁฉ͍ͨ͜ͱ͕͋ΔʂʂʹͳΔ ◆ ؾ෼స׵Λ݉ͶͨࢥߟͷτϨʔχϯάͱࢥͬͯ΋OK ! ◆ ࣮ࡍ͙͢໾ʹཱ͔ͭʁʁΛؾʹ͠ͳ͍ ࠓ೔ͷΰʔϧ

Slide 9

Slide 9 text

ܭࢉཧ࿦ͩͱ͔ ܗࣜख๏ͩͱ͔

Slide 10

Slide 10 text

ͨͱ͑͹… ϥϜμܭࢉ ΦʔτϚτϯ ܕγεςϜ

Slide 11

Slide 11 text

ࠓ೔͸ 
 CCS

Slide 12

Slide 12 text

© ZOZO Technologies, Inc. 12 CCS - Calculus of Communicating Systems ฒߦܭࢉͷϞσϧͷͻͱͭ ݸผʹಈ͘ʮϓϩηεʯ͕ͨ͘͞Μ͋Γɺޓ͍ʹ௨৴ͯ͠ܭࢉ͕ਐΉɺͱ͢Δ ʮϓϩηεʯͱ͸ɺUNIXϓϩηεɾεϨουɾActorͳͲͳͲΛྨਪͯ͠΋Α͍͕ɺ΋ͬͱ֓೦తͳ΋ͷ͢ ΂ͯɻਓ΍γεςϜͰ΋Α͍ɻ จ๏ɿ ϓϩηε P = 0 a.P1 P1 + P2 P1 | P2 P1[b/a] P1\a A | | | | | | ͳʹ΋͠ͳ͍ ΞΫγϣϯaΛͯ͠P1ʹͳΔ P1·ͨ͸P2ʹͳΔ P1ͱP2͕ฒྻ͢Δ a→b໊લସ͑ a͕֎͔Βݟ͑ͳ͍P1 ଞͷϓϩηε໊ࢀর ஞ࣮࣍ߦ ඇܾఆੑ ฒྻ߹੒ ʢˠ௨৴ʣ ※จ๏ͷ΄͔ʹηϚϯςΟΫε͕͋ΓɺҎԼྫࣔʹΑΓུ https://en.wikipedia.org/wiki/Calculus_of_communicating_systems

Slide 13

Slide 13 text

© ZOZO Technologies, Inc. 13 CCS - جຊจ๏ͱͦͷભҠܥ 1. جຊจ๏ͱͦͷભҠܥ 2. ભҠܥΛಋग़͢ΔηϚϯςΟΫε 3. ϓϩηεΛ؍ଌ͢Δͱ͸Ͳ͏͍͏͜ͱ͔ʁ 4. ผͷϓϩηεʹஔ׵͑ʢϦϑΝΫλʣͰ͖Δ͔ʁ ౳Ձੑ͸ʁ 5. CCS͚ͩ͡Όͳ͍ɺଞʹ΋͋Δ௨৴ϓϩηεܭࢉ

Slide 14

Slide 14 text

© ZOZO Technologies, Inc. 14 ϓϩηεͷࣜͱϥϕϧ෇͖ભҠܥ a.b.0 ࣜ ભҠܥ a.0 0 a a.b.0 a b.0 b a.0 a.0 ͸ aͯ͠ ࢭ·Δ 0 a.b.0 ͸ aͯ͠ bͯ͠ ࢭ·Δ 0͸ʮͳʹ΋͠ͳ͍ʯ

Slide 15

Slide 15 text

© ZOZO Technologies, Inc. 15 બ୒ a.0 + b.0 
 a.0 + b.0 a ࣜ ભҠܥ 0 b aͯ͠ ࢭ·Δ bͯ͠ ࢭ·Δ ·ͨ͸ ͲͪΒ͔બΜͰ෼ذ aͯ͠ࢭ·Δ͔ɺ 
 bͯ͠ࢭ·Δ͔ɺ ͲͪΒ͔ 0

Slide 16

Slide 16 text

© ZOZO Technologies, Inc. 16 ฒྻ߹੒ ʢ௨৴͢ΔྫͰ͸ͳ͍ʣ a.0 | b.0 
 a.0 | b.0 
 0 | b.0 a ࣜ ભҠܥ 0 | 0 b 
 a.0 | 0 b 0 | 0 a aͯ͠ ࢭ·Δ bͯ͠ ࢭ·Δ ͱ ยଆͣͭಈ͍ͯɺࠨӈͲͪΒ͔ΛḷΔ ʢΠϯλʔϦʔϒʣ aͯ͠ bͯ͠ ࢭ·Δ͔ɺ 
 bͯ͠ aͯ͠ ࢭ·Δ͔ɺ ͲͪΒ͔

Slide 17

Slide 17 text

© ZOZO Technologies, Inc. 17 ฒྻ߹੒ͱඇܾఆੑͷؔ࿈ a.0 | b.0 a.b.0 + b.a.0 
 a.0 | b.0 
 0 | b.0 a ࣜ ભҠܥ 0 | 0 b 
 a.0 | 0 b 0 | 0 a 
 a.b.0 + b.a.0 a b 
 b.0 
 a.0 0 b 0 a ಉ͡ʂ

Slide 18

Slide 18 text

© ZOZO Technologies, Inc. 18 CCSͷΑ͋͘Δྫ: ࣗൢػ ྫʢվม͋Γ)ͷࢀߟจݙ … Reactive Systems: Modelling, Specification and Verification (English Edition) by Luca Aceto, Anna Ingólfsdóttir, Kim Guldstrand Larsen, Jiri Srba Co ff ee Machine User ແݶίʔώʔ ແݶϢʔβʔ coin 🪙 ☕ coffee

Slide 19

Slide 19 text

© ZOZO Technologies, Inc. 19 CCSͷΑ͋͘Δྫ: ࣗൢػ ʢೖग़ྗʣ ______ 
 CM = coin.coffee.CM ____ 
 User = coin.coffee.User ࣜ Co ff ee Machine User ແݶίʔώʔ ແݶϢʔβʔ coin 🪙 ______ 
 coffee ☕ coffee ____ 
 coin

Slide 20

Slide 20 text

© ZOZO Technologies, Inc. 20 CCSͷΑ͋͘Δྫ: ࣗൢػ ʢભҠਤʣ ______ 
 CM = coin.coffee.CM ____ 
 User = coin.coffee.User ______ 
 coin.coffee.CM ______ 
 coffee.CM coin ______ 
 coffee ____ 
 coin.coffee.User 
 coffee.User ____ 
 coin coffee ࣜ ભҠܥ ແݶίʔώʔ ͱ ແݶϢʔβʔ

Slide 21

Slide 21 text

© ZOZO Technologies, Inc. 21 CCSͷΑ͋͘Δྫ: ࣗൢػ ʢϓϩηεؒͷಉظ௨৴ʣ ______ 
 CM = coin.coffee.CM ____ 
 User = coin.coffee.User ______ 
 coin coffee ࣜ ભҠܥ ฒߦͨ͠ϓϩηεؒͷૹड৴ϖΞ

Slide 22

Slide 22 text

© ZOZO Technologies, Inc. ભҠܥ 22 CCSͷΑ͋͘Δྫ: ࣗൢػ ʢ֎͔ΒݟΔʣ 
 CM | User τ ______ 
 coffee.CM | coffee.User ࣜ CMͱUserͷcoinૹड৴ʹΑΔભҠ
 ʢ֎͔Β͸ݟ͑ͳ͍ʣ ______ 
 CM = coin.coffee.CM ____ 
 User = coin.coffee.User ͷͱ͖ͷ CM | User

Slide 23

Slide 23 text

© ZOZO Technologies, Inc. ભҠܥ 23 CCSͷΑ͋͘Δྫ: ࣗൢػ (and more…) 
 CM | User | User | User τ ??? ࣜ ͷͱ͖ͷ CM | User | User | User ______ 
 CM = coin.coffee.CM ____ 
 User = coin.coffee.User

Slide 24

Slide 24 text

© ZOZO Technologies, Inc. 24 ͞ΒͳΔਂΈ΁ ✅ جຊจ๏ͱͦͷભҠܥ ભҠܥΛಋग़͢ΔηϚϯςΟΫε ϓϩηεΛ؍ଌ͢Δͱ͸Ͳ͏͍͏͜ͱ͔ʁ ผͷϓϩηεʹஔ׵͑ʢϦϑΝΫλʣͰ͖Δ͔ʁ ౳Ձੑ͸ʁ CCS͚ͩ͡Όͳ͍ɺଞʹ΋͋Δ௨৴ϓϩηεܭࢉ ؾʹͳͬͨΒௐ΂ͯΈΑ͏ʂ

Slide 25

Slide 25 text

࣌ؒ༨ͬͨͿΜ͚ͩ ձࣾ঺հ & ࣗݾ঺հ

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

© ZOZO Technologies, Inc. 27

Slide 28

Slide 28 text

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

Slide 29

Slide 29 text

29