[email protected][email protected]いた雑談のなかで、swiftenvというものを教えてもらいました。その名の通り、plenvやpyenvといった複数バージョン切り替えツールのSwift版です。オープンソース版Swiftは定期的にスナップショットビルドが公開されていますが、swiftenvを使えばそれらをコマンド一発でインストールしたり切り替えたりできます。

インストール

OSX環境で試したのでHomebrewを使いました。

% brew install kylef/formulae/swiftenv

.zshrcに下記の内容を追加します。

path=($HOME/.swiftenv/bin(N-/) $path)
if which swiftenv > /dev/null; then
eval "$(swiftenv init - zsh)"
fi

使い方

基本的にplenv等と同じような使い方ができます。

swiftenv versionsでインストールされているSwiftのバージョンの一覧を表示します。*印が付いているのが現在使用中のバージョンです。

% swiftenv versions
* system
swift-2.2-SNAPSHOT-2015-12-01-a
swift-2.2-SNAPSHOT-2015-12-10-a
swift-2.2-SNAPSHOT-2015-12-22-a
swift-latest
swift-2.1.1

swiftenv globalswiftenv localで使用するSwiftのバージョンを切り替えられます。

% swiftenv global swift-2.2-SNAPSHOT-2015-12-22-a
% swiftenv versions
swift-2.2-SNAPSHOT-2015-12-01-a
swift-2.2-SNAPSHOT-2015-12-10-a
* swift-2.2-SNAPSHOT-2015-12-22-a (set by /Users/shun/.swiftenv/version)
swift-latest
swift-2.1.1

すでに公開されている全スナップショットビルドをインストール済みだったので試していませんが、swiftenv installで指定したバージョンもインストールできるはずです。

Swiftは(オープンソース化される前から)バージョンごとの変化が激しく、特定のバージョンではビルドできるコードが別のバージョンではビルドできないといったケースが多いので、こういったバージョン切り替えツールは重宝しそうです。また、Python界ではtoxという複数バージョンのPythonでテストを行えるツールが広く利用されていますが、似たようなことをSwiftで実現する場合のバックエンドとしても活用できるのではないかと期待しています。