🏫 배움터› 🤖 AI› ✨ 바이브 코딩

✨ 말로 만드는 프로그램
바이브 코딩

문법을 외우는 대신, 만들고 싶은 것을 또렷하게 설명한다. 코드는 AI가 쓴다. 이 교재는 Claude를 옆에 두고 처음부터 끝까지 하나를 만들어 보는 순서로 짜여 있습니다.

수도여고 배움터 · AI · 실습 교재
1단원

바이브 코딩이란Vibe Coding

바이브 코딩은 “만들고 싶은 것의 분위기(vibe)를 말로 충분히 전달하면, 코드는 AI가 쓴다”는 작업 방식이다. 사람은 무엇을 만들지와 어떤 조건을 지켜야 하는지를 정하고, AI는 어떻게 만들지를 맡는다.

전통적인 개발과 무엇이 다른가

관점전통 개발바이브 코딩
주로 필요한 것문법·라이브러리 지식내가 아는 현장의 사정(도메인 지식)
한 번의 작업 단위함수·클래스 하나대화 한 번
확인하는 방법테스트 코드실행해 보고 눈으로 확인
고치는 방법코드를 직접 수정“여기 이 부분만 이렇게 바꿔 줘”
막히는 지점구현 속도요구사항을 또렷하게 만드는 능력
바뀐 것은 실력의 종류다 · 코딩을 안 해도 된다는 뜻이 아니다. 무엇이 필요한지 설명하는 힘과 나온 결과가 맞는지 판단하는 힘이 그 자리를 대신한다. 이 둘이 없으면 AI가 아무리 좋아도 쓸 수 없는 결과가 나온다.

한 사이클은 이렇게 돈다

① 말한다무엇을·어떤 조건으로 ② 받는다AI가 코드를 쓴다 ③ 돌려본다직접 실행·확인 ④ 고친다한 군데씩 마음에 들 때까지 이 고리를 돈다
▲ 한 바퀴가 한 번의 대화다. 처음부터 완성본을 받으려 하지 말고, 작게 여러 바퀴 도는 편이 빠르다.
가장 흔한 함정 · “AI가 알아서 다 해 주겠지”. 요구사항이 흐릿하면 결과도 흐릿하다. 뒤에서 보겠지만, 예시 데이터 한 줄을 같이 주는 것만으로 결과가 크게 달라진다.
읽을거리

Claude를 만든 곳 — Anthropic앤트로픽

도구를 쓰기 전에, 그 도구를 누가 왜 만들었는지 한 번 보고 가자. 이름 두 개에 만든 사람들의 생각이 담겨 있다.

회사를 나와 회사를 만들다

Anthropic은 2021년에 세워졌다. OpenAI에서 일하던 연구자들이 함께 나와 만든 회사로, 다리오 아모데이(Dario Amodei)가 대표를, 그의 동생 다니엘라 아모데이(Daniela Amodei)가 사장을 맡고 있다. 기계가 무엇을 어떻게 판단하는지 들여다보는 연구로 알려진 크리스 올라(Chris Olah), 물리학자 출신 제러드 캐플런(Jared Kaplan) 등도 함께했다.

이들이 따로 나온 배경으로는 AI 안전(AI safety)을 더 무겁게 다뤄야 한다는 생각이 알려져 있다. 성능을 올리는 일과 그 시스템을 믿을 수 있게 만드는 일을 같은 무게로 놓겠다는 뜻이다.

만든 사람의 글을 직접 읽어 보기 · 다리오 아모데이는 darioamodei.com 에 자기 생각을 글로 올린다. AI가 잘 쓰이면 세상이 어떻게 달라질 수 있는지를 적은 「Machines of Loving Grace」 같은 긴 글이 있다. 영어지만, 필요하면 Claude에게 “이 글을 고등학생이 읽을 수 있게 요약해 줘”라고 부탁해도 된다.
공익법인(Public Benefit Corporation) · Anthropic은 보통 회사와 달리 “인류의 장기적 이익을 위해 안전한 AI를 개발한다”는 목적을 회사의 설립 목적 자체에 넣은 형태다. 돈을 버는 것만이 회사의 유일한 목표가 아니라고 문서로 정해 둔 셈이다.

‘Anthropic’ — 인간의, 인류의

anthropic은 “인간의, 인류의”라는 뜻의 영어 낱말이다. 그리스어 anthropos(사람) 에서 왔고, 우리가 아는 다른 낱말들과 뿌리가 같다.

anthropology 인류학anthropic principle 인류 원리philanthropy 자선

기술의 이름에 사람을 넣은 회사가, 회사의 목적에도 인류의 이익을 적어 두었다. 이름과 목적이 같은 곳을 가리키고 있는 셈이다.

‘Claude’ — 정보이론의 아버지에게서

AI의 이름 Claude는 클로드 섀넌(Claude Shannon, 1916~2001)에게서 왔다고 널리 알려져 있다. 섀넌은 정보이론(Information Theory)을 세운 미국의 수학자·공학자로, 정보의 양을 재는 단위인 비트(bit)를 세상에 알린 사람이다.

정보를 어떻게 재고, 줄이고, 잡음 속에서도 정확히 보낼 수 있는지를 수학으로 밝힌 그의 연구 위에 오늘날의 컴퓨터·통신·압축이 서 있다. AI 역시 결국 정보를 다루는 기술이라는 점에서, 이 이름은 그 뿌리를 가리킨다.

클로드 섀넌의 흑백 초상 사진
클로드 섀넌
1916~2001
사진: Tekniska Museet · CC BY 2.0
정보 교재에서 이어 보기 · 섀넌은 Ⅱ. 데이터 단원의 ‘허프만 부호화’ 부분에 사진과 함께 나온다. 자주 나오는 글자에 짧은 부호를 주는 그 아이디어를 수학으로 증명한 사람이 바로 섀넌이다.
“알려져 있다”라고 쓴 이유 · 이름의 유래는 여러 곳에서 같은 설명이 되풀이되지만, 회사가 공식 문서로 못 박아 발표한 내용은 아니다. 이런 것은 “~라고 알려져 있다”로 적는 것이 정확하다. 공식 발표인지, 전해지는 이야기인지 구분해서 쓰는 습관은 AI를 쓸 때도 그대로 필요하다.

Claude는 언제부터 있었나

때일
2021년Anthropic 설립
2023년 3월Claude 첫 공개 — 처음에는 일부 사용자만 쓸 수 있었다
2023년 7월Claude 2 — 누구나 쓸 수 있게 열렸다
그 뒤Opus·Sonnet·Haiku 세 갈래로 나뉘어 세대를 거듭하고 있다

지금 우리가 쓰는 모델은 이 줄기의 가장 최근 세대다. 새 모델은 계속 나오므로, 이름과 번호보다 “무엇을 할 수 있는 도구인가”를 보는 편이 오래 간다.

2단원

Claude 시작하기Getting Started

이 교재는 앤스로픽(Anthropic)의 Claude를 쓴다. 웹 브라우저만 있으면 실습을 다 할 수 있고, 자주 쓰게 되면 앱으로 설치해도 된다.

어디서 쓰나

  • 웹 · claude.ai 에서 계정을 만들고 바로 대화한다. 학교 컴퓨터에서도 브라우저로 쓸 수 있다.
  • 휴대폰 앱 · 같은 계정으로 이어서 쓴다. 대화 기록이 같이 보인다.
  • Claude Code · 터미널에서 쓰는 방식으로, 내 컴퓨터의 파일을 직접 읽고 고친다. 여러 파일짜리 프로그램을 만들 때 쓴다(6단원).
