Slide 1

Slide 1 text

ೳొཁ !OPUPSPJE J1IPOFΞϓϦ։ൃऀ೥݄೔ ੔ཧ͞Εͨ4XJGUݴޠ࢓༷ 4XJGU

Slide 2

Slide 2 text

࿩͢಺༰ w 4XJGUͰ੔ཧ͞Εͨจ๏ w ੔ཧʹࢸΔ·Ͱͷ4XJGUݴޠ

Slide 3

Slide 3 text

࿩͞ͳ͍಺༰ w TPNFͷৄࡉ w ଞͷ௥Ճ࢓༷ 4XJGUDPODVSSFODZ

Slide 4

Slide 4 text

͓୊໨ w 88%$ऴྃ͠·ͨ͠ w 4XJGUݴޠͷܦҢ w ·ͱΊ

Slide 5

Slide 5 text

88%$ऴྃ͠·ͨ͠

Slide 6

Slide 6 text

88%$ॾʑ৽ػೳ΍ػೳͷϦχϡʔΞϧ͕ਐΉ w /FX w 4XJGU$IBSU w 8FBUIFS,JU w 6*$BMFOEBS7JFX w 3FOFXBM w 6*1BTUF$POUSPM w 6*&EJU.FOV*OUFSBDUJPO IUUQTUXJUUFSDPNOPCJTUBUVTQIPUP

Slide 7

Slide 7 text

