02 / 입문 튜토리얼 / 읽는 시간: 8분

REA 사용법: 앱의 내보내기 버튼 추적하기

‘Export notes’를 누르면 CSV 파일은 어디로 갈까요? 작은 Electron 앱에서 REA로 버튼의 동작을 추적하고 파일 형식을 만드는 코드를 테스트하세요.

이 페이지의 내용
JavaScript / Electron네이티브 엔진 불필요공식 학습용 샘플
배울 내용
  • 작은 앱을 다운로드하고 폴더 경로를 REA에 전달합니다.
  • 내보내기 핸들러와 의도된 저장 위치를 찾습니다: Downloads/notes.csv.
  • 짧은 검증을 실행해 쉼표와 따옴표가 올바르게 내보내지는지 확인합니다.

01. 질문 하나 고르기

‘이 앱을 설명해 줘’는 범위가 큰 요청입니다. 구체적으로 지목할 수 있는 동작과 검증 가능한 답부터 시작하세요:

분석할 질문
Export notes를 누르면 CSV 파일이 어디로 저장되나요? 노트 제목에 쉼표나 따옴표가 있으면 어떻게 처리되나요?

이 예제에서는 공식 REA Notes 예제를 사용합니다. 작은 파일 6개로 구성된 Electron 앱 학습용 샘플이며 프로덕션 애플리케이션은 아닙니다. 정적 분석에는 Electron 설치가 필요 없습니다.

02. 샘플 받기

rea.tools에서 notes-example.zip 다운로드 후 새 폴더에 압축을 푸세요. 폴더 경로를 준비해 두세요. 다음 파일이 있어야 합니다:

샘플 파일
notes-example/
  package.json
  index.html
  renderer.js
  preload.js
  main.js
  csv.js

REA가 아직 연결되지 않았다면 다음을 따르세요: 설치 가이드. 이 샘플은 데스크톱 창을 열지 않고도 분석할 수 있습니다.

03. 에이전트에 분석 요청하기

프롬프트의 샘플 경로를 압축을 푼 폴더의 절대 경로로 바꾸세요.

분석 프롬프트
REA로 /absolute/path/to/notes-example을 정적으로 분석하세요. Export notes 버튼을 렌더러, 프리로드 브리지, 메인 프로세스 순서로 추적하세요. 출력 파일 경로, CSV 열, 답의 근거가 되는 파일과 행을 보여 주세요. Electron은 실행하지 마세요. 코드에서 확인한 사실과 가정을 구분하세요.

터미널에서 직접 REA의 정적 분석 자료를 수집할 수도 있습니다:

터미널
npx -y [email protected] analyze-javascript-application "/absolute/path/to/notes-example" --json > notes-analysis.json

이 명령은 튜토리얼에서 사용한 버전을 고정합니다. JSON은 자연어 설명이 아니라 분석 자료입니다. 코딩 에이전트는 이를 후속 분석의 지침으로 사용합니다.

04. 내보내기 경로 추적하기

분석 결과: 앱이 저장하도록 작성된 파일: notes.csv — 운영체제의 다운로드 폴더에 저장하도록 지정되어 있습니다. 설정 파일: main.js. 버튼에서 이 코드까지 도달하는 경로를 살펴보겠습니다.

버튼→프리로드→IPC→CSV 파일

Electron에서는 페이지와 메인 앱이 별도로 실행됩니다. 프리로드 브리지는 페이지에서 호출할 수 있는 메서드를 노출합니다. IPC 메시지는 파일을 쓸 수 있는 메인 앱으로 요청을 전달합니다.

위치코드의 동작
renderer.js클릭 핸들러가 호출하는 메서드: window.notes.exportCsv().
preload.js노출된 메서드가 호출하는 채널: notes:export IPC 채널입니다.
main.js해당 핸들러는 다운로드 경로를 만들고 다음 파일을 씁니다: notes.csv.
csv.js포매터가 쓰는 내용: id,title. 각 제목을 따옴표로 감싸고 내부 따옴표를 두 번 씁니다.

코드는 Electron의 다음 API를 사용합니다: app.getPath("downloads"). 이를 통해 의도된 저장 위치는 알 수 있지만 실제로 내 컴퓨터에 파일이 기록되었는지는 입증할 수 없습니다. 아래에서는 포매터를 직접 검증합니다.

05. 예측 검증하기

다음 제목의 노트를 포매터에 전달하세요: Hello, "REA". 예상 CSV 행은 다음과 같습니다:

예상 출력
id,title
1,"Hello, ""REA"""

쉼표는 따옴표로 감싼 하나의 필드 안에 남습니다. 내부 따옴표 하나는 두 개로 바뀝니다. 이를 검증하려면 다음 코드를 이 이름으로 저장하세요: check.cjs — 저장 위치는 압축을 푼 notes-example 폴더입니다:

check.cjs
const assert = require("node:assert/strict");
const { toCsv } = require("./csv.js");

const actual = toCsv([{ id: 1, title: 'Hello, "REA"' }]);
const expected = 'id,title\n1,"Hello, ""REA"""\n';
assert.equal(actual, expected);
console.log(actual);
console.log("PASS: comma and quotes stay in one field.");
샘플 폴더에서 실행
node check.cjs

로컬에서 검증했습니다. 2026년 10월 12일 REA 6.4.0 정적 분석과 이 포매터 검증을 실행했고 출력이 일치했습니다. Electron UI를 실행하거나 내보내기 버튼으로 파일 시스템 권한을 테스트하지는 않았습니다.

06. 더 구체적인 질문으로 이어가기

일반적인 설명을 더 요청하는 대신 설명을 검증하는 후속 질문을 해 보세요:

후속 프롬프트
notes.csv 쓰기에 실패하면 오류가 어떤 경로로 페이지에 전달되나요? 제공된 파일의 오류 처리를 추적하세요. 누락된 핸들러를 식별하되 앱은 수정하지 마세요.

모든 보고서에 다음 세 가지를 남기세요: 분석 결과, 소스 위치, 실제로 테스트한 내용. 이렇게 하면 그럴듯하지만 근거를 벗어난 설명을 더 쉽게 찾아낼 수 있습니다.

다음 / 실제 패키지 예제생성한 URL에 ‘!’가 남는 이유를 찾아보세요.

샘플과 분석 절차: REA 공식 첫 분석 가이드. 이 페이지는 로컬 분석과 포매터 검증을 추가한 독립적인 실습 가이드입니다. 분석 요약 다운로드.

REA가 처음인가요? REA란? · 가이드 검증 방법