iOS 앱 개발: 기획부터 도메인까지
낯선 언어를 매일 학습하며 몰입과 성장을 기록하는 일지
· 3 min read
오늘의 포커스 #
- 미션 주제 선정
- CLI 콘솔과 모바일 UX의 차이 알아보기
- iOS 앱 화면 플로우 설계
- 도메인 모델 설계 과정
미션 주제 선정 #
처음 오픈 미션을 받고 항상 사용하지만 도전이 될 수 있는 새로운 언어를 선택하여 기존의 미션을 수행해보고 싶었습니다. 특히 백엔드가 아닌 프론트나 모바일에 대해서 지식이 부족하여 이번 도전이 의미 있는 프로젝트가 될 수 있을것이라 예상했기 때문입니다. 많은 언어 중 Swift를 통해 처음 iOS 앱을 만들어 보는 것을 목표로 정하고 주제를 선정하는 과정에서 여러 고민들이 있었습니다. 주제를 고민하면서 최대한 기존 주제들을 잘 활용하여 적어도 작동하는 프로젝트로 완료하고 싶어 1,2,3주차 미션 중 3주차 미션을 선택하였습니다. 로또의 경우 가족 구성원들 모두 한번씩은 구매해본 경험이 있고, 아직 중장년층은 오프라인으로 많은 구매를 하여 iOS를 이용해 오프라인 구매에 익숙한 연령대도 편하게 쓸 수 있는 앱을 만들고 싶었기 때문입니다.
CLI 콘솔과 모바일 UX의 차이 #
콘솔 #
- 텍스트 기반 명령어를 통해 순차적으로 상호작용
- 키보드로 명령을 입력
- 시나리오대로 질답을 지나가며 되돌리기는 불가함
모바일 #
- 터치스크린은 HCI의 전환점1
- 키패드를 완전히 대체
- 실수를 방지하는 시스템을 디자인, 실수로 인한 재앙적 결과를 피해야함2
- 제약 $\rightarrow$ 실시간 검증 $\rightarrow$ 버튼 비활성화
앱 플로우 설계 #
Swift 기본 구조 #
Model #
- LottoResult
- LottoTicekt
- LottoMachine
ViewModel #
- LottoViewModel
View #
- PurchaserView
- LottoListView
- WinningInputView
- ResultView
도메인 모델 설계 과정 #
도메인 모델 설계 과정은 AI를 적극적으로 활용하여 빠르게 프로젝트의 기틀을 잡고자 하였습니다. 아래는 Claude Sonnet 4.5 Model과의 대화를 요약하였습니다.
질문 #
"우테코 로또 미션을 iOS로 만들려고 해. 콘솔에서는 순차적으로 입력받았는데, iOS에서는 어떤 화면 구조로 만들어야 할까? - 필요한 화면(View) 개수 - 화면 간 이동 방법 - 데이터 전달 방법을 쉽게 설명해줘."
답변 #
필요한 화면 #
- 필요한 화면은 총 4개
- PurchaseView
- LottoListView
- WinningInputView
- ResultView
- 콘솔의 한 줄씩 나오는 질문을 모두 한 개의 화묜으로 만들어 사용자를 이동시킴
화면 이동 #
- NavigationSTack을 통해 화면 이동
NavigationStack {
PurchaseView()
.navigationDestination(isPresented: $showLottoList) {
LottoListView()
}
}
- 자동 뒤로가기 버튼
- 스와이프로 이전 화면
- iOS 사용자에게 익숙한 패턴
데이터 전달 #
- ViewModel을 통해 데이터 전달
// 모든 화면이 공유하는 단일 상태
class LottoViewModel: ObservableObject {
@Published var purchaseAmount: Int = 0
@Published var lottos: [Lotto] = []
@Published var winningNumbers: [Int] = []
@Published var result: LottoResult?
}
// 모든 View에서 접근
struct PurchaseView: View {
@StateObject var viewModel = LottoViewModel()
// 다음 화면으로 viewModel 전달
}
문제와 돌파 #
필요한 학습 #
- Swift 기본 문법 학습
- Protocol 기본 개념에 대한 추가 학습
- Optional과 Closure 학습
- Published Wrapper 학습
- StateObject Wrapper 학습
Reference #
Punchoojit, Lumpapun, Hongwarittorrn, Nuttanont, Usability Studies on Mobile User Interface Design Patterns: A Systematic Literature Review, Advances in Human-Computer Interaction, 2017, 6787504, 22 pages, 2017. https://doi.org/10.1155/2017/6787504 ↩︎
https://www.smashingmagazine.com/2022/02/touch-design-release/ ↩︎
https://developer.apple.com/documentation/SwiftUI/NavigationStack ↩︎