1 / 30
Week 4

Vibe 코딩 심화 및
프로젝트 아이디에이션

UI/UX 행동 유도성, 데이터 시각화, 그리고 최종 프로젝트 기획

person 담당교수: 가석현
school 에너지영역탐구
autorenew

지난주 리뷰: 우리는 무엇을 만들었나요?

sports_esports

Gamification 기초

  • check 단순 시뮬레이션에 목표와 피드백 부여
  • check PBL (Point, Badge, Leaderboard) 적용
  • check Local Storage를 이용한 내 컴퓨터 내 데이터 저장
cloud_done

웹 호스팅 (Cloudflare)

  • cloud 내 컴퓨터의 HTML을 전 세계 누구나 볼 수 있게 배포
  • cloud URL 생성 및 QR 코드를 통한 교실 공유 실습
flag

오늘의 목표

menu_book 핵심 이론

인지 부하 이론과 행동 유도성(Affordance) 개념을 이해하고, 직관적인 과학교육 콘텐츠의 UI/UX 설계 원칙을 학습합니다.

code 실습 및 아이디에이션

  • 1. 심화 실습: 변수 통제 및 실시간 데이터 시각화(그래프) 추가
  • 2. 기획: 나만의 과학 탐구 콘텐츠 최종 프로젝트 구상
  • 3. 배포 및 리뷰: HTML 계획서 제작, 배포, 상호 동료 평가
시각장애인 및 청각장애인을 위한 설명: 학생과 교사가 함께 화면을 보며 웹 기반 과학 시뮬레이션 인터페이스를 기획하고 설계하는 일러스트
touch_app

과학교육 콘텐츠에서 UX/UI란?

aspect_ratio

UI (User Interface)

"화면에 보이는 디자인과 배치"

버튼의 색상, 폰트의 크기, 슬라이더의 위치 등 사용자가 시스템과 소통하기 위해 마주하는 시각적인 화면 그 자체를 의미합니다.

mood

UX (User Experience)

"사용하면서 느끼는 종합적 경험"

"조작이 직관적이다", "과학 원리가 한눈에 들어온다"와 같이 UI를 통해 학습자가 겪는 인지적, 감정적 만족도를 의미합니다.

아무리 뛰어난 물리 엔진을 코딩해도, UI가 복잡하면 학생의 UX는 엉망이 됩니다.
lightbulb

행동 유도성 (Affordance) 이론

“어포던스(Affordance)란 사물과 유기체 사이의 관계를 나타내며, 사물이 어떻게 사용될 수 있는지를 직관적으로 결정하는 속성이다.” 1)

- Don Norman -

우리가 의자(Chair)를 보면 누가 가르쳐주지 않아도 '앉는 것'임을 아는 것처럼,
디지털 환경에서도 설명서 없이 직관적으로 조작 방법을 깨닫게 하는 디자인이 필요합니다.

1) 노먼, D. A. (2016). 디자인과 인간 심리 (이창희 역). 학지사.
Norman, D. A. (2013). The design of everyday things: Revised and expanded edition. Basic books.
door_sliding

나쁜 Affordance의 대표적 사례: Norman Door

미시오 미시오

형태와 기능의 불일치

잡고 당기기 좋게 생긴 손잡이를 달아 놓고, 그 위에 '미시오'라고 써붙인 문을 본 적이 있나요?

사람들은 글씨를 읽기 전에 시각적 형태(손잡이)가 주는 행동 유도성에 따라 무의식적으로 문을 당기게 됩니다.

사용자가 실수를 한다면, 사용자의 멍청함이 아니라 디자인(UI)의 잘못입니다!
design_services

디지털 환경에서의 Affordance 비교

웹 시뮬레이션을 제작할 때, 어떤 버튼이 더 '누르고 싶게' 생겼나요?

인지하기 어려운 버튼 실험 시작 버튼인지 배경 텍스트인지 모호함 VS 직관적인 버튼 (Affordance) 실험 시작 그림자, 입체감으로 '클릭' 유도

단순히 "버튼 만들어줘"라고 요구하기보다,
"그림자와 둥근 모서리가 있는 입체적인 버튼으로 만들어줘"라고 프롬프트를 작성해야 합니다.

animation

조작에 반응하는 시각적 피드백

인터랙션(Interaction)의 완성

