웹 개발자로 커리어를 시작하였으나, 매일 사용하는 앱을 직접 개발해보고 싶다는 생각이 커져 iOS 개발자로 전환했습니다.
지금까지 5개의 앱을 앱스토어에 출시했으며, 웹 개발에서 얻은 서버 통신과 데이터 처리 지식이 앱 개발에도 큰 도움이 되었습니다.
사용자 피드백을 듣고 개선하는 과정이 가장 보람 있으며, 꾸준한 성장을 위해 1일 1커밋 활동과 기술 블로그에 공부 내용을 정리하는 습관을 유지하고 있습니다.
매일의 학습과 실천을 통해 더 나은 iOS 개발자로 성장하고 있습니다.
(RxSwift + MVVM + 클린 아키텍처 | 1인 개발 | 2025.03 ~ 2025.04)
Notion 커뮤니티 사용자 피드백을 반영해, 관계형 DB를 그래프뷰로 보여주는 앱 기획 및 개발
앱 실행 시마다 서버로 데이터 요청하는 문제 발생:
JSONEncoder + FileManager
로 캐싱 → View 로딩 속도 60% 개선
(Xcode Instruments 기준 2.3초 → 1.2초)
서버에서 수신한 노드가 기존 노드와 겹치는 문제 발생:
CGRect
추적 + intersects
활용으로 충돌 없는 배치 로직 구현
캐싱 및 데이터 흐름을 조작하기 위해 RxSwift + MVVM 아키텍처 도입 → 비동기 데이터 흐름 제어 + UI, 로직 분리
클린 아키텍처 리팩토링: UseCase/Repository로 책임 분리 → 유지보수성 강화하여 문제 발생시 빠른 대처 가능
Node.js + Express로 직접 서버 구축, REST API 설계 → GCP Engine에서 운영 중
스크린샷
(SwiftUI + Swift Concurrency | 1인 개발 | 2024.11 ~ 2024.12)
브롤스타즈 커뮤니티에서 “강화에 필요한 재화종류가 너무 많고 계산이 어렵다”와 같은 실제 유저들의 피드백을 기반으로 앱 기획
UI 렌더링 전 데이터 누락 이슈: 비동기 구조 개선 → 누락률 100% → 0%
사용자가 매번 기억하기 어려운 플레이어아이디를 입력해야 하는 문제 발생:
AppStorage
로 사용자 입력 기록 저장 → UX 편의성 향상
아이패드에서 UI가 과도하게 확장되는 문제 발생:
UIDevice.current.userInterfaceIdiom
으로 현재 기기 확인 + GeometryReader
로 동적 UI 설계 → 확장성 확보 및 만족도 35% 증가
최적화, 안정성을 위해 클린 아키텍처로 리팩토링
협업 환경 시뮬레이션:
App Store에 출시, 다운로드 수 110명 이상 달성
NodeJS + Brawl Stars API 연동 → 캐릭터별 강화 비용 자동 계산
스크린샷
(SwiftUI + WidgetKit | 1인 개발 | 2025.01 ~ 2025.02)
친구와의 대화 중 “오늘 우산이 필요할지 몰라 매번 검색한다”는 얘기에서 착안 → 앱 기획
WeatherKit + Core Location
으로 실시간 날씨 정보 표시
앱과 위젯간 날씨 데이터 공유 불가 문제 발생:
**App Groups
**와 **공유 UserDefaults
**로 앱과 위젯 간 날씨 데이터 연동 후 위젯이 참조해 최신 정보 표시.
백그라운드 상태에서 위젯이 업데이트 되지 않는 문제 발생:
BGTaskScheduler
로 15분 간격 백그라운드 날씨 업데이트 작업 등록.
위치 확인 후 fetchWeather
로 데이터를 받아 UserDefaults에 저장, 위젯에서 참조 가능.
백그라운드 실시간 위치 감지 과도한 배터리 소모 문제 발생:
위치 감지 기준을 5km 단위로 설정하여 startMonitoringSignificantLocationChanges
로 중요한 위치 변화만 감지하도록 최적화 → 배터리 소모 20% 감소
스크린샷
App
Widget
(SwiftUI + WebSocket | 1인 개발 | 2024.04 ~ 2024.11)
URLCache
활용으로 동일 이미지 재요청 시 메모리 재사용
→ 스크롤 시 이미지 재로딩 시간 1.7초 → 1.0초로 약 40% 단축. (Xcode Instruments 기준)