😸

iOSのパッケージ管理ツールはどれが良いのか?

2021/12/31に公開

結論をいうと CocoaPods が良いかなと思います。

私のパッケージ管理ツールの変遷としては、まずCocoaPodsを数年利用していました。
その後は、CocoaPodsCarthageを併用していて、ライブラリの整備が完了した時点で完全にCarthageに移行しました。
Xcode12からは一手間加えないとCarthageが利用できなくなってしまったので、いい機会だと思いSwift Package Managerに移行しました。
2ヶ月くらい使ったのですが、CocoaPodsに戻ることにしました。

個人的に使ってみた感じのそれぞれのメリットデメリットを記載します。

CocoaPods

メリット

  • ライブラリをgit管理しておくと、cloneしただけでビルドができる

デメリット

  • xcworkspaceができてプロジェクトが汚染される
  • ビルドに時間がかかる
  • CocoaPodsの初期化に時間がかかる

Carthage

メリット

  • CocoaPodsと違いプロジェクトが汚染されない
  • ライブラリは事前にビルドされるので、プロジェクトのビルドが早い

デメリット

  • ライブラリをgit管理していても、ビルドする時にCarthageが入っていないとビルド出来ない
  • Swiftのバージョンが上がるたびにエラーが出る(SwiftのABIが安定したので解決してるかもしれない)
  • Xcode12からは一手間加えないとビルドが通らない

Swift Package Manager

メリット

  • Xcode標準でサポートしているので、ライブラリの追加削除が簡単

デメリット

  • ライブラリをプロジェクトと一緒にgit管理ができない

商用プロジェクトの場合は、ライブラリをgit管理できないSwift Package Managerのリスクは大きいかなと思います。
実際に、ある企業が出しているiOS向けのライブラリで使っていたのですが、利用しているtagが消えて大騒ぎしたことがあります。
デモプロジェクトで使う分には、簡単にライブラリを組み込めるのでおすすめです。

商用利用するとなるとCocoaPodsCarthageかと思いますが、Carthageの場合はビルド時に必要なので、開発とは別のPCでクローンしてビルドしようとした時にすぐに動かせないことがあります。
プロジェクトの汚染が我慢できるならCocoaPodsが一番手軽で安全だと思います。

Discussion