AI Sparkup

복잡한 AI 세상을 읽는 힘 ⚡

AI가 개발한 macOS 앱: Claude Code로 2만 줄 네이티브 앱 개발 성공기

사이드 프로젝트의 마지막 20%를 완성하는 것은 많은 개발자들의 영원한 숙제입니다. 아이디어는 있고 프로토타입도 만들어 보지만, 실제 사용할 수 있는 완성된 제품으로 만드는 과정에서 포기하게 되는 경우가 대부분이죠. 하지만 AI 코딩 도구가 이런 상황을 바꿔놓을 수 있을까요?

2008년부터 Mac 소프트웨어를 개발해온 숙련된 개발자 Indragie Karunaratne의 경험담이 그 가능성을 보여줍니다. 그는 최근 Anthropic의 Claude Code를 사용해 거의 100% AI로 네이티브 macOS 앱을 개발하는 데 성공했습니다. 이 글은 그의 상세한 개발 기록을 바탕으로, AI 코딩 도구의 실무 활용법과 한계, 그리고 미래 전망을 살펴보겠습니다.

Claude Code가 생성한 ASCII 아트
Claude Code가 생성한 ASCII 아트 (출처: Indragie Karunaratne)

AI가 만든 완전한 제품: Context 앱

Indragie가 개발한 Context는 MCP(Model Context Protocol) 서버를 디버깅하기 위한 네이티브 macOS 애플리케이션입니다. MCP는 Anthropic이 설계한 개방형 표준으로, AI 에이전트가 다양한 도구와 컨텍스트에 접근할 수 있게 해주는 프로토콜입니다. 기존의 MCP Inspector 같은 도구들이 있었지만, 더 나은 사용자 경험을 제공하는 네이티브 앱의 필요성을 느꼈던 것이 개발의 출발점이었습니다.

놀라운 점은 이 앱의 개발 과정입니다. 총 20,000줄의 코드 중에서 개발자가 직접 작성한 코드는 1,000줄도 안 된다는 것입니다. 나머지는 모두 Claude Code가 생성한 코드로 이루어져 있습니다.

Claude Code로 개발된 Context 앱의 실제 화면 (출처: Indragie Karunaratne)

Claude Code란 무엇인가?

Claude Code는 2025년 2월에 등장한 Anthropic의 에이전틱 코딩 도구입니다. 기존의 VS Code 기반 AI 도구들(Cursor, Windsurf 등)과는 다른 접근 방식을 취합니다. 전통적인 IDE에 AI 기능을 추가하는 대신, 터미널에서 작동하는 완전히 새로운 형태의 개발 환경을 제공합니다.

Claude Code의 핵심 특징은 다음과 같습니다:

  • 에이전틱 루프: 단순한 자동완성이 아닌, 코드 작성부터 테스트, 디버깅까지의 전체 개발 과정을 자동화
  • 컨텍스트 수집: 코드베이스 분석, 웹 문서 읽기, 외부 데이터소스 접근 등을 통한 포괄적인 컨텍스트 수집
  • 실행 가능한 액션: 파일 편집, 명령어 실행, 커밋 생성 등을 직접 수행
  • MCP 통합: Model Context Protocol을 통해 Google Drive, Figma, Slack 등 외부 도구와 연동

실무에서 Claude Code 활용하기

Swift/SwiftUI 개발에서의 성능

Indragie의 경험에 따르면, Claude Code는 SwiftUI에서 특히 뛰어난 성능을 보입니다. Swift 5.5까지의 언어 기능은 잘 이해하지만, Swift Concurrency 같은 최신 기능에서는 여전히 어려움을 겪습니다. 또한 모던 API와 레거시 API를 구분하는 데 어려움이 있어, 종종 Objective-C API를 사용하려 하거나 AppKit/UIKit을 SwiftUI 대신 제안하기도 합니다.

이런 문제를 해결하기 위해 프로젝트 루트에 CLAUDE.md 파일을 만들어 기본 가이드라인을 제공하는 것이 효과적입니다:

