이번 프로젝트를 통해 RxSwift와 MVVM 아키텍처를 실무적으로 활용하며 깊이 이해할 수 있는 시간을 가졌습니다. 특히, 무한 스크롤 기능 구현과 비동기 데이터 바인딩 과정을 통해 RxSwift의 강력한 기능과 효율성을 체감했습니다. 데이터 스트림을 관리하고, 네트워크 요청의 결과를 UI와 자연스럽게 연동시키는 과정은 RxSwift를 사용하는 가장 큰 이유를 깨닫게 해주었습니다.
MVVM 아키텍처를 적용하며, 코드의 모듈화와 재사용성을 극대화할 수 있었습니다. View와 ViewModel 간의 명확한 역할 분리를 통해 유지보수성을 높였고, 특히 ViewModel에서 비즈니스 로직을 관리하고 네트워크 데이터를 가공한 후 View와 바인딩하는 작업을 하면서 아키텍처 설계의 중요성을 느낄 수 있었습니다. 또한, Relay와 BehaviorRelay를 활용해 데이터 스트림을 관리하며, 사용자의 액션과 비동기 이벤트를 자연스럽게 연결할 수 있었습니다.
기술적으로는 싱글톤 패턴을 사용한 NetworkManager 구현과 포켓몬 데이터를 가져오는 API 통신, 그리고 Kingfisher를 활용한 이미지 로드 및 캐싱 처리가 큰 학습 포인트였습니다. 특히, 네트워크 통신 중 발생할 수 있는 에러를 처리하고, UI 업데이트가 메인 스레드에서 안전하게 이루어질 수 있도록 관리하는 데 많은 고민과 디버깅을 거쳤습니다. 이러한 경험은 네트워크 통신이 중심이 되는 앱 개발에서 꼭 필요한 역량을 키워주었습니다.
프로젝트를 진행하며 코드의 직관성과 가독성을 높이는 데에도 많은 노력을 기울였습니다. 디렉토리를 기능별로 명확하게 분리하고, 변수와 메서드의 명명 규칙을 직관적으로 유지했으며, 커밋 메시지도 커밋 컨벤션을 준수하여 코드 변경 이력을 체계적으로 관리했습니다. 이를 통해 개인 프로젝트임에도 협업 환경에서의 개발을 염두에 두고 작업하는 연습이 되었습니다.
마지막으로, 프로젝트 과정에서 발생한 다양한 문제를 해결하며, 디버깅 및 문제 해결 능력을 크게 향상시킬 수 있었습니다. 예를 들어, 무한 스크롤 구현 시 중복 요청 방지 로직을 추가하거나, API 응답 데이터 형식을 예상하지 못했던 에러를 처리하는 과정에서 실무에 가까운 문제 해결 경험을 쌓았습니다. 또한, API에서 제공된 포켓몬 데이터를 한글로 번역하고 사용자 친화적으로 표시하기 위해 제공된 번역 Enum을 적절히 활용한 것도 사용자 경험을 고려한 의미 있는 작업이었습니다.
이번 과제를 통해 배운 기술과 경험은 향후 앱 개발 프로젝트에서도 큰 자산이 될 것이라 확신합니다. 실무적으로 요구되는 기술들을 직접 구현해보고, 문제를 해결하며 성장할 수 있었던 매우 뜻깊은 시간이었습니다. 앞으로도 이러한 경험을 바탕으로 더 발전된 개발자가 되기 위해 노력하겠습니다