문법을 외우는 대신, 만들고 싶은 것을 또렷하게 설명한다. 코드는 AI가 쓴다. 이 교재는 Claude를 옆에 두고 처음부터 끝까지 하나를 만들어 보는 순서로 짜여 있습니다.
바이브 코딩은 “만들고 싶은 것의 분위기(vibe)를 말로 충분히 전달하면, 코드는 AI가 쓴다”는 작업 방식이다. 사람은 무엇을 만들지와 어떤 조건을 지켜야 하는지를 정하고, AI는 어떻게 만들지를 맡는다.
| 관점 | 전통 개발 | 바이브 코딩 |
|---|---|---|
| 주로 필요한 것 | 문법·라이브러리 지식 | 내가 아는 현장의 사정(도메인 지식) |
| 한 번의 작업 단위 | 함수·클래스 하나 | 대화 한 번 |
| 확인하는 방법 | 테스트 코드 | 실행해 보고 눈으로 확인 |
| 고치는 방법 | 코드를 직접 수정 | “여기 이 부분만 이렇게 바꿔 줘” |
| 막히는 지점 | 구현 속도 | 요구사항을 또렷하게 만드는 능력 |
도구를 쓰기 전에, 그 도구를 누가 왜 만들었는지 한 번 보고 가자. 이름 두 개에 만든 사람들의 생각이 담겨 있다.
Anthropic은 2021년에 세워졌다. OpenAI에서 일하던 연구자들이 함께 나와 만든 회사로, 다리오 아모데이(Dario Amodei)가 대표를, 그의 동생 다니엘라 아모데이(Daniela Amodei)가 사장을 맡고 있다. 기계가 무엇을 어떻게 판단하는지 들여다보는 연구로 알려진 크리스 올라(Chris Olah), 물리학자 출신 제러드 캐플런(Jared Kaplan) 등도 함께했다.
이들이 따로 나온 배경으로는 AI 안전(AI safety)을 더 무겁게 다뤄야 한다는 생각이 알려져 있다. 성능을 올리는 일과 그 시스템을 믿을 수 있게 만드는 일을 같은 무게로 놓겠다는 뜻이다.
anthropic은 “인간의, 인류의”라는 뜻의 영어 낱말이다. 그리스어 anthropos(사람) 에서 왔고, 우리가 아는 다른 낱말들과 뿌리가 같다.
anthropology 인류학anthropic principle 인류 원리philanthropy 자선
기술의 이름에 사람을 넣은 회사가, 회사의 목적에도 인류의 이익을 적어 두었다. 이름과 목적이 같은 곳을 가리키고 있는 셈이다.
AI의 이름 Claude는 클로드 섀넌(Claude Shannon, 1916~2001)에게서 왔다고 널리 알려져 있다. 섀넌은 정보이론(Information Theory)을 세운 미국의 수학자·공학자로, 정보의 양을 재는 단위인 비트(bit)를 세상에 알린 사람이다.
정보를 어떻게 재고, 줄이고, 잡음 속에서도 정확히 보낼 수 있는지를 수학으로 밝힌 그의 연구 위에 오늘날의 컴퓨터·통신·압축이 서 있다. AI 역시 결국 정보를 다루는 기술이라는 점에서, 이 이름은 그 뿌리를 가리킨다.
| 때 | 일 |
|---|---|
| 2021년 | Anthropic 설립 |
| 2023년 3월 | Claude 첫 공개 — 처음에는 일부 사용자만 쓸 수 있었다 |
| 2023년 7월 | Claude 2 — 누구나 쓸 수 있게 열렸다 |
| 그 뒤 | Opus·Sonnet·Haiku 세 갈래로 나뉘어 세대를 거듭하고 있다 |
지금 우리가 쓰는 모델은 이 줄기의 가장 최근 세대다. 새 모델은 계속 나오므로, 이름과 번호보다 “무엇을 할 수 있는 도구인가”를 보는 편이 오래 간다.
이 교재는 앤스로픽(Anthropic)의 Claude를 쓴다. 웹 브라우저만 있으면 실습을 다 할 수 있고, 자주 쓰게 되면 앱으로 설치해도 된다.
claude.ai 에서 계정을 만들고 바로 대화한다. 학교 컴퓨터에서도 브라우저로 쓸 수 있다.브라우저로도 충분하지만, 컴퓨터에 앱으로 설치해 두면 세 가지가 달라진다.
Ctrl+V 로 붙여 넣는 것도 된다.claude.com/download 를 친다.앱을 열면 위쪽에 탭이 세 개 있다. 이 가운데 내 컴퓨터의 파일을 직접 다루는 것은 Code 탭이다.
| 탭 | 하는 일 |
|---|---|
| Chat | 평소의 대화. claude.ai 와 같다. 내 파일에는 손대지 않고, 끌어다 놓은 것만 본다 |
| Cowork | 오래 걸리는 일을 맡겨 두는 곳. 내가 다른 일을 하는 동안 혼자 진행한다 |
| Code | 내 폴더를 열어 파일을 직접 고친다. 바이브 코딩에 쓰는 곳 |
| 모드 | 언제 쓰나 |
|---|---|
| Manual | 고치기 전에 매번 물어본다. 무엇이 어떻게 바뀌는지 보여 주고 Accept / Reject 를 누르게 한다 — 처음에는 이것으로 시작한다 |
| Accept edits | 파일 고치는 것은 알아서 하게 둔다. 손에 익은 뒤 빠르게 반복할 때 |
| Plan | 고치지 않고 어떻게 할지 계획만 세운다. 큰 작업 전에 방향을 맞출 때 |
| Auto | 대부분 알아서 한다. 위험해 보이는 일은 걸러 낸다 |
claude.ai 에 접속해 브라우저로 쓰면 된다. 이 교재의 실습은 전부 브라우저만으로 할 수 있다.| 무엇을 | 어떻게 |
|---|---|
| 새 대화 시작 | 왼쪽 위 새 대화 단추. 주제가 바뀌면 새 대화로 여는 편이 낫다 — 한 대화가 길어질수록 앞 내용에 끌려간다 |
| 파일 건네주기 | 창 안으로 끌어다 놓는다. 사진·표(csv·xlsx)·문서 모두 되고, “이 표를 그래프로 그려 줘”처럼 이어서 말한다 |
| 화면 보여 주기 | 화면을 캡처해 붙여 넣으면(Ctrl+V) 그 화면을 보고 답한다. 오류 화면을 보여 줄 때 특히 쓸모 있다 |
| 대화 다시 찾기 | 왼쪽 목록에서 지난 대화를 고르면 이어서 계속할 수 있다. 자주 쓰는 주제는 프로젝트로 묶어 둔다 |
Claude 앱이 내 파일을 다룰 수 있다면, Claude for Chrome은 Chrome 웹 브라우저를 보고 제어할 수 있는 권한을 Claude에게 제공한다. 캡처해 붙여 넣을 필요 없이 “이 페이지에서 …”라고 말하면 된다. 만든 웹사이트를 직접 열어 눌러 보고 고치는 단계까지 갈 때 특히 쓸모가 있다.
chromewebstore.google.com 에 들어가 Claude를 검색한다. 제공자가 Anthropic인지 확인하고 고른다(이름이 비슷한 다른 확장이 많다).| 이럴 때 | 이렇게 바뀐다 |
|---|---|
| 내가 만든 페이지를 확인할 때 | “이 페이지에서 버튼을 눌러 보고, 안 되는 부분을 알려 줘” — 캡처 없이 직접 보고 답한다 |
| 오류를 찾을 때 | 개발자 도구의 빨간 글씨(콘솔)를 대신 읽어 원인을 짚어 준다. 5단원의 캡처 방법을 쓸 일이 줄어든다 |
| 긴 자료를 읽을 때 | 지금 열린 문서·기사·표를 그 자리에서 요약하고 표로 정리한다 |
| 반복 작업 | 여러 탭을 오가며 자료를 모으는 일을 대신 시킬 수 있다 |
Claude는 성격이 다른 여러 모델이 있다. 대화창 위쪽에서 고른다.
| 모델 | 성격 | 이럴 때 |
|---|---|---|
| Claude Fable | 가장 어려운 문제까지 붙잡고 오래 생각한다. 한 번 답하는 데 몇 분이 걸리기도 한다 | 다른 모델이 막힌 문제, 오래 걸리는 복잡한 작업 |
| Claude Opus | 깊게 생각하면서도 Fable보다는 가볍다 | 설계, 어려운 버그, 처음 만드는 큰 기능 |
| Claude Sonnet | 빠르면서도 충분히 똑똑하다 | 대부분의 작업 · 기본값으로 두기 좋다 |
| Claude Haiku | 가볍고 아주 빠르다 | 짧은 질문, 간단한 수정 |
위로 갈수록 똑똑하지만 느리고, 요금제에 따라 쓸 수 있는 양이 적다. 실습은 Sonnet으로 시작해 막힐 때만 한 칸씩 위로 올려 보는 편이 좋다. 무료 요금제에서는 맨 윗줄을 아예 못 쓸 수도 있다.
Fable 5.1, Opus 5, Sonnet 5처럼 세대 번호가 붙고 새 모델이 꾸준히 나온다. 이름을 외우기보다 “아주 깊게 / 깊게 / 균형 / 빠르게” 네 갈래가 있다고 기억하면 된다.설명을 더 읽기 전에 하나를 만들어 본다. 목표는 15분 안에 돌아가는 웹페이지 하나다.
바이브 코딩에서 결과의 질을 가르는 것은 대부분 처음 한 단락이다. 같은 AI라도 무엇을 어떻게 말했느냐에 따라 전혀 다른 것이 나온다.
3,김하늘,여,010-0000-0000 같은 줄 하나를 같이 주면, AI는 자료의 순서와 형식을 정확히 맞춘다. 말로 열 줄 설명하는 것보다 낫다.바로 “만들어 줘”라고 하기 전에, 먼저 되는지·어떤 방법이 있는지를 묻는 편이 훨씬 빠르다. 잘못된 길로 한참 간 뒤에 되돌아오는 일을 막아 준다.
처음 결과가 완벽한 경우는 거의 없다. 바이브 코딩의 진짜 실력은 고치는 단계에서 드러난다.
| 상황 | 이렇게 |
|---|---|
| 일부만 바꾸고 싶다 | “다른 곳은 그대로 두고, 이 부분만 이렇게 바꿔 줘” |
| 오류가 났다 | “이 오류가 나. (오류 전문 붙여넣기) 원인이 뭘까?” |
| 고쳤는데 또 망가졌다 | “방금 고치기 전 버전으로 되돌리고, 대신 …만 바꿔 줘” |
| 왜 이렇게 했는지 모르겠다 | “이 코드가 하는 일을 한 줄씩 쉽게 설명해 줘” |
| 점점 복잡해진다 | “지금까지 만든 걸 정리해서, 필요 없는 부분을 덜어 낸 버전으로 다시 써 줘” |
“위쪽 버튼이 이상해”보다 화면 그림 한 장이 훨씬 정확하다. Claude는 이미지를 읽으므로, 캡처해서 대화창에 붙여 넣고 “이렇게 보여. 오른쪽 표가 잘려”처럼 한 줄만 덧붙이면 된다. 오류 문구도 글자로 복사가 안 될 때는 캡처로 대신할 수 있다.
| 기기 | 이렇게 찍는다 | 붙여 넣기 |
|---|---|---|
| Windows | Win + Shift + S → 원하는 부분을 끌어서 선택. 전체 화면은 PrtSc | 대화창에서 Ctrl + V |
| Mac | ⌘ + Shift + 4 → 끌어서 선택 (Ctrl을 함께 누르면 파일 대신 클립보드에 저장) | ⌘ + V |
| 크롬북 | Ctrl + Shift + 창 전환(▯▯) → 영역 선택 | Ctrl + V |
| 휴대폰 | 안드로이드: 전원 + 소리 줄이기 · 아이폰: 측면 버튼 + 소리 높이기 | 대화창의 📎(첨부) → 사진 선택 |
F12 → Console 탭을 열어 그 부분을 찍는다. 3단원의 오류 붙여넣기와 같은 효과다.3단원에서 한 바퀴를 돌아 봤다면, 이번에는 게임이다. 1978년 오락실 게임 갤러그(Galaga)를 웹페이지 하나로 만든다. 4단원의 "또렷하게 말하기"와 5단원의 "한 번에 하나씩 고치기"를 그대로 써 보는 실습이다.
처음부터 다 넣으려 하면 코드가 길어져 고치기 어렵다. 움직이고 쏘는 것까지만 먼저 만든다.
galaga_1.html로 따로 저장해 둔다. 5단원의 "돌아갈 곳"이다.여기서부터가 진짜 실습이다. 아래 중 하나씩 골라 요청하고, 될 때마다 실행해 본다. 한꺼번에 다섯 개를 시키면 무엇이 망가졌는지 알 수 없다.
| 무엇을 | 이렇게 말한다 |
|---|---|
| 적도 공격하게 | “적이 가끔 아래로 총알을 쏘게 해 줘. 맞으면 목숨이 하나 줄어들고, 목숨은 3개로 시작해” |
| 단계 만들기 | “적을 다 없애면 다음 판이 시작되고, 판이 올라갈수록 적이 조금씩 빨라지게 해 줘” |
| 갤러그답게 | “적이 한 마리씩 곡선을 그리며 아래로 돌진했다가 제자리로 돌아가게 해 줘” |
| 시작·종료 화면 | “시작 화면과 게임 오버 화면을 넣고, 스페이스바로 다시 시작할 수 있게 해 줘” |
| 최고 점수 | “최고 점수를 저장해서 새로고침해도 남아 있게 해 줘(localStorage)” |
| 소리 | “총 쏠 때와 적이 터질 때 짧은 효과음을 넣어 줘. 파일 없이 코드로 소리를 만들어 줘” |
| 휴대폰에서도 | “휴대폰에서는 화면 아래에 좌·우·발사 버튼이 나오게 해 줘” |
galaga_2.html, galaga_3.html… 번호를 올려 가며 남긴다. 고치다 망가져도 바로 전 단계로 돌아가면 된다.여기까지 오면 남과 똑같은 갤러그다. 이제 나만의 것으로 만든다. 이 단계가 한마당 심사에서 가장 눈에 띄는 부분이다.
대화창 하나로 되는 일에는 한계가 있다. 파일이 여러 개가 되고 작업이 며칠에 걸치면 방법을 바꾼다.
프로젝트(Projects)를 만들고 자주 쓰는 자료(명단 양식, 규칙 문서, 지금까지의 코드)를 올려 두면, 그 안에서 새 대화를 열어도 매번 다시 설명하지 않아도 된다. “우리 반은 28명이고 번호는 1번부터”처럼 매번 반복되는 배경을 여기 적어 둔다.
웹 대화창은 코드를 보여 줄 뿐이라, 내가 복사해서 붙여 넣어야 한다. 파일이 열 개쯤 되면 이 과정이 더 힘들어진다. Claude Code는 터미널에서 실행하며 내 컴퓨터의 파일을 직접 읽고 고친다.
# 설치 후, 만들고 있는 폴더에서 실행한다 claude # 그 다음에는 그냥 말로 시킨다 > 이 폴더의 index.html에서 로그인 부분만 따로 파일로 분리해 줘
지금까지 만든 것은 내 컴퓨터에서만 열린다. 친구에게 주소를 보내 주고, 바이브 코딩 한마당에 작품 URL을 내려면 인터넷에 올려야 한다. 가장 쉬운 방법이 GitHub이다. GitHub은 전 세계 개발자가 코드를 보관하고 나누는 곳인데, GitHub Pages라는 기능으로 index.html이 있는 저장소를 무료 웹사이트로 바꿔 준다. 서버도, 돈도, 설치도 필요 없다.
github.com에서 Sign up. 학교 구글 계정으로도 되고, 아이디는 나중에 주소에 그대로 들어가므로 부끄럽지 않은 것으로 정한다.exam-dday), Public을 고르고 Create.index.html(그림·CSS 파일이 있으면 함께)을 끌어다 놓고 아래 Commit changes.https://아이디.github.io/exam-dday/ 가 뜬다. 이것이 내 웹 서비스 주소다. 휴대폰에서도 열린다.고칠 때는 3번처럼 같은 이름의 파일을 다시 올리면(덮어쓰기) 1~2분 뒤 자동으로 바뀐다. 저장소 안의 파일을 클릭하고 연필 아이콘으로 바로 고쳐도 된다.
파일이 많거나 자주 고친다면 위의 Claude Code로 올리는 일까지 맡긴다. 처음 한 번만 GitHub 명령줄 도구 gh를 설치하고 gh auth login으로 로그인해 둔다(브라우저가 열리며 승인만 누르면 된다). 그 다음부터는 말로 한다.
git init → 커밋 → gh repo create → Pages 설정까지 차례로 하고 주소를 돌려준다. 이후에는 "고친 것 올려 줘" 한마디면 된다.…/폴더이름/이 된다. 헷갈리면 Claude에게 "index.html을 최상위로 옮겨 줘".GitHub Pages는 파일을 보여 주기만 한다. 그래서 순위표를 만들어도 그 브라우저에만 남고, 친구가 열면 텅 비어 있다. 여러 사람의 기록을 한곳에 모으려면 DB가 필요하다. 구글이 무료로 주는 Firebase Firestore를 쓰면 서버를 만들지 않고도 된다.
| 어디에 | 누가 볼 수 있나 | 이럴 때 |
|---|---|---|
| localStorage (브라우저) | 그 기기의 나만 | 혼자 쓰는 메모, 내 최고 점수 |
| Firestore (구글 DB) | 접속한 모든 사람 | 순위표, 방명록, 설문, 신청 목록 |
| 직접 만든 서버 | 내가 정한 사람만 | 로그인·결제처럼 규칙이 복잡할 때 |
아래는 galaga-rank 프로젝트를 실제로 만들면서 찍은 화면이다. 빨간 네모가 눌러야 할 곳이다. 콘솔 화면은 가끔 바뀌니 글자를 보고 찾으면 된다.
① 프로젝트 만들기
console.firebase.google.com 에 구글 계정으로 로그인 → 프로젝트 만들기.
galaga-rank 같은 프로젝트 ID가 자동으로 붙는데, 나중에 코드에 들어가는 값이다.
② 웹 앱 등록하고 설정값 받기
firebaseConfig 를 통째로 복사해 둔다. 회색으로 가린 값은 프로젝트마다 다르다. 이 값들은 비밀번호가 아니라 주소표라서 코드에 넣어 공개해도 된다(⚠️ 아래 설명 참고).③ Firestore 데이터베이스 만들기
④ 보안 규칙 게시 — 여기가 진짜 중요한 단계
firebaseConfig 의 apiKey는 비밀번호가 아니라 주소표다. GitHub에 올라가도 괜찮다. 진짜 방어선은 보안 규칙이다. 규칙 없이 두면 남이 내 순위표를 통째로 지울 수 있다.F12 → Console의 빨간 글씨를 그대로 Claude에게 붙여 넣는다. permission-denied 는 보안 규칙 문제, Failed to fetch 는 설정값 오타인 경우가 많다.여기까지 오면 주소를 눌러 여는 웹사이트다. 여기에 파일 두 개만 더하면 휴대폰 홈 화면에 아이콘이 생기고, 주소창 없는 전체 화면으로 열리며, 인터넷이 끊겨도 실행되는 앱이 된다. 이것을 PWA(Progressive Web App)라고 한다. 앱 스토어에 올리지 않아도 되고, 심사도 비용도 없다.
| 무엇이 | 하는 일 |
|---|---|
manifest.webmanifest | 앱 이름, 아이콘, 화면 방향(세로), 배경색을 적어 둔 명찰. 이게 있어야 '설치'가 뜬다 |
sw.js (서비스 워커) | 파일을 미리 받아 두는 창고지기. 두 번째 방문부터는 인터넷 없이도 열린다 |
| 아이콘 PNG | 홈 화면에 놓일 그림. 192·512 두 크기와, 안드로이드 원형에 맞춘 maskable을 함께 준비한다 |
/저장소이름/ 아래에 놓이므로 /manifest... 처럼 맨 앞에 슬래시를 쓰면 찾지 못한다.file:///…)로 열면 설치도 오프라인도 안 된다 — GitHub Pages에 올린 뒤 확인한다.
② 고친 내용이 안 보이면 창고지기가 옛 파일을 주고 있는 것이다. Ctrl+F5로 새로고침하거나, Claude에게 “서비스 워커 캐시 버전을 올려 줘”라고 한다.
③ 오프라인에서는 DB(전체 순위표)만 멈춘다. 그때도 게임이나 화면은 그대로 돌아가게 만들어야 좋은 앱이다.실제로 만들어져 쓰이고 있는 것을 하나 따라가 본다. 한 학기 동안 7개 학급 약 200명의 수업 기록을 관리하는 웹앱이다.
재료 · 자료 보관은 Google Sheets 기능은 Google Apps Script 화면은 HTML·JS — 설치할 서버가 없고 구글 계정만 있으면 된다.
바이브 코딩에서 사람이 맡는 몫이 바로 여기다. 내가 잘 아는 일에서 시작하면, 프로그래밍을 오래 배운 사람보다 더 쓸모 있는 것을 만들 수 있다.
그럴듯한 코드와 설명을 내놓지만 실제로는 돌아가지 않거나, 없는 기능을 있는 것처럼 말하기도 한다. 반드시 실행해서 눈으로 확인한다. 확인하지 않은 결과를 남에게 건네지 않는다.
친구의 이름·연락처·사진, 학생 명단 같은 자료를 대화창에 그대로 올리지 않는다. 연습할 때는 가짜 자료를 쓴다.
과제나 수행평가에 AI를 써도 되는지는 선생님의 안내를 먼저 확인한다. 허용되는 경우에도 보통 어디에 어떻게 썼는지 밝히는 것이 조건이다. 만든 결과를 내가 이해하지 못한 채 제출하는 것은, 규칙 이전에 나에게 남는 것이 없다.
인터넷에 올릴 때는 다른 사람의 사진·글꼴·음악을 함부로 쓰지 않는다. AI가 가져다 쓴 자료도 마찬가지이므로, 출처와 사용 조건을 물어보고 확인한다.
GitHub에 올리면 코드가 전 세계에 공개된다. 올리기 전에 비밀번호·연락처·친구 이름·학번이 코드나 화면 문구에 남아 있지 않은지 본다. 한 번 올라간 것은 지워도 기록에 남는다.
DB(Firestore)를 붙였다면 남이 넣은 내용도 내 사이트에 뜬다. 닉네임 글자 수를 제한하고, 욕설이 올라오면 콘솔에서 지울 수 있게 해 둔다. 실명·학번은 애초에 받지 않는다.
gh auth login이 필요하다(6단원). 고친 뒤에는 "고친 것 GitHub에 올려 줘" 한 줄이면 된다.| 증상 | 이렇게 해 본다 |
|---|---|
| 화면이 하얗게 비어 있다 | 오류 문구를 그대로 붙여 넣는다. 없으면 “화면이 비어서 안 보여”라고 캡처와 함께 보낸다 |
| 고칠수록 더 이상해진다 | 잘 되던 코드를 다시 붙여 넣고 “이 버전에서 …만 바꿔 줘”로 다시 시작한다 |
| 답이 중간에 끊긴다 | “이어서 써 줘”라고 하거나, 기능을 나눠서 하나씩 요청한다 |
| 내가 말한 걸 자꾸 잊는다 | 대화가 길어진 것이다. 지금까지의 결과를 정리해 새 대화에서 다시 시작한다 |
| 너무 복잡한 코드를 준다 | “고등학생이 읽을 수 있게 더 단순하게, 라이브러리 없이 써 줘” |
| GitHub에 올렸는데 주소가 404다 | Settings → Pages에서 Branch가 main / (root)인지, index.html이 최상위에 있는지 본다. 켠 직후면 1~2분 기다린다 |