트래블튠 출시 회고

hyeseong
5 min readOct 29, 2023

--

출시 프로젝트 준비를 위해 어떤 앱을 만들 것인가 정말 많은 고민을 했다.

고민 끝에 3가지 정도로 주제를 정했었다.

  1. 원룸,투룸,오피스텔등 부동산 정보 제공 앱
  2. 응급 병상을 실시간으로 확인할 수 있는 앱
  3. 관광지 정보 제공 앱

이 중에서 2번으로 최종 결정을 하려고 했을 때 멘토님께서 병원과 관련 된 앱을 출시하기 위해서는 의사면허증이 필요하다고 하셨다. 의사면허증이 있을리가 없다…. 애플의 심사 정책을 생각못한 큰 실수라고 생각한다. 멘토님이 아니었다면 출시 못하는 앱을 개발하고 있었을 것 같다.

2번이 제외되고 난 후 3번으로 다시 주제를 정했다.

관광 정보 제공 앱으로 선택 후 단순히 여행지 위치, 이름과 같은 정보가 아닌 좀더 많은 정보를 제공해 주고 싶었다.

여행 갔을 때 가이드와 같이 다니며 설명을 들으면서 관람 하시는 분들을 보신 적이 있을 것이다. 옆에 슬쩍 같이 들어도 되지만 나만의 가이드가 있으면 좋겠다고 생각했다. 그래서 최종 주제는 관광지 정보/ 관광지 오디오 가이드 정보 제공으로 결정했다.

해당 주제를 토대로 초기에 작성된 기능 정리와 기획이다.

  1. 기능 정리
기능 정리

2. 기획

출시 버전에서 넣고 싶었지만 4주라는 기간동안 구현을 완료해야되기에 이 앱에 있어야 되겠다 싶은 핵심 기능으로 작성했는데 완성할 수 있을지 걱정 되었다.

개발목표

  • MVVM 패턴 적용
  • Diffable Data Sources CollectionView 사용
  • 백그라운드 오디오 재생
  • 잠금화면 오디오 재생
  • MapKit 클러스터링, 커스텀 어노테이션

개발과정

여러 오픈 소스

FSPagerView 는 SPM 을 지원하지 않아 Cocoapods 을 학습해야했는데 Xcode15 버전으로 업데이트를 이미 진행해서 15버전에서 생기는 Cocoapods이슈를 해결후에야 FSPagerView 를 적용할 수 있었다.

Tab UI 에 적용한 Parchment 는 부모와 자식 ViewController 간의 데이터가 어떻게 전달되는지 파악하기위해 내부적으로 어떻게 코드가 이루어져있는지 확인후에 데이터 전달에 성공했다.

Chart 같은 경우 내부 코드를 가져와서 어떤 부분이 변경 되는지 하나하나 주석처리해가면서 직접 눈으로 보고 원하는 UI 로 수정할 수 있었다. 하나 수정하고 빌드하고 반복하며 시간이 많이 지연 되었는데 많이 사용해보지 않은 오픈소스는 어쩔 수 없는 과정인 것 같다.

오픈 소스를 사용하면서 제대로 사용하기 위해서는 항상 내부 코드가 어떻게 이루어져있는지 알아야 다시 요리조리 입맛에 맞게 변경할 수 있다고 느꼈다.

Diffable Data Sources CollectionView

하나의 기술에 얽매이면 안된다고 이번에 생각했다. 그렇게 복잡하지 않은 UI 인데 학습하기 위해 하나쯤은 제대로 적용시켜 보고 싶었다. 이게 개발시간을 이렇게 많이 잡아먹을 줄 예상을 못했다. 모든 개발이 완료 되었다면 그때 기존 코드를 업데이트 하는 방식이 개발 시간도 줄여주고 학습능률도 올라가는 것 같아 추후에는 기능 개발완료 후 업데이트하는 방식으로 개발을 진행할 것이다.

현재코드의 문제점

  • BaseViewController 에서 BaseView, BaseViewModel 을 Generic 으로 받아 사용하는데 어떤 화면에서는 ViewModel 내부 코드가 텅비어있는 클래스가 있다. 아무 역할도 안하는데 그냥 ViewModel 클래스가 만들어져 있는데 개선이 필요하다.
  • Label 의 디자인 속성관리가 되어있지 않다. 화면마다 Label 의 디자인이 적용되어 있는데 TitleLabel, ContentLabel, CellLabel .. 이런식으로 관리를 한다면 추후 디자인 변경이 생겼을 때 빠르고 실수 없이 한번에 디자인을 변경할 수 있을 것 같다.
  • 상수관리가 여기저기 마음데로 되어있다. Extension 으로 빠져 있는 Notification.Name 도 있고 Constant 클래스에서 Font 나 ID 값들이 관리되고 있는데 어차피 상수라면 하나로 관리하는게 추후 헷갈리지 않을 것 같다.

추후 업데이트 예정

  1. 프로젝트의 구조 코드 정리
  2. 여행일정 관리 기능

새 기능 추가도 중요하지만 기존에 프로젝트 정리가 더 중요도가 높다고 생각되어 코드를 한번 정리 후 기능을 업데이트할 예정이다.

마치며..

  • Swift 성능을 위해 final 키워드를 사용하고 Reference Count 를 신경쓰며 개발을 했는데 메모리 누수가 없다고 장담을 못하겠다. 분명 어딘가에 빠진 부분이 있을 수 있고 지금 보다 좀더 나은 코드로 성능을 향상시킬 수 있는 방법이 있을 것이다. 항상 Swift 성능을 신경쓰며 앱이 점점 커지더라도 성능에 문제 없는 앱을 개발하기 위해 노력할 것이다.
  • 하나의 앱을 만들 때 개발자는 사용자가 생각하지 못했던 부분까지 생각해서 미리 대응도 해야되고 버전에 따른 코드 대응도 해주고 해상도 대응도 해야된다. 이것들 말고도 여러가지 버그, 상황별 다른 알림 생각해야 되는 부분들이 너무 많다. 기능을 구현하는데 급급해서 모든 부분에 대해서 대응을 하지는 못했다. 일단 앱이 죽지는 않게 하자는 마인드로 했는데 이러다 보니 놓친 부분이 지금 조금씩 보인다. 개발 실력도 실력이지만 생각의 폭을 좀 넓게 가질 수 있게 연습을 해야될 것 같다.

--

--