이 프로젝트는 어떻게 만드셨어요? #6 -'CHERISH'

DevFoliOh·2021년 11월 12일
9
post-thumbnail

안녕하세요. DevFoliOh!입니다.
DevFoliOh!는 개발자들의 토이프로젝트 모아보기 서비스입니다. 이곳에 매주 새로운 프로젝트를 소개하고 있습니다.

🛎 메일로 새로운 프로젝트 알람 받기 🛎
🔍 좋은 프로젝트는 널리 공유해요! 소개하고 싶은 프로젝트를 여기에 공유해주세요 🔍

🎤 개발자 인터뷰 시리즈

이 프로젝트는 어떻게 만들었을까? 혹시 궁금했던적 없나요?
DevFoliOh!의 <개발자 인터뷰 시리즈>는 저희 사이트에 소개된 프로젝트의 개발자를 직접 인터뷰해서 프로젝트를 어떻게 만들었고, 어떤 어려움이 있었는지 등 프로젝트 개발의 생생한 이야기를 담아내려 합니다.

Q1. 프로젝트 소개 간단히 부탁드릴게요

Cherish에서 "물주기"란, "연락하기"를 의미해요.Cherish에서 식물을 키우며 연락을 보다 재미있게 즐길 수 있는 서비스입니다.🌱소중한 사람을 식물로 등록하고, 물주기를 통해 연락을 이어갈 수 있어요.

Q2. 프로젝트 아이템과 아이디어는 어떻게 얻게 되었나요?

→ 처음 프로젝트 아이디어를 아이데이션하면서 들었던 생각은 이왕이면 그래도 내가 제일 공감하는 문제에서 시작하면 좋겠다는 생각을 가장 먼저 했습니다.저는 소중한 친구들과의 관계를 유지하는 것이 매우 소중하고 중요하다고 항상 생각하고 있어요. 하지만 생각처럼 그 관계를 유지하는게 쉬운 일을 아니더라구요.

그럼 어떻게 하면 소중한 사람들과의 연락을 잘 유지할 수 있을까?라는 물음에 단순히 생각한게 '누가 나한테 친구에게 연락하라고 정기적으로 알려 주기만해도 참 좋겠다' 라는 생각이었어요.

근데 여기서 단순히 알림만 주는 앱이 되버리면 흔한 캘린더 혹은 아이폰 미리알림과 다를게 없더라구요!

그 때 어떤 컨셉을 주면 좋을까? 깊게 고민하다가 떠오른게 바로 식물이었어요. 사람과 사람의 관계에 따라 연락하는 주기가 다 다르듯이 식물도 어떤 식물인지에 따라서 물주기가 다 다르더라구요. 이 조그마한 공통점을 착안해서 바로 소중한 사람의 연락주기를 등록 → 연락 주기에 꼭 맞는 식물이 매칭되고 내 소중한 사람과의 관계 유지를 위한 식물 키우기 바로 체리쉬 아이디어가 탄생하게 되었어요.

Q3. 팀빌딩은 어떻게 하셨나요?

→ 체리쉬는 SOPT 27th 앱잼 경선을 통해 나온 아이디어에요. SOPT에서는 기획, 디자이너, 개발자(서버, 안드, iOS) 이렇게 1년에 상반기, 하반기로 나누어 기수가 진행되고 약 8차 세미나에 걸쳐서 각 분야의 기본 공부가 진행된 이후에 배운 것을 바탕으로 실제 서비스를 만들어보는 앱잼이 진행되고 있어요.

앱잼 경선을 통과한 아이디어는 팀 빌딩을 통해, 약 3주간의 해커톤이 진행되게 됩니다.

바로 이 앱잼을 통해서 팀빌딩을 했어요. 그래서 체리쉬 팀원들 모두 SOPT 27th를 함께한 친구들입니다.

체리쉬 팀원들 모두가 이렇게 20년 12월 26일에 기획 3명, 디자인 3명, 그리고 iOS, Android, 서버가 각 3명씩 이루어진 개발자 9명 총 15명의 전체 팀이 완성되어서 해커톤이 끝난 이후에도 약 1년여기간 동안 한명도 포기하지 않고 앱 출시까지 모두 함께했습니다.

