Ruby 개발 문화의 변화: Before Rails에서 Post Rails 시대로

[29S08] How to survive in a post-Rails world (ja)

작성자
RubyKaigi
발행일
2025년 10월 05일

핵심 요약

  • 1 발표자는 'Before Rails' 시대와 'Post Rails' 시대의 Ruby 개발 문화 및 프로그래밍 방식의 차이를 비교하며, Git/GitHub 중심의 현대 Ruby 생태계를 조명합니다.
  • 2 개인의 성취감('나 정말 대단해' 감각)이 GitHub를 통한 오픈소스 기여로 확장되어 공동체적 기쁨으로 연결되는 과정을 설명하며, 새로운 개발 패러다임 적응의 중요성을 강조합니다.
  • 3 현대 Ruby 개발자는 Git/GitHub 기반의 협업과 최신 Ruby 이디엄 학습을 통해 활발한 생태계에 참여해야 하며, 이는 즐거운 프로그래밍 경험을 위한 필수 요소임을 역설합니다.

도입

본 발표는 RubyKaigi 2010의 'Conflict Resolution'이라는 주제 아래, 발표자 HSBT가 A.System Management 입사 후 겪은 Ruby 개발 환경의 변화와 그로 인한 '격차(Gap)'를 중심으로 진행됩니다. HSBT는 과거 'Before Rails' 시대의 개발 방식과 현재 'Post Rails' 시대의 개발 방식을 비교하며, 시대적 변화에 따른 Ruby 개발 문화와 프로그래밍 패러다임의 차이를 심층적으로 분석합니다. 이는 Ruby 개발자들이 새로운 생태계에 적응하고 더 즐겁게 개발할 수 있는 방향을 제시하고자 하는 목적을 담고 있습니다.

Before Rails와 Post Rails 시대의 비교

발표자는 자신의 경험을 바탕으로 ‘Before Rails’ 시대와 ‘Post Rails’ 시대의 특징을 명확히 구분합니다. 자신을 ‘Before Rails’ 시대의 사람으로, 동료 우라시마 씨를 ‘Post Rails’ 시대의 사람으로 정의하며 두 시대의 차이점을 설명합니다.

Before Rails 시대의 특징

  • 주요 애플리케이션: TDiary, Kagemae 등 일본산 소프트웨어가 주를 이뤘습니다.

  • 코드 호스팅: SourceForge, RubyForge와 같은 플랫폼을 주로 사용했습니다.

  • 라이브러리 설치: RAA(Ruby Application Archive)에서 다운로드하여 ruby setup.rb install 방식을 사용했습니다.

  • 프로그래밍 스타일: C 언어와 유사한 명령형 스타일(예: for 루프, += 연산)이 흔했습니다.

Post Rails 시대의 특징

  • 주요 프레임워크/라이브러리: Rails 외에도 Padrino, Sinatra, MongoDB, Sidekiq 등 로고가 멋진 최신 기술들이 등장했습니다.

  • 코드 호스팅: 모든 프로젝트가 GitHub를 중심으로 이루어집니다.

  • 프로그래밍 스타일:

    • 이터레이터: inject (합계 계산), map (배열 생성), detect/find, select/find_all 등 Enumerable 모듈의 다양한 메서드를 활용합니다.
    • 데이터 구조: Hash와 Symbol의 적극적인 사용이 두드러집니다. Symbol은 객체 생성 오버헤드를 줄이고 타입 수가 적다는 장점으로 인해 널리 사용됩니다.
    • 메타 프로그래밍: send, block, lambda 등 메타 프로그래밍 기법이 Rails 3의 Scope 등에서 활발히 활용됩니다.

Post Rails 시대의 학습 방법론: GitHub 중심

우라시마 씨의 학습 방식을 관찰한 결과, ‘Post Rails’ 시대의 개발자들은 GitHub를 통해 지식을 습득하고 기여합니다.

  1. 관찰: 업무에 필요한 Gem이나 라이브러리를 GitHub에서 검색하고, 폴더 구조, 커밋 메시지, 커밋 히스토리를 분석하여 활발히 유지보수되는 프로젝트를 찾습니다.

  2. 워치(Watch): 관심 있는 프로젝트를 워치하여 변경 사항을 지속적으로 추적합니다.

  3. 클론 및 분석: 프로젝트를 로컬로 클론하고 bundle install, bundle open을 통해 내부 코드를 직접 분석하고 성능 평가, 메모리 누수 등을 확인합니다.

  4. 포크 및 기여: 개선할 점을 발견하면 프로젝트를 포크하여 자신의 저장소에 변경 사항을 푸시하고, 풀 리퀘스트를 통해 원본 프로젝트에 기여합니다.

‘나 정말 대단해’ 감각의 진화

발표자는 프로그래밍을 지속하는 동력인 ‘나 정말 대단해’(俺ってすげえ感) 감각이 시대에 따라 어떻게 변화했는지 설명합니다.

  • Before Rails: 다른 사람이 만든 라이브러리를 조합하거나 TDiary 플러그인을 만들어 작은 변화를 주는 것에서 오는 개인적인 성취감이 주를 이뤘습니다.

  • Post Rails: GitHub에서 라이브러리를 포크하여 불편한 부분을 개선하고 풀 리퀘스트를 보내면, 자신의 기여가 실제 프로젝트에 반영되고 ‘Thanks’ 메시지를 받는 경험을 통해 타인과의 연결 속에서 더 큰 기쁨과 성취감을 느낍니다. 이는 개인적인 만족을 넘어 공동체적 기여로 확장되는 형태입니다.

GitHub는 Ruby 생태계의 중심 허브가 되었으며, Ruby 개발자들은 이러한 생태계 속에서 소스 코드와 커뮤니케이션을 통해 연결되어야 합니다. TDiary조차 GitHub로 이전하는 등, Git/GitHub는 이제 Ruby 개발에 있어 피할 수 없는 필수 요소가 되었습니다.

결론

본 발표는 'Before Rails'와 'Post Rails' 시대의 Ruby 개발 문화 및 프로그래밍 스타일의 근본적인 변화를 명확히 제시합니다. 현대 Ruby 개발자들은 C 언어 스타일의 명령형 방식에서 벗어나 `Enumerable` 모듈의 다양한 메서드, Hash와 Symbol의 적극적인 활용, 메타 프로그래밍 지식 등 'Ruby스러운' 코드를 작성하는 방법을 숙지해야 합니다. 더불어, GitHub를 중심으로 하는 오픈소스 생태계에 적극적으로 참여하여 라이브러리를 탐색하고, 포크하며, 풀 리퀘스트를 통해 기여하는 것이 중요합니다. 이처럼 개인의 즐거움과 공동체의 기여가 상호작용하는 'Post Rails' 시대의 개발 방식은 Ruby 개발자들이 더욱 풍요롭고 즐거운 프로그래밍 생활을 영위하는 데 필수적인 요소임을 강조합니다.

댓글 0

댓글 작성

0/1000
정중하고 건설적인 댓글을 작성해 주세요.

아직 댓글이 없습니다

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