SlideShare a Scribd company logo
골라골라
Cocoa pod, Carthage, SPM!
이현호

mizzking75@gmail.com
Hello!
•이현호
•와디즈
•IOS 개발 6개월 차
•뮤지컬 (매우) 좋아함
What is Package Manager
•모든 것을 만들어 쓸 수 없으니 오픈소스를 쓰자
•프로젝트에 필요한 패키지를 관리해주는 녀석
•패키지 설치, 버전관리, 설정, 삭제
Why we need Package Manager?
•패키지 매니저가 없다면? 직접 설치
Why we need Package Manager?
•패키지 매니저가 없다면? 직접 관리
Sort of Package managers
•Cocoa pod
•Carthage
•SPM
History of Package Manager
•약 2011, 9월 CocoaPods
•약 2014, 11월 Carthage
•약 2017, 11월 SPM
Cocoa Pod
• https://cocoapods.org/

• Main 레포인 Specs에 중앙화

• gem을 통해 mac에 설치

• mac에는 이미 ruby가 설치되어있음

• Pod 명령어

• Init, install, update
How to use
• $ pod init

• $ vi Podfile

• Alamofire를 이용한 예제

• 간단한게 추가 가능

• cocoaPods 에서 확인 가능

• xcworkspace 파일을 열어서 사용
How to use
• 패키지를 import

• 간편하게 사용

• 검색 -> 추가 -> 설치 -> 사용
Pros and Cons
•한 군데서 검색해서 사용 가능
•어떤 오픈소스를 쓰고있는지 보기 편함
•버전과 종속성의 종속성을 관리 해줌
•많은 패키지들이 cocoaPod을 지원
Pros and Cons
•프로젝트를 빌드할 때마다 모든 종속 패키지들이 빌드되기 때문에 빌드 시간이 길다
•종속된 팟 라이브러리를 설치하고 업데이트 하는데 오래 걸린다
Carthage
• 코코아 팟의 단점을 보완해서 등장

• 프레임워크를 추가
How to use
•brew install carthage
•프로젝트 폴더에 Cartfile 작성
•github “Alamofire/Alamofire"
•carthage update --platform ios
How to use
•brew install carthage
•프로젝트 폴더에 Cartfile 작성
•github “Alamofire/Alamofire"
•carthage update --platform ios
How to use
1
2
How to use
2
3
Pros and Cons
•carthage update 명령어 사용시, 한 번 프레임워크로 빌드하며, 빌드 속도가 빠름
•어떤 오픈소스를 쓰고있는지 보기 편함
•버전과 종속성의 종속성을 관리 해줌
Pros and Cons
•새로운 패키지를 가져다 쓸 때 프레임워크를 추가해 줘야하는 번거로움
•새로운 프레임워크를 추가할 때 시간이 오래걸림
•지원을 하지 않을 수 있다 (요즘은 다 하는 것 같은…)
Swift Package Manager
•Xcode11 부터 사용가능
•Apple의 공식지원
How to use
•Xcode > File > Swift Packages > Add
•https://github.com/Alamofire/
Alamofire.git
•Finish
How to use
•Xcode > File > Swift Packages > Add
•https://github.com/Alamofire/
Alamofire.git
•Finish
Pros and Cons
•애플의 공식지원 👍
•설치과정이 매우 짧음
•어떤 오픈소스를 쓰고있는지 보기 편함
•버전과 종속성의 종속성을 관리 해줌
Pros and Cons
•아직 지원하지 않는 라이브러리가 많음(있음)
•해결중인 이슈가 있음
Open source library
Library Cocoa Carthage SPM
Alamofire O O O
SwiftyJSON O O O
ObjectMapper O O O
Kingfisher O O O
CoreStore O O O
SnapKit O O ?
SVProgressHUD O O X
Charts O O X
Hero O O O
https://github.com/SnapKit/SnapKit.git
Make a choice
•많은 라이브러리?
•빠른 빌드속도?
•간편함?
Make a choice
•많은 라이브러리?
•빠른 빌드속도?
•간편함?
Reference
• https://en.wikipedia.org/wiki/CocoaPods

