본문 바로가기

Android/Application

올파우스 - 350+ 의 커밋이 있는 프로젝트를 스톱한 이야기

AllPouse

향수를 전문적으로 취급하는 샵을 House 라고 표현한다는 기획자분의 말에 의해 결정된 명칭인 <AllPouse>. 저와 팀원들이 만들던 퍼스널 퍼퓸 매칭 앱의 이름입니다.

 

 

꽤 긴 시간동안 작업을 진행하다가, 결국엔 스톱하게 되었습니다. 오늘은 이 이야기를 해보려고 합니다.

 


어떤 앱인가?

유저가 보유한 향수와 좋아하는 향과 이미지를 획득하여 어울리는 향수를 매칭해주는 앱입니다. 커뮤니티 위주의 앱인데, 조향사 커뮤니티를 통해 시장의 지분을 가져가려는 전략을 취했습니다.

이 외에도 향수에 대한 리뷰 기능과 제품 설명 기능도 포함되었습니다.

 

 

스플래시 화면입니다. 화면에 사용된 로고는 앱 아이콘으로 기능하기도 하였습니다. 직접 아이디어를 구상하여 제작한 아이콘입니다.

 

 

온보딩 화면입니다. 좌측 하단의 인디케이터는 페이저 인디케이터이며, 현재 표시되는 페이지가 몇 번째인지 표시해줍니다. 현재 페이지의 인디케이터만 모양이 달라 쉽게 식별할 수 있도록 하였습니다.

제작 과정은 아래의 포스팅에 자세히 기록하였습니다.

 

 

[Jetpack Compose] HorizontalPagerIndicator 라이브러리 없이 구현하기

Jetpack Compose Accompanist Jetpack Compose Accompanist 는 Compose Supplement Library Set 입니다. Compose 는 미완성 단계이고 XML 및 Android View 생태계를 완전히 대체하기에는 모자란 부분이 있는 것이 사실입니다. 그

blothhundr.tistory.com

 

 

가입 화면입니다. 카카오와 구글 로그인을 모두 지원하였으며, 해당 프로젝트에서 처음 적용해 본 기술입니다. 디자인이 상당히 마음에 들었던 화면입니다.

 

 

메인 화면입니다. '5개중 5개 일치' 는 해당 향수의 특성이 유저의 취향 키워드에 부합하는 갯수를 표시하려 하였습니다. 해당 부분은 완성되지 못한 기능인데, 추후 서술하도록 합니다.

 

 

당연히, 검색 기능도 제공하고 있으며, 검색은 구분없이 모든 게시판을 대상으로 이루어집니다.

 

 

향수 상세 페이지입니다. 해당 향수에 대한 리뷰들을 볼 수 있으며, 리뷰 작성이 가능합니다. 리뷰들을 기반으로 하여 점수를 보여줍니다.

 

이 외에도 정말 다양한 화면들이 존재하는데, 현재는 서버가 내려가서 확인할 수는 없습니다.

 


어떻게 시작하게 되었는가?

알고리즘 스터디를 구하던 와중에 고향 친구와 우연히 함께하게 되었고, 그 인연이 프로젝트 개발로 이어졌습니다. 총 세 번의 팀 빌딩을 진행했는데, 기획자의 부재로 두 번의 팀 빌딩 실패를 경험했습니다. 최종적으로 팀 빌딩이 되었을 때에는 서버 개발자 둘, 안드로이드 개발자 하나 (본인), 디자이너 겸 기획자 한 분 으로 구성되었습니다.

 

초기 개발은 순조로웠으나 디자이너 겸 기획자분께서 이직에 성공하셨고, 프로젝트를 떠나셨습니다. 디자인 및 기획이 완성되지 않아 난파될 위기에 처했으나, 남은 멤버들끼리 해보자는 이야기가 나와 그대로 진행했습니다.

 

디자이너분께서 제작하신 디자인이 있었는데, 계속해서 해당 디자인으로 개발했다간 문제가 생길지도 모른다는 생각에 기존 디자인은 전면 폐기하고, 제가 직접 앱 전체를 디자인했습니다.


그래서, 왜 스톱하였는가?

기획자가 정말 중요하다.

팀 빌딩부터 스톱까지 계속해서 피부로 느꼈던 점입니다. 프로젝트의 PM 이나 기획자가 없으면 해당 프로젝트가 성공하기는 쉽지 않은 것 같습니다. 프로젝트의 방향성을 제시해주는 포지션이고, 문제 될 만한 부분들을 미리 파악하여 개발자나 디자이너가 작업 수행 도중에 만날 수 있는 변곡점을 없애주는 역할을 가지는 포지션이기 때문입니다.

 

나름 잘 진행되고 있던 프로젝트였는데, 기획자분께서 떠나자마자 난항을 겪었습니다. 멤버들은 방향을 잃었고 흥미를 잃어갔습니다.

 

사실 멤버의 이탈보다 더욱 큰 문제는 앞으로의 방향성을 종잡을 수 없다는 것이었습니다. 기획자분께서 파악해오셨던 앱의 메인 포인트인 키워드 관련 정보들이 사실상 사용할 수 없게 되어버려서, 키워드 관련 개발을 할 수 없으니 키워드 기반 추천 알고리즘 역시 생성될 수 없었고, 이는 앱 개발의 중단으로 이어졌습니다.

 

