자율 프로젝트 ① 착수
이제 정해진 미션이 아니라, 내가 정한 프로젝트예요. 오늘 목표는 '완성'이 아니라 핵심 기능 하나가 도는 것입니다.
오늘 배우는 것
자율 프로젝트 첫날이에요. 오늘부터는 정답을 알려주기보다 막힌 곳을 함께 푸는 코칭 시간입니다. 속도는 사람마다 달라도 괜찮아요.
MVP (최소 기능 제품)란?
핵심 기능 하나만 들어간 '가장 작은 완성품'이에요. 영어로 Minimum Viable Product의 줄임말이죠. 모든 기능을 한 번에 만들지 않고, 가장 중요한 한 조각부터 돌아가게 만드는 거예요.
핵심 기능 vs 부가 기능
프로젝트를 만들 때 넣고 싶은 기능은 늘 많아요. 하지만 그중에는 없으면 앱이 아예 안 되는 것과 있으면 좋지만 없어도 되는 것이 섞여 있어요. 이 둘을 구분하는 게 오늘 가장 중요한 판단이에요.
한꺼번에 다 만들지 않는다
오늘의 전략은 단순해요. 핵심 정하기 → 그것만 먼저 → 점점 키우기. 이 순서를 지키면 막막한 프로젝트도 한 걸음씩 나아갈 수 있어요.
오늘부터는 코칭 시간이에요. 막히면 ① 자가 디버깅 → ② AI에게 질문 → ③ 선생님과 의논 순서로 해보세요.
기획 확정 + 핵심 기능 정하기
이렇게 진행해요
- 기능을 다 만들려 욕심냄 → 핵심 하나만. 나머지는 노션에 메모만 해둬요.
- 핵심을 못 고름 → "이건 ___해주는 앱"의 빈칸을 먼저 채워 보세요.
핵심 기능 하나 작동시키기
① 내 핵심 기능이 '입력 → 처리 → 출력' 중 무엇을 하는지 적어 보세요.
② AI에게 보낼 첫 요청을 한 문장으로 먼저 적어 보세요.
AI에게 골격 요청하기
AI를 부르는 핵심 기능이라면 이전 주차에 만든 .env 파일을 그대로 사용하면 돼요. 새 프로젝트 폴더에서 처음 만든다면 아래처럼 준비해요.
1단계 — 터미널에서 수업 폴더 안에 파일 만들기
# Windows
New-Item .env
# Mac
touch .env2단계 — .env 파일을 열고 아래 한 줄 입력 (선생님이 알려준 키 사용)
OPENAI_API_KEY=여기에_선생님이_알려준_키_붙여넣기- 키 앞뒤에 공백·따옴표 없이 딱 붙여서 저장해요.
=양옆에도 띄어쓰기를 넣지 않아요..env파일은app.py와 같은 폴더에 있어야 해요..env는 GitHub에 올리지 않아요 (배포할 땐 Secrets 칸에만 넣어요).
준비됐다면, 디자인은 나중으로 미루고 핵심 기능부터 직접 작동시켜 보세요.
골격은 보통 이런 모양이에요
대부분의 앱은 입력 → 처리 → 출력 세 부분으로 되어 있어요. AI가 준 코드에서도 이 세 부분을 찾을 수 있으면 충분해요. (키는 코드에 직접 쓰지 않고 .env / st.secrets에서 자동으로 불러와요.)
import streamlit as st
from openai import OpenAI
client = OpenAI() # 키는 .env / st.secrets에서 자동으로
def ask_ai(prompt):
res = client.chat.completions.create(
model="gpt-4o-mini",
messages=[{"role": "user", "content": prompt}]
)
return res.choices[0].message.content
st.title("내 프로젝트")
# ① 입력 ─ 사용자에게서 받는다
user_input = st.text_input("무엇을 도와줄까요?")
# ② 처리 ─ 핵심 기능 (여기선 AI 호출)
if st.button("실행"):
result = ask_ai(user_input)
# ③ 출력 ─ 결과를 화면에
st.write(result)내 프로젝트
무엇을 도와줄까요? [ 내일 할 일: 수학 숙제, 영어 단어 20개 외우기, 방 청소 ]
[ 실행 ]
네, 내일 할 일 3가지를 확인했어요! 목록에 추가했습니다.
1. 수학 숙제
2. 영어 단어 20개 외우기
3. 방 청소
이 중에서 먼저 하고 싶은 일이 있으면 알려주세요.- 한 번에 다 만들려다 막힘 → 동작 하나만 먼저 작동시켜요.
- 코드 이해 없이 넘어감 → AI에게 "한 줄씩 설명해줘"라고 요청해요.
- 오늘 못 끝냄 → 정상이에요. 어디까지 됐는지 기록만 해두면 돼요.
🔒 힌트 — 어디서부터 손대야 할지 모르겠어요
핵심 기능을 입력 → 처리 → 출력 세 칸으로 먼저 나눠 적어 보세요.
① 입력: 사용자에게 무엇을 받나? (글자·선택·숫자)
② 처리: 받은 걸로 무엇을 하나? (AI 호출·계산·검색)
③ 출력: 결과를 어떻게 보여주나? (글·표·이미지)
이 세 칸을 그대로 AI에게 알려주면, 골격 코드를 훨씬 정확하게 받을 수 있어요.
오늘 한 일 노션에 남기기
딱 3줄만 기록해요
작동 화면 캡처도 함께 붙이면, 다음 시간에 한눈에 떠올릴 수 있어요.
🃏 선택지 카드 — 다음에 이어서 갈 방향
핵심이 돌아간다면, 다음엔 어디로 갈까요? 하나를 골라 AI에게 요청해 보세요.
- 기록이 귀찮아 건너뜀 → 딱 3줄이면 다음 시간의 나를 구해줘요.
- 새 기능 추가 시 "기존 기능은 그대로 두고"를 빠뜨림 → 그러면 만들던 게 사라질 수 있어요.
상황별 가이드
자율 프로젝트는 속도가 사람마다 달라도 괜찮아요. 내 상황에 맞는 쪽을 골라 보세요.
보너스 ① 두 번째 기능 도전 (빠른 학생)
핵심이 다 됐다면 두 번째 기능에 도전해 보세요. 기존 코드 아래에 이어서 새 기능만 추가하면 돼요.
# 기존 핵심 기능은 그대로 둔다
st.title("내 프로젝트")
user_input = st.text_input("무엇을 도와줄까요?")
if st.button("실행"):
result = ask_ai(user_input)
st.write(result)
# ↓ 두 번째 기능은 그 아래에 새로 추가
st.divider()
st.subheader("두 번째 기능")
# 예: 지금까지 입력한 걸 목록으로 모아 보여주기
if "history" not in st.session_state:
st.session_state.history = []
if user_input:
st.session_state.history.append(user_input)
st.write(st.session_state.history)
보너스 ② 화면 다듬기 (빠른 학생)
기능은 그대로 두고 화면·디자인을 보기 좋게 정리해요.
🐢 진도가 막혔다면
오늘의 핵심 정리
다음 주는 자율 프로젝트 ② 완성이에요. 오늘 만든 골격에 기능을 더해 MVP를 완성하고, 테스트 후 발표를 예행연습합니다. 오늘 막힌 부분을 한 번 더 시도하고, 이어갈 부분을 노션에 정리해 오세요.
🔧 막혔을 때 — 자가 디버깅 4단계
자율 프로젝트에선 스스로 푸는 힘이 가장 중요해요. 막히면 이 순서대로 해봅니다.