요금 · 무료로도 쓸 수 있고, 하루에 주고받을 수 있는 양에 제한이 있다. 유료 요금제는 더 많이·더 똑똑한 모델로 쓸 수 있다. 요금제와 한도는 자주 바뀌니 공식 안내를 확인한다.

데스크톱 앱 설치하기

브라우저로도 충분하지만, 컴퓨터에 앱으로 설치해 두면 세 가지가 달라진다.

  • 창을 따로 띄워 둔다 · 브라우저 탭 사이를 오가지 않는다. 작업하는 화면 옆에 나란히 붙여 두고, 막힐 때마다 바로 물어본다.
  • 파일을 끌어다 놓는다 · 사진·표(csv·xlsx)·문서를 창 안으로 던져 넣으면 바로 읽는다. 화면을 캡처해 Ctrl+V 로 붙여 넣는 것도 된다.
  • 내 컴퓨터의 폴더를 열어 줄 수 있다 · 파일을 하나씩 건네주는 대신 폴더 하나를 통째로 맡긴다. Claude가 그 안의 파일을 직접 읽고 고치고 새로 만든다.
  1. 다운로드 페이지를 연다 주소창에 claude.com/download 를 친다.
  2. 내 컴퓨터에 맞는 것을 고른다 Windows(x64·arm64), macOS(애플 실리콘·인텔), Linux(우분투·데비안, 베타)를 지원한다. 휴대폰용 iOS·안드로이드 앱도 같은 곳에 있다.
  3. 설치하고 로그인한다 웹에서 쓰던 계정으로 로그인하면 그동안의 대화가 그대로 이어진다. 계정이 없으면 이 화면에서 만든다.
  4. 창을 띄워 둔다 수업이나 작업 중에 바로 물어볼 수 있게, 브라우저와 별도로 열어 두고 쓴다.

내 폴더를 열어 주기

앱을 열면 위쪽에 탭이 세 개 있다. 이 가운데 내 컴퓨터의 파일을 직접 다루는 것은 Code 탭이다.

탭하는 일
Chat평소의 대화. claude.ai 와 같다. 내 파일에는 손대지 않고, 끌어다 놓은 것만 본다
Cowork오래 걸리는 일을 맡겨 두는 곳. 내가 다른 일을 하는 동안 혼자 진행한다
Code내 폴더를 열어 파일을 직접 고친다. 바이브 코딩에 쓰는 곳
  1. Code 탭을 누른다 앱 위쪽 가운데에 있다.
  2. Local 을 고른다 내 컴퓨터에서 돌린다는 뜻이다.
  3. Select folder 로 폴더를 고른다 작품을 담아 둘 폴더 하나를 고른다. Claude는 여기서 고른 폴더 안에서만 파일을 읽고 쓴다 — 바탕화면이나 다른 폴더는 건드리지 못한다.
  4. 고칠 때 물어볼지 정한다 보내기 단추 옆의 모드 선택기에서 고른다(아래 표). 한 번 고르면 그 폴더에서는 그대로 기억된다.
모드언제 쓰나
Manual고치기 전에 매번 물어본다. 무엇이 어떻게 바뀌는지 보여 주고 Accept / Reject 를 누르게 한다 — 처음에는 이것으로 시작한다
Accept edits파일 고치는 것은 알아서 하게 둔다. 손에 익은 뒤 빠르게 반복할 때
Plan고치지 않고 어떻게 할지 계획만 세운다. 큰 작업 전에 방향을 맞출 때
Auto대부분 알아서 한다. 위험해 보이는 일은 걸러 낸다
왜 이게 편한가 · 파일을 하나씩 올리고 받아 내려 저장하는 과정이 통째로 사라진다. “index.html 에 시작 화면을 넣어 줘”라고만 하면 그 폴더의 파일이 바로 바뀌어 있고, 브라우저로 새로고침하면 끝이다. 6단원에서 다루는 Claude Code 가 바로 이 방식이며, 앱 안에 이미 들어 있어 따로 설치할 것이 없다.
안전하게 쓰는 법 · ① 처음에는 Manual 로 두고, 무엇을 고치는지 보면서 하나씩 승인한다. ② 폴더는 작품용으로 새로 만든 폴더 하나만 열어 준다. 문서 전체나 바탕화면 같은 큰 폴더를 통째로 열어 주지 않는다. ③ 중요한 파일은 미리 복사본을 만들어 둔다. ④ Code 탭은 유료 요금제에서만 열린다. 무료로 쓴다면 Chat 탭에서 파일을 끌어다 놓는 방식으로 하면 되고, 이 교재의 실습은 그것만으로 전부 된다.
학교 컴퓨터라면 · 프로그램 설치가 막혀 있는 경우가 많다. 그럴 때는 설치 없이 claude.ai 에 접속해 브라우저로 쓰면 된다. 이 교재의 실습은 전부 브라우저만으로 할 수 있다.

앱에서 처음 해 볼 것 네 가지

무엇을어떻게
새 대화 시작왼쪽 위 새 대화 단추. 주제가 바뀌면 새 대화로 여는 편이 낫다 — 한 대화가 길어질수록 앞 내용에 끌려간다
파일 건네주기창 안으로 끌어다 놓는다. 사진·표(csv·xlsx)·문서 모두 되고, “이 표를 그래프로 그려 줘”처럼 이어서 말한다
화면 보여 주기화면을 캡처해 붙여 넣으면(Ctrl+V) 그 화면을 보고 답한다. 오류 화면을 보여 줄 때 특히 쓸모 있다
대화 다시 찾기왼쪽 목록에서 지난 대화를 고르면 이어서 계속할 수 있다. 자주 쓰는 주제는 프로젝트로 묶어 둔다
웹과 앱, 무엇이 다른가 · 할 수 있는 일은 거의 같다. 앱은 빨리 열고 파일을 다루기 편한 것이 장점이고, 웹은 설치가 필요 없다는 것이 장점이다. 둘 다 같은 계정이면 대화는 한곳에 모인다.

크롬 확장 프로그램에 추가 — Claude for Chrome

Claude 앱이 내 파일을 다룰 수 있다면, Claude for Chrome은 Chrome 웹 브라우저를 보고 제어할 수 있는 권한을 Claude에게 제공한다. 캡처해 붙여 넣을 필요 없이 “이 페이지에서 …”라고 말하면 된다. 만든 웹사이트를 직접 열어 눌러 보고 고치는 단계까지 갈 때 특히 쓸모가 있다.

설치

  1. 크롬 웹스토어를 연다 크롬에서 chromewebstore.google.com 에 들어가 Claude를 검색한다. 제공자가 Anthropic인지 확인하고 고른다(이름이 비슷한 다른 확장이 많다).
  2. Chrome에 추가를 누른다 크롬만 된다. 엣지·웨일에서는 안 되거나 제한된다.
  3. 고정한다 주소창 오른쪽 퍼즐 모양(확장) 아이콘 → Claude 옆 압정을 눌러 항상 보이게 둔다.
  4. 로그인한다 웹·앱에서 쓰던 같은 계정으로 로그인한다. 유료 요금제에서 쓸 수 있다(무료 계정은 제한되거나 사용 불가).
  5. 사이트별 권한을 켠다 확장을 열고 지금 사이트에 대한 접근을 허용한다. 권한은 사이트마다 따로 주는 방식이라, 필요한 곳에서만 켜면 된다.

무엇이 좋아지나

