⭐️ 프로젝트 소개
👉 선물을 고민하는 사용자들에게 다양한 추천 카테고리 제공
👉 선물에 대해 다른 사용자들과 의견을 교환할 수 있는 커뮤니티 기능
👉 결제까지 지원해 사용자의 선물 선택 과정에서 발생하는 고민과 불편함 최소화
개발 기간: 2024.08.14 ~ 2024.09.01 (약 2주)
⭐️ 기획 단계
🤔 주제 선정
개인 프로젝트를 진행할 때, 제 생활과 밀접하게 연결된 주제를 선택해 실생활에 유용한 방향으로 기획하고자 했습니다.
특히, 선물을 고르는 일이 늘 어려웠던 저는 매년 기념일마다 같은 고민을 반복해왔습니다.
이러한 고민을 덜어주는 동시에, 비슷한 고민을 가진 사람들끼리 소통할 수 있는 기회를 제공하면 좋겠다는 생각에서 이 주제를 선택하게 되었습니다.
📏 공수 산정
工數(공수): 일정한 작업에 요하는 인원수를 노동시간 또는 노동일로 나타내는 개념(사전적 뜻)
이를 저의 상황에 대입하면 우선 노동을 할 인원수는 단 1.
그럼 노동시간이 늘어납니다.
해야하는 일 역시 여러가지입니다.
그렇기 때문에 이 일에 대한 시간을 어떻게 분배하느냐가 정말 중요할 수 밖에 없습니다.
"일은 마감이한다" - J**K
그렇다고 기한을 무한정으로 두면 과연 일을 타이트하게 진행할 수 있을까요? 아니라고 생각합니다.
그래서 저는 정했습니다. 프로젝트에 몰두할 기간을 보름으로 말이죠.
개발 수행 단위를 어떻게 잡을지 정말 많이 고민한 결과 총 3 가지로 추릴 수 있었습니다.
1. UI 프레임 구현 후 네트워크 로직 구현
2. 네트워크로직 구현 후 UI구현
3. 페이지 단위로 쪼개서 페이지마다 UI, 네트워크 로직 구현
저는 이 중에서 3번!!!
페이지 단위로 쪼개서 페이지마다 어느정도 작업 상태를 마무리 하는 방법을 택했습니다.
이유는.. 음... 저는 앱을 실행시켰을 때 많이 사용하는 뷰 순서대로 어느정도의 UI + 기능 동작 까지 구현 해놓고 다음 화면 작업 하는 게 더 편했습니다.
( 여기서 어느정도의 UI라고 하는 것은 스스로가 디자인 감각이 높지 않다고 생각합니다.
고로 저에게 있어 디자인 완성이라는 것은.. 없다고 생각하기 때문에 어느정도 라고 표현했습니다. )
여기까지 개발 수행 단위를 정했으니 다음은 세부 사항입니다.
저는 우선 이번 프로젝트에서 여러개의 API에 대응, RxSwift 를 처음으로 도입해 보는 것이었기 때문에 너무 타이트해서 항상 실패할만한 계획이 아닌 어느정도 현실적인 계획을 세워보려했습니다.
그렇게 해서 짠 계획이 화면 단위로 짧으면 2일, 길면 3~4일 정도로 기간을 나누고 매일 아침 수행할 화면에 대한 구체적인 목표를 세웠습니다.
역시 기록해 놓는 게 짱인 것 같습니다. 👍
이런식으로 작성하다보니 하루하루 내가 무엇을 했는지, 아쉬운 부분은 무엇인지, 공부할 시간이 좀 많이 나는 날엔 어느정도 공수를 잡을지 감이 오는 것 같았고, 보름이라는 시간내에 무리 없이 하나의 프로젝트를 완성할 수 있었습니다.
(물론 나중에 시간 남을 때 조금씩 고쳤습니다. ㅎ)
🥲 기획 단계에서 아쉬웠던 점
개인적으로 가장 아쉬웠던 부분이 있었는데, 바로.. 사용할 API에 대한 결과값의 JSON형태를 확인 해보지 않고 주제를 정한 것이었습니다.
기획단계에서 어떤 API를 활용해볼까 탐색하는 시간이 있었습니다.
위의 자료들을 보고 처음엔
'우리에게도 트렌드는 있다' - 부모님 일동
이라는 주제를 잡고 연령별 트렌드에 따른 선물 상품 추천 혹은 부모님 선물 추천 관련 앱을 만들어 보고 싶었습니다.
그런데 요청과 관련된 예시만 봐도
제가 예상했던 API를 통해 알아서 연령별 트렌드 키워드를 주는 것과는 거리가 있었고,
결국.. 주제를 변경하여 앞서 말씀드린 주제처럼 약간은 노말(?)한 주제로 정착을 하게 되었습니다.
⭐️ 프로젝트 종료 후...
😄 좋았던 점
아무래도 처음 경험한 작업들이 많았고 이들을 정해진 기한 내에 잘 구현해낸 것이 좋았습니다.
RxSwift, 토큰갱신, 여러 API에 대한 대응 등 프로젝트를 처음 시작할 때만 공수산정을 하는 과정에서도 정말 할 수 있을까라는 생각을 많이 했습니다. 그런데 앞서 말씀드린 과정을 거쳐나가면서 결국 해냈을 때의 쾌감이 잊혀지질 않더군요!
여전히 스파게티 코드지만 처음에 비하면 MVVM을 사용해 비즈니스 로직과 뷰와 관련된 로직을 나누고, RxSwift를 사용해 데이터 바인딩 과정을 처리하다보니 RxSwift 사용 이전의 코드를 볼 때 불편했던 점들을 개선할 수 있어서 좋았습니다.
( 단점이라하면.. 아무래도 Delegate pattern을 많이 사용하였기 때문에 코드의 흐름을 읽기 위해선 코드 위 아래를 왔다갔다해야하고 수정 시에도 코드를 전체적으로 돌아다녀야했다는.. )
특히, 이번 프로젝트를 하면서 ViewModel에 들어갈 로직의 기준점이 개인적으로 명확하게 생긴 것 같아 개발자로서 개인만의 기준이 생긴 것 같아 한 단계 성장한(?) 느낌이었습니다. 😁
🥲 아쉬웠던 점
기획부터 디자인까지 하다보니 창의성에 대한 의심을 많이 했던 것 같고, 특히 디자인적인 부분에서 굉장히 아쉬웠습니다.
디자이너는 아니지만 그래도 어느정도 보여지는 부분도 어느정도 중요하다고 생각하는데, 생각만큼 깔끔한 UI가 제 머릿속에서 나오지 않아 벽을 좀 느꼈던 것 같습니다. 🥲
코드적으로 살펴보면
RxSwift와 MVVM을 함께 사용해서 코드를 구현하는 것이 이제는 너무 익숙하고 편리한데요..!
하지만 RxSwift의 Operator나 여러 기능들 중 유독 사용했던 것들만 지속적으로 사용하고 있는 것 같았습니다.
알고 있는 내용을 잘 쓰는 것도 중요하지만 정말 유용한 기능을 제가 안 쓰고 있는 것일 수도 있으니 좀 더 깊게 공부해야겠다고 생각했습니다. + ViewModel이 조금씩 커지는 것 같기도 합니다..?..!
🧐 다음에는...!
이번 프로젝트에서 ViewModel이 점차 커진 점을 개선하기 위해, 다음에는 ViewModel 내 로직을 더 체계적으로 분리할 방법을 도입해보고자 합니다. Delegate나 Coordinator 패턴 등 다양한 구조를 공부하며 코드 가독성을 높이는 데 집중할 계획입니다.
또한, 이번에는 RxSwift를 사용하여 반응형 프로그래밍을 구현했지만, 애플의 Combine 프레임워크도 공부해보고 RxSwift와 비교해볼 생각입니다.
마지막으로, 개선하고 싶은 부분은 바로 UX입니다. 이번 프로젝트를 진행하면서 컬렉션뷰의 페이징과 페이지네이션에서 부자연스러움을 느꼈습니다. 이를 직접 확인하고 나니 애플이 UX에 얼마나 공들였는지 새삼 깨달았습니다...! 😇
다음 프로젝트에서는 보다 자연스러운 UX를 위해 관련 자료를 찾아 공부할 계획입니다.
'프로젝트' 카테고리의 다른 글
[개인출시앱] 모닝글로리 업데이트 과정 (5) | 2024.12.22 |
---|---|
[개인 프로젝트] SpotChat 회고 (0) | 2024.12.07 |
[개인출시앱] 모닝글로리 회고 (0) | 2024.10.07 |
[개인출시앱] 모닝글로리 개인정보 처리방침 (0) | 2024.09.28 |