Tuist_Why? - 개념편

김재형_LittleTale·2025년 5월 29일

Tuist

목록 보기
1/5

들어가기에 앞서

Velog 글쓰기가 문제가 있는지 계속 작성이 안되서….
Notion 에서 작성한후 글을 옮겼음을 알립니다.

아 또한 기존 Xcode 프로젝트를 Tuist 마이그레이션을 하는 과정으로 인해
지연 되어 죄송합니다….

Tuist 1편 을 시작해 보겠습니다.


Tuist가 뭔데요

Xcode 프로젝트를 관리하는 툴 이며,
유지관리를 편리하게 도와주는 CLI 도구 입니다.

잠깐! CLI 가 뭐였죠?

Command Line Interface
Terminal 를 통해 컴퓨터와 소통하는 방식을 말했었죠

Tuist가 뭔진 알았어요 근데 왜 쓰는 거죠?

많은 블로그 글을 보게되면 많은 이유들이 언급 되는데
저는 직접 마이그레이션 하면서 피부로 와닿은 부분을 적어 볼려고 해요

1. .xcodeproj, .xcworkspace 등의 Git 충돌 위험 제거

회사에서 협업을 할때나 동아리에서 협업을 할때
폴더 위치가 변경되거나, 파일 위치가 변경되거나, 새로운 폴더를 생성하거나 등등
pbxproj 파일이 충돌되는 경우가 허다 했어요

저는 이런경우 항상 직접 pbxproj 파일을 직접 수정하여 Git 충돌사항을 해결하곤 하였었는데
Tuist로 마이그레이션을 해보니 그럴 경우가 거의 없겠더라구요

  1. CLI 환경에서 Tuist Generate 를 통해
    .xcodeproj, .xcworkspace 가 생성되다 보니
    충돌이 나지 않아요 정확히 말하자면
    gitignore 에서 .xcodeproj, .xcworkspace 를 추적하지 않게 처리하게 하여
    생성하게 하니 충돌이 날 수가 없는거죠!

2. 본인이 폴더링 혹은 의존관계를 파악하기 좋다.

마이그레이션 하면서 가장 많이 느낀 부분이에요
이전에도 전 충분히 폴더링을 잘한 것 같다고 생각했던 부분이였어요
그러나…. Tuist 로 마이그레이션 하면서 “아… 엉망이였구나 라고 느끼는 시간이 되었어요
예를 들어

(Utils 모듈)      (Data 모듈)
     |               |
 DateManager     UserDateModel

이 둘의 모듈이 있다고 가정할게요
이때 DateManager 에서 UserDateModel 을 직접 알고 있고
UserDateModel 에서도 DateManager를 사용하는 경우라고 해볼께요

이때 저는 이런경우도 상관이 없을 것 같다고 생각했어요
하.지.만. Tuist 에서는 경고를 띄웁니다.
두개의 모듈에서 순환참조를 하고 있습니다.”

이처럼 각 모듈간의 의존관계를 몸으로 느낄수도 있으며
시각적인 그래프로도 볼 수가 있어요!

tuist graph
or
tuist graph -d // 외부 종속성 Skip

마이그레이션 중 그래프 생성했던 사진이에요

3. 각각의 ExampleApp ( DemoApp )을 통해 빌드 속도를 올리기

다른 불로그에선 무작정 빌드속도가 빨라진다. 라는 글들이 꽤 많았어요
마이그레이션을 하다 보니 정작 빌드했을때 그런 기분이 안느껴 지더라구요
각각 나눈 모듈에서 작은 앱이 있어야 진짜 빌드가 빠르고
빠른 디버깅이 가능할 것 같은데 라는 생각이 들더라구요

그러긴 위해선 각 Home, BuyOrNot, MyPage 등 각 중심에게 DemoApp 을 생성하게 하도록 하였어요
그래프 1번째 사진을 보면 이를 수행하고 있죠

Tuist 마이그레이션 하기전 빌드 타임 그래프

Tuist 마이그레이션 후 빌드 타임 그래프

👉🏻 장점은 여기까지 정도가 가장 큰 핵심이라고 생각이 들어요!

마무리 하며

다음 시간엔 Tuist 2편 마이그레이션 과정기를 작성해 보려고 해요…
사실 이번 시간에 해야지 했는데
생각보다 길어질 것 같아서 Tuist Why? 먼저 진행하게 된것 같아요…
다음시간에 뵈용

profile
IOS 개발자 새싹이, 작은 이야기로부터

0개의 댓글