• https://www.raywenderlich.com/6587213-alamofire-5-tutorial-for-ios-
getting-started

• https://github.com/Carthage/Carthage

• https://bugs.swift.org/browse/SR-12299?
jql=project%20%3D%20SR%20AND%20status%20in%20(Open%2C%20
%22In%20Progress%22%2C%20Reopened)
%20AND%20component%20%3D%20%22Package%20Manager%22

• https://www.codementor.io/blog/swift-package-manager-5f85eqvygj

More Related Content

What's hot

[네이버오픈소스세미나] Next Generation Spring Security OAuth2.0 - 이명현
[네이버오픈소스세미나] Next Generation Spring Security OAuth2.0 - 이명현[네이버오픈소스세미나] Next Generation Spring Security OAuth2.0 - 이명현
[네이버오픈소스세미나] Next Generation Spring Security OAuth2.0 - 이명현
NAVER Engineering
 
개발자가 인프라를 만났을때 - RHQ를 활용한 Legacy System 모니터링
개발자가 인프라를 만났을때 - RHQ를 활용한 Legacy System 모니터링개발자가 인프라를 만났을때 - RHQ를 활용한 Legacy System 모니터링
개발자가 인프라를 만났을때 - RHQ를 활용한 Legacy System 모니터링
jbugkorea
 
Jenkins를 활용한 javascript 개발
Jenkins를 활용한 javascript 개발Jenkins를 활용한 javascript 개발
Jenkins를 활용한 javascript 개발지수 윤
 
[네이버오픈소스세미나] egjs-view360 개발기 - 김희재
[네이버오픈소스세미나] egjs-view360 개발기 - 김희재[네이버오픈소스세미나] egjs-view360 개발기 - 김희재
[네이버오픈소스세미나] egjs-view360 개발기 - 김희재
NAVER D2
 
[오픈소스컨설팅] DevOps 체험교육 소개
[오픈소스컨설팅] DevOps 체험교육 소개[오픈소스컨설팅] DevOps 체험교육 소개
[오픈소스컨설팅] DevOps 체험교육 소개
Brian HAN 한진규
 
실시간으로 안드로이드 프론트엔드 작업하기
실시간으로 안드로이드 프론트엔드 작업하기실시간으로 안드로이드 프론트엔드 작업하기
실시간으로 안드로이드 프론트엔드 작업하기
Haze Lee
 
PyCon 2015 - 업무에서 빠르게 활용하는 PyQt
PyCon 2015 - 업무에서 빠르게 활용하는 PyQtPyCon 2015 - 업무에서 빠르게 활용하는 PyQt
PyCon 2015 - 업무에서 빠르게 활용하는 PyQt
덕규 임
 
최전방 생존법 - 프론트엔드 개발자로 살아가기
최전방 생존법 - 프론트엔드 개발자로 살아가기최전방 생존법 - 프론트엔드 개발자로 살아가기
최전방 생존법 - 프론트엔드 개발자로 살아가기
Hyeonjin Cho
 
웹 IDE 비교
웹 IDE 비교웹 IDE 비교
웹 IDE 비교
Junyoung Lee
 
HTML5로 만드는 데스크탑 어플리케이션 (Node-Webkit)
HTML5로 만드는 데스크탑 어플리케이션 (Node-Webkit)HTML5로 만드는 데스크탑 어플리케이션 (Node-Webkit)
HTML5로 만드는 데스크탑 어플리케이션 (Node-Webkit)
JinKwon Lee
 
CircleCI로 Serverless API의 CI/CD 환경 구축하기
CircleCI로 Serverless API의 CI/CD 환경 구축하기CircleCI로 Serverless API의 CI/CD 환경 구축하기
CircleCI로 Serverless API의 CI/CD 환경 구축하기
Kyuhyun Byun
 