버튼을 눌렀거나, 마우스를 올렸을 때 아무런 변화가 없다면 사용자는 자신의 조작이 제대로 들어갔는지 확신할 수 없습니다.

필수 UI/UX 요소

  • Hover (마우스 오버): 커서가 손가락 모양(Pointer)으로 변하고 버튼 색이 살짝 밝아짐
  • Active (클릭 순간): 버튼이 눌리는 듯한 애니메이션 (크기 축소 등)
  • Transition (전환): 숫자가 바뀔 때 부드럽게 변하는 효과

마우스를 올려보고 클릭해보세요!

이런 미세한 차이가 '허접한 웹'과 '완성도 높은 시뮬레이션'을 나눕니다.

psychology

인지 부하 이론 (Cognitive Load Theory) 다이어그램

speed 한정된 정신적 자원: 총 인지 용량 (작업 기억 한계)

인지 부하 이론 다이어그램: 뇌 모양과 퍼즐 조각으로 본원적(초록), 외재적(주황), 내재적(파랑) 인지 부하를 설명하는 이미지

tips_and_updates 본원적 인지 부하 (Germane Load)

새로운 정보를 깊이 이해하고 스키마(지식 구조)를 형성하는 데 쓰이는 정신적 노력

  • 개념 연결
  • 문제 해결 연습
극대화해야 함: 심층 학습 촉진

warning_amber 외재적 인지 부하 (Extraneous Load)

정보 전달 방식이나 설계의 비효율성으로 인한 불필요한 부담

  • 산만한 레이아웃
  • 과도한 텍스트
  • 비효율적인 예시
최소화해야 함: 학습 방해

menu_book 내재적 인지 부하 (Intrinsic Load)

학습 내용 자체의 고유한 난이도 및 복잡성

  • 주제 복잡도
  • 배경지식 부족
조절 불가: 학습 내용에 비례
emoji_objects 효율적인 학습 전략: 외재적 부하 최소화 + 본원적 부하 극대화 = 학습 성과 향상
2) Sweller, J. (1988). Cognitive load during problem solving: Effects on learning. Cognitive Science, 12(2), 257-285. https://doi.org/10.1207/s15516709cog1202_4
filter_b_and_w

인지 부하를 줄이는 멀티미디어 원리

교육심리학자 Mayer의 원리를 우리의 UI/UX 설계에 적용해봅시다. 3)

format_align_center

공간적 접근성의 원리
(Spatial Contiguity)

설명 텍스트와 관련된 이미지는 가깝게 배치해야 합니다. 슬라이더가 왼쪽에 있는데, 결과 숫자가 저 멀리 오른쪽에 있으면 눈동자가 이동하느라 인지 부하가 커집니다.

highlight_off

일관성의 원리
(Coherence Principle)

학습과 관계없는 화려한 배경이나 이펙트는 과감히 제거해야 합니다. 화려함이 오히려 집중력을 분산시킵니다 (외재적 인지 부하 상승).

call_split

개인화의 원리
(Personalization)

딱딱한 시스템 경고음보다는 "조금 더 무거운 추를 달아볼까요?" 같은 친근한 대화체(Scaffolding) 텍스트가 학습 효과를 높입니다.

3) 메이어, R. E. (2011). 멀티미디어 학습 (김동민, 조은순, 이정민 역). 시그마프레스.
Mayer, R. E. (2009). Multimedia learning (2nd ed.). Cambridge University Press.
construction

[실습 1-1] Affordance 관점에서의 UI 진단

시각장애인을 위한 설명: 버튼이 눈에 띄지 않고, 글씨가 매우 작으며, 시뮬레이션 요소와 조작 패널이 뒤섞여 있어 인지 부하를 유발하는 나쁜 UI 디자인 예시

무엇이 문제인가요?

우리가 Vibe 코딩으로 만든 1차 결과물은 로직은 완벽해도 초등학생의 눈높이에는 엉망일 수 있습니다.

search 문제점 찾기

  • - 무게 조절 슬라이더가 너무 작아서 마우스로 잡기 힘듦
  • - 텍스트가 너무 많아서(외재적 인지 부하) 읽기 싫음
  • - 어디를 클릭해야 실험이 시작되는지 시각적 유도가 없음
brush

[실습 1-2] AI 프롬프트로 Affordance 부여하기

단순히 "예쁘게 해줘"가 아니라, 사용자 행동(UX) 중심의 프롬프트를 작성합니다.

