ライブラリのソースを追いたいならCarthageよりもPodsがいい

f:id:rasukarusan:20191230163053p:plain:w500

ビルドも早い、生成ファイルもシンプル、ゆえの管理の楽さでCarthage一択だろと思っていたが、CocoaPodsに軍配が上がる事柄を発見した。

ライブラリのソースを追っていくときはPodsのほうがいい

Carthageだとプロジェクト内にインストールされるのはframeworkのみで、いわゆるheaderファイルだけ提供されるイメージ。 対してCocoaPodsはソースファイルが丸ごとプロジェクト内にぶちこまれる。 この違いによるメリット・デメリットは色々あるけれど、コードリーディングする際に結構違うことがわかった。

f:id:rasukarusan:20191230171301p:plain:w500
Carthage・CocoaPodsの生成ファイルの違い

定義元ジャンプしたら違いがわかる

Alamofireappend()の動きを知りたくなり、定義元ジャンプしてみたら以下のような違いがあった。

まずはCarthageでインストールしたときの定義元ジャンプ

https://rasukarusan.github.io/blog-assets/xcode_cocoapods_jump/carthage.gif
CarthageでAlamofireをインストールしたときの定義元ジャンプ
メソッド内で何をしているのかはわからない。

見れるのはインターフェースのみで、中で何をしているのかはわからない。

対してCocoaPodsで定義元ジャンプをした時はこんな感じ。

https://rasukarusan.github.io/blog-assets/xcode_cocoapods_jump/pods.gif
CarthageでAlamofireをインストールしたときの定義元ジャンプ。
いくつか候補も出るし、中身も見れる。

コードリーディングする時はPodsのほうが断然良い

結構ライブラリ内のソース見に行くことってあると思うから、初めてそのライブラリ使うときとかは、理解を深める意味も含めてPodsで管理してみるってのもアリかもしれない。 ただ、普段のビルド時間とかを考えるとCarthage一択なので、悩ましいんだよなあ。ライブラリのソース見たくなったらTerminal移るってのもちょっと面倒。
XcodeじゃなくてVimで全部開発できれば解決する話ではある。