10
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

オールアバウトAdvent Calendar 2016

Day 16

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

Posted at

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

インストールを終えて

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

10
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?