RailsConf 2025 회고: 현대적인 뷰 레이어를 향한 비전

Introducing the Herb Linter, Formatter, and a Vision for the Future of Rails Views | Marco Roth

작성자
발행일
2025년 07월 17일

핵심 요약

  • 1 RailsConf 2025에서 HTML+ERB 파일의 개발 경험을 혁신할 Herb v0.4.0 (Linter, Formatter 포함)이 공개되었습니다.
  • 2 이 발표는 기존 ERB를 HTML 구조를 인식하는 템플릿 엔진으로 발전시키고, 향후 Rails 뷰 레이어를 위한 'ReActionView'라는 비전을 제시합니다.
  • 3 ReActionView는 점진적인 개선을 통해 개발자 피드백 강화, 렌더링 최적화, 반응형 및 범용 템플릿 지원을 목표로 Rails의 본질을 유지하며 발전해 나갈 것입니다.

도입

2025년 필라델피아에서 개최된 마지막 RailsConf에서 Marco Roth는 'The Modern View Layer Rails Deserves: A Vision for 2025 and Beyond'라는 제목으로 강연을 진행했습니다. 이 강연은 그가 오랫동안 사용해온 Rails 프레임워크를 위한 새로운 릴리스와 비전을 공유하는 자리였으며, Ruby 커뮤니티에서 중요한 의미를 가집니다. 본 글은 해당 강연의 내용을 요약 및 정리하여, Herb 프로젝트의 최신 업데이트와 Rails 뷰 레이어의 미래에 대한 심도 깊은 통찰을 제공하고자 합니다.

강연의 핵심 내용은 Herb v0.4.0의 출시입니다. 이 버전에는 Herb Linter와 Herb Formatter의 첫 번째 프리뷰 버전이 포함되어 있습니다. 이 새로운 도구들은 RubyKaigi에서 소개된 C로 작성된 HTML 인식 ERB 파서인 Herb Parser를 기반으로 하며, *.html.erb 파일에 현대적인 개발자 경험을 제공하는 것을 목표로 합니다. 특히, 향상된 Language Server와 Visual Studio Code 확장은 에디터 내에서 직접 린팅 및 자동 포맷팅을 지원하고, 전체 프로젝트 분석 기능과 진단을 위한 새로운 사이드바 패널을 제공하여 개발 효율성을 크게 향상시킵니다. Herb Linter는 Ruby Style Guide와 유사하게 뷰 파일에 대한 모범 사례를 안내하며, CLI 및 에디터 통합을 통해 즉각적인 피드백을 제공합니다.

더 나아가, Marco Roth는 Rails 뷰 레이어의 미래를 위한 ‘ReActionView’ 비전을 제시했습니다. Rails의 Action View는 2004년부터 ERB를 기본 템플릿 엔진으로 사용해왔으며, 지난 20년간 많은 개선이 있었지만, 공개 API는 크게 변하지 않았습니다. 기존 ERB 렌더링 엔진이 비 Ruby 코드를 단순히 문자열로 처리하여 유효하지 않은 HTML을 생성할 수 있는 한계를 지적하며, HTML 구조를 인식하여 유효한 HTML만 생성하는 ‘HTML 템플릿 언어’의 필요성을 강조했습니다. 이러한 개념은 Elixir의 HEEx(HTML + EEx)에서 영감을 받아 ‘Herb’라는 이름으로 구체화되었습니다.

ReActionView 비전은 6가지 점진적인 채택 레벨로 구성됩니다. 첫 번째 레벨은 ‘Better Feedback and Developer Experience’로, *.html.erb 파일의 구문 오류에 대해 Vite와 유사한 즉각적이고 시각적인 오류 피드백을 제공합니다. 두 번째 레벨인 ‘HTML-aware ERB rendering Engine’에서는 ERB 렌더링 엔진을 HTML 구조를 인식하는 엔진으로 전환하여, 컴파일 시 유효하지 않은 HTML 생성을 방지하고 명확한 오류 메시지를 제공합니다. 세 번째 레벨 ‘Action View Optimizations’는 HTML+ERB 파일의 구조적 인식을 활용하여 템플릿 컴파일 시 저수준 최적화를 가능하게 합니다. 네 번째 레벨 ‘Reactive ERB Templates’는 템플릿의 변경 사항을 감지하여 필요한 부분만 효율적으로 재렌더링하는 기능을 포함하며, 이는 Phoenix LiveView HEEx와 유사합니다. 새로운 *.html.herb 파일 확장자를 통해 옵트인 방식으로 이 기능을 활성화하고, HTML5 유효성, 접근성, XSS 검사 등 엄격한 규칙을 적용할 수 있습니다. 다섯 번째 레벨 ‘Universal client-side Templates’에서는 특정 HTML+ERB 템플릿/부분을 서버와 클라이언트 양쪽에서 렌더링할 수 있는 ‘ERB 클라이언트 컴포넌트’ 개념을 탐구합니다. 마지막 여섯 번째 레벨 ‘External Components’는 React, Vue, Svelte 등 외부 UI 컴포넌트를 *.html.herb 템플릿 내에 직접 마운트하여 JavaScript 생태계의 풍부한 컴포넌트를 Rails 뷰 레이어에서 활용할 수 있는 유연성을 제공합니다.

현재의 Herb 도구들(린터, 포매터)은 *.html.erb 파일 작업을 더 안전하고 쉽게 만들지만, 이는 미래의 ReActionView를 위한 중요한 빌딩 블록입니다. 이 로드맵은 점진적이고 비파괴적인 방식으로 Rails에 통합될 수 있도록 설계되었습니다. Marco Roth는 Herb 파서 개선을 위한 커뮤니티의 기여를 독려하며, EuRuKo 2025에서 ReActionView의 첫 프로토타입 버전을 공개할 예정임을 밝혔습니다.

결론

Herb 프로젝트는 초기 파서 중심에서 이제 HTML+ERB 파일을 위한 포괄적인 툴킷으로 발전했습니다. v0.4.0 릴리스는 Rails 뷰 레이어의 개발자 경험을 향상시키기 위한 견고한 기반을 제공하며, 린팅, 포맷팅, 진단 및 즉각적인 피드백을 가능하게 합니다. ReActionView는 ActionView나 ERB를 완전히 대체하는 것이 아니라, Rails의 핵심 가치를 유지하면서 뷰 레이어를 점진적으로 발전시키는 기회입니다. Phoenix LiveView에 HEEx가 있다면, Rails ReActionView에는 Herb가 될 수 있습니다. Herb는 HTML 템플릿, 툴링, 그리고 잠재적으로 새로운 렌더링 엔진에 큰 영향을 미쳐 Ruby 개발 생태계를 한 단계 발전시킬 것으로 기대됩니다.

댓글 0

댓글 작성

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

아직 댓글이 없습니다

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