ZEPL, Apache Zeppelin을 뛰어넘자
ZEPL, Apache Zeppelin을 뛰어넘자ZEPL, Apache Zeppelin을 뛰어넘자
ZEPL, Apache Zeppelin을 뛰어넘자
Ahyoung Ryu
 
Grunt
GruntGrunt
Grunt
Dohoon Kim
 
GitLab Starter 라이선스 기능소개 - 인포그랩
GitLab Starter 라이선스 기능소개 - 인포그랩GitLab Starter 라이선스 기능소개 - 인포그랩
GitLab Starter 라이선스 기능소개 - 인포그랩
InfoGrab LC
 
[124] 하이브리드 앱 개발기 김한솔
[124] 하이브리드 앱 개발기 김한솔[124] 하이브리드 앱 개발기 김한솔
[124] 하이브리드 앱 개발기 김한솔
NAVER D2
 
Opensource java library deploy public repository
Opensource java library deploy public repositoryOpensource java library deploy public repository
Opensource java library deploy public repository
KyungHo Jung
 
Welcome to Apache Zeppelin Community
Welcome to  Apache Zeppelin CommunityWelcome to  Apache Zeppelin Community
Welcome to Apache Zeppelin Community
Ahyoung Ryu
 
처음 시작하는 라라벨
처음 시작하는 라라벨처음 시작하는 라라벨
처음 시작하는 라라벨
KwangSeob Jeong
 
[W3C HTML5 2017] Docker & DevOps에서 Serverless & NoOps로의 여정
[W3C HTML5 2017] Docker & DevOps에서 Serverless & NoOps로의 여정[W3C HTML5 2017] Docker & DevOps에서 Serverless & NoOps로의 여정
[W3C HTML5 2017] Docker & DevOps에서 Serverless & NoOps로의 여정
양재동 코드랩
 
[부스트캠퍼세미나]권혁우_REST는 바이바이_ GraphQL과 함께하는 칼퇴시대
[부스트캠퍼세미나]권혁우_REST는 바이바이_ GraphQL과 함께하는 칼퇴시대[부스트캠퍼세미나]권혁우_REST는 바이바이_ GraphQL과 함께하는 칼퇴시대
[부스트캠퍼세미나]권혁우_REST는 바이바이_ GraphQL과 함께하는 칼퇴시대
CONNECT FOUNDATION
 

What's hot (20)

[네이버오픈소스세미나] Next Generation Spring Security OAuth2.0 - 이명현
[네이버오픈소스세미나] Next Generation Spring Security OAuth2.0 - 이명현[네이버오픈소스세미나] Next Generation Spring Security OAuth2.0 - 이명현
[네이버오픈소스세미나] Next Generation Spring Security OAuth2.0 - 이명현
 
개발자가 인프라를 만났을때 - RHQ를 활용한 Legacy System 모니터링
개발자가 인프라를 만났을때 - RHQ를 활용한 Legacy System 모니터링개발자가 인프라를 만났을때 - RHQ를 활용한 Legacy System 모니터링
개발자가 인프라를 만났을때 - RHQ를 활용한 Legacy System 모니터링
 
Jenkins를 활용한 javascript 개발
Jenkins를 활용한 javascript 개발Jenkins를 활용한 javascript 개발
Jenkins를 활용한 javascript 개발
 
[네이버오픈소스세미나] egjs-view360 개발기 - 김희재
[네이버오픈소스세미나] egjs-view360 개발기 - 김희재[네이버오픈소스세미나] egjs-view360 개발기 - 김희재
[네이버오픈소스세미나] egjs-view360 개발기 - 김희재
 
[오픈소스컨설팅] DevOps 체험교육 소개
[오픈소스컨설팅] DevOps 체험교육 소개[오픈소스컨설팅] DevOps 체험교육 소개
[오픈소스컨설팅] DevOps 체험교육 소개
 
