Boost‐SwiftUI‐2024.08.27(화).md - BoostSwiftUI/SwiftUI GitHub Wiki
원본 텍스트 파일
Boost-SwiftUI-2024.08.27.txt
스터디 시간 및 참여자
- 2024.08.27 화 오후 9:13 ・ 119분 40초
- 권승용 김대황 정다함 유정주 홍승현
- 클로바노트를 이용해 회의 내용을 기록하고, AI를 이용해 요약, 편집했습니다.
Task Local과 DispatchQueue
Task Local의 개념과 사용
- Task Local은 작업 간 안전한 상태 관리와 데이터 격리를 위해 사용됨
- Task 간에 변수나 의존성을 공유할 때 유용함
- Task가 생성될 때마다 초기화되며, 자식 Task는 부모 Task의 Task Local에 대한 참조만 가짐
디스패치 큐와 Task Local의 상호작용
- 구조화된 동시성(Structured Concurrency) 환경에서는 Task Local 값이 전파됨
- 비구조화된 동시성 환경(예: 디스패치 큐)에서는 Task Local 값이 손실될 수 있음
- 이스케이핑 클로저의 경계를 넘어가면 Task Local 값이 상실됨
TCA의 디펜던시 주입과 Task Local 활용
디펜던시 라이브러리의 특징과 사용법
- TCA(The Composable Architecture)에서 사용하는 디펜던시 라이브러리는 의존성 주입을 쉽게 구현할 수 있게 함
- 환경(라이브, 테스트, 프리뷰)에 따라 다른 구현체를 자동으로 주입할 수 있음
- 클로저 기반의 구현을 권장하며, 프로토콜 대신 구조체를 사용하는 방식을 선호함
클린 아키텍처 적용 사례
- 도메인 레이어와 데이터 레이어를 분리하여 구현
- 도메인 레이어에는 인터페이스 정의와 최소한의 테스트 구현체를 포함
- 데이터 레이어에는 실제 라이브 구현체를 포함
- 이를 통해 피처 단위에서 데이터 레이어에 대한 의존성을 제거할 수 있음
테스크 로컬의 활용
- 테스크 로컬을 사용하여 동시성 환경에서 안전하게 의존성 주입을 구현
- 각 클로저 내에서 의존성 값을 변경하고, 그 변경이 해당 클로저 내에서만 유효하도록 함
- 이를 통해 여러 의존성 주입 상황을 동시에 처리할 수 있음
- 테스크 로컬의 새로운 활용 방법에 대해 긍정적인 반응
iOS 앱 개발에서의 모듈화와 빌드 최적화 논의
모듈화 접근 방식
- 피처 단위 모듈화에 대한 논의
- 수직 모듈화(레이아웃)와 수평 모듈화(기능 단위) 구분
- 모듈 간 의존성 관리의 어려움
- 인터페이스 모듈 사용에 대한 고민
- 독립적인 피처 모듈 구성 제안
- 최상위 컴포지션 모듈에서 하위 피처 관리
빌드 속도 개선
- 모듈화 후 빌드 속도 개선 효과 논의
- 전체 빌드 시간은 비슷하거나 증가할 수 있음
- 디자인 시스템 분리의 이점
- 컴포넌트 개발 시 빠른 프리뷰 가능
- API 연동 작업 시 모듈별 빌드의 효율성
SPM(Swift Package Manager)과 프레임워크
- SPM을 통한 모듈화와 빌드 속도 개선 가능성
- XCFramework 사용으로 서드파티 라이브러리 통합 최적화
- Firebase 등 동적 링킹 필요 모듈의 XCFramework 변환
추가 학습 필요성
- 모듈화와 빌드 최적화에 대한 심층적인 이해 필요성 인식
- 서드파티 라이브러리 최적화 방법에 대한 추가 학습 요구