이 자리를 빌려서 다시 한 번 모든 팀원들에게 함께해줘서 고맙다고 그리고 앱 출시까지 포기하지 않고 달려와줘서 무척이나 고생했구 감사하다고 전하고 싶네요.

Q4. 사전 리서치는 어떻게 하셨나요? 디자인이나 프로젝트 구조 등 레퍼런스로 삼은 프로젝트가 있는지요?

기획 : 사전 리서치는 주변 또래 20대 분들을 대상으로 연락에 관한 설문조사 및 인터뷰를 바탕으로 앱 기획에 대한 기반을 마련하였습니다.

디자인 : 디자인이나 앱 ux적인 부분은 체리쉬와 비슷한 앱 자체가 당시 플레이 스토어나 앱 스토어에 있지가 않았어서 정말 여러 식물을 기반으로한 게임, 키우기 등의 앱들을 참고하면서 만들었습니다.

체리쉬를 통해 연락하는 과정이 밀린 숙제를 처리하는 것처럼 느껴지지 않게 하는 것이 우선이기 때문에 식물 서비스 컨셉, 게임 요소로 재미있는 경험을 제공하는 것을 디자인적으로 중시했습니다. 식물에 물주기, 식물별 단계별 성장과 같은 게이미피케이션 요소를 물고기 키우기와 같은 게임,서비스 UI와 모션을 참고하였습니다.

Q5. 프로젝트 기술스택은 어떻게 선정하셨나요?

→ iOS의 경우 Swift를 사용해서 MVC구조로 Storyboard기반에 레이아웃을 잡았어요.

네트워킹

URLSession을 사용하기에는 코드가 길어지기 때문에 URLSession을 기반으로 추상화된 Alamofire를 사용했어요. 최근에는 Almofire를 한번 더 추상화한 Moya를 알게되면서 리팩토링을 고려중입니다.

이미지 캐싱

이미지 캐싱을 직접 구현하게 되면 코드가 상당히 길어지게 돼요. 이를 보다 직관적이고 적은 코드로 쉽게 사용하기 위해서 Kingfisher를 채택했어요. 이미지 캐싱외에도 Kingfisher에서는 다양한 기능을 지원하는데, 이를 직접 구현하는 시간을 아낄 수 있었기 때문에 사용을 결정하게 되었어요.

FSCalendar, OverlayContainer

이 친구들은 시간만 많이 주어졌다면 직접 구현을 하기 위해 노력했겠지만, 개발 당시에는 2순위 기능이거나 너무 많은 시간을 할애할 수 는 없던 상황이라서 시간절약을 위해 채택했던 기억이 나요. 저희 팀원들이 UI적인 부분은 직접 구현이 가능하다면 라이브러리보단 직접 구현을 선호하기 때문에 언젠간 또 바뀔수도 있을 것 같아요

그 외에는 연락을 위해 사용한 CallKit, MessageUI, Contacts 등이 있는데 얘네는 기능 구현을 위해서는 사용해야 했던 iOS 내장 프레임워크라 따로 기술하지 않겠습니다

아 그리고 아무래도 단기간에 개발이 이루어지고 그 당시에는 아직 MVVM 등의 고급 기술을 적용할 만큼 공부가 많이 되어있던 상황이 아니어서 MVC와 Storyboard를 채택하게 되었는데 출시 이후에 레이아웃은 코드 기반으로 변경중에 있고, 현재의 구조가 가진 단점 또한 느끼게되어 MVVM, RxSwift도 공부중에 있습니다. 언젠간 적용 가능하겠죠?

Server

서버의 경우는 javascript와 Node.js를 이용하여 구현하게 되었어요. 우선 SOPT 세미나에서 공통적으로 사용한 언어이기도 하기 때문에 3명의 팀원이 모두 잘 아는 스택을 선정 하였던것 같아요. 그리고 프론트엔드 언어에는 자바스크립트가 쓰이지만, 백엔드에서는 자바스크립트 말고도 대안이 많기 때문에 익숙하지 않은 분들이 많을 수도 있을 것같아요. 그렇지만 백엔드도 자바스크립트로 빌드하고 싶다면 선택하는 것이 Node.js이기 때문에 세미나에서 사용한 javascript와 Node.js를 사용하였습니다.

