ライブラリ管理selliOS,Cocoa,CocoaPods,Swift,CarthageどちらでもSwiftを扱えるようになりつつある今Cocoa関係のライブラリの依存管理としてはCocoaPodsがデファクトな状態でしたが、11月に新しいライブラリ依存管理システムのCarthageが登場しました。その時点ではCocoaPodsがまだSwift対応(ダイナミックフレームワーク対応)が遅れていたこともあり、各記事が盛り上がったり、対応してるSwiftライブラリも見かけるようになりました。betaがクリスマスにリリースされ、どちらでもSwiftのライブラリが扱える状態が整いつつあります。CocoaPodsの項が参考になった&面白かったので翻訳して載せておきます。created?CocoaPodsは定番のCocoaの依存管理マネージャーです。unintrusive.まず第1に、CocoaPodsは(デフォルトでは)、自動的にアプリケーション用のXcodeのワークスペースと全ての依存関係を作成及び更新を行います。Carthageはframeworkのバイナリをxcodebuildを使ってビルドしますが、プロジェクトへの統合まではせず、統合する作業はユーザに任せます。CocoaPodsのアプローチはユーザにとって使いやすく、一方でCarthage側は柔軟で押し付けがましくないアプローチです。サードパーティ製のオープンソースライブラリを、より見つけやすく、より関わりやすくしていくことです。similar.対照的にCarthageは反中央集中型の依存管理マネージャーです。Carthageにはプロジェクトの一覧はありません、これはメンテナンスの仕事の負担を減らし中心障害点をなくすことができます。プロジェクトを探す作業は難しくなります。ユーザはGithubのトレンディングページを並び替えたり、似たような方法でからプロジェクトを探す必要があります。fileとして知られている仕組みを持っていて、そのファイルにプロジェクトやビルド方法の定義等のメタデータを記述します。Carthageは依存をビルドする際にワークスペースの中にプロジェクトを統合するのではなく、xcodebuildを使います。そのような仕様用のファイルは必要ありません。プロジェクトをどのようにビルドするかの依存関係はプロジェクト自身のXCodeプロジェクトに含まれている必要があります。complexity.結局のところ、私達は私達自身が、できるだけシンプルな依存管理マネージャーがほしかったからCarthageを作りました。XCodeの役割を乗っ取ることなく、フレームワークの作者に余計な仕事を増やすことなく、動作するシンプルなものが。CocoaPodsは(Carthageが決して持つことのない)驚くほど多くの機能を提供しています。複雑さが増えるという対価と引き換えに。感想Carthageは単に早めにダイナミックフレームワークに対応した依存管理システムというだけでなく、CocoaPodsに対する明確な不満から生まれ、別の点を目指してる依存管理システムであることがわかります。他でできることは他に任せシンプルさを保つCarthageと、全てを請け負い何でもできるCocoaPods。僕もCarthageを利用してみましたが、たしかにワークスペースなしで、XCodeの仕組みをそのまま使って動かすことができる点はシンプルで変なハマりかたすることも少なそうで良いなと思いました。いえ既にCocoaPodsは普及しきっているので、CocoaPodsにしかないライブラリに依存すると結局ワークスペースが必要になるという点は気になります。いってもCarthageはSchemeをshareに設定するだけで対応できるので、もちろん自分でフォークしてCarthageに対応させたり、PR送って対応してもらう等は可能ですが。CocoaがCarthageのキラーライブラリになって一気に普及したりするのか...。趨勢が見えてくるまでには、しばらく時間がかかりそうですね。