바이브코딩? 앞으로 계속 할거같아요... 2탄
안녕하세요, 글에 자신이 없어서 아래 내용은 전달할 내용을 GPT가 정리해준 내용입니다.
이전에 GPT, Claude, Codex를 이용해서 개발해봤다는 글을 쓴 적이 있습니다.
이번에는 그 연장선으로 Android 앱을 하나 더 만들어봤습니다.
## 이번에 만든 앱
이번에 만든 앱은 개인용 맛집지도 앱입니다.
내가 다녀온 식당이나 가고 싶은 곳을 지도에 저장하고, 나중에 지역별로 다시 찾아볼 수 있는 앱입니다.
들어간 기능은 대략 이렇습니다.
* 지도 표시
* 현재 위치 이동
* 장소 검색으로 새 맛집 추가
* 지도에서 위치 선택 후 저장
* 저장한 맛집을 마커로 표시
* 마커 누르면 하단에 가게 정보 표시
* 지역 필터
* 저장한 맛집 검색
* 최근 추가 / 평점 높은 순 같은 빠른 필터
* 목록 화면
* 수정 / 삭제
* Room DB 로컬 저장
서버는 없습니다.
로그인도 없습니다.
동기화도 없습니다.
광고도 없습니다.
결제도 없습니다.
그냥 제가 원하는 작은 앱을 실제 폰에 설치해서 써보는 게 목표였습니다.
## GPT와 Codex를 어떻게 썼냐면
이번에도 GPT와 Codex의 역할이 좀 나뉘었습니다.
GPT는 주로 설명해주는 사람처럼 썼습니다.
예를 들면 이런 것들을 물어봤습니다.
* 지도는 되는데 장소 검색은 왜 안 되지?
* Maps SDK랑 Places API는 뭐가 다른 거지?
* Google Cloud Console에서 뭘 켜야 하지?
* Play Console에 AAB 올렸는데 왜 지도만 안 나오지?
* SHA-1은 왜 여러 개가 필요하지?
* 개인정보처리방침에는 뭘 써야 하지?
* 스토어 등록정보 문구는 어떻게 쓰면 좋지?
반대로 Codex는 실제 작업자처럼 썼습니다.
프로젝트를 읽게 하고,
어느 파일을 고쳐야 하는지 찾게 하고,
ViewModel 상태를 정리하게 하고,
UI를 수정하게 하고,
Play 배포용 설정 문서까지 만들게 했습니다.
제가 한 일은 직접 Android 코드를 다 짜는 것보다는,
요구사항을 정리하고, 이상한 결과를 다시 지적하고, 실제 폰에서 눌러보고, 변경 파일을 확인하는 쪽에 가까웠습니다.
## 생각보다 헷갈렸던 Google 지도 쪽
이번에 제일 헷갈렸던 것 중 하나가 Google 지도 관련 설정이었습니다.
지도 자체를 띄우고, 마커 찍고, 카메라 이동하는 건 Maps SDK for Android 쪽이고,
식당 이름을 검색해서 장소 후보를 찾고, 주소와 위도/경도를 가져오는 건 Places API 쪽이었습니다.
그리고 여기서 또 헷갈렸던 게 Places API (New) 였습니다.
저는 Google Cloud Console에서 Places API (New) 라고 붙은 항목을 체크해놨는데,
Codex가 처음에는 이걸 제대로 인식하지 못하고 예전 Places 방식으로 코드를 만들어줬습니다.
그래서 검색창은 열리는데,
뭔가를 입력하면 아래 후보 목록이 나와야 할 부분에서 계속 오류가 났습니다.
처음엔 API Key 문제인가, 권한 문제인가, SHA-1 문제인가 싶어서 계속 확인했습니다.
그런데 지도는 잘 뜨고 있었고,
Google Cloud 설정도 하나씩 확인해보니 큰 문제는 없어 보였습니다.
결국 로그를 보고 원인을 좁혀가다 보니,
제가 켜둔 건 Places API (New) 인데 코드 쪽은 예전 방식으로 되어 있던 게 문제였습니다.
그제서야 Codex에게 다시 말했습니다.
“이거 Places API (New) 기준으로 봐야 한다. 예전 방식으로 만들면 안 된다.”
그 뒤에 초기화 방식과 호출 방식을 New 기준으로 다시 맞추니 장소 검색이 정상적으로 동작했습니다.
이때 느낀 게, AI가 빠르게 만들어주긴 하지만
외부 API처럼 버전이 갈리는 영역에서는 사람이 조건을 명확히 줘야 한다는 점이었습니다.
그냥 “장소 검색 넣어줘”가 아니라
“Places API (New)를 사용한다”라고 정확히 말해야 했습니다.
정리하면 이랬습니다.
- 지도 표시: Maps SDK for Android
- 장소 검색: Places API (New)
- 앱 내부 검색: 내가 저장한 Room DB에서 검색
이걸 나누고 나니 앱 구조도 훨씬 이해하기 쉬워졌습니다.
결국 정리하면 이랬습니다.
## 앱보다 어려웠던 건 Play Console이었습니다
앱 화면 만드는 것보다 더 어려웠던 건 오히려 배포 쪽이었습니다.
로컬에서 실행하면 지도가 잘 나옵니다.
APK로 만들어서 설치해도 잘 나옵니다.
그런데 Play Console에 AAB로 올리고 Play에서 설치하니까 지도가 안 나왔습니다.
처음에는 코드 문제인 줄 알았습니다.
그런데 알고 보니 Google Cloud API Key 제한 문제였습니다.
Android Studio에서 실행한 앱은 debug SHA-1,
내가 만든 release 파일은 upload key SHA-1,
Play Store에서 설치되는 앱은 Play App Signing SHA-1을 쓴다고 하더라고요.
이걸 몰라서 Play 설치본에서만 지도가 막힌 거였습니다.
Google Cloud Console에 패키지명과 SHA-1을 추가해줘야 하는데,
저는 Play App Signing 쪽 SHA-1을 안 넣고 있었던 겁니다.
## 이번에 느낀 점
이전에는 사실 로그를 볼 일이 거의 없었습니다.
Codex에게 만들라고 하고, APK 받아서 설치해보고, 화면에서 이상한 부분이 있으면 다시 고쳐달라고 하는 식으로도 어느 정도 됐습니다.
그런데 API를 붙이기 시작하니까 그 방식만으로는 한계가 오더라고요.
이건 화면만 보고는 원인을 알 수가 없었습니다.
그래서 결국 무선 디버깅까지 시도했습니다.
처음에는 본폰으로 연결하려고 했는데, 삼성 보안 위험 자동 차단 때문에 계속 막혔습니다.
USB 디버깅도 막히고, 무선 페어링도 잘 안 되고, 이쪽도 생각보다 쉽지 않더라고요.
그러다 공기계에서 보안 차단을 풀고 다시 해보니 바로 연결됐습니다.
ADB로 연결하고 Logcat을 볼 수 있게 되니까 그때부터는 훨씬 수월했습니다.
재밌었던 건, 제가 로그를 완전히 다 분석하지 않아도 된다는 점이었습니다.
로그 내용을 Codex에게 넘기니까,
어느 부분이 API 문제인지,
어느 부분이 코드 초기화 문제인지,
어느 부분이 SHA-1 문제인지
알아서 꽤 잘 좁혀줬습니다.
로컬 화면 기능만 만들 때는 APK만 받아서 확인해도 되지만,
API 연동이나 Play 배포처럼 외부 환경이 들어가는 순간부터는 로그가 거의 필수였습니다.
그리고 로그만 확보되면, 그 다음 분석과 수정 방향도 AI에게 꽤 많이 맡길 수 있었습니다.
다음에는 Google Cloud에 간단한 API 서버를 하나 올려서 앱과 연동해보거나, 다른 외부 API들도 이것저것 써볼 생각입니다.
다만 앱을 두 개 정도 만들고 나니 아이디어가 살짝 바닥났습니다.
혹시 개인 개발자가 가볍게 만들어보기 좋은 앱이나, GPT/Codex로 실험해볼 만한 API 연동 아이디어가 있으면 추천 부탁드립니다.
아직 테스터는 4명이지만, 언젠가 12명을 채워 정식 오픈하는 그날까지 천천히 해보겠습니다.
댓글을 남기려면 로그인이 필요합니다.
로그인 후 이 페이지로 돌아와 바로 댓글을 남길 수 있습니다.