##はじめに
今回はライブラリ管理ツールについてのそれぞれの特徴について調べたのでまとめてみようと思います。
##今回比較すること
まずはCocoapodsとCarthageから比較してみましょう。
実際に特徴とメリデメを踏まえて紹介していこうと思います。
これらはこの後登場するSMP(Swift Package Manager)に比べると比較的古参のパッケージマネージャーです。
###両者の特徴
CocoaPods
・歴史が古い(Objective-c時代からある)ため、対応しているライブラリが圧倒的に多い
・Podfileからライブラリ情報取得し、Podsプロジェクトと呼ばれる集約プロジェクトからframeworkを作成する
・Xcodeの仕様に依存する
Carthage
・ライブラリ提供者の個人の活動に依存する
・ライブラリ側はXcodeプロジェクトが必要
・事前にframeworkを作成
・.xcworkspaceや.xcodeprojに手を加えない
##両者のメリット・デメリット
###CocoaPods
メリット
・対応ライブラリが豊富
・なんと言っても導入、設定が簡単
・依存関係を対象にリンクしビルド全プロセスを自動化できる
・環境構築が早い(導入コストが低い)
・定義元へのジャンプが複数提示されて探しやすい ←これは知らなかった!
デメリット
・podfileはRubyで書かれているので多少知識が必要
・xcodeの内部仕様を利用しているため、パージョンアップ時に噛み合わなくなることがある ←これが一番大きい!
・ある程度ビルドに時間がかかる
###Carthage
メリット
・ビルド時間が早い
(一度frameworkを作成すればそれ以降はframework側でコンパイルが走ることがないため)
・xcode内部仕様の変更に影響を受けない
・libのビルドや更新が簡単になる
・CI/CDサービスとの連携が比較的簡単にできる
デメリット
・環境構築に実装するステップが多い
・対応ライブラリは多いがCocoaPodsに比べると少ない
・定義元へのジャンプ候補が出ないためリーディングがしにくい ←これは知らなかった!
##SPM
apple純正のライブラリ管理ツールです。
比較的最近登場したので、CocoaPodsやCarthageに比べると新しい。
###メリット
・xcodeをインストールすれば使える(環境構築が早い)
・apple純正
・依存関係を簡単に把握することができる
・Linuxで動作する
・依存関係を自動的に管理してくれる
###デメリット
・新しいため対応ライブラリが少ない
・特定のフォルダ構造に従う場合がある
・現在iOS、watchOS、tvOSなどの全てのプラットフォームをサポートしている訳ではない
##今回のまとめ
これからはSPMの時代になっていくと思います。
なんと言ってもapple純正がキラーワードです。
色々な企業の勉強会に参加させていただいていますが、SPMに移行するという議題で話されていることろもたくさんあるくらいです。
##参考記事
今回の記事は主にこちらを参考にさせていただきました。