バージョンをまたいでXcodeを使わなければならない時期が、一年に何回かはあるかと思います。 複数のプロジェクトにまたがってお仕事されている方はもちろん、単一のプロジェクトの方も、きっとそうでしょう。 複数のバージョンのXcodeを切り替えながら使うのは、なかなか煩雑な作業です。Apple Developerのサイトから必要なXcodeのバージョンをダウンロードしたり、コマンドラインでxcode-selectコマンドに煩わしいパスを入力して実行したりと、とにかく面倒です。 そんな面倒な作業から、ちょっとでも楽になれるツールがあります。「Xcode::Install」です。これを使うと、Xcodeのダウンロードからバージョン切り替えが、とてもかんたんになります。今回は、この「Xcode::Install」のインストール方法と使い方を紹介します。


インストール方法

予め、Apple Developerに登録したApple IDを用意しておいてください。Xcodeのダウンロードに必要です。

では、「Xcode::Install」をインストールしていきます。インストールは、gemコマンドでインストールします。ターミナルで、以下のコマンドを実行します。

$ gem install xcode-install

これでインストールは完了! たくさんのgemがインストールされるので、気になる方は、rbenvやbundlerを使用するといい感じになるかも(丸投げ)。

使用方法

早速コマンドを実行してみてもよいのですが、先に環境変数をセットしておくと、あとの作業が楽です。

Apple Developerのログイン情報を環境変数にセット

Apple Developer Programのアカウントの認証情報を、~/.bashrc~/.zshrcなどに定義しておくと、その後の作業が楽になります。

export XCODE_INSTALL_USER=[developer account id]
export XCODE_INSTALL_PASSWORD=[account password]

(いろいろ試した結果の挙動ですが)
Xcode::Installでは、ログイン情報をfastlaneのcredentials_managerを使用して保存するようです。 保存用のパスワードを環境変数FASTLANE_PASSWORDに定義した上で、Xcode::Installを一度実行すると、以降はXCODE_INSTALL_PASSWORDを環境変数から削除できるようです。

では、準備ができたので、使ってみます! Xcode::Installのコマンドはxcversionです。

インストール可能なXcodeのリストアップ

まずは、インストール可能なXcodeのバージョンをリストアップしてみます。

$ xcversion list

初回のコマンド実行時は、Apple Developer Programのアカウントを聞かれます。 Apple IDとパスワードの入力が求められるので、表示に従って入力してください。 また、二段階認証をしているアカウントの場合は、認証コードが、お使いのiPhoneやMac、SMSなどで届くので、番号をターミナルに入力してください。

リストアップされたでしょうか? ベータ版も含めて、たくさんのXcodeが利用できることがわかりました。

$ xcversion list
4.3.1 for Lion
4.3 for Lion
4.3.2 for Lion
4.3.3 for Lion
.
.
.

10.2
10.2.1
10.3 (installed)
11 Beta 7
11 Beta 6

Xcodeのインストール

必要なXcodeをインストールは、以下のコマンドを実行します。
xcversion install [インストールしたいXcodeのバージョン]です。

$ xcversion install 10.3
$ xcversion install "11 Beta 7"

たったこれだけで、Xcodeのインストールが始まります。Apple Developerのサイトで探す必要がないので、とてもかんたんです! なお、数GBのXcodeがインストールされるので、通信環境は良好なときに!! しばらく止まって見えることもありますが、じっと我慢です……。

インストールされたXcodeのバージョンを確認

インストールされたバージョンを確認しましょう。以下のコマンドを実行します。

$ xcversion installed
10.3	(/Applications/Xcode.app)
11.0	(/Applications/Xcode-11.Beta.7.app)

たしかに、インストールされていることが確認できました!

バージョンの選択

使用するXcodeのバージョンを指定するには、以下のコマンドを使用します。
xcversion select [使用したいXcodeのバージョン]です。

$ xcversion select 10.3
$ xcversion select 11.0

とちゅう、端末のパスワードの入力が求めらたかもしれません。でも、たったこれだけです!xcode-selectなどを実行しなくてもいいんです! これまでの煩雑な作業から開放されました!

選択しているXcodeのバージョン確認

選択しているバージョンを確認するときのサブコマンドは、selectedです。

$ xcversion selected

大丈夫そうですね!

実際に、起動してみます。

Xcodeのバージョン表示

問題なし、オッケー!

ベータ版をインストールしたら、新しい機能もシミュレータで試すことができますね。 いまは、iOS13のリリースが近いので、ダークモードのチェックをしちゃったり……。

ダークモードのチェック

なるほど!


Xcode::Installのちょっとしたつらみ

切り替えが必要なタイミングでは、何度もバージョンを往復することになります。 その際、いくつか辛いポイントがあるので、予め知っておくと良いでしょう。

バージョンを切り替えるたびに、iPhoneやiPadのシミュレーターがリセットされている?

確認したわけではないのですが、切り替えるたびに、シミュレータの状態がリセットされているようです。これはしょうがないことかもしれません。何度も、シミュレーターの設定を日本語にする面倒があったりします。

それさえも面倒という方は、プロジェクトをビルドするときのコマンドライン引数に-AppleLanguages (ja)を追加して、シミュレータを自動で日本語設定になるようにしておきましょう。 Xcodeの、Product > Edit Scheme > Arguments から設定可能です。

xcversion コマンドが、地味に打ちにくい

切り替える時期は、何度もxcversionと入力します。左手の薬指から人差し指を何度も使います。 僕は、左手が辛くなったので、エイリアスを設定しました。

alias xcv='xcversion'

これで、xcvだけで実行できるようになりました!ちょっと安泰。

まとめ

今回は、複数のバージョンのXcodeを使う必要のある人に向けて、「Xcode::Install」をご紹介しました。とにかく、かんたんな操作で、複数のXcodeを、そのインストール場所も意識せず切り替えることができるようになります。ぜひ、切り替え時期は、使ってみてください。本日は、以上です。