이럴 때이렇게 바뀐다
내가 만든 페이지를 확인할 때“이 페이지에서 버튼을 눌러 보고, 안 되는 부분을 알려 줘” — 캡처 없이 직접 보고 답한다
오류를 찾을 때개발자 도구의 빨간 글씨(콘솔)를 대신 읽어 원인을 짚어 준다. 5단원의 캡처 방법을 쓸 일이 줄어든다
긴 자료를 읽을 때지금 열린 문서·기사·표를 그 자리에서 요약하고 표로 정리한다
반복 작업여러 탭을 오가며 자료를 모으는 일을 대신 시킬 수 있다
바이브 코딩에서의 효과 · “만든다 → 돌려본다 → 고친다” 고리에서 돌려보는 단계가 빨라진다. 내가 눈으로 보고 설명하던 것을 Claude가 직접 보게 되니, 같은 시간에 고치는 횟수가 늘어난다.

조심할 것

  • 보는 만큼 권한을 준다 · 켜 둔 사이트의 화면 내용을 Claude가 본다. 성적·개인정보·메일함이 열린 탭에서는 켜지 않는다(8단원 ②).
  • 누르는 것은 되돌릴 수 없다 · 글 올리기, 결제, 삭제처럼 한 번 누르면 끝인 버튼은 사람이 직접 누른다.
  • 웹페이지의 글을 명령으로 착각하지 않게 · 나쁜 마음을 먹은 페이지에 “이렇게 하라”는 문장을 숨겨 두는 수법이 있다. 낯선 사이트에서는 권한을 켜지 않는 것이 안전하다.
  • 학교 컴퓨터 · 확장 설치가 막힌 경우가 많다. 그럴 때는 캡처해서 붙여 넣는 방법(5단원)으로 충분하다.
없어도 된다 · 이 교재의 3~6단원은 확장 없이 전부 할 수 있다. 크롬 확장은 손이 덜 가게 해 주는 도구지, 꼭 있어야 하는 준비물이 아니다.

모델 고르기

Claude는 성격이 다른 여러 모델이 있다. 대화창 위쪽에서 고른다.

모델성격이럴 때
Claude Fable가장 어려운 문제까지 붙잡고 오래 생각한다. 한 번 답하는 데 몇 분이 걸리기도 한다다른 모델이 막힌 문제, 오래 걸리는 복잡한 작업
Claude Opus깊게 생각하면서도 Fable보다는 가볍다설계, 어려운 버그, 처음 만드는 큰 기능
Claude Sonnet빠르면서도 충분히 똑똑하다대부분의 작업 · 기본값으로 두기 좋다
Claude Haiku가볍고 아주 빠르다짧은 질문, 간단한 수정

위로 갈수록 똑똑하지만 느리고, 요금제에 따라 쓸 수 있는 양이 적다. 실습은 Sonnet으로 시작해 막힐 때만 한 칸씩 위로 올려 보는 편이 좋다. 무료 요금제에서는 맨 윗줄을 아예 못 쓸 수도 있다.

번호는 계속 올라간다 · 모델 이름 뒤에는 Fable 5.1, Opus 5, Sonnet 5처럼 세대 번호가 붙고 새 모델이 꾸준히 나온다. 이름을 외우기보다 “아주 깊게 / 깊게 / 균형 / 빠르게” 네 갈래가 있다고 기억하면 된다.
좋은 모델을 고르는 것보다 중요한 것 · 결과가 마음에 안 들 때, 더 비싼 모델로 바꾸기 전에 내 요청이 또렷했는지를 먼저 본다(4단원). 흐릿한 요청은 어떤 모델에게 시켜도 흐릿한 답으로 돌아온다.

대화창에서 눈여겨볼 것

  • 아티팩트(Artifacts) · 웹페이지나 앱을 만들어 달라고 하면 답변 옆에 따로 창이 열리고 결과가 바로 실행된다. 버튼을 눌러 보고, 마음에 안 들면 그 자리에서 고쳐 달라고 하면 된다. 이 교재의 실습은 대부분 여기서 이뤄진다.
  • 파일 첨부 · 사진, 표(csv·xlsx), 문서를 올려 “이 자료를 이렇게 정리해 줘”라고 할 수 있다.
  • 프로젝트(Projects) · 관련 있는 대화와 자료를 한 곳에 모아 둔다. 며칠에 걸쳐 만드는 작업에 쓴다.
  • 대화 이어가기 · 같은 대화창 안에서는 앞의 내용을 기억한다. 새 대화를 열면 처음부터라는 점을 기억한다.
3단원

첫 작품 만들기실습 1

설명을 더 읽기 전에 하나를 만들어 본다. 목표는 15분 안에 돌아가는 웹페이지 하나다.

✏️ Claude에게 이렇게 보낸다
시험 D-day를 세어 주는 웹페이지를 만들어 줘. - 시험 이름과 날짜를 여러 개 넣을 수 있게 해 줘 - 남은 날짜가 큰 글씨로 보이고, 가까운 시험이 위로 오게 정렬해 줘 - 새로고침해도 입력한 내용이 남아 있으면 좋겠어 - 고등학생이 쓸 거라 화면은 단순하고 글씨는 크게 - 한국어로 만들어 줘
그대로 따라 쳐도 되고, D-day 대신 만들고 싶은 것으로 바꿔도 된다.
  1. 보낸다 답변 옆에 아티팩트 창이 열리고 페이지가 실행된다.
  2. 직접 눌러 본다 시험을 두세 개 넣어 보고, 새로고침도 해 본다. 눈으로 확인하는 이 단계를 건너뛰지 않는다.
  3. 한 군데만 고친다 “날짜가 지난 시험은 회색으로 흐리게 보여 줘”처럼 한 번에 하나씩 요청한다.
  4. 한 번 더 고친다 “시험마다 색을 다르게 고를 수 있게 해 줘”. 여기까지 오면 사이클을 한 바퀴 돈 것이다.
  5. 남긴다 아티팩트 창에서 코드를 복사하거나 공유 링크를 만든다.
잘 안 되면 · 화면이 비거나 오류가 보이면, 그 화면을 그대로 캡처해 올리거나 오류 문구를 그대로 복사해서 붙여 넣는다. “안 돼요”보다 열 배 빨리 고쳐진다.
4단원

또렷하게 말하기요구사항 명료화

바이브 코딩에서 결과의 질을 가르는 것은 대부분 처음 한 단락이다. 같은 AI라도 무엇을 어떻게 말했느냐에 따라 전혀 다른 것이 나온다.

✗ 흐릿한 요청
“학급 관리 프로그램 만들어 줘”
무엇을 관리하는지, 누가 쓰는지, 자료가 어떻게 생겼는지가 없다. AI는 짐작해서 만들고, 대개 내가 원한 것과 다르다.
✓ 또렷한 요청
“우리 반 28명 출결을 기록하는 웹페이지. 이름·번호는 아래 표 형식이고, 하루에 결석만 체크한다…”
무엇을·누가·자료 형식이 들어 있다. 첫 결과부터 쓸 만하게 나온다.

체크리스트 다섯 가지

  1. 무엇을 만드는가 — 한 문장으로
  2. 누가 쓰는가 — 학생, 선생님, 나 혼자
  3. 자료는 어떻게 생겼는가 — 예시 한 줄을 그대로 보여 준다
  4. 화면은 어떤 느낌인가 — 단순하게, 글씨 크게, 색은 차분하게
  5. 조건은 무엇인가 — 설치 없이 브라우저만, 인터넷 없이도, 휴대폰에서도
