Claude AI와 함께하는 Ruby on Rails 팟캐스트 및 비디오 쇼 디렉토리 앱 개발 시작

Building a podcast directory in Rails with an AI assistant

작성자
thoughtbot Youtube
발행일
2025년 12월 04일

핵심 요약

  • 1 Thoughtbot 개발자들이 Claude AI를 활용하여 Ruby on Rails 기반 팟캐스트 및 비디오 쇼 디렉토리 애플리케이션 개발을 시작했습니다.
  • 2 TDD(테스트 주도 개발) 원칙에 따라 작은 단위로 기능을 구현하고, AI의 코드 생성을 개발자가 검토하며 통제하는 과정을 시연했습니다.
  • 3 Thoughtbot의 Suspenders Gem으로 Rails 앱을 초기 설정하고, Rue CSS 프레임워크를 도입하여 초기 스타일링 및 UI 컴포넌트를 구현했습니다.

도입

Thoughtbot의 CEO이자 개발자인 Chad Pitel과 선임 디자이너 Moses Samama가 'Thbots AI and Focus' 쇼에서 새로운 프로젝트를 시작했습니다. 이 프로젝트는 팟캐스트 및 비디오 쇼를 위한 현대적인 디렉토리 플랫폼을 구축하는 것으로, 사용자들이 새로운 쇼를 발견하고, 좋아하는 쇼를 팔로우하며, 다른 사람들과 공유할 수 있도록 돕는 것을 목표로 합니다. 현재 시장에는 특정 틈새시장에 초점을 맞춘 효과적인 디렉토리가 부족하다는 문제 의식에서 출발했으며, Claude AI를 활용하여 TDD 방식으로 애플리케이션의 기반을 다지는 과정을 시연합니다.

프로젝트 개요 및 목표

이 디렉토리 플랫폼은 사용자가 창의적인 콘텐츠, 쇼, 스토리, 크리에이터를 찾고, 팔로우하며, 소통할 수 있는 개인적이고 신뢰할 수 있으며 감성적인 공간을 제공하는 것을 지향합니다. 특히, 콘텐츠 발견이 어려운 특정 틈새시장에 집중하여 입소문이나 소셜 미디어 의존도를 줄이고 체계적인 발견 경험을 제공하고자 합니다.

개발 환경 설정 및 AI 활용

개발은 Ruby on Rails를 기반으로 하며, Thoughtbot의 opinionated Rails 템플릿인 Suspenders Gem을 사용하여 애플리케이션을 초기 생성했습니다. Claude AI에게 프로젝트의 목표, 기능 목록, Thoughtbot의 코딩 컨벤션(예: RESTful 라우팅, 클래스 선호, PostgreSQL, Hotwire 사용)을 담은 Claude.md 파일을 제공하여 개발 컨텍스트를 구축했습니다. 특히, TDD(Test-Driven Development) 원칙을 철저히 준수하여 RSpec과 FactoryBot을 사용하고, AI가 생성하는 코드를 개발자가 지속적으로 검토하고 승인함으로써 개발 프로세스에 대한 통제력을 유지합니다.

초기 기능 구현: Show 모델

첫 번째 목표는 ‘Show’ 모델을 도입하고 기본적인 CRUD(생성, 읽기) 기능을 구현하는 것이었습니다. Show는 제목, 설명, 배너 이미지, 썸네일 이미지를 가지며, 에피소드는 선택적으로 시즌으로 구성될 수 있습니다. 초기 단계에서는 ‘제목’만 가진 Show 모델을 먼저 구현하기로 결정했습니다.

  • 테스트 주도 개발: Claude AI는 먼저 Show 모델의 유효성 검사 및 시스템 스펙(Show 목록 및 개별 Show 보기)을 작성하여 실패하는 테스트를 생성했습니다.

  • 모델 및 마이그레이션: 테스트가 실패하는 것을 확인한 후, Claude AI는 shows 테이블과 title 컬럼을 포함하는 마이그레이션을 생성하고, Show 모델에 title의 존재 여부를 검증하는 로직을 추가했습니다.

  • 컨트롤러 및 뷰: Show 리소스를 위한 라우트, ShowsController 및 Show 목록(index)과 개별 Show 보기(show) 뷰를 구현했습니다.

스타일링 및 UI 컴포넌트 도입

애플리케이션의 시각적 요소를 개선하기 위해 Thoughtbot의 새로운 기본 CSS 스타일셋인 Rue를 도입했습니다.

  • Rue 통합: Suspenders가 PostCSS를 기본으로 사용하는 반면, Rue는 Prop Shaft(Rails의 기본 자산 파이프라인)와의 통합을 고려하여 CSS 파일을 번들링하는 방식에 차이가 있었습니다. 이로 인해 초기 CSS 적용에 문제가 발생했으며, Claude AI의 도움을 받아 PostCSS 설정을 Prop Shaft에 맞게 조정하고 Rue 스타일을 성공적으로 통합했습니다.

  • UI 컴포넌트: 쇼 목록을 시각적으로 매력적으로 만들기 위해 ‘썸네일 카드’ 컴포넌트와 ‘주요(featured) 카드’ 컴포넌트를 구현했습니다. 이 컴포넌트들은 제목, 설명, 이미지(초기에는 placeholder 이미지 사용)를 포함하며, Rue의 스페이싱 토큰을 활용하여 간격을 조정했습니다. 또한, 쇼 목록을 가로 그리드 형태로 배치하고, ‘새 쇼 추가’ 버튼의 위치와 스타일을 조정했습니다.

결론

이번 에피소드에서는 Claude AI의 강력한 코드 생성 능력을 활용하여 Ruby on Rails 애플리케이션의 초기 개발 단계를 성공적으로 진행했습니다. TDD 원칙을 지키며 작은 기능 단위로 접근함으로써, AI가 제안하는 코드를 체계적으로 검토하고 프로젝트의 방향을 개발자가 주도하는 효율적인 워크플로우를 확립했습니다. 기본적인 Show 모델 생성 및 관리 기능과 함께 Thoughtbot의 Rue CSS 프레임워크를 적용하여 초기 UI 스타일링을 완료했으며, 이는 향후 복잡한 기능 구현을 위한 견고한 기반을 마련했습니다. 다음 주에는 이 애플리케이션의 개발을 계속하며, 잠재적으로 LLM 기능을 애플리케이션 자체에 통합하는 방안도 모색할 예정입니다.

댓글 0

로그인이 필요합니다

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

로그인 하러 가기

아직 댓글이 없습니다

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