복사하기
System Prompt: 기존 로직은 유지하고 UI/UX만 개선해 줘.

1. 조작 가능한 모든 버튼과 슬라이더에 마우스를 올리면 커서가 포인터로 변하고, 약간 커지는 입체적인 hover 효과(Affordance)를 줘.

2. 학생의 시선 이동을 최소화하기 위해 조작 패널을 하단 중앙에 한곳으로 모아줘 (공간적 접근성 원리).

3. 시뮬레이션 상태가 직관적으로 보이게, 수평이 맞았을 때는 배경이 은은한 초록색으로 변하고 '축하 폭죽' 애니메이션이 나오게 해.

tune

과학 탐구 상호작용과 변수 통제

가상 시뮬레이션의 핵심 가치는 현실 실험에서 통제하기 어려운 변수를 학습자가 즉각적이고 극단적으로 조작해 볼 수 있다는 점입니다. 4)

가상 실험실의 변수 유형

play_arrow 조작 변수 (독립 변수)

학습자가 슬라이더나 버튼으로 직접 변화시키는 값
(예: 물체의 질량, 힘의 크기, 줄의 길이)

assessment 종속 변수

조작 변수의 변화에 따라 계산되어 나타나는 결과값
(예: 주기, 가속도, 이동 거리)

lock 통제 변수 (환경 변수)

실험을 위해 고정되거나, 심화 학습 시 환경 전체를 바꾸는 변수
(예: 마찰력, 중력 가속도 g)

4) Linn, M. C., & Eylon, B. S. (2011). Science learning and instruction: Taking advantage of technology to promote knowledge integration. Routledge.
functions

수학적 모델링(Modeling)을 코드(JS)로

자연 현상을 모방하려면, 과학 공식을 AI에게 명확히 전달하여 자바스크립트 엔진으로 만들어야 합니다.

프롬프트에 수식을 넣을 때는 TeX(LaTeX) 형식으로 작성하세요.

예: T = 2\pi \sqrt{\frac{L}{g}}, F = G \frac{m_1 m_2}{r^2}

TeX 문법이 어렵다면 비주얼 편집기에서 수식을 만든 뒤 복사해 프롬프트에 붙여넣으세요: CodeCogs Equation Editor · LaTeX Live Editor

예시 1: 진자의 주기

$$ T = 2\pi \sqrt{\frac{L}{g}} $$

실제 TeX 코드

T = 2\pi \sqrt{\frac{L}{g}}

Prompt:
"진자의 길이(L)와 중력 가속도(g)를 조작 변수로 받고, 위 공식을 이용하여 주기(T)를 실시간 계산하는 함수를 만들어."

예시 2: 만유인력

$$ F = G \frac{m_1 m_2}{r^2} $$

실제 TeX 코드

F = G \frac{m_1 m_2}{r^2}

Prompt:
"두 물체의 질량(m1, m2)과 거리(r)를 슬라이더로 조작하면, 만유인력(F)이 계산되어 두 물체가 끌어당기는 애니메이션을 구현해."

add_circle

[실습 2-1] 고급 통제 변수 패널 추가하기

settings 심화 실험 환경 설정

달 (1.6)목성 (24.7)

가상 실험실의 묘미: 중력을 꺼버린다면?

초등학생들에게 "달에 가면 몸무게가 가벼워진다"고 말로만 설명하는 대신, 시뮬레이션의 중력 값을 1.6으로 내렸을 때 진자의 움직임이나 수평 잡기가 어떻게 변하는지 직접 보게 합니다.

User: "기존 화면 우측 상단에 '고급 설정 ⚙️' 토글 버튼을 만들고, 누르면 중력 가속도(g)를 조절할 수 있는 슬라이더 패널이 뜨게 해 줘.
슬라이더를 달(1.6)이나 지구(9.8)로 조작하면, 시뮬레이션 내부의 물리 계산 수식에 즉각 반영되어 물체가 떨어지는 속도가 실시간으로 변해야 해."

insert_chart

데이터 시각화 (Data Visualization)의 필요성

숫자의 나열에서 직관적인 '흐름'으로

변수를 조작할 때 나타나는 결과를 단순히 텍스트(예: 속도 10m/s)로만 보여주면 학생들은 데이터의 추세(Trend)를 파악하기 어렵습니다.

시간의 흐름이나 변수에 따른 변화를 실시간 그래프(Graph)로 시각화하면, 비례/반비례 관계와 과학적 모델링을 직관적으로 이해할 수 있습니다.

