[프로젝트] 대외 프로젝트 : 나의 첫번째 앱 런칭 '해냄'
이제는 내가 만든 앱을 런칭해보고 싶다는 생각을 하게 되었다. 배움에는 끝이 없다지만 언제까지 공부만 할 수는 없다고 생각했다. 혼자 앱을 런칭하는 것도 좋지만, 팀 프로젝트 경험을 더 쌓아보고 싶었고 실제로 기획자와 디자이너가 있는 팀에서 기깔나는(?) 앱을 만들어보고 싶다고 생각해서 IT 동아리를 알아보았다. 그러다 마감 2일 전에 CMC라는 동아리를 알게 되었고, 지원해서 합격했다.
매주 토요일마다 게더 타운으로 모였고, 디스코드로 소통했다. 팀이 매칭되고 나서는 노션과 디스코드를 주로 사용했다.
가장 기억에 남는 순간이라면 팀 매칭하는 날이었다! 10개의 기획자-디자이너 로 구성된 팀이 있었고, 팀의 주제와 방향성을 보고 게더 타운을 돌아다니면서 질문하고 서로를 어필해야 하는 날이었다... 재밌기도 했고 긴장이 되기도 했었다!
어필이 끝나면 구글 폼으로 들어가고 싶은 팀의 순위를 보내고, 기획자-디자이너 팀에서도 함께하고 싶은 개발자들의 순위를 보내서 최종으로 취합된 순위로 팀이 결정되는 것이다. 그래서 도통 어떤 팀에 들어가게 될지 알 수 없어서 결과 발표날까지 긴장했었다🙃
그렇게 들어가게 된 팀은 팔레트🎨
"Done list를 작성하며 소소하지만 확실한 성취감으로 채워보세요!"
그날의 할 일이 아닌 한 일을 적는, '해냄'을 개발하게 되었다!
아직 버그 수정과 부가적인 기능을 업데이트해야 한다🥲
이번 프로젝트의 목표🏆
- 기획자/디자이너의 요구사항 이해하고 그대로 개발하기
- 모르는 부분이 있으면 다시 한번 물어보고, 더 좋은 아이디어가 있으면 적극적으로 의견 내기
- 필요한 라이브러리를 찾고 요구사항에 맞게 커스텀하기
- 기간 내에 MVP 개발 완료하고 런칭하기
아무리 동아리 활동이지만 기간을 지키는게 가장 중요하다고 생각했다. 기간 안에 개발하는 것도 곧 실력이니까...🤨
이번에 프로젝트를 하면서 이미 개발 완료된 파트도 계속 디자인이나 기획이 수정되었던 부분이 조금 힘들었다. 아무래도 기간 내에 개발하는 것이 점수로 들어가다보니 조바심이 나기도 하고 기운이 빠지기도 해서 그랬던 것 같다🥲 하지만 워낙 짧은 기간 내에 프로젝트를 구상하다보니 이런 일은 언제나 일어날 수 있다고 생각하고 있었고, 더 좋은 방향으로 발전하기 위함이니까 곧바로 극뽀옥-★
이번 프로젝트를 하면서 정말 크게 느꼈던 부분이 있다.
'당연히 이 사람도 그렇게 생각하겠지?'의 정답은 NO라는 것이다.
그렇기 때문에 자세하지 않은 설명이나 제대로 이해하지 못한 부분에 대해서는 적극적으로 질문해야 한다. 아무래도 Android와 iOS에서 기능이나 플로우가 동일해야 하기 때문에 서로 다르게 이해하고 개발했다면 누군가는 수정해서 다시 동일하게 만들어야 했고, 어떤 기능에 대해 기획된 의도대로 개발되지 않았다면 다시 수정해야 하기 때문에 모든 것을 확실하게 이해하고 개발하는 것이 얼마나 중요한지 정말 기본적인 사항임에도 새삼 깨닫게 되었다.
CMC에서는 특이하게 PM 역할을 하는 분을 따로 정해야 했다. 그래서 우리 팀은 iOS 개발자 분이 PM 역할을 하게 되었고,
(기획자/디자이너) - PM - (개발자들) 이렇게 중간에서 소통하는 것이 좋다고 하셔서 기획이나 디자인에서 생기는 궁금증이나 의견은 바로 PM님에게 남겼다. 그러면 위와 같이 PM님이 따로 논의사항을 남겨두시기도 하고, 가끔 설명하기 너무 많거나 빨리 답변을 받아야 하는 부분은 내가 남겨놓고 PM님에게 전달하기도 했다! 이렇게 회의하거나 논의하면서 많이 받았던 코멘트가 '이건 생각하지 못했네요', '아 그럴수도 있군요' 였던 것 같다. 아무래도 빨리 기획/디자인을 하다보니 예외 상황이 많이 고려되지 않았어서 항상 물어보거나 제안을 많이 했던 프로젝트였던 것 같다😊
개발하면서 힘들었던 부분과 이슈 사항😶🌫️
- 라이브러리 커스텀
앱에 캘린더를 사용해야 하는 부분이 있어서 원하는 기능으로 만들기 위해서 캘린더 라이브러리를 3번이나 바꿨다.그 과정에서 라이브러리를 sync해서 사용하는 것이 아니라 직접 다운 받아서 내부 코드를 변경하는 경험을 하기도 하였고, github issue를 들여다보기도 하고 Ctrl+B를 이용해서 다른 사람의 코드를 뜯어보고 빠르게 이해하는 방법을 배웠다.
- 스크롤과 입력창 구현
우리 앱은 recyclerview를 터치하면 입력창이 나오는데, 카카오톡처럼 바텀 입력창이 키보드가 되기도 했다가 메뉴창이 되기도 했어야 했다. 키보드가 올라오면 그만큼 뒤의 화면의 스크롤이 되게끔 구현했어야 했는데, 키보드가 내려가면 그 부분에 메뉴창이 보여야 했기 때문에 고려해야 할 것이 많았다. 이 부분에서 정말 많은 시간을 소요했었고, 그 과정에서 키보드와 스크롤 뷰의 속성에 대해 더 잘 이해하게 되었다.
- 다이얼로그 여러 번 띄우기
앱에서 특정 조건을 달성하면 스티커를 모을 수 있다. 그래서 메인 화면에 갈 때마다 현재 획득한 스티커가 있는지 서버에서 받아오는데 이 부분을 Livedata로 구현했다. 하지만 다이얼로그는 한번만 보여야 하는데 Livedata를 계속 observing하다보니 다이얼로그 닫힘 버튼을 눌러도 사라지지 않았다. 이 과정에서 한번만 observing할 수 있는 Livedata가 있다는 것을 알게 되었고, 해당 코드를 사용하게 되었다.
아직 MVP 기능만 구현되어서 아직은 수익성이 있는 앱은 아니다. 그리고 버그도 계속해서 수정해나가야 할 것 같다.
그래도 기간 안에 앱을 런칭할 수 있게 되어서 기분이 매우 좋다👍
내가 해냄!