2026년 9월 8일 화요일

[사회·과학·국어] 탐구 리서치 & 4컷 만화 삽화기 - 키워드로 만드는 시각화 연구 보고서



어려운 탐구 보고서를 4컷 만화로 요약한다! — 리서치 보고서 & 4컷 삽화 자동 생성기

🔬 초등 5~6학년 사회·과학 자유탐구 및 국어 '요약하여 표현해요' 단원 — 학생들이 탐구 주제 키워드를 입력하면, 핵심 리서치 요약문(도입-탐구-결과-제언)과 함께 이를 직관적으로 설명하는 4컷 만화 컷 구성(스토리보드) 및 CSS 캔버스 삽화를 즉시 조판해 줍니다. 텍스트 위주의 지루한 보고서 대신 A4 1장에 글과 그림이 완벽히 조화된 시각적 탐구 포트폴리오를 완성합니다.

📖 한 줄 정의

심기 모드(데이터 임베딩): API 데이터를 미리 받아 HTML 파일 안 상수로 박아두는 방식(앱 실행 중 외부 통신 0).

학내망 원칙: 학생 개인정보(실명·의견·성적·상담 기록)의 외부 수집·저장·전송 금지(쿼리에 학생 데이터가 담기는 외부 API 호출 포함) — 일반 공개 쿼리의 외부 호출은 허용하며, 학생 배포본은 심기 폴백(EMBED 상수)을 항상 내장한다.

1. 3대 핵심 분석 비교표

무엇이 바뀌었나요? / 영역 초보자를 위한 쉬운 설명 이렇게 한번 써보세요!
줄글 보고서 vs 4컷 만화 요약 학생들이 가장 어려워하는 '핵심 요약'을 4개의 칸(기-승-전-결)에 나누어 시각적으로 스토리텔링합니다. 1컷(동기) → 2컷(실험) → 3컷(발견) → 4컷(결론) 템플릿으로 과학 전람회 보고서 작성.
순수 CSS 컷 만화 렌더링 무거운 외부 이미지 생성 API 없이, 말풍선·말머리 이모지·CSS 격자로 가벼운 만화 컷을 브라우저가 직접 그립니다. 키워드 선택 시 각 컷의 대사와 배경색이 실시간 반응하여 변경.
인쇄 최적화 A4 원클릭 출력 화면에서 완성된 보고서와 4컷 만화를 브라우저 인쇄(Ctrl+P) 시 A4 1장에 여백 없이 딱 맞게 출력합니다. '보고서 인쇄' 버튼 클릭으로 PDF 저장 및 교실 게시판 부착.

2. 핵심 아키텍처 해설

① 4컷 만화 템플릿 데이터: COMIC_TEMPLATES 상수

const COMIC_TEMPLATES = {
  "환경오염": [
    { cut: 1, title: "발견", emoji: "🏭", speech: "우리 동네 하천에 거품이 왜 이렇게 많지?" },
    { cut: 2, title: "탐구", emoji: "🧪", speech: "간이 수질 검사 키트로 pH를 측정해보자!" },
    { cut: 3, title: "결과", emoji: "📈", speech: "공장 폐수 유입 지점에서 오염도가 3배 높았어." },
    { cut: 4, title: "실천", emoji: "🌱", speech: "주민 알림판을 세우고 친환경 세제를 쓰자!" }
  ]
};

주요 과학·사회 탐구 주제별로 4컷 만화 시나리오를 심기 모드(데이터 임베딩) 상수로 내장하여, 외부 통신 없이 즉시 시각적 뼈대를 제공합니다.

② 순수 CSS 2×2 만화 컷 그리드 & 말풍선 UI

.comic-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 12px;
  background: #000;
  padding: 8px;
  border-radius: 8px;
}
.comic-cut {
  background: #fff;
  border-radius: 4px;
  padding: 12px;
  min-height: 140px;
  position: relative;
}
.bubble {
  border: 2px solid #333;
  border-radius: 12px;
  padding: 8px 12px;
  font-size: 13px;
  background: #fdfefe;
}

2×2 만화 그리드 레이아웃과 CSS 가상 요소를 활용한 말풍선 꼬리표로 웹툰 같은 시각적 생동감을 브라우저 자체 렌더링으로 구현합니다.

③ A4 가로/세로 자동 인쇄 미디어 쿼리

