Slide 1

Slide 1 text

ೳొཁ !OPUPSPJE J1IPOFΞϓϦ։ൃऀ೥݄೔ 4XJGU$PODVSSFODZͷ ৲ඌΛ௫Ί ʙฒߦॲཧΛड͚ೖΕΔऔֻ͔ͬΓ

Slide 2

Slide 2 text

࿩͢಺༰ w 4XJGU$PODVSSFODZͷେ࿮ w 4XJGU$PODVSSFODZͷऔֻ͔ͬΓΛ௫ΉͨΊͷଊ͑ํͭ

Slide 3

Slide 3 text

࿩͞ͳ͍಺༰ w BDUPSͷৄࡉ w !.BJO"DUPS w !HMPCBM"DUPS w ߏ଄Խ͞Εͨฒߦੑ BDUPS·Ͱ࿩͢ʹ͸ BDUPS͸ॏཁ͕ͩ ͕࣌ؒ଍Γͳ͍ʜ

Slide 4

Slide 4 text

͓୊໨ w ظ଴ͱͨΊଉͷ4XJGU$PODVSSFODZ w ؆ܿʹ4XJGU$PODVSSFODZͷઆ໌ w ֆͰऔֻ͔ͬΓΛ͔ͭΉ w ୹͍จࣈྻͰࣔͯ͠ΈΔ w ̐֊૚Ͱࣔͯ͠ΈΔ w ·ͱΊ

Slide 5

Slide 5 text

ຊ୊ʹೖΔલʹ

Slide 6

Slide 6 text

BlogͰ2020೥ʹ౤ߘͨ͠಺༰

Slide 7

Slide 7 text

"QQMFϚϧνϓϥοτϑ ΥʔϜ .VMUJQMBUGPSN ରԠ͸ෳ਺ͷJOGPQMJTU ΁ͷରԠͰ΋͋Δ࿩ J04 J1BE04 NBD04 IUUQTJSJNBTVDPN BQQMFNVMUJQMBUGPSNJOGP QMJTUJPTJQBEPTNBDPT

Slide 8

Slide 8 text