실시간으로 안드로이드 프론트엔드 작업하기
실시간으로 안드로이드 프론트엔드 작업하기실시간으로 안드로이드 프론트엔드 작업하기
실시간으로 안드로이드 프론트엔드 작업하기
 
PyCon 2015 - 업무에서 빠르게 활용하는 PyQt
PyCon 2015 - 업무에서 빠르게 활용하는 PyQtPyCon 2015 - 업무에서 빠르게 활용하는 PyQt
PyCon 2015 - 업무에서 빠르게 활용하는 PyQt
 
최전방 생존법 - 프론트엔드 개발자로 살아가기
최전방 생존법 - 프론트엔드 개발자로 살아가기최전방 생존법 - 프론트엔드 개발자로 살아가기
최전방 생존법 - 프론트엔드 개발자로 살아가기
 
웹 IDE 비교
웹 IDE 비교웹 IDE 비교
웹 IDE 비교
 
HTML5로 만드는 데스크탑 어플리케이션 (Node-Webkit)
HTML5로 만드는 데스크탑 어플리케이션 (Node-Webkit)HTML5로 만드는 데스크탑 어플리케이션 (Node-Webkit)
HTML5로 만드는 데스크탑 어플리케이션 (Node-Webkit)
 
CircleCI로 Serverless API의 CI/CD 환경 구축하기
CircleCI로 Serverless API의 CI/CD 환경 구축하기CircleCI로 Serverless API의 CI/CD 환경 구축하기
CircleCI로 Serverless API의 CI/CD 환경 구축하기
 
ZEPL, Apache Zeppelin을 뛰어넘자
ZEPL, Apache Zeppelin을 뛰어넘자ZEPL, Apache Zeppelin을 뛰어넘자
ZEPL, Apache Zeppelin을 뛰어넘자
 
Grunt
GruntGrunt
Grunt
 
GitLab Starter 라이선스 기능소개 - 인포그랩
GitLab Starter 라이선스 기능소개 - 인포그랩GitLab Starter 라이선스 기능소개 - 인포그랩
GitLab Starter 라이선스 기능소개 - 인포그랩
 
[124] 하이브리드 앱 개발기 김한솔
[124] 하이브리드 앱 개발기 김한솔[124] 하이브리드 앱 개발기 김한솔
[124] 하이브리드 앱 개발기 김한솔
 
Opensource java library deploy public repository
Opensource java library deploy public repositoryOpensource java library deploy public repository
Opensource java library deploy public repository
 
Welcome to Apache Zeppelin Community
Welcome to  Apache Zeppelin CommunityWelcome to  Apache Zeppelin Community
Welcome to Apache Zeppelin Community
 
처음 시작하는 라라벨
처음 시작하는 라라벨처음 시작하는 라라벨
처음 시작하는 라라벨
 
[W3C HTML5 2017] Docker & DevOps에서 Serverless & NoOps로의 여정
[W3C HTML5 2017] Docker & DevOps에서 Serverless & NoOps로의 여정[W3C HTML5 2017] Docker & DevOps에서 Serverless & NoOps로의 여정
[W3C HTML5 2017] Docker & DevOps에서 Serverless & NoOps로의 여정
 
[부스트캠퍼세미나]권혁우_REST는 바이바이_ GraphQL과 함께하는 칼퇴시대
[부스트캠퍼세미나]권혁우_REST는 바이바이_ GraphQL과 함께하는 칼퇴시대[부스트캠퍼세미나]권혁우_REST는 바이바이_ GraphQL과 함께하는 칼퇴시대
[부스트캠퍼세미나]권혁우_REST는 바이바이_ GraphQL과 함께하는 칼퇴시대
 

Similar to 패키지 매니저 골라골라! Cocoapod, Carthage, SPM

AngularJS In Production
AngularJS In ProductionAngularJS In Production
AngularJS In Production
MooYeol Lee
 
