Ubuntuでオープンソース化されたSwiftを使ってみる

元々AppleがmacOSやiOSのアプリ開発向けに開発した言語であるSwiftが、
ずいぶん前にオープン化されてLinux上でもコンパイルできるらしいので、Ubuntu16.04の環境下で構築したときの手順をまとめる。

環境構築

まず以下のサイトから一式をダウンロードする。バージョンごとに分かれているが、執筆時の最新であるUbuntu16.04向けのSwift4.0をゲットした。

Swift.org

動作に必要なパッケージを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 Sandbox

IBMはサーバーサイドSwiftなるものも用意しているらしい。オープンソース化されたことにより、iOS開発者以外でも利用者が増えていくかもしれない。