안녕하세요 불망입니다!
최근 제가 진행하고 있는 프로젝트에는 모듈화를 직접 경험 해보고 싶어 TCA와 Tuist를 도입하고 있습니다~!
Tuist는 일단 처음 접근할 때 너무 생소하고 낯설었지만 공식문서와 리서치를 통해서 결국 설정을 하였고
Dev(개발), Release(QA), Main(배포) config setting을 하여 프로젝트를 진행중입니다.
그렇게 Tuist에 대해서 배워가고 있을 때 애플 개발자 아카데미 동문 커뮤니티에서 Tuist팀을 초대하여 발표를 한다는 소식을 들었습니다~!
저는 아카데미 동문으로 Staff를 지원할 수 있어서 지원하였습니다~! 😄
발표
발표 세션은 총 2개의 세션으로 민소네님의 모듈로 나눌때 3가지의 팁,
Tuist팀의 Scale에 맞게 Swift Packae Manager를 맞추는 법이었습니다.
민소네님의 모듈화 과정에서 마주친 문제와 해결 사례
민소네님께서 발표하신 내용으로는 데모앱을 만들 때 번들 ID 지정, 리소스 관리, 유닛 테스트의 빌드 용량 축소 등 프로 젝트에 모듈화를 적용하면서 겪게되는 다양한 시행착오에 대해 알려주시고 그것을 관리하는 방법을 알려주셨습니다~!
처음으로 보는 것들도 많았고 Unit Test를 해본적이 없어 Unit Test 빌드를 할 때 용량이 많아지는 것을 몰랐었는데 그것을 깨달았던 내용이었습니다..!
1. 데모앱을 의존하는 유닛 테스트의 Derived Data 용량 이슈
예를 들어, 어플리케이션이 여러 모듈을 의존한다고 가정을 합시다.
이 모듈들은 여러 Frameworks와 Libraries를 가지고 있는 상황입니다.
ModuleD의 크기는 31.7MB 입니다.
그렇다면 다른 아래 두 번째 이미지처럼 의존성 그래프를 볼 수 있는 상황입니다.
앱 -> ModuleA -> ModuleB -> ModuleC -> ModuleD
Feature에서 필요한 의존 모듈의 총 용량을 X, Feature 개수 : N이라고 가정하면 용량은 X * N이 되는 것 입니다.
이것에 대한 해결방안으로는 UnitTest 타겟에서 Host Application을 None으로 설정하면 된다고 합니다..!
저는 Tuist를 사용해 본 적이 없는 상황에서 이 발표를 들으며 프로젝트가 커지면 이러한 상황이 발생할 수 있다는 것을 깨닫게 되었습니다.
제가 나중에 큰 프로젝트를 진행하게 된다면 사용해보고 싶은 내용이었습니다
2.모듈의 데모앱 Bundle ID 이슈
이 부분은 현재 진행중인 프로젝트 몽글(Mongle)에서 적용을 한 부분인데요!
모듈화를 하는 경우 수십, 수백개의 데모앱을 만들고 운영합니다.
이 때 Automatically manage signing을 켰다면 수십, 수백개의 다른 Bundle Identifier를 가진 Identifier가 등록되는 데 프로비저닝 파일도 많이 생성되고 기존 Xcode 정보 초기화, 신규 입사자, 신규 테스트 폰 등록 시 등 여러 문제가 발생됩니다.
이것을관리 요소가 적은 모듈의 데모앱의 Bundle Identifier를 하나만 사용합니다.
3.리소스 관리
여러 모듈에서 사용하는 리소스를 한 곳에서 가져와서 사용하는 것 입니다.
전체 리소스를 관리하는 모듈을 통해 리소스 접근하여 효율적으로 관리할 수 있습니다.
Tuist팀의 Fixing Swift Package Manager at scale 발표!
Swift Package Manager를 대규모로 수정하는 방법에 대해 발표하였습니다.
Package를 사용할 경우 다른 개발자가 사용할 수 있도록 해야하여 Swift Package Manager를 사용합니다.
하지만 아쉬운점으로 일정 규모에 도달하면 최적하하기 어려워 빌드 속도가 느려지는 것입니다. 또한 pbxproject가 충돌이 나면 해결하기가 어려워 개발환경을 악화합니다..🥲
Dependency를 Bulid하는 시간이 20초이상 소요가 됩니다.
Tuist SPM으로 이러한 빌드 시간을 줄이고 관리합니다.
이번 행사에서 배운 내용들로 제가 이번에 진행하고 있는 프로젝트에서도 Tuist SPM을 사용하여 빌드 시간을 단축 시켰습니다!
또한 Tuist SPM에서는 dependencies의 product types을 정할 수 있습니다.
그래서 이런 것을 해결하기 위해 Tuist를 사용하여 Dependecy를 관리하고 빌드 속도 개선을 하는 것을 보고 정말 놀랐습니다.
TuistNight에 참가하면서 들은 생각은 "리서치한 내용보다 알게 된 내용들이 많다!" 입니다.
이번 행사를 참여 하면서 알게된 내용들을 현재 진행중인 프로젝트에 많이 녹이려고 합니다! 감사합니다!
'기타 > 후기' 카테고리의 다른 글
[회고록] Toucher 후기 1편 (Apple Developer Academy) (0) | 2024.01.03 |
---|---|
WWDC2023-Swift Student Challenge 후기 (0) | 2023.05.06 |
POSCO IMP 공모전 제출 후기 (비즈니스 용어 정리, 회고) (0) | 2023.04.06 |
제 1회 세미나(대전 iOS) (0) | 2023.03.26 |
[Apple Developer Academy] MC1 Act 후기 (0) | 2023.03.23 |