예시 한 줄의 힘 · 3,김하늘,여,010-0000-0000 같은 줄 하나를 같이 주면, AI는 자료의 순서와 형식을 정확히 맞춘다. 말로 열 줄 설명하는 것보다 낫다.

“가능한가”부터 묻는 습관

바로 “만들어 줘”라고 하기 전에, 먼저 되는지·어떤 방법이 있는지를 묻는 편이 훨씬 빠르다. 잘못된 길로 한참 간 뒤에 되돌아오는 일을 막아 준다.

✏️ 설계부터 묻는 프롬프트
이런 걸 만들고 싶어. (여기에 다섯 가지 체크리스트) 바로 코드를 쓰지 말고 먼저 알려 줘. 1) 이게 가능한지, 어려운 부분은 어디인지 2) 방법이 여러 개면 장단점과 함께 2~3가지 3) 내가 미리 정해야 할 것이 있다면 질문해 줘
답을 읽고 방향을 고른 다음에 “좋아, 1번 방법으로 만들어 줘”라고 이어 간다.
5단원

고쳐 나가기반복 사이클

처음 결과가 완벽한 경우는 거의 없다. 바이브 코딩의 진짜 실력은 고치는 단계에서 드러난다.

고칠 때의 네 가지 원칙

  • 한 번에 하나씩 · 다섯 군데를 한꺼번에 고쳐 달라고 하면, 고쳐진 곳과 망가진 곳이 섞여 무엇 때문인지 알 수 없게 된다.
  • 어디인지 짚어 준다 · “위쪽 파란 버튼”, “표의 세 번째 칸”처럼 보이는 대로 말하면 된다. 코드 용어를 몰라도 된다.
  • 오류는 그대로 붙여 넣는다 · 빨간 글씨를 요약하지 말고 통째로 복사한다. 줄 번호와 파일 이름이 단서다.
  • 잘 되던 지점을 남겨 둔다 · 마음에 드는 버전이 나오면 코드를 따로 저장해 둔다. 고치다 더 나빠지면 돌아갈 곳이 생긴다.

이렇게 말하면 잘 통한다

상황이렇게
일부만 바꾸고 싶다“다른 곳은 그대로 두고, 이 부분만 이렇게 바꿔 줘”
오류가 났다“이 오류가 나. (오류 전문 붙여넣기) 원인이 뭘까?”
고쳤는데 또 망가졌다“방금 고치기 전 버전으로 되돌리고, 대신 …만 바꿔 줘”
왜 이렇게 했는지 모르겠다“이 코드가 하는 일을 한 줄씩 쉽게 설명해 줘”
점점 복잡해진다“지금까지 만든 걸 정리해서, 필요 없는 부분을 덜어 낸 버전으로 다시 써 줘”
설명을 요청하는 습관 · 만든 코드를 설명해 달라고 하면 공부가 된다. 바이브 코딩을 오래 하면서 실력이 느는 사람과 늘지 않는 사람의 차이가 여기서 갈린다.

화면을 찍어서 보여 준다 — 캡처 방법

“위쪽 버튼이 이상해”보다 화면 그림 한 장이 훨씬 정확하다. Claude는 이미지를 읽으므로, 캡처해서 대화창에 붙여 넣고 “이렇게 보여. 오른쪽 표가 잘려”처럼 한 줄만 덧붙이면 된다. 오류 문구도 글자로 복사가 안 될 때는 캡처로 대신할 수 있다.

기기이렇게 찍는다붙여 넣기
WindowsWin + Shift + S → 원하는 부분을 끌어서 선택. 전체 화면은 PrtSc대화창에서 Ctrl + V
Mac⌘ + Shift + 4 → 끌어서 선택 (Ctrl을 함께 누르면 파일 대신 클립보드에 저장)⌘ + V
크롬북Ctrl + Shift + 창 전환(▯▯) → 영역 선택Ctrl + V
휴대폰안드로이드: 전원 + 소리 줄이기 · 아이폰: 측면 버튼 + 소리 높이기대화창의 📎(첨부) → 사진 선택
  • 문제가 되는 부분만 잘라 찍는다. 화면 전체를 올리면 어디를 봐야 하는지 Claude도 헤맨다.
  • 개발자 도구의 빨간 글씨(오류)는 F12 → Console 탭을 열어 그 부분을 찍는다. 3단원의 오류 붙여넣기와 같은 효과다.
  • “이렇게 되고 싶다”도 그림으로 · 종이에 그린 스케치나 마음에 드는 다른 사이트의 화면을 찍어 “이런 느낌으로”라고 하면 말보다 빠르다.
  • 개인정보 확인 · 캡처에 이름·학번·다른 사람 얼굴이 들어가 있지 않은지 보고 올린다(8단원 ②).
✏️ 캡처와 함께 이렇게 보낸다
[캡처 붙여넣기] 이 화면에서 빨간 동그라미 친 부분이 문제야. 표가 오른쪽으로 잘려서 안 보여. 휴대폰 화면에서도 다 보이게 고쳐 줘. 다른 곳은 그대로 두고.
Windows 캡처 도구(Win+Shift+S) 뒤에 뜨는 알림을 누르면 펜으로 동그라미를 칠 수 있다. 어디를 보라는지 표시하면 답이 정확해진다.
실습 2

작품 만들기 — 갤러그게임으로 사이클 돌리기

3단원에서 한 바퀴를 돌아 봤다면, 이번에는 게임이다. 1978년 오락실 게임 갤러그(Galaga)를 웹페이지 하나로 만든다. 4단원의 "또렷하게 말하기"와 5단원의 "한 번에 하나씩 고치기"를 그대로 써 보는 실습이다.

SCORE 1200 STAGE 2 ← 남은 목숨 3 ← → 이동 · SPACE 발사 줄지어 선 적 편대(좌우로 이동) 한 마리씩 곡선으로돌진 = 갤러그다움 맞으면 폭발 +점수 올라감 내 우주선← → 이동 · SPACE 발사 1단계는 편대 + 내 우주선 + 총알까지 · 돌진·목숨·판 넘김은 2단계에서 더한다
▲ 2단계까지 마쳤을 때의 화면 예시. 처음부터 이대로 만들려 하지 말고, 위 순서대로 하나씩 더해 간다. 색과 모양은 3단계에서 내 마음대로 바꾼다.

1단계 — 뼈대부터 (10분)

처음부터 다 넣으려 하면 코드가 길어져 고치기 어렵다. 움직이고 쏘는 것까지만 먼저 만든다.

✏️ Claude에게 이렇게 보낸다
갤러그 같은 슈팅 게임을 HTML 파일 하나로 만들어 줘. - 아래쪽에 내 우주선이 있고, 좌우 화살표로 움직이고 스페이스바로 총알을 쏜다 - 위쪽에 적 우주선이 여러 줄로 줄지어 있고, 좌우로 천천히 움직인다 - 총알이 적에 맞으면 적이 사라지고 점수가 1 올라간다 - 점수는 화면 왼쪽 위에 보여 줘 - 설치 없이 브라우저에서 바로 열리게, 라이브러리 없이 canvas로 만들어 줘 - 고등학생이 읽을 수 있게 코드에 한국어 주석을 달아 줘
마지막 두 줄이 중요하다. "라이브러리 없이"는 파일 하나로 끝나게 해 주고, "한국어 주석"은 나중에 내가 고칠 수 있게 해 준다.
  1. 실행해 본다 아티팩트 창에서 화살표와 스페이스바를 직접 눌러 본다. 손맛이 어떤지 느껴 본다.
  2. 한 가지만 고친다 "총알이 너무 느려. 두 배 빠르게 해 줘" 또는 "우주선이 너무 빨라. 조금 천천히".
  3. 잘 되는 버전을 저장한다 마음에 들면 코드를 복사해 galaga_1.html로 따로 저장해 둔다. 5단원의 "돌아갈 곳"이다.

