Slide 1

Slide 1 text

SwiftͬͯεϚϗΞϓϦ։ൃઐ༻ʁ ͍͍͑ɺαʔόʔ΋ॻ͚·͢ʂ 2025/05/17 ͸ͩͯ͜ະདྷେ×اۀΤϯδχΞ େLT2025 ͘Ͳ͔͍ 1

Slide 2

Slide 2 text

ࣗݾ঺հ גࣜձࣾΏΊΈ/͘Ͳ͔͍ 2022/04ʹiOSΤϯδχΞͱͯ͠৽ଔೖࣾɻ ෭ۀͰFlutterΛͪΐͬͱ΍ͬͨΓɻ ݸਓ։ൃ ݮञࢧԉΞϓϦʮAlconʯ https://apps.apple.com/jp/app/alcon/id1571071417 ๭ࡔಓάϧʔϓͷ੟஍८ྱΞϓϦʮͷ͗ϥϦʔʯ https://apps.apple.com/jp/app/ͷ͗ϥϦʔ/id6501994754 @kudokai00 @KaitoKudou 2

Slide 3

Slide 3 text

3

Slide 4

Slide 4 text

࣮͸SwiftͰ αʔόʔॻ͚ΔΜͰ͢ʂ 4

Slide 5

Slide 5 text

Ϟνϕʔγϣϯ • ࢖͍׳Ε͍ͯΔ Swift ͰαʔόʔαΠυ΋։ൃͰ͖ͨΒ͍͍ΑͶ • Swift ͚ͩͰΞϓϦέʔγϣϯΛࣗྗͰ࡞Δ͜ͱ͕Մೳ • ձࣾͷઌഐ͕ॻ͍ͨ Server Side Swift ͷهࣄΛಡΜͰڵຯ͕ग़ͨ 5

Slide 6

Slide 6 text

https://techbookfest.org/product/kdUdfz8a1KZQJZvJxRVu8V?productVariantID=3PtDPisanjt1xTD47yyVYK 6

Slide 7

Slide 7 text

https://techbookfest.org/product/kdUdfz8a1KZQJZvJxRVu8V?productVariantID=3PtDPisanjt1xTD47yyVYK 7

Slide 8

Slide 8 text

https://techbookfest.org/product/kdUdfz8a1KZQJZvJxRVu8V?productVariantID=3PtDPisanjt1xTD47yyVYK ๻΋ॻ͍ͯ·͢ʂʂ 8

Slide 9

Slide 9 text

Server Side Swiftͱ͸ • Swift ΛαʔόʔαΠυ։ൃʹ࢖༻͢Δ͜ͱ • Vapor ΍ Hummingbird ͷΑ͏ͳ Web ϑϨʔϜϫʔΫ͕ར༻͞ΕΔ • ϧʔςΟϯάɺσʔλϕʔε౷߹ɺϦΫΤετॲཧͳͲͷॏཁͳػೳ ͕ఏڙ͞ΕɺϏδωεϩδοΫͷ࣮૷ʹूதͰ͖Δ 9

Slide 10

Slide 10 text

10

Slide 11

Slide 11 text

Vaporͱ͸ • Server Side Swiftͷ୅දతͳϑϨʔϜϫʔΫ • Swift Ͱ Web ΞϓϦͷ API ɺ HTTP αʔόʔͷߏங͕Մೳ • पลϥΠϒϥϦ͕͔ͳΓॆ࣮ - ORMʢFluentʣɺೝূʢJWTɾOAuthʣɺWebSocketͳͲ 11

Slide 12

Slide 12 text

ͳͥVaporͳͷ͔ • ݱࡏͰ΋։ൃ͕੝ΜʹߦΘΕ͍ͯΔ • Server Side SwiftͷϑϨʔϜϫʔΫͰελʔ਺͕ଟ͍ • υΩϡϝϯτ͕ॆ࣮ • Swift Concurrencyʹ΋͔ͬ͠Γ௥ै 12

Slide 13

Slide 13 text

13

Slide 14

Slide 14 text

͔͜͜Β։ൃͷ͓࿩ 14

Slide 15

Slide 15 text

Πϯετʔϧํ๏ • HomebrewͰΠϯετʔϧ • versionͷ֬ೝ 15

Slide 16

Slide 16 text

ϓϩδΣΫτͷ࡞੒ • ࠷খߏ੒ͰϓϩδΣΫτΛ࡞੒ • APIαʔόʔΛىಈ 16

Slide 17

Slide 17 text

ϓϩδΣΫτͷ࡞੒ XcodeͰϏϧυޙɺhttp://127.0.0.1:8080 ͰWebαʔόʔ͕ىಈ͢Δʂ 17

Slide 18

Slide 18 text

ϑΥϧμߏ੒ 18

Slide 19

Slide 19 text

ϑΥϧμߏ੒ ը૾΍ελΠϧγʔτͳͲͷ ֎෦ʹެ։͢ΔϑΝΠϧΛ ֨ೲ͢Δɻ FileMiddlewareΛ༗ޮʹ͢Δ ඞཁ͕͋Δɻ 19

Slide 20

Slide 20 text

ϑΥϧμߏ੒ શͯͷιʔεϑΝΠϧ͕֨ೲ͞ΕΔɻ શͯͷϩδοΫ͕Sources/App ҎԼʹೖΔɻ 20

Slide 21

Slide 21 text

