Slide 1

Slide 1 text

$"TXJGU େن໛ϓϩδΣΫτʹ͓͚Δ ஈ֊తͳٕज़࡮৽ גࣜձࣾ"CFNB57 ҆Ҫӯஉ

Slide 2

Slide 2 text

ࣗݾ঺հ w ҆Ҫӯஉ"LJP:BTVJ w ೥גࣜձࣾ"CFNB57৽ଔೖࣾ w 4/4!BLLZJF w J04ΞϓϦͷج൫पΓΛ୲౰ w ೥͝Ζ͔ΒΞʔΩςΫνϟؔ࿈ͷऔΓ૊Έ

Slide 3

Slide 3 text

ΞδΣϯμ w എܠ w ҠߦϓϩδΣΫτͷਐΊํ w ৽ϓϩδΣΫτͷٕज़ελοΫ w ΩϟονΞοϓͷͨΊͷऔΓ૊Έ w ࠓޙͷऔΓ૊Έ

Slide 4

Slide 4 text

എܠ

Slide 5

Slide 5 text

എܠ ։ہप೥Λܴ͑Α͏ͱ͍ͯ͠Δ"#&." גࣜձࣾ"CFNB57ձࣾઆ໌ࢿྉ IUUQTTQFBLFSEFDLDPNBCFNBUW[IVTIJIVJTIFBCFNBUWIVJTIFTIVPNJOH[JMJBP

Slide 6

Slide 6 text

എܠ ։ہप೥Λܴ͑Α͏ͱ͍ͯ͠Δ"#&." גࣜձࣾ"CFNB57ձࣾઆ໌ࢿྉ IUUQTTQFBLFSEFDLDPNBCFNBUW[IVTIJIVJTIFBCFNBUWIVJTIFTIVPNJOH[JMJBP

Slide 7

Slide 7 text

എܠ ෛ࠴Խ͢Δٕज़ͱɺ৽ͨͳτϨϯυ $PDPB1PET 3Y4XJGU 6ONBJOUBJOFE 5IJSEQBSUZ -JCSBSJFT 4UPSZCPBSE 4XJGU1. 4XJGU6* ,PUMJO .VMUJQMBUGPSN $PODVSSFODZ

Slide 8

Slide 8 text

എܠ ෛ࠴Խ͢Δٕज़ͱɺ৽ͨͳτϨϯυ $PDPB1PET 3Y4XJGU 6ONBJOUBJOFE 5IJSEQBSUZ -JCSBSJFT 4UPSZCPBSE 4XJGU1. 4XJGU6* ,PUMJO .VMUJQMBUGPSN $PODVSSFODZ

Slide 9

Slide 9 text

എܠ ,PUMJO.VMUJQMBUGPSNͷಋೖ w ೥͝Ζ͔Β,PUMJO.VMUJQMBUGPSNͷಋೖݕূΛ։࢝ ˠຊ֨ಋೖΛܾఆ w ೥ݱࡏɺJ04ଆΛؚΊͨ΄ͱΜͲͷϞόΠϧΤϯδχΞ͕ ,PUMJO.VMUJQMBUGPSNͷڞ௨࣮૷΋ؚΊͯ։ൃ͍ͯ͠Δ "#&."ϞόΠϧΞϓϦ։ൃͷ%FW0QTઓུ IUUQTDBEDDZCFSBHFOUDPKQQSPHSBNBCFNBNPCJMFBQQEFWPQT AbemaTV, Inc. All Rights Reserved
 1 .VMUJQMBUGPSN&OHJOFFSJOH3PBENBQGPSUIF'VUVSF IUUQTEFWFMPQFSBCFNBJPTFTTJPOTCWKQX+&P(1

Slide 10

Slide 10 text

എܠ ,PUMJO.VMUJQMBUGPSNͷಋೖ 4XJGU ωΠςΟϒ ࣮૷ 4XJGU 6*࣮૷ ,.1 ڞ௨࣮૷ طଘ ཧ૝ܥ API

Slide 11

Slide 11 text

എܠ ,PUMJO.VMUJQMBUGPSNͷಋೖ Ͳ͏Ҡߦ͢Δ͔ʁ طଘ ཧ૝ܥ 4XJGU ωΠςΟϒ ࣮૷ 4XJGU 6*࣮૷ ,.1 ڞ௨࣮૷ API

