TCA는 SwiftUI, Combine 와 함께 사용할 수 있는 아키텍쳐 개념 중 하나입니다. SwiftUI는 기본적으로 View와 Model 간의 상태 Publishing이 가능한 형태이기에 기존에 주를 이루는 MVVM과는 조금 맞지 않습니다.
기본적으로 TCA는 Store의 State 변화에 따라 View를 업데이트 해주는 상태 기반의 단방향 아키텍쳐입니다.
따라서 오늘은 위 개념에 대해 알아보겠습니다.
https://github.com/pointfreeco/swift-composable-architecture
<aside> 💡 이 글은 TCA github Repo를 보고 번역하여 적는 글입니다.
</aside>
The Composable Architecture (TCA) 는 구성과 테스팅, 그리고 인체공학(인간이 이해하기 쉽게)을 염두에 두고 일관되고 이해하기 쉬운 방식으로 애플리케이션을 구축하기 위한 라이브러리입니다.
위 라이브러리는 SwiftUI, UIKit 그리고 어떤 애플 플랫폼에서도 사용이 가능합니다.
TCA는 다양한 목적과 복잡성을 가진 애플리케이션을 만드는데 필요한 몇 가지의 핵심적인 툴들을 제공한다.
애플리케이션을 만드는데 매일매일 마주치는 많은 문제들을 푸는 다양한 흥미로운 사례들을 제공합니다.
TCA의 특징은 아래와 같습니다.
상태 관리(State management)
단순한 값 타입을 사용하여 개발하는 애플리케이션의 상태를 관리하거나 많은 화면 간의 상태를 공유하는 방법을 제공한다. 이는 특정 화면의 변화를 다른 화면에서 즉시 관찰할 수 있도록 도와준다.
구성 (Composition)
큰 기능들을 작은 컴포넌트로 분해할 수 있도록 해준다. 분해된 작은 컴포넌트들은 격리된 모듈로 추출될 수 있으며, 기능의 형태를 구성하기 위해 쉽게 붙을 수 있다.
모듈화라는 말 인듯하다.
사이드 이펙트 (Side Effects)
애플리케이션의 특정 부분이 최대한 테스트 가능하고, 이해가능한 방식으로 외부 세계와 소통할 수 있도록 도와준다.
테스팅(Testing)
아키텍쳐 상에 구축 된 기능들을 테스트할 뿐만 아니라, 많은 파트로 구성되어진 기능들의 통합 테스트를 작성할 수 있다. 또한 종단테스트 (end-to-end tests)를 통해, 사이드 이펙트가 애플리케이션에 어떤 영향을 주는지 이해할 수 있다. 이를 통해서 개발자가 예상한 방식대로 비즈니스 로직이 돌아가고 있는지를 강력하게 보장할 수 있도록 해준다.
인체공학(Ergonomics)
가능한 적은 수의 개념과 동작 파트만을 가진 단순한 API만으로 모든것을 수행할 수 있다.