이거 줘도 돼? 프로젝트 후기
- 2025.07~08(약 1달) 간 진행
- Flutter / Supabase
- AppStore 출시 완료 / Play Store 심사 반려
1인 앱 개발을 하면 할수록 iOS와 Android 진영 모두를 고려해야 한다는 생각이 자연스레 커졌습니다. 서버를 필요로 하지 않는 앱이라면 웬만한 iOS 앱은 어느 정도 뚝딱(?) 만들 수 있을 거라는 근거 없는 자신감은 있지만, Android 앱 개발은 제게 암묵지와도 같았습니다.
그렇다고 Android 앱 개발을 배우기엔 결국 양쪽 플랫폼 모두 2번 개발해야 하잖아,,,?라는 생각에 엄두가 나지 않기도 했었습니다.(그럴 거면 iOS만 하지!) 이런 상황 속에서 제 눈에 들어온 것은 하이브리드 앱 개발이었습니다. 대표적으로 Flutter와 Reactive Native가 있었는데 저는 Flutter를 이용해 하이브리드 앱 개발에 입문해 보기로 결정했습니다.
왜 Flutter를 선택했을까?
사실 처음엔 RN이 더 끌리긴 했었습니다. 앱 운영에 가장 어려운 부분을 해소시켜 줄 수도 있는 코드 푸시 기능이라던가, TypeScript를 이용해 웹 개발까지 기대해 볼 수 있기 때문이었습니다. 하지만 Flutter를 선택한 가장 큰 이유는, '일단 해보자'의 마음이 더 컸기 때문입니다. 저는 아직 Android나 하이브리드 앱 개발 경험이 없었기 때문에 어느 정도 빠르고 익숙한 방법이 필요했습니다.
Flutter는 SwiftUI와 닮아있는 부분이 많았습니다. 계층 구조의 순서와 선언만 조금 다른 느낌이었지, 큰 틀은 비슷해 보여 직감적으로 코드를 파악할 수 있었습니다. 이 덕분에 일단 시작해 보기에는 Flutter의 진입 장벽이 더 낮았다고 느낀 것 같습니다.
초간단 미니 프로젝트로 입문하기
이번 프로젝트의 최우선 목표는 하이브리드 앱 개발 경험이었기 때문에 이를 쉽고 빠르게 PoC 해보는 것이 중요했습니다. 이를 발판 삼아 Flutter를 더 공부할지, RN을 새로 도전해 볼지, iOS에만 집중할지 감을 잡을 수 있을 거라 생각했습니다.
그래서 프로젝트 기획은 정말 간단하게 진행했습니다. 예전부터 민톨이에게 새로운 음식을 줄 때마다 인터넷에 검색해 보는 과정이 귀찮고 불편했는데 이를 간단한 플로우로 만들어줄 수 있는 서비스를 기획했습니다.(막 광고 뜨고 쓸데없는 말 많은 그런 상황을 해결해 줄 수 있는 앱? 느낌을 상상했어요)
화면도 3개밖에 없는 초간단 서비스로, 약 2시간 정도 Figma로 UI 디자인을 진행한 후 곧바로 코딩에 돌입했습니다.
이젠 나도 한번 해보자, 바이브 코딩 with Claude
하이브리드 앱 개발 도전에 더 큰 힘을 실어준 건 '바이브코딩'의 존재였습니다. 최근 주변에서 코드 한 줄 안치고 앱을 만들었다라던가, 누구든 할 수 있는 바이브코딩 등의 문구들을 보며 언젠가 나도 한번 해봐야지,,,라고 생각하고 있었는데 이번이 적기라고 생각했습니다. 어느 정도 성능인지 감도 안 잡히고, 모르는 영역을 새로 배우듯이 시작해 보자!라는 마인드로 도전했죠.
생성형 AI 도구는 Claude를 선택했습니다. 최근 가장 핫한 AI기도 하고, 사내에서도 클로드 코드의 칭찬을 몇 번 들었던지라 별 고민 없이 가장 저렴한 Pro 플랜을 구매해 시작했습니다. GPT한테 질문 용도로만 사용하던 제가 처음으로 AI에게 마음을 열었던 순간이 아닐까 싶습니다. (아마 많은 개발자들이 그랬듯이 저도 처음엔 AI가 미웠으니까요)
그렇게 사용해 본 클로드 코드는,,, 정말 말도 안 된다고 생각했습니다. 아니 정확히는, 이제 이걸 제대로 사용하지 못하면 절대 안 되겠구나라고 생각했습니다. 클로드가 생성해 주는 코드들의 퀄리티는 Flutter를 모르는 제가 봐도 엄청 잘 구현되었다!처럼 보이진 않았지만, 제 이상한 인풋으로 그럴듯한 아웃풋을 내는 것부터가 충격이었죠.
덕분에 약 98%의 코드는 Claude가 작성해 준 것 같습니다. 예를 들어, '가족과 공유하기 버튼을 화면 가운데 아래에 배치하고, 이를 탭할 시 각 플랫폼에 맞는 공유 Sheet를 띄워주는 기능을 구현해'와 같은 채팅으로 대부분의 기능을 구현했습니다. 나머지 2%도 충분히 클로드에게 요구할 수 있는 부분이었지만, 토큰을 아끼고자 직접 간단한 레이아웃 조정 등을 진행한 내용이었습니다.
요구사항을 정확히 정의하고 프로젝트의 맥락을 입혀 인풋을 더 정교하게 깎아낼 수 있다면 분명 훨씬 좋은 아웃풋을 얻을 수 있을 것이란 확신이 들었습니다. 클로드를 사용하는 내내 개발자의 본질(문제 해결자)에 대해 더욱 깊게 고민하게 되었던 것 같습니다.
Tip) 클로드에서 가장 많이 활용한 기능!
- CLAUDE.md 파일에 프로젝트 요구사항 정리해 놓기
- `/commit`, `/insert` 등 커스텀 명령어 만들고 사용하기
- Shift + Tab을 이용한 적절한 모드 전환(일반, 편집, 계획 모드)
- @를 이용한 파일 지정
Supabase를 이용한 DB 구축, 그리고 자동화
처음에는 서비스에서 필요한 반려동물 음식 안전 정보 데이터를 디바이스 내 저장할 수 있도록 구현할까 생각했었습니다. 하이브리드 앱 개발 경험이 목적이었기 때문에, 굳이 서버를 신경 쓰지 말자가 기조였기 때문이었습니다.
하지만 클로드를 사용하며 Supabase MCP의 존재를 알게 되었고 이를 활용해보고자 했습니다. 붙이는 과정도 정말 간단했고 데이터 스키마를 텍스트로 알려주니,,, 테이블 구조부터 API 연결까지도 다 해버리더군요.
여기서 더 나아가, `/insert`라는 커스텀 클로드 명령어를 만들어 `/insert 사과`와 같이 입력하면 강아지, 고양이에 대한 사과 음식 정보를 구조적으로 정리해 Supabase 테이블에 추가할 수 있도록 자동화 시스템을 구축했습니다. 물론 이 과정도 모두 클로드의 도움을 받아 진행했고, 제가 신경 쓴 부분이라면 해당 정보가 맞는지 더블 체크하는 것뿐이었습니다.
Play Store 배포를 위한 과정들
이렇게 개발한 프로젝트를 배포하는 것 까지가 PoC기 때문에 어느 정도 개발을 마친 후 배포 프로세스를 진행했습니다. App Store 배포 경험은 이제 7번 정도 진행해 보니 어느 정도 감이 있었지만, Play Store는 한 번도 경험해보지 못했습니다. 처음 앱스토어 배포 때는 생각보다 순조롭게 진행되었기 때문에 구글도 뭐 비슷할 거라 생각했었지만,,,, 그것은 크나큰 오산시였습니다.
우선 구글 개발자 계정 가입은 산뜻했습니다. 앱스토어는 1년마다 친구비를 내야 하지만, 플레이 스토어는 1회성 친구비라 부담이 훨씬 덜했거든요! 어차피 앞으로 평생 구글 개발자 계정 쓸 거라고 생각하니 합리적이라는 생각도 들었습니다.
이후에는 개발자 인증을 위해 주민등록등본을 제출하고,,,? 이상한 질문들에 답하고, 당근에서 중고 안드로이드 폰을 사는 등 우여곡절이 있었지만 그뿐이라고 생각했었습니다.
하지만 문제는 비공개 테스트였습니다. 지나가듯이 Play Store 앱 배포가 엄청 까다로워졌다 정도로 듣긴 했었지만 그 조건이 생각보다 훨씬 더 어려웠습니다. 14일간 최소 12명 이상의 테스터들에게 비공개 테스트를 받아야 한다는 내용인데, 제게는 사람 모으는 것부터가 일이었습니다. 그도 그럴 것이 제 주변엔 온통 아이폰을 사용하시는 분이 대부분이기 때문이죠.
결국 이것저것 검색해 보다 서로 상부상조하는 안드로이드 비공개 테스트 품앗이 네이버 카페를 찾아 가입 후, 힘들게 테스터를 모을 수 있었습니다. 최소 12명 이상이고 그중 한 명이라도 이탈 시 날짜가 초기화되는 쉽지 않은 시스템이었기 때문에, 넉넉히 20명 정도를 모아 겨우 2주를 채울 수 있었습니다.
하지만,,, 제가 여전히 너무 쉽게 생각했기 때문이었을까요 ㅜ 프로덕션 앱 심사에 반려를 당하고 말았습니다. 정확한 사유는 표시되지 않으나, 검색해 보기로는 테스트 기간 중 앱을 추가로 더 업데이트해야 함 + 심사 내용을 더 꼼꼼히 적었어야 하는 것으로 예상하고 있습니다.
더군다나 이렇게 한번 리젝을 당하면 비공개 테스트 기간이 초기화,,,, 되어버리기 때문에 길게는 몇 달씩이나 배포에 씨름을 할 수 있으니 처음부터 반려당하지 않도록 만반의 준비를 해두는 것이 중요하다고 합니다.(이를 위한 사설 업체가 있을 정도니,,,)
프로젝트 회고
원래는 멋지게 Play Store 배포까지 완료 후 회고를 작성하고 싶었습니다. 하지만 앞으로 최소 2주, 아니면 그 이상 씩 걸릴 수도 있음을 대비해 기억이 휘발되기 전에 회고가 필요했습니다.
이번 프로젝트는 앞으로 어떤 방향성으로 나아가면 좋을지에 대한 힌트를 제공해 주었습니다. 제가 디자인, 그리고 개발을 시작했던 이유는 '무언가를 만들기 위해서'였고, AI는 새로운 가능성을 제시했습니다. 어떻게 만들지? 의 관점에서 어떤 걸 만들지? 에 더욱 집중할 수 있게 해 줄 수 있는 도구로, 창작자의 입장에서 이런 도구를 활용하지 않을 이유는 없겠죠.
하지만 결국 문제를 정의하고 주체적으로 움직이는 것은 사람, 즉 '나'이기 때문에 이를 뒷받침할 개인의 경험과 지혜는 더욱 중요해질 것이라 생각합니다. 어떤 AI도 대체하지 못할 '나'라는 사람을 브랜딩 하고 성장시켜 나가는 것이 어찌 보면 AI를 도구로서 가장 잘 활용할 수 있는 사람이 아닐까 싶습니다.
앞으로 기술에 대해 공부하는 것 만큼이나 '나' 자신을 가꿀 수 있는 방법에 대해 더 고민해보려 합니다. 내가 만들고 싶었던, 실현하고 싶었던, 바라고 있던 무언가를 위한 방법에 대한 힌트는 얻었으니 이제는 그게 무엇인지 더 확실히 정의해야 할 테니까요!
'프로젝트 일지' 카테고리의 다른 글
데이블럭 회고 - 하루 24개의 블럭을 가치있게 쌓아나가는 방법 (0) | 2025.03.09 |
---|---|
캐플 리팩토링 네 번째 이야기 - Repository 모듈 만들기 (0) | 2025.02.24 |
스쿱 트러블 슈팅 - 음악 추정 시간으로 정확도 개선하기 (1) | 2025.02.17 |
스쿱 트러블 슈팅 - API로부터 도메인을 안전하게 지키기 (1) | 2025.02.17 |
스쿱 트러블 슈팅 - 유연하고 구조적인 정규표현식 만들기 (0) | 2025.02.17 |