프론트엔드 그래프 라이브러리 (CDN)
  • - Chart.js (가장 대중적, 예쁘고 가벼움)
  • - D3.js (매우 복잡하지만 커스텀 자유도 최상)
  • - Plotly (빅데이터 시각화 특화)
시각장애인을 위한 설명: 시뮬레이션 데이터가 실시간으로 꺾은선 그래프와 막대그래프로 변환되어 화면에 출력되는 인터페이스
pie_chart

탐구 목적에 맞는 그래프 종류 선택

show_chart

꺾은선 그래프
(Line Chart)

사용 목적: 시간에 따른 데이터의 연속적인 변화 추세를 볼 때.

과학 적용: 진자의 속도 변화, 물을 끓일 때 시간에 따른 온도 변화 곡선.

bar_chart

막대 그래프
(Bar Chart)

사용 목적: 서로 다른 그룹 간의 크기(양)를 명확하게 비교할 때.

과학 적용: 마찰력(나무, 얼음, 유리)에 따른 물체의 이동 거리 비교.

scatter_plot

산점도
(Scatter Plot)

사용 목적: 두 변수 사이의 상관관계(비례, 반비례)를 찾을 때.

과학 적용: 질량과 가속도의 관계 분석, 용수철이 늘어난 길이와 무게의 관계(훅의 법칙).

ssid_chart

[실습 2-2] Chart.js로 실시간 그래프 연동

AI가 예쁘고 동적인 그래프 코드를 짜도록 만들기 위해 구체적인 라이브러리를 지정해 줍니다.

복사하기

화면 우측에 시뮬레이션 결과를 보여주는 실시간 그래프를 추가해 줘.

- 라이브러리: CDN을 통해 Chart.js를 불러와서 사용해.
- X축: 시간(초) / Y축: 물체의 속도(m/s)
- 작동 방식: 시뮬레이션이 시작되면 매 0.5초마다 현재 속도 데이터를 그래프에 새로운 포인트로 추가하고 부드러운 꺾은선 그래프(Line Chart)를 그려줘.
- 실험을 다시 시작하는 초기화 버튼을 누르면, 그래프의 기존 데이터도 모두 지워지고 0부터 시작하도록 연동해.

apps

[참고] Chart.js로 구현할 수 있는 차트의 종류

직접 프롬프트에 "Chart.js로 OOO 차트를 그려줘"라고 요청해 보세요!

1. Line Chart (꺾은선)

2. Bar Chart (막대)

3. Pie Chart (원형)

4. Doughnut (도넛)

5. Radar (방사형/스파이더)

6. Polar Area (극좌표)

insights

[참고] D3.js / Plotly 예시 (고급 시각화)

Chart.js 외에도 AI에게 D3.js 또는 Plotly 기반 시각화를 요청할 수 있습니다.

D3.js 예시: 막대 그래프 커스텀

SVG 직접 제어

장점: 축, 애니메이션, 상호작용을 세밀하게 커스터마이징 가능

Plotly 예시: 3D Surface

과학 시각화 특화

장점: 확대/회전/툴팁 등 내장 인터랙션이 강력함

emoji_objects

최종 프로젝트: 나만의 과학 탐구 콘텐츠 기획

"어떤 과학 콘텐츠를 만들 것인가?"

기말 프로젝트를 위해, 지금까지 배운 Vibe 코딩과 Gamification, UX/UI 지식을 바탕으로 여러분이 학교 현장에서 실제 수업에 활용할 수 있는 독창적인 탐구 시뮬레이션을 기획합니다.

check_circle 필수 포함 요소

  • 교육과정 연계: 초등 과학 성취기준 (에너지 및 자유 탐구 영역)
  • 상호작용(Interaction): 조작 변수와 통제 변수가 존재하는가?
  • 데이터 시각화: 실험 결과를 표나 그래프로 즉각 확인할 수 있는가?
  • 게임적 요소(Gamification): 목표, 점수, 피드백 등 재미 요소 부여
rocket_launch

기획이 탄탄해야
AI 프롬프트가 명확해집니다.

article

HTML 프로젝트 계획서 (Dogfooding)

기획안을 한글(hwp)이나 워드가 아닌, HTML 단일 파일 웹페이지 형식으로 작성합니다.
배운 기술을 기획 단계부터 직접 적용해 보는 과정입니다.

