Hanami 프레임워크를 WebAssembly(WASM)에서 실행하기 실험

Putting Hanami in the browser via WASM

작성자
발행일
2025년 06월 23일

핵심 요약

  • 1 이 글은 Hanami 프레임워크를 WebAssembly(WASM) 환경에서 실행하려는 실험 과정을 다룹니다.
  • 2 Ruby on Rails를 브라우저에서 실행하려는 시도에서 영감을 받아 시작되었으며, `BigDecimal` 같은 특정 Gem 관련 문제를 해결하며 진행되었습니다.
  • 3 `ruby.wasm` 도구를 활용하여 기본적인 Hanami 액션을 브라우저에서 실행하는 데 성공했으나, 여전히 해결해야 할 기술적 난관이 존재합니다.

도입

이 글은 Ruby on Rails를 브라우저에서 실행하려는 시도에서 영감을 받아, 모듈화된 Hanami 프레임워크를 WebAssembly(WASM) 환경에서 구동하려는 실험 과정을 다룹니다. 저자는 WASM에 대한 사전 지식 없이 시작했음에도 불구하고, 단시간 내에 Hanami 액션이 브라우저에서 동작하는 초기 버전을 구현하는 데 성공했습니다. 이 실험은 Ruby 개발자들이 웹 애플리케이션의 프론트엔드 영역에서 Ruby 코드를 직접 실행할 수 있는 가능성을 탐구합니다.

Hanami를 WASM에서 실행하는 과정에서 저자는 몇 가지 주요 도전 과제에 직면했습니다. WASM 패키지에 사용자 정의 Gem을 포함할 때의 복잡성과 BigDecimal와 같이 WASM으로 컴파일되지 않는 특정 Gem 문제가 대표적이었습니다. 저자는 BigDecimal의 더미 구현을 제공하고 WASM 컴파일러가 해당 Gem 컴파일을 건너뛰도록 강제하는 방법을 통해 이를 해결했습니다. 이 과정에서 ruby.wasm 저장소와 Vladimir Dementyev의 자료에서 많은 도움을 받았습니다.

현재 구현은 Hanami의 전체 프레임워크가 아닌, hanami-controllerhanami-validations Gem을 사용한 기본적인 액션과 유효성 검사 기능만을 브라우저에서 실행합니다. 이는 WASM의 현재 한계와 Ruby 지원의 제약으로 인해 전체 프레임워크 포팅과는 거리가 있음을 명확히 합니다.

글에서는 WASM 패키지 로드, Gem 및 shim을 사용한 가상 머신(VM) 초기화, 그리고 에디터의 Ruby 코드를 실행하는 JavaScript 스니펫을 제시합니다. 또한, ruby_wasm 도구를 사용하여 bigdecimal Gem을 제외하고 WASM 패키지를 빌드하는 Ruby 스크립트도 포함되어 있습니다.

결론

이 실험은 WASM 환경에서 Ruby 기반의 Hanami 액션이 성공적으로 실행될 수 있음을 보여주었지만, 여전히 해결해야 할 많은 기술적 난관이 존재함을 인정합니다. 그럼에도 불구하고, 저자는 이 프로젝트가 완전히 새로운 기술을 탐구하는 즐거운 경험이었고, 새로운 것을 배우는 데 있어 충분히 가치 있는 시간이었다고 결론 내립니다. 이 시도는 Ruby 웹 개발의 미래 방향성과 프론트엔드에서의 Ruby 활용 가능성에 대한 중요한 통찰을 제공합니다.

댓글 0

댓글 작성

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

아직 댓글이 없습니다

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