Slide 12

Slide 12 text

എܠ ,PUMJO.VMUJQMBUGPSNͷಋೖ ෛ࠴Խͨ͠ ґଘ΍ઃܭɾ࣮૷Λ Ҿ͖ܧ͗ͭͭҠߦ͢Δͷ͸ ίετ͕ߴ͍ $PDPB1PET 3Y4XJGU 6ONBJOUBJOFE 5IJSEQBSUZ -JCSBSJFT 4UPSZCPBSE

Slide 13

Slide 13 text

എܠ ,PUMJO.VMUJQMBUGPSNͷಋೖ ෛ࠴Խͨ͠ ґଘ΍ઃܭɾ࣮૷Λ Ҿ͖ܧ͗ͭͭҠߦ͢Δͷ͸ ίετ͕ߴ͍ ผϓϩδΣΫτԽͯ͠ ஈ֊తʹҠߦ $PDPB1PET 3Y4XJGU 6ONBJOUBJOFE 5IJSEQBSUZ -JCSBSJFT 4UPSZCPBSE

Slide 14

Slide 14 text

ҠߦϓϩδΣΫτͷਐΊํ

Slide 15

Slide 15 text

ҠߦϓϩδΣΫτͷਐΊํ ͜Ε·ͰͷϓϩδΣΫτߏ੒ ,.1 ڞ௨࣮૷ طଘ࣮૷ ґଘϥΠϒϥϦ $PDPB1PET BCFNBJPT BCFNBOBUJWF

Slide 16

Slide 16 text

ҠߦϓϩδΣΫτͷਐΊํ ৽ͨͳϓϩδΣΫτߏ੒ ,.1 ڞ௨࣮૷ طଘ࣮૷ ґଘϥΠϒϥϦ $PDPB1PET ৽ϓϩδΣΫτ ґଘϥΠϒϥϦ 4XJGU1. BCFNBJPT BCFNBOBUJWF

Slide 17

Slide 17 text

ҠߦϓϩδΣΫτͷਐΊํ ৽ͨͳϓϩδΣΫτߏ੒ ,.1 ڞ௨࣮૷ طଘ࣮૷ ґଘϥΠϒϥϦ $PDPB1PET ৽ϓϩδΣΫτ ґଘϥΠϒϥϦ 4XJGU1. BCFNBJPT BCFNBOBUJWF ৽ϓϩδΣΫτͰ͸ େ෦෼Λ,.1Ͱڞ௨Խ͢Δ લఏͷઃܭɾ࣮૷ʹدͤΔ 4XJGU1.ɺ$PODVSSFODZͳͲ ৽نٕज़ελοΫͷಋೖ

Slide 18

Slide 18 text

ҠߦϓϩδΣΫτͷਐΊํ ৽ͨͳϓϩδΣΫτߏ੒ ,.1 ڞ௨࣮૷ طଘ࣮૷ ґଘϥΠϒϥϦ $PDPB1PET ৽ϓϩδΣΫτ ґଘϥΠϒϥϦ 4XJGU1. BCFNBJPT BCFNBOBUJWF ❌ ৽ϓϩδΣΫτ͔Β طଘ࣮૷ʹ͸ ΞΫηεͰ͖ͳ͍ ˠچ࣮૷͕ ࢒Γଓ͚ΔͷΛ๷͙

Slide 19

Slide 19 text

ҠߦϓϩδΣΫτͷਐΊํ ৽ͨͳϓϩδΣΫτߏ੒ ,.1 ڞ௨࣮૷ طଘ࣮૷ ґଘϥΠϒϥϦ $PDPB1PET ৽ϓϩδΣΫτ ґଘϥΠϒϥϦ 4XJGU1. BCFNBJPT BCFNBOBUJWF طଘ࣮૷͔Β 4XJGU1.ͷґଘ΋࢖͑Δ ˠੵۃతʹґଘ؅ཧΛ ҠߦͰ͖ΔΑ͏ʹ

Slide 20

Slide 20 text

ҠߦϓϩδΣΫτͷਐΊํ ৽ͨͳϓϩδΣΫτߏ੒ BCFNBJPT BCFNBOBUJWF طଘ࣮૷ public class NewViewController:
 UIViewController { ... } public struct NewView: View { ... } طଘϓϩδΣΫτ͸ը໘୯ҐͰ ৽ϓϩδΣΫτͷ࣮૷Λར༻ ˠطଘͷϧʔςΟϯάʹ૊ΈࠐΈ΍͘͢

