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 변환

추가 학습 필요성

  • 모듈화와 빌드 최적화에 대한 심층적인 이해 필요성 인식
  • 서드파티 라이브러리 최적화 방법에 대한 추가 학습 요구