はじめに
iOSアプリを開発する中で避けて通れないのが Xcode 周りの扱いです。
とは言え、個人でのアプリ開発であれば、そこまで工夫せずともビルド待ち時間に困ったりすることはないかもしれません。
ですが、業務で扱うような大規模なアプリ開発となると、やはり様々な工夫が必要になることでしょう。
その中の一つに『 Xcode の環境変数を有効に利用すること』が上げられます。
今回はその『 Xcode の環境変数』に関するメモ書きを残しておこうと思います。
Xcodeプロジェクトの環境変数を調べる方法
Xcode の環境変数と一言で言っても、種類はかなりの数に上ります。
Xcode Help > Build settings referenceに一覧があるので、ざっと見てみるのも良いかと思います。
ただ、毎回、「あの環境変数はどんな名称だったっけ…?」という時にリファレンスを見るのも手間がかかります。
そこで、Xcode で用意されている、「環境変数を確認するためのコマンド」を積極的に利用しましょう。
使い方はシンプルで下記のようになります。
.xcodeproj ファイルと同階層に移動して、以下コマンドを叩きます。
1
| |
すると、
1 2 3 4 5 6 7 8 9 | |
のように結果が表示されます。
思ったよりも大量に出力されるため、初めから探したいものが決まっている場合は grep コマンドを利用して出力させて見るのが良いでしょう。
例えば、
1
| |
のような感じで…。
Xcodeの環境変数の利用実践例
環境変数の調べ方がわかったところで、実践例を紹介しておきたいと思います。
環境変数の実践利用①
例えば SwiftLint を利用して静的解析をかける場合、常に SwiftLint を実行する必要はありません。
手元での開発時や、社内展開時のCI/CDツールにかける時に実行する場合が多くなるかと思います。
そんな時には、 Build Phases で下記のように設定することでしょう。
1 2 3 4 5 | |
環境変数の実践利用②
例えば、 Carthage でOSSライブラリを管理している場合、 Debug 時と Release 時で利用する/利用しないライブラリが別れていることがあるかもしれません。
その場合は、 Build Phases の Input File Lists と Output File Lists で指定するファイルのパスを工夫する必要があります。
まずは下記のように、 Input File Lists と Output File Lists 用のファイルを格納する構造をプロジェクト内に作ります。
1 2 3 4 5 6 7 8 9 10 11 12 | |
続いて、 Carthage 利用時に指定する Build Phases > Run Script 内の Input File Lists と Output File Lists にそれぞれパスを指定するだけです。
1 2 3 4 5 | |
因みに、 Input File Lists や Output File Lists を使わずとも、実践例①と同様にシェルスクリプト内で ${CONFIGURATION} を利用する方法もあるのでは?と思われるかもしれません。
確かに、その方法でも問題なく成立する場合もありますが、
- 変更時にファイルの
diffとして確認ができるので、レビューしやすい Xcode10からの新ビルドシステムが厳密なビルドを実行するため、エラーが出るパターンがある
ことから Input File Lists や Output File Lists を利用することを筆者はおすすめしたいと思います。
(後者でうまくいかないパターンは、 CONFIGURATION を変えると、複数のターゲット間で Input/Output するモジュールが入れ替わる場合などです。 )
まとめ
さて、最近、 Xcode の環境変数周りを触る機会が久しぶりにあったためメモ書き程度に書き記しました。
忘れがちなので心に留めておきたいですね。
と言うことで本日はここまで。