행복을 담는 블로그

[Swift] iOS 의존성 관리자 비교: CocoaPods v.s. SPM (Swift Package Manager) 본문

Mobile/iOS (Swift)

[Swift] iOS 의존성 관리자 비교: CocoaPods v.s. SPM (Swift Package Manager)

hyun0zin 2025. 12. 24. 18:00

iOS 앱 개발을 하기 위해서는 외부 라이브러리나 프레임워크 (Firebase 등)를 가져와 사용해야합니다. 

이때 외부 코드를 프로젝트에 쉽게 추가하고, 버전을 관리하며, 업데이터를 도와주는 도구를 의존성 관리자 (Dependency Manager) 라고 합니다. 

현재 iOS 개발 환경에서는 두 가지의 주요 의존성 관리자인 CocoaPodsSPM(Swift Package Manager)를 사용합니다. 

이번 글에서는 두 의존성 관리자에 대해서 알아보고 비교해보도록 하겠습니다. 

 


 

CocoaPods

가장 오래되고 오랫동안 iOS/macOS 개발의 표준처럼 사용된 서드파티 의존성 관리자입니다. (Ruby 언어로 만들어짐)

 

CocoaPods 특징

  • 압도적인 라이브러리 지원: 거의 모든 iOS 라이브러리가 CocoaPods를 지원했습니다. (현재는 SPM도 대부분 지원합니다.)
  • 성숙도와 안정성: 오래된 만큼 다양한 케이스에 대응 가능하며 커뮤니티가 거대합니다.
  • 중앙화된 관리: Podfile이라는 설정 파일 하나로 모든 의존성을 명확하게 관리합니다.

 

CocoaPods 작동 방식

  1. Podfile이라는 텍스트 파일에 필요한 라이브러리 목록을 적습니다.
  2. 터미널에서 pod install 명령을 실행합니다.
  3. CocoaPods가 라이브러리들을 다운로드하고, 기존 .xcodeproj 파일 대신 .xcworkspace라는 새 작업 공간 파일을 만듭니다.
  4. 개발자는 이 .xcworkspace 파일을 열어서 작업을 해야 합니다.

pod install 후 생성되는 .xcworkspace 파일

 

CocoaPods 설치 방법

1. 터미널을 열고 Xcode 프로젝트 위치로 이동 후 아래 명령어를 작성합니다.

pod init

2. 생성된 Podfile을 열고, 아래 코드를 추가합니다.

pod 'FirebaseAnalytics'

 

라이브러리 목록 작성

 

3. 파일을 저장하고 터미널에서 아래 코드를 실행합니다.

pod install

 

4. 생성된 .xcworkspace 파일을 열어 xcode 프로젝트를 열어 작업합니다.

 


 

SPM (Swift Package Manager)

APPLE 이 직접 만든 공식 의존성 관리 도구입니다. Xcode 11부터 통합되어 별도의 설치 없이 Xcode에 내장되어 있습니다.

 

SPM 특징

  • Xcode 통합: 별도 도구(Ruby, CocoaPods)를 설치할 필요 없이 Xcode 내에서 바로(File > Add Packages...) 사용할 수 있습니다.
  • Apple 공식 지원: Apple이 직접 만들고 관리하므로 Swift 및 Xcode 업데이트와 호환성이 가장 좋습니다.
  • 분산형 관리: CocoaPods처럼 중앙 서버(Specs Repo)에 의존하지 않고, Git 저장소 주소를 직접 사용해 라이브러리를 가져옵니다.
  • 프로젝트 통합: .xcworkspace 파일을 따로 만들지 않고, 기존 .xcodeproj 파일에 직접 통합되어 프로젝트 구조가 더 깔끔합니다.
  • 빠른 속도 (빌드 캐싱): 의존성을 한 번 빌드하면 캐시(Cache)를 잘 활용하여 CocoaPods 대비 빌드 속도가 빠른 경향이 있습니다.

 

SPM 설치 방법

  1. Xcode 프로젝트 설정에서 File - Add Packages 로 이동합니다.
  2. Package URL을 검색합니다.
https://github.com/firebase/firebase-ios-sdk

3. 라이브러리 목록 중 Firebase Analytics를 추가합니다.

4. 기존 .xcodeproj 파일을 그대로 열어 작업합니다. 

 


CocoaPods v.s. SPM (Swift Package Manager) 비교 테이블

항목 CocoaPods (코코아팟) Swift Package Manager (SPM)
제공 주체 서드파티 (커뮤니티) Apple (공식)
설치 별도 설치 필요 (Ruby 기반) Xcode 내장 (설치 필요 없음)
설정 파일 Podfile (Ruby 문법) Xcode UI 또는 Package.swift (Swift 문법)
프로젝트 구조 .xcworkspace 파일 생성 (이 파일로 작업) .xcodeproj 파일에 통합 (기존 파일 사용)
빌드 속도 상대적으로 느릴 수 있음 상대적으로 빠름 (캐싱 효율 좋음)
생태계 매우 성숙 (오래된 라이브러리 지원) 빠르게 성장 중 (최신 라이브러리 표준)

 


 

어떤 것을 선택해야 할까요?

특별한 이유가 없다면 새로 시작하는 프로젝트는 SPM을 쓰는 것이 좋습니다. Firebase 역시 신규 프로젝트에는 SPM 사용을 권장하고 있습니다.

이 곳에서 확인할 수 있습니다. 

 

SPM을 추천하는 경우

  • 새로운 iOS 프로젝트를 시작할 때 (현재의 표준)
  • 별도 도구 설치 없이 Xcode 내에서 깔끔하게 관리하고 싶을 때
  • 더 빠른 빌드 속도를 원할 때
  • 프로젝트 구조를 단순하게 유지하고 싶을 때 (.xcworkspace 불필요)

 

CocoaPods를 고려하는 경우

  • 기존에 CocoaPods로 관리되던 프로젝트를 유지보수할 때 (SPM으로 마이그레이션하는 비용이 들기 때문)
  • 꼭 필요한 라이브러리가 SPM을 지원하지 않고 CocoaPods만 지원할 때 (최근엔 드물지만, 오래된 라이브러리의 경우 그럴 수 있습니다.)
  • Podfile의 고급 설정(예: post-install 스크립트)이 꼭 필요한 경우

 

지금까지 iOS 앱 개발의 대표적인 의존성 관리 도구에 대해 알아보았습니다.

각 프로젝트의 상황과 요구사항에 맞게 적절한 의존성 관리 도구를 선택하여 개발을 진행하는 것이 가장 중요합니다. 이번 글이 그 선택에 많은 도움이 되었길 바랍니다.