はじめに
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
の環境変数周りを触る機会が久しぶりにあったためメモ書き程度に書き記しました。
忘れがちなので心に留めておきたいですね。
と言うことで本日はここまで。