私は個人的にRailsのプロジェクトも担当していますが、Railsで変更をしたら大概の場合ファイルをsaveするだけで変更が反映されるのに対し、iOS開発では一旦ビルドし直さないといけません。しかもそのビルド時間は数分かかり、集中力が途切れ非常に公立の悪さを感じていました。そこでXcodeプロジェクトのビルド時間短縮を試みて様々な方法があることがわかったのでまとめたいと思います。
全ての下準備: ビルド時間を計測できるようにする
以下のコマンドを打ってから、Xcodeを再起動するとビルド時間が表示されるようになります。
$ defaults write com.apple.dt.Xcode ShowBuildOperationDuration YES
ちなみに私の環境でとあるプロジェクトのビルド時間は179秒でした。一回のビルドにこれだけ時間がかかっていれば集中力が無くなってしまします。
処理を並列化する
デフォルトの環境だとXcodeでのビルドは並列処理されないのですが、設定することで並列処理することができます。
下準備: MacのCore数を確認する
下記のCore数を確認できます。
$ system_profiler SPHardwareDataType
これでCore数は2だということが分かりました。
並列数の設定
次に以下のコマンドでコンパイルの同時実行数を2にします
$ defaults write com.apple.dt.Xcode IDEBuildOperationMaxNumberOfConcurrentCompileTasks 2
ただし、並列タスク数を上げればいいというわけでもないらしく、並列数をこれ以上上げても芳しい結果は得られませんでした。
結論としてはコア数と同じが良いということですね。
参考:
http://llcc.hatenablog.com/entry/2016/01/15/235114
http://qiita.com/rizumita/items/913b05d799b3712260f6
dSYMファイル
Xcode7.1からはデフォルトでこの設定になっているのですが、それ以前からあるプロジェクトではそうなっていません。ここで、その設定をしましょう。・・・・・・
参考:
http://fnet-tech.blogspot.jp/2016/05/xcode.html
CocoaPodsのコンパイルをスキップする
あまり推奨できる方法ではないですがCocoaPodsでダウンロードしたモノはあまり更新するわけではないのでビルドの度にコンパイルするのは効率的ではありません。そこでこの設定です。
・・・・・・・・・・・・・・
Carthageを導入する
ライブラリ管理にはCarthageもあります。仕組みの違い上Carthageの方が早いので対応しているライブラリはCarthageに移行するのも良いでしょう。
参考: http://qiita.com/nori0620/items/b81ae171f0e82b0c2d8a
他に
コンパイルに時間がかかっているファイルを特定し、改善する
コンパイルに時間がかかっているファイルがあったらそれを改善して早くするというのがあります。
私の場合はこの手法で上手く行く箇所が見つけられませんでしたが、型推論を明示的にすることでコンパイル時間の短縮になることが多いようです。
参考: http://qiita.com/rizumita/items/913b05d799b3712260f6
他にもあれば教えて下さい。