도구를 활용한 더 나은 웹 개발: Yeoman
도구를 활용한 더 나은 웹 개발: Yeoman도구를 활용한 더 나은 웹 개발: Yeoman
도구를 활용한 더 나은 웹 개발: YeomanJae Sung Park
 
Do not use Django as like as SMARTSTUDY
Do not use Django as like as SMARTSTUDYDo not use Django as like as SMARTSTUDY
Do not use Django as like as SMARTSTUDY
Hyun-woo Park
 
Golang Restful 서버 개발기
Golang Restful 서버 개발기Golang Restful 서버 개발기
Golang Restful 서버 개발기
Hyejong
 
세션2_데보션테크데이_Decapod_v1.2.pdf
세션2_데보션테크데이_Decapod_v1.2.pdf세션2_데보션테크데이_Decapod_v1.2.pdf
세션2_데보션테크데이_Decapod_v1.2.pdf
Jaesuk Ahn
 
Firebase for Web (웹개발을 위한 파이어베이스) 1 Hosting
Firebase for Web (웹개발을 위한 파이어베이스) 1 HostingFirebase for Web (웹개발을 위한 파이어베이스) 1 Hosting
Firebase for Web (웹개발을 위한 파이어베이스) 1 Hosting
승빈이네 공작소
 
Envoy 를 이용한 코드 배포 자동화
Envoy 를 이용한 코드 배포 자동화Envoy 를 이용한 코드 배포 자동화
Envoy 를 이용한 코드 배포 자동화
Juwon Kim
 
[GitSpace 1회 세미나] fastlane.pdf
[GitSpace 1회 세미나] fastlane.pdf[GitSpace 1회 세미나] fastlane.pdf
[GitSpace 1회 세미나] fastlane.pdf
Lee Dahae
 
공간정보아카데미 - Day1 오픈소스개발 일반
공간정보아카데미 - Day1 오픈소스개발 일반공간정보아카데미 - Day1 오픈소스개발 일반
공간정보아카데미 - Day1 오픈소스개발 일반
BJ Jang
 
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기Ted Won
 
Source To URL Without Dockerfile
Source To URL Without DockerfileSource To URL Without Dockerfile
Source To URL Without Dockerfile
Won-Chon Jung
 
EMOCON 2015 - 카피캣으로 시작하는 오픈소스
EMOCON 2015 - 카피캣으로 시작하는 오픈소스EMOCON 2015 - 카피캣으로 시작하는 오픈소스
EMOCON 2015 - 카피캣으로 시작하는 오픈소스
이상한모임
 
카피캣으로 시작하는 오픈소스
카피캣으로 시작하는 오픈소스 카피캣으로 시작하는 오픈소스
카피캣으로 시작하는 오픈소스
SeongHyun Ahn
 
Service Worker 를 이용한 
Offline Web Application 구현
Service Worker 를 이용한 
Offline Web Application 구현Service Worker 를 이용한 
Offline Web Application 구현
Service Worker 를 이용한 
Offline Web Application 구현
병태 정
 
2022.08 멘토링 자료.pptx
2022.08 멘토링 자료.pptx2022.08 멘토링 자료.pptx
2022.08 멘토링 자료.pptx
ssuserf875e6
 
IT 서비스 개발 15년 _ IT service 15 years
IT 서비스 개발 15년 _ IT service 15 yearsIT 서비스 개발 15년 _ IT service 15 years
IT 서비스 개발 15년 _ IT service 15 years
연지 김
 
FCGI, C++로 Restful 서버 개발
FCGI, C++로 Restful 서버 개발FCGI, C++로 Restful 서버 개발
FCGI, C++로 Restful 서버 개발
현승 배
 
DevOps Study
DevOps StudyDevOps Study
DevOps Study
상환 이
 
AWS + Docker in Vingle
AWS + Docker in VingleAWS + Docker in Vingle
AWS + Docker in Vingle
Derrick Hwechul Cho
 