그렇다면, 기획자를 다시 구할 수는 없었는가?

물론 가능했겠지만, 기획자분께서 떠나시면서 '해당 앱은 BM 이 없다. 그러므로 사용자를 끌어 모을 수 없을 것이다' 라고 말씀해주셨습니다. 모든 멤버가 인정했고, 깔끔하게 스톱하기로 결정하였습니다. 물론 새롭게 구한 기획자가 BM 을 구상해올 수도 있었겠지만, 다른 멤버들 역시 빠듯한 스케줄 탓에 더 이상 개발을 진행할 수 없게 되었죠.

 


나는 무엇을 배웠는가?

비록 개발하다가 만 앱이고, 완성하지 못했으니 실패했다고 볼 수도 있겠지만, 저는 해당 앱을 제작하면서 굉장히 많은 것을 배울 수 있었습니다.

 

The Jetpack Compose

현시대 안드로이드 개발자들의 숙원 사업, Jetpack Compose 학습에 운을 띄울 수 있었습니다. 사실 Compose 를 공부해야겠다는 생각은 오래 전부터 해왔지만, 심리적 진입 장벽이 있는 것은 부정할 수 없었습니다. 이번 기회를 통해 Jetpack Compose 에 대해 학습하면서 애니메이션이나 제스쳐에 대한 이해도도 상승하였습니다. 아래의 포스트들은 제가 해당 앱을 개발하면서 배운 점들에 대해 작성한 Compose 관련 포스트입니다. 특히, ImageCropper 를 구현하는 과정이 매우 어려웠지만 그만큼 성취감도 높았습니다.

 

 

[Jetpack Compose] LazyColumn/LazyRow/Pager OverScrollEffect 없애기.

개발중인 앱에서 HorizontalPager(LazyColumn, LazyRow, VerticalPager 모두 해당 됩니다.) 를 사용중인데, OverScrollEffect 가 적용되어 있어, Fancy 하지 못한 느낌을 줍니다. CompositionLocalProvider(LocalOverscrollConfiguratio

blothhundr.tistory.com

 

[Jetpack Compose] Clickable Ripple Effect 없애기

Android, iOS 등 모바일에서는 버튼이 눌렸다는 사실을 유저에게 알리기위해 Ripple Effect 가 존재합니다. 보통은 호숫가에 던져진 돌에 의해 파동이 일어나듯, 터치한 부분을 중심으로 원이 커져가는

blothhundr.tistory.com

 

[Jetpack Compose] ImageCropper 라이브러리 없이 구현하기

현재 진행중인 사이드 프로젝트에서는 카카오 및 구글 로그인을 사용합니다. 그러므로, 이미지를 촬영 또는 디바이스에서 불러와 이를 수정 및 등록할 수 있도록 구현해야 합니다. 당연히 유수

blothhundr.tistory.com

 

Coil

Jetpack Compose 가 트렌드의 중심이 되면서, 이미지 처리 라이브러리인 Coil 의 점유율이 급격하게 상승했습니다. 저는 해당 앱을 개발하면서 Coil 에 대해서도 학습할 수 있었습니다.

 

 

[Jetpack Compose] Glide 와 Coil, 무엇을 사용하면 좋을까.

이미지 처리 라이브러리 개발시, 저는 UI에 관련된 라이브러리는 최대한 사용하지 않으려고 하는 편입니다. 어쨌든 라이브러리도 사람이 만드는 것이고, 자세히 파고들면 그다지 어려운 개념이

blothhundr.tistory.com

 

Webp

 

비트맵과 WebP

인간의 눈으로 디지털 디바이스에서 표시되는 이미지 (그림, 사진) 를 보는 것은 픽셀이라는 작은 점들이 빼곡히 모여있는 것을 보는 것과 같습니다. 학창 시절 미술 시간에 한 번 쯤은 해보았던

blothhundr.tistory.com

 

Webp 에 대해 학습하고, 적용해보았습니다. 이는, 현재 진행 중인 BPM(Body Profile Manager) 에도 Webp 를 적용하게 된 계기가 되었습니다. 아마 별다른 이슈가 없으면 추후에 진행하게 될 대부분의 프로젝트에서도 Webp 를 사용할 것 같습니다.

 

전체적으로, UI 에 관한 지식과 기술들을 학습할 수 있어서 매우 좋았습니다. 안드로이드 서비스 앱 개발은 결국 UI 와 통신 두 가지가 대주제라고 여기는 편인데, 그 중 하나인 UI 에 대해 많은 성장을 할 수 있었기 때문입니다.


후기

비록 완성하지는 못했지만, 해당 앱을 개발하면서 Jetpack Compose 에 대해 학습할 수 있어 더 할 나위 없이 좋았습니다. 이는 현재의 저에게도 아주 많은 영향을 주었습니다.

 

프로젝트를 시작하기 전에는, 아이디어에 대해 멤버들과 깊은 고민을 해보아야 한다는 사실도 알게 되었습니다. 이후 DND 를 진행하면서 시장 조사에 대한 중요성도 배울 수 있었고요.

 

부족한 점이 너무나 많았던 프로젝트였지만, 그만큼 애정도 많았습니다.

추후에 진행하게 될 사이드 프로젝트는 BM 구축과 시장 조사에 더 많은 리소스를 사용하여야 한다는 것을 배울 수 있었습니다.