이 글은 확실하게 성공하는 바이브 코딩 도구 사용 방법을 보여준다. 여기서는 바이브 코딩 도구로 PRD(Product Requirement Document) 작성은 Gemini Pro, 바이브 코딩 도구는 Github Copilot, 대형언어모델 LLM은 Claude Sonet을 사용했다(LLM은 본인 입맛에 맞게 사용하면 됨).
바이브 코딩 준비하기
바이브 코딩을 하는 방법은 다음과 같이 다양하다.
ChatGPT 에 코딩 요청을 해서 생성된 파이썬 같은 코드를 복사&붙여넣기해 프로그램을 완성해 나가는 방법
바이브 코딩 목적은 텍스트 편집기를 개발하는 것이다. 이를 위한 PRD를 작성하고, 바이브 코딩을 진행한다. PRD작성을 위해 프롬프트를 다음과 같이 입력한다.
GUI 기반 텍스트 편집기를 개발할꺼야. 파이썬과 Tkinter 라이브러리를 이용할꺼야. 메뉴는 파일 메뉴, 편집 메뉴, 테마 선택 메뉴(다크모드 하위 메뉴 포함), 찾기 메뉴로 구성됨. 이 프로그램 개발을 위한 PRD를 UI 스케치를 포함해 md 포맷으로 작성해.
사용할 라이브러리와 같은 기술 스택을 지정하는 것은 중요하다. 약간 시행착오를 하며 명확한 PRD가 작성될 수 있도록 프롬프트에 정확한 정보를 포함시킨다. md 포맷은 좀 더 명확한 문서형식작성을 위해 사용했다. md포맷은 markdown 파일형식으로 github에서 README 파일 작성할때 표준 형식이다.
다음은 이렇게 생성된 제품 요구사항 문서이다.
# **Python/Tkinter 기반 GUI 텍스트 편집기 제품 요구사항 명세서 (PRD)**
## **1. 개요**
본 문서는 파이썬(Python)과 표준 GUI 라이브러리인 티케이인터(Tkinter)를 사용하여 개발될 데스크톱 텍스트 편집기의 요구사항을 정의합니다. 이 애플리케이션은 기본적인 텍스트 편집 기능과 함께 사용자의 편의를 위한 다크 모드, 찾기 기능 등을 제공하는 것을 목표로 합니다.
## **2. 목표 사용자**
* **초보 개발자 및 학생**: 간단한 코드나 스크립트, 메모, 과제 등을 작성하고 편집하려는 사용자.
* **일반 사용자**: Windows 메모장과 같은 가볍고 빠른 텍스트 편집기가 필요한 사용자.
## **3. 핵심 기능**
### **3.1. 파일 메뉴**
| 기능 | 단축키 | 설명 |
| :--- | :--- | :--- |
| **새 파일** | `Ctrl+N` | 새로운 빈 편집 창을 엽니다. |
| **열기** | `Ctrl+O` | 기존 텍스트 파일 (`.txt` 등)을 불러옵니다. |
| **저장** | `Ctrl+S` | 현재 파일을 덮어쓰기 저장합니다. |
| **다른 이름으로 저장** | `Ctrl+Shift+S` | 새 이름이나 경로로 파일을 저장합니다. |
| **종료** | `Alt+F4` | 프로그램을 종료합니다. (저장되지 않은 내용이 있으면 경고) |
### **3.2. 편집 메뉴**
| 기능 | 단축키 | 설명 |
| :--- | :--- | :--- |
| **실행 취소 (Undo)** | `Ctrl+Z` | 마지막 작업을 되돌립니다. |
| **다시 실행 (Redo)** | `Ctrl+Y` | 되돌린 작업을 다시 실행합니다. |
* 프로그램이 안정적으로 실행되며, 일반적인 사용 환경에서 오류로 인해 종료되지 않습니다.
vscode에서 바이브 코딩하기
vscode를 실행하고, 생성된 PRD파일을 copilot에 알려주고, 이대로 프로그램 작성하도록 입력한다.
혹시, 에러가 발생하면, 메시지를 다시 입력해 수정하는 과정을 반복하면 된다. 다음 영상은 바이브 코딩 과정을 보여준다.
결과적으로 큰 문제 없이 편집기가 동작되는 것을 확인할 수 있다.
결론
바이브 코딩이 최근 매우 발전해서, 요구사항도 추론해주고, 심지어 SRS(Software Requirement Specification), SAD(Software Architecture Document)도 작성해 준다. 향후에는 말만 하면, 소프트웨어 공학에서 필수로 다루는 SRS, SAD뿐 아니라, UML(Unified Modeling Language)과 같은 아키텍처 설계도도 디자인패턴에 의거해 그려줄 날이 멀지 않은 것 같다.
다만, 소프트웨어 개발 과정에서 바이브 코딩 도구에 일을 시키려면, 당연히, 인턴에 업무 지시하는 수준의 능력은 필요하다.
예를 들어, 바이브 코딩 시 적절한 용어를 사용해야 하며, 수정되지 않은 어려운 문제나 에러가 발생하면, 생성된 코드를 이해하고 개선할 수 있는 능력은 당연히 필요하다 하겠다.
부록: 웹기반 텍스트 편집기 개발 및 깃허브 푸쉬하기
추가로, Tailwind 로 웹 기반 편집기도 개발해 보았다. 다음과 같이 자동으로 프로젝트 만들어 코딩되고, 실행된다.