안녕하세요! 피피아노입니다 🎵
이번 포스팅에서는 SwiftUI를 공부하기 전에 SwiftUI가 어떤 것인지 이해를 하고 가는 것이 중요하기도 하고, 왜 이렇게 많은 개발자들이 SwiftUI에 열광하는지 이해해보기 위해 SwiftUI에 대해 자세히 정리를 해보려고 합니다.
그럼 바로 시작하겠습니다!
SwiftUI란?
SwiftUI는 애플이 2019년 WWDC19에서 처음 공개한 프레임워크입니다. 이 SwiftUI가 등장하기 전에는 UI를 구축하기 위해서 플랫폼마다 다른 프레임워크를 사용해야 했습니다. iOS, tvOS UI는 UIKit을, macOS는 AppKit을, watchOS는 WatchKit 이렇게 말이죠.
따라서 다양한 애플 플랫폼을 개발을 하고 싶다면 수많은 프레임워크를 공부해야 한다는 단점이 있었습니다.
하지만 애플이 WWDC19에서 공개한 SwiftUI 덕분에 이 하나의 프레임워크로 모든 플랫폼을 개발할 수 있게 되었습니다.
SwiftUI 특징
자 SwiftUI의 특징에 대해 알아봤으니 SwiftUI의 특징이 뭐가 있는지도 알아야겠죠?
SwiftUI의 대표적 특징으로는 선언적 UI, 크로스 플랫폼, 라이브 프리뷰 이렇게 꼽을 수 있습니다.
선언적 UI
우선 첫 번째 특징은 '선언적 UI'입니다. 선언적 UI는 우리가 어떤 상태를 기반으로 UI를 어떻게 표현할 것인지를 선언하는 방식을 말합니다. 이는 기존의 명령형 UI와 대조적입니다.
기존의 명령형 방식에서는 개발자가 상태 변화를 감지하고 그에 따라 UI를 직접 변경해야 했습니다. 반면, SwiftUI에서는 상태의 변화가 일어나면 프레임워크가 자동으로 UI를 업데이트합니다. 이러한 특징 덕분에 코드의 가독성이 향상되고, 상태 관리가 더욱 간결해진다는 장점이 있습니다.
크로스 플랫폼
처음 SwiftUI에 대해 설명할 때 언급했던 내용이니 간단하게 정리하고 넘어가겠습니다.
SwiftUI는 애플의 모든 플랫폼에서 동작합니다. 이말은 즉, 한 번의 코드 작성으로 iOS, macOS, watchOS, tvOS 모든 플랫폼의 앱을 개발할 수 있다는 것을 의미합니다. 이 덕분에 각 플랫폼 별 프레임워크를 공부할 필요가 없어졌고 개발 시간을 크게 줄여준다는 장점이 있습니다.
라이브 프리뷰
SwiftUI는 라이브 프리뷰 기능을 제공합니다. 이 기능은 제가 제일 좋아하는 기능 중 하나인데요.
라이브 프리뷰는 코드를 작성함과 동시에 실시간으로 UI가 어떻게 변화하는지 확인할 수 있게 해줍니다. 이는 개발자에게 실시간 피드백을 제공하므로, 개발 과정을 더욱 빠르고 효율적으로 만들어준다는 장점이 있습니다.
기존에는 작성한 코드가 제대로 작동하는지 보려면 매번 빌드를 해야 해서 시간도 오래 걸리고 귀찮았는데 이러한 단점을 모두 해결해줘서 매우 편리합니다!
장단점
자 이제 SwiftUI의 장단점에 대해 살펴보겠습니다.
먼저 장점부터 보자면
선언적 문법: 위에서도 말했다시피 SwiftUI는 선언적 문법을 사용합니다. 그렇기 때문에 상태의 변화를 프레임워크가 자동으로 UI를 업데이트합니다. 이렇게 되면 자연스럽게 코드의 길이가 줄어들기 때문에 직관적으로 만들 수 있고 코드의 가독성을 높일 수 있습니다.
View 조합을 통한 구현: SwiftUI는 여러 View를 조합해서 복잡한 UI를 손쉽게 구현할 수 있도록 합니다. 각 View는 자체적으로 독립성을 가지며, 이들을 조합하거나 중첩시켜 사용함으로써 복잡한 UI를 생성할 수 있습니다. 이로 인해 UI 설계를 유연하게 할 수 있고 코드의 재사용성을 높일 수 있습니다.
Modifier Chaining을 통한 구현: SwiftUI에서는 Modifier를 사용해 View의 속성을 변경할 수 있습니다. 여기서 'Chaining'이란, 여러 Modifier를 연결하여 사용할 수 있다는 의미입니다. 예를 들어, 텍스트 색상, 글꼴, 배경색 등 다양한 속성을 한 줄의 코드로 쉽게 적용할 수 있습니다. 이로 인해 코드가 간결해진다는 장점이 있습니다.
Preview의 강력한 기능: 이 장점도 위에서 언급한 기능인데요. SwiftUI는 라이브 프리뷰 기능을 제공합니다. 즉, 코드를 작성하는 동시에 그 결과를 실시간으로 확인할 수 있습니다. 이는 개발자가 작성한 코드가 실제로 어떻게 동작하는지 빠르게 이해하고, 필요한 수정 사항을 즉시 반영할 수 있게 해줍니다. 또한, 다양한 디바이스나 환경에서의 미리보기를 지원해, 호환성을 쉽게 확인할 수 있습니다.
자 이러한 장점들을 보면 SwiftUI가 정말 편하고 안 쓸 이유가 없죠? 그렇다고 이런 장점들만 있냐?
당연히 아닙니다.
SwiftUI에는 치명적인 단점들도 존재합니다.
단점을 살펴보자면
최신 버전에 대한 의존성: SwiftUI는 iOS 13 이상, macOS 10.15 이상 등의 최신 OS에서만 동작합니다. 이는 이전 버전의 OS를 사용하는 사용자에게는 앱을 제공할 수 없다는 단점을 가지고 있습니다.
아직 UIKit 대체 불가능: SwiftUI는 아직 초기 단계의 기술로, 모든 기능이 완전히 구현되지 않았습니다. 그렇기 때문에 UIKit에서는 존재하지만 SwiftUI에는 없는 기능들이 있어서 아직 UIKit을 완벽하게 대체할 수 없습니다. 또한, SwiftUI에 관한 자료나 커뮤니티가 아직은 부족하다는 단점이 있습니다.
매 버전 별로 큰 변동: 이 부분은 단점이자 장점으로 볼 수 있는대요. SwiftUI는 위에서 언급 했듯이 아직 모든 기능이 완전히 구현되지 않았습니다. 그래서 애플도 SwiftUI에 많은 지원을 하고 있기 때문에 매 버전마다 변경, 보완 되는 부분들이 많습니다. 그렇기 때문에 사용법이 아예 달라지는 경우도 존재합니다. 하지만 이렇게 지속적인 지원 덕분에 나중에는 가장 큰 단점인 UIKit 대체 불가능한 부분도 대체가 가능해지겠죠?
이렇게 장점과 단점을 간단하게 정리해보았는데 사실 저는 SwiftUI가 가지고 있는 단점들이 정말 너무 치명적이냐 하면 전혀 그렇지 않다고 생각합니다. 최신 버전에 대한 의존성은 어차피 애플 기기의 소프트웨어는 매년 업데이트가 되기 때문에 이 부분은 시간이 지나면 자연스럽게 해결될 부분이고, UIKit 대체 불가능한 단점도 애플에서 지속적으로 SwiftUI를 업데이트 중이기 때문에 이 부분도 시간이 지나면 분명 해결될 부분입니다. 그렇게 되면 버전 별로 큰 변동도 서서히 줄어들겠죠?
이번 포스팅에서는 이렇게 SwiftUI의 개념과 특징, 장단점에 대해서 정리를 해보았습니다.
여전히 초기 단계의 기술이지만, 애플이 지속적으로 업데이트를 통해 개선해나가고 있으므로, SwiftUI에 대한 높은 기대감을 가질 수 있습니다. 그럼에도 불구하고, SwiftUI를 선택하기 전에 앱 개발에 필요한 요구사항과 이 장단점을 충분히 고려해보는 것이 중요하기 때문에 여러분들의 상황에 맞춰서 공부하시는 것을 추천합니다!
감사합니다!
잘못된 내용이 있거나 더 좋은 내용 피드백은 언제나 환영합니다!
궁금하신 부분은 댓글로 질문 부탁드립니다!
'Apple > SwiftUI' 카테고리의 다른 글
[SwiftUI] 상태 프로퍼티(State Property) (0) | 2024.03.19 |
---|---|
[SwiftUI] SwiftUI 스택 정렬(VStack, HStack, ZStack)과 정렬 가이드 (0) | 2024.03.14 |
[SwiftUI] SwiftUI 뷰(View) 이해하기 (0) | 2024.03.01 |
[SwiftUI] Spacer 이해하고 응용해보기 (0) | 2024.01.16 |
[SwiftUI] MVVM(Model-View-ViewModel) 디자인패턴 완벽하게 이해하기 (2) | 2024.01.13 |