20170813 django api server unit test and remote debugging
20170813 django api server unit test and remote debugging20170813 django api server unit test and remote debugging
20170813 django api server unit test and remote debugging
Jongwon Han
 

Similar to 패키지 매니저 골라골라! Cocoapod, Carthage, SPM (20)

AngularJS In Production
AngularJS In ProductionAngularJS In Production
AngularJS In Production
 
도구를 활용한 더 나은 웹 개발: Yeoman
도구를 활용한 더 나은 웹 개발: Yeoman도구를 활용한 더 나은 웹 개발: Yeoman
도구를 활용한 더 나은 웹 개발: Yeoman
 
Do not use Django as like as SMARTSTUDY
Do not use Django as like as SMARTSTUDYDo not use Django as like as SMARTSTUDY
Do not use Django as like as SMARTSTUDY
 
Golang Restful 서버 개발기
Golang Restful 서버 개발기Golang Restful 서버 개발기
Golang Restful 서버 개발기
 
세션2_데보션테크데이_Decapod_v1.2.pdf
세션2_데보션테크데이_Decapod_v1.2.pdf세션2_데보션테크데이_Decapod_v1.2.pdf
세션2_데보션테크데이_Decapod_v1.2.pdf
 
Firebase for Web (웹개발을 위한 파이어베이스) 1 Hosting
Firebase for Web (웹개발을 위한 파이어베이스) 1 HostingFirebase for Web (웹개발을 위한 파이어베이스) 1 Hosting
Firebase for Web (웹개발을 위한 파이어베이스) 1 Hosting
 
Envoy 를 이용한 코드 배포 자동화
Envoy 를 이용한 코드 배포 자동화Envoy 를 이용한 코드 배포 자동화
Envoy 를 이용한 코드 배포 자동화
 
[GitSpace 1회 세미나] fastlane.pdf
[GitSpace 1회 세미나] fastlane.pdf[GitSpace 1회 세미나] fastlane.pdf
[GitSpace 1회 세미나] fastlane.pdf
 
공간정보아카데미 - Day1 오픈소스개발 일반
공간정보아카데미 - Day1 오픈소스개발 일반공간정보아카데미 - Day1 오픈소스개발 일반
공간정보아카데미 - Day1 오픈소스개발 일반
 
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
 
Source To URL Without Dockerfile
Source To URL Without DockerfileSource To URL Without Dockerfile
Source To URL Without Dockerfile
 
EMOCON 2015 - 카피캣으로 시작하는 오픈소스
EMOCON 2015 - 카피캣으로 시작하는 오픈소스EMOCON 2015 - 카피캣으로 시작하는 오픈소스
EMOCON 2015 - 카피캣으로 시작하는 오픈소스
 
카피캣으로 시작하는 오픈소스
카피캣으로 시작하는 오픈소스 카피캣으로 시작하는 오픈소스
카피캣으로 시작하는 오픈소스
 
Service Worker 를 이용한 
Offline Web Application 구현
Service Worker 를 이용한 
Offline Web Application 구현Service Worker 를 이용한 
Offline Web Application 구현
Service Worker 를 이용한 
Offline Web Application 구현
 
2022.08 멘토링 자료.pptx
2022.08 멘토링 자료.pptx2022.08 멘토링 자료.pptx
2022.08 멘토링 자료.pptx
 
IT 서비스 개발 15년 _ IT service 15 years
IT 서비스 개발 15년 _ IT service 15 yearsIT 서비스 개발 15년 _ IT service 15 years
IT 서비스 개발 15년 _ IT service 15 years
 
FCGI, C++로 Restful 서버 개발
FCGI, C++로 Restful 서버 개발FCGI, C++로 Restful 서버 개발
FCGI, C++로 Restful 서버 개발
 
DevOps Study
DevOps StudyDevOps Study
DevOps Study
 
AWS + Docker in Vingle
AWS + Docker in VingleAWS + Docker in Vingle
AWS + Docker in Vingle
 
