본문 바로가기

카테고리 없음

🌱마인드가든 재출시기🌱

 

마인드가든 출시 기념으로 재출시 과정 기록

 

개발 전 준비

19년도에 서버 만료로 마인드가든 서비스를 플레이 스토어에서 내린 이후 다시 출시하고 싶다는 마음은 쭉 있었다

그러나 동아리 -> 인턴 -> 취업으로 인해 투자할 시간이 많이 없었다

시간이 없다는 것이 핑계로 들릴 수도 있지만, 내가 생각했을 땐 이전 코드로는 도저히 이어갈 수 없어서 아키텍처부터 구상해서 많은 것들을 적용하려면 정말 꽤 많은 시간이 필요했다

 

그래서 작년까지는 적용하고 싶은 디자인 패턴과 기술에 대해 논의하고 스터디 하는 시간, 새로운 기획 등을 구상하는 시간이 대부분이었다

마인드가든 회의록들

그러다 올해 3월 드디어 나에게 시간이 주어졌다

열정에 불타올라 당장 개발에 착수❤️‍🔥

출처 - 갓조이 깃헙

했다고 하기엔 깃헙이 많이 허전하다

본격 개발은 5월부터 했다

그전까지는 적용하고 싶은 기술에 대해서 공부가 필요했다

그리고 사정상 대부분 혼자 개발하긴 했지만 언젠가 합류할 동료들을 위해서 습득한걸 정리할 필요도 있었다

 

그간 정리한 키노트

그래서 공부한 내용을 정리해서 키노트로 만들었다

 

기술 적용 이유

MVVM with Clean architecture

클린 아키텍처를 적용해보고 싶었던 이유는 적용함으로써 나타나는 기대 효과 때문이었다

클린 아키텍처 구조 상 코드가 복잡해지는 것을 방지할 수 있기 때문에 프로젝트 유지보수에 도움이 된다

마인드가든을 꾸준히 이어가고 싶은 생각이 있었기 때문에 클린 아키텍처 적용은 필수라고 생각했다

클린 아키텍처는 여러 디자인 패턴과 쓸 수 있지만, 난 그중에서도 제일 익숙한 MVVM에 적용하기로 했다

다 새로 적용해야 할 기술일 경우 개발 부담이 커져서 출시가 많이 미뤄질 수도 있다는 점이 염려되었기 때문이다

클린아키텍처를 안드로이드 프로젝트에 적용할 때 여러가지 방법이 있는데 (예. 레이어 나누기, 모듈 나누기)

모듈까지 나누면 좋았겠지만 지금 상황에선 필요 이상의 작업이라는 생각이 들어서

출시 이후에 검토해보기로 하고 우선은 간단하게 레이어로만 나누었다

data - domain - presentation

 

이걸 적용한 진정한 효과는 유지보수 해봐야 알 수 있는데

당분간 새 기능을 추가할 여력이 없어서🥲 이건 나중에 확인해야 할 것 같다

 

DI - Hilt

DI 역시 나중에 더 커질 우리 마인드가든을 유지보수하기 위해 적용해보고 싶었다

Hilt라는 좋은 Jetpack 라이브러리가 있어서 이를 통해 적용했다

초반에 개념이 어렵긴 했지만 여러 코드 참고하다보니 적용이 그렇게 어렵지는 않았다

 

Coroutine

kotlin으로 개발하는 상황에서 kotlin이 제공하는 비동기 솔루션을 안 쓸 이유가 없었다

rxJava에 비해 비교적 낮은 학습 곡선과 경량이라는 장점도 있고,

UI에 한정적인 LiveData 말고 Flow를 쓰고 싶었기 때문에 코루틴을 적용하게 되었다

그래서 공부해서 적용하긴 했지만 그럼에도 아직 모르는 부분이 좀 많다

(공부할 부분이 많다는 건 코드가 더 좋아질 가능성이 있다는 것👍)

 

Room + DataStore

서버에 데이터를 저장하지 않기 때문에 내부 DB를 다룰 라이브러리가 필요했다

room 은 Jetpack 제공이기도 하고 몇번 써봤기 때문에 자연스럽게 적용하게 되었다

그리고 DataStore는 비동기적이라 SharedPreferences보다 안전하기 때문에 디벨로퍼에서 이전하기를 권장하고 있어서 적용했다

 

개발 과정

설계

개발 과정을 기록하고 공유하기 위해 마인드가든팀 노션에 설계/구현 관한 페이지를 추가했다

이렇게 화면 목록을 만들고 상세 페이지에 작업을 정의한다

작업을 정의하고 작업 상태를 나타내고 담당자를 배정한다

여기서 정의한 작업은 깃헙에 이슈로 올리고 해결한다

구현

구현 중 팀원에게 공유하고 싶은 내용이 있을 경우 

 이렇게 상세페이지로 만들어서 내용을 정리했다

 

코드리뷰

기능에 대한 담당자는 나눌지언정 코드에 대한 책임은 팀원 모두에게 있게 하는 것이 프로젝트를 유지보수하는데 도움이 될거라고 생각했다

그래서 실질적으로 개발에 참여하기 어려운 사람도 프로젝트에 참여하기로 한 이상 코드리뷰에 참여해주었으면 좋겠다는 룰을 가지고 프로젝트를 시작했다

초반에는 그래도 리뷰가 꽤 되었다

지켜봐주는 동료들이 보이니 코드 짜는 보람도 두배였다

하지만 후반부로 갈수록 다들 바빠지고 나도 리뷰를 기다리면서 개발 하기엔 속도가 나지 않아서 후반부에는 리뷰 없이 pr을 merge하게 되었다

아쉽긴 하지만 현실적으로 어려운 부분이란걸 인정하고 이를 보완하기 위해 설계/구현 페이지를 만들어 개발 과정을 기록했다

 

