Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Carthage移行した話@potatotips#51

11d3072d628a7b976cd2f4e6a3cf750f?s=47 aboy
May 23, 2018

 Carthage移行した話@potatotips#51

11d3072d628a7b976cd2f4e6a3cf750f?s=128

aboy

May 23, 2018
Tweet

Transcript

  1. Carthage 移行した話 aboy

  2. aboy(@suxisuxido) 株式会社アイスタイル Web 2 年 iOS 1 年~ <- 今ココ

    (Flutter)
  3. 宣伝: Go(Un)Conference (Go あんこ) LT 大会 2kg https://gounconference.connpass.com/event/86221/

  4. 5 分で話すこと話さないこと 話すこと Carthage 移行した背景 実際どれくらいビルド時間が短縮されたか Carthage 移行でつまづいたところ 話さないこと CocoaPods/Carthage

    の仕組み Carthage の導入方法
  5. みなさんビルド時間どれくらいかかってますか?

  6. @ cosmeアプリ は約360 秒でした ※ フルビルド, 4 並列

  7. ビルド時間が増えることによる影響 企画やデザイナー に爆速で見せたいのに見せられない 手元or 配信でも時間がかかる 単純に無駄な時間が発生する 待ってる間に別のことできるほど器用じゃない ストレスが溜まる 最終的にはユー ザー

    に価値を提供するのが遅れる
  8. ビルド時間が増える原因 単純にプロジェクトがでかい、 ファイル数が多い 型推論に時間がかかる書き方になっているところがある ライブラリ管理にCocoaPods を使っている マシンスペックが低い ビルド設定 etc

  9. ビルド時間が増える原因 単純にプロジェクトがでかい、 ファイル数が多い 型推論に時間がかかる書き方になっているところがある ライブラリ管理にCocoaPods を使っている マシンスペックが低い ビルド設定 etc

  10. なぜCocoaPods が遅いのか いや別に遅くないよ Framework をつどビルドするから Framework のコンパイル時間が単純に加算される

  11. そこでCarthage ですよ

  12. Carthage とは 話しません https://github.com/Carthage/Carthage Carthage is intended to be the

    simplest way to add frameworks to your Cocoa application. Carthage builds your dependencies and provides you with binary frameworks, but you retain full control over your project structure and setup. Carthage does not automatically modify your project les or your build settings. “ “
  13. どうやってやっていったか

  14. どうやってやっていったか まず「 私やります 」 と宣言 開発案件は止められないので、 開発やりつつ1 時間/1 日くらいを Carthage

    移行に使った ライブラリの導入方法を変えることは非エンジニアにも共有 どれくらい効果があったか、 チー ムメンバー/ マネー ジャー/ その他に 説明できるように数字を記録 影響範囲がほぼ全画面に及ぶため、 リリー ス前にiOS チー ム総出でア プリ全体の動作を確認
  15. どれくらいはやくなったか

  16. どれくらいはやくなったか 360s -> 280s (80s 早くなった! ) CocoaPods 38 個

    -> 16 個 Carthage 0 個 -> 21 個
  17. Carthage 移行でハマったところ

  18. Carthage 移行でハマったところ Alamo re 利用箇所の一部で call of deleted method CocoaPods

    の他ライブラリの依存解決で入っていた違うバー ジョ ンのAlamo re を参照していた =>Alamo re に依存していたライブラリを全てCarthage 経由に変更 iTunesConnect アップロー ド時、info.plist にプライバシー の記述がな い! と怒られた Carthage 移行の際にFacebookSDK のバー ジョンが上がったこと で、bluetooth を使う処理が追加されていた => これはごめんなさい。 同じバー ジョンをCarthage 経由で入れるこ とができなかったのでCocoaPods 経由に戻しました
  19. おわりに CocoaPods からCarthage に変えたらビルド時間が速くなった そもそもCocoapods がボトルネックではなかったものの、 Carthage 移行だけで80s 短縮はうれしい 動作確認は怠らないようにしよう

    こういうときにテストがあると助かりますね... Carthage 使うならこれこうしたほうがいいよとかあれば教えてくだ さい...
  20. おしまい。