RailsConf 2025 회고: Rails 뷰 레이어의 현대적 비전

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

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

핵심 요약

  • 1 이 글은 RailsConf 2025에서 발표된 'The Modern View Layer Rails Deserves: A Vision for 2025 and Beyond' 강연의 요약으로, Rails 뷰 레이어의 개발 경험을 현대화하기 위한 Herb 프로젝트의 비전을 제시합니다.
  • 2 핵심은 HTML+ERB 파일용 린터와 포매터를 포함한 Herb v0.4.0의 출시이며, 이는 새로운 HTML 인식 ERB 파서 기반으로 더 나은 개발 도구와 실시간 피드백을 제공합니다.
  • 3 궁극적으로는 'ReActionView'라는 새로운 HTML 인식 ERB 렌더링 엔진을 통해 Rails 뷰 레이어를 더욱 견고하고 효율적이며 반응형으로 발전시키려는 장기적인 비전을 설명합니다.

도입

이 글은 최근 필라델피아에서 열린 마지막 RailsConf 2025에 대한 회고록으로, 'The Modern View Layer Rails Deserves: A Vision for 2025 and Beyond'라는 제목의 강연 내용을 중심으로 Rails 뷰 레이어의 현대화 비전을 제시합니다. 이 강연은 Herb v0.4.0의 출시와 함께 Herb Linter 및 Herb Formatter의 첫 번째 프리뷰 버전을 소개하며, Ruby 커뮤니티의 중요한 행사에 참여하는 영광과 함께 프레임워크에 대한 새로운 비전을 공유했습니다. Herb v0.4.0은 새로운 HTML 인식 ERB 파서를 기반으로 구축되었으며, 현대적인 개발 경험을 `*.html.erb` 파일에 제공하는 것을 목표로 합니다. 이러한 도구들은 Herb Language Server 및 개선된 Visual Studio Code 확장과 완벽하게 통합되어, 편집기 내에서 직접 린팅 및 자동 포매팅, 전체 프로젝트 분석, 진단 및 분석 결과를 위한 새로운 사이드바 패널을 지원합니다.

Herb v0.4.0의 출시는 Rails 뷰 레이어 개발에 중요한 진전을 의미합니다. Herb Linter는 Ruby 코드에 RuboCop과 같은 린터가 있듯이, HTML+ERB 파일에 대한 모범 사례를 안내하고 흔한 실수를 방지하는 데 도움을 줍니다. CLI를 통해 실행하거나 편집기에서 직접 오류를 포착하여 빠른 피드백을 제공하며, 각 린터 규칙에는 문서화된 예시가 포함되어 이해를 돕습니다. Herb Formatter(프리뷰)는 사용자들이 자신의 템플릿에 적용하여 버그와 엣지 케이스를 발견할 수 있도록 하며, VS Code에서 ‘저장 시 포맷’ 기능을 지원합니다. 이와 더불어, 지난 20년간 Rails의 Action View는 많은 개선과 최적화를 거쳤지만, 공용 API는 크게 변하지 않았습니다. Rails는 서버 측 렌더링 HTML을 중심으로 발전해왔으며, 이는 앞으로도 유지될 것입니다. 이에 따라 고급 HTML 도구의 중요성은 더욱 커지고 있습니다.

이러한 배경 속에서 저자는 ‘ReActionView’라는 새로운 ERB 렌더링 엔진의 비전을 제시합니다. ReActionView는 6가지 채택 수준으로 구성되어 있으며, 각 수준은 다음과 같습니다:

  • 레벨 1: 더 나은 피드백 및 개발 경험: *.html.erb 파일에서 문법 오류 발생 시 Vite처럼 즉각적인 오류 메시지를 화면에 표시하여 개발자가 문제를 신속하게 파악하고 해결할 수 있도록 돕습니다.
  • 레벨 2: HTML 인식 ERB 렌더링 엔진: ERB를 단순한 문자열 템플릿 엔진에서 실제 HTML 템플릿 엔진으로 전환하여, 템플릿 내의 HTML 구조를 인식함으로써 유효하지 않은 HTML을 생성하지 않도록 합니다. 이는 Elixir의 HEEx에서 영감을 받았습니다.
  • 레벨 3: Action View 최적화: HTML+ERB 파일에 대한 더 깊은 통찰력과 구조적 인식을 바탕으로 Action View가 템플릿을 컴파일할 때 낮은 수준의 최적화를 수행할 기회를 탐색합니다. 예를 들어, 런타임 부분 룩업을 제거하기 위해 render partial 호출을 컴파일 시점에 인라인하는 것을 고려합니다.
  • 레벨 4: 반응형 ERB 템플릿: Herb가 템플릿을 차등화하고 변경된 부분만 다시 렌더링할 수 있도록 하여, Phoenix LiveView와 유사한 반응형 업데이트를 가능하게 합니다. 이는 *.html.herb와 같은 새로운 파일 확장자를 통해 옵트인 방식으로 도입될 수 있으며, Turbo Frames나 Turbo Streams의 필요성을 줄일 수 있습니다.
  • 레벨 5: 범용 클라이언트 측 템플릿: React Server Components(RSC)처럼 특정 HTML+ERB 템플릿/부분을 서버와 클라이언트 모두에서 렌더링할 수 있도록 하여, 낙관적 UI 업데이트나 오프라인 지원과 같은 사용 사례를 가능하게 합니다.
  • 레벨 6: 외부 컴포넌트: React, Vue, Svelte와 같은 외부 UI 컴포넌트를 *.html.herb 템플릿 내에 직접 마운트할 수 있는 기능을 탐색하여, Rails 뷰 레이어를 포기하지 않고도 JavaScript 생태계의 풍부한 컴포넌트를 활용할 수 있도록 합니다.

이러한 비전은 점진적이고 비파괴적인 채택을 목표로 하며, Rails의 본질을 유지하면서도 필요한 부분에 점진적인 개선을 더합니다. 현재의 Herb 도구(린터, 포매터)는 미래의 ReActionView를 위한 빌딩 블록 역할을 합니다. 저자는 사용자들에게 Herb를 자신의 프로젝트에서 실행하고 발견된 문제를 보고하여 파서 개선에 기여해 줄 것을 요청합니다.

결론

Herb는 초기 파서에서 시작하여 이제 HTML+ERB 파일을 위한 포괄적인 툴킷으로 발전했습니다. v0.4.0의 출시와 함께 린팅, 포매팅, 진단 및 즉각적인 피드백을 포함한 Rails 뷰 레이어의 더 나은 개발 경험을 위한 기반이 마련되었으며, 명확한 발전 경로가 제시되었습니다. Phoenix LiveView에 HEEx가 있다면, Rails ReActionView에는 Herb가 될 수 있습니다. Rails는 웹 개발을 혁신하고 계속 진화하고 있지만, 프론트엔드 요구 사항이 극적으로 변화하는 동안 뷰 레이어는 크게 변하지 않았습니다. ReActionView는 ActionView나 ERB를 대체하는 것이 아니라, 이를 신중하고 점진적으로, 그리고 Rails의 장점을 유지하는 방식으로 발전시킬 기회입니다. 저자는 2025년 9월 EuRuKo에서 ReActionView의 첫 번째 프로토타입 버전을 출시할 계획이며, Herb가 HTML 템플릿, 도구 및 새로운 렌더링 엔진에 유사한 영향을 미칠 수 있다고 믿습니다.

댓글 0

댓글 작성

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

아직 댓글이 없습니다

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