번호 : 002, 작성일자: 2025-01-14

2025.01.06 ~ 2025.01.13

🌈 SwiftUI 로그인 리팩토링


기존 UIKit 프로젝트를 SwiftUI로 전환하기 위해 로그인 단계부터 구현을 시도했다.

일단 간단히 2025년 현재 시점에 SwiftUI가 UIKit보다 가지는 이점등을 설명하면 약 10가지가 있다.

  1. 선언전 구문 : SwiftUI는 선언적구문을 사용하여 UI를 정의하므로 코드를 더 쉽게 읽고 유지 관리하기 용이하다.
  2. Preview 기능 : Preview란 앱을 실행하지 않고 변경사항을 확인할 수 있다. 하지만, UIKit에서도 Preview를 사용가능하지만 SwiftUI에서보다 Preview가 적용되는 데 체감상 느린 것 같다.
  3. 크로스플랫폼 지원 : SwiftUI는 iOS, macOS, watchOS, tvOS 앱을 구축할 수 있지만, UIKit은 주로 iOS용으로 설계되어있다.
  4. 상태 관리 : SwifttUI는 여러가지 상태 관리도구(@State, @Binding, @Environment)를 제공하여 데이터 흐름 방식을 간소화하지만, UIKit은 상태를 관리하고 UI를 업데이트하기 위해 NSNoitificationCenter, Delegates, KVO를 사용해서 더 많은 상용구 코드와 수동개입이 필요 합니다.
  5. 애니메이션 및 화면전환 : SwiftUI는 UIKit보다 애니메이션 및 전환을 위한 간단하고 직관적인 API를 제공하여 구현이 간단하다.
  6. 코드 간결성 : SwiftUI는 UIKit보다 상용구 코드 대부분을 제거해서 코드가 간결하다.
  7. 다크모드 자동 지원 : SwiftUI는 다크모드가 자동으로 적용됩니다.
  8. 최신 Swift 기능 통합성 : UIKit은 원래 Objective-C 전용으로 제작되어 Swift전용으로 제작된 SwiftUI보다 원활하게 통합되지 않습니다.
  9. 접근성 : SwiftUI는 많은 접근성 기능을 자동으로 포함합니다.
  10. 러닝커브 : SwiftUI와 UIKit을 비교하면 선언적 구문으로 인해 간단한 SwiftUI가 러닝커브가 적다.

그럼 다른 관점에서 UIKit이 필요한 시점은 3가지가 있습니다.

  1. 자료 관점 : UIKit은 과거부터 오래 사용되었기 때문에 커뮤니티와 문서 등 리소스가 풍부하고 검증되었다.
  2. 이전 버전과의 호환성 : SwiftUI는 iOS 13이상이므로 이전 버전을 지원할 때 UIKit이 필요합니다.
  3. 복잡한 요구사항 : 복잡한 요구사항이나 미세한 제어를 제공해야 할 때 UIKit이 더 미세한 제어를 제공합니다.

⇒ 직접 로그인 단계를 구현하면서 느낀점은 위의 SwiftUI 장점등을 경험해보면 개발생산성이 향상됨을 느꼈고, 미세한 제어를 제공하지 않는 듯이 UIKit의 lineBreakMode, lineBreakStategy의 한글워딩등이 불편했다.

⚡️ Flutter


코드팩토리 초급 Flutter 3.0 앱 개발를 3분의 1정도 듣고 위의 SwiftUI로 로그인단계를 구현한 프로젝트를 Cursor.AI를 사용하여 Flutter 파일럿앱 개발을 시작해봤다. SwiftUI도 선언형구문이고, Flutter도 선언형구문이 유사해서 CursorAI를 사용할 때 UIKit 보다 SwiftUI 를 이해를 잘하는 것 같다. 아직 완벽히 변경해주지는 못해줘서 Flutter 빌드 설정, 에셋 처리, 세세한 UI 수정등은 직접했지만 SwiftUI를 Flutter로 전환하는 데 약 1일도 소요가 안되었던 것 같다.

🔔 개발팀 세미나 발표 - iOS 알림의 이해


개발팀에서 협업을 진행할 때 서로 간단히 지식공유를 진행하면 좋을 것 같아 세미나를 진행했고 내 순서에서 발표를 진행했다.

협업을 할 때 iOS는 알림이 올때 APNs를 통해 온다는 부분이 안드로이드와 다르고, 서버에서 Payload 형식도 맞춰서 보내줘야 한다는 점등을 고려하여 해당 지식을 알고 있으면 좋을 것 같아 주제를 iOS 알림의 이해로 설정했다.

내용은 간단하게 로컬알림의 구현과 동작원리, 푸시알림의 구현과 동작원리, Custom Push 가능 범위, Silent Push, Payload 데이터 형식 등에 대해서 설명하고 샘플앱을 통해 직접 보여주며 시연도 진행했다.

이번 계기로 알림 관련개발을 진행할 때 협업을 할 때 도움이 될 것 같다.

🙋🏻‍♂️ 기타 사항


  1. 우연히 Medium에서 iOS 개발자가 AI 개발에 관심이 생겼을 때 로드맵을 설명하는 글을 보았는 데 완전히 AI 개발자로 전환이 아니여도 CoreML을 사이드프로젝트에 도입하는 등 천천히 접근해보는 방법은 좋은 것 같다.
  2. 인사평가 시즌