CocoaPods (https://cocoapods.org/)


OS X용 앱이나 iOS용 앱을 만들 때 오픈소스를 많이 사용합니다.

Podfile을 이용하여 오픈 소스를 현재 프로젝트에서 적용하여 사용할 수 있습니다.





Objective-C 프로젝트에서 CocoaPods를 이용한 오픈소스 관리


Java로 개발할 때 좋은 점 중 하나가 의존성 관리 도구인 Maven이나 Ivy의 존재였습니다. 여러 가지 라이브러리의 버전이나 의존적인 라이브러리를 표시해 주고 배포, 설치 및 제거가 쉬워 소스 코드를 공유해서 작업하는 경우에 많은 도움이 되었습니다. Objective-C로 주 개발 언어를 바꾸고 Xcode를 주 개발 도구로 사용하면서는 그런 좋은 경험을 할 수 없다는 것에 대한 아쉬움이 컸습니다.


그러던 중 Objective-C에서 사용할 수 있는 의존성 관리 도구인 CocoaPods를 사용하기 시작했는데 편리할 뿐만 아니라 좋은 라이브러리를 쉽게 찾을 수 있었습니다. CocoaPods의 역할은 의존성 관리 도구에만 한정되지 않습니다. 검색 기능을 사용해 어떤 오픈소스가 있는지 알 수 있고, 필요로 하는 라이브러리에 대한 정보를 얻을 수 있으며, 반대로 자신의 오픈소스를 홍보할 수도 있습니다.


이 글에서는 CocoaPods가 무엇인지 소개하고 CocoaPods를 사용해 오픈소스를 관리하는 방법을 간략하게 살펴보겠습니다.


CocoaPods란?


Objective-C를 이용한 OS X용 앱이나 iOS용 앱을 만들 때 오픈소스를 많이 사용한다. 이러한 오픈소스를 관리하는 방법으로는 압축 파일로 소스를 받아서 직접 프로젝트에 넣는 방법과 개발하고 있는 저장소에 오픈소스 저장소를 링크시켜 프로젝트에 넣는 방법이 있다. 첫 번째 방법은 버전 업데이트가 어렵다는 단점이 있다.


두 번째 방법은 해당 오픈소스의 의존성 라이브러리가 중복되어 로딩될 수 있는 문제가 있는다. 특히, 네임스페이스를 지원하지 않는 Objective-C의 특성상 이와 같은 경우 컴파일이 되지 않는다. 대표적으로 예로 Facebook의 iOS SDK에는 SBJson 라이브러리가 포함되어 있다. 그런데 이를 사용하려는 프로젝트에서 기존 SBJson 라이브러리를 사용하고 있었다면 사용하고 있던 SBJson 라이브러리를 제거해야 한다. 이후 Facebook에서는 포함되어 있던 SBJson 라이브러리 이름을 모두 변경해서 기존 SBJson 라이브러리를 사용하고 있던 프로젝트에 적용해도 이름이 충돌하지 않도록 수정했다.


이 두 가지 단점을 모두 제거할 수 있는 세 번째 방법이 바로 CocoaPods이다. CocoaPods를 이용하면 라이브러리 간 의존성 체크 및 라이브러리 버전 관리, 지원 OS 버전과 라이브러리 설정이 쉽다. CocoaPods에서 밝히는 CocoaPods의 목표는 오픈소스 라이브러리를 좀 더 쉽게 찾고 사용할 수 있게 중앙 집중화된 환경을 제공하는 것이다. 또한 Objective-C 의존성 관리를 위한 기본적인 기능들을 만족시키고자 하지만 한창 개발 중인 프로젝트이기 때문에 아직까지는 부족한 점들이 있다. 아직 모든 의존성 문제를 해결하지는 못하고 있으며 몇몇 규모가 큰 오픈소스는 포팅의 어려움 때문에 CocoaPods를 지원하지 못하는 경우도 있다. 하지만 많은 오픈소스가 점차 진입하고 있고 유사한 기능의 오픈소스도 쉽게 진입할 수 있기 때문에 적절하게 골라서 사용해야 한다.


cocoapods.org(http://cocoapods.org/) 사이트에서 CocoaPods에 관련된 문서와 온라인 라이브러리 검색을 제공하지만, 개발은 GitHub(https://github.com/cocoapods) 에서 이루어지고 있기 때문에 위키(https://github.com/CocoaPods/CocoaPods/wiki) 에서도 정보를 얻을 수 있다.


출처: http://d2.naver.com/helloworld/444849