(PPEOFXT

Slide 8

Slide 8 text

4XJGUݴޠͷ࢓༷͕௥Ճ هड़ํ๏͕੔ཧ͞Ε·ͨ͠

Slide 9

Slide 9 text

4XJGUͷ࢓༷௥Ճ w 4XJGUHFOFSJD w ϝιουʹ౉͢Ҿ਺΍໭Γ஋ͷQSPSPDPMࢦఆํ๏͕؆ܿʹͳΓ·ͨ͠ w ؆ܿʹهड़͢ΔͨΊʹBOZ͕ಋೖ͞Ε·ͨ͠ w େจࣈͷ"OZ 0CKFDUJWF$ͷJE ͱ͸ҟͳΔ

Slide 10

Slide 10 text

// લఏ protocol FooProtocol { } struct ImplementFoo: FooProtocol{ } struct AnotherFoo: FooProtocol{ } 4XJGUͷ࢓༷௥Ճ func fooFunc(_ object: T) { } func fooFunc(_ object: any FooProtocol) { } ˡQSPUPDPM ˡQSPUPDPMΛ࣮૷͢ΔTUSVDU ෆཁʹ ෆཁʹ 4XJGUʙ 4XJGUʙ

Slide 11

Slide 11 text

// લఏ protocol FooProtocol { } struct ImplementFoo: FooProtocol{ } struct AnotherFoo: FooProtocol{ } 4XJGUͷ࢓༷௥Ճ struct Sample { func fooMethod(_ object: T) { } } struct Sample2 { func fooMethod(_ object: any FooProtocol) { } } ˡQSPUPDPM ˡQSPUPDPMΛ࣮૷͢ΔTUSVDU ෆཁʹ ෆཁʹ 4XJGUʙ 4XJGUʙ

Slide 12

Slide 12 text

γϯϓϧʹͳͬͯྑ͔ͬͨͶʂ

Slide 13

Slide 13 text

Ҏ্ʂ

Slide 14

Slide 14 text

ͦΜͳΘ͚͸ͳ͘

Slide 15

Slide 15 text

BOZʹ८Γͭ͘·ͰͷܦҢΛ ୳Δඞཁ͕͋Δ

Slide 16

Slide 16 text

4XJGUݴޠͷBOZಋೖ·ͰͷܦҢ

Slide 17

Slide 17 text

·ͣ͸88%$ͷ ηογϣϯ঺հ

Slide 18

Slide 18 text

88%$4XJGUؔ࿈ॏཁηογϣϯ w &NCSBDF4XJGUHFOFSJDT88%$7JEFPT"QQMF%FWFMPQFS w IUUQTEFWFMPQFSBQQMFDPNWJEFPTQMBZXXED w %FTJHOQSPUPDPMJOUFSGBDFTJO4XJGU88%$7JEFPT"QQMF %FWFMPQFS w IUUQTEFWFMPQFSBQQMFDPNWJEFPTQMBZXXED 88%$ 88%$

Slide 19

Slide 19 text

4XJGUݴޠܹಈͷ̐೥ؒ

Slide 20

Slide 20 text

4XJGUݴޠܹಈͷ̐೥ؒ "QQMF͕4XJGU6*ඞཁͳ࢓༷Λແཧ΍Γݴޠ࢓༷ʹ௨ͨ͠ w 88%$ w 4XJGU6* TPNF w 88%$ w 1SPQFSUZ8SBQQFS 4XJGU"UUSJCVUFT w 88%$ w BTZODBXBJUBDUPS w 88%$ w BOZTPNF ܏޲ͱͯ͠͸ɺ 88%$Ͱ͸4XJGUݴޠ ࢓༷ͷ੔ཧͷ೥ͱ͍͑Δ

Slide 21

Slide 21 text

4XJGUݴޠܹಈͷ̐೥ؒ 4XJGU͸ϓϥοτϑΥʔϜ։ൃऀ޲͚ʹ࡞ͬͨݴޠ w ΞϓϦ։ൃऀίϛϡχςΟ͸0CKFDUJWF$Λஔ͖׵͑Δݴޠͱͯ͠4XJGUΛ޷ ҙతʹܴ͑ೖΕͨ w 4XJGUެ։ޙఆ൪αʔυύʔςΟϥΠϒϥϦ 3Y4XJGU "MBNP fi SF ͕࡞ΒΕͨ w 88%$͔ΒৼΓฦΔͱ w 0CKFDUJWF$Λஔ͖׵͑Δͷ͸খ͞ͳ͜ͱ w 4XJGU6*΍"QQ*OUFOUTɺ8JEHFU,JUͱ͍ͬͨ໺৺తͳػೳΛ࠷ॳ͔Βߟ͑ ͍ͯͨ

Slide 22

Slide 22 text

4XJGUݴޠ͕ରԠ͖ͯͨ͠՝୊

Slide 23

Slide 23 text

4XJGUݴޠ͕ରԠ͖ͯͨ͠՝୊ ୡ੒ॱͰιʔτ σʔλແޮ OJM ݕ஌ͷపఈ w HVBSE աڈࢿ࢈ GSBNFXPSL ͷ׆༻ w"OZ !PCK "OZ0CKFDU Ϗϧυ࣌ʹΑΔݫີͳܕνΣοΫػߏ wݴޠ࢓༷ ۩ମతͳ࣮૷Λԡ͠ࠐΈ PSӅṭ͢Δ w1SPQFSUZ8SBQQFS HFOFSJD

Slide 24

Slide 24 text

4XJGUݴޠ͕ରԠ͖ͯͨ͠՝୊ ୡ੒ॱͰιʔτ σʔλແޮ OJM ݕ஌ͷపఈ w HVBSE աڈࢿ࢈ GSBNFXPSL ͷ׆༻ w"OZ !PCK "OZ0CKFDU Ϗϧυ࣌ʹΑΔݫີͳܕνΣοΫػߏ wݴޠ࢓༷ ۩ମతͳ࣮૷Λԡ͠ࠐΈ PSӅṭ͢Δ w1SPQFSUZ8SBQQFS HFOFSJD 4XJGU΁ͷ࢓༷௥Ճ͸ɺ Ҏલ

Slide 25

Slide 25 text

೥͔Β͸"QQMF༏ઌ Ͱ࢓༷͕Ͷ͡ࠐ·ΕΔ ΞϓϦ։ൃऀ͕ࢥ͍ඳ͍ͨ Ϟμϯͳݴޠ4XJGU͔Β "QQMF͕΍Γ͍ͨࣄΛ࣮ݱ ͢Δઌฌͱͳͬͨײ͕͋Δ

Slide 26

Slide 26 text

4XJGUHFOFSJDT

Slide 27

Slide 27 text

4XJGUHFOFSJDT w "QQMF͕Ӡ͏ʹ w 4XJGUͰந৅తͳίʔυΛॻͨ͘Ίͷجຊతͳπʔϧ w ίʔυ͕ਐԽ͢ΔʹͭΕͯෳࡶ͞Λ؅ཧ͢ΔͨΊʹෆՄܽ w ந৅Խ w ΞΠσΞΛಛఆͷৄࡉ͔Β෼཭͢Δ

Slide 28

Slide 28 text

۩ମྫ4XJGUHFOFSJDT

Slide 29

Slide 29 text

۩ମྫ4XJGUHFOFSJDTᶃ 4XJGUͷ.BUIBCT ˡઈର஋ΛಘΔ @inlinable public func abs(_ x: T) -> T where T : Comparable, T : SignedNumeric ઈର஋Λม͑Δͱ͍͏zΞΠσΞz ఆٛΛݟͯΈΔͱɺ۩ମతͳܕ͸໌ࣔ͞Ε͍ͯͳ͍ ΞΠσΞΛಛఆͷৄࡉ͔Β෼཭͞Ε͍ͯΔͱ͍͑Δ

Slide 30

Slide 30 text

۩ମྫ4XJGUHFOFSJDTᶄ 4XJGUͷ.BUIBCT ˡઈର஋ΛಘΔ @inlinable public func Add(_ x1: T, _ x2: T) -> T where T : Comparable, T : SignedNumeric { x1 + x2 } let value1 = 11.0 let value2 = 3.0 let result = Add( abs(value1), value2) print("result=\(result)") ந৅Խ͞Εͨίʔυಉ࢜͸Ҿ਺ͱ໭Γ஋Ͱܕਪ࿦͞ΕΔ "TCͷ໭Γ஋͕ɺ"EEͷ Ҿ਺ͷܕΛܾఆ ܕਪ࿦

Slide 31

Slide 31 text

۩ମྫ4XJGUHFOFSJDTᶅ ࣮ࡍʹ࢖༻͢Δࡍʹ͸՝୊͕ग़ͯ͘Δ parameter result parameter result result @inlinable public func Add(_ x1: T, _ x2: T) -> T where T : Comparable, T : SignedNumeric { x1 + x2 } let value1 = 11.0 let value2 = 3.0 let result = Add( abs(value1), value2) print("result=\(result)") γϯϓϧͳྫͰ͸໰୊ͳ͍ɻ

Slide 32

Slide 32 text

۩ମྫ4XJGUHFOFSJDTᶆ ࣮ࡍʹ࢖༻͢Δࡍʹ͸՝୊͕ग़ͯ͘Δ parameter result parameter parameter parameter parameter parameter parameter result result result result result result ܕ5 ܕ5Λ࢖ ͏ผܕ ܕ5Λ࢖͏ผܕΛ ࢖͏ผܕ ܕ5Λ࢖͏ผܕΛ࢖͏ผܕ Λ࢖͏ผܕ 4XJGU6*ɺ$PNCJOFɺ3Y4XJGUͳͲ Ͱ͸ܕΛ࢖ͬͨผܕʹม׵ଟ਺

Slide 33

Slide 33 text

۩ମྫ4XJGUHFOFSJDTᶇ ࣮ࡍʹ࢖༻͢Δࡍʹ͸՝୊͕ग़ͯ͘Δ parameter result parameter parameter parameter parameter parameter parameter result result result result result result 􀫥 ܕਪ࿦࣍ୈͰ ओʹQSPUPDPM ɺ ίϯύΠϧ࣌ͷܭࢉ͕രൃతʹ૿͑Δ ˞4XJGUͷ࢓্༷ճආͰ͖ͳ͍

Slide 34

Slide 34 text

TPNFͷొ৔ 4XJGU6*ͱڞʹ௥Ճ͞Εͨ4JXGUݴޠͷ࢓༷ w HFOFSJDT࢖༻࣌ʹҾ਺΍໭Γ஋ʹରͯ͠෇Ճ͢Δ΋ͷ w ෇ՃͰ͖Δͷ͸Ҿ਺ɺ໭Γ஋͸Կ͔͠ΒͷQSPUPDPMܕ w QSPUPDPMܕΛҾ਺΍ม਺ͱͯ͠࢖͏ͱίετ͕ߴ͍ͨΊͷճආࡦ w Ϗϧυ࣌ʹԆʑͱ͕͔͔࣌ؒΔ w ࣮ߦ࣌ʹ΋Өڹେ͖͍ Β͍͠

Slide 35

Slide 35 text

ͳͥBOZ͕88%$Ͱొ৔ w TPNFͷରͱͳΔݴޠ࢓༷͕ඞཁ͕ͩͬͨ4XJGU6*ൃද࣌͸TPNFΛ༏ઌ w 88%$ͷࡍ͸BTZODBXBJUBDUPSͰखҰഋ w 88%$Ͱ͸༨༟͕͋ͬͨ ͷͰ௥Ճ

Slide 36

Slide 36 text

·ͱΊ

Slide 37

Slide 37 text

·ͱΊ w 4XJGU6*ʹؒʹ߹ΘͤΔͨΊʹࠞཚ͍ͯͨ͠4XJGUݴޠ࢓༷͕੔ཧ͞Ε·ͨ͠ w ೥ͷ4XJGU6*ެ։Ҏ߱ɺ৽ػೳͱ੔ཧύλʔϯ͕ݟड͚ΒΕ·͢ w 4XJGUͷQSPUPUZQFͷ࢓༷ͱੑೳվળΛՌͨͨ͢ΊTPNF͕ඞཁͰͨ͠ w TPNFͱର ͍ͭ ͱͳΔܗͰBOZ͕௥Ճ͞Ε·ͨ͠

Slide 38

Slide 38 text

J045FDI#MPHߋ৽த w4XJDU6*Λ࢖ͬͯ̍̌̌ߦͰαϯϓϧίʔυΛॻ͘ 4XJGUߦγϦʔζଞ"QQMF։ൃؔ܎ͷهࣄΛܝࡌத Ͱ͢ɻ JSJNBTVDPN OPUFDPNOPUPSPJE wʹ΋هࡌதͰ͢ɻ

Slide 39

Slide 39 text

ࢀߟ w &NCSBDF4XJGUHFOFSJDT88%$7JEFPT"QQMF%FWFMPQFS w IUUQTEFWFMPQFSBQQMFDPNWJEFPTQMBZXXED w %FTJHOQSPUPDPMJOUFSGBDFTJO4XJGU88%$7JEFPT"QQMF%FWFMPQFS w IUUQTEFWFMPQFSBQQMFDPNWJEFPTQMBZXXED w 4XJGUʹಋೖ͞ΕΔ0QBRVF3FTVMU5ZQFͱ͸Կ͔2JJUB w IUUQTRJJUBDPNLPIFSJUFNTEGEDFG w <ϓϨθϯࢿྉ> "QQMF͕ ΍Γ͍ͨ์୊4XJGU"UUSJCVUFT w IUUQTJSJNBTVDPNBQQMFTXJGUBUUSJCVUFT