04. [실습] 프로젝트 예제: 다운로드 청소기
"설계가 완벽하면 코딩은 딸깍입니다."
앞서 배운 기획 -> 설계 -> 구현 단계를 실제로 따라해볼 수 있도록, 완벽한 설계도 예제를 준비했습니다. 이 설계도를 복사해서 AI에게 주고, 실제 작동하는 프로그램을 만들어보세요.
1단계: PRD (Product Requirements Document)
우리가 만들고 싶은 프로그램을 AI에게 설명하고, PRD(제품 요구사항 정의서)를 요청해봅시다.
프롬프트 예시
"다운로드 폴더 자동 정리기를 만들려고 해.
기능 요구사항:
1. 사용자의 다운로드 폴더 경로를 확인한다.
2. 파일 확장자에 따라 분류한다.
- 이미지(.jpg, .png, .gif)는 Images 폴더로
- 문서(.pdf, .docx, .hwp)는 Documents 폴더로
3. 이동할 폴더가 없으면 생성한다.
4. 이동 결과를 로그로 출력한다.
위 내용을 바탕으로 개발을 위한 PRD(제품 요구사항 정의서)를 작성해 줘."
📋 복사할 코드 (PRD)
아래 내용을 복사해서 prd.md 라는 이름으로 저장하세요.
# 1단계: PRD (제품 요구사항 정의서)
**프로젝트명:** 다운로드 폴더 자동 정리기 (Download Cleaner)
**개요:**
사용자의 '다운로드' 폴더가 너무 지저분합니다. 파일의 확장자를 보고 자동으로 적절한 폴더로 이동시켜주는 프로그램이 필요합니다.
**기능 요구사항:**
1. **대상 경로 확인:** 사용자의 기본 `Downloads` 폴더를 자동으로 찾거나 입력받습니다.
2. **파일 분류 규칙:**
* 이미지 (`.jpg`, `.png`, `.gif`) -> `Images` 폴더로 이동
* 문서 (`.pdf`, `.docx`, `.hwp`) -> `Documents` 폴더로 이동
* 그 외 -> 건드리지 않음
3. **폴더 생성:** 이동할 폴더(`Images` 등)가 없으면 생성해야 합니다.
4. **로그 출력:** 어떤 파일이 어디로 이동했는지 콘솔에 출력해야 합니다.
2단계: 구조 설계 (Class Diagram)
PRD가 준비되었으니, 이를 바탕으로 필요한 부품(Class)을 정의해달라고 합시다.
프롬프트 예시
"작성된 PRD(prd.md)를 바탕으로 클래스 다이어그램을 설계해 줘.
요구사항:
1. PathManager: 경로 관리 및 폴더 생성
2. FileScanner: 파일 목록 탐색
3. FileMover: 파일 이동 처리
4. CleanerApp: 전체 흐름 관리
위 클래스들의 관계를 Mermaid 코드로 작성해 줘."
classDiagram
class PathManager {
+get_downloads_path()
+create_folder_if_not_exists(folder_path)
}
class FileScanner {
+get_all_files(folder_path)
}
class FileMover {
+move_file(file_path, target_folder)
}
class CleanerApp {
-PathManager path_mgr
-FileScanner scanner
-FileMover mover
+run()
}
CleanerApp --> PathManager : 사용
CleanerApp --> FileScanner : 사용
CleanerApp --> FileMover : 사용
📋 복사할 코드 (클래스 다이어그램)
아래 내용을 복사해서 class_diagram.md 라는 이름으로 저장하세요.
classDiagram
class PathManager {
+get_downloads_path()
+create_folder_if_not_exists(folder_path)
}
class FileScanner {
+get_all_files(folder_path)
}
class FileMover {
+move_file(file_path, target_folder)
}
class CleanerApp {
-PathManager path_mgr
-FileScanner scanner
-FileMover mover
+run()
}
CleanerApp --> PathManager : 사용
CleanerApp --> FileScanner : 사용
CleanerApp --> FileMover : 사용
3단계: 흐름 설계 (Sequence Diagram)
설계된 부품들이 어떻게 상호작용하는지 시나리오를 짜달라고 합시다.
프롬프트 예시
"작성된 클래스 다이어그램(class_diagram.md)을 바탕으로 시퀀스 다이어그램을 설계해 줘.
시나리오:
1. CleanerApp이 실행되면 PathManager에게 다운로드 경로를 얻는다.
2. FileScanner를 통해 파일 목록을 가져온다.
3. 파일마다 반복하며:
- 이미지/문서 여부를 판단한다.
- PathManager로 폴더 존재 여부를 확인(및 생성)한다.
- FileMover로 파일을 이동시킨다.
4. 완료 로그를 출력한다.
위 흐름을 Mermaid 코드로 작성해 줘."
sequenceDiagram
participant User as 사용자
participant App as CleanerApp
participant PM as PathManager
participant Scanner as FileScanner
participant Mover as FileMover
User->>App: 프로그램 실행 (run)
App->>PM: 1. 다운로드 경로 줘 (get_downloads_path)
PM-->>App: /Users/me/Downloads
App->>Scanner: 2. 파일 목록 다 가져와 (get_all_files)
Scanner-->>App: [cat.jpg, homework.docx, ...]
loop 모든 파일을 하나씩 보며
alt 이미지 파일 (.jpg, .png)
App->>PM: 3. 'Images' 폴더 있어? (create_folder...)
App->>Mover: 4. 거기로 옮겨! (move_file)
Mover-->>App: 이동 완료 로그
else 문서 파일 (.pdf, .docx)
App->>PM: 3. 'Documents' 폴더 있어?
App->>Mover: 4. 거기로 옮겨!
end
end
App-->>User: "정리 끝!" 메시지 출력
📋 복사할 코드 (시퀀스 다이어그램)
아래 내용을 복사해서 sequence_diagram.md 라는 이름으로 저장하세요.
sequenceDiagram
participant User as 사용자
participant App as CleanerApp
participant PM as PathManager
participant Scanner as FileScanner
participant Mover as FileMover
User->>App: 프로그램 실행 (run)
App->>PM: 1. 다운로드 경로 줘 (get_downloads_path)
PM-->>App: /Users/me/Downloads
App->>Scanner: 2. 파일 목록 다 가져와 (get_all_files)
Scanner-->>App: [cat.jpg, homework.docx, ...]
loop 모든 파일을 하나씩 보며
alt 이미지 파일 (.jpg, .png)
App->>PM: 3. 'Images' 폴더 있어? (create_folder...)
App->>Mover: 4. 거기로 옮겨! (move_file)
Mover-->>App: 이동 완료 로그
else 문서 파일 (.pdf, .docx)
App->>PM: 3. 'Documents' 폴더 있어?
App->>Mover: 4. 거기로 옮겨!
end
end
App-->>User: "정리 끝!" 메시지 출력
4단계: 구현 및 검증 (Implementation & Verification)
이제 여러분이 PM(프로젝트 매니저)가 되어 AI에게 개발을 지시하고, 결과를 검증할 차례입니다.
🚀 미션 가이드
- Antigravity 채팅창(
Ctrl + L또는Cmd + L)을 엽니다. - 방금 저장한 파일들(
prd.md,class_diagram.md,sequence_diagram.md)이 목록에 있는지 확인합니다. - 아래와 같이 파일을 언급(@)하며 지시를 내립니다.
프롬프트 예시
"@prd.md, @class_diagram.md, @sequence_diagram.md 파일을 참고해.
위 설계도 내용을 바탕으로 작동하는 파이썬 코드를 작성해 줘.
요구사항:
1. 윈도우, 맥 어디서든 작동하도록 pathlib 라이브러리를 사용해 줘.
2. 주석을 자세히 달아 줘.
3. 코드를 실행하는 방법도 알려 줘."
- AI가 준 코드를
cleaner.py로 저장하고 실행해 보세요. - 검증(Verification): 실제로 다운로드 폴더가 정리되는지 확인하세요!
- 팁: 테스트를 위해 가짜 파일(test.jpg, doc.pdf)을 몇 개 만들어서 실험하는 것이 안전합니다.
코드가 작동하지 않는다면? (버그 수정)
에러가 나거나 원하지 않는 결과가 나왔나요? 직접 코드를 고치려고 하지 마세요.
- 에러 메시지를 복사해서 AI에게 그대로 보여주세요.
- "설계도에서는 이렇게 하라고 되어 있는데, 코드는 다르게 동작해"라고 지적하세요.
- 여러분의 역할은 '수리공'이 아니라 '감독관'입니다. AI가 고치도록 시키세요.
🏁 강의를 마치며
"좋은 파이썬 코드는 실행되는 동시에 설명된다."
이 강의가 여러분이 AI 시대에 단순히 '코드를 복사하는 사람'이 아니라, '코드를 읽고, 설계하고, 지시하는 교양 있는 지식인'이 되는 데 도움이 되었기를 바랍니다.
이제 여러분의 키보드 위에서 마법을 시작하세요. 수고하셨습니다! 👋