2단계 — 게임답게 만들기

여기서부터가 진짜 실습이다. 아래 중 하나씩 골라 요청하고, 될 때마다 실행해 본다. 한꺼번에 다섯 개를 시키면 무엇이 망가졌는지 알 수 없다.

무엇을이렇게 말한다
적도 공격하게“적이 가끔 아래로 총알을 쏘게 해 줘. 맞으면 목숨이 하나 줄어들고, 목숨은 3개로 시작해”
단계 만들기“적을 다 없애면 다음 판이 시작되고, 판이 올라갈수록 적이 조금씩 빨라지게 해 줘”
갤러그답게“적이 한 마리씩 곡선을 그리며 아래로 돌진했다가 제자리로 돌아가게 해 줘”
시작·종료 화면“시작 화면과 게임 오버 화면을 넣고, 스페이스바로 다시 시작할 수 있게 해 줘”
최고 점수“최고 점수를 저장해서 새로고침해도 남아 있게 해 줘(localStorage)”
소리“총 쏠 때와 적이 터질 때 짧은 효과음을 넣어 줘. 파일 없이 코드로 소리를 만들어 줘”
휴대폰에서도“휴대폰에서는 화면 아래에 좌·우·발사 버튼이 나오게 해 줘”
한 걸음마다 저장 · galaga_2.html, galaga_3.html… 번호를 올려 가며 남긴다. 고치다 망가져도 바로 전 단계로 돌아가면 된다.

3단계 — 내 게임으로 바꾸기

여기까지 오면 남과 똑같은 갤러그다. 이제 나만의 것으로 만든다. 이 단계가 한마당 심사에서 가장 눈에 띄는 부분이다.

  • 주제를 바꾼다 · “우주선 대신 우리 학교 마스코트로, 적은 시험지로 바꿔 줘”처럼 이야기를 입힌다.
  • 그림을 바꾼다 · “우주선을 네모 대신 삼각형으로 그리고 불꽃을 달아 줘”, 또는 직접 그린 그림을 캡처해 “이렇게 생기게 해 줘”(5단원 캡처 방법).
  • 규칙을 하나 더한다 · “10초마다 아이템이 떨어지고, 먹으면 5초 동안 총알이 두 줄로 나가게”처럼 내 아이디어를 넣는다.
  • 설명을 요청한다 · “적이 움직이는 부분 코드를 한 줄씩 설명해 줘.” 이 습관이 실력을 만든다(5단원).
자주 만나는 문제 · 화면이 까맣기만 하다 → 캔버스 크기나 그리기 반복(루프)이 빠진 경우. 오류 문구를 그대로 붙여 넣는다. · 키를 눌러도 반응이 없다 → “게임 화면을 한 번 클릭한 뒤에도 키가 안 먹어”라고 알려 준다. · 점점 느려진다 → “화면 밖으로 나간 총알과 적을 목록에서 지워 줘”라고 요청한다.

완성했다면

  • 친구에게 시켜 본다 · 설명 없이 혼자 해 보게 두고, 어디서 막히는지 본다. 그게 다음에 고칠 곳이다.
  • 인터넷에 올린다 · 6단원의 GitHub Pages로 올리면 주소가 생긴다. 바이브 코딩 한마당에 낼 작품 URL이 바로 이것이다.
  • 만든 과정을 남긴다 · 어떤 프롬프트로 어떻게 고쳐 왔는지가 결과물만큼 중요하다. 대화 화면을 몇 장 캡처해 둔다.
완성하면 이런 모습 · 선생님이 같은 방법으로 만든 예시를 직접 해 볼 수 있다 → 코스모 스트라이커. 1단계 뼈대에서 시작해 2단계(목숨·판 넘김·파워업), 3단계(내 그림·소리), 6단원(GitHub 공개 + 전체 순위표)까지 간 결과물이다. 똑같이 만들 필요는 없다 — 어디까지 갈 수 있는지 보는 용도다.
6단원

더 크게 만들기여러 날 · 여러 파일

대화창 하나로 되는 일에는 한계가 있다. 파일이 여러 개가 되고 작업이 며칠에 걸치면 방법을 바꾼다.

프로젝트에 자료를 모아 둔다

프로젝트(Projects)를 만들고 자주 쓰는 자료(명단 양식, 규칙 문서, 지금까지의 코드)를 올려 두면, 그 안에서 새 대화를 열어도 매번 다시 설명하지 않아도 된다. “우리 반은 28명이고 번호는 1번부터”처럼 매번 반복되는 배경을 여기 적어 둔다.

Claude Code — 내 컴퓨터의 파일을 직접 고친다

웹 대화창은 코드를 보여 줄 뿐이라, 내가 복사해서 붙여 넣어야 한다. 파일이 열 개쯤 되면 이 과정이 더 힘들어진다. Claude Code는 터미널에서 실행하며 내 컴퓨터의 파일을 직접 읽고 고친다.

# 설치 후, 만들고 있는 폴더에서 실행한다
claude

# 그 다음에는 그냥 말로 시킨다
> 이 폴더의 index.html에서 로그인 부분만 따로 파일로 분리해 줘
  • 이럴 때 쓴다 · 파일이 여러 개다 / 고칠 곳이 여기저기 흩어져 있다 / 만든 것을 계속 이어서 관리한다
  • 주의 · 내 파일을 실제로 바꾸므로, 중요한 폴더에서는 반드시 사본을 두고 시작한다.
어디까지가 이 교재의 범위인가 · 3~5단원까지만 해도 쓸 만한 것을 충분히 만들 수 있다. Claude Code는 “더 갈 수 있는 길”로 알아 두고, 필요해졌을 때 시작하면 된다.

GitHub에 올려 웹 서비스로 공개하기 — GitHub Pages

지금까지 만든 것은 내 컴퓨터에서만 열린다. 친구에게 주소를 보내 주고, 바이브 코딩 한마당에 작품 URL을 내려면 인터넷에 올려야 한다. 가장 쉬운 방법이 GitHub이다. GitHub은 전 세계 개발자가 코드를 보관하고 나누는 곳인데, GitHub Pages라는 기능으로 index.html이 있는 저장소를 무료 웹사이트로 바꿔 준다. 서버도, 돈도, 설치도 필요 없다.

방법 A — 브라우저만으로 (설치 없음, 10분)

  1. 가입한다 github.com에서 Sign up. 학교 구글 계정으로도 되고, 아이디는 나중에 주소에 그대로 들어가므로 부끄럽지 않은 것으로 정한다.
  2. 저장소를 만든다 오른쪽 위 + → New repository. 이름은 영문·소문자(예: exam-dday), Public을 고르고 Create.
  3. 파일을 올린다 Add file → Upload files에 만든 index.html(그림·CSS 파일이 있으면 함께)을 끌어다 놓고 아래 Commit changes.
  4. Pages를 켠다 저장소의 Settings → Pages → Branch를 main, 폴더를 / (root)로 두고 Save.
  5. 주소를 받는다 1~2분 뒤 같은 화면 위쪽에 https://아이디.github.io/exam-dday/ 가 뜬다. 이것이 내 웹 서비스 주소다. 휴대폰에서도 열린다.