* SwiftUI를 우선적으로 사용하되, AppKit에서만 지원되는 기능이 있을 때만 예외로 처리
* macOS 플랫폼에 맞는 UI 디자인과 Apple Human Interface Guidelines 준수
* SF Symbols를 아이콘으로 사용
* 최신 macOS API 활용 (하위 호환성 제약 없음)
* Swift 6과 Swift concurrency(async/await, actors) 등 최신 언어 기능 사용

“더 아름답게 만들어 줘”의 마법

Claude Code의 흥미로운 특징 중 하나는 단순히 “더 아름답게/우아하게/사용하기 쉽게 만들어 줘”라고 요청해도 놀라울 정도로 좋은 결과를 얻을 수 있다는 점입니다. 더 체계적으로 접근하려면 먼저 “이 UI를 더 아름답게 만들 수 있는 제안을 해줘”라고 요청해서 디자인 개선 옵션을 받아볼 수도 있습니다.

UI 버그나 개선사항이 있을 때는 스크린샷을 찍어서 Claude Code에 직접 드래그 앤 드롭하거나 ⌘+V로 붙여넣기만 하면 됩니다. 이런 시각적 피드백을 통해 더 정확한 개선작업이 가능합니다.

효과적인 AI 활용 전략

컨텍스트 엔지니어링이 핵심

기존에는 ‘프롬프트 엔지니어링’이 중요하다고 여겨졌지만, 최신 모델들은 불완전한 입력에도 잘 대응합니다. 대신 ‘컨텍스트 엔지니어링’이 더 중요해졌습니다. 제한된 컨텍스트 윈도우(Sonnet 4와 Opus 4는 200k 토큰)에서 최고 품질의 결과를 얻는 것이 핵심입니다.

Claude Code는 컨텍스트 사용량을 시각적으로 표시해주며, 한계에 도달하면 대화를 요약해서 새로운 컨텍스트 윈도우로 전환합니다. 하지만 이 과정에서 중요한 정보가 손실될 수 있어 주의가 필요합니다.

에이전트 프라이밍 기법

작업을 바로 시작하는 대신, 먼저 에이전트에게 관련 컨텍스트를 읽게 하는 ‘프라이밍’ 과정이 중요합니다:

DXTTransport.swift, DXTManifest.swift, DXTManifestView.swift 등의 파일을 읽어서 
DXT 패키지에서 서버를 추가하는 방식을 학습해줘.

그 다음 https://raw.githubusercontent.com/anthropics/dxt/refs/heads/main/MANIFEST.md 
에서 manifest.json 형식 문서를 읽어줘.

이 자료들을 읽은 후, 학습한 내용을 요약해줘.

이런 방식으로 에이전트가 먼저 필요한 정보를 이해하게 한 후 작업을 시키면 훨씬 좋은 결과를 얻을 수 있습니다.

“울트라씽크” 활용법

Claude는 구현에 바로 뛰어들기보다는 충분한 사전 계획이 필요합니다. 이때 확장된 사고 모드를 활성화하는 마법의 키워드들이 있습니다: “think” < “think hard” < “think harder” < “ultrathink”. 이 중 “ultrathink”가 가장 많은 토큰을 소모하지만 최고의 결과를 제공합니다.

실제 개발에서의 한계와 극복 방안

피드백 루프 설정의 중요성

Claude Code가 가장 효과적으로 작동하려면 독립적으로 변경사항을 테스트하고 피드백을 받을 수 있는 루프가 필요합니다:

  • 빌드: Swift 패키지는 swift build로 잘 처리하지만, macOS 앱의 경우 xcodebuild 명령어에 어려움을 겪습니다. 이런 경우 XcodeBuildMCP 같은 도구가 도움이 됩니다.
  • 테스트: swift test로 테스트 실행과 결과 확인이 가능합니다.
  • 버그 수정: 디버그 로깅 추가는 잘하지만, 사용자처럼 앱과 상호작용해서 특정 상태로 만드는 것은 수동으로 해야 합니다.
  • UX 문제 해결: 스크린샷을 통한 UI 개선은 가능하지만, 역시 수동 상호작용이 필요합니다.

