Slide 1

Slide 1 text

S e r v e r S i d e S w i f t F r a m e S l i m a n e ͷ ঺ հ 2 0 1 6 J u n 2 3 p o t a t o t i p s 3 0 Yu k i Ta k e i

Slide 2

Slide 2 text

๻ͷൃද͸ɺiOSͰ΋AndroidͰ΋͋Γ·ͤΜɺɺ ͝༰͍ࣻͩ͘͞

Slide 3

Slide 3 text

n o p p o M a n ͜ ͱ ɺ ෢ Ҫ ༏ ݾ ͱ ਃ ͠ · ͢ɻ

Slide 4

Slide 4 text

6೥ؒԿ΋ͯ͠ͳ͔ͬͨTwitterΛ࠷ۙ෮׆ͤ͞·ͨ͠ʢস͍ʣ @noppoMan722 ΛੋඇϑΥϩʔ͓ئ͍க͠·͢m(_ _)m

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

Tokyo Server Side Swift Meetup΍ͬͯ·͢ʂʂ

Slide 7

Slide 7 text

No content

Slide 8

Slide 8 text

No content

Slide 9

Slide 9 text

Slimaneͱ͸……

Slide 10

Slide 10 text

๻ ͕ ։ ൃ ͯ͠ ͍ Δ S w i f t 3 ͷ WA F / H T T P S e r v e r h t t p s : / / g i t h u b . c o m / n o p p o M a n / S l i m a n e • 100%ඇಉظ(libuvϕʔεͷϥϯλΠϜɻlibuv͸node.jsͷ৺ଁ) • ExpressΛΠϯεύΠΞ(Ϟδϡʔϧࢦ޲) • Stand alone HTTP Server • ߴ଎ (node.jsͷ5ഒɺRevel(GO)ͷ2ഒ) • Open-SwiftʹଌͬͨAPIσβΠϯ • Ϛϧνϓϩηε؀ڥʹ΋ରԠ(Cluster/WorkerɻipcͰࢠϓϩηεͱ௨৴) • CoreFoundationʹґଘ͠ͳ͍

Slide 11

Slide 11 text

S w i f t y - L i b u v S U V S K E LT O N S L I M A N E SlimaneͷϨΠϠʔ OS App libuvͷSwiftόΠϯσΟϯά ඇಉظωοτϫʔΫϓϥοτϑΥʔϜ TCPɺUDPɺProcessɺ FIleSystemɺDNS etc… SuvϕʔεͷHTTPαʔόʔ HTTPϓϩτίϧͷύʔζ ΞϓϦέʔγϣϯϑϨʔϜϫʔΫ system callɺevent loop

Slide 12

Slide 12 text

import Slimane let app = Slimane() // Register a middleware app.use { req, next, completion in print("[pid:\(Process.pid)]\t\(Time())\t\(req.path ?? "/")") next(to: req, result: completion) } // Routing app.get("/") { req, responder in responder { Response(body: "Welcome Slimane!") } } try! app.listen(port: 3000) // Server is listening at 0.0.0.0:3000 ΞϓϦέʔγϣϯͷىಈίʔυ

Slide 13

Slide 13 text

ίϚϯυϥΠϯΠϯλʔϑΣʔε ͔ΒϓϩδΣΫτΛ࡞੒Մೳ

Slide 14

Slide 14 text

$ n p m i - g s l i m a n e - c l i

Slide 15

Slide 15 text

One more thing…..

Slide 16

Slide 16 text

S l i m a n e ͸ F W ࣗ ମ ͸ খ ͞ ͍Ͱ ͢ ͕ɺ ༷ ʑ ͳ Ϟ δϡ ʔϧ Λ ૊ Έ ߹ Θ ͤ ͯ Ξ ϓ Ϧ έ ʔ γ ϣ ϯ Λ ߏ ங Ͱ ͖ · ͢ɻ

Slide 17

Slide 17 text

S e s s i o n M i d d l e w a re https://github.com/slimane-swift/SessionMiddleware ηογϣϯػೳΛఏڙɻ RedisΛSessionσʔλͷετΞઌʹઃఆՄೳ https://github.com/slimane-swift/SessionRedisStore

Slide 18

Slide 18 text

B o d y P a r s e r ( m i d d l e w a re ) https://github.com/slimane-swift/BodyParser JSONɺFormDataͷύʔζػೳΛఏڙ

Slide 19

Slide 19 text

R e n d e r https://github.com/slimane-swift/Render ςϯϓϨʔτͷϨϯμϦϯάػೳΛఏڙɻ ݱࡏ͸MustacheΛαϙʔτ https://github.com/slimane-swift/MustacheViewEngine

Slide 20

Slide 20 text

W S https://github.com/slimane-swift/WS Websocketαʔόʔ/ΫϥΠΞϯτ࣮૷ɻ Slimaneͷmiddlwareͱͯ͠ಈ࡞͠·͢ɻ

Slide 21

Slide 21 text

T h r u s h https://github.com/noppoMan/Thrush ES6ϥΠΫͳPromiseΛఏڙɻ ίʔϧόοΫ஍ࠈͷٹࡁࡦͷͻͱͭʹ…..

Slide 22

Slide 22 text

Q W F u t u re https://github.com/slimane-swift/QWFuture IOΛϒϩοΫ͢Δؔ਺΍ɺΠϕϯτϧʔϓΛࢭΊͯ͠·͏Α͏ ͳॏ͍ॲཧΛ͢ΔࡍʹɺผεϨουͰॲཧΛ࣮ߦͯ͠ऴΘͬͨ ΒϝΠϯϧʔϓʹ໭͢ͱ͍ͬͨॲཧΛߦ͏ࡍʹར༻ɻ ʢGCDͷdispatch_asyncΈ͍ͨͳ΋ͷΛFutureΛѻ͏Α͏ͳΠ ϯλʔϑΣʔεͰఏڙ͍ͯ͠Δ΋ͷʣ

Slide 23

Slide 23 text

$ slimane new MySlimaneApp -f -fΦϓγϣϯΛ෇͚Δ͜ͱͰɺFullStackͳSlimaneΛָ͓͠Έ௖͚·͢ɻ

Slide 24

Slide 24 text

sampleίʔυ΋͋Γ·͢ʂ

Slide 25

Slide 25 text

ί ϯ τ Ϧ Ϗ ϡ ʔ λ ʔ ื ू ͠ ͯ ͓ Γ · ͢ ʂ ʂ ʂ https://slimane-swift-slackin.herokuapp.com/ Slack channel͸ͪ͜Β

Slide 26

Slide 26 text

͝ ੩ ௌ ͋ Γ ͕ ͱ ͏ ͝ ͟ ͍ · ͠ ͨ