11000개 파일 104만줄 프로젝트가 되면서 사람이 많아지고 코드 수가 많아지면서 문제가 발생하였다.
- 결합도 증가
- 빌드 문제
따라서 모듈화를 진행하였습니다. 많은 모듈을 Embeded 하는 것을 관리해줄 필요가 있었습니다. (모듈 110개)
장점
- 빠른 증분 빌드
- 빠른 코드 실행
- 데모앱 기반 개발
- 빠른 테스트 작성
- 안정적인 상품 개발
프레임워크는 동적/정적 구분이 안되어있어서 embed 하는 것을 관리가 어렵습니다.
동적 프레임워크를 Embeded 하지 않으면 크래시 정적 프레임워크 사용 시 코드 중복 복사 문제
트위스트는 하위 모듈도 알아서 Embeded 해줍니다.
- 전체적인 의존관계 파악가능
- 증분빌드 활용
- 코드에서 모듈로 관점 변경
현재 iOS 개발시장에서 Tuist를 이용한 모듈화 아키텍처가 왜 유행하고 필요로하는지를 잘 설명해주신 것 같습니다. 쉽게 설명해주셔서 너무 좋았고 저희 회사에서도 Tuist 를 도입하여 느꼈던 이점 외에도 많은 이점들을 알게되었고(데모빌드와 같은) 모듈 문서화 등이나 어떤 기준으로 모듈의 레이어를 구분하는지도 참고 할 수 있어서 좋았습니다.
https://www.youtube.com/watch?v=Up0wYoyY3o0
풀 스크린 웹뷰 - 스크린을 덮는 모달 방식 바텀 시트 웹뷰 네이티브 네비게이션을 지우고 웹뷰로 네비게이션 구성
앱 스킴 방식으로 스크립트를 전달
스크립트, JSAPI, Configure 방식으로 이용 간단한건 Script 복잡한고 양방향은 JSAPI 인터랙션이나 핸들링 할 UI는 Configuration(구조체) Ex: 파라미터로 받아 스켈레톤 스타일, 스태이터스바 등
공통되는 레이어를 모듈로 만듭니다.
웹뷰를 잘쓰면 네이티브앱처럼 자연스럽고 좋은 사용자 경험을 줄 수 있는 것 같다. 또한 SwiftUI 를 쓰지 않더라도 Combine 을 종종 쓰는 회사들이 있는 것 같아서 나도 공부해보면 좋겠다는 생각이 들었다. 웹뷰를 적용하면 네이티브 개발자는 할 일이 많이 없을 줄 알았는데 나의 착각이었던 것 같다. 내가 썼던 방식은 스크립트뿐이구나.. 생각하며.. 반성하게 되었다...