P2, 새로운 Papercraft

P2 is the New Papercraft

작성자
발행일
2025년 09월 12일

핵심 요약

  • 1 P2는 기존 Papercraft의 성능 한계를 극복하고자 개발된 새로운 Ruby Gem으로, 순수 Ruby로 HTML 템플릿을 작성할 수 있도록 지원합니다.
  • 2 P2는 템플릿 컴파일을 통해 ERB와 동등한 수준의 고성능을 달성했으며, 이는 HTML 생성 코드의 효율성 증대에 기인합니다.
  • 3 이 프로젝트는 기존 아이디어와 코드베이스를 재검토하여 더 단순하고 빠르며 견고한 솔루션을 모색하는 개발 철학의 결과물입니다.

도입

최근 몇 달간 저자는 다양한 오픈 소스 프로젝트에 몰두했으며, 그중 하나인 P2는 순수 Ruby로 HTML 템플릿을 작성하기 위한 Ruby Gem입니다. P2는 기존 Papercraft Gem의 성능 개선을 목표로 시작되었으며, 개발자 경험과 즐거움을 중시했던 Papercraft의 철학을 유지하면서도 성능 최적화에 집중하여 개발되었습니다. 이 글은 P2의 개발 배경, 성능 목표 달성 과정, 그리고 향후 Papercraft와의 통합 계획에 대해 설명합니다.

Papercraft는 HTML 템플릿의 가독성과 작성의 즐거움, 그리고 다양한 조합 가능성을 중시하며 Ruby 커뮤니티의 핵심 가치인 개발자 행복을 추구했습니다. 그러나 저자의 벤치마크 결과 Papercraft의 성능이 다소 부족하다는 점이 확인되었습니다. 이에 저자는 템플릿의 변환(컴파일)을 통해 렌더링 속도를 높이는 방안을 모색하기 시작했습니다.

P2 개발의 시작

  • 초기에는 템플릿 소스 코드를 파싱하고 AST(추상 구문 트리)를 변환한 후 다시 소스 코드로 변환하는 방식을 구상했습니다.

  • 몇 달 전, Phlex의 저자인 Joel Drapper와의 논의를 통해 기존 코드베이스의 제약 없이 이 문제를 재검토하기로 결정했습니다.

개발 철학: 재검토와 개선

  • 저자는 최근 기존 아이디어, 코드베이스, 가정을 재검토하여 더 단순하고, 코드 라인이 적으며, 빠르고, 견고하며, 의존성이 적은 솔루션을 찾는 방식을 적극적으로 활용하고 있습니다.

  • P2는 이러한 철학에 따라 ‘항상 컴파일되는’ HTML 생성 Ruby DSL을 재구상한 결과물입니다.

P2의 성능 달성

  • 몇 달간의 노력 끝에 P2는 ERB와 동등한 수준의 성능을 달성했습니다.

  • 이는 P2, ERB, ERubi 간의 ‘컴파일된’ HTML 생성 소스 코드가 거의 동일해졌기 때문입니다.

Papercraft와의 통합 및 미래 방향

  • 이제 P2의 성과를 Papercraft에 다시 통합하고, 개발자 경험을 더욱 개선하는 데 집중할 계획입니다.

  • 이미 렌더링된 HTML에 HTML 속성을 주입하여 Marco Roth가 ReactionView에서 선보인 것과 같은 프런트엔드 템플릿 디버깅 도구를 구현하는 작업을 진행했습니다.

  • Papercraft/P2 템플릿이 AST 변환 과정을 거치므로, Marco가 언급한 반응형 템플릿과 같은 미래 방향도 가능해졌습니다.

결론

P2는 Papercraft의 성능 한계를 극복하고 ERB 수준의 고성능을 달성한 중요한 진전입니다. 이는 기존 아이디어를 과감히 재검토하고 최적화하는 저자의 개발 철학이 결실을 맺은 결과입니다. P2의 기술은 Papercraft에 통합되어 개발자 경험을 향상시키고, 디버깅 도구 및 반응형 템플릿과 같은 혁신적인 기능 구현의 기반을 마련할 것입니다. 이 프로젝트는 성능과 개발자 행복이라는 두 마리 토끼를 모두 잡으려는 Ruby 개발 커뮤니티의 노력을 잘 보여줍니다. 독자들은 Papercraft를 사용해 보며 이러한 개선 사항을 직접 경험해 볼 수 있습니다.

댓글 0

댓글 작성

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

아직 댓글이 없습니다

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