ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [NEXTERS 16기] 커뮤니티를 즐겁게 만드는 마니또 앱, Frutto 회고
    대외활동 2020. 5. 22. 09:28

     

     

     

     

    0. Frutto


    * Frutto란?

    Frutto(프루또)는 커뮤니티를 즐겁게 만드는 마니또 앱이다.

    PM, GUI 디자이너, UI 디자이너, Server, Android 2명, IOS 2명 총 8명의 팀원이 런칭에 참여하였으며 나는 Android 개발을 맡았다.

    안드로이드 개발은 2~5월(3개월)동안 진행되었다.

     

    * 개발과정

    16기 활동은 1~2월이었는데 테스트하고 버그수정하고 기능수정하고 테스트하고 버그수정하다보니까 벌써 5월이 되었다.

    특별히 기능구현에 어려운 건 없었는데, 보통 동아리에서 런칭하는 서비스치고는 기능이 많은 편이었다.

    아무래도 "마니또"라는 개념을 앱으로 구현하려다보니, 플로우가 복잡하고 고려해야할 점도 많았기 때문에 개발 중간중간에도 계속 수정되는 부분이 있었다. 

     

    초기 기획 플로우

     

    보통은 활동종료하고 런칭하기 쉽지 않다고 들었는데 나는 파워백수였기 때문에 그나마 지금에라도 런칭에 성공한게 아닐까 생각한다.

    그리고 디자인이 넘 예뻐서 더 후딱 개발할 수 있었던 것 같다.

     

    미리보는 프루또 !

     

    * 사용방법

    프루또는 마니또의 기본 룰만 알고 있으면 사용하는데 어렵지 않다.

    나는 그동안 마니또를 하면서 딱히 관리자를 두고 하지는 않았는데, 프루또에는 관리자 역할이 있다.

     

    • 관리자 : 프루또 방 생성, 미션 생성, 마니또 확인 가능
    • 참여자 : 프루또 방 참여, 미션 수행, 마니또 종료 후에 마니또 확인 가능(종료 이전에는 익명으로 표시)

     

    두 역할의 차이점이라고 하자면 이 정도가 있는데, 특별히 어려운 부분은 없는 것 같다.

     

    (왼쪽) 첫번째 화면, (오른쪽) 방만들기 화면

     

    (왼쪽) 프루또 이용을 시작하려면 관리자는 '방만들기', 참여자는 '참여하기'를 클릭하면 된다.

    (오른쪽) 관리자가 방을 만들 때의 화면이다. 조금 헷갈릴 수 있는 두 가지 부분을 짚자면

    • 몇명이서 하실건가요? : 관리자 포함 인원을 선택하면 된다. 참여인원이 5명일 경우, 관리자 제외한 4명끼리 마니또 매칭을 하게 된다. 관리자는 게임에 참여하지 않는다.
    • 얼마동안 하실건가요? : 프루또 시작방법엔 자동시작/종료과 수동시작/종료이 있는데, 위에서 설정하는 날짜는 자동시작/종료 날짜이다. (설정한 날짜의 정오에 자동 시작 및 종료) 자동시작/종료 날짜를 지정하여도 관리자는 임의로 프루또 시작/종료를 할 수 있다.

     

    테스트해보면서 이 두가지 부분은 조금 헷갈릴 수 있다고 생각해서 작성해둔다.

     

    * Download

    Android : https://play.google.com/store/apps/details?id=com.nexters.frutto

     

    Frutto - 커뮤니티를 즐겁게 만드는 마니또 앱, 프루또 ! - Google Play 앱

    프루또는 커뮤니티를 즐겁게 만드는 마니또 앱입니다. Manito Apps Make Community Fun 친구, 지인들과 간단하게 마니또를 할 수 있습니다. 일상속 작은 설렘과 소소한 즐거움을 느껴보세요! - 마니또 하�

    play.google.com

     

     

    1. 개발파트


    회고에서는 협업, 나의 개발파트에 대해 다루려고 한다.

     

    내가 진행한 Frutto 안드로이드 파트는 다음과 같다.

    • Base화, 공통화
    • MVVM패턴 활용을 위한 설계
    • View & 기능
      • 전체 Dialog
      • 하단 floating 상단바
      • (공통) 참여자 리스트
      • (공통) 미션 필터
      • (공통) 마니또 리스트
      • (참여자) 마니또 공개
      • (관리자/참여자) 대시보드
      • (공통) 타임라인
      • (참여자) 미션 등록 전 미리보기
      • (공통) 미션 상세보기
      • (참여자) 종료 후, 마니또 맞추기
    • Only View (기능 일부 포함)
      • (공통) 이용약관
      • (관리자) 방 이름 설정
      • (관리자) 방 정원 및 진행일자 선택
      • (참여자) 초대코드 입력
      • (관리자) 미션생성
      • (관리자/참여자) 미션화면
    • 자주 사용되는 기능 extension
      • 서버데이터 체크 (ex 0 : False / 1 : True)
      • 타임라인 날짜 (format : 오늘 or MM월 dd일)
      • 시작/종료 날자 (format : yyyy-MM-dd (요일))

     

     

    2. 아쉬웠던 점 & 개선방안


    서비스를 "협업"하며 구현하는 것이 처음이라 개발 이전에 정해야될 규칙들을 제대로 세우지 못한 것이 이번 활동의 가장 아쉬운 점이었다.

    처음엔 나름 어떤 아키텍처를 쓸 지, minSdkVersion은 어떻게 맞출지, 구현할 기능 분배는 어떻게 할지 등등 필요한 부분은 어느정도 정리가 되었다고 생각했는데 막상 개발을 시작하니까 고려하지 못한 부분들이 너무 많았다.

     

    * 지금 보니까,, 마스터밖에 없네,,

    이것보다 패기넘치는 브랜치는 없다

     

    제일 중요했던 부분이었는데 커밋메세지만 정하고 브랜치 규칙은 안정했다.

    심지어 저 develop 브랜치마저도 거의 유령브랜치라 master 하나에 기능을 모두 때려박는 패기를 보였다 하하

    중간에라도 브랜치를 분류해서 사용했었어야 했는데 그냥 호로록 개발해버렸다,,,

    브랜치 나누는 습관이 안들어서 나온 실수였던 것 같다. 혹시 기능 수정할 일이 생기면 이번엔 꼭 브랜치 새로 만들어야지..~

    이번 활동때 가장 아쉬웠던 점을 꼽으라면 이게 Top1이다. 다음 기수때는 무조건 git-flow를 사용해볼것이다.

     

    * 상상도 못한 테스트코드 ㄴㅇㄱ

    지난 8월, GDG에서 주최한 "안드로이드 탐구영역" 세미나를 듣고 코드의 질을 위해 테스트 코드를 작성하는 습관을 들여야겠다고 생각했다.

    프루또를 개발하면서 테스트코드를 작성하는 것도 내 나름의 목표 중 하나였다.

    왜냐면 우리팀의 목표는 Frutto 2.0을 런칭하는 것이기 때문이다.

    (물론 모든 팀원분들이 그렇게 생각하지 않을 수 있슴니다 ㅎ_ㅎ)

    그리고 안드로이드 개발을 시작하면서 테스트 코드를 써야한다는걸 잊어먹었다.

    물론 개발을 빨리 끝내버리고 싶어서 내가 스스로 머릿속에서 지워버렸을 수도 있다.

    근데 다시 마니또라는 개념자체가 플로우가 복잡해서 그냥 테스트코드를 작성하면서 개발하는게 조금 더 효율적이었을 것 같았다.

    우선 지금 프루또 코드를 리팩토링할 생각이 있어서 그 때 테스트 코드를 하나씩 작성해볼까 고민중이다.

     

    * 개선방안

    아무래도 이번이 처음 협업을 진행해서 그런지 놓친부분들이 많았다. 

    개발 전, 단계별로 Todo List를 확실히 작성해야 할 필요가 있다.

    Git을 어떻게 사용할지, 어떠한 아키텍처를 사용할지, 어떤 기술을 사용해보고 싶은지 고민해보고 협업할 사람들과 그 중간점을 맞춰나가는 과정이 필요할 것 같다.

    다음 기수때는 좀 더 꼼꼼히 미리미리 해둬야겠다,,

     

     

    3. 잘했던 점


    * 전 직장에서 다져진 QA 짬바

    누군가 내가 만든 앱이 불편하다고 하면 맘이 아파벌일 것 같았다.

    사실 짬은 없지만 나름 사용자의 입장에서 많이 생각하고 테스트를 하였다.

    확실히 다른 사람이 사용할거라고 생각하니 이것저것 걸리는 부분이 많았다.

    뭔가 애매하다거나 기획쪽에서 더 고민해봐야할 점이 있다 싶으면 팀원분들한테 (좀 많이) 물어보기도 했다.

     

    울 팀 PM 디케이님,, 고생하셨네요,,,,,,

     

    칭찬은 부끄러우니까 작게 올려야즤

     

    디케이님말고도 개발자분들과 이슈공유도 자주 했고 디자이너분들과도 궁금한 부분이 생기면 물어보거나 UI 검수작업도 진행했다.

    덕분에 기능을 수정하거나 UI를 추가하거나 버그 수정하는데 시간이 조금 걸리긴 했지만 확실히 사용자가 편하게 사용할만한 디테일한 기능들이 추가되었고 디자인도 더 예뻐졌고 버그도 이전보다 확실히 줄어들었다.

    그리고 런칭 후, 첫 프루또 사용후기는 밑에서 볼 수 있다.

     

    * 너 하고 싶은 거 다 해 (너. 하. 다)

    사실 넥터에 지원했던 가장 큰 이유 중 하나는 기술, 아키텍처 등을 직접 적용해보면서 공부하기 위해서였다.

    그런 관점으로 보자면 Frutto는 나름 성공적으로 마친 프로젝트라고 생각한다.

    사용(적용)해보고자 했던 것은 다음과 같다.

    • 공통화
    • MVVM 패턴 (with AAC)
    • Kotlin
    • Git-flow
    • Test Code
    • RxJava
    • Koin
    • Retrofit

    아쉬웠던 점에서 확인한 것처럼 Git을 효율적으로 사용하지 못한 것과 테스트 코드를 작성하지 않은 것을 제외한 다른 부분은 모두 Frutto에 사용(적용)되었다.

    물론 이전에도 사용해본 기술들이 있었지만 조금 더 익숙해지거나, 다양한 기능을 써보려 노력하였다.

    그리고 기존에 사용해보려했던건 아니지만 처음으로 Kakao API, Anko, FCM 등의 기술들도 사용해볼 수 있었다.

    이번 Frutto 개발을 통해 몰랐던 기술들을 접하거나, 공부했던 내용들을 적용시켜나가며 조금 더 개념을 잡아나가는 등 확실히 많은 것을 배우고 다양한 경험을 할 수 있었던 것 같다. 

     

     

    4. 런칭 후, 첫 프루또


    런칭한 후 처음으로 넥터 안드로이드 유저들끼리 프루또를 진행했다.

    런칭 전에는 혼자 앱을 여러개 깔아서 테스트 하느라 조금 지루했었는데 실제로 직접 사용을 해보니까 넘 떨렸다.

     

     

    아직 첫 번째 사용이라서 그런지 별 다른 이상도 없었고 다행히 반응도 좋았다.

    근데 다들 자기 마니또가 누구인지 한 번에 맞추셨다.

    확실히 아시는 분들과 하니까 다들 누군지 아시는 것 같았다.

     

    베타버전이지만 이상없이 이대로 1.0 버전이 되었으면 좋겠다,,,

     

     

    5. 끝


    넥터 16기로 활동하며 정한 목표 세 가지는 공부, 런칭, 시야넓히기 였다.

    Frutto를 개발하면서 아쉬운 점이 적지 않았지만, 내 나름의 목표를 어느정도 달성한 것 같아서 뿌듯했다.

    특히 동아리 활동이 거의 종료되기 직전부터 본격적으로 개발을 시작하였는데, 해이해지지 않고 런칭을 완료했다는 것에 만족한다. 동아리 활동이 끝나니까 그렇게 귀차니즘이 몰려오드라,,,

    넥터 OT가 엊그제 같은데 17기 활동이 얼마 남지 않았다.

    다음 활동때는 아쉬웠던 점을 최대한 보완해서 완벽한 17기 해야지 ~~~~~~

     

     

     

     

    댓글

Designed by Tistory.