@media print {
  body { background: #fff; padding: 0; }
  .no-print { display: none !important; }
  .report-page {
    width: 210mm;
    min-height: 297mm;
    padding: 15mm;
    box-shadow: none;
    page-break-after: always;
  }
}

버튼이나 입력창은 숨기고, 탐구 보고서 본문과 4컷 만화 삽화 영역만 종이 A4 규격에 완벽히 인쇄되도록 가드레일을 둡니다.

3. 초보자를 위한 바이브 코딩 실전 사용 예시

  1. 프롬프트 복사 — 아래 '제미나이 전용 에러 제로 프롬프트'를 복사합니다.
  2. 역질문 답변 — 제미나이가 묻는 탐구 교과(과학/사회)와 주제에 답합니다.
  3. HTML 파일 실행 — 메모장에 붙여넣고 탐구만화보고서.html로 저장 후 더블클릭합니다.

제미나이 전용 에러 제로 프롬프트

[🚨 에러 방지 기본 안전장치]
1. 단일 HTML 파일 완결성: 외부 라이브러리(CDN), 이미지 생성 API 없이 순수 바닐라 HTML/CSS/JS로 완성한다.
2. 심기 모드(데이터 임베딩): 과학/사회 대표 탐구 주제 5종(수질오염, 빛의 굴절, 분리수거, 우리 문화재, 생태계 먹이사슬)에 대한 4컷 만화 시나리오(이모지, 말풍선 대사, 해설)를 상수로 기본 내장한다.
3. 2×2 만화 그리드 레이아웃: CSS Grid로 신문 만화 스타일의 4컷 프레임을 구현하고, 학생이 직접 컷별 대사를 클릭하여 수정할 수 있도록 contenteditable 속성을 적용한다.
4. 인쇄 지원: @media print 스타일을 적용하여 '인쇄하기' 버튼 클릭 시 불필요한 컨트롤을 숨기고 A4 1장 규격으로 깔끔하게 출력한다.
5. 학생 개인정보 0: 학생 실명 입력 칸을 배제하고 탐구자 번호와 모둠 닉네임만 표시한다.
6. // TODO, /* 생략 */ 등의 미완성 코드는 절대 넣지 말고 끝까지 완성한다.

[❓ 역질문 유도]
코드를 즉시 작성하지 말고, 기획을 구체화하기 위한 다음 3가지 질문을 먼저 나에게 던져줘:
1. 주로 어떤 교과 탐구(과학 자유탐구, 사회 지역문제 탐구 등)에 적용할 예정인가요?
2. 기본으로 내장할 추천 탐구 주제 3가지를 미리 정해둘까요?
3. 만화 컷 디자인 스타일은 클래식 신문 흑백 톤과 컬러 카툰 톤 중 어느 것을 선호하시나요?

🎯 에디터 한줄평

"과학자가 논문을 쓸 때 그래피컬 앱스트랙트(Graphical Abstract, 시각적 초록)를 함께 제출하듯, 초등학생에게도 연구 결과를 직관적인 4컷 그림으로 요약해보는 경험은 가장 강력한 메타인지 훈련입니다. 글과 그림이 만나는 자리에서 아이들의 탐구력은 비로소 살아 숨 쉽니다."

📚 기술·교육 참고 링크

  • 그래피컬 앱스트랙트(Graphical Abstract) 연구 가이드: 학술 논문의 시각적 요약 기법
  • 교육과정 연계: 초등 5~6학년 사회(지역 문제 해결), 과학(자유 탐구와 실험), 국어(자료를 올바르게 활용해요, 사실과 관점)

[사회·국어·실과] 5단계 서브에이전트 뉴스 분석기 - 지역 신문 기사로 만드는 여론 트렌드 리포트



우리 고장 뉴스를 분석하는 꼬마 기자단! — 5단계 서브에이전트 여론 분석 리포트 생성기

📰 초등 5~6학년 사회 '우리 지역의 대표 축제와 현안', 국어 '뉴스와 주장', 실과 '소프트웨어와 생활' 융합 — 학생들이 수집한 우리 고장 뉴스 기사 텍스트를 5단계 서브에이전트(기사 수집가 ➔ 키워드 분석가 ➔ 찬반 감정 분류가 ➔ 시각화 차트 디자이너 ➔ 1분 종합 리포터) 파이프라인으로 처리하여, 지역 사회의 여론 트렌드 보고서를 완성합니다. 파이썬이나 복잡한 서버 없이 브라우저 단일 HTML에서 순수 자바스크립트 규칙 엔진으로 완벽 구동됩니다.

📖 한 줄 정의

심기 모드(데이터 임베딩): API 데이터를 미리 받아 HTML 파일 안 상수로 박아두는 방식(앱 실행 중 외부 통신 0).

학내망 원칙: 학생 개인정보(실명·의견·성적·상담 기록)의 외부 수집·저장·전송 금지(쿼리에 학생 데이터가 담기는 외부 API 호출 포함) — 일반 공개 쿼리의 외부 호출은 허용하며, 학생 배포본은 심기 폴백(EMBED 상수)을 항상 내장한다.

1. 3대 핵심 분석 비교표

무엇이 바뀌었나요? / 영역 초보자를 위한 쉬운 설명 이렇게 한번 써보세요!
단일 프롬프트 vs 5단계 서브에이전트 "뉴스 요약해줘" 대신, 5개의 전문 역할(수집-키워드-감정-차트-종합)이 순차적으로 데이터를 넘겨주며 분석의 정밀도를 높입니다. 에이전트 1(기사 입력) ➔ 에이전트 2(빈도수 계산) ➔ 에이전트 3(긍정/부정 비율) 순서로 단계별 결과 검증.
외부 유료 LLM 의존 제거 외부 API 결제 없이 브라우저 내장 자바스크립트 형태소/키워드 추출 규칙 엔진으로 100% 무료 처리합니다. 우리 고장 기사 3편을 복사해 붙여넣으면 1초 만에 상위 5대 핵심 키워드 랭킹 도출.
순수 CSS 여론 감정 게이지 찬성/반대, 긍정/우려 감정 비율을 도넛 차트나 진행 바(progress bar)로 시각화하여 사회 참여 토론으로 연결합니다. '고장 개발 vs 환경 보전' 뉴스 토론 수업에서 객관적 여론 지표로 활용.

2. 핵심 아키텍처 해설

① 5단계 파이프라인 처리 흐름도

[Step 1. 뉴스 원문 주입] (INPUT)
       ▼
[Step 2. 불용어 제거 및 키워드 빈도 계수] (Frequency Analysis)
       ▼
[Step 3. 감정 사전 매칭 (긍정/우려/중립 점수화)] (Sentiment Score)
       ▼
[Step 4. 시각화 데이터 렌더링 (Canvas/CSS Bar)] (Data Viz)
       ▼
[Step 5. 3줄 핵심 요약 브리핑 리포트 출력] (Final Report)

서브에이전트 아키텍처의 핵심인 '역할 분담과 데이터 전달'을 자바스크립트 체이닝 함수로 단순화하여 초등학생도 소프트웨어 파이프라인의 구조를 한눈에 이해할 수 있습니다.

② 로컬 키워드 빈도 추출 함수

function analyzeKeywords(text) {
  const stopWords = ["은", "는", "이", "가", "을", "를", "에", "의", "했다", "있다", "에서"];
  const words = text.replace(/[^가-힣a-zA-Z0-9\s]/g, "").split(/\s+/);
  const freq = {};
  words.forEach(w => {
    if (w.length >= 2 && !stopWords.includes(w)) {
      freq[w] = (freq[w] || 0) + 1;
    }
  });
  return Object.entries(freq).sort((a, b) => b[1] - a[1]).slice(0, 5);
}

한글 조사와 불용어를 걸러내고 의미 있는 2글자 이상의 명사/단어 빈도를 계산하여 상위 키워드 랭킹을 산출합니다.

③ 감정 사전 기반 여론 신호등 계산

const SENTIMENT_DICT = {
  positive: ["발전", "성공", "기대", "도약", "환영", "개선", "활기", "협력"],
  negative: ["우려", "갈등", "반발", "위험", "피해", "손실", "부족", "논란"]
};

function scoreSentiment(text) {
  let pos = 0, neg = 0;
  SENTIMENT_DICT.positive.forEach(w => { if (text.includes(w)) pos++; });
  SENTIMENT_DICT.negative.forEach(w => { if (text.includes(w)) neg++; });
  const total = pos + neg || 1;
  return { posRate: Math.round((pos / total) * 100), negRate: Math.round((neg / total) * 100) };
}

복잡한 AI 서버 통신 없이도, 사전에 정의된 감정 어휘 사전을 대조하여 기사 내 여론 동향을 긍정/우려 백분율(%)로 즉시 도출합니다.

3. 초보자를 위한 바이브 코딩 실전 사용 예시

  1. 프롬프트 복사 — 아래 '제미나이 전용 에러 제로 프롬프트'를 복사합니다.
  2. 역질문 답변 — 제미나이가 묻는 분석 대상 지역과 뉴스 카테고리에 답합니다.
  3. HTML 파일 실행 — 메모장에 붙여넣고 뉴스여론분석기.html로 저장 후 더블클릭합니다.

제미나이 전용 에러 제로 프롬프트

[🚨 에러 방지 기본 안전장치]
1. 단일 HTML 파일 완결성: 외부 AI API 호출(OpenAI, Claude 등) 없이, 순수 브라우저 자바스크립트로 5단계 서브에이전트 시뮬레이션을 구현한다.
2. 심기 모드(데이터 임베딩): const SAMPLE_NEWS = [...] 상수에 우리 고장 예시 기사 3건(지역 축제 개최, 전통시장 활성화, 도로 교통 개선)을 기본 내장하여 즉시 시연 가능하게 한다.
3. 5단계 시각적 진행 상태: 화면 상단에 '수집 ➔ 키워드 ➔ 감정분석 ➔ 차트 ➔ 브리핑' 5개 스텝 인디케이터를 두고, '분석 시작' 버튼 클릭 시 각 단계가 0.4초 간격으로 하이라이트되며 순차 완료되도록 한다.
4. 순수 CSS 여론 차트: 긍정(파랑) vs 우려(주황) 비율을 가로 막대 게이지(progress bar)로 시각화하고 상위 5대 키워드는 뱃지(Badge) 형태로 렌더링한다.
5. 학생 개인정보 0: 학생 이름이나 개인 메모를 수집하지 않으며, 공개 뉴스 기사 텍스트만 처리한다.
6. // TODO, /* 생략 */ 등의 미완성 코드는 절대 넣지 말고 끝까지 완성한다.

[❓ 역질문 유도]
코드를 즉시 작성하지 말고, 기획을 구체화하기 위한 다음 3가지 질문을 먼저 나에게 던져줘:
1. 주로 어떤 지역 현안(예: 문화관광 축제, 환경 생태 보전, 교통 및 안전 등) 기사를 다룰 예정인가요?
2. 5대 핵심 키워드 표시 시 단어 언급 횟수(빈도수)를 함께 배지에 표기할까요?
3. 분석 완료 후 보고서 인쇄(@media print) 기능도 함께 포함할까요?

🎯 에디터 한줄평

"뉴스를 읽고 무비판적으로 수용하는 소비자에 머물 것인가, 데이터를 분해하고 여론의 맥락을 짚어내는 능동적 분석가가 될 것인가? 5단계 에이전트 파이프라인을 따라 기사를 쪼개어보는 이 작은 실습은 미디어 리터러시와 인공지능 워크플로우를 동시에 가르치는 가장 현대적인 시민성 수업입니다."

📚 기술·교육 참고 링크

  • 에이전틱 워크플로우(Agentic Workflow) 기초 개념: 서브에이전트 역할 분담과 파이프라인 설계
  • 교육과정 연계: 초등 5~6학년 사회(우리 지역의 대표 축제와 현안), 국어(뉴스와 주장, 매체 자료를 비판적으로 수용해요), 실과(소프트웨어와 생활)

[실과·수학] 3대 에러 디버깅 방탈출 - 코드 속 숨은 사마귀를 잡아라!

코드 속 사마귀(Bug)를 잡아라! — 3대 에러(타입·문법·모듈) 디버깅 방탈출 퀴즈 웹앱

🐛 초등 5~6학년 실과 '소프트웨어로 문제를 해결해요' 및 수학 '규칙 찾기' 융합 — 학생들이 코드 속에 숨은 3대 오류 유형(타입 에러, 문법 오류, 모듈 오류)을 찾아내는 게임 형태의 디버깅 방탈출입니다. 컴파일러처럼 엄격한 에러 코드와 정확한 수정 제안이 정답 카드로 작동하여, SW 개발의 절반을 차지하는 디버깅 과정을 아이들이 재미있게 마스터합니다.

📖 한 줄 정의

심기 모드(데이터 임베딩): API 데이터를 미리 받아 HTML 파일 안 상수로 박아두는 방식(앱 실행 중 외부 통신 0).

학내망 원칙: 학생 개인정보(실명·의견·성적·상담 기록)의 외부 수집·저장·전송 금지(쿼리에 학생 데이터가 담기는 외부 API 호출 포함) — 일반 공개 쿼리의 외부 호출은 허용하며, 학생 배포본은 심기 폴백(EMBED 상수)을 항상 내장한다.

1. 3대 핵심 분석 비교표

무엇이 바뀌었나요? / 영역 초보자를 위한 쉬운 설명 이렇게 한번 써보세요!
문법 오류(Syntax) 컴퓨터가 문장을 끝까지 읽지도 못하는 오류 — 괄호 누락, 오타, 세미콜론 미삽입 등입니다. const x = (5 + 3; ← 괄호 하나가 닫히지 않았습니다! (방탈출 1단계)
타입 오류(TypeError) "숫자에 사과를 더하려고 하는 오류" — 문자와 숫자를 섞어 연산하거나 없는 변수를 불러올 때 발생합니다. console.log(studentNames[25]); ← 20명 명단에서 25번을 찾고 있습니다! (방탈출 2단계)
모듈/참조 오류 "없는 사람한테 일을 시키는 오류" — 존재하지 않는 파일이나 함수를 가져오려고 할 때 발생합니다. import { caculate } from 'math'; ← 'calculate'의 오타입니다! (방탈출 3단계)

2. 핵심 아키텍처 해설

① 에러 시나리오 데이터: BUG_STAGES 상수

const BUG_STAGES = [
  {
    stage: 1,
    type: "문법 오류 (Syntax Error)",
    difficulty: "쉬움",
    code: `const x = (5 + 3;\nconsole.log(x);`,
    question: "위 코드에서 어느 부분이 잘못되었나요?",
    options: ["괄호가 닫히지 않았다", "console.log를 사용할 수 없다", "x라는 변수명은 금지된다"],
    answer: 0,
    hint: "코드는 문장을 끝내기 전에 열어둔 괄호를 반드시 닫아야 해요.",
    fix: "const x = (5 + 3);"
  },
  {
    stage: 2,
    type: "타입 오류 (TypeError)",
    difficulty: "보통",
    code: `const scores = [85, 90, 78];\nconst avg = scores[5];\nconsole.log(avg.toFixed(1));`,
    question: "위 코드가 작동하지 않는 이유는 무엇인가요?",
    options: ["toFixed는 존재하지 않는다", "scores[5]는 존재하지 않는(undefined)", "배열은 수정할 수 없다"],
    answer: 1,
    hint: "배열의 인덱스는 0부터 시작합니다. 0,1,2 세 개만 있어요!",
    fix: "const avg = scores[2];"
  },
  {
    stage: 3,
    type: "참조 오류 (Reference/Module Error)",
    difficulty: "도전",
    code: `import { caculateAverage } from './math-tools.js';\nconsole.log(calculateAverage(10, 20));`,
    question: "함수를 불러왔는데도 오류가 납니다. 무엇이 문제일까요?",
    options: ["import는 사용할 수 없다", "이름이 오타(caculate vs calculate)다", "경로가 틀렸다"],
    answer: 1,
    hint: "가져온 이름과 사용하는 이름의 철자를 자세히 비교해 보세요.",
    fix: "import { calculateAverage } from './math-tools.js';"
  }
];

교실에서 바로 사용할 수 있는 3대 오류 유형별 실제 발생 사례와 정답, 수정 코드를 상수로 내장하는 심기 모드(데이터 임베딩) 구조입니다.

② 방탈출 타이머 & 잠금 로직

let timeLeft = 180; // 3분 타이머
const timer = setInterval(() => {
  timeLeft--;
  updateClock(timeLeft);
  if (timeLeft <= 0) {
    clearInterval(timer);
    showFailScreen("3분 내 방을 탈출하지 못했습니다!");
  }
}, 1000);

function checkAnswer(stageId, userChoice) {
  if (userChoice === BUG_STAGES[stageId].answer) {
    soundEffect("correct");
    unlockNextStage(stageId + 1); // 다음 단계 잠금 해제
  } else {
    soundEffect("wrong");
    timeLeft -= 15; // 오답 시 15초 감점!
  }
}

정답 선택 시 잠금 해제로 진행하고, 오답 시 타이머가 15초씩 감소하는 긴장감 넘치는 게이미피케이션 메커니즘으로 몰입도를 높입니다.

③ 코드 에디터 하이라이팅 스타일

.code-block {
  font-family: 'Consolas', 'Courier New', monospace;
  background: #1e1e2e;
  color: #cdd6f4;
  padding: 16px;
  border-radius: 8px;
  font-size: 14px;
  line-height: 1.6;
  white-space: pre-wrap;
}
.bug-highlight {
  background: rgba(243, 139, 168, 0.25);
  border-bottom: 2px solid #f38ba8;
  animation: pulse 1s infinite;
}

VS Code 같은 다크모드 코드 에디터 느낌의 시각적 구현으로 아이들이 실제 개발 환경에 가까운 UI를 경험하게 합니다.

3. 초보자를 위한 바이브 코딩 실전 사용 예시

  1. 프롬프트 복사 — 아래 '제미나이 전용 에러 제로 프롬프트'를 복사합니다.
  2. 역질문 답변 — 제미나이가 묻는 대상 학년과 방탈출 방 개수에 답합니다.
  3. HTML 파일 실행 — 메모장에 붙여넣고 디버깅방탈출.html로 저장 후 더블클릭합니다.

제미나이 전용 에러 제로 프롬프트

[🚨 에러 방지 기본 안전장치]
1. 단일 HTML 파일 완결성: 외부 라이브러리, 코드 에디터 라이브러리(Prism/Highlight.js 등) 없이 순수 바닐라 HTML/CSS/JS로 완성한다.
2. 심기 모드(데이터 임베딩): const BUG_STAGES = [...] 상수에 3대 오류 유형(문법, 타입, 참조)별 시나리오를 3~6개 내장한다.
3. 게이미피케이션 로직: 3분 타이머, 정답 시 다음 문 잠금 해제, 오답 시 15초 감점 방식으로 구현한다.
4. 다크모드 코드 에디터 UI: VS Code 스타일의 다크 배경, 모노스페이스 폰트, 오류 부분 붉은색 하이라이트 효과를 적용한다.
5. 학생 개인정보 0: 학생 실명 입력 없이 조별 번호 및 '디버깅 전문가' 닉네임만 사용한다.
6. // TODO, /* 생략 */ 등의 미완성 코드는 절대 넣지 말고 끝까지 완성한다.

[❓ 역질문 유도]
코드를 즉시 작성하지 말고, 기획을 구체화하기 위한 다음 3가지 질문을 먼저 나에게 던져줘:
1. 방탈출 방 개수는 몇 개로 할까요? (기본: 3단계)
2. 오류 코드 언어는 무엇으로 할까요? (JavaScript / Python 스타일 의사코드)
3. 최종 탈출 성공 시 '버그 제거 마스터' 인증서를 표시할까요?

🎯 에디터 한줄평

"실패를 두려워하기보다 '버그를 잡는 탐정'이 되어보라는 선언입니다. 실무 개발자도 80%의 시간을 디버깅에 씁니다. 오류 코드를 미워하지 않고 규칙적인 퍼즐로 즐겁게 다루는 경험은, 아이들이 SW를 포기하는 가장 큰 이유인 '갑작스러운 붉은 에러 문구 공포'를 완벽하게 이겨내는 훈련입니다."

📚 기술·교육 참고 링크

  • CS 언플러그드 디버깅 개념: 오류 유형별 발생 원인 및 수정 방법
  • 교육과정 연계: 초등 5~6학년 실과(소프트웨어로 문제를 해결해요), 수학(규칙 찾기, 논리와 추론)

세 갈래 오솔길은 거칠어졌으나 소나무와 국화는 그대로라 - 405년 도연명이 귀거래사에 새긴 정원의 자유

📢 핵심 30초 요약
도심 속 베란다 화분과 작은 정원에서 쉼을 찾는 현대인처럼, 1,600년 전 도연명은 왜 관직을 버리고 시골 뜰로 돌아갔을까요? 거친 잡초 속에서도 푸르게 남은 소나무와 국화를 통해 참된 주거와 영혼의 자유를 되찾는 지혜를 전해드립니다.

안녕하세요! 독자 여러분. 오늘은 전통 조경과 자연 정원의 자유에 대해 누구나 쉽게 따라 할 수 있는 실전 가이드를 전해드립니다.

평소 "끝없는 업무와 화면의 피로 속에서 작은 식물 하나를 돌보며 숨을 돌리고 싶은데, 왜 도심 속 휴식은 늘 불완전한지" 때문에 고민 많으셨을 텐데요, 오늘 소개하는 고전의 지혜를 적용하면 나만의 공간에서 완벽한 영혼의 안식을 누릴 수 있습니다.


📊 핵심 포인트 3가지 한눈에 보기

도연명이 뜰에서 발견한 공간과 자유의 원리를 한눈에 비교해 보세요.

구분 (영역) 핵심 설명 이렇게 활용하세요!
1단계 포인트 삼경취황 송국유존(三徑就荒 松菊猶存) 세속의 번잡함을 덜어내고 변치 않는 본질에 집중
2단계 포인트 남쪽 창가의 미학 (기오, 寄傲) 넓은 평수보다 내 주체성을 누릴 수 있는 작은 쉼터 마련
3단계 포인트 무심출수(無心出岫)의 생태 합일 인위적인 야망과 불안을 내려놓고 자연의 리듬 회복

💡 실전 사용 예시 & 액션 플랜

아래 템플릿을 복사하여 자신의 상황에 맞게 바로 적용해 보세요.

🪄 바로 복사해 쓰는 실전 템플릿

"뜰 안의 세 갈래 길은 잡초로 황폐해졌으나, 소나무와 국화는 아직도 의연히 남아 있구나.

남쪽 창가에 기대어 무한한 평안을 얻으니, 비록 작은 방일지라도 이것이야말로 내 마음이 가장 편안히 쉴 집이로다."
— 도연명, 《귀거래사(歸去來辭)》 중에서

🏃 실전 적용 3단계

  1. 1단계: 집 안의 작은 창가나 베란다에 나만의 식물 한두 그루를 두고 온전한 시선을 보냅니다.
  2. 2단계: 타인의 시선이나 세상의 평가에서 벗어나 오직 나 자신에게만 집중하는 침묵의 시간을 가집니다.
  3. 3단계: 인위적인 과시나 억지스러운 조작을 멈추고 계절의 자연스러운 흐름에 몸을 맡깁니다.

🎯 에디터 한줄평

"진정한 집은 평수가 넓은 저택이 아니라, 남의 눈치를 보지 않고 소나무 한 그루를 바라보며 내 영혼의 숨결을 온전히 내쉴 수 있는 한 뼘의 뜰에서 완성됩니다."

📌 작품 및 출처 정보
작품: 《귀거래사 (歸去來辭)》
저자: 도연명 (陶淵明, 365–427)
시대: 405년 (중국 동진 전원 문학)

금고에 쌓인 금화는 부가 아니다 - 1776년 아담 스미스가 국부론에 새긴 무역 흑자의 역설

📢 핵심 30초 요약
연일 발표되는 경상수지 흑자 소식 뒤에서, 250년 전 아담 스미스는 왜 "금고에 갇힌 금괴는 부가 아니다"라고 외쳤을까요? 18세기 스페인 제국의 몰락을 통해 밝혀낸 무역 흑자의 착시와 참된 부의 본질을 정리합니다.

안녕하세요! 독자 여러분. 오늘은 경상수지 흑자와 국가 무역의 본질에 대해 누구나 쉽게 따라 할 수 있는 실전 가이드를 전해드립니다.

평소 "뉴스에서 연일 대규모 무역 흑자를 보도하는데도 왜 내 장바구니 물가는 여전히 팍팍하고 살기 힘든지" 때문에 고민 많으셨을 텐데요, 오늘 소개하는 고전의 지혜를 적용하면 경제 뉴스의 표면을 넘어 실질적인 삶의 질을 읽어내는 안목을 가질 수 있습니다.


📊 핵심 포인트 3가지 한눈에 보기

아담 스미스가 통찰한 화폐의 환상과 참된 국부의 차이를 비교해 보세요.

구분 (영역) 핵심 설명 이렇게 활용하세요!
1단계 포인트 화폐는 도로일 뿐 부 자체가 아니다 금고 잔고보다 실질 구매력과 생산성을 점검
2단계 포인트 스페인의 황금과 네덜란드 병의 경고 외화 유입에 도취하지 않고 기초 체력 산업 육성
3단계 포인트 무역의 목적은 소비자의 생활 풍요 수출 흑자 집착을 넘어 시민의 삶의 질 향상 추구

💡 실전 사용 예시 & 액션 플랜

아래 템플릿을 복사하여 자신의 상황에 맞게 바로 적용해 보세요.

🪄 바로 복사해 쓰는 실전 템플릿

"화폐는 큰길과 같다. 그것은 농작물과 가축을 시장으로 실어 나르는 도로일 뿐, 도로 자체가 한 톨의 곡식을 생산하지는 못한다.

참된 국부(國富)는 금고 속에 갇힌 금괴의 무게가 아니라, 그 나라의 토지와 노동이 해마다 생산해 내는 유용한 생산물의 총체다."
— 아담 스미스, 《국부론》 제4편 중상주의 체계 비판 중에서

🏃 실전 적용 3단계

  1. 1단계: 무역 수지 통계 뒤에 가려진 실질 체감 물가와 가계 가처분 소득을 점검합니다.
  2. 2단계: 화폐나 자산 가격의 거품이 아닌, 일상을 지탱하는 실질적 생산 역량에 집중합니다.
  3. 3단계: 제로섬의 경쟁 논리를 벗어나 상호 이익을 만드는 협력적 교환 관계를 구축합니다.

🎯 에디터 한줄평

"국가의 위대함은 금고에 쌓인 숫자의 높이가 아니라, 그 땅에 살아가는 평범한 사람들이 매일 누리는 일상의 자유와 풍요의 무게로 증명됩니다."

📌 작품 및 출처 정보
작품: 《국부론 (The Wealth of Nations)》
저자: 아담 스미스 (Adam Smith, 1723–1790)
시대: 1776년 (18세기 스코틀랜드 고전 경제학)

세상에 당신 하나만 남는다 해도 - 1813년 제인 오스틴이 오만과 편견에 새긴 결혼의 조건

📢 핵심 30초 요약
가을 웨딩 시즌과 결혼의 경제적 조건이라는 현실적인 청년 세대의 화두에서 출발하여, 1813년 제인 오스틴이 《오만과 편견》에 기록한 '다아시의 오만한 청혼과 엘리자베스의 거절'을 발굴합니다. 막대한 부와 지위 앞에서도 굴복하지 않고 인격적 존중과 진정한 사랑을 지켜낸 불멸의 결혼관을 전합니다.

안녕하세요! 독자 여러분. 오늘은 가을 결혼 시즌과 혼인, 그리고 배우자의 조건과 진정한 사랑의 언약이라는 묵직한 일상의 화두에서 출발하여, 영국 문학의 가장 사랑받는 고전 《오만과 편견》 속 결정적 장면으로 여러분을 안내합니다.

평소 "재산, 직업, 배경이라는 세속적 계산기 앞에서 우리는 어떻게 흔들리지 않고 서로의 영혼을 마주 보는 진실한 사랑을 지킬 수 있을까?"라는 생각을 해보셨을 텐데요, 오늘 소개하는 엘리자베스의 당당한 거절을 통해 돈보다 고귀한 인간의 자존과 참된 사랑의 무게를 만날 수 있습니다.


📊 핵심 포인트 3가지 한눈에 보기

오늘의 결혼 조건 화두와 1813년 고전 명작이 직접 만나는 3가지 팩트를 비교해 보세요.

구분 (영역) 핵심 설명 이렇게 읽어보세요!
1. 발굴 원전 & 저자 《오만과 편견》 (제인 오스틴, 1813년) 신분 사회의 속물근성을 꿰뚫어 본 사실주의 사회 문학의 정점
2. 클로즈업 장면 제34장: 연간 1만 파운드 귀족 다아시의 청혼을 단칼에 거절한 엘리자베스 "세상에 남자가 당신뿐이라도 결혼하지 않겠다"는 당당한 선언
3. 인문학적 질문 결혼은 경제적 생존의 거래인가, 두 인격의 평등한 결합인가? 조건의 화려함보다 앞서야 할 상호 존중과 정서적 교감의 가치

💡 원전 속 결정적 장면 & 깊이 읽기

원전의 생생한 텍스트 인용과 역사적 해설을 확인해 보세요.

📖 원문 핵심 인용

"당신은 제 가족을 모욕했고 제게 청혼하는 일이 마치 인생의 오점인 양 생색을 내셨습니다.
당신이 설령 세상에서 가장 매력적이고 부유한 신사라 할지라도,
저를 무시하고 제 인격을 짓밟은 사람의 청혼을 제가 받아들일 것 같습니까?
이 세상에 남자가 오직 당신 한 사람만 남는다 해도, 저는 결코 당신과 결혼하지 않을 것입니다."

— 《오만과 편견》 제34장 중 엘리자베스의 말

🏃 우리가 놓치기 쉬운 3가지 고전의 진실

  1. 1단계 (생존의 덫): 여성이 재산을 상속받지 못하던 시대에 부유한 청혼을 거절한 목숨 건 결단이었습니다.
  2. 2단계 (거래 거부): 경제적 안정을 위해 영혼 없는 결혼을 택한 세태를 거부하고 인격적 교감을 택했습니다.
  3. 3단계 (성숙의 계기): 이 거절을 통해 다아시는 신분적 오만을 깨뜨렸고 엘리자베스는 성급한 편견을 돌아보았습니다.

🎯 마지막 한 문장

"결혼의 가장 완전한 조건은 상대방이 가진 재산의 무게가 아니라, 그 어떤 화려한 조건 앞에서도 나의 자존과 인격을 온전히 지켜낼 수 있는 정직한 사랑의 깊이입니다."

📌 작품 및 출처 정보
《오만과 편견 (Pride and Prejudice)》 (제인 오스틴, 1813년) — 제34장

[실과·사회·과학] 학교 탐구 프로젝트 4대 앱 유형 진단기 - 나만의 1인 1웹앱 설계 도우미

내 탐구에는 어떤 웹앱이 맞을까? — 4대 앱 유형 진단 및 1인 1웹앱 제작 도우미

🔍 초등 5~6학년 실과 '소프트웨어로 문제를 해결해요' 및 사회·과학 자유탐구 융합 — 학생들이 풀고 싶은 문제의 특성을 4가지 질문으로 진단하면, 가장 적합한 앱 유형(정보 검색기, 계산 시뮬레이터, 데이터 트래커, 인터랙티브 게임)을 자동 추천하고 나만의 웹앱 설계서 초안까지 뽑아주는 디지털 수행평가 도우미입니다.

📖 한 줄 정의

심기 모드(데이터 임베딩): API 데이터를 미리 받아 HTML 파일 안 상수로 박아두는 방식(앱 실행 중 외부 통신 0).

학내망 원칙: 학생 개인정보(실명·의견·성적·상담 기록)의 외부 수집·저장·전송 금지(쿼리에 학생 데이터가 담기는 외부 API 호출 포함) — 일반 공개 쿼리의 외부 호출은 허용하며, 학생 배포본은 심기 폴백(EMBED 상수)을 항상 내장한다.

1. 3대 핵심 분석 비교표

무엇이 바뀌었나요? / 영역 초보자를 위한 쉬운 설명 이렇게 한번 써보세요!
유형 1: 정보 검색기 (Searcher) "우리 동네 역사 인물 알아보기"처럼 데이터를 찾아 보여주는 앱입니다. 키워드 입력 → WIDE 검색 결과 → 카드 레이아웃 정렬
유형 2: 계산 시뮬레이터 (Calculator) "내가 버린 쓰레기가 환경에 미치는 영향"처럼 공식으로 결과를 계산하는 앱입니다. 슬라이더 입력 → 즉시 결과 숫자/그래프 갱신
유형 3: 데이터 트래커 (Tracker) "1주일간 내 심박수 변화 기록"처럼 날짜별 데이터를 쌓는 앱입니다. localStorage 입력 → 시간순 정렬 → 꺾은선 그래프 출력
유형 4: 인터랙티브 게임 (Game) "습관을 바꾸는 선택 게임"처럼 사용자가 클릭할 때마다 결과가 달라지는 앱입니다. 선택지 터치 → 다음 시나리오 로딩 → 점수 부여

2. 핵심 아키텍처 해설

① 4대 진단 질문 매트릭스

const DIAGNOSIS = [
  { q: "내가 찾으려는 정보는 이미 있는가?", yes: "searcher", no: 2 },
  { q: "공식으로 계산할 수 있는가?", yes: "calculator", no: 3 },
  { q: "시간이 지나며 데이터를 쌓아야 하는가?", yes: "tracker", no: "game" }
];

복잡한 AI 없이 3개의 간단한 예/아니오 분기로 학생의 탐구 주제에 딱 맞는 앱 유형을 진단합니다.

② 설계서 초안 자동 생성 엔진

function generatePlan(type) {
  const plans = {
    "searcher": { view: "검색창+카드", logic: "배열 필터링(filter)", data: "EMBED_ENTRIES 상수" },
    "calculator": { view: "슬라이더+결과", logic: "수식 연산", data: "계수 상수" },
    "tracker": { view: "입력 폼+차트", logic: "localStorage CRUD", data: "사용자 입력" },
    "game": { view: "선택 버튼", logic: "분기 논리", data: "EMBED_SCENARIOS" }
  };
  return plans[type];
}

진단된 유형에 맞는 구체적인 화면(view), 로직(logic), 데이터 저장 방식(data) 설계서를 자동 생성하여 학생이 제미나이에 바로 넣을 수 있는 프롬프트 템플릿으로 변환합니다.

③ 인쇄용 설계서 서식 (A4 반쪽)

@media print {
  .diagnosis-result {
    border: 3px solid #4a90d9;
    padding: 20px;
  }
  .diagnosis-result h3 {
    border-bottom: 2px solid #4a90d9;
    padding-bottom: 8px;
  }
}

진단 결과를 A4 종이 반쪽에 담아 수행평가 파일에 끼워 넣을 수 있는 공식적인 기록물 서식으로 출력합니다.

3. 초보자를 위한 바이브 코딩 실전 사용 예시

  1. 프롬프트 복사 — 아래 '제미나이 전용 에러 제로 프롬프트'를 복사합니다.
  2. 역질문 답변 — 제미나이가 묻는 탐구 분야(과학/사회/보건)와 학년에 답합니다.
  3. HTML 파일 실행 — 메모장에 붙여넣고 나의앱유형진단기.html로 저장 후 더블클릭합니다.

제미나이 전용 에러 제로 프롬프트

[🚨 에러 방지 기본 안전장치]
1. 단일 HTML 파일 완결성: 외부 라이브러리, 외부 폰트 없이 순수 바닐라 HTML/CSS/JS로 완성한다.
2. 심기 모드(데이터 임베딩): DIAGNOSIS 분기 매트릭스 상수에 4대 유형 진단 로직을 완전히 내장한다.
3. 설계서 자동 생성: 진단 완료 시 해당 유형별 화면 구성 예시, 핵심 코드 골격, 필요 데이터 구조를 구체적으로 텍스트로 출력한다.
4. 학생 개인정보 0: 실명 입력 없이 탐구 주제 키워드만 자유롭게 입력받는다.
5. // TODO, /* 생략 */ 등의 미완성 코드는 절대 넣지 말고 끝까지 완성한다.

[❓ 역질문 유도]
코드를 즉시 작성하지 말고, 기획을 구체화하기 위한 다음 3가지 질문을 먼저 나에게 던져줘:
1. 진단 결과에 예시 탐구 주제 3가지를 포함할까요?
2. 진단 결과 화면 디자인은 심플 카드형과 컬러 매트릭스 중 어느 것을 선호하시나요?
3. 각 유형별 '제미나이용 프롬프트 템플릿'을 복사 버튼으로 포함할까요?

🎯 에디터 한줄평

"아이들이 웹앱을 만들 때 가장 자주 포기하는 이유는 '어떤 앱을 만들어야 할지 모르겠다'입니다. 이 진단기는 아이들이 가진 막연한 탐구 꿈을 4개의 질문을 통해 구체적인 SW 설계도로 바꿔주는 디지털 로드맵입니다. 좋은 설계는 개발의 80%를 이기는 법입니다."

📚 기술·교육 참고 링크

  • CS 언플러그드 SW 설계 개념: 문제 정의 → 알고리즘 설계 → 프로그래밍 → 테스트
  • 교육과정 연계: 초등 5~6학년 실과(소프트웨어로 문제를 해결해요), 사회(탐구 주제 선정), 과학(자유 탐구 설계)

[창체·자치] 새 학기 학습 성향 & 의사소통 스타일 진단기 - 갈등 없는 모둠 편성의 비밀

너는 어떤 스타일이야? — 새 학기 학습 성향 & 의사소통 스타일 진단 퀴즈 웹앱

🤝 초등 3~6학년 창의적 체험활동 및 학급 자치 '새 학기 관계 맺기' 주간 — 학생들이 모둠 활동 시 나타나는 4대 학습 성향(아이디어 뱅크형, 꼼꼼 기록형, 열정 발표형, 묵묵 실천형)과 의사소통 스타일을 8개 상황 퀴즈로 진단합니다. 진단 결과는 아기자기한 캐릭터 카드와 함께 '나와 잘 맞는 협동 짝꿍' 조언을 제공하며, 담임교사는 이 데이터를 바탕으로 한쪽에 쏠리지 않는 조화로운 모둠을 1초 만에 자동 편성합니다.

📖 한 줄 정의

심기 모드(데이터 임베딩): API 데이터를 미리 받아 HTML 파일 안 상수로 박아두는 방식(앱 실행 중 외부 통신 0).

학내망 원칙: 학생 개인정보(실명·의견·성적·상담 기록)의 외부 수집·저장·전송 금지(쿼리에 학생 데이터가 담기는 외부 API 호출 포함) — 일반 공개 쿼리의 외부 호출은 허용하며, 학생 배포본은 심기 폴백(EMBED 상수)을 항상 내장한다.

1. 3대 핵심 분석 비교표

무엇이 바뀌었나요? / 영역 초보자를 위한 쉬운 설명 이렇게 한번 써보세요!
성격 검사 vs 교실 협동 스타일 일반 MBTI 대신 모둠 프로젝트 실전 상황(주제 정하기, 역할 나누기, 갈등 해결)에 맞춘 4대 행동 양식을 진단합니다. 3월 첫 주 스마트패드로 3분 진단 후 결과 카드를 환경판에 부착.
균형 모둠 자동 믹싱 엔진 특정 성향(예: 아이디어형만 4명)이 한 모둠에 쏠리지 않도록 4개 유형을 지그재그로 분배하는 라운드 로빈 알고리즘을 내장합니다. '모둠 편성하기' 버튼 클릭 시 4인 1조 황금 밸런스 모둠표 즉시 생성.
협동 가이드라인 카드 제공 단순 결과 통보를 넘어 "이 친구와 활동할 때는 이렇게 말해봐요"라는 구체적 대화 스킬 문장을 함께 제시합니다. 국어 '서로의 의견을 존중해요' 수업 토의 자료로 직접 연계.

2. 핵심 아키텍처 해설

① 8개 상황 문항 매트릭스: QUIZ_ITEMS 상수

const QUIZ_ITEMS = [
  {
    q: "모둠 발표 주제를 정할 때 나는?",
    options: [
      { text: "재미있고 엉뚱한 아이디어를 계속 던진다", type: "idea" },
      { text: "친구들의 의견을 칠판이나 공책에 정리한다", type: "record" },
      { text: "어떤 주제가 청중에게 좋을지 발표를 맡는다", type: "present" },
      { text: "결정된 주제에 맞춰 자료를 묵묵히 찾아온다", type: "action" }
    ]
  }
];

아이들의 실제 모둠 활동 상황을 반영한 문항과 선택지별 유형 매핑 데이터를 상수로 내장하는 심기 모드(데이터 임베딩) 구조입니다.

② 라운드 로빈 균형 모둠 편성 알고리즘

function makeBalancedTeams(students, teamSize = 4) {
  // 성향별로 버킷(bucket) 분리
  const buckets = { idea: [], record: [], present: [], action: [] };
  students.forEach(s => buckets[s.type].push(s));
  
  const numTeams = Math.ceil(students.length / teamSize);
  const teams = Array.from({ length: numTeams }, () => []);
  
  // 각 유형에서 모둠마다 골고루 1명씩 배분
  ["idea", "record", "present", "action"].forEach(type => {
    buckets[type].forEach((student, idx) => {
      teams[idx % numTeams].push(student);
    });
  });
  return teams;
}

한 모둠에 말하는 사람만 모이거나 기록할 사람이 없어 표류하는 현상을 방지하는 공학적 분배 로직입니다.

③ 개인정보 보호 세션 운영

학생 이름 대신 번호(1~25번)와 닉네임만 다루며, 진단 데이터는 브라우저 세션 메모리에서만 유지되어 외부 클라우드로 일절 전송되지 않습니다.

3. 초보자를 위한 바이브 코딩 실전 사용 예시

  1. 프롬프트 복사 — 아래 '제미나이 전용 에러 제로 프롬프트'를 복사합니다.
  2. 역질문 답변 — 제미나이가 묻는 학급 인원수(기본: 20~25명)와 모둠당 인원에 답합니다.
  3. HTML 파일 실행 — 메모장에 붙여넣고 학습성향진단.html로 저장 후 더블클릭합니다.

제미나이 전용 에러 제로 프롬프트

[🚨 에러 방지 기본 안전장치]
1. 단일 HTML 파일 완결성: 외부 라이브러리(CDN), CSS 프레임워크 없이 순수 바닐라 HTML/CSS/JS로 작성한다.
2. 심기 모드(데이터 임베딩): 8개 모둠 협동 상황 퀴즈와 4대 성향(아이디어, 기록, 발표, 실천) 결과를 상수로 내장한다.
3. 자동 모둠 편성 엔진: 진단 완료 후 교사용 탭에서 학생 목록을 입력하면 4개 성향이 골고루 섞이는 균형 모둠 테이블을 생성한다.
4. 학생 개인정보 0: 학생 실명 대신 학생 번호와 캐릭터 닉네임만 표시한다.
5. 모바일 반응형: 교실 크롬북과 태블릿 터치 화면에 최적화된 큰 선택 버튼(최소 48px)을 제공한다.
6. // TODO, /* 생략 */ 등의 미완성 코드는 절대 넣지 말고 끝까지 완성한다.

[❓ 역질문 유도]
코드를 즉시 작성하지 말고, 기획을 구체화하기 위한 다음 3가지 질문을 먼저 나에게 던져줘:
1. 학급 한 모둠의 기본 인원수는 몇 명(권장: 4명 또는 5명)으로 설정할까요?
2. 결과 카드에 표시할 캐릭터 테마(동물 탐험대, 우주 비행사, 판타지 직업)는 어느 것으로 할까요?
3. 모둠 편성 결과를 인쇄용 서식(@media print)으로도 출력할 수 있게 할까요?

🎯 에디터 한줄평

"모둠 활동이 망가지는 가장 큰 이유는 능력이 부족해서가 아니라 성향이 충돌하기 때문입니다. 아이디어만 쏟아내고 마무리를 못 하는 모둠, 다들 조용히 눈치만 보는 모둠을 미리 예방해 주는 이 작은 진단기는 새 학기 교실을 갈등의 전쟁터가 아닌 상호 보완의 협동 학습장으로 바꾸어 줍니다."

📚 기술·교육 참고 링크

  • 협동학습(Cooperative Learning) 이론: 긍정적 상호의존성과 역할 분담의 원리
  • 교육과정 연계: 초등 3~6학년 창의적 체험활동(자율·자치 활동, 관계 맺기), 국어(의견을 나누어요, 마음을 나누는 대화)

[과학·사회] 과학 자유탐구 4단계 진도율 트래커 - 길 잃지 않는 장기 프로젝트 내비게이션

장기 탐구 프로젝트의 내비게이션! — 초등 과학 자유탐구 4단계 하위 미션 실시간 진도율 트래커

🧭 초등 5~6학년 과학 '자유 탐구' 및 사회과 프로젝트 학습 단원 — 몇 주에 걸쳐 진행되는 장기 탐구에서 학생들이 중간에 길을 잃지 않도록, 4대 핵심 단계(주제 선정 ➔ 가설 설정 및 실험 설계 ➔ 데이터 수집 및 분석 ➔ 결론 도출 및 나눔)마다 세부 체크리스트를 두고 실시간 달성률(%)을 시각적 게이지 바로 안내해 주는 프로젝트 관리 웹앱입니다.

📖 한 줄 정의

심기 모드(데이터 임베딩): API 데이터를 미리 받아 HTML 파일 안 상수로 박아두는 방식(앱 실행 중 외부 통신 0).

학내망 원칙: 학생 개인정보(실명·의견·성적·상담 기록)의 외부 수집·저장·전송 금지(쿼리에 학생 데이터가 담기는 외부 API 호출 포함) — 일반 공개 쿼리의 외부 호출은 허용하며, 학생 배포본은 심기 폴백(EMBED 상수)을 항상 내장한다.

1. 3대 핵심 분석 비교표

무엇이 바뀌었나요? / 영역 초보자를 위한 쉬운 설명 이렇게 한번 써보세요!
막연한 과제 vs 4단계 12개 마이크로 미션 "보고서 써와" 대신 4단계별로 3개씩 쪼갠 작은 체크박스를 클릭하며 성취감을 쌓습니다. 1단계(준비물 사진 찍기) 완료 시 프로그레스 바가 즉시 8% 상승.
모둠별 실시간 진도율 한눈에 보기 교탁 화면에 학급 전체 모둠의 진행률(0~100%)이 시각화되어 지체되는 모둠을 즉시 피드백합니다. 진도율 75% 미만 모둠에 '탐구 도우미 교사 파견' 신호등 표시.
중간 저장 브라우저 LocalStorage 외부 서버 없이 태블릿 브라우저에 체크 상태가 자동 저장되어 다음 과학 시간에도 그대로 이어집니다. 수업 끝날 때 '진도 보고서 내보내기'로 교사에게 결과 전달.

2. 핵심 아키텍처 해설

① 4단계 마이크로 미션 데이터 구조

const PROJECT_STEPS = [
  {
    phase: 1,
    title: "1단계: 문제 발견 & 주제 선정",
    tasks: [
      { id: "p1_1", text: "우리 생활 주변의 궁금한 현상 3가지 브레인스토밍하기" },
      { id: "p1_2", text: "실험으로 검증 가능한 하나의 질문으로 좁히기" },
      { id: "p1_3", text: "선행 탐구 자료 및 기존 과학 지식 2건 찾아보기" }
    ]
  },
  {
    phase: 2,
    title: "2단계: 가설 설정 & 실험 계획",
    tasks: [
      { id: "p2_1", text: "'만약 ~라면 ~할 것이다' 형태로 가설 문장 쓰기" },
      { id: "p2_2", text: "다르게 할 조건(조작변인)과 같게 할 조건(통제변인) 구별하기" },
      { id: "p2_3", text: "실험 준비물 및 안전 수칙 체크리스트 확정하기" }
    ]
  }
];

과학 탐구의 전 과정을 12개의 마이크로 액션으로 쪼갠 심기 모드(데이터 임베딩) 표준 설계도입니다.

② 진도율 실시간 자동 계산 수식

function calculateProgress(checkedIds) {
  const totalTasks = PROJECT_STEPS.reduce((acc, step) => acc + step.tasks.length, 0);
  const completed = checkedIds.length;
  const percentage = Math.round((completed / totalTasks) * 100);
  return { percentage, completed, totalTasks };
}

체크박스를 누를 때마다 전체 12개 미션 중 완료된 개수를 백분율로 환산하여 상단 게이지 바 너비를 width: ${percentage}%로 실시간 애니메이션합니다.

③ LocalStorage 로컬 지속성

태블릿을 껐다 켜도 체크 상태가 유지되도록 브라우저 로컬 저장소에 체크된 미션 ID 배열을 저장하며, 학생 개인정보는 일절 수집하지 않습니다.

3. 초보자를 위한 바이브 코딩 실전 사용 예시

  1. 프롬프트 복사 — 아래 '제미나이 전용 에러 제로 프롬프트'를 복사합니다.
  2. 역질문 답변 — 제미나이가 묻는 탐구 주제와 총 진행 주차(예: 3주 완성)에 답합니다.
  3. HTML 파일 실행 — 메모장에 붙여넣고 탐구진도트래커.html로 저장 후 더블클릭합니다.

제미나이 전용 에러 제로 프롬프트

[🚨 에러 방지 기본 안전장치]
1. 단일 HTML 파일 완결성: 외부 라이브러리(CDN), 외부 폰트 없이 순수 바닐라 HTML/CSS/JS로 완성한다.
2. 심기 모드(데이터 임베딩): const PROJECT_STEPS = [...] 상수에 과학 자유탐구 4단계 12개 하위 체크리스트를 기본 내장한다.
3. 실시간 진도율 시각화: 상단에 0~100% 프로그레스 바를 두고, 미션 체크 시 부드러운 애니메이션과 함께 퍼센트 수치가 갱신되도록 한다.
4. 로컬 지속성: 브라우저 localStorage를 활용하여 새로고침하거나 창을 닫아도 체크 상태가 유지되도록 한다.
5. 학생 개인정보 0: 학생 실명 대신 모둠 번호와 탐구 과제명만 입력받는다.
6. // TODO, /* 생략 */ 등의 미완성 코드는 절대 넣지 말고 끝까지 완성한다.

[❓ 역질문 유도]
코드를 즉시 작성하지 말고, 기획을 구체화하기 위한 다음 3가지 질문을 먼저 나에게 던져줘:
1. 탐구 단계별 미션 개수는 기본(단계당 3개, 총 12개)으로 할까요?
2. 100% 완주 시 축하 팡파르(Web Audio 합성음)와 디지털 완주 배지를 띄울까요?
3. 모둠별 탐구 일지를 간단히 적을 수 있는 '오늘의 메모' 입력란도 포함할까요?

🎯 에디터 한줄평

"아이들이 장기 과제에서 좌절하는 이유는 게을러서가 아니라, '지금 내가 전체 어디쯤 서 있는지' 보이지 않기 때문입니다. 등산길의 이정표처럼 12개의 작은 깃발을 꽂아주는 것만으로도, 포기하던 아이들이 마지막 100% 깃발을 향해 자발적으로 발걸음을 옮기기 시작합니다."

📚 기술·교육 참고 링크

  • 초등 과학과 자유탐구 지도 매뉴얼: 변인 통제와 데이터 분석 가이드
  • 교육과정 연계: 초등 5~6학년 과학(자유 탐구), 사회(지속가능한 발전과 지역 문제), 실과(문제 해결과 프로그래밍)

[실과·사회·수학] 초등 모의투자 알고리즘 - 우리 반 AI 펀드매니저 만들기

수학 공식으로 주식을 굴린다! — 초등 모의투자 API 연동 우리 반 AI 펀드매니저 알고리즘

📈 초등 5~6학년 사회 '우리나라의 경제 발전', 수학 '비율과 통계', 실과 '알고리즘 설계' 융합 — 학생들이 100만 원의 가상 시드머니를 가지고 나만의 '투자 규칙(알고리즘)'을 코딩합니다. "어제보다 3% 떨어지면 매수", "목표 수익률 5% 도달 시 매도" 같은 단순한 수학적 조건문이 매일 가상 시장 데이터와 만나 포트폴리오 수익률을 계산하는 실전 금융·소프트웨어 융합 프로젝트입니다.

📖 한 줄 정의

심기 모드(데이터 임베딩): API 데이터를 미리 받아 HTML 파일 안 상수로 박아두는 방식(앱 실행 중 외부 통신 0).

학내망 원칙: 학생 개인정보(실명·의견·성적·상담 기록)의 외부 수집·저장·전송 금지(쿼리에 학생 데이터가 담기는 외부 API 호출 포함) — 일반 공개 쿼리의 외부 호출은 허용하며, 학생 배포본은 심기 폴백(EMBED 상수)을 항상 내장한다.

1. 3대 핵심 분석 비교표

무엇이 바뀌었나요? / 영역 초보자를 위한 쉬운 설명 이렇게 한번 써보세요!
도박형 주식 게임 vs 룰 기반 알고리즘 감(Feeling)으로 사고파는 대신, "언제 사고 언제 팔 것인가"의 수학적 조건문을 사전에 작성해 기계가 실행합니다. 조건 A: 변동률 -2% 이하 시 10주 매수 ➔ 조건 B: 수익률 +5% 시 전량 매도.
가상 시뮬레이션 시장 데이터 실제 금융 API 계좌 개설 없이, 최근 30일간의 가상 지수(KOSPI 시뮬레이션) 배열을 기반으로 안전하게 모의 운용합니다. '1초 만에 30일 투자 돌려보기' 버튼으로 백테스팅(과거 데이터 검증) 수행.
수익률 꺾은선 차트 자동 렌더링 복잡한 외부 차트 라이브러리 없이 순수 HTML5 Canvas로 나의 자산 변화 곡선을 직접 그립니다. 사회 시간 '합리적 소비와 투자' 토론 보고서 그래프 자료로 연계.

2. 핵심 아키텍처 해설

① 가상 주가 시계열 데이터: MARKET_PRICES 상수

// 30일간의 가상 친환경 기업 주가 추이 (심기 모드)
const MARKET_PRICES = [
  { day: 1, price: 50000 }, { day: 2, price: 49000 },
  { day: 3, price: 51500 }, { day: 4, price: 53000 },
  { day: 5, price: 52000 }, { day: 6, price: 48500 }
  // ... 30일치 주가 데이터 내장
];

금융 보안 인증서나 유료 증권 API 없이도 아이들이 실제 시장 변동을 체감할 수 있도록 정제된 시계열 데이터를 파일 상단에 심는 심기 모드(데이터 임베딩) 방식입니다.

② 펀드매니저 알고리즘 실행 루프

function runSimulation(buyDipRate, takeProfitRate) {
  let cash = 1000000; // 100만 원 시드머니
  let stockHoldings = 0;
  let avgBuyPrice = 0;
  
  MARKET_PRICES.forEach((today, i) => {
    if (i === 0) return;
    const prevPrice = MARKET_PRICES[i - 1].price;
    const changeRate = (today.price - prevPrice) / prevPrice;
    
    // 조건 1: 하락 매수 규칙
    if (changeRate <= buyDipRate && cash >= today.price * 5) {
      cash -= today.price * 5;
      stockHoldings += 5;
      avgBuyPrice = today.price;
    }
    // 조건 2: 목표 수익률 도달 익절 규칙
    const currentProfit = (today.price - avgBuyPrice) / avgBuyPrice;
    if (stockHoldings > 0 && currentProfit >= takeProfitRate) {
      cash += stockHoldings * today.price;
      stockHoldings = 0;
    }
  });
  return cash + (stockHoldings * MARKET_PRICES[MARKET_PRICES.length - 1].price);
}

입력한 두 개의 매개변수(매수 임계치, 매도 수익률)에 따라 컴퓨터가 매일매일 자동으로 매매 결정을 내리는 퀀트(Quant) 알고리즘의 기초를 배웁니다.

③ 순수 Canvas 자산 곡선 렌더링

외부 차트 CDN 호출 없이 캔버스 2D 컨텍스트의 lineTo() 수식으로 30일간의 자산 증감 곡선을 부드럽게 그려내어 학내망 원칙을 완벽히 준수합니다.

3. 초보자를 위한 바이브 코딩 실전 사용 예시

  1. 프롬프트 복사 — 아래 '제미나이 전용 에러 제로 프롬프트'를 복사합니다.
  2. 역질문 답변 — 제미나이가 묻는 가상 투자 종목(우주항공, 친환경에너지 등)에 답합니다.
  3. HTML 파일 실행 — 메모장에 붙여넣고 AI펀드매니저.html로 저장 후 더블클릭합니다.

제미나이 전용 에러 제로 프롬프트

[🚨 에러 방지 기본 안전장치]
1. 단일 HTML 파일 완결성: 외부 금융 API나 Chart.js 등 외부 라이브러리 없이 순수 바닐라 HTML/CSS/JS로 완성한다.
2. 심기 모드(데이터 임베딩): const MARKET_PRICES = [...] 상수에 30일치 가상 주가 데이터를 기본 내장한다.
3. 퀀트 알고리즘 인터페이스: 슬라이더 2개('하락 시 추가 매수 기준 %', '목표 수익 매도 기준 %')를 조작하면 '30일 백테스팅 실행' 버튼 클릭 시 즉시 최종 수익률(%)과 잔고를 도출한다.
4. 순수 Canvas 꺾은선 차트: 30일간의 일별 총자산 변화를 Canvas에 파란색 선 그래프로 렌더링한다.
5. 건전한 금융 교육 안내: 화면 하단에 '※ 투자는 원금 손실 위험이 있으며, 규칙 기반 분산 투자가 안전합니다' 교육용 안내문을 포함한다.
6. // TODO, /* 생략 */ 등의 미완성 코드는 절대 넣지 말고 끝까지 완성한다.

[❓ 역질문 유도]
코드를 즉시 작성하지 말고, 기획을 구체화하기 위한 다음 3가지 질문을 먼저 나에게 던져줘:
1. 가상으로 운용할 모의 주식 종목 이름(예: 미래우주로봇, 푸른지구에너지)은 무엇으로 할까요?
2. 기본 시드머니는 100만 원으로 고정할까요?
3. 최고 수익률을 기록한 친구의 알고리즘 규칙을 공유할 수 있는 '명예의 전당' 랭킹표도 포함할까요?

🎯 에디터 한줄평

"주식 투자 교육의 핵심은 돈을 버는 기술이 아니라, '감정에 휘둘리지 않고 정해진 규칙을 지키는 힘'을 기르는 것입니다. 아이들이 짠 작은 알고리즘 코드가 30일간의 파도를 헤치며 자산을 지켜내는 과정을 지켜보는 것, 이것이 진정한 미래 경제 문해력의 시작입니다."

📚 기술·교육 참고 링크

  • 알고리즘 트레이딩(Algorithmic Trading) 기초: 규칙 기반 의사결정과 백테스팅의 원리
  • 교육과정 연계: 초등 5~6학년 사회(우리나라의 경제 발전, 합리적 소비와 자산 관리), 수학(비율과 그래프), 실과(알고리즘 설계)