파도를 회고합니다.

2024. 5. 12. 03:46회고

 

미루고 미루다 멋쟁이 사자처럼 iOS 앱스쿨 3기의 최종프로젝트였던 파도의 회고를 이제서야 작성합니다.  

지난 2월에 iOS 앱스쿨을 수료했으니 2개월 넘게 지난 시점이네요. ㅎㅎ 취업준비로 정신 없이 이것저것 해보는 와중에 그때의 기억이 거의 사라져가지만.. 되짚어가며 정리해보고자 합니다. 

 

시작

처음에는, 대한민국에서 먹힐만한 서비스를 만들고 싶었었어요. 이미 미국 등에서 선풍적인 인기를 끌고 있는 안티 SNS라는 아이템으로 우리도 한 번 잘 만들어볼까라는 생각이었어요. 시장조사를 했던 BeReal 이라는 앱은 하루에 한번 알림이 왔을 때 필터 없는 자신의 모습을 피드에 올리고, 그 모습을 보며 소통하는 플랫폼입니다. 하지만 내 위치가 너무나 적나라하게 노출된다는 점과 완전히 무방비한 상태의 내 모습은 공개하기 꺼려하는 점 때문에 한국 사람들에게는 인기를 끌기 어려워 보였어요. 허물없는 모습을 보여준다는 인사이트가 너무 좋은데, 기존의 안티SNS의 단점 또한 개선할 수 있을까 고민하여 구상한 앱이 바로 PADO - 파도, 내가 꾸미는 친구의 공간 입니다.

파도

 

 

파도는 친구들과의 진짜 소통이 이루어지는게 목적인 SNS 입니다. 과시가 목적인 사진이 아닌 진짜 자신의 모습을 공유한다는 인사이트로, 내가 나를 바라보는 모습을 공유하는게 아닌 주변 친구가 나의 사진을 올려주고 내가 친구의 사진을 올려주는 앱이에요. 

 

핵심 기능은 다음과 같습니다.


- 친구의 피드 꾸미기(게시물 쓰기/ 파도타기/ 방명록 쓰기)

- 내 피드 꾸미기(프로필,배경사진 변경)

- 게시물 응답 및 반응(포토모지/ 댓글 및 대댓글/ 하트)

기획과 디자인

팀원 5명 모두가 기획자이자 디자이너였습니다. 하지만 어떤것에도 익숙하지 않은 초보자였기 때문에 시행착오 끝에 수정에 수정 x 100을 거쳤었어요. 예쁜 디자인을 가지고 와서 막상 개발하고자 하면 우리의 형편상 개발이 어려운 기능과 디자인이었던 경우가..정말 많았었습니다.

그 예로 가져온 피그마 디자인인데요. 댓글과 페이스모지(현재는 포토모지로 이름 변경된)를 사진의 특정 위치에 고정하여 보여주고자 했었던 초기 기획이, 기기마다 모두 다른 너비와 높이를 반영하여 완전히 똑같은 위치에 고정하여 보여주는 기능을 개발하기 어렵다는 한계로 엎어졌었습니다. 이러한 한계를 계속 계속 부딛혀가며 기획과 디자인을 수정 수정 수정하여 지금의 파도를 완성했어요.  

협업 경험

저희 팀은 페어프로그래밍 방식을 프로젝트의 처음부터 가져갔습니다. 한 명은 네비게이터, 다른 한 명은 드라이버가 되어 개발을 진행했습니다. 노션에 전체 기능 명세를 적고, 둘둘 혹은 기능이 크고 어려울 땐 셋,넷이서 짝을 지어 파트를 분배했습니다. 내가 실력이 부족하더라도 함께 고민하여 코드를 짤 수 있다는 경험이 좋았습니다. 그리고 내가 모르는 코드가 적어진다는 확실한 장점이 있었습니다.

그리고 GitHub Project를 이용하여 MVP 개발의 마일스톤을 관리했습니다. 데드라인을 정해두고 출시 계획을 효율적으로 관리했습니다.

 

개발

가장 메인으로 맡았던 기능은 알림 기능 전체였습니다. FCM을 이용하여 이용한 실시간 알림 기능과, 이 알림을 모아 보여줄 알림 센터를 구현했습니다. 그 과정에서 알림 종류를 세분화하고, 앱의 상태에 맞춰 알림을 정확히 전달하며, 알림 메시지를 클릭했을 때 사용자가 바로 원하는 목적지로 이동할 수 있도록 구현하는 데 집중했습니다. 

맞닥뜨린 문제

사용자가 알림을 클릭했을 때 해당 포스트로의 정확한 이동을 구현하는 중에 문제를 맞닥뜨렸습니다.  앱이 처음 실행된 후 받는 첫 번째 알림에서, 사용자가 알림을 클릭했을 때 해당 포스트로 정확히 이동하지 않는 문제가 있었습니다. 이 현상은 오직 첫 번째 알림에만 국한되어 있으며, 두 번째 알림부터는 관련 정보가 정상적으로 전달되어 이동이 잘 이루어졌습니다.

