Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Server-Side Swift
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Simone Civetta
November 09, 2016
Programming
110
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Server-Side Swift
Talk given in French during XebiCon 2016.
Simone Civetta
November 09, 2016
More Decks by Simone Civetta
See All by Simone Civetta
2021: CI for Mobile: State of The Art
viteinfinite
0
400
MVI : une architecture robuste et moderne pour vos applications mobiles
viteinfinite
2
560
Cross-Platform Modules with Kotlin/Native (v. 2018.10)
viteinfinite
0
120
Face Recognition with Vision & Core ML
viteinfinite
1
1.1k
Shared Cross-Platform Modules with Kotlin/Native
viteinfinite
1
360
Server-Side Swift @ Devoxx FR
viteinfinite
0
140
Swift on the Raspberry PI
viteinfinite
0
150
Be the Quality You Want to See in Your App [Swift Edition]
viteinfinite
1
450
Swift : Nouvelles du front
viteinfinite
0
130
Other Decks in Programming
See All in Programming
KiroのSpecで「五目並べ」を作ってみる
satoshi256kbyte
1
310
The Rails Doctrine Decade
koic
2
420
Apple Intelligence を用いた個人情報誤送信防止、及びユーザーリクエスト体験の改善について
yukiny
0
250
[2026-09-26]空論ジェネリックプロセス~テスト資産とAIで紡ぐ、再現可能なパフォーマンスチューニングの話~
tosite
0
240
カツオ、ご期待ください
suneo3476
0
120
AgentCore CLI で進化した AWS での AI エージェントの作り方 : 必要な機能を必要な時に
icoxfog417
PRO
4
400
海上で動くGoサーバー: goroutineとchannelでさばく航行データストリーム
atsuki_seo
0
1k
re:Inventに行く前に知っておきたい現地参加のノウハウ
nokomoro3
0
280
Embedded Swiftで作る自作USBデバイス によるiOSデバイスの自動テスト / iOSDC Japan 2026 glassfiber
glassfiber
0
150
App Storeの外へ──日本のiOSサイドローディング入門 for iOSDC Japan 2026
yuukiw00w
0
280
[Rails World 2026] Durable orchestration on Rails: from continuation to workflow
palkan
1
400
世界の中心で、AI(App Intents)をさけぶ ー App Intents中心設計の実践ガイド
touyou
0
730
Featured
See All Featured
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
1
560
Product Roadmaps are Hard
iamctodd
55
13k
WENDY [Excerpt]
tessaabrams
14
40k
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
69
66k
Git: the NoSQL Database
bkeepers
PRO
432
67k
A Tale of Four Properties
chriscoyier
163
24k
Design in an AI World
tapps
1
340
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
290
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
6.3k
Docker and Python
trallard
47
4.2k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.4k
The Pragmatic Product Professional
lauravandoore
37
7.5k
Transcript
1
Salut 2
Simone Civetta 3
Je suis un développeur iOS 4
6 ans 5
6
3,5 ans 7
8
9
10
11
12
13
Enfin... 14
Plan ➀ Les Origines ➁ État de l'art ➂ Pourquoi
l'utiliser ? ➃ Swift Server dans la vraie vie ➄ Évolutions 15
1. Les origines 16
17
18
Pourquoi Open Source ? 19
20
21
22
23
24
2. État de l'art 25
Swift 3 26
1.0 27
1.1 28
1.2 29
2.0 30
2.1 31
2.2 32
2.3 33
Swift 3 34
1 version tous les 3,42 mois 35
Un langage complet 36
37
38
39
40
41
Bibliothèques tierces 42
Bibliothèques tierces stables 43
44
45
46
Bibliothèques C 47
Frameworks Web 48
49
50
51
52
53
Swift Package Manager 54
SPM swift package init swift package fetch swift package update
swift package generate-xcodeproj 55
Swift Package Catalog 56
57
58
59
Quelques images Docker ☞ swiftdocker/swift/ ☞ ibmcom/kitura-ubuntu/ ☞ zewo/todobackend/ 60
Qualité du code 61
62
63
64
65
Metriques de qualité Pour en savoir plus... speakerdeck.com/viteinfinite/be-the-quality-you-want-to-see-in- your-app-swift-edition 66
67
68
Enfin... 69
3. Pourquoi l'utiliser ? 70
Développement actif 71
72
73
74
75
76
77
Performance 78
Performance 79
Performance 80
Memory Source: http://benchmarksgame.alioth.debian.org 81
Applications isomorphes 82
4. Dans la vraie vie 83
84
85
86
Package.swift import PackageDescription let package = Package( name: "xebicon", dependencies:
[ .Package(url: "https://github.com/IBM-Swift/Kitura.git", majorVersion: 1, minor: 0), .Package(url: "https://github.com/feinstruktur/CRabbitMQ", majorVersion: 1) ]) 87
Serveur HTTP import Kitura let router = Router() router.post("/vote/station", handler:
{ request, response, next in do { try processVoteRequest(request) } catch { debugPrint(error) response.send(status: .badRequest) } next() }) Kitura.addHTTPServer(onPort: 8080, with: router) Kitura.run() 88
Build $ swift build Linking CHTTPParser Compile Swift Module 'Socket'
(3 sources) Compile Swift Module 'HeliumLogger' (1 sources) Compile Swift Module 'SwiftyJSON' (2 sources) Compile Swift Module 'SSLService' (1 sources) Compile Swift Module 'KituraNet' (29 sources) Compile Swift Module 'Kitura' (40 sources) Compile Swift Module 'xebicon' (12 sources) Linking ./.build/debug/xebicon 89
Bilbliothèques C func publish(message: String, exchange: String, key: String) throws
{ guard let connection = self.connection else { throw AMQPConnectorError.notConnected } amqp_basic_publish(connection, Constants.defaultChannel, amqp_cstring_bytes(exchange), amqp_cstring_bytes(key), 0, 0, nil, amqp_cstring_bytes(message)) } 90
Tests func testPostVote() { let router = HTTPController().router performServerTest(router) {
expectation in self.performRequest("post", path: "vote/station", requestModifier: { request in request.write(from: "{" + "\"trainId\": 1," + "\"media\": \"MOBILE\"," + "\"userId\": \"23de45f\"" + "}") }) { response in XCTAssertEqual(response!.statusCode, HTTPStatusCode.OK) expectation.fulfill() } } } 91
92
Tout s'est bien passé™ 93
Enfin... 94
95
96
97
98
Cross platform #if os(Linux) import Glibc #else import Darwin #endif
99
Swift Build 100
Swift Package Manager Mess swift package generate-xcodeproj 101
Tester c'est linker Undefined symbols for architecture x86_64: "test2.test2.init ()
-> test2.test2", referenced from: test2Tests.test2Tests.(testExample () -> ()). (implicit closure #1) in test2Tests.o ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 102
5. Évolutions 103
Encore plus de Frameworks 104
Encore plus de APIs Swift 105
106
107
Peut-on le déployer en prod ? 108
Oui ! 109
Enfin... 110
Merci ! 111
Simone Civetta 112
Je suis un développeur iOS 113
Je suis un développeur Back 114
Enfin... 115
116