arusu0629のブログ

UnityエンジニアからiOSエンジニアへ

Swift × Kitura で HelloWorld!!!

Swiftでサーバプログラミングもできるようになったみたいなので試しに触ってみました。
第1弾はKituraフレームワークです。

実行環境

ステップ1:導入

Kituraの公式サイトの手順通りにやっていきます。 Kitura "Hello World" example

# Kituraのパッケージリポジトリにbrewでアクセスできるようにする
$ brew tap ibm-swift/kitura
# KituraをInstall
$ brew install kitura
$ mkdir HelloKitura
$ cd HelloKitura
# Kituraのテンプレートプロジェクトを作成
$ kitura init

ここまでやればKituraのXcodeProjectが出来ているので開きましょう。

$ open HelloKitura.xcodeproj

そのあとはXcode側でソースコードを編集していきます!
たくさんWarningが出てたりKituraモジュールが無いとエラーが出ていますが、なぜかビルドは出来るので気にせず行きましょう!(笑)
※出ない場合もあるっぽいです。よく分からない...

ステップ2:HelloWorldを表示する

HelloKitura/Sources/Application/Application.swift

public class App {
    let router = Router()
    let cloudEnv = CloudEnv()

    省略
    func postInit() throws {
        // Capabilities
        initializeMetrics(app: self)

        // Endpoints
        initializeHealthRoutes(app: self)
        
        // 追加したコード・・・①
        router.get("/") {
            request, response, next in
            response.send("Hello, World!!!")
            next();
        }
    }
}

Application.swiftファイルに①のコードを追加した後に、ビルド対象をHelloKituraに変更する(Xcode起動時はHelloKitura-Packageになっている)

f:id:arusu0629:20180110232532p:plain:w500
ビルドターゲットをHelloKituraにする

変更してCmd + Rで起動してhttp://localhost:8080をブラウザで開いてHelloWorldが表示されていれば完成です!

番外編(Warning対応)

10数個のWarningはほとんど以下のものです。

'characters' is deprecated: Please use String or Substring directly

どうやらXcode9.1から発生するようになったWarningみたいです。
Xcode9.1で'characters' is deprecated: Please use String or Substring directlyのワーニングが出るようになった - Qiita

なので以下のように直してあげればOKです。

// 修正前
if method.characters.count == 0 { // 'characters' is deprecated: Please use String or Substring directly
    method = FastCGIServerRequest.defaultMethod
}

// 修正後
if method.count == 0 { 
    method = FastCGIServerRequest.defaultMethod
}

Kituraの公式サイトの手順通りに沿って特につまずく所もなくローカルでHelloWorld表示できました。 次はPerfectフレームワークを使ってHelloWorldやってみようと思います!