접근 방법과 해결 과정

이 문제의 해결을 위해, SwiftUI의 .onChange 메서드를 활용하여 값의 변화를 모니터링하였는데 이 로깅 과정만으로 문제가 해결되어, 사용자가 알림을 클릭하면 즉시 해당 포스트로 이동할 수 있게 되었습니다. 그러나 왜 해결 되었는지 이유를 이해하기 위하여 SwiftUI의 상태 관리에 대하여 찾아봤습니다.  SwiftUI의 뷰는 선언적 구조로 되어 있어, 상태가 업데이트되면 자동으로 뷰가 해당 상태에 맞춰 다시 그려지는데, 초기 설계에서는 이 상태 업데이트가 알림 클릭 후에 제대로 반영되지 않았던 것으로 이해하였습니다. 

아쉬웠던 점과 고민

고치고자 했던 문제는 해결되었지만, .onChange 이외에 다른 해결 방법을 찾고 싶습니다. 딥링크, 다이나믹 링크 등 화면 전환을 위한 다른 선택지가 있는 것으로 보았는데 더 공부하여 깔끔한 방식으로 해결해 보고 싶습니다. 또 미처 개발하지 못했던 이미지 푸시도 추가 구현하여 버전을 업그레이드 하고싶습니다. 

배포

6주를 개발하고 MVP 기능이 완성되어 앱스토어에 배포를 시도했습니다. 

네.. 첫번째 시도 결과는 리젝이였습니다. 계정삭제 기능의 위치와 생년월일 수집 목적을 더 명확히 해달라는 요청이 있어 소명자료를 만들고 두번째 시도로 배포에 성공했습니다. 

유저의 피드백 

배포가 끝은 아니기 때문에..유저의 피드백을 듣고 하나 하나 수정을 시작했습니다. 

배포 전에 나름 테스트를 많이 진행했다고 생각했었는데도, 문제가 계속 계속 터져서 머리가 너무 아팠습니다.. 2주간의 계속된 피드백과 수정으로 최종 발표까지 대부분의 오류는 거의 수정이 가능했었어요.

리팩토링

8주간 기능 구현에 집중하여 개발을 하며 코드의 퀄리티는 거의 신경쓸 수 없었습니다. 서로의 코드를 보고 더이상 개선하기 어렵다고 판단해서 iOS 분야의 멘토님에게 따로 말씀드려 리뷰를 부탁드렸습니다. 리뷰로 찾은 문제점들을 다음과 같이 수정했습니다. 

  • 순수함수를 사용하도록 지향해서 코드 수정
  • 싱글톤 클래스를 상위뷰에서 의존성을 주입받는 뷰모델로 교체
  • 뷰에 포함되었던 비즈니스 로직을 뷰모델로 이전
  • 비대해진 뷰를 하위뷰로 세분화

등등의 리팩토링을 거쳐 버전 1.10.0을 배포하였습니다.

마무리 지으며

함께 발전하고자 하는 열정 넘치는 팀원들과 함께한 8주간의 기억이 소중하게 남았습니다. 앞으로 어떤 도전을 할 때에도 지난 기억을 생각하며 포기하지 않게 될 것 같아요. 하지만 코드적인 부분에선 유지보수를 위한 문서화 작업이 없다는 점이 아쉬움으로 남습니다. 남이 보기에도 쉬운 코드를 쓰기 위해 주석에도 더 신경을 써야겠다고 생각했습니다. 또한 초반에 고려했었던 TCA 아키텍처로 리팩토링을 해보고 싶습니다.

 

개인적인 부분에 있어서는, 기능이 동작함에 만족하여 깔끔한 코드를 쓰지 못했다는 것과 페어프로그래밍을 하며 내가 해결하지 못하는 문제는 짝과 AI가 해결해줄거라는 안일함으로 더 노력하지 않았다는게 아쉬움으로 남습니다. 다음번 프로젝트는 1. 코드에 Chat GPT 사용 최소화 2. 아키텍처와 클린 코드의 이해 를 목표로 하고싶습니다.  

링크

코드는 깃허브에서, 자세한 기획과 기능명세, 리팩토링 문서는 노션에서 확인할 수 있습니다.

 

‎PADO - 파도

‎PADO - 파도를 타며 친구와 함께하는 즐거움! 친구와의 일상이 예술이 되는 공간, PADO에서 시작하세요! 서퍼 지정: 친구를 서퍼로 지정하고, 여러분의 피드를 함께 꾸며보세요. 친구들의 일상 속

apps.apple.com

 

GitHub - 4T2F/PADO: PADO - 파도, 내가 꾸미는 친구의 공간

PADO - 파도, 내가 꾸미는 친구의 공간. Contribute to 4T2F/PADO development by creating an account on GitHub.

github.com

 

PADO - 파도, 내가 꾸미는 친구의 공간 | Notion

참고

notch-galaxy-ab8.notion.site

 

'회고' 카테고리의 다른 글

2024 상반기 취업 실패 회고  (0) 2024.05.12
커밋해주세요 라는 회고  (0) 2024.05.12