ϑΥϧμߏ੒ ΞϓϦέʔγϣϯͷϩδοΫΛ·ͱΊ Δͷʹద͍ͯ͠Δɻ ϦΫΤετΛड͚औΓɺԿΒ͔ͷܗͰ ϨεϙϯεΛฦؔ͢਺͕ఆٛ͞ΕΔɻ 21

Slide 22

Slide 22 text

ϑΥϧμߏ੒ ͜ͷϑΝΠϧʹ͸ɺroutes(_:) ؔ਺ؚ͕ ·Ε͍ͯΔɻ ϧʔςΟϯάΛఆٛ͢Δɻ 22

Slide 23

Slide 23 text

JSONΛฦͯ͠ΈΔ 23

Slide 24

Slide 24 text

JSONΛฦͯ͠ΈΔ HTTPϝιου 24

Slide 25

Slide 25 text

JSONΛฦͯ͠ΈΔ ΤϯυϙΠϯτ 25

Slide 26

Slide 26 text

JSONΛฦͯ͠ΈΔ JSONͷkey/valueΛࣙॻͰఆٛ 26

Slide 27

Slide 27 text

JSONΛฦͯ͠ΈΔ εςʔλείʔυ200Ͱฦ٫͢ΔΑ͏ʹɺ Τϯίʔυ 27

Slide 28

Slide 28 text

JSONΛฦͯ͠ΈΔ JSONΛฦ͢ 28

Slide 29

Slide 29 text

JSONΛฦͯ͠ΈΔ XcodeͰϏϧυޙɺhttp://127.0.0.1:8080/json ͰҎԼ͕ग़ྗ͞ΕΔ🎉 29

Slide 30

Slide 30 text

ͨͬͨ͜Ε͚ͩʂ 30

Slide 31

Slide 31 text

๻͕ॻ͍ͨίʔυΛோΊͯΈΔ 31

Slide 32

Slide 32 text

๭ເͷࠃͷΞτϥΫγϣϯ଴ͪ࣌ؒAPI • ެࣜΞϓϦͷಈ࡞͕஗͍ʂʂ Ϟνϕʔγϣϯ ࢓૊Έ • ެࣜαΠτΛεΫϨΠϐϯά • ֎෦APIΛ࢖༻ • Ϩεϙϯε͸5෼ؒΩϟογϡʹ٧ΊΔ 1ͭͷAPIʹ·ͱΊΔ 32

Slide 33

Slide 33 text

๭ເͷࠃͷΞτϥΫγϣϯ଴ͪ࣌ؒAPI εΫϨΠϐϯά͢Δσʔλ ֎෦API͔Βऔಘ͢Δσʔλ 33

Slide 34

Slide 34 text

๭ເͷࠃͷΞτϥΫγϣϯ଴ͪ࣌ؒAPI ΫϥΠΞϯτʹฦ͢σʔλ 34 AttractionBasicInfo + AttractionOperatingStatus Attraction

Slide 35

Slide 35 text

๭ເͷࠃͷΞτϥΫγϣϯ଴ͪ࣌ؒAPI εΫϨΠϐϯάͰऔಘͨ͠σʔλΛ[AttractionBasicInfo]ʹม׵ 35

Slide 36

Slide 36 text

๭ເͷࠃͷΞτϥΫγϣϯ଴ͪ࣌ؒAPI ֎෦API͔Βऔಘͨ͠σʔλΛ[AttractionOperatingStatus]ʹม׵ 36

Slide 37

Slide 37 text

๭ເͷࠃͷΞτϥΫγϣϯ଴ͪ࣌ؒAPI σʔλΛ[Attraction]ʹ౷߹ 37

Slide 38

Slide 38 text

๭ເͷࠃͷΞτϥΫγϣϯ଴ͪ࣌ؒAPI [Attraction]ΛΤϯίʔυ 38

Slide 39

Slide 39 text

๭ເͷࠃͷΞτϥΫγϣϯ଴ͪ࣌ؒAPI ࣮ߦ݁Ռ🎉 39 http://127.0.0.1:8080/tokyo_disney_resort/tdl/attraction Ͱ࣮ߦ

Slide 40

Slide 40 text

๭ເͷࠃͷΞτϥΫγϣϯ଴ͪ࣌ؒAPI 40 ίʔυͷஔ͖৔ॴ https://github.com/KaitoKudou/TokyoDisneyResortAPI

Slide 41

Slide 41 text

·ͱΊ Vapor ͱ͸ • Server Side Swift ͷ୅දతͳϑϨʔϜϫʔΫ • ORM ΍ೝূͳͲͷपลϥΠϒϥϦ΋ॆ࣮ • Swift Concurrency ʹରԠ͍ͯ͠ΔͷͰɺΫϩʔδϟͰඇಉظॲཧΛॻ͘ඞཁͳ͠ Server Side Swift ͱ͸ • Swift ΛαʔόʔαΠυͷ։ൃͰ࢖༻͢Δ͜ͱ • Vapor ΍ Hummingbird ͷΑ͏ͳ Web ϑϨʔϜϫʔΫ͕ར༻͞ΕΔ 41

Slide 42

Slide 42 text

ࢀߟจݙ • https://techbookfest.org/product/kdUdfz8a1KZQJZvJxRVu8V? productVariantID=3PtDPisanjt1xTD47yyVYK • https://docs.vapor.codes/ja/getting-started/folder-structure/ • https://zenn.dev/yusuga/articles/dc601e1f67a0b7 • https://speakerdeck.com/satotakeshi/5fen-dewakaruserver-side- swift-vaporfalsemei-li • https://www.swift.org/documentation/server/ 42