본문 바로가기
Programming/Swift

스위프트를 시작하기 전 알아야 할 것들

by 조현성 2025. 6. 27.

썸네일

 

스위프트(Swift)를 처음 시작했던 시점을 떠올려 보면, 그냥 막연하게 "나도 앱 한번 만들어볼까?" 라는 마음이 먼저였다. iOS앱을 만들려면 Swift를 배워야 한다는 말은 여러 곳에서 들었고, Swift가 초보자에게 좋다는 이야기도 심심치 않게 들렸다.

 

그런데 이상했다. 막상 Xcode를 열어 보니 머리가 하얘졌다. 파일은 뭐가 이렇게 많고, 버튼 하나 띄우는데도 .state가 어쩌고, 옵셔널이니 뷰모델이니... 지나고보니 문법보다 중요한 것들이 있다. 그래서 이 글을 쓴다. 이건 Swift를 어떻게 쓰는지에 대한 글이 아니다. Swift를 왜 쓰는지, 시작하려면 어떤 마음가짐이 필요한지, 그걸 알려주는 글이다.

 

Swift를 선택한 이유

솔직히, Swift가 좋아서 시작한 건 아니다. (I Love Python...) 그냥 iOS앱을 만들기 위해 어쩔 수 없이 선택한 언어였다. 하지만 이상하게도 쓰면 쓸수록 이 언어가 가진 '안전함'에 빠지게 됐다. 타입을 강제하는 것, 옵셔널을 명시적으로 다루게 하는 것, 그리고 선언형 UI 구성 방식, 처음에는 귀찮았지만, 결국 그게 개발자를 실수로부터 보호하는 장치라는 걸 나중에야 알게 되었다.

 

✅ Swift는 '문법'보다 '철학'이 먼저다

Swift는 그냥 변수를 선언하고 함수를 호출하는 언어가 아니다. 이 언어는 개발자에게 "그 값을 정말 확신하느냐?"라고 되묻는다. 옵셔널이 대표적이다. "값이 없을 수도 있다"는 걸 강제로 명시하게 하고, 그걸 안전하게 처리하도록 요구한다.

var name: String? = nil

 

이렇게 물음표(?) 하나가 붙는 것에서, 언어의 철학이 시작된다.

 

✅ Playground는 놀이터가 아니다

처음엔 Swift Playground라는 단어를 듣고 "오~뭔가 귀엽다" 라고 생각 했다. 하지만 막상 열어보면, 진짜 놀이터처럼 마음껏 망쳐봐도 괜찮은 공간이라는 걸 알게 된다. 여기선 앱을 만들지 않아도 된다. 버튼도, 뷰도 필요 없다. 그냥 Swift 문법을 가지고 실험하고, 출력값을 눈으로 확인할 수 있다.

Swift Playground

 

나는 Playground에서 무려 이틀을 소비했다. guard let, if let, nil coalescing 등을 실험하면서, 한 줄 한 줄이 주는 의미를 깨달았다. Swift는 이렇게 배워야 한다. 작은 단위로, 천천히, 의미를 되새기면서.

 

✅ SwiftUI vs UIKit - 선택의 갈림길

나는 SwiftUI를 선택했다. SwiftUI는 애플에서 전면적으로 밀고 있다고 받아들여져서 자연스럽게 선택하게 되었다. 하지만 그렇게 선택하고 나서 알게 된 건, SwiftUI는 쉽지만 가볍지 않다는것이다. 단순히 Text 하나 띄우는 건 쉽지만, 상태관리, 네비게이션흐름, 커스텀뷰 작성 등 갈수록 복잡해졌다.

 

UIKit은 반대로 진입장벽은 높지만, 레퍼런스가 많고, 예측 가능한 구조였다. 그래서 '빠르게 프로토타이핑'을 하고 싶을 때는 SwiftUI로, '정교하게 앱을 다듬고 싶을 때'는 UIKit으로 진행되는것 같다.

 

Swift를 배우며 겪은 시행착오들

✅ 옵셔널에 발목 잡히다

처음엔 왜 자꾸 느낌표(!)를 붙여야 하는지, 왜 에러가 나는지 이해하지 못했다. 심지어 "그냥 이거 Optional 아닌 걸로 만들 수 없나?" 라고 검색해 봤다. 나중에야 알았다. Optional은 피할 대상이 아니라, 정면으로 마주하고 다뤄야 할 Swift의 기본 철학이라는 걸.

 

✅ 뷰모델을 너무 빨리 도입했다

MVVM 구조가 좋다는 얘기만 듣고 무작정 ViewModel을 만들었다. 그런데 상태를 어디서 관리해야 할지, @State, @ObservedObject, @EnvironmentObject를 어떻게 조합해야 하는지 전혀 감이 안 왔다. 하루는 화면이 업데이트되지 않고, 하루는 무한 루프가 돌았다. 결국 다시 돌아와서 가장 작은 화면부터, ViewModel 없이도 동작하는 구조부터 다시 쌓았다.

 

✅ 튜토리얼을 맹신했다

유튜브, 블로그, 공식문서,,,정보는 넘쳐났지만, 서로 내용이 미묘하게 다르고 버전이 안 맞는 경우도 많았다. 튜토리얼을 베끼는 건 빠르게 뭔가 되는 것 같지만, 왜 그렇게 코드를 짰는지 이해하지 못하면 그건 내 코드가 아니다.

 

그래도 Swift는 계속 쓰고 있다

지금은 세이브푸드(SaveFood)라는 앱을 개발 중이다. 보관함을 만들고, 식자재를 입력하고, 소비기한(유통기한)이 가까워지면 알림을 보내주는 앱이다. 이 앱을 만들기 위해 Swift를 공부했고, 이 앱 덕분에 Swift가 어떤 언어인지 조금은 이해하게 되었다. 아직도 Swift의 모든 문법을 안다고는 못 하겠다. 하지만 적어도, 이 언어가 요구하는 "개발자의 태도"는 배운 것 같다.

 

Swift를 시작하려는 당신에게

  • 완벽하게 이해하고 시작하려 하지 마세요
  • 코드를 '쓴다'기보다 '읽는다'는 느낌으로 접근하세요
  • 자주 망가뜨리고, 자주 복원하세요
  • 튜토리얼은 '참고자료'일 뿐입니다
  • Playground를 버리지 마세요

그리고 무엇보다, "Swift를 배운다"는 건 단지 문법을 익히는 게 아니라, 좋은 코드를 작성하려는 훈련을 하는 것이다.

 

마무리하며

Swift는 아직도 진행 중인 언어다. 기능이 계속 추가되고, API도 버전업되고 있다. 완성된 언어가 아니다. 하지만 그래서 더 재미있다. 나는 Swift와 함께 계속 성장하고 있다. 당신도 그 여정을 시작하려는 중이라면, 지금 이 순간이 가장 좋은 출발점이다.

'Programming > Swift' 카테고리의 다른 글

변수와 상수, 언제 무엇을 쓸까?  (0) 2025.06.27