Node.js는 데이터를 다루는데 좋은 성능을 보여주기 때문에 많은 데이터의 송수신, 실시간 데이터 처리 등을 하는 데 (로그인 기능, 실시간 위치 전송 등) 선택하지만 하드웨어적 처리를 하는 데에는 적합하지 않기 떄문에 리팩토링을 통해 보완할 예정이에요

Express

또한 Express는 Node.js내에서 작동하는 프레임워크로 서버 개발을 돕는 프레임워크입니다. Express를 사용한 이유는 서버 개발의 과정이 대부분 반복적이고 동일하기 때문에 비슷한 프레임워크는 많이 있지만, Express를 사용한 이유는 안정적이기 때문이에요 !

Q6.프로젝트를 만드는데에 시간은 얼마나 소요되었나요?

→ Cherish의 경우 APPJAM이라는 3주 장기 해커톤을 통해 시작된 프로젝트에요. 그래서 초기 타임라인은 전부 3주 내로 맞춰져 있었어요. 모든 파트가 열심히 참여한 덕분에 3주간은 타임라인에서 크게 밀리는 것 없이 마칠 수 있었습니다.

다만, 팀원들 모두 3주간 온전히 Cherish에만 집중하였기 때문에 APPJAM 이후에는 팀원들 모두 일상으로의 회복이 필요했어요. 그래서 출시 준비 기간동안은 휴식도 취하면서 큰 부담 없이 느리더라도 꾸준히 개발을 해나갔어요. 1차적인 출시 목표일이 조금 미뤄질 것 같다면 그 전 주 회의에서 개발 우선순위와 일정을재차 정하면서 진행이 되었어요. 아무래도 데드라인이 없다보니 늘어질 수도 있었을 텐데 팀 내의 소통이나 일정 수립이 체계적으로 이루어진 덕분에 출시까지 성공적으로 마칠 수 있었던 것 같아요.

Q7. 만들면서 어려웠던 점 혹은 고민됐던 것들이 많았을텐데, 이 중에 가장 어려웠던건 무엇이었나요? 어떻게 해결했나요?

→ 게임적인 요소가 많이 포함되었기 때문에 식물에 물주기 방식이나 점수 계산 등을 구현할 때, 실현이 불가능하거나 알고리즘이 어려웠던 경우가 있었어요 ! 그래도 기획단과 이야기 해나가며, 구현을 해서 잘 해결할 수 있었답니다. 기획에서 복잡한 부분을 간단하게 설명해주고, 비교적 쉽게 풀어주느라 고생을 많이 한것 같아요.

그리고 식물별로 멘트나 상황이 다르기 때문에 이를 다 반영하고, 랜덤으로 나오게 하는것이 알고리즘을 짤 때 복잡한 부분이 있었던것 같은데 많이 해보고, 계속해서 시도하다보니 잘 구현할 수 있게 되고 자연스럽게 실력도 성장하게 된것 같아요 !

Q8. 이후 진행해보고 싶은 프로젝트가 있으신지요?

→ 체리쉬를 통해 연락하는 과정이 밀린 숙제를 처리하는 것처럼 느껴지지 않게 하는 것이 우선이기 때문에 식물 서비스 컨셉, 게임 요소로 재미있는 경험을 제공하는 것을 디자인적으로 중시했습니다. 식물에 물주기, 식물별 단계별 성장과 같은 게이미피케이션 요소를 물고기 키우기와 같은 게임,서비스 UI와 모션을 참고하였습니다. 따라서 개발적으로 게임적인 요소를 구현하는 경우가 많았기 때문에, 다음에는 좀 더 게임적인 부분을 구현하고 싶다는 마음도 들고, 이번엔 앱 프로젝트 였기 때문에 웹 프로젝트를 진행해보고 싶은 마음도 들어요 !

프로젝트에 대해 더 알고 싶다면 🏄‍
DevFoliOh!에서 자세한 내용을 볼 수 있습니다.

profile
개발자 토이프로젝트 모아보기 서비스

1개의 댓글

comment-user-thumbnail
2021년 11월 22일

SADKALSDjsa asd asd qwe qw
https://ru.wikipedia.org/

답글 달기