20170813 django api server unit test and remote debugging
20170813 django api server unit test and remote debugging20170813 django api server unit test and remote debugging
20170813 django api server unit test and remote debugging
 

More from hyunho Lee

이제 문서는 DocC로 만들때가 되지 않았나요?
이제 문서는 DocC로 만들때가  되지 않았나요?이제 문서는 DocC로 만들때가  되지 않았나요?
이제 문서는 DocC로 만들때가 되지 않았나요?
hyunho Lee
 
코드를 짜면서 겪은 오해의 순간들
코드를 짜면서 겪은 오해의 순간들코드를 짜면서 겪은 오해의 순간들
코드를 짜면서 겪은 오해의 순간들
hyunho Lee
 
iOS 개발자를 위한 영어로 이름 짓기
iOS 개발자를 위한 영어로 이름 짓기iOS 개발자를 위한 영어로 이름 짓기
iOS 개발자를 위한 영어로 이름 짓기
hyunho Lee
 
빌드 버튼이 눌린다음에 무슨일이 일어나는 걸까?
빌드 버튼이 눌린다음에 무슨일이 일어나는 걸까?빌드 버튼이 눌린다음에 무슨일이 일어나는 걸까?
빌드 버튼이 눌린다음에 무슨일이 일어나는 걸까?
hyunho Lee
 
Fitcraft demo
Fitcraft demoFitcraft demo
Fitcraft demo
hyunho Lee
 
하기 귀찮은 일 이제 효도는 봇으로
하기 귀찮은 일 이제 효도는 봇으로하기 귀찮은 일 이제 효도는 봇으로
하기 귀찮은 일 이제 효도는 봇으로
hyunho Lee
 

More from hyunho Lee (6)

이제 문서는 DocC로 만들때가 되지 않았나요?
이제 문서는 DocC로 만들때가  되지 않았나요?이제 문서는 DocC로 만들때가  되지 않았나요?
이제 문서는 DocC로 만들때가 되지 않았나요?
 
코드를 짜면서 겪은 오해의 순간들
코드를 짜면서 겪은 오해의 순간들코드를 짜면서 겪은 오해의 순간들
코드를 짜면서 겪은 오해의 순간들
 
iOS 개발자를 위한 영어로 이름 짓기
iOS 개발자를 위한 영어로 이름 짓기iOS 개발자를 위한 영어로 이름 짓기
iOS 개발자를 위한 영어로 이름 짓기
 
빌드 버튼이 눌린다음에 무슨일이 일어나는 걸까?
빌드 버튼이 눌린다음에 무슨일이 일어나는 걸까?빌드 버튼이 눌린다음에 무슨일이 일어나는 걸까?
빌드 버튼이 눌린다음에 무슨일이 일어나는 걸까?
 
Fitcraft demo
Fitcraft demoFitcraft demo
Fitcraft demo
 
하기 귀찮은 일 이제 효도는 봇으로
하기 귀찮은 일 이제 효도는 봇으로하기 귀찮은 일 이제 효도는 봇으로
하기 귀찮은 일 이제 효도는 봇으로
 

