[iOS]Swift UI, UIKit 뭘 배워야 할까?

2023-03-14
조회수 377

처음 iOS를 공부하는 사람들이라면 어떤 걸 선택해야 할지 고민되는 문제 중 하나인 것 같다.

새로 나온 것은 Swift UI인 이것부터 배워도 될지?

 

물론 둘 다 알아야 하겠지만 처음엔 한가지를 선택해야 하니 말이다.

오늘은 iOS 개발자가 되기 위해 현업에서 Swift UI와 UIKit에 대한 정보를 주고자 한다.

UIKit은 뭐가 나빠서 Swift UI가 나왔을까?

분명 애플은 처음 iOS 생태계를 만들때 모두 UIKit을 이용해 개발할 수 있도록 설계를 했을 것이다.

하지만 시간이 지나면서 몇가지 문제들이 대두되었고 많은 iOS 개발자들은 이것을 해결하기 위해 많은 노력을 했다.

1. Xcode Storyboard의 퍼포먼스와 불편함

처음 UIKit을 접근하는 사람들이라면 스토리보드와 xib를 이용해 drag and drop형태로 개발을 하면서 신세계를 경험한다.

"이렇게 개발이 쉬웠다고?" constraint 개념만 익숙해지면 쉽게 개발이 가능하니까.

 

하지만 storyboard는 몇 가지 불편함을 가진다. 

1. 화면이 많아지면 느려진다. 인텔 맥북에서는 쉽게 xcode가 꺼지는 것을 볼 수도 있다.

2. UI 속성관리가 파편화가 될 수 있다. 코드 상에서 storyboard 상에서 두 곳에서 관리가 되어 나중에 지나다 보면 이 속성은 어디서 설정되는 것인가?라는 의문을 가진다

3. 협업이 어렵다. Storyboard file은 결국 xml로 이뤄져 있으나 해당 xml 파일은 읽을 수 있는 수준의 파일은 아니기 때문에 코드리뷰로 UI에 대한 구조나 구현상태를 확인할 수가 없다. 즉 Xcode 환경이 아니면 화면을 볼 수 없다는... (개발자들은 Github나 VCS으로 코드를 보고 이야기를 나누는 일이 많기 때문에...)

 

2. 명령적 개발

최근 몇년간은 선언적인 개발 방식이 주목을 많이 받아왔다.

보다 직관적인 코드로 명령적으로 작성되던 코드보다 높은 가독성으로 생산성과 유지보수적인 측면이 좋아지기 때문이다.

RxSwift나 Combine를 사용하게 되는 부수적인 이유도 선언적인 개발이 가능해서다.

 

3. 미리보기 미지원

기존 UI구현은 수정 후 빌드... 수정 후 빌드... 빌드를 통해서 생각보다 많은 시간이 필요했다. 

단순하게 정말 간단한 수정인데도 확인하려면 빌드를 해야 하다니 여간 불편한 것이 아니었다.

 

Swift UI의 장점?

사실 위에 말한 단점들을 모두 개선되어 나왔다.

  1. 선언적인 구문의 UI 구현
  2. 미리보기 지원
  3. Storyboard와 xib로부터의 해방

보다 빠르고 유지보수성이 좋은 UI개발 방식인 것이다.

