Swiftには触りつつも、Server Side Swiftは全然触ってこなかったので、どれがいいのかわかりませんが、とりあえず複数個インストールしてみました。
本当はDB接続くらいまで触ってみたかったのですが、インストールで終わってしまいました...。無念です。
せめてこれからサーバサイドSwiftを触る人の手助けになれば幸いです...!!
環境
- macOS Sierra 10.12.1
触ってみるフレームワーク一覧
- Vapor
- Perfect
- Kitura
- Zewo
Vapor
Vaporとは
It provides a beautifully expressive and easy to use foundation for your next website, API, or cloud project.
ウェブサイト、API、またはクラウドプロジェクトのための美しく表現力と使いやすい基盤を提供をうたうSwiftのWebフレームワークです。
インストール
公式のドキュメントを参考にインストールします。
下記コマンドでチェックします。
Xcode8が入っていない場合はAppStoreからインストールしておいてください。
curl -sL check.vapor.sh | bash
インストール
下記コマンドでVaporコマンドをインストールします。
curl -sL toolbox.vapor.sh | bash
Hello World!
VaporコマンドでHelloプロジェクトを作ります。
コマンドを叩くと、叩いた場所にプロジェクトが作成されます。
vapor new hello-vapor
このままビルドしてみます。
vapor build
サーバを起動すると、localhost:8080でアクセスできるようになります。
vapor run serve
Perfect
Perfectとは
It provides everything a Swift engineer needs for developing lightweight, maintainable, and scalable apps and other REST services entirely in the Swift programming language for both client-facing and server-side applications
軽量で保守性がありスケーラブルなアプリケーションやその他のRESTサービスをクライアントとサーバーの両方をSwiftで開発するために必要なものはすべて提供するそうです。githubのスターもかなり多いですね。
インストール
まずは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
PerfectのGetStartを参考にインストールします。
git clone https://github.com/PerfectlySoft/PerfectTemplate.git
Hello World
インストールしたプロジェクトに移動し、ビルドしてみます。
cd PerfectTemplate
swift build
サーバを起動します。起動するとlocalhost:8181でアクセスできるようになります。
.build/debug/PerfectTemplate
Kitura
KituraとはIBMが公開していることで割と有名なフレームワークですね。
公式ドキュメントを参考にインストールします。
インストール
プロジェクトのフォルダを作成します。
mkdir hello-kitura
フォルダへ移動し、その後Swift Package Managerでスケルトンを作成します。
swift package init --type executable
作成したら、Package.swiftを編集します。
import PackageDescription
let package = Package(
name: "myFirstProject",
dependencies: [
.Package(url: "https://github.com/IBM-Swift/Kitura.git", majorVersion: 1, minor: 2)
])
下記のコマンドでビルドします。
swift build
main.swiftを編集します。
import Kitura
// Create a new router
let router = Router()
// Handle HTTP GET requests to /
router.get("/") {
request, response, next in
response.send("Hello, World!")
next()
}
// Add an HTTP server and connect it to the router
Kitura.addHTTPServer(onPort: 8090, with: router)
// Start the Kitura runloop (this call never returns)
Kitura.run()
そして下記コマンドで起動するとlocalhost:8080で表示できるようになります。
.build/debug/hello-kitura
Zewo
Zewo is a set of open source libraries that help you build
modern and blazing fast server software.
Zewoは近代的で驚異的な高速サーバーソフトウェアのビルドに役立つ一連のオープンソースライブラリだそうです。
インストール
プロジェクトのフォルダを作成します。
mkdir hello-zewo
フォルダへ移動し、その後Swift Package Managerでスケルトンを作成します。
swift package init --type executable
作成したら、Package.swiftを編集します。
import PackageDescription
let package = Package(
name: "hello-zewo",
dependencies: [
.Package(url: "https://github.com/Zewo/HTTPServer.git", majorVersion: 0, minor: 14),
]
)
下記のコマンドでビルドします。
swift build
その後、main.swiftを編集します。
import HTTPServer
let log = LogMiddleware()
let router = BasicRouter { route in
route.get("/hello") { request in
return Response(body: "Hello, world!")
}
}
let server = try Server(port: 8080, middleware: [log], responder: router)
try server.start()
main.swiftを書いたらビルドします。
起動するとlocalhost:8080で表示できるようになります。
.build/debug/hello-zewo
インストールを終えて
インストールしてみたこれらについて、ベンチーマークをとってどれが一番良さそうか見てみたいと思います!