콘텐츠로 이동

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에게 개발을 지시하고, 결과를 검증할 차례입니다.

🚀 미션 가이드

  1. Antigravity 채팅창(Ctrl + L 또는 Cmd + L)을 엽니다.
  2. 방금 저장한 파일들(prd.md, class_diagram.md, sequence_diagram.md)이 목록에 있는지 확인합니다.
  3. 아래와 같이 파일을 언급(@)하며 지시를 내립니다.

프롬프트 예시

"@prd.md, @class_diagram.md, @sequence_diagram.md 파일을 참고해.

위 설계도 내용을 바탕으로 작동하는 파이썬 코드를 작성해 줘.

요구사항: 1. 윈도우, 맥 어디서든 작동하도록 pathlib 라이브러리를 사용해 줘. 2. 주석을 자세히 달아 줘. 3. 코드를 실행하는 방법도 알려 줘."

  1. AI가 준 코드를 cleaner.py로 저장하고 실행해 보세요.
  2. 검증(Verification): 실제로 다운로드 폴더가 정리되는지 확인하세요!
    • 팁: 테스트를 위해 가짜 파일(test.jpg, doc.pdf)을 몇 개 만들어서 실험하는 것이 안전합니다.

코드가 작동하지 않는다면? (버그 수정)

에러가 나거나 원하지 않는 결과가 나왔나요? 직접 코드를 고치려고 하지 마세요.

  1. 에러 메시지를 복사해서 AI에게 그대로 보여주세요.
  2. "설계도에서는 이렇게 하라고 되어 있는데, 코드는 다르게 동작해"라고 지적하세요.
  3. 여러분의 역할은 '수리공'이 아니라 '감독관'입니다. AI가 고치도록 시키세요.

🏁 강의를 마치며

"좋은 파이썬 코드는 실행되는 동시에 설명된다."

이 강의가 여러분이 AI 시대에 단순히 '코드를 복사하는 사람'이 아니라, '코드를 읽고, 설계하고, 지시하는 교양 있는 지식인'이 되는 데 도움이 되었기를 바랍니다.

이제 여러분의 키보드 위에서 마법을 시작하세요. 수고하셨습니다! 👋