REA로 Excalidraw 분석

EZ, ParkAIAX / DXTechTrend이매진팩토리박은지

REA를 활용한 Excalidraw 분석

REA(Reverse Engineer Anything)는 기존 소프트웨어의 구조와 동작 원리를 분석하고, 그 결과를 새로운 기능 구현에 활용할 수 있도록 지원하는 오픈소스 역공학 도구입니다.

이번에는 REA가 실제 개발 과정에서 어떻게 활용되는지 살펴보기 위해, Claude Code와 연동하여 오픈소스 화이트보드 Excalidraw를 분석했습니다.

사각형 그리기와 화면 이동 기능을 중심으로 내부 동작을 조사하고, 이를 바탕으로 일부 기능을 구현하는 것을 목표로 했습니다.

image

분석 과정에서 발생한 문제

먼저 REA를 이용해 Excalidraw에서 사각형을 직접 그리면서 내부 동작을 관찰했습니다. 화면에서 도형이 생성되는 것은 확인했지만, 해당 동작에서 실행된 함수에 대한 정보는 충분히 확보하지 못했습니다.

이에 REA를 통해 웹페이지 구조와 JavaScript 파일을 수집하고, 코드의 내부 구조를 분석하는 방법을 시도했습니다.

그러나 수집한 JavaScript를 자동 분석하는 analyze_web_bundle 기능을 실행하자, 분석 도중 MCP 연결이 종료됐습니다.

Connection closed

원인을 조사하기 위해 터미널에서 REA의 JavaScript 분석 기능을 직접 실행했습니다. 이때는 메모리 부족 오류가 확인됐습니다.

Owned JavaScript worker exhausted its heap

이는 JavaScript 분석 작업에 할당된 메모리가 부족해 분석을 완료하지 못했다는 의미입니다.

메모리 한도를 3GB와 6GB로 늘려 재시도했지만 결과는 달라지지 않았습니다.

분석 방법결과
REA MCP analyze_web_bundle연결 종료
REA CLI — 메모리 한도 3GB메모리 부족
REA CLI — 메모리 한도 6GB동일한 오류 발생

분석 당시 사용한 버전은 REA 6.7.0이었으며, macOS 환경에서 약 2.2MB 크기의 Excalidraw JavaScript 번들을 조사했습니다.

다만 MCP 연결 종료와 CLI의 메모리 부족 오류가 정확히 동일한 원인으로 발생했는지는 확인하지 못했습니다.

공식 GitHub에서도 유사한 문제가 보고됐습니다

문제의 원인을 조사하기 위해 REA 공식 GitHub에서 관련 사례를 확인했습니다.

그 결과 이번 분석에서 발생한 증상과 유사한 두 가지 이슈를 찾을 수 있었습니다.

Issue #5138은 React DOM 18.3.1의 JavaScript 코드를 정적 분석할 때 메모리가 부족해지는 문제를 다룹니다. 메모리 한도를 높여도 분석이 정상적으로 완료되지 않는 사례가 포함되어 있었습니다.

Issue #5132는 analyze_web_bundle 실행 중 메모리 부족으로 REA MCP 서버가 종료될 수 있는 문제를 다룹니다.

두 이슈 모두 2026년 10월 19일 공식 GitHub에서 수정 완료 상태로 종료됐습니다.

다만 공식 이슈에서 사용한 분석 대상은 Excalidraw와 동일하지 않습니다. 따라서 이번에 발생한 오류가 같은 원인 때문인지, 수정된 코드에서 Excalidraw 분석이 정상적으로 완료되는지는 추가 확인이 필요합니다.

자동 분석이 멈춘 뒤, 다른 방법으로 분석을 이어갔습니다

REA의 자동 분석은 완료되지 않았지만, 앞서 수집한 JavaScript 파일은 그대로 남아 있었습니다.

이에 Claude Code를 이용해 해당 파일에서 사각형 생성과 관련된 코드를 찾아보고, 마우스 입력에 따라 도형이 생성되고 크기가 변경되는 처리 방식을 조사했습니다.

이렇게 파악한 내용을 바탕으로 React와 TypeScript를 사용해 다음 기능을 구현했습니다.

구현 기능내용
사각형 그리기마우스 드래그로 도형 생성
크기 조절Shift 키로 정사각형 생성, Alt 키로 중심 기준 조절
화면 이동마우스와 스페이스바를 이용한 캔버스 이동
손 도구도구 선택 후 캔버스 이동
키보드 단축키키보드로 도구 전환

image

구현한 것은 Excalidraw 전체가 아닌 일부 기능이며, REA가 자동으로 만들어 낸 결과도 아닙니다. REA로 자료를 수집하고, Claude Code로 코드를 추가 분석해 구현하는 과정을 거쳤습니다.


자주 묻는 질문

Q. REA analyze_web_bundle 실행 중 Connection closed가 발생하는 이유는 무엇인가요?

Connection closed는 REA MCP 서버와의 연결이 종료됐다는 의미입니다. 이번 분석에서는 CLI 실행 시 별도로 메모리 부족 오류가 확인됐고, 공식 GitHub에서도 메모리 부족으로 MCP 서버가 종료되는 유사 사례가 보고됐습니다. 다만 이번 연결 종료의 정확한 원인은 확정하지 못했습니다.

Q. Owned JavaScript worker exhausted its heap 오류는 메모리를 늘리면 해결되나요?

이번 REA 6.7.0 분석에서는 메모리 한도를 3GB와 6GB로 늘려도 해결되지 않았습니다. 사용 중인 버전과 공식 GitHub의 관련 이슈를 확인할 필요가 있습니다.

Q. REA만으로 기존 소프트웨어의 기능을 구현할 수 있나요?

이번 사례에서는 REA로 자료를 수집하고, Claude Code로 코드를 추가 분석해 일부 기능을 구현했습니다. 분석 대상과 작업 범위에 따라 추가적인 코드 분석과 검증이 필요합니다.

참고 자료

분석 기준: 2026년 10월 19일 / REA 6.7.0

댓글 0

0 / 2000

이메일은 공개되지 않으며 댓글 관련 연락 목적으로만 사용됩니다. 등록된 댓글은 바로 공개되며 수정할 수 없습니다.

첫 댓글을 남겨주세요.