December 26, 2015

swiftenvでSwiftのバージョンを切り替える

第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 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で実現する場合のバックエンドとしても活用できるのではないかと期待しています。

© Shun Takebayashi