Letswift package manager cover

Swift Package Manager- 스위프트 패키지 매니저 미리 맛보기

Let’Swift는 Swift 개발자들이 만나고, 배우고, 즐기는 컨퍼런스로 총 13개의 세션으로 이뤄졌습니다. Swift 개발자들이 모여 iOS의 넥스트 스텝을 이야기한 행사였습니다. 빠르게 발전하는 언어 Swift에 대한 뜨거운 열의를 엿볼 수 있었던 Let’Swift 행사 동영상을 공유합니다

혹시 최근 오픈소스 프로젝트에서 Swift Package Manager를 본 적 있으신가요? Swift Package Manager라는 주제로 lingostar라는 닉네임으로 유명한 윤성관님이 발표한 세션 동영상을 통해 조만간 Apple에서 자세한 사용법이 발표할 것으로 예상되는 Swift Package Manager를 미리 알아보세요.


들어가기

  • 2015년 9월 Swift가 오픈 소스가 되면서 한 주요 발표
    • 리눅스에서도 사용 가능
    • Core Library 개선
    • Swift 패키지 매니저: 2016 WWDC에서 만들고 있다는 소개뿐


  • 2016년 WWDC에서 큰 발표가 없었으므로 2017년 WWDC 관전 포인트를 주제로 함
  • HomeBrew의 개발자 Max Howell이 2015년 8월 Apple 입사
  • Apple에서 Swift 패키지 매니저를 만들고 있을 것이라 유추

용어 정리

  • 패키지
    • 소프트웨어, 응용프로그램, 데이터의 ‘배포판’
    • 메타데이터를 포함
  • 패키지 매니저
    • 설치, 업데이트, 설정, 삭제를 자동화 해주는 툴
    • 소프트웨어의 의존성이나 버전 정보 관리
    • ex) 앱 스토어, MacPorts, Homebrew, CocoaPods, Alcatraz - Xcode용 플러그인 패키지 매니저
  • 패키지 컨벤션
    • 원활한 배포를 위해 패키지 구조에 대한 규칙 정의: ex) 앱스토어에 앱 올릴 때 패키지 검사
    • 엔드유저는 패키지 매니저의 사용법만 알면 됨: ex) 앱스토어 사용법만 알면 사용 가능
    • 원활한 배포 : 의존성 문제 해결

패키지 매니저 준비

  • Swift Snapshots에서 Swift Dev. Snapshot 설치
  • Dev Snapshot 설치
    • /Library/Developer/Toolchains 아래 /usr/bin/ 폴더에서
    • swift-build와 swift-package이 설치됨을 확인
    • Xcode 버전에 따라 터미널에서 아래 명령 실행

이런 개발 뉴스를 더 만나보세요

// 7.3 version
export TOOLCHAINS=swift
// 7.2 version
export PATH=/Library/Developer/Toolchains/swift-latest.xctoolchain/usr/bin:"${PATH}"

간단한 프로그램 빌드

  • 매니페스트
    • 메타데이터를 가지고 있는 파일 (어원: 화물선의 화물 리스트)
    • Package.swift
    • 스위프트 언어로 패키지 매니저의 매니페스트를 정의 (프로젝트 설정도 가능)
  • 프로젝트 폴더 구조
    • 프로젝트 폴더
      • Package.swift
      • Sources: 소스코드들
      • .build/debug/
  • 간단한 데모 예제를 swift.org - getting started에서 확인 가능

의존성을 포함한 프로그램 빌드

  • 데모 프로젝트 구조 및 실행 화면

  • 프로젝트 폴더 구조
    • 프로젝트 폴더
      • Package.swift
      • Sources: 소스코드들
      • Packages: 의존성을 가지는 패키지들
      • .build/debug/
  • Package 클래스

    • 내부에 Dependency 클래스를 정의: Target에서 다시 Dependency를 enum으로 정의하기 때문

    • SystemPackageProvider는 enum: Brew, Apt 선택 가능
    • Package 함수로 dependancy 정의

let package = Package(
    name: "Dealer",
    dependencies: [
        .Package(url: "//", 
            majorVersion: 2)
    ]
)


Xcode 프로젝트 만들기

  • 빈 폴더 만들기
swift package init
swift package generate-xcodeproj

참고 자료


발표 슬라이드는 아래를 참고해주세요.

컨텐츠에 대하여

이 컨텐츠는 저자의 허가 하에 이곳에서 공유합니다.

Realm Team

Realm의 미션은 더 나은 앱을 빠르게 개발할 수 있도록 돕는 것입니다. 이를 위해 저희는 개발자들이 실시간 협업, 가상 현실, 라이브 데이터 동기화, 오프라인 경험, 메시징 등 정교하고 강력한 기능을 쉽게 개발할 수 있도록 하는 개발 도구와 플랫폼을 제공하고 있습니다.

저희는 모바일 인터넷이 수많은 사용자와 보다 많은 디바이스가 속한 개방형 네트워크와 이들 간의 실시간 상호 작용으로 진화할 것이라고 믿으며, 개발자가 이같은 방향으로 발전할 수 있도록 돕기 위해 저희 제품들을 개발하고 있습니다.

4 design patterns for a RESTless mobile integration »

close