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가 언급한 반응형 템플릿과 같은 미래 방향도 가능해졌습니다.