[iOS] 망고 플레이트 클론 코딩
모의외주를 마치며..
망고 플레이트 클론 코딩이 끝난지 벌써 한 달이 지났다.. 모의 외주가 끝나면 블로그를 시작하려했는데 막상 끝나니 쉬고 싶어서 쉬고, 정처기 실기 공부도 하느라 시작하지 못했다. 지금부터라도 내가 배웠던 것들과 앞으로 공부할 내용들을 정리해 이 곳에 정리해 볼 생각이다.
망고 플레이트 클론 코딩은 소프트 스퀘어드의 6주 간의 교육 기간이 끝난 후 모의 외주 기간이라 불리는 2주 동안 진행되었다. 2주라는 짧은 시간 동안 어플을 제작해야 했기에 잠도 거의 못자고 빡셌지만 그만큼 집중적으로 제작하고, 배운 것을 적용해 볼 수 있어서 좋았다.
모의 외주 기간이 시작 되면 제일 먼저 제작할 어플과 팀원이 공개 된다. 대부분 클라이언트와 서버 1:1 또는 1:2로 진행되었다. 이번 모의외주의 어플은 망고플레이트, 번개장터, 마켓컬리, 당근 마켓의 총 4개로 진행되었다. 나는 망고 플레이트에 배정 되었고 서버 한 분과 같이 프로젝트를 진행하게 되었다.
모의외주 기획서
모의외주 설명과 팀 배정을 진행한 모의 외주 세미나가 끝난 후 당일 3시 까지 모의 외주 기획서를 제출해야 했다. 기획서를 작성하는데만 꽤 시간이 오래걸렸다. 기획서에는 개발 범위, 개발 우선수위, 개발할 기능 및 화면 캡쳐, 1주차 까지 작업해올 범위, 만약 서버가 2명이라면 서버 역할 분담까지 작성하면 된다. 2주라는 짧은 기간 동안 프로젝트를 진행해서 어플의 모든 기능을 다 구현하기는 어렵기 때문에 개발 범위를 잘 생각해서 정해야 한다. 모의 외주 기획서를 작성한 다음날 서버분과 한 번 만나서 개발 범위에 대해서 한 번 더 정하였는데, 서버분께서 어플 기능을 상세하게 쫙 적어오셔서 되게 놀랐다. 아무래도 서버는 기능을 직접 구현해야 되니까 꼼꼼하게 파악해 오신것 같은데, 그래도 정말 대단하다고 느꼈다. 아래는 우리 팀이 작성한 모의외주 기획서인데 작성한것 중에 몇개는 구현하지 못하였다.
어려웠던 점
클라이언트인 내가 맡은 부분은 크게 나누면 각 화면 UI 제작, API연동, 뼈대 레이아웃 구성이었다. 앱을 최대한 똑같이 만들어야 했기 때문에 사소한 부분에서도 디테일하게 하느라 시간이 오래 걸렸다. 예를 들면 글자가 입력 되었을 때 버튼이 활성화 된다거나, 키보드와 같이 올라오는 버튼을 만든다거나 하는 부분에서 시간이 오래 걸렸다. API연동도 처음에는 오래걸렸는데 다 비슷하게 작성하면 되서 적응이 됐다.
API 연동은 서버분께서 작성해주신 api명세서를 보고 하면 된다. 초반에 서버가 불안정해서 api연동을 많이 해보지 못해서 아쉽다. 나중에 서버를 고쳐주셨지만 그 이후에도 됐다안됐다 해서 아예 UI를 만드는데만 집중했다. 서버가 잘 됐어도 시간이 부족해서 연동은 많이 못했을 것 같긴 하다.
피드백 내용
프로젝트 중에는 총 2번 개발 팀장분께 피드백을 받았는데, 이 때 궁금한거를 물어 보면 상세하게 잘 알려주셨다. 또 기본 교육 시간 때는 질문을 할 수 있는 slack 채널에 글을 올린적이 없었는데, 모의 외주를 하면서 몇번 글을 올렸었다. 글을 올릴 때마다 고수 분들이 빠르게 답변해주셔서 프로젝트를 진행하는데 많은 도움이 됐다. 혼자서 해결할 수 없는 부분을 물어볼 수 있어서 좋았다. 피드백 때는 변수명 작성 형식, 자동 로그인 api 적용 논의, firebase 적용 여부 논의, 앱 퍼블리싱, git commit 메세지에 대한 피드백을 받았다.
프로젝트 제출 영상
아래는 프로젝트 최종 제출 영상이다.
화면 전환시에 네비게이션뷰가 보이는 것과 안보이는 것을 고려해서 화면 전환을 구성해야 하는 것과 컬렉션 뷰 안에 또다른 컬렉션 뷰를 넣는 작업, api를 통해 받아온 데이터를 어디에 저장할지, 또 여러 개의 페이지에서 데이터를 보내야 할 경우 어떻게 해야하는지 등이 프로젝트를 진행하면서 어렵다고 생각한 부분이다.
이번 망고플레이트 클론 코딩 프로젝트를 통해 바텀바, 옵저버, 컬렉션뷰, 레이아웃, 페이지 전환, 어플리케이션의 기본 뼈대, api연동, 네이버 지도 등을 다뤄볼 수 있었다. 또한 서버에 대한 지식이 거의 없었는데 이번 프로젝트를 통해 서버쪽에서 하는 일과 통신에 대해서 알게되었다. 뒷 화면이 어두워 지면서 뒷 배경 움직임 없이 올라오는 모달과 하단 탭바, 필터에서 라디오 버튼은 라이브러리를 사용해서 구현했기 때문에, 나중에 라이브러리 없이 만들어 볼 생각이다.