자동화의 새로운 가능성

특히 인상적인 부분은 릴리즈 자동화입니다. Indragie는 몇 시간의 반복 작업으로 다음 기능을 모두 포함한 2,000줄의 Python 릴리즈 스크립트를 얻었습니다:

  • 환경 설정 확인
  • Git 커밋에서 변경 로그 생성
  • 앱 빌드, 코드 사이닝, 공증
  • Sparkle appcast 생성 (자동 업데이트용)
  • GitHub 릴리즈 발행
  • Sentry에 디버그 심볼 업로드

자동화된 릴리즈 스크립트 실행 화면
Claude Code가 생성한 아름다운 CLI 출력의 릴리즈 자동화 스크립트 (출처: Indragie Karunaratne)

개발 환경의 미래

이번 프로젝트를 통해 Indragie가 사용한 도구는 Claude Code와 GitHub Desktop(diff 확인용) 뿐이었습니다. 전통적인 에디터의 기능들—파일 트리, 소스 코드 에디터, 확장 프로그램 등—은 거의 사용하지 않았습니다.

이는 미래 IDE의 모습에 대한 중요한 시사점을 제공합니다. 현재의 Cursor, Windsurf, Copilot 등은 모두 VS Code를 기반으로 AI 기능을 추가한 형태입니다. 하지만 VS Code는 본질적으로 20년 전 JetBrains IDE와 크게 다르지 않습니다.

미래의 IDE는 에이전트의 컨텍스트를 효과적으로 준비하고 피드백 루프를 설정하는 데 집중할 것입니다. 소스 코드 에디터가 중심이 되는 현재의 형태와는 완전히 다른 UX가 등장할 가능성이 높습니다.

비용 대비 효과와 실용적 조언

Indragie의 가장 큰 수확은 완성된 앱 자체가 아니라, 다시 사이드 프로젝트를 완성할 수 있게 된 것이라고 합니다. 마치 하루에 5시간이 추가로 생긴 것 같다고 표현했는데, 이 모든 것이 월 200달러의 비용으로 가능했습니다.

개발자들이 AI 코딩 도구를 효과적으로 활용하기 위한 핵심 조언은 다음과 같습니다:

상세한 명세 작성: AI는 마음을 읽을 수 없습니다. “1문장으로 전체 앱을 만든다”는 데모는 프로토타입 수준에 그치며, 실제 제품을 원한다면 구체적이고 상세한 명세가 필요합니다.

점진적 접근: 처음부터 완벽한 앱을 만들려 하지 말고, 작은 기능부터 시작해서 점진적으로 확장해 나가는 것이 효과적입니다.

피드백 루프 구축: 빌드, 테스트, 디버깅의 자동화된 피드백 루프를 설정하면 AI의 효과를 극대화할 수 있습니다.

모크 데이터 활용: Claude는 현실적인 모크 데이터 생성에 탁월합니다. UI 프로토타이핑 단계에서 이를 적극 활용하면 개발 속도를 크게 높일 수 있습니다.

AI 코딩 도구는 개발자를 대체하는 것이 아니라, 창의적인 문제 해결과 아키텍처 설계에 더 집중할 수 있게 해주는 강력한 파트너입니다. 반복적이고 시간 소모적인 작업들을 AI에게 맡기고, 우리는 더 높은 수준의 사고와 의사결정에 집중할 수 있게 된 것입니다.

Claude Code와 같은 도구들이 계속 발전한다면, 개인 개발자도 팀 단위의 생산성을 낼 수 있는 시대가 곧 올 것으로 보입니다. 6년간 사이드 프로젝트를 완성하지 못했던 개발자가 다시 제품을 출시할 수 있게 된 이 사례는, AI가 가져올 개발 환경의 변화를 미리 보여주는 중요한 신호탄이라 할 수 있습니다.


참고자료:

Comments