Posted at

サーバサイドSwiftフレームワークを4つインストール(だけ)してみた!

More than 1 year has passed since last update.

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


インストールを終えて

インストールしてみたこれらについて、ベンチーマークをとってどれが一番良さそうか見てみたいと思います!