안녕하세요! 피피아노입니다 🎵
Swift 기반의 프로젝트가 복잡해지고 규모가 커짐에 따라 프로젝트의 구조와 관리 방법도 복잡해지고 있습니다. 이러한 문제를 해결하고 효율적으로 프로젝트를 구성할 수 있는 강력한 도구가 바로 Tuist입니다.
이번 포스팅에서는 Tuist가 무엇인지, 어떤 장점을 가지고 있는지, 그리고 실제로 어떻게 사용하는지 정리를 해보려고 합니다.
그럼 바로 시작하겠습니다!
Tuist란 무엇일까?
Tuist는 Swift로 작성된 프로젝트 생성 및 관리를 위한 오픈소스 도구입니다.
프로젝트 설정 및 구조를 정의하는 코드를 통해 반복적인 작업을 자동화하고, 팀원들 간의 일관성을 유지하도록 돕습니다. Xcode 프로젝트 파일(.xcodeproj)을 자동 생성하고 관리함으로써 프로젝트 설정의 수작업과 이로 인한 오류 가능성을 최소화합니다.
즉, 정리를 해보면 아래처럼 정리를 해볼 수 있습니다.
- Tuist는 Xcode 프로젝트 관리를 위한 도구
- Swift 코드로 프로젝트 구조를 정의하여 복잡성 해결
- 대규모 앱을 모듈로 분리하여 개발하는 것을 용이하게 함
- 빌드 성능 최적화를 위한 캐싱 기능 제공
- 프로젝트 설정을 코드로 관리하여 일관된 개발 환경 유지
Tuist의 특징과 장점
Tuist가 뭔지 알아봤으니 Tuist의 주요 특징과 장점에 대해서 살펴보겠습니다.
선언적 프로젝트 정의
Tuist는 프로젝트의 설정과 구조를 Swift 코드로 선언적으로 정의할 수 있게 합니다. 이를 통해 프로젝트 구조를 명확하고 유지보수가 쉽게 만듭니다.
프로젝트 모듈화
복잡한 프로젝트를 모듈 단위로 분리하고 관리할 수 있어, 각 모듈의 역할과 책임이 명확해지고, 독립적인 빌드와 테스트가 가능해집니다.
지속 가능한 관리
프로젝트 설정을 코드로 관리하기 때문에 Git과 같은 버전 관리 시스템에서 프로젝트 설정의 변경 이력을 관리할 수 있으며, 코드 리뷰를 통해 프로젝트 설정을 협업 관리할 수 있습니다.
Tuist vs Xcode 프로젝트 비교
항목 | Xcode 프로젝트 | Tuist |
관리 방식 | GUI + XML | Swift 코드 |
버전 관리 | 충돌 발생 빈번 | 충돌 최소화 |
모듈화 | 복잡하고 어려움 | 간편하고 명시적 |
확장성 | 제한적 | 높음(커스텀 가능) |
빌드 성능 | 기본 | 캐싱을 통한 최적화 |
협업 | 설정 불일치 가능성 | 설정 표준화 용이 |
Tuist 설치 방법
Tuist 설치 방법은 간단합니다.
Homebrew가 설치되어 있는 맥에서 터미널을 열고 아래 명령어를 입력해주면 됩니다.
brew install tuist
그리고 설치가 잘 되었는지 확인하기 위해 아래 명령어를 입력해주고 버전이 잘 뜬다면 설치가 완료된 것입니다.
tuist --version
Tuist 기본 명령어
tuist init // 새로운 Tuist 프로젝트 초기화
tuist generate // Project.swift 및 관련 파일에서 Xcode 프로젝트 생성
tuist build // 프로젝트 빌드
tuist test // 단위 테스트 실행
tuist clean // 캐시 및 생성된 파일 정리
tuist scaffold // 템플릿을 이용한 코드 스캐폴딩 (모듈 등 반복 구조 생성 자동화)
tuist cache // 빌드 캐시 관리
tuist dependencies // 의존성 관리(Swift Package Manager, CocoaPods)
tuist graph // 프로젝트 모듈 의존성 그래프 시각화
tuist edit // Project.swift 파일을 Xcode에서 편집하도록 열기
Tuist로 프로젝트 파일 생성하기
이제 Tuist로 프로젝트 파일을 생성하는 방법에 대해서 살펴보겠습니다.
우선 맥에서 터미널을 열어주고 아래 명령어를 입력해주겠습니다.
tuist init
해당 명령어를 입력하고 엔터(리턴키)를 눌러주면 위 화면처럼 나오게 되는데 첫 번째 옵션은 새로운 프로젝트를 생성하는 거고 두 번째 옵션은 이미 존재하는 Xcode 프로젝트나 Swift Package를 Tuist를 통해 관리하도록 통합하는 옵션입니다.
우리는 새로운 프로젝트 파일을 생성하는 것이 목적이니까 첫 번째 옵션을 선택하고 엔터를 눌러주겠습니다.
그럼 이제 프로젝트 이름을 입력해 주라고 나오는데 본인이 사용할 프로젝트 이름을 입력해 주면 됩니다. 저는 TuistDemo라고 짓겠습니다.
그럼 이제 사용할 플랫폼을 정하라고 나오는데 저는 iOS로 하겠습니다.
그럼 Would you like use server feature 라고 나오면서 y/n를 입력하라고 나오는데 이 옵션은 Tuist Cloud(서버 기능)을 사용할지 여부를 묻는 것입니다.
주요 기능은 선택적 테스팅(Selective Testing), 원격 캐싱(Remote Caching), 프리뷰(Previews) 등이 존재합니다.
선택적 테스팅(Selective Testing)
변경된 코드와 연관된 테스트만을 실행하여 빌드 및 테스트 시간을 단축합니다.
원격 캐싱(Remote Caching)
빌드 결과물을 클라우드에 저장해 두고 공유하여 팀 전체의 빌드 시간을 절약합니다.
프리뷰(Previews)
Pull Request 단위로 빠르게 빌드 결과를 확인할 수 있도록 빌드 결과를 클라우드에서 미리 볼 수 있는 기능을 제공합니다.
근데 이 기능을 사용하려면 Tuist Cloud 계정 가입 및 로그인을 하고 프로젝트를 Tuist Cloud에 등록하고 등등의 작업이 필요한데 어차피 개인이 사용하는 부분에서는 딱히 필요하지 않은 기능들이기 때문에 저는 그냥 n를 입력해 주겠습니다.
(아마 저 기능이 필요하신 분들은 Tuist가 뭔지 잘 알고 있으신 분들일 것 같기 때문에 Tuist를 모르시는 분들이 Tuist를 한번 써보려고 하는 거라면 대부분 저 옵션은 사용 안 하셔도 될 것 같습니다.)
그럼 이렇게 프로젝트가 성공적으로 생성이 되고 이제 여기에서 아래 명령어를 입력해서 프로젝트 파일로 경로를 이동해 주겠습니다.
cd 프로젝트 이름
의존성을 추가해야 한다면 tuist edit 명령어나 code . 명령어(vscode에서 프로젝트 파일을 여는 명령어)를 입력하셔서 의존성을 추가해 주시면 되고 아래 명령어를 순서대로 입력해 주시면 Tuist 프로젝트가 열립니다.
tuist install
tuist generate
그러면 프로젝트 루트 디렉토리에 다음과 같은 기본 구조가 생성됩니다.
MyApp/
├── Project.swift
├── Targets
│ └── MyApp
│ ├── Sources
│ │ └── AppDelegate.swift
│ └── Resources
└── Tuist
└── Dependencies.swift
프로젝트 설정은 Project.swift 파일을 통해 이루어지게 됩니다.
마무리
Tuist는 Swift 기반의 프로젝트를 더욱 효율적이고 체계적으로 관리할 수 있는 매우 유용한 도구입니다. 선언적 정의를 통한 프로젝트 설정의 명확성, 모듈화를 통한 관리 효율성, 그리고 버전 관리를 통한 지속 가능한 유지보수성 등 많은 장점을 제공합니다. 사실 개인이 굳이 사용할 필요는 없지만 앱이 대규모 앱이거나 협업을 하는 경우에는 Tuist를 활용하면 유용하니 상황에 맞게 선택해서 사용하시면 좋을 것 같습니다!!
감사합니다.
잘못된 내용이 있거나 더 좋은 내용 피드백은 언제나 환영합니다!
궁금하신 부분은 댓글로 질문 부탁드립니다!
'Apple > Swift' 카테고리의 다른 글
[Swift] 의존성 주입(Dependency Injection)이란? (0) | 2025.04.18 |
---|---|
[Swift] Combine에서 map과 flatMap 살펴보기 (2) | 2025.04.08 |
[Swift] Subscript 이해하기 (4) | 2024.12.30 |
[Swift] Actor 이해하기 (2/2) (4) | 2024.12.15 |
[Swift] 두 정수 사이의 합 (4) | 2024.12.05 |