Slide 21

Slide 21 text

ҠߦϓϩδΣΫτͷਐΊํ ৽ͨͳϓϩδΣΫτߏ੒ BCFNBJPT BCFNBOBUJWF طଘ࣮૷ ը໘දࣔ࣌ʹ'FBUVSF'MBHʹΑͬͯ੾Γସ͑Δ ஈ֊తʹద༻ൣғΛ޿͛Δɾෆ۩߹͕͋Ε͹طଘ࣮૷ʹ੾Γ໭͠ ʢετϥϯάϥʔϑΟάɾύλʔϯͷ࣮ફʣ public class NewViewController:
 UIViewController { ... } public struct NewView: View { ... }

Slide 22

Slide 22 text

ҠߦϓϩδΣΫτͷਐΊํ Ҡߦͷεςʔλε w ओͳ࡞඼λΠϓछྨͷ͏ͪɺछྨͷࢹௌը໘͕ҠߦࡁΈ w ಈը࠶ੜ΍ෳࡶͳΠϯλϥΫγϣϯΛؚΉओཁͳը໘͕ҠߦͰ͖͍ͯΔ w ଞछྨͷҠߦ΋ਐߦத w ৽نػೳͷ࣮૷͸ੵۃతʹ৽ϓϩδΣΫτଆͰߦ͏ํ਑ w ىಈ࣌ͷγʔέϯεͳͲΛؚΜͩج൫తͳ࣮૷ͷҠߦ΋ܭըத

Slide 23

Slide 23 text

৽ϓϩδΣΫτͷٕज़ελοΫ

Slide 24

Slide 24 text

৽ϓϩδΣΫτͷٕज़ελοΫ w 4XJGU1BDLBHF.BOBHFS w طଘͷ$PDPB1PET͔Βஈ֊తʹґଘΛҠߦத w ΞϓϦ಺ͷϞδϡʔϧఆٛʹ͸࢖༻͍ͯ͠ͳ͍ʢޙड़ʣ w 4XJGU6* w طଘͱͷܨ͗ࠐΈ΋౿·͑ͯɺϧʔςΟϯά͸6*,JUϕʔε ʢ6*7JFX$POUSPMMFSϕʔεʣͰߦ͏ w ֤ը໘୯ҐͰͷ6*࣮૷΍ঢ়ଶ؅ཧ͸4XJGU6*ϕʔε w 4XJGU6*ಋೖʹ͋ͨͬͯͷ޻෉͸ኍ઒͞Μͷηογϣϯʹͯ w $PODVSSFODZ w 4USJDU$IFDLJOH΋$PNQMFUFͰӡ༻தʢޙड़ʣ

Slide 25

Slide 25 text

