複数バージョンのXcodeを共存させ、かんたんに切り替えて使えるツール
Table of Contents
バージョンをまたいでXcodeを使わなければならない時期が、一年に何回かはあるかと思います。
複数のプロジェクトにまたがってお仕事されている方はもちろん、単一のプロジェクトの方も、きっとそうでしょう。
複数のバージョンのXcodeを切り替えながら使うのは、なかなか煩雑な作業です。Apple Developerのサイトから必要なXcodeのバージョンをダウンロードしたり、コマンドラインでxcode-select
コマンドに煩わしいパスを入力して実行したりと、とにかく面倒です。
そんな面倒な作業から、ちょっとでも楽になれるツールがあります。「Xcode::Install」です。これを使うと、Xcodeのダウンロードからバージョン切り替えが、とてもかんたんになります。今回は、この「Xcode::Install」のインストール方法と使い方を紹介します。
なお、2022年ごろからは「Xcodes」というアプリケーションを使うことが増えました。
GUIで簡単に切り替えられるだけでなく、ダウンロードとインストールを高速化するオプションもあり、大変便利です。
https://github.com/XcodesOrg/XcodesApp
インストール方法 #
予め、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
大丈夫そうですね!
実際に、起動してみます。
問題なし、オッケー!
ベータ版をインストールしたら、新しい機能もシミュレータで試すことができますね。 いまは、iOS13のリリースが近いので、ダークモードのチェックをしちゃったり……。
なるほど!
Xcode::Installのちょっとしたつらみ #
切り替えが必要なタイミングでは、何度もバージョンを往復することになります。 その際、いくつか辛いポイントがあるので、予め知っておくと良いでしょう。
バージョンを切り替えるたびに、iPhoneやiPadのシミュレーターがリセットされている? #
確認したわけではないのですが、切り替えるたびに、シミュレータの状態がリセットされているようです。これはしょうがないことかもしれません。何度も、シミュレーターの設定を日本語にする面倒があったりします。
それさえも面倒という方は、プロジェクトをビルドするときのコマンドライン引数に-AppleLanguages (ja)
を追加して、シミュレータを自動で日本語設定になるようにしておきましょう。
Xcodeの、Product > Edit Scheme > Arguments から設定可能です。
xcversion コマンドが、地味に打ちにくい #
切り替える時期は、何度もxcversion
と入力します。左手の薬指から人差し指を何度も使います。
僕は、左手が辛くなったので、エイリアスを設定しました。
alias xcv='xcversion'
これで、xcv
だけで実行できるようになりました!ちょっと安泰。
まとめ #
今回は、複数のバージョンのXcodeを使う必要のある人に向けて、「Xcode::Install」をご紹介しました。とにかく、かんたんな操作で、複数のXcodeを、そのインストール場所も意識せず切り替えることができるようになります。ぜひ、切り替え時期は、使ってみてください。本日は、以上です。