TypeScript 10만 줄을 Rust로, Claude Code 실전 포팅기
(blog.vjeux.com/2026)전 Facebook 엔지니어 Christopher Chedeau (Vjeux)가 Pokemon Showdown 배틀 엔진(약 10만 줄 TypeScript)을 Claude Code를 활용해 Rust로 포팅한 실험
프로젝트 목표
- Pokemon 배틀 AI 학습용 고속 오라클(참조 시스템) 구축
- 기존 TypeScript 구현 → 너무 느림 (수백만 배틀 시뮬레이션 불가능)
- 목표 언어: Rust (고성능) → 하지만 본인 Rust 경험 제로
주요 성과
- 1개월 (실제 작업 약 2~4주) 만에 약 10만 줄 포팅 완료
- 약 5,000 커밋 생성
- 실행 속도 3.5배 향상
- 차분 테스트 결과 일치율 99.96% (200만 랜덤 배틀 기준)
- 나머지 0.04%는 원본 TS 코드의 버그로 추정
성공의 핵심 전략
-
차분 테스트 (differential testing) 도입
- TS 원본 vs Rust 버전 동시 실행 → 결과 비교
- 불일치 사례 → Claude에게 로그 보여주며 수정 지시
- Rust 문법 거의 모르는 상태에서도 검증 가능
Claude가 겪은 주요 어려움
- 개별 파일 포팅은 잘함 ↔ 파일 간 통합에서 빈번한 문제 발생
- 예: 동일 개념(‘move’)을 서로 다른 구조체로 정의
- 컨텍스트 윈도우 한계 → 중간 요약 과정에서 중요 정보 손실
- “더 좋게” 만들려는 경향 → 명시적 “라인 바이 라인 포팅” 지시 무시하고 리팩토링 시도 → 버그 양산
- 최적화 요청 → 계획은 훌륭해 보였으나 실제 성능 개선 거의 없음 (일부는 오히려 느려짐)
특이한 워크플로우 해킹
- Claude의 사용자 승인 요청 자동화
- AppleScript로 몇 초마다 Enter 자동 입력 → 24시간 무인 실행
- (보안 위험 있지만, 일회성 오라클 목적이라 감수)
AI 코딩 도구의 현주소 (평가)
- 기계적 변환·대량 포팅 작업 → 매우 강력
- 성능 최적화, 아키텍처 설계 등 고차원 작업 → 아직 부족
- Hacker News 논쟁
- 회의론: 유지보수 불가능, “컴파일만 되는” 코드
- 옹호론: 차분 테스트로 충분히 신뢰 가능 + 인간 대비 시간 단축 극대
실무 적용 교훈 3가지
- 철저한 자동화된 테스트 체계 필수 (차분 테스트 없으면 실패 확률 매우 높음)
- 명확하고 좁은 범위의 지시가 가장 잘 먹힘 (“라인 바이 라인 포팅” O vs “개선해줘” X)
- AI는 도구일 뿐 → 개발자가 여전히 문제 진단·질문 설계·방향성 유지해야 함
→ Rust 전혀 모르는 사람이 10만 줄 규모 코드를 한 달 만에 실용 수준으로 옮긴 사례 → AI 코딩의 실용성 입증 사례이면서 동시에 한계도 명확히 드러낸 대표적인 실험