안녕하세요! 피피아노입니다 🎵
이번 포스팅에서는 SwiftUI가 출시된 이유에 대해서 한 번 정리를 해보려고 합니다.
서론
갑자기 이런 글을 쓰게 된 이유는 SwiftUI가 재밌고 신기하고 너무 좋지만 한편으로는 애플은 기존에 잘 쓰던 (정말 잘 쓰고 있었는지는 모름) UIKit를 계속 안 쓰고 왜 SwiftUI라는 새로운 프레임워크를 출시했는지 궁금해지기도 했고 애플이 이러한 프레임워크를 출시한 이유를 알면 SwiftUI라는 기술을 더 잘 쓰고 이해하기가 쉬워지지 않을까? 라는 생각이 들어서 작성하게 되었습니다.
(겸사겸사 나오게 된 이유도 공유하고요!)
SwiftUI란?
먼저 SwiftUI 출시 이유를 살펴보기 전에 SwiftUI가 뭔지 알아보자면 Apple이 2019년 WWDC 19에서 처음 공개한 선언적 Swift 프레임워크로, iOS, macOS, watchOS, tvOS, 이제는 visionOS까지 앱 개발을 위한 새로운 방법입니다.
Apple이 SwiftUI를 출시한 이유
Apple이 SwiftUI를 출시한 이유를 알려면 SwiftUI의 기본적인 목적을 알면 됩니다. SwiftUI의 기본적인 목적은 앱 개발을 더 쉽고 빠르게 함과 동시에 소프트웨어를 개발할 때 일반적으로 발생하는 버그들을 줄이는 것입니다.
즉, SwiftUI는 복잡한 UI를 더 쉽고 빠르게 구현할 수 있도록 설계되어서 개발 시간을 단축하고 사용자 경험을 개선하기 위해 출시된 것입니다.
SwiftUI 이전에는?
위 내용을 알고나면 1가지 궁금증이 생깁니다.
그럼 SwiftUI가 나오기 전에는 어떻게 설계되었지? 라는 궁금증입니다.
SwiftUI가 나오기 전에는 iOS 소프트웨어 개발 키트(SDK)를 구성하는 여러 프레임워크와 UIKit을 사용해서 iOS앱을 만들어 왔습니다.
UIKit은 세밀한 UI컨트롤과 다양한 기능을 제공하고 개발자가 복잡한 UI를 정교하게 구현할 수 있게 해줍니다. 하지만 이러한 UIKit은 명령형 프로그래밍 패러다임을 사용하고 있었기 때문에 복잡한 코드를 작성해야 하므로 SwiftUI보다 개발 속도가 느릴 수 밖에 없었습니다.
SwiftUI의 선언적 구문
기존 UIKit으로 개발을 하며 사용자 인터페이스 레이아웃을 설계하고 기능을 구현하는 것과는 달리 완전히 다른 방법인 선언적 구문이 SwiftUI에 도입되면서 단순하면서 직관적인 구문으로 View를 구성할 수 있게 해줍니다.
기본적으로 레이아웃에 포함될 컴포넌트들을 선언하고 Layout Manager를 명시하고 속성을 설정하는 modifier를 선언하면 레이아웃 위치, constraint, 렌더링 방법 등 복잡한 사항들은 SwiftUI가 자동적으로 처리해줍니다.
그럼 UIKit을 써야할까? SwiftUI를 써야할까?
결론부터 말하자면 현시점에서는 둘 다! 사용해야 합니다.
물론 UIKit만 가지고 기존처럼 개발할 수 있겠지만 앞으로의 미래와 SwiftUI의 업데이트들을 보면 UIKit만 가지고 개발을 하는 것은 좋지 않고 반대로 SwiftUI만 가지고 개발을 하기에는 아직 SwiftUI의 기능들이 부족합니다.
물론 간단한 프로젝트들이나 기능들은 SwiftUI를 이용해서 개발을 할 수 있겠지만 UIKit을 완전히 대체하기에는 아직 무리가 있다는 거죠.
하지만 Apple이 SwiftUI를 적극적으로 지원하고 있고 많은 기업들에서도 SwiftUI를 도입하고 있으니, 이 문제는 시간이 지나면 자연스럽게 해소될 것 같습니다.
그리고 UIKit과 SwiftUI를 함께 사용하는 방법은 다양하게 존재하기 때문에 이러한 방법들을 이용해서 함께 사용해야 합니다.
두가지 프레임워크를 함께쓰는 방법은 이 포스팅에서 다루기엔 너무 길어지니 제가 더 공부를 해서 포스팅할 수 있도록 하겠습니다!!
읽어주셔서 감사합니다!
감사합니다.
잘못된 내용이 있거나 더 좋은 내용 피드백은 언제나 환영합니다!
궁금하신 부분은 댓글로 질문 부탁드립니다!
'Apple > SwiftUI' 카테고리의 다른 글
[SwiftUI] List 동적 리스트로 구현하기 (2) | 2024.05.15 |
---|---|
[SwiftUI] List에 대한 기본기 이해하기 (0) | 2024.05.06 |
[SwiftUI] 상태 프로퍼티(State Property) (0) | 2024.03.19 |
[SwiftUI] SwiftUI 스택 정렬(VStack, HStack, ZStack)과 정렬 가이드 (0) | 2024.03.14 |
[SwiftUI] SwiftUI 뷰(View) 이해하기 (0) | 2024.03.01 |