swiftenvでSwiftのバージョンを管理する

swiftenvでSwiftのバージョンを管理する

f:id:moapp:20160602170720p:plain

Swift3.0の開発版が公開されてからSwiftの2系と3系の間のタイミングである今、iOSなどのアプリ開発ではSwiftの2系、Swift3の変更点の確認ではSwift3.0というような使い分けをする場面が出てくるかもしれません。

そのような時こそSwiftのバージョン管理をしてくれるswiftenvがオススメです。

Homebrewからswiftenvをインストールする

Macで簡単に設定をするためにHomebrewからインストールします、ターミナル上から下記コマンドを入力します。

brew install kylef/formulae/swiftenv

swiftenvのpathを設定する

インストールが完了したらswiftenvのパスを設定します、使ってるシェル環境に合わせて設定しましょう。

bash

~/.bash_profileの部分は環境によって変わると思うので、環境に合わせて~/.bashrcなり変更してください

echo 'if which swiftenv > /dev/null; then eval "$(swiftenv init -)"; fi' >> ~/.bash_profile

zsh

echo 'if which swiftenv > /dev/null; then eval "$(swiftenv init -)"; fi' >> ~/.zshrc

fish

echo 'status --is-interactive; and . (swiftenv init -|psub)' >> ~/.config/fish/config.fish

swiftenvを反映する

swiftenv側で設定してるSwiftを参照するように反映させます。

swiftenv rehash

swiftenvを動かしてみる

swiftenvコマンドを入力してヘルプが出れば設定が正常に完了になります、基本的にはpyenvrbenvと使い方は変わりません。

$ swiftenv 
Usage: swiftenv [--version] <command>

  version   Displays the current active Swift version
  versions  Lists all installed Swift versions
  global    Sets the global version of Swift
  local     Sets the local application-specific version of Swift
  install   Installs a version of Swift
  uninstall Uninstalls a specific Swift version
  rehash    Installs shims for Swift binaries

Visit https://swiftenv.fuller.li for more info.

現在の環境で設定されてるSwiftのバージョンを確認する

swiftenvで管理してるSwiftのバージョンのうち、設定してるバージョンを確認します。

systemというのがswiftenvで管理する前からインストールされているSwiftになります。

$ swiftenv version
system (set by /Users/__moai/.swiftenv/version)

swiftenvで管理してる複数のSwiftのバージョンを確認する

swiftenvで管理してるSwiftのバージョンの一覧を確認します。

下記のようにsnapshotのタグ名で管理されていることが分かります。

$ swiftenv versions
* system
  3.0-preview-1-SNAPSHOT-2016-05-31-a
  DEVELOPMENT-SNAPSHOT-2016-05-09-a
  2.2

設定するSwiftのバージョンを変更する

swiftenvでSwiftのバージョンを切り替える際は、localglobalという概念の2種類があります。

localがそのディレクトリ内だけでSwiftのバージョンを変えたい場合、globalが全てのディレクトリでSwiftのバージョンを変えたい場合に使い分けます。

まずはglobalでSwiftのバージョンを変更してみます。

swiftenv global 3.0-preview-1-SNAPSHOT-2016-05-31-a

Swiftのバージョンが変わったどうか確認します。

$ swift --version
Apple Swift version 3.0-dev (LLVM 3863c393d9, Clang d03752fe45, Swift e996f0c248)
Target: x86_64-apple-macosx10.9
$ swiftenv version
3.0-preview-1-SNAPSHOT-2016-05-31-a (set by /Users/__moai/.swift-version)

このようにSwiftから見ても、swiftenvから見てもバージョンを変更したことが確認できます。

それでは続いてlocalでSwiftのバージョンを変更してみます。

ここではhogeディレクトリを新しく作成し、その中でSwiftのバージョンをsystemに変更します。

mkdir hoge
cd hoge
swiftenv local system

ここで変わったことを確認します。

$ swift --version
Apple Swift version 2.2 (swiftlang-703.0.18.8 clang-703.0.31)
Target: x86_64-apple-macosx10.9
$ swiftenv version
system (set by /Users/__moai/hoge/.swift-version)

Swiftのバージョンが先ほどと同じswiftenvを入れる前のSwiftのバージョンになっていることが確認できました。

仕組みとしてはlocalで切り替えたSwiftのバージョンは、ディレクトリ内に.swift-versionというファイルが作成されており、その中でSwiftのバージョンが記載されています。

なのでhogeディレクトリ内のSwiftのバージョンを再度globalのSwiftのバージョンに変更したい場合はこの.swift-versionを削除すれば反映されます。

rm .swift-version

おわりに

このようにSwiftのバージョン管理を楽にしてくれる便利なswiftenvの紹介でした。

みなさんもどんどんバージョンアップが進むSwiftの変更を追いかける際の便利な道具として是非試してみてください。