밥 한끼 하자 회고
밥 한끼 하자

밥 한끼 하자는 삼육대학교 SW 경진대회에 참가하기 위해 만들어진 프로젝트입니다.
당시 GDSC 리드님과 코어분들, 그리고 타 동아리 멤버 한분이 있는 상태에서 제게 제안이 와 수락하게 되었습니다.
당시에는 편입을 하고 나서 한 학기를 수강한 후 3학년 여름방학을 보내고 있던 중이었습니다. 프로그래밍에 대한 기초를 한 학기만에 다지기는 쉽지 않았고 추가적인 공부가 필요한 상태에서 이런 제안을 받아 기쁘면서도 당황스러웠습니다. 그러나 프로젝트 경험이 개발자에게 있어 가장 중요하다고 생각하여 프로젝트에 참가하게 되었습니다.
팀 내 역할
팀은 프론트엔드 2, 백엔드 2, 디자인 1로 이루어져 있어 이상적이라고 할 수도 있었지만, 사실 저는 프론트엔드에서 도움이 되지 않았습니다. (아무것도 몰랐기 때문에), 따라서 나머지 한 분이 리드하고 따라가는 형식이었습니다.
가장 좋았던 점은 프로젝트를 어떻게 진행해가는지에 대해서 배울 수 있었다는 것이었습니다. 백엔드와 협업하는 것이 처음이었는데, API 명세서를 작성하는 등의 문서 작성이 협업에 꽤나 도움이 된다는 것을 알 수 있었습니다.
초기에 프로젝트의 목표가 앱으로 구체화 되었고, 리드 프론트엔드 분이 자신이 리액트를 할 줄 알기 때문에 리액트 네이티브로 개발하는 게 어떻겠냐고 하여 리액트 네이티브로 개발하게 되었습니다. 그때 당시 저는 리액트도 할 줄 모르고 당연히 리액트 네이티브도 할 줄 몰랐기 때문에 딱히 상관은 없었습니다. 리드 프론트엔드 분이 지도 부분, 가게 검색 등을 맡았고, 저는 영양소 차트, 음식 검색 및 추가 등을 맡았습니다. 리액트 네이티브를 100% 이해하지는 못해도 돌아가게는 할 수 있었기 때문에 작동을 우선한 개발을 하였습니다.
힘들었던 점
제 파트 중에서 가장 힘들었던 것은 리액트 네이티브에서 차트를 그리는 것이었습니다. 차트 라이브러리를 찾아보니 victory-chart라고 하는 라이브러리가 마음에 들어 사용하게 되었고 테스트 중에도 문제가 없어서 그 쪽으로 개발하게 되었습니다. 그러나 개발 도중 특정 화면에서 렌더링 시간이 너무 오래 걸려 확인해보니 차트 부분에서 병목이 발생했습니다. 원인을 찾을 수가 없어 그냥 라이브러리를 포기하고 직접 차트를 구현하게 되었습니다. 다시 생각해보면 단순 막대 그래프여서 금방 만들 수 있었으므로 굳이 라이브러리를 사용할 필요조차 없었습니다. 직접 만든 차트를 붙여보니 렌더링도 빠르고 잘 작동하였습니다.
또 한 가지 문제였던 것은 생명주기(life cycle) 문제였습니다. 그때 당시 스와이프로 화면을 넘기는 것을 구현할 때 react-native-tab-view 라는 라이브러리를 사용하였습니다. 이 라이브러리의 작동 방식상 모든 컴포넌트가 작동되는 상태에서 스와이프시 화면을 넘기는 것이었기 때문에 useEffect를 조심해서 사용해야 했습니다. 하지만 리액트를 잘 몰랐기 때문에 의존성을 간과한 채 한 컴포넌트에 무수한 useEffect를 작성하였고, 그 결과 예상할 수 없는 사이드 이펙트와 버그를 가지게 되었습니다. 당시의 저로서는 해결할 수 없었기 때문에 심각한 오류만 수정한 채 프로젝트를 마무리하게 되었습니다.
후기
제게 있어서는 제대로 구성이 갖춰진 첫 팀 프로젝트여서 의미가 큽니다. 회고를 쓰는 지금도 리액트를 잘 다룬다고는 할 수 없지만, 이때에 비하면 많이 나아졌다고 생각됩니다. 크로스 플랫폼으로 개발하고 싶은 생각이 있기 때문에, 공부를 좀 더 하여 제대로 된 react-native 프로젝트에도 도전해보고 싶습니다.