はじめに
久しぶりにSwift関係の記事を書くような気がします。
今回はIBM製のSwiftサーバサイドの Kitura で Hello world
を表示させてみます。
環境
- Xcode8.1 (必須)
- えるたそ (OS X El Capitan 10.11.6)
- Swift 3.0.1
一応、Swiftのバージョン
$ swift --version
Apple Swift version 3.0.1 (swiftlang-800.0.58.6 clang-800.0.42.1)
Target: x86_64-apple-macosx10.9
注意事項
また、 Xcode7系
など古いバージョンと共存していて、 Xcode8.1
を別ファイル名で Applicationフォルダ
に配置している場合はコンパイラが見つからないとかいろいろ怒られますので黙って、古い方を別名にして Xcode8.1
を Xcode
という名前にしましょう!
私は、 Xcode7.3.1 を Xcode と設定し Xcode8.1 を別名で配置していたため激おこぷんぷん丸されました。
準備
$ mkdir myFirstProject
$ cd myFirstProject
$ swift package init --type executable
myFirstProject
├── Package.swift
├── Sources
│ └── main.swift
└── Tests
こんな感じにファイルが生成される。
パッケージ追加
import PackageDescription
let package = Package(
name: "myFirstProject",
dependencies: [
.Package(url: "https://github.com/IBM-Swift/Kitura.git", majorVersion: 1, minor: 1)
]
)
IBM-Swift/Kitura
のPackage.swiftから連鎖していろいろとパッケージが同梱されているらしい
実装
import Kitura
let router = Router()
router.get("/") {
request, response, next in
response.send("Hello, World!")
next()
}
Kitura.addHTTPServer(onPort: 8090, with: router)
Kitura.run()
ルーティング自体は route
にアクセスしたら Hello, World!
を表示するといったとても馴染みのあるものがでましたね。
コンパイル
Xcode上で実行したら Build & Run
なのでやる必要がないのですが今回はVimを使ったのでターミナルバンバンコンパイルが必要になりました。
$ swift build
・・・
Compile CHTTPParser http_parser.c
Compile CHTTPParser utils.c
Compile Swift Module 'KituraTemplateEngine' (1 sources)
Compile Swift Module 'SwiftyJSON' (2 sources)
Compile Swift Module 'Socket' (3 sources)
Compile Swift Module 'LoggerAPI' (1 sources)
Linking CHTTPParser
Compile Swift Module 'SSLService' (1 sources)
Compile Swift Module 'KituraNet' (33 sources)
Compile Swift Module 'Kitura' (40 sources)
Compile Swift Module 'myFirstProject' (1 sources)
Linking ./.build/debug/myFirstProject
というような感じでコンパイルが終わりました。
実行
$ ./.build/debug/myFirstProject
上記コマンドでサーバが起動できます。デバッグモードですが...
にアクセスすると??
ありがとうございます!ありがとうございます!
パラメータ付き
先程のmain.swiftに以下を追加しました。
・・・
router.get("/:name") {
request, response, next in
let name = request.parameters["name"] ?? ""
try response.send("Hello, \(name)").end()
}
・・・
Hello, nnsnodnb
最後に
KituraはFastCGIに対応していて、SSL/TLSなど盛りだくさん機能が実装されているので、
自分の趣味で作るサーバサイド言語も全部Swiftで書ける未来が見えますね。
公式参考サイト(パクリ)