본문 바로가기

iOS

[iOS]의존성 관리 도구 종류 및 장단점!(feat. 오픈소스)

# 오픈소스

소스코드를 공개해 누구나 제한없이 코드를 볼 수 있는것

타입들을 다 만들어서 사용하면 시간이 오래걸리니깐 이미 만들어져있는 코드들을
사용하는 것이다.

오픈소스 제작의 의미

코드에 신경을쓰게되며 코드를 제공하고 배울 수 있는 기회가될 수 있다.

의존성 관리도구란?

Cocoa, CocoaTouch 는 애플에서 제공하는 앱 개발환경을 의미

macOS에서는 Cocoa, iOS에서는 Cocoa Touch라고 부른다.

의존성관리도구를 사용하는것은 필수는 아니나 라이브러리 업데이트가 올라오면 교체해줘야하는데 이걸 일일이 기존 라이브러리를 삭제하고 삽입시키면 휴먼에러도 발생할 수 있음
=> 이를 명령어 한줄 혹은 클릭 몇번으로 해결하면 시간절약과 안정성까지 보장받을 수 있다.

오픈소스 작성시 주의할점

MIT라이선스 요약

  • 소프트웨어를 누구라도 무상으로 제한없이 취급해도 좋지만 저자 또는 저작권자는 소프트웨어에 관하여 아무런 책임도 지지않는다.

코코아팟 vs 카르타고 vs 스위프트 패키지 매니저

코코아팟

  • 장점
    • 사용하기 쉽다.
    • Dynamic, static 라이브러리를 지원한다(1.5.0버전이상)
    • 의존성의 의존성까지 자동으로 관리해준다.
    • 누구나 쉽게 어떤 의존성이 앱에 있는지 알 수 있다.
    • pod outdated명령어로 쉽게 새로운 버전이 있는지 체크할 수 있다.
    • 거의 대부분의 라이브러리가 코코아팟을 지원한다.
  • 단점
    • 라이브러리를 다운받아 설치(pod install or update)하는데 오랜 시간이 걸린다.
    • 프로젝트를 빌드할 때마다 모든 팟 라이브러리가 같이 빌드되므로 다른 도구 사용할 때보다 프로젝트 빌드시간이 느리다.

카르타고

  • 장점
    • Dynamic, Static 라이브러리를 모두 지원한다. (0.30.0 버전이상)
    • 의존성의 의존성까지 자동으로 관리해준다.
    • 누구나 쉽게 어떤 의존성이 앱에 있는지 알 수 있따.
    • carthage outdated 명령어로 쉽게 새로운 버전이 있는지 체크할 수 있다.
    • carthage update를 실행할때만 한번 프레임워크를 빌드하므로 코코아팟에 비해 프로젝트 빌드속도가 빠르다.
    • 첨에 프레임워크를 하는것 외에 프로젝트 설정이 바뀌지않는다.
  • 단점
    • 의존성이 추가될때마다 해줘야하는 번거로운 작업이 있다.
    • 사용자가 인기가 많은 라이브러리가 아니라면 카르타고를 지원하지않을 수 있다.

스위프트 패키지 매니저

  • 장점
    • 애플이 지원한다.
    • Dynamic, Static 라이브러리를 모두 지원한다.(4.0버전 이상)
    • 의존성의 의존성까지 자동으로 관리해준다.
    • 누구나 쉽게 어떤 의존성이 앱에 있는지 알 수 있다.
    • 스위프트 언어에 built-in 되어있어 별다른 설치가 필요없다.(swift 3이상)
    • 스위프트 언어에 built-in되었기때문에 Xcode Project파일이 꼭 필요한 것이 아니므로 리눅스에서도 사용가능하다.
    • Package.swift파일 이외에 수행할 설정이 없다.
    • Xcode의 GUI환경에서 관리가가능하다(11.0 버전 이상)
  • 단점
    • 아직은 지원하지않는 라이브러리가 많다.
    • 현 시점, 해결되지않은 이슈가 270건이 있따.(참조 SPM 이슈 목록)

결론)

현재는 각종 한계(커스텀 빌드 설정등)와 버그들로 실무에서 쓰기에는 어려움이 있다고 판단되지만 점차 개선해나가는것을 보면 상용화될날이 머지않음
애플이 지원하는 스위프트 패키지 매니저 애플믿고 가보자…

 

# Reference

- https://yagom.net/courses/open-source-library/

 

오픈소스 라이브러리 만들기 - 야곰닷넷

코코아팟(CocoaPods), 카르타고(Carthage), 스위프트 패키지 매니저(Swift Package Manager, SPM)를 활용하여 나만의 오픈소스 라이브러리(Open Source Library)를 만들어봅니다.

yagom.net