LoginSignup
13
1

More than 5 years have passed since last update.

KituraでHello Worldを表示させる

Last updated at Posted at 2016-11-16

はじめに

久しぶりにSwift関係の記事を書くような気がします。
今回はIBM製のSwiftサーバサイドの KituraHello 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.1Xcode という名前にしましょう!
私は、 Xcode7.3.1Xcode と設定し Xcode8.1 を別名で配置していたため激おこぷんぷん丸されました。

準備

$ mkdir myFirstProject
$ cd myFirstProject
$ swift package init --type executable
myFirstProject
├── Package.swift
├── Sources
│   └── main.swift
└── Tests

こんな感じにファイルが生成される。

パッケージ追加

Package.swift
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から連鎖していろいろとパッケージが同梱されているらしい

実装

Sources/main.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

上記コマンドでサーバが起動できます。デバッグモードですが...

にアクセスすると??

スクリーンショット 2016-11-16 午後11.42.31.png

ありがとうございます!ありがとうございます!

パラメータ付き

先程のmain.swiftに以下を追加しました。

Sources/main.swift
・・・
router.get("/:name") {
    request, response, next in
    let name = request.parameters["name"] ?? ""
    try response.send("Hello, \(name)").end()
}
・・・

スクリーンショット 2016-11-17 午前0.10.12.png

Hello, nnsnodnb

最後に

KituraはFastCGIに対応していて、SSL/TLSなど盛りだくさん機能が実装されているので、
自分の趣味で作るサーバサイド言語も全部Swiftで書ける未来が見えますね。

公式参考サイト(パクリ)

こちらもご覧ください!

KituraをDockerで動かしてみた。

13
1
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
13
1