Slide 1

Slide 1 text

ΫϦʔϯΞʔΩςΫνϟͱ J04ΞϓϦ։ൃͷͨΊͷ 7*1&3ͱ J04$MFBO"SDIJUFDUVSFษڧձTQPOTPSFECZ4BOTBO !ZJNBKP

Slide 2

Slide 2 text

w ΫϦʔϯΞʔΩςΫνϟຊʢҎԼ$"ຊʣ͸ࢲʹ͸ಡΈͮΒ͍ w ख์͠Ͱྑ͍ຊʂͱ͸ݴ͍ͮΒ͍ w ࣗ෼͕ཧղͰ͖͔ͨͲ͏͔ո͍͠ ͸͡Ίʹ

Slide 3

Slide 3 text

ΫϦʔϯΞʔΩςΫνϟͰ΋࢖͏ ʰґଘؔ܎ٯసͷݪଇʢ%*1ʣʱ ʹ͍ͭͯͷٙ໰

Slide 4

Slide 4 text

ϓϩάϥϛϯάͷجૅͰ͋Δ ʮந৅ʹରͯ͠ϓϩάϥϛϯάͤΑʯͱ͍͏ࣄͱ ʰґଘؔ܎ٯసͷݪଇ %*1 ʱ ͱ͍͏ݴ༿ͷҧ͍͸Կʁ ͓Μͳ͜͡ͱΛΘ͟Θ͟ݪଇʹ͢Δͷʁ

Slide 5

Slide 5 text

$"ຊΛԿ౓΋ಡ ΜͰ΍ͬͱ ٯసΛཧղͰ͖ͨ

Slide 6

Slide 6 text

