TIL: Tuist와 XcodeGen - Xcode 프로젝트 관리 도구 비교

jeongmuyamette·2025년 1월 27일

TIL

목록 보기
35/72
post-thumbnail

1. Tuist

개요

  • Swift로 작성된 Xcode 프로젝트 관리 도구
  • 선언적 방식으로 프로젝트 구조를 정의
  • 대규모 프로젝트에 특히 유용

주요 특징

// Project.swift 예시
import ProjectDescription

let project = Project(
    name: "MyApp",
    targets: [
        Target(
            name: "App",
            platform: .iOS,
            product: .app,
            bundleId: "com.myapp",
            infoPlist: "Info.plist",
            sources: ["Sources/**"],
            dependencies: [
                .target(name: "Core")
            ]
        )
    ]
)

장점

  1. 모듈화 지원

    • 마이크로 피쳐 아키텍처 구현 용이
    • 종속성 관리 기능 내장
  2. 캐싱 시스템

    • 빌드 시간 최적화
    • 증분 빌드 지원
  3. 스케일링

    • 대규모 프로젝트 관리에 적합
    • 일관된 프로젝트 구조 유지

주요 명령어

# 프로젝트 생성
tuist init

# 프로젝트 생성
tuist generate

# 의존성 관리
tuist fetch

2. XcodeGen

개요

  • YAML/JSON 기반의 Xcode 프로젝트 생성 도구
  • 간단하고 직관적인 설정
  • 작은~중간 규모 프로젝트에 적합

주요 특징

# project.yml 예시
name: MyApp
options:
  bundleIdPrefix: com.myapp
targets:
  MyApp:
    type: application
    platform: iOS
    sources: 
      - path: Sources
    settings:
      base:
        INFOPLIST_FILE: Info.plist
        PRODUCT_BUNDLE_IDENTIFIER: com.myapp

장점

  1. 간단한 설정

    • YAML 포맷으로 쉽게 설정
    • 낮은 학습 곡선
  2. 버전 관리 최적화

    • .xcodeproj 충돌 방지
    • 깔끔한 git 히스토리 유지
  3. 자동화 용이

    • CI/CD 파이프라인 통합 쉬움
    • 스크립트 작성 간편

주요 명령어

# 프로젝트 생성
xcodegen generate

# 프로젝트 사양 확인
xcodegen spec

3. 비교

Tuist vs XcodeGen

특징TuistXcodeGen
설정 언어SwiftYAML/JSON
학습 곡선높음낮음
프로젝트 규모대규모소-중규모
모듈화 지원강력함기본적
캐싱있음없음
커스터마이징매우 유연제한적

선택 가이드

Tuist 선택 시기:

  • 대규모 프로젝트 관리 필요
  • 마이크로 피쳐 아키텍처 구현
  • 강력한 모듈화 필요
  • Swift로 프로젝트 설정 선호

XcodeGen 선택 시기:

  • 간단한 프로젝트 구조
  • 빠른 설정 필요
  • YAML 기반 설정 선호
  • CI/CD 파이프라인 통합 중점

4. 실무 적용 팁

  1. 프로젝트 시작 시

    • 팀 규모와 프로젝트 복잡도 고려
    • 향후 확장성 고려
  2. 기존 프로젝트 마이그레이션

    • 점진적 도입 추천
    • 충분한 테스트 필요
  3. 버전 관리

    • .gitignore 설정 주의
    • 자동 생성 파일 제외
  4. 팀 협업

    • 문서화 중요
    • 컨벤션 설정 필요

5. 참고 자료

이러한 도구들을 사용하면 Xcode 프로젝트 관리가 더욱 체계적이고 효율적으로 이루어질 수 있습니다.

0개의 댓글