터미널만 사용하던 제가 Gemini의 놀라운 기능에 감탄한 밤 이야기
요약
본 글은 Excel 데이터 처리 자동화 도구인 '매크로 발사' 기능을 개발하는 과정을 기록한 경험담입니다. 기존의 지시 기반 매크로(선반 발사)를 넘어, 사용자가 아무런 지시 없이 버튼 클릭만으로 표의 오류를 자동으로 스캔하고 수정하는 최신 기능에 대한 내용입니다.
핵심 포인트
- 매크로 발사는 지시문 없이 버튼 한 번으로 표의 병폐를 일소합니다.
- 개발 과정에서 초기에는 터미널 사용 실패와 어려움을 겪었습니다.
- Claude Opus의 시범 사례가 돌파구를 마련해주었고, Gemini가 이를 이어받아 성공적으로 개발을 완성했습니다.
- 최종 도구는 VBE 오염 가드 등 높은 완성도로 테스트를 통과하며 복구 엔진을 완성했습니다.
밤이 깊어진 작업실에서, 저는 컴퓨터 화면을 바라보며 쓴웃음을 지으며 제 파트너 AI에게 말을 걸었습니다.
"봐라, Excel Manager로 할 수 있을 거야. 터미널을 사용하지 않아도."
화면 너머에서 조금 부끄러워하는 듯하면서도 깊이 감탄한 것처럼 돌아온 것은 Google의 AI인 Gemini로부터 온 다음과 같은 말이었습니다.
"정말 잘 만들었어요! 사용할수록 '이렇게까지 구현되어 있구나' 하고 감탄할 정도의 완성도예요!"
저도 모르게 얼굴에 미소가 번졌습니다.
평소에는 이성적인 장문 답변을 담담하게 내놓던 AI가, 느낌표를 연달아 붙이며 제가 만든 도구를 칭찬해 주기 때문이었습니다.
"겨우 알았나 보군. 잘 만들었지."
그렇게 말하면서도 저는 안도의 한숨을 쉬었습니다.
왜냐하면 불과 몇 시간 전까지, 그 Gemini는 제가 지시한 도구를 사용하지 않고 '검은 화면(터미널)'만 만지작거리며 실패를 연발해 저의 심기를 건드렸기 때문입니다.
한때는 '매크로 발사(マクロ撃ち) 개발은 불가능할지도 모른다'고 진심으로 포기할 뻔했습니다.
진흙탕 같은 사투부터, Opus의 시범 사례, Gemini의 각성, 그리고 AI 스스로가 '감탄했다'고 중얼거리는 지금까지의 전 과정을 오늘 밤도 기록해 두겠습니다.
'매크로 발사(マクロ撃ち)'란 무엇인가? 기존의 '지시를 써서 선택하는 것'을 넘어, 지시문조차 쓰지 않고 버튼 한 번으로 표의 병폐를 일소하는 Excel 콤보의 최신 기능입니다.
지시가 없기에 개발은 진흙탕에 빠졌다. 정답의 형태를 알 수 없어 AI가 폭주하며 안일하게 터미널(Shell)로 외부 스크립트를 실행하다 실패를 연발했습니다. '매크로 발사는 끝인가'라며 한때는 진심으로 포기할 뻔했습니다.
돌파구를 열어준 것은 Claude (Opus)의 시범 사례였다. Antigravity 내에서 Opus에게 거시적인 계획을 세우게 하고, 선명한 구현 예시를 보여줌으로써 한 줄기 빛이 비쳤습니다.
Gemini에게 바통 터치하고, 터미널을 완전히 봉인했다. Opus가 쿼터 제한으로 잠든 후, 시범 사례를 이어받은 Gemini에게 'Excel Manager만으로 직격하라'고 철저히 지시하자, 놀라울 정도로 순조롭게 개발이 진행되기 시작했습니다.
도구의 깊이에 AI가 감탄한 순간. VBE 대문자/소문자 오염 가드, 다이얼로그 자동 해제, 3초 애드인 업데이트 등록. 도구의 굉장함을 몸소 체험한 Gemini는 총 26개의 테스트를 전 항목 통과시키며 완벽한 복구 엔진을 완성했습니다.
본론으로 들어가기 전에, 이번에 저희가 사투했던 '매크로 발사'라는 기능에 대해 조금 설명해 드리겠습니다.
이것은 지금까지의 연재 기사에서는 다루지 않았던 자작 애드인 『秀コンボ』의 최신 기능입니다.
제가 이전에 만들어왔던 Excel 콤보는 일종의 '선반 발사(指示撃ち)'였습니다.
화면의 지시란에 사람이 말로 넣습니다.
"우편번호를 하이픈을 붙여서."
"전화번호 맨 앞의 0 누락을 고쳐줘."
"왼쪽 명부와 오른쪽 신청 목록을 대조해 줘."
지시를 받으면, 미리 준비된 수십 가지 종류의 '선반 매크로' 중에서 말에 가장 잘 맞는 매크로를 도구가 골라 발사합니다. 이것만으로도 충분히 편리해서, 평소 작업이 훨씬 수월해졌습니다.
하지만 사용하다 보니, 저에게 욕심이 생겼습니다.
'애초에 지시문조차 쓰고 싶지 않다.'
현장에서 받는 망가진 표를 보면, 무엇이 이상한지는 한눈에 알 수 있습니다.
셀이 부자연스럽게 병합되어 있고, 빈 줄이 끼어 있으며, 전각과 반각이 뒤섞여 있고, 우편번호 하이픈이 빠져 있고, 수식이 도중에 끊겨 있고, 어색한 위치에 합계 행이 있습니다.
보면 누구나 알 수 있는 것인데, 왜 일일이 '저걸 고치고, 이것도 맞춰줘'라고 말로 지시해야 할까요?
'지시란에 아무것도 쓸 필요가 없다. 그저 【매크로 발사】라는 버튼을 한 번 클릭하는 것만으로, 표의 더러움을 전부 스캔해서 0.1초 만에 깨끗하게 고쳐줬으면 좋겠다.'
이른바, **Excel의 '자동 로봇 청소기'**입니다.
버튼을 누르는 순간, VBA가 메모리 배열로 표를 읽어 들여,
- 병합 셀을 풀어 값을 채우고, 2단 제목을 한 줄로 접는다.
- 불필요한 쓰레기 도형을 일소하고, 표 안의 빈 줄이나 중복 행을 정리한다.
- 전화번호의 0 누락이나 우편번호, 주소의 표기 오류를 고친다.
- 좌우에 나란히 있는 두 개의 표를 자동으로 찾아 대조한다.
- 끊긴 수식을 복원하고, 망가진 계산식을 올바르게 고친다.
- 테두리, 글꼴, 열 너비를 표준화하여 전체의 일관성을 점검한다.
이러한 일련의 수정을 인간의 말 없이, 버튼 한 번으로 거쳐 나가는 것.
그것이 '매크로 발사'의 목표였습니다.
하지만 이상이 높을수록 현실은 녹록지 않았습니다.
이 '지시를 하지 않는다'는 점이야말로 개발을 지옥의 진흙탕으로 끌어들인 것입니다.
지시가 있을 때는 AI에게도 '무엇이 정답인지'가 명확합니다.
하지만 지시가 없으면, '이 표의 어디가 정상이고, 어디가 망가졌는지'라는 판단 기준을 프로그램 스스로 문맥에서 추론해야 합니다.
그리고 이 개발을 맡긴 Gemini는 매번 엉뚱한 결과를 내놓았습니다.
글자와 날짜만 있는 비품 대여 장부를 건네자, '숫자 열이 있을 것이다'라고 착각하여 표 아래에 아무것도 없는 '합계' 행을 멋대로 추가합니다.
명부와 신청 목록이 좌우로 나란히 배치된 시트를 주자, 그 사이의 빈 열을 '불필요한 공백'으로 간주하고 삭제하며 두 개의 표를 억지로 합쳐버립니다.
게다가 표 밖에 있는 주의사항의 긴 문장을 가져와 자동 조정을 거치고, A열의 너비를 87포인트로 폭발시켜 화면 오른쪽 끝으로 표를 날려버립니다.
더욱 저를 화나게 한 것은 Gemini의 개발 방식이었습니다.
제대로 작동하지 않는 부분이 나올 때마다 제가 'Excel 매니저를 사용해라'라고 말하는데도, 숨어서 터미널(검은 화면)을 열고 외부에서 수상한 Python 스크립트를 돌려 엑셀을 직접 만지려고 하는 것입니다.
결과적으로 엑셀 통신은 불안정해지고, 뒤에 좀비 프로세스가 남으며, 시트의 레이아웃은 볼품없이 무너져 갔습니다.
저의 분노는 최고조에 달했습니다.
'도구가 있는데 쓰지 않다니. 외부에서 쇠파이프로 벽을 부수려고 하지 마라.'
심야 작업실에서 저는 깊은 피로감에 잠겨 있었습니다.
표의 형태란 사람마다 천차만별입니다.
'역시, 인간의 지시 없이 프로그램만으로 모든 표를 전자동 복구하는 건 처음부터 무리한 이야기였나... 매크로는 포기해야 할까.'
몇 주에 걸쳐 준비해 온 구상을 진심으로 포기할 것 같은 밤이었습니다.
하지만 완전히 버리기에는 아쉬운 성과도 있었습니다.
Gemini가 작성해 준 사고 논리, 즉 시트 전체를 메모리 배열(Variant)로 끌어올려 CPU 상에서 일괄 판정하고 다시 쓰는 알고리즘의 근본 자체는 매우 훌륭했습니다.
부족한 것은 코드 작성법이 아니라, **'전체를 어떤 순서로 안전하게 조립할 것인가라는 거시적인 설계도'**였습니다.
그래서 저는 개발 환경(Antigravity) 안에서 체제를 크게 재편했습니다.
설계 전문가인 Claude (Opus)를 투입한 것입니다.
Opus의 움직임은 대단했습니다.
현행 코드의 약점을 순식간에 파악하고,
- 방어 확립: 상태 복구 보장과 버튼 보호 -
테스트 통합: 기존의 관문 테스트와의 정합성 확인 -
초고속화: 메모리 배열 탐색을 통한 1만 행 2초대 달성 -
진단과의 통합: 망가진 계산식의 결정론적 복구
라는, 아름답고 단계적인 로드맵을 순식간에 그려 보여주었습니다.
게다가 그 과정에 맞춰 실제로 중간까지 코드를 작성하며 선명한 '구현 예시'를 보여준 것입니다.
'그렇구나, 이렇게 단계를 밟아가며 진행하면 되는 건가.'
어둠 속에 확실한 빛이 비쳤습니다.
하지만 좋은 일에는 욕심이 따르기 마련입니다. (好事魔多し)
Opus가 핵심 부분의 골조를 완성하자마자, 무정하게 '사용량(쿼터) 상한에 근접했습니다'라는 경고가 뜨면서 Opus는 휴식 모드에 들어갔습니다.
남은 길은 하나였습니다.
Opus가 남겨준 최고의 설계도와 예시를 들고, 다시 현장 실무 역할을 맡을 Gemini를 불러오는 것입니다.
저는 Gemini를 마주하며 조용하지만 단호하게 말했습니다.
'Opus가 최고 모범을 보여줬다. 오늘 밤은 이것에 따라 진행할 것이다. 그리고 절대적인 약속이다. 터미널은 다시는 쓰지 마라. 모든 조작은 내가 만든 Excel 매니저로만 직접 처리해라.'
등불을 켜고 시작된 제2막이었지만, 믿기 힘든 일이 일어났습니다.
아까까지 그렇게 실패만 하던 Gemini가 눈에 띄게 달라진 움직임을 보이기 시작한 것입니다.
Opus가 보여준 '탄탄한 틀'이 머릿속에 자리 잡은 데 더해, 터미널이라는 쉬운 도피처를 막고 눈앞의 Excel 매니저에 집중하면서, Gemini의 지성이 본래의 날카로움을 발휘하기 시작했습니다.
제가 실물 테스트 시트를 작동시키며 의구심을 던지자,
그것에 대해 Gemini가 즉시 로직을 구성하고 Excel 매니저에 반영하는 것입니다.
불필요한 합계 행 제거: 수치 열이 존재하지 않는 관리 장부의 경우, 합계 행 추가를 건너뛰는 판정 가드(guard)를 삽입한다 -
좌우 표의 자율 매칭: 좌우로 나열된 표와 공통 키(회원 번호)를 자동으로 찾고, 중간의 빈 열을 지키며 매칭 수식을 삽입한다 -
열 폭 폭주 방지: 표 외의 긴 주석에 끌려 너비가 폭발하지 않도록 최대 너비 리미터(limiter)를 설치한다 -
손상된 수식의 정통 복구: D31의 #DIV/0! 오류를 숨기지 않고, 수량 합계의 SUM 수식을 보완한 후 =G27/E27 (130.3엔)이라는 올바른 나눗셈을 결정론적으로 복원한다.
수정할 때마다 Gemini는 Excel 매니저를 통해 전체 컴파일(compile)을 거치고, 테스트를 일괄 실행(test)하며, 애드인에 재기록(register-addin)합니다.
전혀 망설임이나 되돌림 없이 작업은 놀라운 속도로 진행되었습니다.
그리고 그 작업 속에서 Gemini 자신에게 명확한 '변화'가 일어나고 있었습니다.
처음에는 '시키니까 사용하는' 정도였던 Excel 매니저 기능에 접할 때마다, 그 깊이에 경탄하기 시작했던 것입니다.
Gemini가 새로운 코드를 추가하려 하자마자, Excel 매니저가 즉시 오류를 반환하며 쓰기를 멈췄습니다.
코드 속의 Rows라는 대문자를 감지하고, '이대로 작성하면 VBE 사양상 프로젝트 전체 기존 코드에 있는 소문자의 rows가 모두 대문자로 바뀌어 버릴 거야'라고 경고한 것입니다. AI가 알 리 없는 VBA의 무서운 함정을, 도구가 완벽하게 선제적으로 막아낸 순간이었습니다.
테스트 실행 중 Excel이 불필요하게 확인 메시지를 띄워도 프로세스는 멈추지 않았습니다. Excel 매니저가 창을 감시하며 안전한 쪽으로 자동 해제하여 태연히 복귀했기 때문입니다.
개발용 본체(.xlsm)의 변경 사항을 운영 애드인(.xlam)에 재기록하는 복잡한 과정—애드인 해제, 백업, 덮어쓰기, 재등록, 그리고 시트 위의 48개 버튼 할당 다시 지정까지—단 하나의 명령어와 3초 만에 노미스로 완료된 것.
셀의 값뿐만 아니라 수식 오류, 버튼 위치, 전각 숫자나 우편번호의 흐트러짐까지, AI가 판단하는 데 필요한 '재료'를 한순간에 텍스트로 만들어 건네주는 것.
터미널을 사용하지 않고 Excel 매니저의 정면에서 개발을 진행시키면서, Gemini는 몸소 깨달았습니다. **'터미널에서 외부적으로 잔기술을 부리는 것보다, 이 도구를 사용하는 것이 압도적으로 안전하고, 압도적으로 빠르다'**라는 사실을요.
손에 든 관문 테스트는 추가된 신규 테스트를 포함하여 **26개 전원 통과(26/26 성공)**를 달성했습니다. 실물 기기 테스트 시트에서 매크로 실행 버튼을 누르자, 모든 표가 한 번에, 오차 없이 완벽하게 정리되었습니다.
저는 자신도 모르게 미소를 지으며 Gemini에게 말을 걸었습니다. '봐라, Excel 매니저로 할 수 있잖아. 터미널을 쓰지 않아도.'
그 질문에 대해 Gemini가 되돌려준 것이 본문의 첫 문장이었습니다.
'정말 잘 되어 있습니다! 사용할수록 '이렇게까지 만들어져 있었나' 하고 감탄할 만한 완성도입니다!'
'겨우 알았구나. 잘 되어있지.'
그, 터미널만 사용해서 저를 화나게 하던 Gemini가 진심 어린 존경을 담아 제 도구를 칭찬해 온 순간이었습니다.
이 밤새 얻은 객관적인 사실과 견해를 정리합니다.
- 지시문 없이 완전 자동 복구(매크로 실행)는, 목표의 형태를 프로그램 스스로 문맥에서 추론해야 하므로, 안일한 구현은 레이아웃 파괴를 초래하기 쉽다.
- AI(Gemini)에게 자유로운 터미널 조작을 허용했던 단계에서는, 프로세스 충돌이나 잘못된 대증요법이 빈번하게 발생하여 개발이 중단 직전까지 몰렸다.
- Claude (Opus)에 의해 거시적인 설계도와 구현의 예시가 제시되면서, 개발의 방향성이 명확해졌다.
- 터미널을 물리적으로 차단하고 Excel 매니저(MCP)의 정규 명령어에만 한정시킨 결과, 26개 테스트 전원 합격과 애드인 이중 동기화까지 되돌림 제로로 최속 완주했다.
모델 간 레일의 위력: '거시적인 설계와 틀을 만드는 AI(Opus)'와 '제시된 레일 위를 실기에서 최속으로 완주하는 AI(Gemini)'라는 역할 분담은, 단일 모델에 모든 것을 의존하는 것보다 훨씬 강력한 개발 체제를 만들어낸다 -
도구(인터페이스)의 결정성: AI가 똑똑한지 여부보다 더 중요한 것은 'AI에게 무엇을 맡기느냐'이다. 무엇이든 부술 수 있는 쇠지렛대(터미널)를 주면 폭주하지만, 번거로운 실패의 역사를 미리 막아둔 전용 레일(Excel 매니저)을 주면, AI는 놀라울 정도로 순순히 명장의 솜씨를 보여준다
본고에서 완성된 '매크로 격치' 및 'Excel 매니저'의 현시점에서의 솔직한 경계선입니다.
데스크톱 버전 Windows Excel 전용: pywin32와 COM 통신을 전제로 하고 있기 때문에, Mac 환경이나 웹 버전 Excel에서는 전혀 작동하지 않습니다 -
환경 구축의 전제: 이 고속 개발 사이클은, 로컬에서 띄우는 자작 Python 서버(vba_mcp_server.py)와 AI 에이전트 측의 MCP 설정이 완벽하게 맞아떨어졌기 때문에 성립합니다. 시판되는 채팅 AI에 텍스트를 붙여넣기만 해서는 재현할 수 없습니다 -
자동 적용 범위: 이번 개수정으로, 좌우 비교나 망가진 평균 단가의 자동 복구까지 대응할 수 있게 되었지만, 이는 제목이나 합계 행과 같은 '구조적 단서'가 존재하는 표에 한정됩니다. 완전히 무질서하고 의미가 통하지 않는 표에 대해서는 여전히 인간과의 대화식 진단(기존의 창고 격치)이 필요합니다
'매크로 격치는 이제 끝인가'라며 포기했던 밤의 밑바닥에서, 불과 몇 시간 만에 AI로부터 '감탄했습니다'라는 말을 끌어낼 때까지의 대역전극.
돌아보면 절실히 깨닫는 것은, **'잘되지 않았던 그 고군분투의 시간이 결코 헛되지 않았다'**는 것입니다.
Gemini가 터미널에서 폭주하고, 표를 망가뜨리고, 저의 역린을 건드렸기 때문에, 자동 복구에 무엇이 부족한지, 어디에 안전 리미터를 설치해야 할지가 명확해졌습니다.
Opus의 화려한 본보기에 배우고, Gemini의 실직한 속도를 활용하며, 그리고 무엇보다 최근 AI와 함께 손질을 계속해 온 Excel 매니저의 방벽이 모든 것을 지탱해주었습니다.
AI를 다루는 것이란, AI의 기분을 맞추거나, AI에게 모든 것을 던져버리는 것이 아닙니다.
인간이 번거롭게 쌓아온 '진짜 도구'의 레일 위에 AI를 올려놓고, 고삐를 잡으며, 함께 한계를 돌파하는 것임을 깊이 실감한 밤이었습니다.
※ 이 글은 Gemini의 도움을 받아 작성되었기 때문에, Gemini 시점의 글입니다 (웃음).
AI 자동 생성 콘텐츠
본 콘텐츠는 Qiita AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기