໰࣍ͷਤ͸ґଘؔ܎ٯసͷݪଇͰ͔͢ DMBTT 3FQPSU(FOFSBUPS DMBTT $PSF%BUB.BOBHFS ίʔυͷݺͼग़͠ QSPUPDPM %BUB(BUFXBZ ४ڌ ͜Ε͸୯७ʹେੲ͔ΒݴΘΕͯΔ ʮந৅ʹରͯ͠ϓϩάϥϛϯάͤΑʯΛ ࣮ݱ͍ͯ͠Δ͚ͩͰ͸ʁ

Slide 7

Slide 7 text

ࢲͷײ૝ ͜ͷ୯७ͳந৅ܕͷར༻ςΫχοΫ͸ ʰґଘؔ܎ٯసʱ͚ͩͲ ʰґଘؔ܎ٯసͷݪଇʱ Ͱ͸ͳ͍

Slide 8

Slide 8 text

ࢲͷײ૝ ʰґଘؔ܎ٯసͷݪଇʱ͸ݫີʹ͸ɺ ෳ਺Ϟδϡʔϧ͕͋Δ৔߹ʹɺ Ϟδϡʔϧͷґଘؔ܎͕ٯస͢Δͱ͖ ͷΈͦΕ͕ద༻͞ΕΔͷͰ͸

Slide 9

Slide 9 text

Θ͔Γ΍͢͞ͷͨΊ J04ΞϓϦ։ൃతʹ &NCFEEFE'SBNFXPSLʹΑΓ Ϟδϡʔϧ෼ׂͯ͠ ̎ͭͷϞδϡʔϧͰͷྫΛߟ͑·͢

Slide 10

Slide 10 text

DMBTT 3FQPSU(FOFSBUPS Ϟδϡʔϧ" Ϟδϡʔϧ# ίʔυͷݺͼग़͠ ґଘؔ܎ Ϟδϡʔϧ"͸Ϟδϡʔϧ#ʹґଘ͍ͯ͠Δɻ Ϟδϡʔϧ"͕#ΛݺͿྫ DMBTT $PSF%BUB.BOBHFS JNQPSU.PEVMF# DMBTT3FQPSU(FOFSBUPS\ MFUEBUB$PSF%BUBNBOBHFS ʜ ^

Slide 11

Slide 11 text

DMBTT 3FQPSU(FOFSBUPS Ϟδϡʔϧ" Ϟδϡʔϧ# ίʔυͷݺͼग़͠ ґଘؔ܎ Ϟδϡʔϧ"͸Ϟδϡʔϧ#ʹґଘ͍͕ͯͨ͠ɺϓϩτίϧར༻ʹΑͬͯɺ Ϟδϡʔϧ#͕Ϟδϡʔϧ"ʹґଘ͠͸͡Ίͨʂʂʜٯసʂʂʂʂ QSPUPDPM %BUB(BUFXBZ ४ڌ Ϟδϡʔϧ#͕"ͷϓϩτίϧʹ४ڌͤ͞Δ DMBTT $PSF%BUB.BOBHFS ͜ͷ৔߹ͷϓϩτίϧ͸Ϟδϡʔϧ"ʹॴଐͤ͞ͳ͚Ε͹ٯస͠ͳ͍

Slide 12

Slide 12 text

$"ຊͰ͸ w ͨͩͷந৅ܕͷར༻Λʰґଘؔ܎ٯసʱͱ͍ͯ͠Δͷ͕ฆΒΘ͍͠ w $"ຊୈ̑ষʢਤʣ w zιʔείʔυͷґଘؔ܎ͱ੍ޚͷํ޲ͱٯస w ຊ౰ʹϞδϡʔϧͷґଘؔ܎͕ٯస͢Δ͜ͱ͕ʰґଘؔ܎ٯసͷݪ ଇʱͱ͍ͯ͠Δ w $"ຊୈ̔ষʢਤʣ w z*OUFSBDUPSίϯϙʔωϯτ͔Β%BUBCBTFίϯϙʔωϯτ΁ͷ ґଘؔ܎Λٯస

Slide 13

Slide 13 text

ʰґଘؔ܎ٯసͷݪଇʱ ʰґଘؔ܎ٯసͷݪଇʱ Ͱ͸ͳ͍ *OUFSBDUPSϞδϡʔϧ $POUSPMMFSϞδϡʔϧ %BUBCBTFϞδϡʔϧ

Slide 14

Slide 14 text

ࣗݾ঺հ w ג ΩϡϦΦγςΟιϑτ΢ΣΞ w J04ΞϓϦ։ൃΛੜۀ

Slide 15

Slide 15 text

ࣗݾ঺հ w BTZODBXBJUݚڀಡຊ w w 3Y4XJGUݚڀಡຊ* ** *** w w 7*1&3ݚڀಡຊ* w IUUQTTXJGUCPPUIQN

Slide 16

Slide 16 text

ຊ୊

Slide 17

Slide 17 text

ࠓճൃද͍ͨ͜͠ͱ w ͳͥ7*1&3͔ w ΫϦʔϯΞʔΩςΫνϟ $" ͷJ04࣮૷ύλʔϯͰ͋Δ 7*1&3ͷαϯϓϧίʔυൺֱ w େ఍ͷ7*1&3͸$"ຊʹ͋Δґଘؔ܎ٯసͷݪଇ %*1 Λద ༻͍ͯ͠ͳ͍

Slide 18

Slide 18 text

ͳͥ7*1&3͔ w 7*1&3͸ΫϦʔϯΞʔΩςΫνϟ $" ΛJ04ΞϓϦ։ൃʹ෦෼తʹద༻͠ ͨ΋ͷ w 7JFX *OUFSBDUPS 1SFTFOUFS &OUJUZ 3PVUFSͷύʔπ͝ͱʹ੹೚Λ෼ ׂ͍ͯ͠Δ 7JFX 3PVUFS 1SFTFOUFS *OUFSBDUPS &OUJUZ %FMFHBUF *OUFSBDUPSΛॴ࣋͠ ߋ৽Λཁٻ͢Δ ૢ࡞ 3PVUFSΛॴ࣋͠ ը໘ભҠٴͼ දࣔΛߦ͏ 7JFXΛॴ࣋͠ ը໘ભҠΛ࣮ߦ͢Δ DPNQMFUJPO 3FTVMU4VDDFTT &SSPS ໾ׂ ΠϕϯτΛ1SFTFOUFSʹ఻͑ɺ σʔλͷදࣔΛߦ͏ɻ ໾ׂ ը໘ભҠͷͨΊ࣍ͷը໘΁ͷ੍ޚΛ୲౰͢Δɻ ΤϥʔΛදࣔ͢Δ͚ͩͷ6*"MFSU$POUSPMMFSදࣔ΋ߦ͍΍͍͢ɻ ໾ׂ ϏδωεϩδοΫΛ୲౰͢Δ ໾ׂ σʔλΛΧϓηϧԽ͢Δ ໾ׂ 7JFX͔ΒͷೖྗΛड৴͠ɺ *OUFSBDUPS΁σʔλΛཁٻ͢Δɻ 6*,JUʹґଘͤͣɺ දࣔ͢Δ΋ͷΛ7JFXʹ఻͑Δɻ ॴ࣋ ௨஌ ૢ࡞ 1SFTFOUFSΛॴ࣋͠ ΞΫγϣϯΛ఻͑Δ

Slide 19

Slide 19 text

7*1&3ͷܥේ ຊՈPCKDJPJTTVFWJQFS ຊՈPCKDJPJTTVFWJQFSTXJGU QFESPIQFSBMUB"SUJDMFTJ047*1&3 KB[[CQO7*1&3%&.0 ΞϯΫϧϘϒʹΑΔΫϦʔϯΞʔΩςΫνϟ ʜ ʜ

Slide 20

Slide 20 text

ͳ༷ͥʑͳ7*1&3͕ʜ

Slide 21

Slide 21 text

ຊՈ7*1&3 w w PCKDJPʹدߘ w 50%0ΞϓϦ w $PSF%BUBΛ࢖ͬͯΔ w ܕ΍ม਺ͷ໋໊͕ΠϚΠν w ΞϓϦىಈ࣌ʹશը໘ͷґଘ ؔ܎Λղܾ

Slide 22

Slide 22 text

QFESPIQFSBMUB"SUJDMFT J047*1&3 w ೥ w $IFFTDBLF-BCT w 344ͷهࣄΛදࣔ w "MBNPpSF3Y4XJGUΛ࢖ͬͯ Δ w ܕ΍ม਺ͷ໋໊͕ྑ͘ͳͬͨ w 3PVUFS͕ґଘؔ܎Λղܾ

Slide 23

Slide 23 text

7*1&3αϯϓϧͷڞ௨఺ w $PSF%BUB΍3Y4XJGU"MBNPpSFͳͲͷϑϨʔϜϫʔΫʹʰґଘؔ ܎ٯసͷݪଇʱΛద༻͍ͯ͠ͳ͍ w *OUFSBDUPS͕$PSF%BUBʹґଘ w *OUFSBDUPS͕"MBNPpSF3Y4XJGUʹґଘ

Slide 24

Slide 24 text

%*1Λ࢖Θͳ͍͜ͱͷ σϝϦοτΛղܾ͢Δʹ͸ w $PSF%BUB΍"MBNPpSFΛ੾Γ ସ͍͑ͨͳΒ w *OUFSBDUPSࣗମΛೖΕସ͑Δ 7JFX 3PVUFS 1SFTFOUFS *OUFSBDUPS &OUJUZ %FMFHBUF *OUFSBDUPSΛॴ࣋͠ ߋ৽Λཁٻ͢Δ ૢ࡞ 3PVUFSΛॴ࣋͠ ը໘ભҠٴͼ දࣔΛߦ͏ 7JFXΛॴ࣋͠ ը໘ભҠΛ࣮ߦ͢Δ DPNQMFUJPO 3FTVMU4VDDFTT &SSPS ໾ׂ ΠϕϯτΛ1SFTFOUFSʹ఻͑ɺ σʔλͷදࣔΛߦ͏ɻ ໾ׂ ը໘ભҠͷͨΊ࣍ͷը໘΁ͷ੍ޚΛ୲౰͢Δɻ ΤϥʔΛදࣔ͢Δ͚ͩͷ6*"MFSU$POUSPMMFSදࣔ΋ߦ͍΍͍͢ɻ ໾ׂ ϏδωεϩδοΫΛ୲౰͢Δ ໾ׂ σʔλΛΧϓηϧԽ͢Δ ໾ׂ 7JFX͔ΒͷೖྗΛड৴͠ɺ *OUFSBDUPS΁σʔλΛཁٻ͢Δɻ 6*,JUʹґଘͤͣɺ දࣔ͢Δ΋ͷΛ7JFXʹ఻͑Δɻ ॴ࣋ ௨஌ ૢ࡞ 1SFTFOUFSΛॴ࣋͠ ΞΫγϣϯΛ఻͑Δ

Slide 25

Slide 25 text

%*1Λ࢖Θͳ͍͜ͱͷ σϝϦοτΛղܾ͢Δʹ͸ w $PSF%BUB3FBMNͳͲʹґଘ ͠ͳ͍Α͏ʹ w σʔλߏ଄ ʢ.BOBHFE0CKFDU 3FBMN0CKFDUʣΛϓϨʔϯ ͳ4USVDUʹม׵ͯ͠7JFX· Ͱ͍࣋ͬͯ͘ 7JFX 3PVUFS 1SFTFOUFS %FMFHBUF *OUFSBD ߋ৽Λ 3PVUFSΛॴ࣋͠ ը໘ભҠٴͼ දࣔΛߦ͏ 7JFXΛॴ࣋͠ ը໘ભҠΛ࣮ߦ͢Δ DPNQMFUJPO 3FTVMU ໾ׂ ΠϕϯτΛ1SFTFOUFSʹ఻͑ɺ σʔλͷදࣔΛߦ͏ɻ ໾ׂ ը໘ભҠ ΤϥʔΛ ໾ׂ 7JFX͔ΒͷೖྗΛड৴͠ *OUFSBDUPS΁σʔλΛཁ 6*,JUʹґଘͤͣɺ දࣔ͢Δ΋ͷΛ7JFXʹ఻ ॴ࣋ ௨஌ ૢ࡞ 1SFTFOUFSΛॴ࣋͠ ΞΫγϣϯΛ఻͑Δ ٭஫͜Ε͸ಛผ7*1&3తͳղܾํ๏ͱ͍͏Θ͚Ͱ͸͋Γ·ͤΜ

Slide 26

Slide 26 text

͜͜·Ͱͷ7*1&3·ͱΊ w ͳΜͰ͜Μͳ৭ʑͳ7*1&3͋Δͷʁ w ݫີʹ$"ʹԊ͓ͬͯΒͣϑϨʔϜϫʔΫґଘ͕͋Δ w ຊՈͷܕ໊ม਺໊ͷϨΨγʔײ w ݫີʹ$"ʹԊͬͯͳ͍͜ͱͷσϝϦοτ͸ʁ w ׂͱղܾͰ͖Δ w ͦ΋ͦ΋%#΍௨৴ϥΠϒϥϦΛஔ͖׵͑Δ͜ͱͬͯ͋Δ ͷ͔ʁͱ͍͏ׂΓ੾Γ΋ʜ

Slide 27

Slide 27 text

ࢀߟʹͳΔ 7*1&3࣮૷͸ʁ

Slide 28

Slide 28 text

7*1&3ݚڀಡຊ w ͜ͷຊͳΓͷ7*1&3αϯϓϧ࡞੒ w νʔϜͰ΍ͬͯ͘ͷʹ͓͢͢Ί ͳ6TF$BTFϓϩτίϧ w ςετίʔυͷར༻Օॴ

Slide 29

Slide 29 text

6TF$BTF protocol UseCase where Failure: Error { associatedtype Parameters // Ҿ਺ͷܕ associatedtype Success // ੒ޭͨ͠ࡍͷܕ associatedtype Failure // ࣦഊ࣌ͷError΋NeverʹͰ͖ΔΑ͏ʹ func execute(_ parameters: Parameters, completion: ((Result) -> ())?) func cancel() } 7*1&3Λ࢖͍ͨ͘ͳΔཁٻͬͯɺܕʹቕΊΒΕ੍ͨ໿ͷ΋ͱͰ νʔϜͰϒϨͳ͘ϓϩάϥϛϯά͕͍ͨ͠Μ͡Όͳ͍ͷ͔ͳͱ

Slide 30

Slide 30 text

1SFTFOUFSΛςετ͍ͨ͠ͳΒ 5FTU%PVCMF 7JFX 5FTU%PVCMF 3PVUFS 1SFTFOUFS 5FTU%PVCMF *OUFSBDUPS &OUJUZ ςετ༻ͷσʔλ ΋͘͠͸ςετ༻ΤϥʔΛग़ྗ͢Δ ༻ҙͨ͠ςετσʔλΛηοτ͠ɺ ৗʹͦΕΛग़ྗ͢Δɻ 1SFTFOUFSͷΤϥʔϋϯυϦϯάΛ ςετ͚ͨ͠Ε͹ɺ ΤϥʔΛฦͤΔผͷ5FTU%PVCMF΋ ༻ҙ͢Δɻ 1SFTFOUFSͷग़ྗͱͯ͠7JFXͷEFMFHBUFϝιου͕ಈ࡞ɻ ͦͷϝιου͔Βظ଴஋ͱΛൺֱ͢Δ ظ଴஋ͱͷൺֱݕূՕॴ ςετίʔυ͔Βͷݺͼग़͠ 1SFTFOUFSͷग़ྗͱͯ͠3PVUFSʹσʔλ͕౉͞ΕΔ ͦͷϝιου͔Βظ଴஋ͱΛൺֱ͢Δ

Slide 31

Slide 31 text

ॲཧܦ࿏Λ௵ͨ͢Ίʹ ςετίʔυ͸όϦΤʔγϣϯΛ૿΍͢

Slide 32

Slide 32 text

༨ஊ w ΫϦʔϯΞʔΩςΫνϟͰ΋ந৅Ͱ͸ͳ͘۩৅Λ࢖͍ͬͯ Δྫ͸͋Δʢ$"ຊୈষʣ w 4USJOH͸҆ఆͨ͠۩৅ͳͷͰґଘ͍͍ͯ͠ w 4USJOH͕ίϩίϩมΘΔ͜ͱ͸ؾʹ͠ͳ͍͍ͯ͘ w ґଘͨ͘͠ͳ͍ͷ͸มԽ͠΍͍͢۩৅ཁૉ ͨ·ʹϝδϟʔόʔδϣϯͰ࢓༷มΘͬͨΓ͢Δ3Y4XJGUΛ શϨΠϠʔͰ࢖ͬͯͦΕʹґଘ͢Δͷ͸ΫϦʔϯΞʔΩςΫνϟతͰ͸ͳ͍͚Ͳ ͦΕ͸֮ޛ͕͋ͬͯ΍ΔΜͳΒྑ͍ͱࢥ͍·͢