w ೥౰࣌ɺNVMUJQMBUGPSNΛᨳ͍ͳ͕ΒJOGPQMJTU͚͕ͩऔΓ࢒͞Ε͍ͯΔ ఺Λࢦఠ w 9DPEFҎ߱Ͱ͸JOGPQMJTUͷ֤छ߲໨͸ϓϩδΣΫτઃఆ͔Β(FOFSBUF͞ ΕΔΑ͏ʹͳ͍ͬͯΔ

Slide 9

Slide 9 text

JOGPQMJTU w ೥౰࣌ɺNVMUJQMBUGPSNΛᨳ͍ͳ͕ΒJOGPQMJTU͚͕ͩऔΓ࢒͞Ε͍ͯΔ ఺Λࢦఠ w 9DPEFҎ߱Ͱ͸JOGPQMJTUͷ֤छ߲໨͸ϓϩδΣΫτઃఆ͔Β(FOFSBUF͞ ΕΔΑ͏ʹͳ͍ͬͯΔ

Slide 10

Slide 10 text

࣮࣭"QQMF։ൃ؀ڥͷมԽΛ ༧૝͍ͯ͠Δ

Slide 11

Slide 11 text

͓ͦΒ͘4XJGU6*Ͱ8FCΞϓϦΛ ࡞੒Ͱ͖Δ೔΋͍ۙ͸ͣ

Slide 12

Slide 12 text

ؓ࿩ٳ୊

Slide 13

Slide 13 text

ظ଴ͱͨΊଉͷ4XJGU $PODVSSFODZ

Slide 14

Slide 14 text

ظ଴ͱͨΊଉͷ4XJGU$PODVSSFODZ w 4XJGU͕ൃද͞Εͯ೥ 88%$ʙ w "QQMF͕৽ݴޠΛಋೖͨ͠໨࿦ݟ͸ॾʑ w େ੎ྗͱͳͬͨ8FC։ൃऀΛऔΓࠐΈ͍ͨͱ͍͏ҙਤ͸͋Δ

Slide 15

Slide 15 text

Կނ

Slide 16

Slide 16 text

େ͖͍։ൃऀूஂ͔ΒΞϓϦ։ൃऀΛҾ͖د͍ͤͨ "OESPJE͕+BWBݴޠΛཧղͰ͖ΔϓϩάϥϚʔऔΓࠐΜͰେ͖͘ͳͬͨྺ࢙Λ࠶ݱ͍ͨ͠

Slide 17

Slide 17 text

4XJGU͕ औΓࠐΈ͍ͨ࠷ۙͷ &$."4DSJQU

Slide 18

Slide 18 text

&$."4DSJQU ೥୆ޙ൒ʙ೥୆લ൒ αʔόʔαΠυͰ/PEF+4࠾༻ྫ͕૿͔͑ͯΒٕज़తվળ͕Ճ଎ ॱෆಉ /PEF+4%FOP ύοέʔδ؅ཧ #BCFM ԼҐޓ׵ੑΛҡ࣋͢Δτϥϯείʔμʔ ؆ܿͳهड़ Ξϩʔؔ਺ࣜ ͷ௥Ճ #BCFMʹΑΔԼҐޓ׵อͪͭͭಋೖ &4-JOU ੩తߏจղੳ͕࣮࣭ͩϏϧυॲཧͷҰ෦ QSPNJTF BTZODBXBJUಉظॲཧ BTZODBXBJU ؆ܿͳಉظॲཧهड़

Slide 19

Slide 19 text

8FC"TTFNCMZ ϑϩϯτΤϯυͰ͸ॲཧͷߴ଎ԽΛ໨ࢦͨ͠WebԾ૝Ϛγϯͱͦͷ্Ͱಈ࡞͢ΔόΠφϦʔ͕ొ৔ɻ

Slide 20

Slide 20 text

BTZODBXBJU͕&$."4DSJQU্Ͱ࣮ ݱ͞ΕͨࣄͰBTZODBXBJU͕ҰൠԽ

Slide 21

Slide 21 text

4XJGU΋4XJGU$PODVSSFODZʹؚΊΔܗͰ BZODBXBJUهड़Λಋೖ

Slide 22

Slide 22 text

؆ܿʹ4XJGU$PODVSSFODZͷه๏

Slide 23

Slide 23 text

Swift Concurrencyͷ؆ܿͳهड़ʹ(࠷ॳ͸)جͮ͘ɻiOS15 SDKͰಋೖ͞ΕͨURLSessionͷSwift Concurrency޲͚ͷϢʔςΟϦςΟϝιουΛ༻͍Δɻ let (data, response) = await URLSession.shared.data(for: ϦΫΤετ)

Slide 24

Slide 24 text

Swift Concurrencyͷ؆ܿͳهड़ʹ(࠷ॳ͸)جͮ͘ɻiOS15 SDKͰಋೖ͞ΕͨURLSessionͷSwift Concurrency޲͚ͷϢʔςΟϦςΟϝιουΛ༻͍Δɻ let (data, response) = await URLSession.shared.data(for: ϦΫΤετ) ͨͩ͠ɺECMAScriptͱ͸ҟͳΓɻtry/throw ػߏ͕ߟྀ͞Ε͍ͯΔඞཁ͕͋Δɻ let (data, response) = try await URLSession.shared.data(for: ϦΫΤετ)

Slide 25

Slide 25 text

Swift Concurrencyͷ؆ܿͳهड़ʹ(࠷ॳ͸)جͮ͘ɻiOS15 SDKͰಋೖ͞ΕͨURLSessionͷSwift Concurrency޲͚ͷϢʔςΟϦςΟϝιουΛ༻͍Δɻ let (data, response) = await URLSession.shared.data(for: ϦΫΤετ) ͨͩ͠ɺECMAScriptͱ͸ҟͳΓɻtry/throw ػߏ͕ߟྀ͞Ε͍ͯΔඞཁ͕͋Δɻ let (data, response) = try await URLSession.shared.data(for: ϦΫΤετ) ͨͩ͠ɺTaskͰғΉ(΋͘͠͸TaskΛ಺แͨ͠ϝιουex: SwiftUI ͷtask) Λ௥Ճ͢Δඞཁ͕͋Δɻ Task { let (data, response) = try await URLSession.shared.data(for: ϦΫΤετ) }

Slide 26

Slide 26 text

struct RandomFox: Equatable, Codable { let image: String; let link: String} Task { let url = URL(string: "https://randomfox.ca/floof/")! let request = URLRequest(url: URL(string: "https://randomfox.ca/ floof")!, cachePolicy: .reloadIgnoringLocalCacheData) do { let (data, response) = try await URLSession.shared.data(for: request) _ = response as! HTTPURLResponse let randomFox = try JSONDecoder().decode(RandomFox.self, from: data) } catch error { print("error=\(error.localizedDescription)") } }

Slide 27

Slide 27 text

λεΫͬͯԿ

Slide 28

Slide 28 text

ฏߦॲཧͷྲྀΕΛҰखʹ Ҿ͖ड͚Δͷ͕5BTL

Slide 29

Slide 29 text

ݹయతฏߦॲཧ ϝΠϯεϨου଴ͪεϨουϫʔΧʔεϨου ϫʔΧʔεϨου ଴ͪεϨου ϝΠϯεϨου Ωϟϯηϧ΋Ͱ͖Δ ࡞ۀ୲౰εϨου ࡞ۀΛ؂ࢹ͢Δ ݁ՌΛฦ͢ ݁ՌΛฦ͢

Slide 30

Slide 30 text

ݹయతฏߦॲཧ ϝΠϯεϨου଴ͪεϨουϫʔΧʔεϨου ϫʔΧʔεϨου ଴ͪεϨου ϝΠϯεϨου Ωϟϯηϧ΋Ͱ͖Δ ࡞ۀ୲౰εϨου ࡞ۀΛ؂ࢹ͢Δ ݁ՌΛฦ͢ ݁ՌΛฦ͢ 5BTL 5BTL͕ड͚࣋ͭ 5BTL͕ड͚࣋ͭ 5BTL͕ड͚࣋ͭ

Slide 31

Slide 31 text

๬Μͩ͸͕ͣͩͬͨ

Slide 32

Slide 32 text

BTZODBXBJUBDUPS5BTL!.BJO"DUPS !HMPCBM"DUPS!4FOEBCMF!VODIFDLFE 5BTLEFUBDIFEXJUI$IFDLFE$POUJOVBUJPO XJUI$IFDLFE5ISPXJOH$POUJOVBUJPO XJUI6OTBGF$POUJOVBUJPO XJUI6OTBGF5ISPXJOH$POUJOVBUJPOXJUI5BT XJUI5ISPXJOH5BTL(SPVQ5BTLJT$BODFMMFE $BODFMMBUJPO&SSPSXJUI5BTL$BODFMMBUJPO)B ಘΒΕͨͷ͸େྔͷΩʔϫʔυ

Slide 33

Slide 33 text

͕࣌ؒܦա͠ ެࣜҎ֎ͷυΩϡϝϯτ͕ॆ࣮த

Slide 34

Slide 34 text

ެࣜҎ֎ͷυΩϡϝϯτ ެ։͞Εͯ೥ܦա͠Α͏ͱ͢Δதɺ༏लͳެࣜҎ֎ͷυΩϡϝϯτ͕ొ৔ w 4XJGU$PODVSSFODZ·ͱΊʢਖ਼ࣜ൛ରԠࡁʣ w IUUQT[FOOEFWBLLZJFBSUJDMFTTXJGUDPODVSSFODZ w 4XJGU$PODVSSFODZνʔτγʔτ w IUUQT[FOOEFWLPIFSBSUJDMFTTXJGUDPODVSSFODZDIFBUTIFFU w 4XJGU$PODVSSFODZͷXJUI5BTL$BODFMMBUJPO)BOEMFSͱ4FOEBCMFDPDLTDPNCMPH w IUUQTDPDLTDPNCIBUFOBCMPHDPNFOUSZ w .PEFSO$PODVSSFODZJO4XJGU*OUSPEVDUJPOw"OEZ*CBOF[ w IUUQTXXXBOEZJCBOF[DPNQPTUTNPEFSODPODVSSFODZJOTXJGUJOUSPEVDUJPO

Slide 35

Slide 35 text

ͦΕͰ΋औΓ૊Ήʹ͸ Կ͔͠Βͷऔֻ͔ͬΓ͕ඞཁ

Slide 36

Slide 36 text

4XJGU$PODVSSFODZͷ ෳࡶ͔͞Βଊ͑ͯΈΔ

Slide 37

Slide 37 text

୹͍จࣈྻͰࣔͯ͠ΈΔ

Slide 38

Slide 38 text

B5X T

Slide 39

Slide 39 text

B5X T BZODBXBJUBDUPS 5BTL 8JUIʙͳͲେྔͷϝιου܈

Slide 40

Slide 40 text

B5X T BZODBXBJUBDUPS 5BTL XJUIʙͳͲେྔͷϝιου܈ 4XJGU༧໿ޠ ࣮͸ػೳͷࠜװ ෳࡶͳػೳ܈ γϯϓϧͰ੔ཧ͞Εͨهड़ ৑௕Ͱෳࡶ ࢖͍͜ͳ͢ʹ͸ඞཁ 5BTLͷதͰ͔͠ػೳ͠ͳ͍

Slide 41

Slide 41 text

Կނ͜͜·Ͱෳࡶ

Slide 42

Slide 42 text

"QQMFͱͯ͠͸ ͋ΒΏΔେن໛ͳ࢓૊Έ·Ͱద༻͍ͨ͠

Slide 43

Slide 43 text

େن໛ͱ͸ྫ͑͹

Slide 44

Slide 44 text

$PSF$16

Slide 45

Slide 45 text

ڧྗͳ$16ͷύϫʔΛϑϧՔಇ ͤ͞Δͷ͸"QQMFͷࢸ্໋୊

Slide 46

Slide 46 text

"QQMFۘ੡Ͱͳ͚Ε͹ಋೖΛ᪳᪯͢Δ ن໛ͷπʔϧΩοτ܈ͱԽ͍ͯ͠Δ

Slide 47

Slide 47 text

̐֊૚Ͱࣔͯ͠ΈΔ

Slide 48

Slide 48 text

BZODBXBJUΛؾܰ ʹݺͼग़ͤΔ֊૚ "ZODBXBJUΛ࢖ͬ ͯػೳ௥Ճ͢Δ֊૚ J04Ҏ্ J04Ҏ্ BTZODBXBJU 5BTL BDUPS ͦͷଞ4XJGU $PODVSSFODZػೳ w 4XJGU w 4XJGU"UUSJCVUFT w (SBOE$FOUSBM%JTQBUDI w ڧྗͳϓϩηοαʔͷྗΛҾ͖ग़͢ w ෆ۩߹ͷೖΓࠐΈͮΒ͍ฏߦॲཧ લఏͱͳΔٕज़ "QQMFͷҙਤ

Slide 49

Slide 49 text

BZODBXBJUΛؾܰ ʹݺͼग़ͤΔ "ZODBXBJUΛ࢖ͬͯ ػೳ௥Ճ͢Δʹ͸ඞཁ J04Ҏ্ J04Ҏ্ BTZODBXBJU 5BTL BDUPS ͦͷଞ4XJGU $PODVSSFODZػೳ w 4XJGU w 4XJGU"UUSJCVUFT w (SBOE$FOUSBM%JTQBUDI w ڧྗͳϓϩηοαʔͷྗΛҾ͖ग़͢ w ෆ۩߹ͷೖΓࠐΈͮΒ͍ฏߦॲཧ લఏͱͳΔٕज़ "QQMFͷҙਤ εϨουΛӅṭͰ͖͍ͯΔൣғ

Slide 50

Slide 50 text

4XJGU"UUSJCVUFT͸ҎԼΛࢀর IUUQTJSJNBTVDPNBQQMF TXJGUBUUSJCVUFT

Slide 51

Slide 51 text

΋ͬͱࠜఈͷ໰୊΋͋Δ

Slide 52

Slide 52 text

࢛൒ੈلલʹ౤͛ೖΕΒΕͨϚϧνεϨου ίϯγϡʔϚʔ04ʹϚϧνεϨου͕౤͛ࠐ·Ε࢛ͯ൒ੈل w 8JOEPXT͕ίϯγϡʔϚʔ04ͱͯ͠εϨουΛಋೖ w εϨουಋೖ͸ϚʔέςΟϯάతͳҙຯ͕ڧ͔ͬͨ w σʔλΛอޢͭͭ͠ฒߦͯ͠ಈ͘ΞΠσΞ͸ະख़ͷ··ϦϦʔε w ౰࣌ͷϓϩάϥϛϯάݴޠ ౰࣌ͷ$$ ͸ϚϧνεϨουಈ࡞͸࢓༷ʹؚΊ ͣ w Ҏޙͷݴޠ΋ϚϧνεϨουʹܾؔͯ͠ఆଧ͸ଧͪग़ͤͣ w ͨͩ͠.JDSPTPGU͸BTZODBXBJUͷಋೖࣗମ͸ૣ͔ͬͨ $ 5ZQF4DSJQU

Slide 53

Slide 53 text

4XJGU$PODVSSFODZ͕ղܾ͠Α͏ͱ͍ͯ͠Δ΋ͷ ࢛൒ੈلલʹ์Γग़͞Εͨ ϚϧνεϨουͷऔΓѻ͍Λ༰қʹ͢Δ ྫ֎ॲཧ USZʙDBUDI ΛฒߦॲཧͰ΋҆શʹߦ͏ ϞμϯͳϓϩάϥϛϯάݴޠͷϧοΫε΁ͷ௥ਵ ։ൃऀͷؒޱΛ֦͛Δ

Slide 54

Slide 54 text

·ͱΊ

Slide 55

Slide 55 text

·ͱΊ w 4XJGU$PODVSSFODZൃද͞Ε͔ͯΒ೥ۙ͘ܦͪ·ͨ͠ w ༗༻ͳࢿྉ͸ग़͖ͯ·͕ͨ͠࢓༷͕ڊେ͗ͯ͢औֻ͔ͬΓ͕গͳ͍Ͱ͢ w ߟҊ͍͔ͨͭ͘͠ͷऔֻ͔ͬΓΛઆ໌͠·ͨ͠ w B5X T w 4XJGU$PODVSSFODZͷཧղ֊૚

Slide 56

Slide 56 text

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

Slide 57

Slide 57 text

ࢀߟ w 4XJGU$PODVSSFODZ·ͱΊʢਖ਼ࣜ൛ରԠࡁʣ w IUUQT[FOOEFWBLLZJFBSUJDMFTTXJGU DPODVSSFODZ w 4XJGU$PODVSSFODZνʔτγʔτ w IUUQT[FOOEFWLPIFSBSUJDMFTTXJGU DPODVSSFODZDIFBUTIFFU w 4XJGU$PODVSSFODZͷXJUI5BTL$BODFMMBUJPO)BOEMFS ͱ4FOEBCMFDPDLTDPNCMPH w IUUQTDPDLTDPNCIBUFOBCMPHDPNFOUSZ w .PEFSO$PODVSSFODZJO4XJGU*OUSPEVDUJPOw "OEZ*CBOF[ w IUUQTXXXBOEZJCBOF[DPNQPTUTNPEFSO DPODVSSFODZJOTXJGUJOUSPEVDUJPO w "TZODBXBJU8JLJQFEJB w IUUQTFOXJLJQFEJBPSHXJLJ"TZODBXBJU w UISFBEɺDPSPVUJOFͷྫ֎Λసૹ͢Δʂʂ2JJUB w IUUQTRJJUBDPN:VLJ.JZBUBLFJUFNT EEEFFEB w <ϓϨθϯࢿྉ> "QQMF͕ ΍Γ͍ͨ์୊4XJGU "UUSJCVUFTc*SJNBTV%FOTBO1MBOOJOH͍Γ·͢ి ࢉاը w IUUQTJSJNBTVDPNBQQMFTXJGUBUUSJCVUFT