안녕하세요! 코봉입니다 🥰
이번 포스팅에서는 코틀린 스터디를 진행하며 작은 앱을 개발하고 배포한 경험을 이야기해보려고 합니다. 😎
저희는 현재 코틀린 & 스프링부트 스터디를 진행하고 있습니다. 그중에서도 코틀린을 학습할 때 직접 안드로이드 프로젝트를 만들면서 학습하면 더 효과적일 것 같다고 생각하여 직접 앱을 제작해보기로 했습니다. 🏄♂️
스터디에 대해 더 잘 알고 싶다면 관련 포스팅을 참고해주세요!
막상 프로젝트를 시작하기로 했지만 무슨 앱을 만들어야 할지 막막했어요... 😥 다만 저희가 아이디어를 구상할 때 가장 중요하게 생각했던 점은 단순한 기술 익힘 목적이 아니라 실생활에서 저희가 직접 느꼈던 불편한 점을 개선하여 실제로 자주 사용할만한 앱을 만들기 위해 노력했습니다.
그렇게 여러 아이디어를 나누던 중, '금융 거래'라는 키워드에 관심을 가지게 되었습니다. 💰
금융 거래는 우리의 삶 속에 밀접하게 파고들어있습니다. 토X, 카XX뱅크 같은 앱을 하나만 설치하면 단 몇 번의 클릭만으로 쉽게 돈을 송금할 수 있습니다. 그러다 '왜 온라인과 온라인에서 금융거래는 쉬운데 오프라인과 온라인 간의 금융거래는 어려울까?'라는 의문점을 가지게 되었고, 오프라인과 온라인 간의 금융거래를 쉽게 해줄 수 있는 앱 📱을 만들어보고 싶어졌습니다.
그리고 그중에서도 "오프라인에서 계좌 이체할 일이 생겼을 때 (한겨울에 붕어빵 사먹을 때, 지하상가에서 등등) 계좌 번호를 바로 스캔해서 송금할 수 있으면 정말 편하지 않을까?"라는 생각에 초점을 맞춰 사진 촬영 한 번으로 계좌를 인식하고 송금까지 연결해주는 코봉 계좌 스캐너 📸라는 앱을 만들게 되었습니다!
Issue template과 PR template을 맞추고, 진행상황은 Github Issue와 버전별 Milestone을 만들어서 체크했습니다.
(이슈 관리)
(이슈 템플릿)
또한 코드 리뷰 문화를 도입하여 서로가 가진 개발 지식을 나누었고 더욱 깔끔한 코드를 짤 수 있었습니다.
Notion은 초기에 개발 계획을 정할 때 사용했는데, 일정, 방식, 개발 마감 기간, 필수 기능 등을 정리해두었습니다. 처음부터 너무 많은 기능을 정하게 되면 개발 일정이 계속 늘어지게 되고, 서로 지쳐 중간에 개발을 중단하는 불상사를 막기 위해 필수 기능을 정할 때는 정말 필요하다고 생각하는 기능만 추가하도록 주의를 기울였습니다.
(개발 계획서)
커뮤니케이션 도구로는 Slack을 채택했습니다. 매주 서로 스터디 시작 전까지의 목표와 스터디 하는 동안의 목표를 정해서 Slack으로 커뮤니케이션하고 각종 Third-party 앱을 Slack Bot으로 추가하여 생산성을 높였습니다.
스터디는 개발자 2명으로 이루어져 있었기 때문에 디자인이라는 크나큰 벽에 부딪히고 말았습니다 ... 😅 처음에는 각자 화면 하나씩을 맡아 디자인을 해보려고 했으나...
첫 앱 화면 디자인... (자세한 설명은 생락합니다)
디자이너에게 외주를 맡기게 되었습니다 😅
하지만 추후 추가된 화면은 저희 둘이 머리를 싸매며 나름대로 열심히 디자인을 했습니다 ㅎㅎ (이러니까 있어보이네요)
W : SpringBoot가 배우고 싶은, Kotlin을 좋아하는 안드로이드 개발자
A : Kotlin을 배우고 싶은, Java를 좋아하는 백엔드 개발자
백엔드 개발자 A는 원래 자바만 사용하다 처음으로 코틀린 프로젝트를 진행해봤습니다. 아직 완벽히 익숙하진 않고 조금 어색하지만, 굉장히 좋다고 생각했습니다. 전체적으로 코드의 길이가 짧아지고 단순해졌음을 느꼈습니다. 하지만 아직도 어려워서 앞으로 프로젝트를 발전해나가면서 코틀린에 더 익숙해지고 싶어요 😅
이 앱의 핵심 기능은 이미지 인식 기술(OCR)이었기 때문에 각종 OCR 기술들을 찾아보다가 Google Vision API에서 OCR을 지원한다는 것을 알게 되어 위 기술을 채택했습니다. 사실 QA 과정 중에 인식률이 생각보다 잘 나오지 않아 중간에 다른 기술로 바꿔볼까 생각했지만, 한글을 정확히 인식하는 것이 Google Vision API밖에 없어서 이 기술로 확정하게 되었습니다. 인식률을 조금 더 높이기 위해 언어 힌트를 추가했고, 자체 파싱 알고리즘을 넣었습니다.
처음 사용해보는 기술이어서 우여곡절이 많았지만, 문서화가 잘 되어있어서 많은 도움이 되었어요. 잘 되어 있는 문서가 얼마나 도움이 되는지도 몸소 깨닫게 되고, 나중에 오픈소스를 만들게 되면 문서화를 잘해야겠다는 다짐을 하게 되었어요! 💪🏻
안드로이드 개발자라면 많이 사용해봤을 HTTP client인 Retrofit을 백엔드 개발자 A가 처음 사용해봤는데요, 생각보다 안드로이드에서 예외처리할 상황이 많아 놀랐고, 예외처리 방법도 새롭게 배웠어요. ☺️
안드로이드 개발자 W는 커스텀 한 카메라 촬영 화면을 만들기 위해서 안드로이드에서 제공하는 Camera2 API를 사용했는데 처음 써보는거라 우여곡절도 많이 겪었지만 쓸모있었어요. 👍
가장 뿌듯했던 건 이 API를 리서치한 내용을 회사 실무에서 그대로 사용할 수 있었고 일정을 산출하는 데에 도움이 되었다는 것입니다.
크리스마스 이브 날인 12월 24일에 배포 신청을 완료했고, 12월 말에 승인이 되어 플레이 스토어에 등록이 되었습니다! 많은 기능이 있는 앱은 아니지만, 처음으로 일반 사용자들이 사용할 수 있도록 배포해서 굉장히 뿌듯했어요. 홍보 활동을 일절 안해서 그런지 아직은 다운로드 수가 적지만 꾸준한 업데이트와 홍보 활동을 병행하며 늘려갈 계획입니다! 🥰
아래 링크에서 코봉 계좌 스캐너에 대한 자세한 정보를 확인하실 수 있습니다! (다운받아주시면 더욱 감사할 것 같아요! 🧚♀️)
단순한 이력서 채우기용 토이 프로젝트가 아니라 실생활에서 요긴하게 사용할 수 있는 앱을 만들어서 플레이 스토어에 올려서 많은 사람들에게 공개할 수 있어서 뿌듯했습니다.
사람들에게 가치(오프라인과 온라인 간의 금융거래를 쉽게 하자!)를 전달하기 위한 첫 단추를 끼운 기분이었습니다.
또 많은 사람들이 이 앱을 사용하게 될 것이란 생각에 자연스럽게 사용자 입장에서 생각하게 되었고 그만큼 앱의 퀄리티도 높일 수 있었던 것 같습니다. 🤸♀️
프로젝트의 요구사항 및 일정 관리가 미흡했던 점이 가장 아쉽습니다.
요구사항과 일정을 처음부터 픽스하지 않았고 요구사항이 계속 추가됨에 따라 일정이 계속 미뤄졌습니다.
추후에그 Jira, Trello 등의 일정 관리 도구를 도입하여 생산성을 높이면 좋을 것 같습니다. 💁🏻♀️
이 프로젝트는 단발성으로 개발하고 끝내지 않고 계속 기능을 추가하며 사용자 피드백을 반영할 계획입니다!
지금까지 저희가 코틀린 스터디를 진행하며 작은 앱을 개발하고 배포한 경험을 소개해봤어요! 끝까지 읽어주셔서 감사하고 궁금한 점이나 피드백이 있다면 언제든지 댓글로 달아주시거나 이메일(coveong@gmail.com)로 연락해주시면 감사하겠습니다. 🙇♀️
뿅