아토믹 디자인을 활용한 디자인 시스템 도입기
카카오엔터테인먼트 FE 기술블로그
fe-developers.kakaoent.com
현재 프론트엔드의 트렌드, 프론트엔드에서 무엇을 하고 싶은지 무엇을 향해 달려가고 있는지 참고할만한 사이트

최근엔 RXSwift를 적극적으로 사용해보면서 연산자를 사용하는 적절한 상황을 정리하고 이해도를 높이려고 노력해왔습니다. 근데 이거 왜 했을까요?
지난 번에 SwiftUI는 선언형 구문으로 뷰를 구성할 수 있다라고 하였습니다.
그럼 그전에는 아예 불가능했을까요? 이게 바로 RxSwift를 공부한 이유입니다.
Rx덕분에 코드량이 줄어들고 선언형으로 UI를 관리할 수 있게 됩니다.

최근 올렸던 리액터킷 프로젝트 뜯어보기 글에서 느낄 수 있죠.
Rx를 사용하여 뷰를 선언하면 리액터(뷰모델)에서 상태를 감지할 수 있고 리액터에서 데이터를 받아오고 값이 변화하면 뷰가 바로 알 수 있도록 해주죠.
하지만 Rx는 이제 옛것이 되었다고 해요.
어딘가에서 이제 Rx는 걷어내고 있다고 들은적은 있는데
정말 아직도 Rx 공부할 게 많다고 느끼는데 옛것이 되었다뇨...
일단 RxJava도 코틀린이 나오면서 대체되었다고 합니다. 제가 안드로이드 공부할 때도 이미 언급도 되지 않았던 거 같네요.
RxSwift도 SwiftUI가 나오면서 대체될 예정입니다.
몇가지 배경이 더 있는데 Rx는 순수하게 Swift만을 위한 기술이 아니었죠? 애플이 만든 기술이 아니었으니까요.
SwiftUI가 나오기까지의 과도기를 버텨준 좋은 시도였다라고 합니다.
다시 정리하면 아래와 같습니다.
Rx왜 대체되나?
1. 러닝커브가 높다
2. SwiftUI는 반영된 결과를 바로 볼 수 있지만 Rx는 불가. 생산성 자체가 다름.
3. Swift만을 위한 기술이 아니다보니 발생하는 문제들.
4. 그 동안 없었던 선언형구문을 가능하게 해주는 Swift만을 위한 SwiftUI의 등장.

디자인 패턴에 대한 글도 많이 봤던 거 같습니다. SwiftUI는 MVVM이다? 클린아키텍쳐를 접목할 필요는 없다?
SwiftUI는 공식적으로 어떤 패턴을 위해 만들어졌다고 말을 하진 않았다고 해요.
단지 SwiftUI안에 있는 지시어들을 활용하면 데이터들이 이렇게하면 바인딩 될 수 있다... 이렇게하면 될 수 있다 등등 을 따라가는 게 좋겠다 식으로 설명을 해주었죠.
기존 업계에서 많이 쓰던 언어들을 통해 SwiftUI를 표현하려고 하였고 MVC의 문제점을 애플이 참고했다는 것은 사실이기에 MVVM등 디자인 패턴의 변화양상은 알아볼 필요가 있다고 합니다.
SwiftUI는 데이터 주도적이다(data driven)
SwiftUI기반의 iOS프로그래밍 책에서
데이터 주도적이라는 말은 앱데이터와 사용자 인터페이스 및 로직 사이의 관계에서 본 것이라는 말이라고 소개되어있습니다.
이 부분은 SwiftUI를 직접 경험하면 바로 느끼실 수 있을 것 같아요.
UIKit을 사용했을 때의 예를 들어보겠습니다.
아래 사진처럼 프로필 이미지를 UIImageView에 나타내려고 합니다.

이미지 뷰는 앨범에서 사진을 선택할 시 호출되는 함수를 통해
그때마다 이미지뷰의 이미지를 할당해주는 일을 일일이 해주어야합니다.
다시말해 데이터 변경시 해당 변경내용이 화면에 나타나도록 해주는 걸 직접 코드로 작성해야하죠.
주기적으로 해주어야한다면 더 번거롭겠습니다.
아래처럼요. 그래서 RxSwift를 통해 해결하였죠.

SwiftUI를 사용하면 Rx도 사용하지 않아도 됩니다!
SwiftUI는 앱의 데이터 모델과 사용자 인터페이스 컴포넌트, 기능을 제공하는 로직을 Binding하는 여러 방법으로 복잡도를 낮춰준다고 해요.
그 방법은 다음 글에서 알아보도록 하겠습니다.
'SwiftUI' 카테고리의 다른 글
[SwiftUI] FileImporter 권한 요청 (0) | 2023.02.09 |
---|---|
[SwiftUI] View scene window이란? UIKit에서도 본 거 같은데? (0) | 2022.12.18 |
[SwiftUI] SwiftUI의 특징을 살펴보면서(1) - 선언적 구문 (0) | 2022.10.19 |
[SwiftUI] SwiftUI를 처음 만나서... 개요 (2) | 2022.10.18 |
댓글