Chat GPT에게 물어본 장점은 아래와 같다.

  1. 선언적 구문: SwiftUI는 UI 요소를 만들기 위한 선언적 구문을 사용합니다. 이를 통해 코드의 가독성과 유지 보수성이 향상됩니다.
  2. 빠른 개발: SwiftUI는 Xcode와 함께 제공되며, UI 디자인과 레이아웃을 즉시 미리 보기 할 수 있습니다. 이를 통해 개발자는 더 빠르게 앱을 개발하고 프로토타이핑할 수 있습니다.
  3. 다양한 플랫폼 지원: SwiftUI는 iOS, macOS, watchOS, tvOS 등 다양한 플랫폼을 지원합니다. 따라서 개발자는 한 번의 작업으로 여러 플랫폼에서 앱을 더욱 쉽게 배포할 수 있습니다.
  4. 실시간 미리 보기: SwiftUI는 개발자가 UI 디자인을 즉시 미리 보기 하면서 작업할 수 있도록 해줍니다. 이를 통해 개발자는 코드를 수정할 때마다 변경 사항이 어떻게 보일지 바로 확인할 수 있습니다.
  5. 자동화된 UI 테스트: SwiftUI는 UI 테스트를 자동화하는 것을 더욱 쉽게 만들어줍니다. 이를 통해 개발자는 앱의 UI를 더욱 신뢰성 있게 테스트할 수 있습니다.
  6. 모바일 개발을 위한 최신 트렌드: SwiftUI는 Swift 언어와 함께 사용되므로, 모바일 개발자들에게 최신의 트렌드와 기술을 제공합니다. 이를 통해 개발자는 더욱 빠르게 앱을 개발할 수 있습니다.

그런데도 모두가 Swift UI를 사용하지 못하는 이유

좋은거면 당장 Swift UI를 쓰면 되지 않나? 

미래는 맞지만 지금이 그 미래는 아닌 것 같다는 생각이다.

그 이유를 조금 살펴보자.

 

1. 배우기 어렵다.

기존의 iOS개발자들은 근 10년간 UIKit을 가지고 개발을 하고 있다.

그 상황에서 선언적이고 제약을 거는 것이 아닌 채워가는 방식의 Swift UI는 조금은 어렵게 느껴질 수 있고 어느 정도의 학습시간을 필요로 한다.

 

2. 안정적인 버전 13.4 ~

Swift UI는 최소버전 iOS 13부터 작동을 한다.

하지만 기본적으로 많은 버그들이 해결된 버전은 13.4 또는 14 버전이라고들 이야기를 한다.

아직 모든 회사가 iOS 14버전부터 지원할 수는 없다.

커머스 같이 이용자 수 = 매출인 상황에서 iOS 버전이 낮다면 그만큼 사용할 수 있는 유저가 적어지기 때문이다.

아마 올해 iOS 17이 나오게 된다면 iOS 13 이하의 비율이 많이 낮아질 수 있어 올해 하반기부터는 본격적으로 사용될 수 있는 비율정도가 될 수 있을 것 같다.


3. 아직 적은 레퍼런스

나온지가 몇 년이 되었지만 UIKit만큼 방대한 사용수가 작다 보니 레퍼런스가 풍부하지 않다.

현업에서는 이런 유지보수성이나 다양한 사용경우가 많아야하지만 위의 이유들로 어려운 부분이 있다.

 

4. UIKit != Swift UI 라서

SwiftUI의 많은 부분들은 UIKit으로 구현이 되어있다.

그렇다고 해서 Swift UI로 모든 것이 가능한 것은 아니기 때문이다.

 

결국은 UIKit을 사용해야 하는 상황들이 생기게 된다.

 

마무리

위와 같은 몇 가지 사유로 Swift UI를 현업에서는 많은 조직들이 고민을 하고 테스트를 하고 있다.

분명 명확한 장점과 미래라는 것에는 의심의 여지가 없지만 그 시점이 언제인가에 대한 고민들을 모두 하는 것 같다.

 

지금 취업을 준비하는 사람들이 구직을 하는 시점에 따라 다르겠지만 향후 몇 년간은 UIKit이 계속해서 대세이지 않을까?라는 생각을 하게 된다. 

물론 지금 Swift UI로 구현된 상용서비스가 있고 잘 구축해 나가는 조직들도 있지만 말이다.

 

왓에버는?

끊임없이 성장하고 인정받는 탑티어 엔지니어가 되고 싶지만
자신의 학습에 대한 방향성과 확신이 필요한 이들에게
왓에버가 탑티어 엔지니어의 멘토링과 코드리뷰를 통해 빠르게 성장할 수 있는 동력을 제공합니다.