Swift 문법을 학습하고, 활용하는 궁극적인 목표 중 하나로
Application, 즉 나만의 앱을 만드는 과정을 꿈꾸고 있을 것입니다.
iOS 앱 개발을 위한 UI 프레임워크는
크게 UIKit과 SwiftUI로 구분되고, 개발자들에 의해 활용되고 있습니다.
(프레임워크 관련 포스팅은 추후 iOS 공통 포스팅에서 다루도록 하겠습니다)
그 중, SwiftUI는 모든 Apple 플랫폼(iOS, iPadOS, macOS, watchOS, tvOS 등)을
'단 한번의 개발과정' 을 통해 만들 수 있는 개발 도구로서 발 빠르게 성장하고 있습니다.
이번 포스팅에서는,
SwiftUI의 전반적인 소개와 UIKit과의 관계에 대해 다뤄보도록 하겠습니다.
SwiftUI란 어떤 도구인가요?
단 한번의 개발, 모든 Apple 플랫폼의 UI를 다루는 새로운 개발 패러다임
WWDC 19에서 공개된 SwiftUI는 기존 UIKit(Storyboard)의 단점과 한계를 보완하기 위한
새로운 UI 개발 프레임워크이자, 패러다임 으로 소개하고 있습니다.
기존 Objective-C를 기반으로 활용되는 개발 프레임워크 패러다임은
Cocoa Framework 및 Cocoa Touch Framework 내 포함된
UIKit(ipad OS, iPhoneOS)과 AppKit(MacOS)를 기반으로 진행되어 왔습니다.
하지만,
WWDC14에서 발표한 우리의 새로운 언어인 Swift의 등장에 발맞춰
해당 언어의 패러다임에 부합하는 UI 개발 프레임 워크가 필요하게 되었으며,
이에, Swift를 기반으로 한 SwiftUI가 등장하게 된 것입니다.
SwiftUI의 목표
- 앱 개발을 더 빠르고 쉽게 하며, 개발 단계에서의 버그를 줄이는 것을 목표로 합니다.
- 기존 Storyboard 방식의 경우, 복잡한 코드로 인해 데이터의 흐름을 따라가기 어렵습니다.
(이로 인해 개발자 간의 협업 문제가 빈번하게 발생하며, Conflict 오류가 자주 발생합니다) - 그래서 SwiftUI는 '빠르고 쉬운 개발, 버그 줄이기' 를 주요 목표로 설정합니다.
- 기존 Storyboard 방식의 경우, 복잡한 코드로 인해 데이터의 흐름을 따라가기 어렵습니다.
- 특히 개발 과정을 실시간으로 테스트 할 수 있는 ◉ Live Preview 기능을 사용할 수 있습니다.
- UIKit은 빌드(Build)를 통해 개발자가 구성한 UI를 볼 수 있다는 불편함이 있습니다.
SwiftUI의 특징
- SwiftUI는 크게 2가지 특징을 가지고 있는 새로운 개발 패러다임입니다.
- 첫 번째, 선언형 구문(declarative syntax)의 활용입니다.
- 선언을 통한 비교적 간단한 레이아웃 View를 구성할 수 있습니다.
- 두 번째, 데이터 주도적(data driven) 방식의 채택입니다.
- 단순하게 얘기하자면, 특정 프로퍼티를 게시 및 구독함으로서
- 추가적인 코드 작성 없이 변경사항을 자동 업데이트 할 수 있습니다.
- 첫 번째, 선언형 구문(declarative syntax)의 활용입니다.
SwiftUI의 목표와 특징은 추후 기능별 포스팅에서 구체적으로 살펴볼 예정입니다.
'이러한 특징이 있구나~' 정도만 알고 넘어가셔도 됩니다.
그렇다면, SwiftUI는 UIKit을 대체할 수 있나요?
SwiftUI와 UIKit은 혼용이 가능한 상호 보완적 관계
그렇다면, 현재 iOS 앱 개발 생태계는 SwiftUI를 중심으로 변화되었을까요?
답은 '그렇지 않다, 하지만 곧 변화될 것이다' 라고 정의내릴 수 있겠습니다.
여전히 기존의 수 많은 앱은 UIKit 프레임워크로 개발 되었으며, 유지되고 있기 때문입니다.
그렇기 때문에, SwiftUI가 UIKit을 대체하는 것은 현재로선 불가능하다고 볼 수 있습니다.
(SwiftUI를 잘 뜯어보면, UIKit에서 사용되는 코드가 숨겨져 있습니다)
결과적으로, SwiftUI는 멀지 않은 미래에 그 활용범위가 점차 넓어질 것은 분명합니다.
다만, UIKit과의 관계는 '대체' 가 아닌 '상생' 이므로,
개발자로서 두 마리의 토끼를 모두 잡는 것이 필요합니다.
SwiftUI의 등장배경, 그리고 UIKit과의 관계에 대하여 살펴보았습니다.
추후 SwiftUI관련 포스팅에서는
X-Code를 활용한 앱 개발 프로젝트 구현 과정을 따라가며
주요 기능을 알아가 보도록 하겠습니다.
'iOS > SwiftUI' 카테고리의 다른 글
[iOS/SwiftUI] some view와 불투명 반환타입(Opaque return type) (1) | 2023.03.08 |
---|---|
[iOS/SwiftUI] 내가 그린 화면 미리보기, 프리뷰 캔버스(Preview Canvas) (0) | 2023.01.16 |
[iOS/SwiftUI] Xcode로 SwiftUI 프로젝트 만들기 (0) | 2022.12.24 |
댓글