[진행 기간]
2022.10 ~ 현재 진행중
[인원]
안드로이드 개발자 : 1명
백엔드 개발자 : 1명
iOS 개발자 : 1명
디자이너 : 2명
[역할]
PM, 서비스 기획, 안드로이드 개발
[회고]
명지대학교에 MCC(명지 복합 라운지) 새로운 캠퍼스 건물이 생기면서, 복합 라운지에 새로운 학생식당 업체가 들어왔다. 기존의 학식과는 퀄리티가 달랐으며 그 결과 학생들이 줄을 서서 먹는 것을 발견했다. 하지만 학식 메뉴에 관해서는 총학생회가 올려주는 인스타 스토리를 통해서나, 직접 방문하거나, 에브리타임에 학생이 올려주는 식단 사진을 보고 알 수 있었다.
따라서 여태까지 프로젝트를 같이 했던 친구와 같이 "우리 학식 메뉴 앱 간단하게 만들어볼래?" 라고 이야기가 나와 개발을 시작했다. 사실상 오늘 식단을 제공해주는 뷰와 주간 식단을 제공해주는 단 2개의 화면만 필요했기 때문에 1주일만에 개발을 끝냈다.
배포를 시작한 후 홍보를 시작했다. 에브리타임, 학교에 홍보 포스터 부착 등 다양한 방법을 시도하면서 명지대학교 학생들에게 홍보를 시작했다. 그 결과 2일만에 300명을 돌파했고, 현재 이 글을 쓰고 있는 시점에도 사용자가 꾸준히 올라가고 있다.
처음으로 사용자를 받아봐서인지 굉장히 설레기도하면서, 2개의 화면으로 끝내기로 했던 프로젝트가 욕심이 생기기 시작했다. 더 좋은 기능은 없을까? 생각을 하다가 "메뉴를 보러 들어왔는데, 학식 메뉴가 마음에 들지 않아 다른 메뉴를 고민하는 학생들이 있지 않을까?" 라는 결론이 나와 명지대학교 주변 음식점, 카페 등 추천 및 검색 그리고 맛있었던 곳은 찜꽁리스트에 저장하여 기억해두는 기능까지 추가하였다.
기능 업데이트 덕분인지 반응은 너무나도 좋았고, 실제 사용자의 의견(피드백)을 받아 또 다른 기능 업데이트까지 준비하고 있다.
프로젝트를 마무리하면서 회고를 작성하는 것은 아니고, 현재 진행 중이며 앞으로의 회고 또한 추가될 예정이다.
[협업]
프로젝트의 팀원이 많았을 때에는 슬랙, 지라 등 다양한 협업툴을 사용했지만 소수로 진행되는 만큼 간단하게 진행을 하고 있다.
특별한 이슈가 생길 때 디스코드 음성통화를 통해 회의를 진행하고 있으며, 기능 의견, 피드백 등 다양한 개인적인 의견은 노션 페이지에 작성하며 수시로 체크하고 반영하고 있다.
[개발]
여태까지 했던 프로젝트와 같이 하나의 액티비티, 여러 개의 프래그먼트로 구성하여 MainActivity 위에서 여러 개의 프래그먼트들이 바뀌어가며 동작하게끔 구현하였다.
따라서 위와 같이 Jetpack Navigation을 도입하여 프래그먼트간의 이동을 더욱 쉽게하고, 애니메이션 기능, Safe Args 특성을 활용하여 개발하였다. 다음은 패키지 구성이다.
먼저 백그라운드 작업을 하기 위한 alarm, API 통신, Room, Repository 등 관련 데이터, 의존성 주입을 위한 di, ViewModel, View, Adapter 등 뷰와 관련된 ui, 앱 공통으로 사용될 util, 패키지로 구성하여 MVVM 패턴을 사용하였다.
다음은 검색기능이다. 검색기능은 다음과 같이 입력하는 시간과, 현재 시간차를 차감하여 그 차이가 0.5초보다 이상일 때 검색 api를 비동기적으로 호출하여 검색기능을 구현하였다.
검색창에 사용자가 입력할 때 마다 입력한 시간을 endTime으로 그 전에 입력했던 시간을 startTime으로 초기화 한 뒤, 검색 api를 비동기적으로 호출하였다. 다음은 검색 기능에 대한 Paging 처리 코드이다.
오픈 api 페이징 처리를 하는데 많이 힘들었던 기억이 있다.. 왜냐하면 분명히 최대 호출할 수 있느 사이즈가 50이여서 45까지로 설정을 하였으나 계속 사이즈를 초과했다는 에러메세지가 나왔다.. 알고보니 오픈 api를 제공하는 곳에서 최대 사이즈가 15인데, 50으로 잘못표기가 되어있었던 것이였다. 설마설마 했지만 실제로 그랬다...따라서 PagingConfig를 생성하는 부분에서 첫 페이지의 사이즈를 default 값이 아닌 현재 PagingSize인 15로 설정해주었더니 정상적으로 작동이 되었다!
다음은 의존성 주입 부분이다.
Hilt 주입으로 인해 앱 모두에서 사용하기 위한 싱글톤으로 생성하였고, 따라서 다음과 같이 Factory를 주석처리하였다. Hilt주입으로 인해 코드가 더욱 간결해지고, 유지보수를 더욱 쉽게 하고 있으며, 추 후에 테스트코드를 작성할 때에도 조금 더 편리하게 작성할 수 있게 되었다.
위의 특별한 기능 이외에도, 백그라운드 작업에 필요한 AlarmManager, Paging에서 사용한 LoadStateAdapter 등 안드로이드 개발을 혼자하는 만큼, 내가 평소에 넣고싶었던 기술들을 많이 넣어보았다.
처음 사용하는 기술이 많아 조금 어려웠지만 이렇게 신기술을 적용할 때면 설렘을 느끼면서 개발을 진행했다. 평소에 한 번쯤은 구현해보고 싶었던 ViewPager 와 indicator를 융합해서 주간식단 표 뷰도 깔끔히 만들어보았다.
앞으로 명식이의 프로젝트 목표는 다음과 같다. 자동화 툴을 이용한 CI/CD 구축, 테스트코드, 여러 기능 추가 등 많은 목표들을 세웠다.
또한, 요즘 Compose를 공부하고 있는데, 기회가 된다면 xml로 되어있는 명식이 프로젝트를 Compose로 모두 변환해보고 싶은 욕심도 생겼다.
1버전, 1.1버전 업데이트 기능이 모두 완료된 시점에서 회고를 작성하니, 추가되어야 할 부분들이 많은 것 같다. 다음 업데이트를 진행한 후 한 번 더 회고를 작성해야겠다.
'Project' 카테고리의 다른 글
[Project] 플렙업(Plogging Level Up) 회고 (0) | 2022.09.12 |
---|---|
[Project] INFRA(인프라) 회고 (1) | 2022.09.09 |
[Project] TLOVER(트러버) 회고 (0) | 2022.09.04 |