포켓몬 도감 앱을 개발하면서 겪었던 다양한 경험과 배운 점들을 정리하려고 한다.
렞츠고
처음 두 개의 과제가 주어졌을 때 뒤도 안 돌아보고 Advanced를 골랐다. 책 검색 앱을 만드는 것이었다. 하지만, 짧은 기간 안에 계획과 설계를 세워도 너무 많은 기술을 도입하려다 보니 과부하에 빠지게 되었다.
네트워크 요청을 위해 Moya를 사용하고, RxSwift와 MVVM 패턴을 도입하려는 등 과도한 기술 욕심이 문제였다. CoreData까지 사용하려 했으나 결과적으로 복잡성만 증가하고 방향성을 잃었다.
이러한 상황에서 급하게 과제 계획을 다시 세우고 MVVM 패턴 도입과 RxSwift를 활용해 만들 수 있도록 단계별로 안내가 자세하고 핵심 기능에 집중할 수 있는 포켓몬 도감 앱으로 프로젝트를 전환하게 되었다. 포켓몬 도감 앱은 비교적 구현해야 할 기능이 명확하고, 학습 목표에 더 잘 맞겠다는 생각이 들었다.
최종 프로젝트 전에 MVVM 패턴으로 설계 하고 싶었고, RxSwift를 경험해보고 싶었어서 도감 앱으로 넘어오고 나서는 일이 잘 진행되는 듯 했다. 그러나 . . .
아래는 포켓몬 도감 앱 과제를 진행하면서 작성한 TIL과 트러블슈팅 과정 링크를 모아봤다.
앱의 핵심 기능 중 하나는 포켓몬 데이터를 API를 통해 받아오는 것이었다. 이 과정에서 Moya와 RxSwift를 활용해 API 요청을 구현했다. Moya는 네트워크 요청을 간편하게 처리할 수 있게 도와주었고, RxSwift는 비동기 처리를 효율적으로 관리할 수 있게 해주었다.
UIView와 UIStackView를 활용한 레이아웃 구성 과정에서 시행착오를 겪었다. Auto Layout 제약 조건과 UIStackView 활용의 중요성을 깨닫게 되었다.
fetchImage 메서드를 사용해 포켓몬 이미지를 비동기로 패치하고 캐싱을 도입해 성능을 개선했다.
UIColor 확장을 통해 커스텀 색상을 손쉽게 관리하며 유지보수성을 높였다.
MVVM 패턴을 도입하는 과정에서 데이터 바인딩 문제를 겪었지만, RxSwift를 활용해 이를 개선했다. ViewModel의 책임을 명확히 하여 코드 재사용성과 테스트 용이성을 높였던거면 좋겠다...
짧은 기간 동안 너무 많은 것을 시도하려는 것은 오히려 목표 달성을 방해한다. 핵심 목표를 설정하고 이에 집중하는 것이 중요하다는 점을 배웠다.
상황에 따라 계획을 수정하고 현실적인 목표를 재설정하는 능력이 필요하다.
모든 기술을 한꺼번에 도입하려 하기보다는, 필수적인 것부터 단계적으로 적용하는 것이 훨씬 효율적이다.