Slide 1

Slide 1 text

Carthage 移行した話 aboy

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

5 分で話すこと話さないこと 話すこと Carthage 移行した背景 実際どれくらいビルド時間が短縮されたか Carthage 移行でつまづいたところ 話さないこと CocoaPods/Carthage の仕組み Carthage の導入方法

Slide 5

Slide 5 text

みなさんビルド時間どれくらいかかってますか?

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

そこでCarthage ですよ

Slide 12

Slide 12 text

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. “ “

Slide 13

Slide 13 text

どうやってやっていったか

Slide 14

Slide 14 text

どうやってやっていったか まず「 私やります 」 と宣言 開発案件は止められないので、 開発やりつつ1 時間/1 日くらいを Carthage 移行に使った ライブラリの導入方法を変えることは非エンジニアにも共有 どれくらい効果があったか、 チー ムメンバー/ マネー ジャー/ その他に 説明できるように数字を記録 影響範囲がほぼ全画面に及ぶため、 リリー ス前にiOS チー ム総出でア プリ全体の動作を確認

Slide 15

Slide 15 text

どれくらいはやくなったか

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

Carthage 移行でハマったところ

Slide 18

Slide 18 text

Carthage 移行でハマったところ Alamo re 利用箇所の一部で call of deleted method CocoaPods の他ライブラリの依存解決で入っていた違うバー ジョ ンのAlamo re を参照していた =>Alamo re に依存していたライブラリを全てCarthage 経由に変更 iTunesConnect アップロー ド時、info.plist にプライバシー の記述がな い! と怒られた Carthage 移行の際にFacebookSDK のバー ジョンが上がったこと で、bluetooth を使う処理が追加されていた => これはごめんなさい。 同じバー ジョンをCarthage 経由で入れるこ とができなかったのでCocoaPods 経由に戻しました

Slide 19

Slide 19 text

おわりに CocoaPods からCarthage に変えたらビルド時間が速くなった そもそもCocoapods がボトルネックではなかったものの、 Carthage 移行だけで80s 短縮はうれしい 動作確認は怠らないようにしよう こういうときにテストがあると助かりますね... Carthage 使うならこれこうしたほうがいいよとかあれば教えてくだ さい...

Slide 20

Slide 20 text

おしまい。