모던 Hotwire 및 Rails 시대를 위한 개발 도구: LSP를 통한 개발자 경험 향상

Marco Roth, "Leveling Up Developer Tooling For The Modern Rails & Hotwire Era"

작성자
EuRuKo
발행일
2025년 01월 13일

핵심 요약

  • 1 모던 Rails 및 Hotwire 애플리케이션 개발에 있어 JavaScript 생태계 대비 부족했던 개발 도구의 필요성을 강조합니다.
  • 2 Language Server Protocol(LSP)의 개념과 Stimulus LSP 개발 사례를 통해 코드 자동 완성, 진단 등 개발자 경험 향상 방안을 제시합니다.
  • 3 향후 Stimulus Lint, Turbo LSP, 통합 HTML/ERB 파서 및 Hotwire 브라우저 확장 등 Hotwire 생태계의 도구 발전 방향을 조망합니다.

도입

본 발표는 모던 Rails 및 Hotwire 애플리케이션 개발 환경에서 개발자 경험(DX)을 향상시키기 위한 도구의 중요성을 역설합니다. 발표자는 과거 React 개발 경험에서 느꼈던 복잡성 이후 Ruby와 Rails로 회귀하며, 특히 Hotwire와 Rails를 결합한 개발 방식이 주는 생산성에 주목했습니다. 그러나 JavaScript 생태계에 비해 Ruby/Rails 개발 도구가 상대적으로 부족함을 인지하고, 이러한 격차를 해소하기 위한 핵심 기술로 Language Server Protocol(LSP)의 도입과 발전을 제안합니다.

발표는 먼저 LSP의 개념과 작동 방식을 설명합니다. LSP는 언어 서버를 한 번 구축하면 다양한 에디터에서 언어 지능을 활용할 수 있게 하여, 과거 에디터별 플러그인을 개별 개발해야 했던 비효율성을 해결합니다. 에디터가 파일을 열면 언어별 프로세스가 백그라운드에서 실행되며, JSON RPC를 통해 표준 입출력으로 통신하여 자동 완성, 진단 등의 기능을 제공합니다.

이어서 Stimulus LSP의 개발 사례를 상세히 소개합니다. Stimulus LSP의 주요 목표는 Stimulus 컨트롤러의 data 속성(예: data-controllers, data-targets, data-actions)에 대한 정확한 자동 완성 및 진단 기능을 제공하는 것입니다. 초기 구현은 정적 속성 완성에서 시작하여, Acorn과 같은 JavaScript 파서를 활용해 애플리케이션 내 Stimulus 컨트롤러의 동적 정보(메서드, 타겟 등)를 추출하여 자동 완성 및 값 제안 기능을 고도화했습니다. 개발 과정에서는 하드코딩된 경로 문제, 다양한 컨트롤러 등록 방식 지원의 필요성 등 여러 난관에 부딪혔으며, 결국 파서를 전면 재작성하여 정확성과 신뢰성을 크게 향상시켰습니다.

발표자는 AI 기반 코드 완성 도구와 LSP의 차이점을 명확히 하며, LSP가 제공하는 신뢰성과 정확성에 기반한 진단 기능의 중요성을 강조합니다. AI가 생성한 코드에 오류가 발생했을 때 LSP가 이를 감지하고 수정 제안(Quick Fix)을 제공하는 것이 개발 생산성 유지에 필수적이라는 입장입니다. 이는 Ruby의 ‘Did you mean’ 기능처럼, Stimulus 코드의 잘못된 참조에 대해서도 유사한 제안을 할 수 있음을 시사합니다.

향후 계획으로는 Stimulus LSP의 진단 기능을 독립적인 CLI 도구인 Stimulus Lint로 추출하여 CI 시스템에서도 코드 품질 검사를 가능하게 할 예정입니다. 또한 Turbo 관련 기능에 대한 LSP 지원인 Turbo LSP를 개발 중이며, 이를 위해 ERB 문서 내 HTML과 Ruby 코드를 통합적으로 이해하는 파서 개발이 중요하다고 강조합니다. 이 통합 파서는 Rails 헬퍼, 조건문 등을 인식하여 더 정교한 진단과 자동 완성을 제공하고, Haml, Slim 등 다른 템플릿 언어 지원의 기반이 될 수 있습니다. 추가적으로, Turbo Frames 및 Stimulus Controllers를 시각적으로 강조하고 디버깅을 돕는 Hotwire 브라우저 확장 기능 개발과 Turbo Streams 디버그 바, Turbo Frame 새로고침 버튼 등 다양한 기능 개선 아이디어를 공유했습니다.

결론

결론적으로 발표자는 개발자 경험과 강력한 개발 도구의 존재가 현대 프레임워크의 관련성을 유지하는 데 필수적임을 강조합니다. 지난 몇 년간 Rails/Hotwire 생태계에서 부족했던 도구들이 점차 갖춰지고 있으며, 이는 매우 고무적인 현상이라고 평가합니다. 이러한 도구 개발은 발표자 자신이 Ruby와 Rails, Hotwire를 활용하여 더욱 효율적으로 애플리케이션을 구축할 수 있도록 하는 원동력이자, 궁극적으로 더 생산적이고 통합된 Hotwire 생태계를 구축하기 위한 지속적인 노력의 일환임을 밝히며 발표를 마무리합니다.

댓글 0

댓글 작성

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

아직 댓글이 없습니다

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