회원님들, 안녕하세요:)
지난번 영어 리스닝 앱 관련 글에서 정말 많은 분이 응원해 주시고, 또 실제로 앱을 다운로드해 주셔서 큰 힘이 되었습니다. 이에 보답하는 마음으로, 어설프지만 제가 그동안 클로드 코드(Claude Code)로 iOS 앱을 개발하며 알게 된 지식과 소소한 팁을 공유해 보려고 합니다.
왜 iOS인가?
사실 바이브 코딩으로 가장 구현하기 쉬운 플랫폼은 웹(Web)인 것 같습니다. 물론 웹도 깊이 들어갈수록 알아야 할 게 한두 가지가 아니지만, 당장 무언가를 만들어 배포하기에는 웹만 한 게 없죠. Vercel + Supabase 조합은 정말 쉽고 강력하니까요.
그럼에도 제가 iOS를 선택한 이유는 제가 매일 사용하는 아이폰과 맥북에서 필요한 것들을 직접 만들고 싶었기 때문입니다. 애초에는 출시나 수익화 같은 건 상상도 못 했는데, 만들고 보니 욕심이 생겨 배포도 해보고, 광고도 붙여보며 여기까지 오게 되었네요. ^^
XCode
저는 전문 개발자는 아니지만 컴퓨터로 무언가 만드는 것을 좋아해 VS Code는 자주 사용해 왔습니다. AI 등장 이후에는 주로 Cursor를 썼는데, 애플 생태계에는 Xcode라는 무시무시한(?) 놈이 버티고 있더군요.
개발할 때 이것저것 패키지를 설치하는 건 당연한 일이지만, Xcode는 유난히 뭐 하나만 설치해도 무겁게 느껴지고 설정도 훨씬 복잡해 보였습니다. 하지만 클로드 코드에게 시키면 대부분의 세팅은 알아서 다 해줍니다. 반드시 Xcode를 켜고 수동으로 설정해야 하는 부분도 클로드 코드가 친절하게 알려주어 어렵지 않게 세팅할 수 있었습니다.
Simulator
앱을 구현하고 테스트할 때 실기기를 연결해도 되지만, 시뮬레이터(Simulator)를 사용해 간단히 테스트할 때가 많습니다. 매번 컴파일을 해줘야 해서 처음에는 굉장히 귀찮았지만 곧 적응되더군요.
특히 클로드 코드가 시뮬레이터 조작을 생각보다 아주 잘합니다. 알아서 코드를 짜고 시뮬레이터로 End-to-End 테스트까지 직접 처리할 수 있을 정도입니다. 물론 실제로 시뮬레이터를 조작하게 할지, 아니면 로직/유닛 테스트만 돌릴지는 상황에 따라 잘 판단해야 합니다. 저 같은 경우, 외출할 때 클로드 코드의 Remote-control을 켜두고 큰 작업을 처음부터 끝까지 알아서 하도록 위임하곤 했습니다.
Swift-Pro 플러그인/스킬
제아무리 클로드 코드라도 최신 Swift 문법과 디자인 패턴을 속속들이 알고 있지는 못합니다. LLM이 가장 많이 하는 실수가 바로 '철 지난 과거 문법이나 API'를 사용하는 것인데요. 이를 방지하기 위해 Swift-pro라는 스킬을 설치하면 코딩 쪽은 사실상 걱정이 없어지는 수준이 됩니다.
링크: https://github.com/twostraws/swift-agent-skills
자체 검증 루프
저는 대략 다음과 같은 방식으로 명령을 내렸습니다.
"A 기능 구현하고, 회귀 테스트 통과하면 커밋 후 푸시해줘."
"B 플랜 구현한 뒤에 풀 테스트 돌려줘. 실패하면 수정 후 다시 테스트하고, 이 이터레이션이 완전히 종료되면 커밋 후 푸시해."
상황에 따라 디테일은 달라지지만, 중요한 건 클로드 코드가 스스로 검증하고 보완하는 '루프'를 만들어 주는 것입니다. 이렇게 하면 대부분의 작업이 성공적으로 완료됩니다.
Apple Developer Program
본격적으로 애플 생태계에서 놀려면 매년 $99를 내고 개발자 프로그램을 구독해야 합니다. 개발이 본업이 아니다 보니 한 번에 내기에 다소 부담스러운 가격이긴 합니다. 하지만 역으로 '본전 생각'이 나서 뭐라도 계속 만들게 되는 원동력이 되기도 합니다. 😂 안드로이드와 달리 개발자 계정만 있으면 번거로운 테스터 모집 없이도 곧바로 앱스토어 배포가 가능하므로, '서버 유지비'라 생각하면 납득할 만한 수준입니다.
App Store Connect (ASC)
멋지게 앱을 완성했다면 이제 앱스토어 커넥트(ASC)를 통해 배포해야 합니다. 이 과정이 참 손이 많이 가고 귀찮은데요. 특히 스크린샷을 찍고 이미지를 편집하는 게 일입니다.
사실 앱스토어 이미지 에셋은 규격 크기만 잘 맞추면 됩니다. 그래서 저는 Figma 기본 기능만 살짝 익힌 뒤, 필수 사이즈 에셋 템플릿을 만들어 두고 시뮬레이터 스크린샷에 간단한 문구만 추가하는 방식으로 작업했습니다. 막상 해보면 디자인 자체보다 '무슨 문구를 넣을지, 화면을 어떻게 구성할지' 고민하는 데 시간이 훠~~~~얼씬 더 많이 듭니다. (지금도 딱히 마음에 들지는 않네요 ㅜㅜ)
그리고 앱 메타데이터 입력할 때 일일이 Ctrl+C, Ctrl+V 하지 마세요. ASC API를 사용하면 클로드 코드가 알아서 다 입력해 줍니다. 저는 엑셀에 미리 내용을 정리해 두고, 그걸 그대로 ASC에 입력하도록 별도의 스킬을 만들어 사용 중입니다.
심지어 엑셀 내용도 클로드 코드에게 채우라고 지시합니다. 다만 한국어의 경우 어색한 부분이 많아 제가 직접 다듬고, 타국어는 여러 번 루프를 돌리며 완성도를 높입니다.
*여기서 깨알 팁: 그냥 "다듬어줘"라고 하기보다 특정한 기준과 점수를 줄 때 일을 훨씬 잘합니다. 예를 들어 "언어의 자연스러움, 간결함, 앱스토어 최적화(ASO) 기준에 따라 네가 작성한 메타데이터를 10점 만점으로 평가해 봐"라고 지시한 후, 점수를 보고 추가 개선을 요구하는 식입니다.
결국 병목은 나,
위 방식으로 작업했을 때, 시간이 오래 걸릴지언정 원하는 기능을 구현하지 못한 경우는 거의 없었습니다. 막히더라도 리서치를 하다 보면 결국 답이 나오더라고요.
그렇다면 무엇이 가장 어려웠을까요? 결국 저의 기획력과 판단력이었습니다. 개발을 하다 보면 최초 기획과 달리 삼천포로 빠지기도 하고, 자잘한 기능에 집착하다 진도가 안 나가기도 하며, 방향을 못 잡아 갈팡질팡 시간을 허비할 때가 많았습니다. 내 머릿속에 명확한 방향성과 구상만 있다면 클로드 코드의 도움을 받아 정말 빠른 속도로 개발할 수 있다는 것을 느꼈습니다.
개인적인 클로드 코드 사용 노하우 요약
- 문서 구조화 (claude.md 활용)
•claude.md파일에는 안드레이 카파시의 AI 코딩 4대 원칙 같은 가장 핵심적인 규칙만 넣습니다.
• 그 외 구체적인 정보는architecture.md,test-plan.md,monetization-plan.md등 별도 파일로 쪼개어 관리하고,claude.md에서는 이를 참조만 하게 합니다. - 주기적인 코드 리뷰와 리팩토링
• 저는 Swift 코드를 전혀 볼 줄 모르는 까막눈(?)이라 더 불안했습니다. 그래서 기술 부채가 쌓이지 않도록 수시로 코드 리뷰와 리팩토링을 진행해 클린한 상태를 유지했습니다. 덕분에 기능이 계속 추가되어도 버그가 거의 발생하지 않았습니다. - 효율적인 테스트 전략
• 코드가 바뀌면 테스트 케이스도 반드시 업데이트해 줍니다. 단, 모든 것을 E2E(End-to-End)로 돌리거나 단순 UI 확인을 위해 시뮬레이터를 띄우는 건 리소스 낭비입니다. 어떤 부분에 어떤 테스트(단위 테스트 등)를 적용할지 명확히 구분해야 합니다. - 반복 작업은 '스킬'이나 '/' 명령어화
• TestFlight 배포, 코드 리뷰, 테스트 진행 등 반복되는 패턴은 모두 나만의 스킬이나 명령어로 등록해 사용하세요. 타이핑 피로도를 크게 줄일 수 있습니다.
간단히 쓰려고 했는데 적다 보니 할 말이 정말 많아졌네요. 바이브 코딩으로 앱 개발에 도전해보고 싶으신 분들에게 조금이나마 도움이 되었으면 좋겠습니다. 다만 제 개인적인 경험과 사견이 강하게 들어간 글이니 가볍게 참고만 해주시면 감사하겠습니다.
제가 만든 앱들은 아래 링크에서 확인하실 수 있습니다. 관심 있으신 분들은 한 번 사용해 보시고 따뜻한 리뷰나 피드백 남겨주시면 정말 큰 힘이 될 것 같습니다! 감사합니다. 😊