고칠 때는 3번처럼 같은 이름의 파일을 다시 올리면(덮어쓰기) 1~2분 뒤 자동으로 바뀐다. 저장소 안의 파일을 클릭하고 연필 아이콘으로 바로 고쳐도 된다.

방법 B — Claude Code에게 시킨다 (여러 파일일 때)

파일이 많거나 자주 고친다면 위의 Claude Code로 올리는 일까지 맡긴다. 처음 한 번만 GitHub 명령줄 도구 gh를 설치하고 gh auth login으로 로그인해 둔다(브라우저가 열리며 승인만 누르면 된다). 그 다음부터는 말로 한다.

✏️ Claude Code에게 이렇게 보낸다
이 폴더를 GitHub 공개 저장소로 만들고 GitHub Pages로 배포해 줘. 저장소 이름은 exam-dday로 하고, 끝나면 접속 주소를 알려 줘.
Claude가 git init → 커밋 → gh repo create → Pages 설정까지 차례로 하고 주소를 돌려준다. 이후에는 "고친 것 올려 줘" 한마디면 된다.

올리기 전에 꼭 확인

  • Public = 전 세계에 공개 · 코드 안의 비밀번호, API 키, 친구 이름·전화번호·사진은 올리기 전에 지운다. 한 번 올라간 것은 지워도 기록에 남는다(8단원 ②·④).
  • index.html이 맨 위에 · 폴더 안에 넣으면 주소가 …/폴더이름/이 된다. 헷갈리면 Claude에게 "index.html을 최상위로 옮겨 줘".
  • DB·로그인은 안 된다 · Pages는 파일을 보여 주기만 한다. 자료 저장은 브라우저 localStorage로, 서버가 꼭 필요하면 그때 다른 방법(Vercel·Netlify·직접 서버)을 찾는다.
  • 주소가 곧 포트폴리오 · 저장소 이름과 첫 화면을 신경 쓴다. 한마당 심사도 이 주소로 들어온다.
왜 GitHub인가 · 무료이고, 파일의 바뀐 역사가 전부 남아 언제든 되돌릴 수 있고, 대학·회사가 실제로 보는 곳이다. 지금 만든 작품이 나중의 이력이 된다.

작품에 DB 붙이기 — Firebase Firestore

GitHub Pages는 파일을 보여 주기만 한다. 그래서 순위표를 만들어도 그 브라우저에만 남고, 친구가 열면 텅 비어 있다. 여러 사람의 기록을 한곳에 모으려면 DB가 필요하다. 구글이 무료로 주는 Firebase Firestore를 쓰면 서버를 만들지 않고도 된다.

저장하는 곳은 세 단계가 있다

어디에누가 볼 수 있나이럴 때
localStorage (브라우저)그 기기의 나만혼자 쓰는 메모, 내 최고 점수
Firestore (구글 DB)접속한 모든 사람순위표, 방명록, 설문, 신청 목록
직접 만든 서버내가 정한 사람만로그인·결제처럼 규칙이 복잡할 때

Firestore 무료 한도 (Spark 요금제)

  • 저장 용량 1GiB · 하루 읽기 5만 번, 쓰기 2만 번, 삭제 2만 번
  • 카드 등록이 필요 없다. 한도를 넘으면 요금이 나오는 게 아니라 그날은 더 안 된다 — 학생 작품에 안전하다.
  • 순위표라면 하루 수천 명이 들어와도 한도 안쪽이다.

준비 — 한 번만 하면 된다 (실제 화면으로)

아래는 galaga-rank 프로젝트를 실제로 만들면서 찍은 화면이다. 빨간 네모가 눌러야 할 곳이다. 콘솔 화면은 가끔 바뀌니 글자를 보고 찾으면 된다.

① 프로젝트 만들기

console.firebase.google.com 에 구글 계정으로 로그인 → 프로젝트 만들기.

프로젝트 이름에 galaga-rank 입력
1프로젝트 이름은 영문 소문자로. 입력하면 아래에 galaga-rank 같은 프로젝트 ID가 자동으로 붙는데, 나중에 코드에 들어가는 값이다.
애널리틱스 사용 설정 끄기
2Google 애널리틱스는 꺼도 된다. 순위표에는 필요 없다.
프로젝트가 준비되었습니다
330초쯤 기다리면 준비 완료 → 계속.

② 웹 앱 등록하고 설정값 받기

앱 추가 버튼
4프로젝트 이름 아래 + 앱 추가.
플랫폼에서 웹 선택
5플랫폼 중 </> (웹) 선택.
앱 닉네임 입력, 호스팅 체크 해제
6앱 닉네임을 적고 앱 등록. Firebase 호스팅 체크는 해제한다 — 우리는 GitHub Pages를 쓰기 때문이다.
firebaseConfig 설정값 복사
7여기 나오는 firebaseConfig 를 통째로 복사해 둔다. 회색으로 가린 값은 프로젝트마다 다르다. 이 값들은 비밀번호가 아니라 주소표라서 코드에 넣어 공개해도 된다(⚠️ 아래 설명 참고).

③ Firestore 데이터베이스 만들기

데이터베이스 및 스토리지에서 Firestore 선택
8왼쪽 데이터베이스 및 스토리지 → Firestore. (Realtime Database가 아니다)
Standard 버전 선택
9버전은 Standard 그대로 두고 다음.
위치를 asia-northeast3 서울로 선택
10위치는 asia-northeast3 (Seoul). 나중에 바꿀 수 없으니 신중히.
테스트 모드로 시작 후 만들기
11테스트 모드에서 시작 → 만들기. 화면 경고대로 이 상태는 누구나 지울 수 있으니, 바로 다음 단계에서 규칙을 바꾼다.

④ 보안 규칙 게시 — 여기가 진짜 중요한 단계

규칙 탭에 보안 규칙 붙여 넣고 게시
12규칙 탭 → 내용을 모두 지우고 아래 프롬프트로 받은 규칙을 붙여 넣기 → 게시. 게시해야 적용된다.
⚠️ 접속 설정은 공개되는 것이 정상이다 · firebaseConfig 의 apiKey는 비밀번호가 아니라 주소표다. GitHub에 올라가도 괜찮다. 진짜 방어선은 보안 규칙이다. 규칙 없이 두면 남이 내 순위표를 통째로 지울 수 있다.
✏️ Claude에게 이렇게 보낸다 — 순위표 붙이기
지금 만든 게임에 Firebase Firestore로 전체 순위표를 붙여 줘. - 게임이 끝나면 닉네임(최대 8자)과 점수, 웨이브를 scores 컬렉션에 저장한다 - 순위표는 점수 높은 순으로 20명까지 보여 준다 - "이 기기" 탭과 "전체" 탭으로 나눠서, 기존 localStorage 순위표도 그대로 둔다 - 인터넷이 안 되거나 저장에 실패해도 게임은 정상으로 돌아가게 해 줘 - firebase-app / firebase-firestore 는 CDN 모듈로 불러오고, 설정은 파일 맨 위에 모아 줘 내 firebaseConfig는 이거야: [콘솔에서 복사한 내용 붙여넣기]
설정을 붙여 넣기 전에 개인정보가 섞여 있지 않은지 한 번 본다. 프로젝트 이름 정도만 들어 있으면 정상이다.
✏️ 이어서 — 보안 규칙 정하기
Firestore 보안 규칙을 만들어 줘. - scores 컬렉션은 누구나 읽을 수 있다 - 쓰기는 새로 추가하는 것만 허용하고, 수정과 삭제는 아무도 못 한다 - 저장할 때 name은 1~8자 문자열, score와 wave는 0 이상의 숫자여야 한다 - 그 밖의 컬렉션은 전부 막는다 규칙을 어디에 붙여 넣는지도 알려 줘.
이 규칙이면 남이 내 기록을 지우거나 고칠 수 없다. 규칙은 콘솔의 Firestore Database → 규칙 탭에 붙여 넣고 게시를 누른다.

