元々AppleがmacOSやiOSのアプリ開発向けに開発した言語であるSwiftが、
ずいぶん前にオープン化されてLinux上でもコンパイルできるらしいので、Ubuntu16.04の環境下で構築したときの手順をまとめる。
環境構築
まず以下のサイトから一式をダウンロードする。バージョンごとに分かれているが、執筆時の最新であるUbuntu16.04向けのSwift4.0をゲットした。
動作に必要なパッケージをUbuntu上にインストールしておく
> sudo apt install clang build-essential
ダウンロードしたパッケージを解凍する。解凍したパッケージのディレクトリ構成は、Linuxの/usr
配下の構成と同じなので、直接/usr
に上書きしても良いが、バージョンが今後も上がっていくのと、後述するがディレクトリのパーミッションを変更する必要があるので、上書きは止めて、/usr/local
配下のサブディレクトリに展開することにする。
> mv swift-4.0-RELEASE-ubuntu16.04.tar.gz /usr/local/
> cd /usr/local
> tar xvf swift-4.0-RELEASE-ubuntu16.04.tar.gz
:
> mv usr swift-4.0
上記のようにリネームされたswift-4.0
ディレクトリ以下のディレクトリに対して、パーミッションを実行ユーザに変更しておく。変更しないとコンパイルや実行でエラーが発生する。
> cd swift-4.0
> find . -type d -exec chown hoge:hoge \{\} \;
次に展開したディレクトリに対してパスを通す記述を**.bashrc**に追加する。
export SWIFT_BIN="/usr/local/swift-4.0/bin"
export SWIFT_LIB="/usr/local/swift-4.0/lib"
export PATH="${SWIFT_BIN}":"${PATH}"
export LD_LIBRARY_PATH="${SWIFT_LIB}":"${LD_LIBRARY_PATH}"
動作確認
Swiftを使うときは、swiftcでソースファイルをコンパイルして実行する方法と、REPL(Read–eval–print loop)と呼ばれる対話式でコードの1行ずつを実行する今風の方法がある。
まずはREPLを試す。やり方はswiftコマンドを実行して開始する。1行目から実行してエラーになってしまう場合、前述の展開モジュールのパーミッションが原因と思われる。正常動作する場合は、以下のような結果が出力される。
終了するときは、Ctrl+Dで抜けられる。
> swift
Welcome to Swift version 4.0 (swift-4.0-RELEASE). Type :help for assistance.
1> let str : String = "hello"
str: String = "hello"
2> print(str)
hello
次はswiftのソースファイルを作成してコンパイル&実行してみる。ソースの内容は先ほどと同じ。
import Foundation
let str : String = "hello world"
print(str)
コンパイルしてみる。指定しないと、ソースファイル名のモジュールが生成される。
> swiftc sample.swift
> ls
sample sample.swift
> ./sample
hello world
ちなみに環境を用意しなくとも、Webブラウザ上から上記のREPLのように確認するサイトがIBMで用意されており、GithubやBluemixのアカウントがあれば利用できる。
IBMはサーバーサイドSwiftなるものも用意しているらしい。オープンソース化されたことにより、iOS開発者以外でも利用者が増えていくかもしれない。