LoginSignup
33
25

More than 5 years have passed since last update.

iOSの開発でBuildを高速化した話

Last updated at Posted at 2016-11-21

環境

xcode8.1
swift2.3
optimization Level None [-o0]
iMac5kのフルスペック

課題

  • クリーンからビルドして、平均10分かかり、開発の進捗に影響がでているので改善したい

方針

  • ビルド時間の平均を5分を目標にする(5分くらいならストレスが溜まらないと思い目標にした)

改善策

CocoaPodsからCarthageに置き換える

利点

  • CocoaPods の場合はライブラリをアプリ本体と一緒に都度ビルドしますが、Carthage の場合はライブラリ導入時にのみビルドするのでライブラリのビルド時間分だけ短縮される

 導入方法

注意点

  • Carthageに対応してないライブラリがあるとCocoaPodsと二重管理になる
  • Carthageで管理しているライブラリを頻繁にアップデートするとパッケージのビルド時間が多くなるのでトータルのビルド時間が多くなる carthageのビルド時間のトータルは使い方次第

Embedded Frameworkの導入

利点

  • アプリのコードをターゲットに分割して、Frameworkとして扱うことができる
  • コードが分割されるので差分コンパイルがききやすくなる
  • Frameworkに分割することで依存関係がはっきりする
  • Frameworkごとにテストを行える

導入方法

  1. File → New → TargetでCocoa Touch Frameworkを選ぶと Embeed Framework用のターゲットが追加される
  2. メインターゲットで使用したいクラスでimportすれば使えます Embedded Framework使いこなし術

導入したプロジェクトでの分け方

Network層

  • Networkに依存したクラスを定義

永続化層

  • DataBase、UserDefault関連
  • Modelとの依存関係が強いものもここに含まれる

イベントトラッキング層

  • GoogleAnalyticsなどの計測まわりのクラスを定義

ライブラリ層

  • 依存関係を持たず、使い回すクラスやメソッドを定義
  • アプリで使うkeyなどもここに定義されている

注意点

  • Embedded Framework同士で依存関係がある場合はbuild PhasesTarget dependenciesに含めて設定をする
  • Embedded Frameworkのターゲットで使用したライブラリはメインターゲットにもインストールが必要です(CocoaPodsやCarthgeを使うときに注意)

結果

  • クリーンした状態からのビルドが改善する前は10分かかっていたのが 5分に短縮!!
  • アーカイブの時間も20分から10分に短縮することに成功:tada:

感想

  • 今回やってみて、既存のプロジェクトのコードをEmbedded Frameworkに対応させるために多くの書き直しが必要になりました.
  • 最初の段階でEmbedded Frameworkに対応しておくのをおすすめします(1週間ぐらいかかりました:astonished:)
  • Frameworkに分割するために依存関係を整理できたのでコードが読みやすくなった
  • 差分ビルドがききやすくなったのでビルド時間によるストレスがなくなった:smile:
  • Embedded Frameworkの設定でつまずいたら、mozilla-mobile/firefox-iosのプロジェクトを確認することで解決することができた
  • Firefoxは偉大:innocent:

参考リンク

33
25
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
33
25