확인하는 방법

  • 콘솔에서 눈으로 · Firestore Database → 데이터 탭에 방금 넣은 기록이 줄줄이 쌓이는 것이 보인다. 엑셀 표를 보는 느낌이다.
  • 다른 기기에서 · 휴대폰으로 같은 주소를 열어 순위표에 내 기록이 보이면 성공이다. 여기서부터 진짜 웹 서비스다.
  • 안 될 때 · 브라우저 F12 → Console의 빨간 글씨를 그대로 Claude에게 붙여 넣는다. permission-denied 는 보안 규칙 문제, Failed to fetch 는 설정값 오타인 경우가 많다.

학생 작품에서 꼭 지킬 것

  • 실명·학번·연락처를 저장하지 않는다 · 닉네임이면 충분하다. DB에 한 번 들어간 개인정보는 지우기 번거롭다(8단원 ②).
  • 지우는 권한은 나만 · 위 규칙처럼 삭제를 막아 두고, 관리가 필요하면 콘솔에서 직접 지운다.
  • 욕설·장난 입력을 염두에 둔다 · 글자 수 제한, 금지어 걸러 내기를 함께 요청한다.
  • 한도를 지켜본다 · 콘솔 사용량 화면에서 하루 읽기/쓰기 수를 볼 수 있다. 화면을 열 때마다 전체를 읽지 말고 20개만 읽도록 만든 이유가 이것이다.
더 간단한 길도 있다 · 신청서·설문처럼 모아서 보기만 하면 되는 것은 구글 시트 + Apps Script로도 된다. 결과가 시트에 바로 쌓여 편하지만 느리고 동시 접속에 약하다. 화면에 바로 보여 줘야 하는 것(순위표·방명록)은 Firestore가 낫다.

앱처럼 설치하기 — PWA

여기까지 오면 주소를 눌러 여는 웹사이트다. 여기에 파일 두 개만 더하면 휴대폰 홈 화면에 아이콘이 생기고, 주소창 없는 전체 화면으로 열리며, 인터넷이 끊겨도 실행되는 앱이 된다. 이것을 PWA(Progressive Web App)라고 한다. 앱 스토어에 올리지 않아도 되고, 심사도 비용도 없다.

무엇이하는 일
manifest.webmanifest앱 이름, 아이콘, 화면 방향(세로), 배경색을 적어 둔 명찰. 이게 있어야 '설치'가 뜬다
sw.js (서비스 워커)파일을 미리 받아 두는 창고지기. 두 번째 방문부터는 인터넷 없이도 열린다
아이콘 PNG홈 화면에 놓일 그림. 192·512 두 크기와, 안드로이드 원형에 맞춘 maskable을 함께 준비한다
✏️ Claude에게 이렇게 보낸다
지금 만든 페이지를 PWA로 만들어 줘. GitHub Pages(주소가 /저장소이름/ 아래)에서 동작해야 해. - manifest.webmanifest: 앱 이름 [작품이름], 세로 화면, 배경색과 테마색은 지금 디자인에 맞춰서 - 아이콘은 192·512와 maskable, 애플용 180까지 만들어 줘 (그림도 코드로 그려 줘) - sw.js: 페이지와 아이콘은 캐시해서 인터넷 없이도 열리게, 단 외부 주소(폰트·DB)는 캐시하지 마 - HTML에는 매니페스트·아이콘·테마색 태그를 넣고 서비스 워커를 등록해 줘 - 시작 화면에 '앱으로 설치' 버튼을 넣되, 설치할 수 있을 때만 보이게 해 줘 경로는 모두 상대경로(./)로 써 줘.
마지막 줄이 중요하다. GitHub Pages는 /저장소이름/ 아래에 놓이므로 /manifest... 처럼 맨 앞에 슬래시를 쓰면 찾지 못한다.

설치해 보기

  • 안드로이드·PC 크롬 · 사이트에 들어가면 주소창 오른쪽에 설치 아이콘이 생긴다. 위 프롬프트대로 만들었다면 화면의 '앱으로 설치' 버튼으로도 된다.
  • 아이폰 · 사파리로 열고 공유 → 홈 화면에 추가. (아이폰은 설치 버튼이 뜨지 않는다)
  • 확인 · 설치한 아이콘으로 열었을 때 주소창이 사라지면 성공이다. 비행기 모드로 켜 보면 오프라인 동작도 확인할 수 있다.
