비전공자 앱 개발 도전기(feat. 놀까)
안녕하세요.
보드게임 AI 추천, 보드게임 일상기록 앱 ’놀까’를 개발중인 연지수입니다.
1. 어쩌다 이런 무모한 도전을?
사실 ‘놀까’는 어떤 문제를 해결하겠다 라는 생각으로 시작한 서비스는 아니에요.
기계공학을 전공한 제가 IT 분야로 전직 후, 나만의 서비스를 만들어 포트폴리오에 한줄 추가해보자!
라는 가벼운 마음으로 시작하게 된 프로젝트예요.
전직 과정에서 AI를 공부하며 정말 고생을 많이 했습니다.
퇴근 후와 주말에 강의를 듣고 프로젝트를 하며 인고의 시간을 보냈었죠.
그와 동시에 나름 갓생을 살고 있다는 뽕에 취해 자신감도 가득 차 있었습니다.
‘이것보다 더한 고생은 없을 것이다. 앱 개발쯤 1년 안에 해주마. 후훗’
이런 멍청한 생각을 하며 스스로를 다시 지옥불에 던지게 됩니다..
어떤 걸 만들어 볼까 고민하던 차에 보드게임 카페를 운영하는 지인이 아이디어를 줬어요.
‘보드게임에 입문하는 사람들이 항상 게임을 추천해 달라고 하는데 요즘 핫하다는 AI로 게임을 추천해 주는 건 어때?’
‘매니아들은 갖고 있는 게임이 너무 많아서 관리가 어려워. 앱으로 쉽게 관리할 수 있도록 보관함 기능이 있으면 좋겠어.’
‘친구들이랑 같이 게임했던 기록을 남기고 공유하는 기능도 있으면 좋을 것 같아.’
검색을 해보니 사람들의 니즈는 있었는데, 유사한 종류의 국내 앱 서비스는 없더라구요.
보드게임이라는 컨텐츠는 제가 하고싶었던 ‘추천시스템 알고리즘'을 적용하기에도 꽤 괜찮아 보였죠.
서비스를 만들어 볼 만큼의 데이터도 얻었습니다.
2. 앱 개발 과정
앱 개발은 전혀 몰랐기 때문에 유튜브로 클론코딩 영상을 보고 따라 만들며 배웠습니다.
따라 하는 것만으로는 부족하다 싶어서 강의를 찾아보기도 했죠.
내가 쓰는 코드 한줄에 시뮬레이터 화면이 실시간으로 바뀌는 경험은
마치 어린시절 처음 장난감을 가졌을 때와같이 신기함과 즐거움의 연속이었습니다.
재미있게 공부하고 기록을 남겨보기도 했습니다.
그리고 전문가가 만들어놓은 코드에는 특별한 오류가 없었죠.
2-1. 오류 해결
하지만 직접 기획하고 기능들을 만들어가다 보니 듣도보도 못한 오류가 나타나더라구요.
stackoverflow에서도 몇 년 전에 있었던 질문을 찾아봐야 할 정도로 많은 오류를 경험했습니다.
22년에는 flutter 3.0, 23년에는 3.10 업데이트도 있었습니다.
유지보수는 끝이 없다는 걸 깨달았죠.
개발자님들 존경합니다..
앱스토어 등록시에도,
처음에는 정확한 가이드라인도 모른 채 앱스토어 심사 신청을 계속하니
애플 직원을 테스터로 이용하지 말라며 혼나기도 했습니다.
그래도 멈추지 않고 하나씩 오류를 수정하고 개선해 나갔습니다.
지금 보니 꽤 많은 업데이트를 했네요.
2-2. 기획의 변경
가벼운 마음으로 시작했지만 만들다 보니 점점 욕심이 생겼습니다.
‘대형 커뮤니티는 자유게시판이 기본이지!’
‘자유게시판이 있으면 인기글 탭도 있어야지'
‘이거이거 대박나서 돈방석 앉는거 아니야?!?’
목표는 어느새 대형 커뮤니티가 되어있었습니다.
욕망과 상상으로 기획을 하다보니 이런저런 기능들이 다 추가되었죠.
처음엔 자유게시판, 중고장터 같은 기능도 있었답니다.
하지만 이내 정신을 차리고 기획에 대해 고민했습니다.
유저를 모아야 하는 극초기 단계에서 다른 커뮤니티와 동일한 기능은 경쟁력이 없어 보였습니다.
고민 끝에 불필요한 기능이라고 판단하여 과감하게 지웠습니다.
(유저가 많이 모여서 이 기능들도 다시 추가하는 날이 오면 좋겠네요.)
대신 소소하게 게임 기록을 할 수 있도록 플레이로그 기능을 넣었습니다.
그리고 친구가 올린 최신 게임 기록을 확인할 수 있도록 했습니다.
2-3. 추천시스템을 위한 데이터 확보
추천시스템 역시 처음에는 최신 모델(SOTA 도전!)로 만들어야지 라며 큰 꿈을 품고,
Google Cloud Platform을 이용하여 서버를, Flask로 백엔드를 구현했습니다.
하지만 데이터가 많이 없기 때문에 최신 모델을 사용하는 것은 의미가 없었습니다.
간단하지만 효과적인 모델로 추천시스템을 만들고 앱 내에 내장시켰습니다.
제가 구현한 추천시스템은 ‘나와 비슷한 유저가 재미있게 했던 게임을 나에게 추천’해주는 방식입니다.
이를 위해서는 서비스를 위한 게임 데이터와 별도로,
유저의 성향을 파악하기 위한 데이터가 있어야 했습니다.
그래야 나와 비슷한 유저가 누구인지 알 수 있기 때문이죠.
유저 성향과 게임 성향을 파악하는 설문조사를 통해 데이터를 수집했습니다.
그리고 이 데이터를 기반으로 추천시스템을 만들었습니다.
현재 앱에서 추천을 위한 데이터 수집 과정은 위와 같이 구성되어 있습니다.
회원가입 시 재미있게 했던 게임을 선택하게 되고, 이를 기반으로 5개 게임을 추천합니다.
그리고 조금 더 다양한 추천을 원하는 사람은 18개의 질문을 통해 여러 장르의 게임을 10개 씩 추천을 받을 수 있습니다.
고도화된 추천시스템을 구현하기 위해서는 양질의 데이터가 많이 필요하기 때문에 위와 같이 구성했습니다.
향후엔 ‘넷플릭스’같이 간단한 선택만으로도 더 정확한 추천 서비스를 제공하는 것을 목표로 하고 있습니다.
2-4. 마침내.. 앱 출시
이런 앱을 앱스토어에 올리겠다고? 어림없지
앱스토어는 애플 로그인이 있어야 합니다.
커뮤니티 기능이 있다면, 신고하기와 차단하기 기능도 함께 있어야 합니다.
개인정보 보호를 위해 회원가입 시 성별 선택 칸에는 남자, 여자뿐만 아니라 선택안함 버튼도 있어야 합니다.
이러한 개발 가이드라인을 통해 ‘반죽 형태’의 서비스에서 ‘라면 받침대’ 정도의 기능을 가진 서비스로 다듬어졌습니다.
플레이스토어 출시는, 앱스토어에 먼저 올리고 그다음에 올려서 상대적으로 쉽게 통과됐습니다.
3. 앱 소개
개발 환경은 다음과 같습니다.
1인 개발자에겐 나름 괜찮은 선택지였던 것 같습니다.
Front-End : 안드로이드와 IOS 둘 다 출시해보고 싶어서 Flutter를 선택
DB : Firebase
Back-End : 추천시스템 알고리즘을 GCP에 올려서 운영하다가, 비용문제로 앱 내에 내장
페이지 구성은 다음과 같습니다.
보드게임추천
5개 테마의 게임 소개(AI 추천, 최근 친구가 한 게임, 새로나온 게임, Top 10, 전략 Top 10)
게임 찾기 기능
게임 디테일 페이지에 찜하기, 보관함, 리뷰쓰기 버튼
찜하기는 관심있거나 다음에 해보고 싶은 게임 선택
보관함은 실제 보유하고 있는 게임 선택(보관함에 있는 게임은 추천 목록에서 제외 됨)
플레이로그
친구찾기 페이지에서 친구 추가
글쓰기 페이지에서 글 공개/비공개 선택 및 친구목록에서 선택 가능
마이페이지
찜하기, 보관함 선택한 게임의 목록 확인
내가 작성한 공개/비공개 글 확인
4. 후기
앞으로의 개발 과제로는,
디자인을 뜯어고치고 반응형 UI 적용
근본 없는 디자인은 일단 죄송합니다.. 저도 앱 킬때마다 손이 부들부들 떨리고 시선 둘 곳을 찾지 못하는데요. 최우선 순위로 개선하고자 합니다.
UXUI 관점에서도 난해하다는 피드백을 많이 받았습니다. 열심히 수정해보겠습니다!
주변 보드게임 카페를 찾을 수 있도록 지도 기능 추가
사실 가장 먼저 들어갔어야 할 기본 기능 중 하나입니다. 하지만 외부 API를 이용해서 지도 기능을 이용하고 여기에 커스텀까지 하는 것은 초심자에게는 꽤 난이도가 높더라구요. 플레이로그 입력시 장소를 선택하는 기능과도 연결되기 때문에 우선순위로 두었습니다.
같이 게임하고 싶은 사람 찾기
추천과 기록 기능은 있는데 이게 의미가 있으려면 같이 할 사람이 있어야겠죠. 만약 유저가 어느정도 모인다면 다음 개발 기능은 이게 될 것 같네요.
기술 개발 관점으로는 오류 없이 (개인적으로) 만족할 만한 수준까지는 만들었다고 생각합니다만,
서비스 관점에서 보면 한없이 부족하다고 느껴지네요.
다음에 더 완성된 모습으로 찾아뵙도록 하겠습니다.
긴 글 읽어주셔서 감사합니다.
댓글
로그인 후 댓글을 남길 수 있습니다.
지수님 메이커로그가 이번주 뉴스레터에 소개되었어요 :) https://dis.qa/YnTjh