1. 프로젝트 개요

  • 콘텐츠 제목: (가칭)
  • 적용 학년/단원: (예: 초등 6학년 에너지와 생활)
  • 학습 목표: 시뮬레이션을 통해 학생이 깨달아야 하는 원리

2. 핵심 상호작용 및 수식

  • 조작 변수 & 종속 변수: 무엇을 조작하고 결과를 보는가?
  • 적용 공식: 바탕이 되는 과학 원리 (수학적 모델링)
  • 데이터 시각화 방법: 선 그래프? 막대 그래프?

3. 게이미피케이션 요소

  • 미션/목표: 학생에게 어떤 과제가 주어지는가?
  • 스캐폴딩/피드백: 성공/실패 시 어떤 피드백을 제공할 것인가?

4. 예상 UI/UX 설계

  • 화면 레이아웃: 슬라이더, 캔버스, 그래프의 위치
  • 행동 유도성(Affordance): 초등학생을 위해 어떻게 직관적으로 만들 것인가?
auto_awesome

[실습 3-1] AI와 대화하며 계획서 웹문서 만들기

머릿속 아이디어를 AI에게 설명하고, 예쁜 웹사이트 문서 형태로 만들어 달라고 요구합니다.

chat 프롬프트 템플릿
내가 구상하는 초등 과학교육 콘텐츠는 [행성별 중력에 따른 물체의 낙하 속도 비교] 게임이야.

이 아이디어를 바탕으로 앞서 배운 4가지 항목(1. 개요, 2. 변수와 수식, 3. 게임화 요소, 4. UI 설계)이 체계적으로 들어간 '프로젝트 기획서'를 작성해 줘.

조건:
- 이 기획서는 단일 HTML 파일로 만들어야 해.
- Tailwind CSS를 사용하여 깔끔하고 세련된 카드형 레이아웃의 보고서 양식으로 디자인해 줘.
- 수식이 들어갈 부분은 KaTeX를 사용해서 수식이 예쁘게 렌더링되게 해 줘.
cloud_done

[실습 3-2] 작성한 계획서 Cloudflare에 배포하기

folder my-project-plan
file_upload

폴더 업로드 복습

계획서(index.html) 폴더를 Pages에 드래그

3주차 배포 실습의 리마인드

작성한 HTML 계획서를 내 컴퓨터에만 두지 않고 웹상에 배포하여 URL을 생성합니다.

  1. 1
    Cloudflare 대시보드 -> [Workers 및 Pages] 접속
  2. 2
    [애플리케이션 생성] -> [Pages] -> 자산 직접 업로드
  3. 3
    프로젝트 이름 지정 (예: plan-shga89) 후 폴더 드래그 앤 드롭
  4. 4
    생성된 고유 URL(링크) 복사하기!
groups

동료 평가 및 피드백 (Peer Review)

link

배포한 자신의 계획서 URL을 과제 제출함 (https://docs.shga.kr/cnue/2026/energy/submission/)에 제출하세요!

visibility 리뷰어의 역할 (Reviewer)

  • check 초등학생 수준 적합성: 목표가 너무 어렵거나 개념이 너무 추상적이지 않은가?
  • check 게임화 타당성: 단순히 퀴즈 점수만 주는 것이 아니라, 실험 과정에서 의미 있는 몰입(Flow)을 유도하는가?
  • check 건설적 제안: "여기에 막대 그래프 시각화를 추가하면 더 좋을 것 같아요"

edit_note 기획자의 역할 (Creator)

  • edit 다른 동기가 지적한 보완점 수용 및 메모
  • edit 구상한 아이디어가 기술적으로 Vibe 코딩을 통해 구현 가능할지 교수 및 동료와 논의
  • edit 이 기획안이 여러분의 12주차 기말 프로젝트의 청사진이 됩니다!
workspace_premium

오늘 실습 수고하셨습니다.

기획안이 확정되었으니, 이제 뼈대에 데이터를 붙일 시간입니다.

forward 다음 주 예고

[고급 웹 기술 적용 1 : 데이터베이스의 이해]

  • check 정적 사이트(Local Storage)의 한계와 데이터 보존의 필요성
  • check Cloudflare의 Serverless DB (KV) 개념 학습
  • check 내 시뮬레이션에 학생들의 탐구 일지 데이터를 저장할 백엔드 구축 준비