개발하며 고민했던 점은 여유있을 때 차차 블로그에 정리해보려고 한다

 

출시 과정

재밌는 사건 발생

출시 준비 중 재밌는(?) 일이 발생했다

예전에 마인드가든 앱을 플레이 스토어에 출시했다가 내린 적이 있기 때문에 이 앱이 잘 내려갔나 확인해 보려고 

스토어에 "마인드가든"을 검색해 보았다

그런데 놀랍게도 이런 앱을 발견하게 되었다

누구세요??

우리 앱이 내려가지 않은 줄 알았다

설치해보니 홈 화면 문구부터 정원, 나무 디자인까지 우리앱과 똑같았고

우리앱보다 나은게 뭐냐면 광고도 달고 있었다

얼마나 버셨을까? 부럽다!

아무튼 봤을 당시엔 좀 당황해서 어떻게 할지 고민하다가 스토어에 적혀있는 개발자 주소로 메일을 보냈다

메일 답장을 기다리면서.. 혹시 저 개발자 나 아닐까 하는 생각에 구글에 아이디 검색을 해봤다;;;

는 농담이고 혹시나 메일을 못보시고 앱을 내려주지 않을까봐 다른 연락책을 찾아야겠다는 생각에 구글링을 했다

찾아봤더니 무려 8년 경력의 디자이너님. 역시 이 솜씨는 아마추어가 아니었다

다행히 앱은 금방 내려갔지만 사과 메일같은건 없었다

나중에 만나면 용돈 달라고 해야지

토이 프로젝트 하는 분들은 UX/UI 저작권 침해를 조심하세요

앱이 너무 귀여워도 이런 문제가 생긴다는 걸 알게 되었다

 

눈물나는 사건 발생

플레이 스토어에 앱을 출시하기 위해선 앱 내부에 "개인정보처리방침" 문서를 포함하고 있어야 한다

우리 앱은 개인정보를 수집하지 않는데 구글링 하면 쉽게 나오는 개인정보 처리방침 문서 만들기는 나의 케이스에 별로 도움이 되지 않았다

그러다가 자주 쓰던 앱의 개인정보 처리방침 문서를 보게 되었는데 너무 깔끔하고 딱 우리 앱에서 써야 하는 내용들로 구성이 되어 있었다

이거다 싶어서 개발자 메일로 문서를 참고해도 될지 문의를 드리게 되었다

그런데 기꺼이 허락해주신다는 내용과 함께 아래 내용이 같이 왔다

찌잉...🥹 역시 많은 사람들에게 사랑받는 앱은 다르다

나도 누군가를 기꺼이 도와주고 따뜻한 말 한마디를 건낼 수 있는 사람이 되고 싶다고 느꼈다

Pencake 개발자님을 비롯한 운영진 분들 도움주셔서 감사드립니다

 

앱 소개 페이지 만들기

도메인 돈 주고 사서 예쁜 앱 홈페이지를 만들었다면 좋았겠지만 

돈도 없고 시간도 없어서 노션으로 만들었다

그래도 우리팀 디자이너님 도움으로 예쁘게 만들어졌다!

https://buttercup-cirrus-5be.notion.site/MindGarden-64679981ca794f2d8237d6462b61e273 

 

MindGarden

안녕하세요 마인드가든 안내 페이지에 오신 것을 환영합니다! 궁금하신 점에 대해 답변해 드릴게요

buttercup-cirrus-5be.notion.site

 

최종_진짜최종_이것이_마지막_빌드파일_출시_하고_싶다.aab

앱을 프로덕션으로 출시 하기 전 내부테스트를 통해 점검을 했는데

수정할게 자꾸 나와서 버전이 무한으로 증가!

이거 우연인데 버전코드 111 업로드 날짜 2022년 11월 11일 12:22 111도 놀라운데 1222 내 생일 시에 앱이 올라갔었다

111 버전이 최종으로 나갔으면 좋았겠지만 수정할게 또 있어서 결국 112 버전이 최초 출시의 최종 버전이 됐다 

 

 출시

두근두근 심사 통과 완료!

(한번 리젝 당했다 타겟 연령이 아동일 경우 가족 정책을 추가해야 하니 타겟 연령층 설정을 잘 하자)

https://play.google.com/store/apps/details?id=com.mindgarden.mindgardenapp 

 

마인드가든(Mind Garden) - Google Play 앱

[ 나를 기록하는 모바일 속 작은 공간, Mind Garden ]

play.google.com

 

github 정리

README 작성

UI 저작권침해 사건 이후로 git을 private으로 바꿔서 readme 읽을 사람이 우리 팀원들뿐이지만 

리드미는 프로젝트의 얼굴이니 만들었다

 

릴리즈 태그 내기

산출물들을 태그에 포함하여 올릴 수 있어서 좋다

출시한지 얼마 안됐지만 오류 수정때문에 벌써 릴리즈 태그 세개나 가지게 되었다 ㅎㅎㅎ 나는 부자~

기능 추가 없이 더 이상 릴리즈 태그 내는 일이 없었으면 좋겠다...

 

소감

함께 해준 마인드가든 팀원들, 응원해준 분들, stackoverflow 고맙습니다

지금 무직 백수라 소속은 없지만 명함이 생긴 것 같은 기분이다 

마인드가든은 버전이 1대 앱인만큼 아직 부족한 점도 많고 그만큼 새로 추가해야 할 기능도 많아서 갈길이 멀다고 볼 수 있지만,

꾸준히 이어나가서 우리팀의 자랑스러운 명함이 될 수 있도록 발전시켜 나가고 싶다

그리고 언젠가 자연스럽게 많은 사람들에게 사랑받는 앱이 되었으면 한다