내일배움캠프 앱 개발 숙련 주차 개인 과제로 환율 계산기 앱을 구현합니다.
1. 프로젝트 개요
🎯 프로젝트 명 - Currency Converter
: 환율 계산기 앱
→ 실시간 데이터를 외부 API를 통해 받아와 UI에 표시하고, 사용자의 입력을 바탕으로 새로운 결과를 계산하여 표시
📍 프로젝트 목적
: 아래 5가지 사항에 관한 학습
• SnapKit을 활용한 UI 구성 및 AutoLayout 디버깅 경험
• URLSession을 활용한 Open API 통신
• UITableView를 통한 리스트 UI 구성
• MVVM 패턴을 활용한 로직 분리
• CoreData를 활용한 간단한 데이터 저장 및 즐겨찾기 기능
🗓️ 프로젝트 기간: 2026.02.13 ~ 02.25.
🛠️ 기술 스택
- 개발 언어: Swift
- UI Framework: UIKit
- Library: SnapKit, Alamofire
- Architecture: MVVM
- 협업 도구: -
🎥 작동 화면

2. 아키텍처 설계
🎨 MVC 패턴
과제 요구사항에 따라 중간까지만 MVC패턴으로 구현, 이후 완성까지는 MVVM 패턴으로 리팩토링하여 진행되었습니다.
아래의 기준에 따라 Model, View, Controller를 나누어 구현해보았습니다.
- Model: 데이터를 가져오거나 데이터 모델을 정의합니다.
- View: 화면에 보이는 UI를 설정합니다.
- Controller: 로직을 수행하거나 View에서 Action이 필요한 객체의 경우 액션을 할당하고 동작을 명령합니다.
GitHub - mastarTrack/CurrencyConverter
Contribute to mastarTrack/CurrencyConverter development by creating an account on GitHub.
github.com
🎨 MVVM 패턴
아래 기준에 따라 Model, View, ViewModel을 구현해보았습니다.
View 내부에서는 기존 MVC 패턴에서 구분했던 View와 ViewController의 역할을 유지하였습니다.
- Model
- Network 응답 모델 및 CoreData Entity 모델
- 환율 데이터 관련 모델
- View
- UI 구성
- ViewModel과의 바인딩 - ViewController 객체에서 담당
- ViewModel
- 비즈니스 로직 처리
- Model 데이터 가공 및 View로의 전달
- Service : MVVM에 해당하지 않는 서비스 객체
- Test : 테스트를 위한 목업 객체
GitHub - mastarTrack/CurrencyConverter
Contribute to mastarTrack/CurrencyConverter development by creating an account on GitHub.
github.com
3. 회고
MVVM 패턴을 처음 사용해보아 개념을 이해하고 적용하는데 어려움이 있었지만 객체간 의존성을 낮추고 테스트가 용이하다는 점에서 확실히 규모가 큰 프로젝트의 경우 유용한 패턴이라는 것을 알게 되었습니다.
ViewModel Protocol을 생성해두고 제대로 활용하지 못했는데, 다른 팀원 분의 코드를 보고 프로토콜의 활용 방법을 알게 되었습니다. 다음 프로젝트에는 해당 프로토콜을 유용하게 사용할 수 있도록 적용해보려 합니다.
'내일배움캠프 > 환율 계산기 - 개인 프로젝트' 카테고리의 다른 글
| [의사결정기록] MVC 패턴에서의 amountTextField 동작 정의 (0) | 2026.03.09 |
|---|---|
| [트러블 슈팅] CoreData에 저장한 데이터가 없는데 데이터가 존재하는 문제 (0) | 2026.03.02 |
| [트러블 슈팅] 셀 선택 시 여러 개의 데이터가 출력되는 현상 (0) | 2026.03.02 |
| [트러블 슈팅] UICollectionView Cell Autolayout 충돌 (0) | 2026.03.02 |
| [트러블 슈팅] UISearchBar backgroundColor 미적용 (0) | 2026.02.22 |