GitHub Copilot과 Claude를 활용한 Rails 여행 히트맵 웹 앱 구축 도전기

Vibe coding my first Rails app!

작성자
Ruby AI News
발행일
2025년 12월 24일

핵심 요약

  • 1 GitHub Copilot과 CodeSpaces를 활용하여 여행 방문 국가 히트맵 웹 앱을 구축하는 과정을 상세히 기록하며, 비개발자의 AI 기반 '바이브 코딩' 여정을 보여줍니다.
  • 2 초기 GPT-4.1 사용 중 겪은 한계와 Claude Sonnet 4.5로의 전환을 통해 개발 생산성이 크게 향상된 경험을 공유하며, AI 모델 선택의 중요성을 강조합니다.
  • 3 부정확한 지도 데이터셋 문제 해결(countries Gem 도입), 지도 클릭 및 검색 기능, 자동 저장, 공유 링크, 사용자 인증 구현 등 다양한 기능 개선 과정을 다룹니다.

도입

본 문서는 비개발자가 GitHub Copilot과 CodeSpaces 환경에서 첫 Rails 웹 애플리케이션을 구축하는 과정을 상세히 다룹니다. 이 프로젝트는 사용자가 방문한 국가와 방문 빈도를 시각적으로 표현하는 히트맵 기반의 세계 지도를 목표로 합니다. 초기 환경 설정부터 복잡한 데이터 처리 및 사용자 인터페이스 개선에 이르기까지, AI 기반 코딩(일명 '바이브 코딩')이 실제 개발 과정에서 어떤 도전과 해결책을 제시하는지 탐색합니다. 이 여정은 AI 도구의 잠재력과 함께 개발 과정에서 발생하는 예상치 못한 문제들을 극복하는 과정을 보여줍니다.

1. 초기 환경 설정 및 AI 도구 활용의 난관

Rails 앱 개발의 첫 단계는 GitHub 저장소 생성 및 CodeSpaces 환경 설정으로 시작되었습니다. 초기에는 Cursor와 같은 코드 편집 도구 사용을 시도했으나, 단일 모니터 환경 및 익숙지 않은 설정으로 인해 어려움을 겪었습니다. Ruby 및 Rails 설치 여부 확인 과정에서 Rails not found 오류가 발생했으며, Apple Command Line Developer Tools 설치 지연과 같은 기본적인 인프라 문제에 직면했습니다. GitHub Copilot(GPT-4.1 모델)을 활용하여 개발을 진행했으나, 느린 응답 속도와 반복적인 오류로 인해 개발 생산성이 저하되었습니다. 특히 토큰 사용량 제한으로 인해 Copilot Pro로 업그레이드해야 하는 상황이 발생했습니다.

2. Claude Sonnet 4.5로의 전환과 개발 가속화

Copilot Pro 업그레이드 이후에도 GPT-4.1 모델의 성능 한계를 체감하며, Claude Sonnet 4.5로 AI 모델을 전환했습니다. 이 결정은 개발 과정에 획기적인 변화를 가져왔습니다. Claude Sonnet 4.5는 훨씬 빠른 응답 속도와 정확한 문제 해결 능력을 보여주었으며, 이는 이전에 몇 시간 동안 해결하지 못했던 문제들을 신속하게 처리하는 데 결정적인 역할을 했습니다. 이 전환은 AI 기반 개발에서 적절한 도구 선택이 얼마나 중요한지 명확히 보여주었습니다.

3. 지도 데이터셋 및 UX 개선

초기에는 지도 데이터셋의 불완전성으로 인해 많은 문제가 발생했습니다. 예를 들어, 프랑스령 기아나가 프랑스의 일부로 표시되거나, 싱가포르가 목록에 없거나 중복되는 등의 오류가 있었습니다. 이를 해결하기 위해 countries Gem을 도입하여 정확하고 포괄적인 국가 목록 및 ISO 코드를 확보하고, 데이터베이스를 정리하고 재시딩하는 과정을 거쳤습니다. 이와 함께 사용자 경험(UX) 개선을 위한 다양한 기능이 구현되었습니다:

  • 기본 지도 시각화: 사용자가 방문 국가를 선택하면 지도에 색상으로 표시됩니다.

  • 지도 클릭 기능: 지도상의 국가를 직접 클릭하여 방문 여부를 토글할 수 있는 기능이 추가되었습니다.

  • 국가 검색 및 목록 정렬: 방대한 국가 목록에서 특정 국가를 쉽게 찾을 수 있도록 검색 기능과 알파벳순 정렬이 적용되었습니다.

  • 자동 저장: 사용자의 변경 사항이 자동으로 저장되도록 하여 편의성을 높였습니다.

4. 히트맵 및 공유 기능 구현

앱의 핵심 목표인 히트맵 기능은 방문 횟수에 따라 국가의 색상이 차가운 색(방문 횟수 적음)에서 뜨거운 색(방문 횟수 많음)으로 변화하는 그라데이션 방식으로 구현되었습니다. 또한, 마우스 오버 시 방문 횟수를 표시하는 호버 효과가 추가되어 시각적 정보를 강화했습니다. 사용자가 자신의 방문 기록 지도를 다른 사람들과 공유할 수 있도록 공유 링크 생성 기능도 구현되었습니다. 초기에는 URL에 모든 데이터를 인코딩하는 방식이었으나, 이후 데이터베이스 기반의 동적 업데이트 방식으로 전환하여 공유된 지도가 항상 최신 상태를 유지하도록 개선했습니다.

5. 다중 사용자 인증 시스템 도입

앱을 다중 사용자 환경으로 확장하기 위해 Devise Gem을 활용한 사용자 인증 시스템이 도입되었습니다. 이를 통해 사용자 가입, 로그인, 로그아웃, 비밀번호 재설정 등 기본적인 인증 기능이 추가되었으며, 각 사용자가 독립적인 여행 데이터를 관리할 수 있도록 데이터베이스 구조가 조정되었습니다. 모든 지도 작업은 현재 로그인한 사용자의 범위 내에서 이루어지도록 컨트롤러 로직이 업데이트되어 데이터 프라이버시가 보장됩니다. 최종적으로 Render.com을 통한 배포 가능성을 염두에 둔 설정 작업도 진행되었습니다.

결론

총 6시간에 걸친 Rails 앱 구축 여정은 비개발자가 AI 도구의 강력한 지원을 받아 복잡한 웹 애플리케이션을 개발할 수 있음을 입증했습니다. 특히 Claude Sonnet 4.5로의 AI 모델 전환은 개발 생산성을 극대화하는 데 결정적인 역할을 했으며, `countries` Gem 및 Devise Gem과 같은 Ruby 생태계의 풍부한 자원 활용은 기능 구현의 효율성을 높였습니다. 초기 환경 설정의 어려움과 데이터셋 문제 해결 과정은 AI 기반 코딩이 만능이 아님을 보여주지만, 동시에 체계적인 접근과 적절한 도구 선택을 통해 비전문가도 상당한 수준의 결과물을 만들어낼 수 있음을 시사합니다. 이 프로젝트는 향후 배포 및 추가 기능 구현의 가능성을 열어두며, AI와 인간의 협업 개발 모델에 대한 중요한 통찰을 제공합니다.

댓글 0

로그인이 필요합니다

댓글을 작성하거나 대화에 참여하려면 로그인이 필요합니다.

로그인 하러 가기

아직 댓글이 없습니다

첫 번째 댓글을 작성해보세요!