패키지 매니저 골라골라! Cocoapod, Carthage, SPM

  • 1. 골라골라 Cocoa pod, Carthage, SPM! 이현호 mizzking75@gmail.com
  • 2. Hello! •이현호 •와디즈 •IOS 개발 6개월 차 •뮤지컬 (매우) 좋아함
  • 3. What is Package Manager •모든 것을 만들어 쓸 수 없으니 오픈소스를 쓰자 •프로젝트에 필요한 패키지를 관리해주는 녀석 •패키지 설치, 버전관리, 설정, 삭제
  • 4. Why we need Package Manager? •패키지 매니저가 없다면? 직접 설치
  • 5. Why we need Package Manager? •패키지 매니저가 없다면? 직접 관리
  • 6. Sort of Package managers •Cocoa pod •Carthage •SPM
  • 7. History of Package Manager •약 2011, 9월 CocoaPods •약 2014, 11월 Carthage •약 2017, 11월 SPM
  • 8. Cocoa Pod • https://cocoapods.org/ • Main 레포인 Specs에 중앙화 • gem을 통해 mac에 설치 • mac에는 이미 ruby가 설치되어있음 • Pod 명령어 • Init, install, update
  • 9. How to use • $ pod init • $ vi Podfile • Alamofire를 이용한 예제 • 간단한게 추가 가능 • cocoaPods 에서 확인 가능 • xcworkspace 파일을 열어서 사용
  • 10. How to use • 패키지를 import • 간편하게 사용 • 검색 -> 추가 -> 설치 -> 사용
  • 11. Pros and Cons •한 군데서 검색해서 사용 가능 •어떤 오픈소스를 쓰고있는지 보기 편함 •버전과 종속성의 종속성을 관리 해줌 •많은 패키지들이 cocoaPod을 지원
  • 12. Pros and Cons •프로젝트를 빌드할 때마다 모든 종속 패키지들이 빌드되기 때문에 빌드 시간이 길다 •종속된 팟 라이브러리를 설치하고 업데이트 하는데 오래 걸린다
  • 13. Carthage • 코코아 팟의 단점을 보완해서 등장 • 프레임워크를 추가
  • 14. How to use •brew install carthage •프로젝트 폴더에 Cartfile 작성 •github “Alamofire/Alamofire" •carthage update --platform ios
  • 15. How to use •brew install carthage •프로젝트 폴더에 Cartfile 작성 •github “Alamofire/Alamofire" •carthage update --platform ios
  • 18. Pros and Cons •carthage update 명령어 사용시, 한 번 프레임워크로 빌드하며, 빌드 속도가 빠름 •어떤 오픈소스를 쓰고있는지 보기 편함 •버전과 종속성의 종속성을 관리 해줌
  • 19. Pros and Cons •새로운 패키지를 가져다 쓸 때 프레임워크를 추가해 줘야하는 번거로움 •새로운 프레임워크를 추가할 때 시간이 오래걸림 •지원을 하지 않을 수 있다 (요즘은 다 하는 것 같은…)
  • 20. Swift Package Manager •Xcode11 부터 사용가능 •Apple의 공식지원
  • 21. How to use •Xcode > File > Swift Packages > Add •https://github.com/Alamofire/ Alamofire.git •Finish
  • 22. How to use •Xcode > File > Swift Packages > Add •https://github.com/Alamofire/ Alamofire.git •Finish
  • 23. Pros and Cons •애플의 공식지원 👍 •설치과정이 매우 짧음 •어떤 오픈소스를 쓰고있는지 보기 편함 •버전과 종속성의 종속성을 관리 해줌
  • 24. Pros and Cons •아직 지원하지 않는 라이브러리가 많음(있음) •해결중인 이슈가 있음
  • 25. Open source library Library Cocoa Carthage SPM Alamofire O O O SwiftyJSON O O O ObjectMapper O O O Kingfisher O O O CoreStore O O O SnapKit O O ? SVProgressHUD O O X Charts O O X Hero O O O https://github.com/SnapKit/SnapKit.git
  • 26. Make a choice •많은 라이브러리? •빠른 빌드속도? •간편함?
  • 27. Make a choice •많은 라이브러리? •빠른 빌드속도? •간편함?
  • 28. Reference • https://en.wikipedia.org/wiki/CocoaPods • https://www.raywenderlich.com/6587213-alamofire-5-tutorial-for-ios- getting-started • https://github.com/Carthage/Carthage • https://bugs.swift.org/browse/SR-12299? jql=project%20%3D%20SR%20AND%20status%20in%20(Open%2C%20 %22In%20Progress%22%2C%20Reopened) %20AND%20component%20%3D%20%22Package%20Manager%22 • https://www.codementor.io/blog/swift-package-manager-5f85eqvygj