৽ϓϩδΣΫτͷٕज़ελοΫ 4XJGU1BDLBHF.BOBHFS w αʔυύʔςΟʔϥΠϒϥϦ΁ͷґଘͳͲΛ$PDPB1PET͔ΒҠߦத w ΞϓϦ಺ͷϞδϡʔϧఆٛʹ΋࢖༻͍ͯͨ͠ ˠطଘͱಉ͘͡9DPEF(FOʹΑΔఆٛʹ໭ͨ͠ w ,PUMJO.VMUJQMBUGPSNͱͷ૬ੑ໰୊ʢݕূ౰࣌ʣ w ,.1ଆ΋౎౓Ϗϧυ͍͕ͨ͠ɺ4XJGU1.Ͱ͸੍໿͕ଟ͍ ʢ#VJME5PPMͰ͸ϑϨʔϜϫʔΫ͸ੜ੒ɾࢀরͰ͖ͳ͍ɾ (SBEMFͷ࣮ߦʹඞཁͳωοτϫʔΫΞΫηεͳͲΛڐՄͰ͖ͳ͍ʣ w 9DPEFଆͷ1SFCVJME"DUJPOͰ9$'SBNFXPSLΛੜ੒ͯ͠ࢀর͢Δ͔͠ ͳ͍ ˠϏϧυ͕ෆ҆ఆʹͳΔ໰୊͕͋ͬͨ w طଘϓϩδΣΫτଆʹ΋໰୊͕೾ٴͨ͠ w %FCVH3FMFBTFͰґଘΛ੾Γସ͑ΒΕͳ͍ʢະ࣮૷ʣ

Slide 26

Slide 26 text

ҠߦϓϩδΣΫτͷਐΊํ $PODVSSFODZ w طଘϓϩδΣΫτʹ͓͚ΔରԠํ਑ w 4XJGUϞʔυͰӡ༻͠ɺ$PODVSSFODZ͸ੵۃతʹ͸ಋೖ͠ͳ͍ w ޿ൣʹར༻͍ͯ͠Δ3Y4XJGUͳͲͱซ༻͢ΔܗͰӡ༻͢Δͷ͸ ೉қ౓͕ߴ͍ w ˠಘΒΕΔԸܙʹରͯ͠ɺ݁ՌతʹෳࡶԽͨ͠Γෆ҆ఆͳ࣮૷ʹͳΔ ϦεΫ͕େ͖͍ w طଘϓϩδΣΫτ಺ͰͷҠߦΑΓ΋ɺ৽ϓϩδΣΫτ΁ͷҠߦΛ ༏ઌ͢Δ

Slide 27

Slide 27 text

ҠߦϓϩδΣΫτͷਐΊํ $PODVSSFODZ w ৽ϓϩδΣΫτʹ͓͚ΔରԠํ਑ w 4XJGUϞʔυʹ͸Ͱ͖͍ͯͳ͍ʢҰ౓༗ޮԽͨ͠ޙʹແޮԽʣ w ,.1͕ੜ੒ͨ͠0CKFDUJWF$ϑϨʔϜϫʔΫʹ౉ͨ͠Ϋϩʔδϟ͕ ݺͼग़͞Εͨͱ͖ɺ4XJGUϥϯλΠϜ͕Ϋϥογϡ͢Δ৔߹͕͋Δ w ࢀߟIUUQTBQMVTSTPCKFDUJWFDDBMMCBDLDSBTIFTTXJGU w ˠ4XJGUϞʔυʹ໭ͭͭ͠ɺ4XJGUͰ ༗ޮʹͳΔ6QDPNJOH'FBUVSFTΛ શͯΦϯʹͯ͠ӡ༻த ʢ4USJDU$IFDLJOH$PNQMFUFΛؚΊͯʣ w ,PUMJOͷ4XJGUFYQPS t ʹظ଴ʁ

Slide 28

Slide 28 text

৽ϓϩδΣΫτͷٕज़ελοΫ $PODVSSFODZ w ϙϦγʔΛࣾ಺υΩϡϝϯτͱͯ͠໌จԽͯ͠ӡ༻த

Slide 29

Slide 29 text

৽ϓϩδΣΫτͷٕज़ελοΫ $PODVSSFODZରԠํ਑ w ४ڌͰ͖Δσʔλܕ͸Sendableʹ४ڌͤ͞Δ w 6*ؔ࿈ͷܕ΍ॲཧ͸@MainActorΛ෇༩͢Δ w 6*ͷঢ়ଶ؅ཧͳͲΛεϨουηʔϑʹ࣮૷͢ΔϝϦοτΑΓ΋ ࣮૷ෛ୲ͷܰݮΛʢݱঢ়Ͱ͸ʣ༏ઌ͢Δ w 4XJGU͕ಋೖ͞Ε͍ͯͳ͍֎෦ϥΠϒϥϦΛ࢖͏ࡍͷରԠखஈ w MainActorͷΈ͔ΒΞΫηε͢Δ w Sendableʹ४ڌͤ͞Δ w SendableͳܕͰϥοϓ͢Δ w nonisolated(unsafe) letม਺Λఆٛ͢Δ w ʢ࠷ऴखஈͱͯ͠ʣ@preconcurrency importΛ࢖͏

Slide 30

Slide 30 text

৽ϓϩδΣΫτͷٕज़ελοΫ $PODVSSFODZӡ༻্ͷ޻෉ w TaskBagܕͷಋೖ w 3Y4XJGUͷDisposeBagͱಉ༷ͷ ࢖͍উखͰTaskΛ؅ཧ

Slide 31

Slide 31 text

৽ϓϩδΣΫτͷٕज़ελοΫ $PODVSSFODZӡ༻্ͷ޻෉ w TaskBagܕͷಋೖ w 3Y4XJGUͷDisposeBagͱಉ༷ͷ ࢖͍উखͰTaskΛ؅ཧ w 5BTL#BHͰ͸ @_implicitSelfCaptureଐੑΛ Ϋϩʔδϟʹ෇༩͠ͳ͍ w deinitىҼͰΩϟϯηϧ͍ͨ͠ ॲཧ͕selfͷ҉໧తͳΩϟϓνϟ ʹΑͬͯΩϟϯηϧ͞Εͳ͘ͳΔ ࣄ৅Λ๷͙

Slide 32

Slide 32 text

ΩϟονΞοϓͷͨΊͷऔΓ૊Έ

Slide 33

Slide 33 text

ΩϟονΞοϓͷͨΊͷऔΓ૊Έ ࣄۀ෦Λލ͍ͩڞ༗ձ w "#&."ɺλοϓϧɺ"NFCBɺ$-ͷϝϯόʔΛத৺ͱ֤ͯ͠ࣄۀ෦ͷ ରԠঢ়گ΍஌ݟΛࣾ಺શମʹڞ༗

Slide 34

Slide 34 text

ΩϟονΞοϓͷͨΊͷऔΓ૊Έ $PODVSSFODZ1MBZHSPVOE w $PODVSSFODZʹؔ͢Δجૅ஌ࣝΛΩϟονΞοϓ͢ΔͨΊͷ 9DPEF1MBZHSPVOEΛ࡞੒͠ɺࣾ಺Ͱల։

Slide 35

Slide 35 text

ΩϟονΞοϓͷͨΊͷऔΓ૊Έ $PODVSSFODZ1MBZHSPVOE ࣮ࡍʹಈ࡞͢ΔίʔυͰ "DUPS΍4FOEBCMFͷ໾ׂΛ ֬ೝͰ͖ΔΑ͏ʹ

Slide 36

Slide 36 text

ࠓޙͷऔΓ૊Έ

Slide 37

Slide 37 text

ࠓޙͷऔΓ૊Έ w ҠߦϓϩδΣΫτͷਐߦ w ֤ը໘ͷ࣮૷΍ج൫࣮૷ɺґଘ؅ཧͷҠߦΛਐΊΔ w ϞϊϦϙδτϦԽ w ։ൃޮ཰Λߋʹ޲্ͤ͞ΔͨΊɺطଘϓϩδΣΫτ΋,.1࣮૷΍ ৽ϓϩδΣΫτͱಉ͡ϦϙδτϦʹҠ؅͢Δ w ௕ظతʹ͸"OESPJE΍UW04ͷϓϩδΣΫτ౷߹΋ࢹ໺ w ӡ༻ϙϦγʔɾΩϟονΞοϓࢿྉͷॆ࣮ w $PODVSSFODZͳͲ৽͍ٕ͠ज़ελοΫͷӡ༻࣮੷ΛੵΈͭͭɺ ஌ݟΛࢿྉԽ͍ͯ͘͠ w Ώ͘Ώ͘͸ࣾ֎ൃ৴΋ʜʁ

Slide 38

Slide 38 text

·ͱΊ w "#&."Ͱ͸,.1த৺ͷ࣮૷ʹҠߦ͢Δͱಉ࣌ʹɺٕज़ελοΫͷ࡮৽΋ ਐΊ͍ͯΔ w ϓϩδΣΫτΛ৽نʹ࡞੒ͯ͠ը໘୯ҐͰऔΓࠐΉ͜ͱͰɺٕज़తෛ࠴Λ ղফͭͭ͠ஈ֊తʹ৽ϓϩδΣΫτଆ΁Ҡߦ͍ͯ͠Δ w $PODVSSFODZͳͲͷ৽͍ٕ͠ज़ελοΫʹ͍ͭͯ͸ɺӡ༻ϙϦγʔ΍ ΩϟονΞοϓࢿྉΛ੔උͯ͠ಋೖΛ࢝Ί͍ͯΔ w ௕ظతʹଞϓϥοτϑΥʔϜ΋ؚΊͨϞϊϦϙδτϦԽ΋ݕ౼ प೥Λݟਾ͑ɺ͞ΒʹਐԽ͢Δ"#&."΁