株式会社Nanameue(http://nanameue.jp/?lang=ja)
iOSエンジニアのbatiです
Objective -CからSwiftに乗り変えて2か月。
今は新規プロジェクトをPure Swift でやっている状況で、
そろそろ、Swift最高じゃんもうObjective-Cには戻れないわ
と感じている頃です。
Swiftは非常に便利なのですが、プロジェクトが大きくなるとコンパイルに時間がかかる時がかかることがしばしばあることが問題視されています。
##具体的な状況##
・ 環境 Macbook Air メモリ8G
・ Xcode version 7.3
・ 言語 Swift2.2
・ Swiftファイル200(リリース時期になるとおそらく250くらいにはなるでしょう、今後アップデートも含めると最高300にはなりそうです)
##ググった結果##
こういう時はググりましょう
ということでググった結果以下の記事が出てきました
型推論をなくそう系
http://cocopon.me/blog/?p=5447
http://qiita.com/rizumita/items/913b05d799b3712260f6
複数のmoduleにしてみたら系
https://developers.eure.jp/ios/advent-calendar-18/
いやいや全てを一つのSwift.fileで書いてみたら系
https://speakerdeck.com/mpon/swift-compile-time-is-so-slow
##一通りやってみた結果##
型推論をなくそう系
とりあえず、わかりきってる型でも型推論allなしでしてみた結果 20秒短縮
複数のmoduleにしてみたら系
これはそもそもめんどくさい
いやいや全てを一つのSwift.fileで書いてみたら系
これは全体の1/10くらいで挫折しましたが、ビルド時間3秒でした
まあ、ググってやってみたが、そんなに効果はない
##そもそもなぜObjective-Cに比べて遅いのか##
Swiftにはクラスをimportするという概念がないからです。importするのはmoduleだけで、
publicなクラスを作った時点で、全てのfileからアクセスできます。
つまり、全てのfileからアクセスできるようにするのに、時間がかかるということです。
またSwiftのコンパイラの仕組みは以下の記事が非常に参考になりました
##ではどうやって解決すればいいのか##
このままでは、Swift.file300に到達してしまいます。
そんな状態でarchiveしたらどうなるでしょう。。。
そこで弊社社長のツルの一声
Mac Proにしたら良くなると思うよ、買ってあげようか
なんてホワイトなベンチャー企業でしょうか
会社の金で買っていただいた27万のMac Proで早速試したところ、
build時間が5分→1分に!!!!!!
ということで、皆さんもこれを機にMac Proにしてみましょう