話題のSwift製WebフレームワークKituraをVagrantで手軽に試す

皆さんこんばんは。

腰を気にしていたら背中がやられてきたDayBySayです。

本日は今話題Swift製WebアプリケーションフレームワークKituraの開発環境を作ってみたいと思います。

概要

KituraIBMAppleのパートナーシップのもと制作されたらしいWebアプリケーションフレームワークです。

github.com

さらにIBM BlueMixというPaaSが完全対応しており、クライアントもサーバもSwiftという開発環境を作るにはもってこいであります。

私はまだ使ったこと無いですけど、この記事を読む限り、Push通知用のサーバも簡単に作れるらしい?

料金体系が計算ムズイ系だけれども、どうもPush通知回りは無料枠もあるっぽい。

Parseも死んじゃったし、色々大変だろうけどIBM Bluemixにもちょっとは期待してみよー。

ということで、話を戻すとIBM Blluemix上でも利用できるKituraを手軽に試す方法について書いていきます。

環境構築

READMEを見るとわかりますが、開発環境としてLinuxOSXDockerVagrantと、いたれりつくせりで色々用意してくれてます。

個人的な都合により、今回はOSX上でVagrantを利用する感じで進めたいと思います。

事前準備

VirtualBoxVagrantを入手します。

開発環境構築

まずは適当な場所にKituraをクローンします。

$ git clone git@github.com:IBM-Swift/Kitura.git

中身はこんな感じです

$ ls -la
total 120
drwxr-xr-x  17 t-sei  VOYAGEGROUP\Domain Users    578  3  1 01:57 .
drwxr-xr-x  44 t-sei  VOYAGEGROUP\Domain Users   1496  3  1 01:57 ..
drwxr-xr-x  13 t-sei  VOYAGEGROUP\Domain Users    442  3  1 01:57 .git
-rw-r--r--   1 t-sei  VOYAGEGROUP\Domain Users     16  3  1 01:57 .gitignore
-rw-r--r--   1 t-sei  VOYAGEGROUP\Domain Users   1073  3  1 01:57 .travis.yml
-rw-r--r--   1 t-sei  VOYAGEGROUP\Domain Users    649  3  1 01:57 .travis.yml.backup
drwxr-xr-x   7 t-sei  VOYAGEGROUP\Domain Users    238  3  1 01:57 Documentation
-rw-r--r--   1 t-sei  VOYAGEGROUP\Domain Users  10174  3  1 01:57 LICENSE.txt
-rw-r--r--   1 t-sei  VOYAGEGROUP\Domain Users    878  3  1 01:57 Makefile
-rw-r--r--   1 t-sei  VOYAGEGROUP\Domain Users   1405  3  1 01:57 Package.swift
-rw-r--r--   1 t-sei  VOYAGEGROUP\Domain Users   8197  3  1 01:57 README.md
drwxr-xr-x   3 t-sei  VOYAGEGROUP\Domain Users    102  3  1 01:57 Sources
drwxr-xr-x   3 t-sei  VOYAGEGROUP\Domain Users    102  3  1 01:57 Tests
-rwxr-xr-x   1 t-sei  VOYAGEGROUP\Domain Users   1161  3  1 01:57 buildTests.sh
-rwxr-xr-x   1 t-sei  VOYAGEGROUP\Domain Users   1510  3  1 01:57 build_osx.sh
-rwxr-xr-x   1 t-sei  VOYAGEGROUP\Domain Users    667  3  1 01:57 runTests.sh
-rw-r--r--   1 t-sei  VOYAGEGROUP\Domain Users   3097  3  1 01:57 vagrantfile

次に、Vgarantの環境を作ります... と言いたいところですが、実は2016/3/1現在、Kituraが提供しているVagrant環境は壊れています。

こちらのPR見るとわかりますが、どうもlibdispatch回りで不整合が起きてしまっているのが原因のようです。

ということで、今回はこのPRの元になっているブランチを利用してVagrantの開発環境を作りましょう。

$ git remote add cjwirth git@github.com:cjwirth/Kitura.git
$ git fetch cjwirth
remote: Counting objects: 43, done.
remote: Compressing objects: 100% (43/43), done.
remote: Total 43 (delta 25), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (43/43), done.
From github.com:cjwirth/Kitura
 * [new branch]      develop    -> cjwirth/develop
 * [new branch]      fix-vagrant -> cjwirth/fix-vagrant
 * [new branch]      master     -> cjwirth/master
 * [new branch]      travis-ci-tests -> cjwirth/travis-ci-tests

$ git co fix-vagrant
Branch fix-vagrant set up to track remote branch fix-vagrant from cjwirth.
Switched to a new branch 'fix-vagrant'

$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Fixed port collision for 22 => 2222. Now on port 2200.
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
(中略)
==> default: Compiling Swift Module 'KituraSample' (1 sources)
==> default: Linking Executable:  .build/debug/KituraSample
==> default: make[1]: Leaving directory '/home/vagrant/Kitura'

ここまでこれれば準備完了です。

サーバを立てる

まずはVagrant環境に入ります。

$ vagrant ssh
Welcome to Ubuntu 15.10 (GNU/Linux 4.2.0-30-generic x86_64)

 * Documentation:  https://help.ubuntu.com/

  Get cloud support with Ubuntu Advantage Cloud Guest:
    http://www.ubuntu.com/business/services/cloud

そしておもむろに下記コマンドを叩きます。

$ Kitura/.build/debug/KituraSample
 INFO: spiListen(_:port:) /home/vagrant/Kitura/Packages/Kitura-net-0.2.0/Sources/KituraNet/HttpServerSpi.swift line 46 - Listening on port 8090

これでVagrant環境にサーバが立ちました。

初期設定をいじっていなければ、ホストのlocalhost:8090がゲストの8090にフォワーディングされる設定になっています。

確認してみましょう。

$ curl localhost:8091
You're running Kitura

成功っぽい! 環境ができたので今日はここまで。

まとめ

Kituraの提供しているVagrantの開発環境は現状壊れているので辛い。