注意 : Swift の仕様がまだ全然安定してないので README に書いてある通りの環境を用意するのが基本となります。ここに書いてあることはすぐ風化する恐れがあります。
Swift を勉強したかったのですが、アプリを作るのは飽きてしまったので、Kitura をやってみることにしました。
現在 Kitura の master ブランチは Swift 3 の最新版に対応済みとなっていて、今から Swift を勉強するなら 3 だろうということで、これを頑張って動かすことに。
ビルド環境
コミット 55e73b24 の README に書いてある docker のやり方は現時点では動きません(docker の image が更新されていない)
README からビルドに必要なものを読み取り、自作します。
- Swift は
DEVELOPMENT-SNAPSHOT-2016-06-06-a version of Swift 3 trunk (master)
- 依存パッケージは公式ページで確認
- ubuntu は 14.04 か 15.10
- Kitura の依存パッケージは README で確認
-
libdispatch なるものが必要。
- こいつのコミット 7b5b57c3 のインストール手順では
Initial focus is on ubuntu 15.04.
と書かれている。 - こいつもまた複数のパッケージに依存する
- こいつのコミット 7b5b57c3 のインストール手順では
ということで、まとめると ubuntu 15.10 に Swift 3 DEVELOPMENT-SNAPSHOT-2016-06-06-a と libdispatch をインストール すればビルドできそうです。
docker で環境作成
上記のビルド環境はおそらくガンガン変わっていくのが予想されるので、下記のような感じで docker で作成することにします。
FROM ubuntu:15.10
RUN apt-get update -y && apt-get install -y \
curl git build-essential \
clang libicu-dev \
autoconf libtool libkqueue-dev libkqueue0 \
libcurl4-openssl-dev libbsd-dev libblocksruntime-dev \
pkg-config systemtap-sdt-dev
RUN curl https://swift.org/builds/development/ubuntu1510/swift-DEVELOPMENT-SNAPSHOT-2016-06-06-a/swift-DEVELOPMENT-SNAPSHOT-2016-06-06-a-ubuntu15.10.tar.gz > /tmp/swift.tar.gz && \
tar -xvzf /tmp/swift.tar.gz --directory / --strip-components=1 && \
rm -f /tmp/swift.tar.gz
ENV PATH /usr/bin:$PATH
RUN git clone --recursive -b experimental/foundation https://github.com/apple/swift-corelibs-libdispatch.git && cd swift-corelibs-libdispatch && sh ./autogen.sh && ./configure --with-swift-toolchain=/usr --prefix=/usr && make && make install
サンプルをビルドして実行してみる
下記コマンドで swift の環境を起動します。 8090 ポートにサーバが立つので予め開けておきます。
docker build -t swift-kitura .
docker run --privileged -p 8090:8090 -i -t --name mykitura swift-kitura /bin/bash
サンプルは Kitura-Sample を動かしてみます……が、 現時点では master にあるものは SwiftyJSON が古いらしくビルドが通りません。 develop ブランチがあるのでそちらを clone して試しましょう。
git clone https://github.com/IBM-Swift/Kitura-Sample -b develop && cd Kitura-Sample
make run
Starting an HTTP Server on port 8090...
と表示されてから、 localhost 8090 にアクセスして下記のように表示されれば成功です。
以上となりますが
お察しの通り、 Swift の勉強はまだ一切できておりません。 Docker のいい勉強になりました(開き直り