ぼくの薄い本

技術的なメモを残していく薄い本的なものです

Ubuntu16.04 に Swift4 をインストールして、swift package を簡単に使ってみる

swift が OSS になってしばらく経ち、サーバサイドなどにも使われるようになってきたので、僕も Ubuntu に入れてみました。

Swift.org の手順通りにやってもダメだったので備忘録で残しておきます。

あと、Swift3.0 で導入された Swift PackagManagerも簡単に使ってみました。

インストールするバージョン

  • Swift 4.0.2

動作環境

$ cat /etc/os-release
NAME="Ubuntu"
VERSION="16.04.3 LTS (Xenial Xerus)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 16.04.3 LTS"
VERSION_ID="16.04"
HOME_URL="http://www.ubuntu.com/"
SUPPORT_URL="http://help.ubuntu.com/"
BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"
VERSION_CODENAME=xenial
UBUNTU_CODENAME=xenial

インストール方法

ツールのインストール

$ sudo apt-get install clang libpython2.7 libxml2

Swift.org の手順では、clang のインストールだけしか書いてなかったが、libpython2.7 がないとエラーが出たので、追加しておきました。libxml2 も同様。

error while loading shared libraries: libxml2.so.2: cannot open shared object file: No such file or directory

Swift のダウンロードとインストール

$ wget https://swift.org/builds/swift-4.0.2-release/ubuntu1604/swift-4.0.2-RELEASE/swift-4.0.2-RELEASE-ubuntu16.04.tar.gz
$ tar zxfv swift-4.0.2-RELEASE-ubuntu16.04.tar.gz
$ sudo mv swift-4.0.2-RELEASE-ubuntu16.04 /usr/local/swift

URL は変わる可能性もあるので、公式サイトで確認してください。 あとは /usr/local/swift/usr/bin に PATH を通せばOK。

確認

$ swift --version
Swift version 4.0.2 (swift-4.0.2-RELEASE)
Target: x86_64-unknown-linux-gnu

Swift Package を使ってみる

swift_test という名前のディレクトリを作って、Package の初期化を行います。

$ swift package init --type executable
Creating executable package: swift_test
Creating Package.swift
Creating README.md
Creating .gitignore
Creating Sources/
Creating Sources/swift_test/main.swift
Creating Tests/

すると、Hello, world!を出力するだけのテンプレートが生成されます。

ビルドしてみましょう。

$ swift build
Compile Swift Module 'swift_test' (1 sources)
Linking ./.build/x86_64-unknown-linux/debug/swift_test

.build/x86_64-unknown-linux/debug/swift_test に実行ファイルが生成されるので、それを実行します。

$ .build/x86_64-unknown-linux/debug/swift_test
Hello, world!

デフォルトでは debug ビルドになりますが、-c releaseをつけることで release ビルドになります。

$ swift build -c release
Compile Swift Module 'swift_test' (1 sources)
Linking ./.build/x86_64-unknown-linux/release/swift_test

デバッグ情報がなくなりバイナリサイズが小さくなるので、リリース時にはこちらを使うのが良いでしょう。Hello, world!を出力しているだけでも 3KB 減ったのでもっと大きいプロジェクトになると差が歴然としてくるでしょう。そうなるとキャッシュヒット率が上がると思います。

$ ls -lh .build/x86_64-unknown-linux/debug/swift_test .build/x86_64-unknown-linux/release/swift_test
-rwxr-xr-x 1 takuya takuya 18K Nov 13 11:24 .build/x86_64-unknown-linux/debug/swift_test
-rwxr-xr-x 1 takuya takuya 15K Nov 13 11:25 .build/x86_64-unknown-linux/release/swift_test

プラグインなどを使用したい場合やもっと細かい挙動を変えたい場合は Package.swift を修正してください。このあたりは僕も勉強して記事にしていきたいと思います。