第4回カジュアルSwift勉強会@青葉台に参加していたのですが、その休憩時間中にしていた雑談のなかで、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 global
やswiftenv 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で実現する場合のバックエンドとしても活用できるのではないかと期待しています。