[개발B] 손 안대고 코딩하기

발표를 하라는 말을 듣고 AI로 뭘 개발하지 하고 머리를 싸매던 때 눈에 딱 들어온 것이 평소에 즐겨하던 카드 게임 유희왕! 카드로 하는 게임들이 대부분 그렇듯, 유희왕 또한 게임을 시작할 때 뽑는 패 5장이 게임의 판도를 가를 만큼 중요한 게임이고, 그것이 잘 들어오도록 덱을 구성하는 것이 중요한 요소입니다. 그러한 점에서 착안하여, “ChatGPT에게 시켜서 코드 부분에 직접 손을 대지 않고 원하는 첫 패가 잡힐 확률을 구하는 프로그램을 만들어보자!”는 발상에 도달했습니다.


가장 처음으로 진행한 일은, ChatGPT에게 “해 줘.” 하고 부탁하는 것이었습니다.

-“당신은 AI 프로그래머이며, 저는 고객입니다. 당신는 내 요구사항에 맞춰서 프로그램을 제작해야 합니다. 이 때, 필요한 정보가 있을 경우 고객에게 정보를 요구할 수 있습니다.”

이후 ChatGPT의 질문에 성심성의껏 정보를 제공했고, 프로그램의 얼개를 짠 뒤에 이에 맞춰 프로그램 작성을 시작했습니다…..만, 해당 채팅에서 ChatGPT는 레이아웃 코드만을 작성하다가 기억할 수 있는 한계를 넘었는지 요구사항을 까먹고 폭주하기 시작했고, 해당 코드를 다른 채팅에 옮겨붙여가며 이를 살리려는 시도를 했음에도 각 화면의 레이아웃들 뿐 알맹이가 없었던 코드는 회생 불가능 단계에 접어들어 저는 상심해버려 발표자료로 사용해야한다는 사실도 잊고 채팅 기록을 삭제해버렸습니다.

그렇게 모든걸 처음부터 다시 시작해야하는 상황에서, 저는 먼저 같은 과정을 반복해 ChatGPT에게 제 요구사항을 이해시키는 것에 집중했습니다. 그렇게 챗 GPT가 제 요구사항을 이해하고 코딩을 시작하려고 할 때, 저는 답변 생성을 멈추고 채팅 수정 기능을 이용해 새로운 요구를 했습니다.


-“코드를 생성하기 전에 프로젝트 계획서의 형태로 해당 프로그램의 목적과 요구사항을 정리해주십시오.”


프로그램의 요구사항을 정리해가며 저장공간이 부족했을 때 이를 재활용하려고 했던거죠. 그리고 이 요구사항을 새 채팅에 넣고 같은 요구를 했을 때, 새로운 아이디어가 떠올랐습니다.



ChatGPT는 늘 그렇듯 제 요구에 성실하게 응해주었고, 여기서 저는 답변 마지막에 하나의 요구사항을 붙였습니다.

-”제가 제공한 계획서와 해당 질의응답을 포함하여 계획서를 다시 작성해주십시오.”


ChatGPT를 이용한 개발과정에서 새로운 요구사항이 나오는 경우가 흔했으니, 먼저 언제 새 채팅으로 옮겨가도 문제 없도록 계획서를 보고 추가 정보를 요구하고, 그걸 다시 계획서로 만들어서 새 채팅에 물어보는 일을 3번 반복해 요구사항을 정돈했습니다.

이후에는 큰 문제없이 진행되었습니다. 이번 ChatGPT는 다행히 한 부분의 레이아웃을 완성한 뒤 바로 그 부분의 기능구현을 진행했고, 몇번의 수정을 통해 완벽하게 기능하는 코드들을 제공해주었습니다. 다만 이 코드들이 기능에 따라 분리되었고, 따로따로 작성하고 테스트하다보니 화면간에 연동이 잘 안될것 같다는 생각을 하였습니다. 그래서, 또 새 채팅창으로 넘어갔습니다.


처음에는 ChatGPT에게 시작부터 두 코드를 전부 던져주고 이를 합치라고 했었지만, 코드에 정신이 팔려서 요구사항을 제대로 이해하지 못하는 모습을 보여줬습니다. 그래서 이렇게 요구사항만을 적고, 따로따로 코드를 제공해주기로 하였죠.


그렇게 했더니, 각 코드간에 중복되는 부분을 제대로 확인하고 어떻게 합쳐야 하는지 제대로 인지하고 코드 병합을 시작하는 모습을 볼 수 있었습니다.


이렇게 코드를 합치는데 성공하고서, 두 화면간의 기능을 연동시키는 것까지 성공했습니다.

다만 코드를 생략하지 말아달라고 누누히 말을 해도 코드를 생성할때마다 이전과 같은 부분은 생략해서, 이를 해결하느라 고생했습니다. (이부분은 지금이라면 Custom Instruction을 활용한다면 훨씬 덜하겠죠.)


이런 과정을 통해, 지금은 덱 입력 창과 원하는 패 입력 창 간의 정보가 연동이 되도록 만들 수 있었고, 각 창에서 입력값의 유효성을 검사할 수 있는 기능까지 완성할 수 있었습니다.

시간이 부족하여 아직 확률 계산 기능과 계산 결과 출력 창은 완성시키지 못했지만, 이것도 곧 완성할 수 있을 것이라 봅니다.

이상, 직접 코딩하지 않고 프로그램을 완성해가는 과정이었습니다.

4
1개의 답글

👉 이 게시글도 읽어보세요