자주 걸리는 세 가지 · ① 서비스 워커는 https에서만 돈다. 내 컴퓨터 파일(file:///…)로 열면 설치도 오프라인도 안 된다 — GitHub Pages에 올린 뒤 확인한다. ② 고친 내용이 안 보이면 창고지기가 옛 파일을 주고 있는 것이다. Ctrl+F5로 새로고침하거나, Claude에게 “서비스 워커 캐시 버전을 올려 줘”라고 한다. ③ 오프라인에서는 DB(전체 순위표)만 멈춘다. 그때도 게임이나 화면은 그대로 돌아가게 만들어야 좋은 앱이다.
해 보면 안다 · 실습 2의 예시 코스모 스트라이커가 PWA로 만들어져 있다. 휴대폰으로 열어 홈 화면에 추가해 보면 무엇이 달라지는지 바로 느껴진다.
7단원

실전 사례 — 수업도우미Case Study

실제로 만들어져 쓰이고 있는 것을 하나 따라가 본다. 한 학기 동안 7개 학급 약 200명의 수업 기록을 관리하는 웹앱이다.

만든 것

수업도우미

  • 학생 명부와 사진 관리
  • 주간 시간표 자동 입력, 손으로 보정
  • 학급별 진도 기록, 시간마다 학생별 참여도 메모
  • 결석 기록과 월별 통계
  • 학년이 바뀌면 새 파일이 만들어지고, 지난해 자료는 읽기 전용으로 조회

재료 · 자료 보관은 Google Sheets 기능은 Google Apps Script 화면은 HTML·JS — 설치할 서버가 없고 구글 계정만 있으면 된다.

어떤 순서로 대화했나

  1. 한 단락으로 적었다 무엇을 관리하고, 자료는 어디에 두고, 화면은 어떤 느낌인지.
  2. “가능한가”부터 물었다 구글 시트를 데이터베이스처럼 써도 되는지, 더 나은 방법은 없는지.
  3. 설계를 먼저 받았다 파일을 어떻게 나눌지, 자료를 어떤 표로 만들지 읽고 승인했다.
  4. 기능 하나씩 받았다 명부 → 시간표 → 진도 → 출결 순서로, 하나가 돌아가면 다음으로.
  5. 쓰면서 고쳤다 실제 수업에서 써 보고 불편한 곳을 “이 부분만” 식으로 고쳐 나갔다.

이 사례에서 배울 점

핵심은 도메인 지식이었다 · “학기가 바뀌면 시간표도 대상 학생도 바뀐다.” 이건 코딩 지식이 아니라 학교를 아는 사람만 아는 사정이다. 이걸 또렷하게 전달한 것이 이 프로그램의 가장 중요한 부분이었다. AI는 이걸 짐작할 수 없다.

바이브 코딩에서 사람이 맡는 몫이 바로 여기다. 내가 잘 아는 일에서 시작하면, 프로그래밍을 오래 배운 사람보다 더 쓸모 있는 것을 만들 수 있다.

무엇부터 만들어 볼까 · 동아리 출석부, 수행평가 마감 알림, 급식 메뉴 모아 보기, 반 티셔츠 수요 조사처럼 내가 이미 불편을 겪고 있는 것이 가장 좋은 첫 주제다.
8단원

조심할 것꼭 지킬 것

① AI는 자신 있게 틀린다

그럴듯한 코드와 설명을 내놓지만 실제로는 돌아가지 않거나, 없는 기능을 있는 것처럼 말하기도 한다. 반드시 실행해서 눈으로 확인한다. 확인하지 않은 결과를 남에게 건네지 않는다.

② 남의 개인정보를 올리지 않는다

친구의 이름·연락처·사진, 학생 명단 같은 자료를 대화창에 그대로 올리지 않는다. 연습할 때는 가짜 자료를 쓴다.

✏️ 가짜 자료를 만들어 달라고 하면 된다
연습용으로 학생 명단 예시 자료를 20명치 만들어 줘. 실제 사람이 아닌 가짜 이름으로, 번호·이름·성별만 있으면 돼.
비밀번호와 열쇠도 마찬가지 · 계정 비밀번호, API 키 같은 것은 대화창에 붙여 넣지 않는다. 코드에 넣어야 한다면 “이 값은 따로 보관하고 코드에서는 불러 쓰는 방식으로 해 줘”라고 요청한다.

③ 학교 과제에는 규칙이 있다

과제나 수행평가에 AI를 써도 되는지는 선생님의 안내를 먼저 확인한다. 허용되는 경우에도 보통 어디에 어떻게 썼는지 밝히는 것이 조건이다. 만든 결과를 내가 이해하지 못한 채 제출하는 것은, 규칙 이전에 나에게 남는 것이 없다.

④ 만든 것을 공개할 때

인터넷에 올릴 때는 다른 사람의 사진·글꼴·음악을 함부로 쓰지 않는다. AI가 가져다 쓴 자료도 마찬가지이므로, 출처와 사용 조건을 물어보고 확인한다.

GitHub에 올리면 코드가 전 세계에 공개된다. 올리기 전에 비밀번호·연락처·친구 이름·학번이 코드나 화면 문구에 남아 있지 않은지 본다. 한 번 올라간 것은 지워도 기록에 남는다.

DB(Firestore)를 붙였다면 남이 넣은 내용도 내 사이트에 뜬다. 닉네임 글자 수를 제한하고, 욕설이 올라오면 콘솔에서 지울 수 있게 해 둔다. 실명·학번은 애초에 받지 않는다.

부록

프롬프트 치트시트복사해서 쓰기

① 처음 시작할 때
[무엇을] 만들고 싶어. - 쓰는 사람: [누가] - 자료 예시: [한 줄 그대로] - 화면: [단순하게 / 글씨 크게 / 휴대폰에서도] - 조건: [설치 없이 브라우저만 / 인터넷 없이도] 바로 코드를 쓰지 말고, 가능한지와 방법 2~3가지를 먼저 알려 줘.
② 한 군데만 고칠 때
다른 곳은 그대로 두고 [보이는 대로 위치]만 [이렇게] 바꿔 줘.
③ 오류가 났을 때
이렇게 하면 이 오류가 나: [오류 문구 그대로 붙여넣기] 원인이 뭔지 먼저 알려 주고, 고친 코드를 줘.
④ 공부하고 싶을 때
방금 만든 코드를 한 줄씩 쉽게 설명해 줘. 프로그래밍을 처음 배우는 고등학생이 읽는다고 생각하고 써 줘.
⑤ 인터넷에 공개할 때 (GitHub Pages) — Claude Code에서
이 폴더를 GitHub 공개 저장소 [저장소이름]으로 만들고 GitHub Pages로 배포해 줘. - 올리기 전에 비밀번호·API 키·개인정보가 들어 있는지 먼저 검사해서 알려 줘 - index.html이 최상위에 있는지 확인해 줘 - 끝나면 접속 주소를 알려 줘
처음 한 번은 gh auth login이 필요하다(6단원). 고친 뒤에는 "고친 것 GitHub에 올려 줘" 한 줄이면 된다.
⑥ 공개한 뒤 문제가 생겼을 때
GitHub Pages 주소로 들어가면 [404가 뜬다 / 그림이 안 보인다 / 옛날 버전이 보인다]. 저장소 설정과 파일 위치를 확인하고, 원인과 고치는 방법을 알려 줘.
흔한 원인 — index.html이 폴더 안에 있음 · 그림 경로가 내 컴퓨터 절대경로(C:\…) · 반영까지 1~2분 걸림(새로고침 Ctrl+F5).
⑦ 여러 사람의 기록을 모을 때 (Firestore)
Firebase Firestore로 [순위표 / 방명록 / 설문]을 붙여 줘. - [무엇을] 저장하고, 화면에는 최근(또는 상위) 20개만 보여 준다 - 저장에 실패하거나 인터넷이 끊겨도 나머지 기능은 그대로 돌아가게 해 줘 - 보안 규칙도 같이 만들어 줘: 읽기는 누구나, 추가만 허용, 수정·삭제는 금지 내 firebaseConfig는 이거야: [콘솔에서 복사한 내용 붙여넣기]
준비 과정은 6단원 참고. 규칙을 게시하지 않으면 적용되지 않는다.

자주 만나는 문제

증상이렇게 해 본다
화면이 하얗게 비어 있다오류 문구를 그대로 붙여 넣는다. 없으면 “화면이 비어서 안 보여”라고 캡처와 함께 보낸다
고칠수록 더 이상해진다잘 되던 코드를 다시 붙여 넣고 “이 버전에서 …만 바꿔 줘”로 다시 시작한다
답이 중간에 끊긴다“이어서 써 줘”라고 하거나, 기능을 나눠서 하나씩 요청한다
내가 말한 걸 자꾸 잊는다대화가 길어진 것이다. 지금까지의 결과를 정리해 새 대화에서 다시 시작한다
너무 복잡한 코드를 준다“고등학생이 읽을 수 있게 더 단순하게, 라이브러리 없이 써 줘”
GitHub에 올렸는데 주소가 404다Settings → Pages에서 Branch가 main / (root)인지, index.html이 최상위에 있는지 본다. 켠 직후면 1~2분 기다린다

배운 것 확인하기

  • 바이브 코딩에서 사람이 맡는 몫을 두 가지로 말할 수 있다
  • 요구사항 체크리스트 다섯 가지를 보지 않고 떠올릴 수 있다
  • 아티팩트로 웹페이지를 하나 만들어 두 번 이상 고쳐 보았다
  • 오류가 났을 때 무엇을 복사해 붙여야 하는지 안다
  • 대화창에 올리면 안 되는 것 세 가지를 말할 수 있다
  • 게임처럼 긴 작품을 단계로 쪼개어 한 번에 하나씩 요청해 보았다
  • 만든 것을 GitHub Pages로 올려 내 주소를 하나 갖고 있다
  • 브라우저에만 남는 저장(localStorage)과 모두가 보는 저장(DB)의 차이를 말할 수 있다
  • 내 작품을 앱처럼 설치해 홈 화면에서 열어 보았다