Skip to content
··9분 읽기

아무도 알려주지 않는 것: AI가 '완료'라고 말한 후 진짜 작업이 시작됩니다

Swift를 모르면서 첫 iOS 앱을 만들고 있습니다. Claude Code가 어느 저녁에 전체를 스캐폴딩했습니다. 그리고 시뮬레이터를 열자, 진짜 작업이 시작되었습니다.

저는 Xcode를 한 번도 열어본 적이 없습니다.

Swift를 모릅니다. SwiftUI를 모릅니다. @Observable 매크로가 무엇을 하는지, AVAudioSession에 왜 카테고리가 필요한지 모릅니다. 이틀 전에 StoreKit이 뭐냐고 물었다면, 가구 앱이라고 추측했을 것입니다.

그런데도 네이티브 iOS 앱을 만들고 있습니다 — 그리고 AI 생성 코드가 약 60%까지 데려다준다는 것을 발견하고 있습니다. 코드베이스가 제품이 되는 나머지 40%는 전적으로 인간의 작업입니다. 이것이 "AI로 X를 만들었습니다" 류의 글들이 절대 언급하지 않는 부분입니다.

이 앱은 DIALØGUE — 저의 AI 팟캐스트 생성기 — 를 위한 것입니다. 웹 래퍼가 아닙니다. React Native가 아닙니다. Apple Sign-In, 인앱 구매, 잠금 화면 컨트롤이 있는 오디오 플레이어, 7개 언어 현지화를 갖춘 진짜 SwiftUI 앱입니다.

왜 지금인가?

2월 3일, Apple이 발표했습니다 Xcode 26.3이 에이전틱 코딩을 지원할 것이라고 — Anthropic의 Claude Agent SDK가 내장된 형태로. 단순한 자동완성이 아닙니다. 턴바이턴 제안이 아닙니다. 프로젝트 구조를 탐색하고, Apple의 문서를 검색하고, Xcode Previews를 캡처하여 자신이 만드는 것을 확인하고, 빌드와 수정을 자율적으로 반복할 수 있는 완전한 자율 에이전트입니다.

Claude Code는 이제 MCP를 통해 Xcode와 대화할 수 있습니다. 시뮬레이터를 볼 수 있습니다. 빌드 경고와 오류 메시지를 읽을 수 있습니다. UI가 실제로 어떻게 보이는지 확인하고 변경이 필요한지 판단할 수 있습니다.

이것이 저에게 계산을 바꿨습니다. 네이티브 iOS 앱을 몇 달 동안 생각해왔지만 Swift를 모르기 때문에 계속 미루고 있었습니다. Xcode의 Claude Agent로 인해, 질문이 "Swift를 충분히 빨리 배울 수 있을까?"에서 "내가 원하는 것을 충분히 명확하게 설명할 수 있을까?"로 바뀌었습니다.

아직 완성되지 않았습니다. 여전히 최종 다듬기 단계에 있으며, 제대로 작동하지 않는 것들을 찾고, Claude가 작성한 코드를 읽으며 Swift를 배우고 있습니다. 하지만 지금까지의 이야기는 — 14일간의 DIALØGUE 재구축과 마찬가지로 — 같은 불편한 교훈을 강화했습니다.


Claude Code가 어느 저녁에 실제로 무엇을 만들었나?

제 git 히스토리는 이렇게 생겼습니다:

단계무슨 일이 있었나커밋 수
설계 문서 + 구현 계획아키텍처 결정, 12개 작업2
Claude가 "전체 앱"을 빌드스캐폴드 → 인증 → 라이브러리 → 상세 → 스튜디오 → StoreKit → 접근성6
인간이 시뮬레이터를 열다수정, 테스트, 재설계, 수정, 테스트, 재설계12+ (계속 증가 중)

첫 번째 단계 — Claude Code가 전체 앱을 스캐폴딩하는 것 — 은 진정으로 인상적이었습니다. 어느 저녁에 빈 Xcode 프로젝트에서 다음을 갖춘 컴파일되는 앱으로 갔습니다:

  • Apple Sign-In, Google OAuth, 이메일/비밀번호 인증, MFA
  • 5단계 팟캐스트 생성 위자드
  • 검색과 당겨서 새로고침이 있는 팟캐스트 라이브러리
  • AVPlayer를 사용한 오디오 재생
  • 서버 측 검증이 있는 StoreKit 2 인앱 구매
  • 스튜디오 (반복 쇼 관리)
  • 7개 언어 현지화
  • 블로그 웹뷰와 접근성 레이블

69개의 Swift 파일. 7,568줄의 코드. 제가 작성한 것은 대략 0줄입니다.

이 부분에서 모든 AI 블로그 포스트가 끝납니다. 승리의 스크린샷. "제가 만든 것 보세요" 순간. 불가능해 보이는 커밋 수와 줄 수와 타임라인.

하지만 저에게는 앱이 없었습니다. 컴파일되는 코드베이스가 있었을 뿐입니다.


실제로 앱을 사용했을 때 무엇이 깨졌나?

이리저리 탭해봤습니다. 뭔가가 로딩되었습니다. 일부 화면은 괜찮아 보였습니다. "어쩌면 이게 정말 될 수도 있겠다"고 생각했습니다.

그런 다음 팟캐스트를 만들어 보려고 했습니다.

"완료" 버튼이 작업을 날려버림

스크립트 편집기에서는 오디오 생성 전에 개별 대화 줄을 편집할 수 있습니다. "완료" 버튼이 있습니다. 줄을 편집하고, 완료를 탭하자... 편집 내용이 사라졌습니다.

버튼이 저장 전에 편집 모드를 종료하고 있었습니다. 코드에서는 정확해 보였습니다 — editMode = false — 하지만 순서가 잘못되었습니다. 저장 후에, 그다음 종료.

이것은 사용자가 전화기를 던지게 만드는 종류의 버그입니다. 그리고 AI가 이것을 작성한 이유는 로직이 기술적으로 유효하기 때문입니다 — 단지 순서가 반대일 뿐.

실제 데이터가 앱을 크래시시킴

프로덕션 백엔드에서 생성된 팟캐스트로 이동했습니다. 크래시. research_facts 필드가 객체 배열 ({fact, source, reference, confidence})로 돌아왔지만, Swift 모델은 문자열 배열을 기대했습니다. 모든 곳에서 같은 패턴 — 상태 열거형이 대소문자를 구분하여 (completed vs COMPLETE), 모든 상태 배지가 "Unknown"으로 표시되었습니다.

Claude는 설계 문서에 적힌 대로 만들었습니다. 프로덕션 데이터베이스는 동의하지 않았습니다. 이것은 테스트 데이터가 아닌 실제 데이터로만 발견되는 종류의 문제입니다.

실시간 WebSocket이 그냥... 연결되지 않음

웹에서 Supabase Realtime은 잘 작동합니다. iOS에서는 WebSocket 연결이 조용히 실패했습니다. 오류도 없고, 크래시도 없고. 그냥... 업데이트가 없었습니다.

수정은 벨트 앤 서스펜더 접근법이었습니다: Realtime 구독을 유지하되 무조건 실행되는 5초 폴링 폴백을 추가했습니다. 우아하지는 않지만 안정적입니다. 모바일 네트워크는 예측할 수 없고, 사용자는 상태 업데이트가 어떻게 되는지는 신경 쓰지 않습니다 — 업데이트가 되기만 하면 됩니다.

전체 앱이 시스템 색상을 사용함

모든 화면이 기본 iOS 파란색과 회색이었습니다. 라이트 모드. 웹 앱에는 세심하게 디자인된 다크 모드 미학이 있습니다 — 차콜 위의 앰버와 골드, 제가 "Studio Warmth"라고 부르는 것. Claude는 충실하게 모든 화면을 만들었지만, 시스템 색상으로.

24개의 뷰 파일을 모두 수정해야 했습니다. 모든 Color.accentColorTheme.brandPrimary로 교체. 루트에서 .preferredColorScheme(.dark)를 강제.

이것은 버그가 아닙니다. AI는 합리적인 것을 정확히 했습니다. 하지만 "합리적인 것"과 "좋은 것"은 다른 것입니다.

DIALØGUE iOS app podcast detail page with Studio Warmth dark theme showing amber radial glow header and integrated audio controls
Studio Warmth 패스 후의 팟캐스트 상세 페이지 — 앰버 글로우, 다크 테마, 통합 재생. Claude의 원래 스캐폴드에는 이 중 아무것도 없었습니다.

아웃라인 검토가 "승인"이라고 쓰인 버튼이었음

팟캐스트 생성 플로우에는 인터랙티브 단계가 있습니다: AI가 아웃라인을 생성하고, 진행하기 전에 검토합니다. 웹에서는 각 세그먼트의 설명, 토킹 포인트, 리서치 소스를 보여주는 확장 가능한 카드 인터페이스입니다.

iOS에서 Claude는 "승인"이라고 쓴 버튼을 만들었습니다. 그게 전부입니다. 아웃라인 내용 없음. 무엇을 승인하는지 볼 방법 없음. 스크립트 검토도 마찬가지 — 편집기가 아닌 버튼.

오디오가 재생되지 않음

오디오 플레이어는 올바르게 보였습니다. 재생 버튼, 프로그레스 바, 잠금 화면 컨트롤. 하지만 재생을 탭해도 아무 일도 일어나지 않았습니다. URL 해석 체인이 깨져 있었습니다 — 서명된 다운로드 URL이 개발 환경에서 실패했고, 폴백 URL은 시뮬레이터가 해석할 수 없는 내부 Docker 호스트네임을 사용했습니다.

오디오를 수정하고 통합 재생 컨트롤이 있는 팟캐스트 상세 페이지를 재설계한 후, 모든 탭 하단의 영구 미니 플레이어 바가 불필요해졌습니다. 삭제했습니다. 작동하지만 존재해서는 안 되는 코드를 삭제하는 것 — 그것은 순전히 인간의 판단입니다.


AI 생성 코드 vs 실제 제품은 어떻게 다른가?

AI 생성 코드는 아키텍처적으로 건전하지만 경험적으로 비어 있습니다. 불평하는 것이 아닙니다 — Claude Code가 한 것은 놀랍습니다. "Swift를 모르는" 상태에서 인증, IAP, 오디오 재생, 7개 언어 현지화가 있는 컴파일되는 앱까지 어느 저녁 만에? 혼자 했다면 몇 달이 걸렸을 것입니다.

하지만 블로그 포스트, 트윗, 데모 영상에서 나오는 서사가 있습니다 — AI가 앱을 작성하고 여러분은 그냥 검토하면 된다고. 배포하고. 끝.

실제로 일어난 것은 그렇지 않습니다. 실제로 일어난 것은 이렇습니다:

  1. Claude가 아키텍처적으로 건전한 스캐폴드를 만들었습니다. Supabase 직접 연결 (커스텀 API 레이어 없음) 결정은 iOS 앱이 웹 앱과 동일한 백엔드와 통신한다는 것을 의미합니다. 인증, 데이터베이스, 실시간, 스토리지 — 모두 재사용. 새로운 서버 측 컴포넌트는 하나만 필요했습니다 (verify-ios-purchase Edge Function). 그 아키텍처 선택은 훌륭했고 엄청난 시간을 절약했습니다.

  2. Claude가 어려운 부분을 제대로 했습니다. CryptoKit을 통한 암호화 논스가 있는 Apple Sign-In. 서버 측 검증이 있는 StoreKit 2 구매 플로우. 백그라운드 재생을 위한 AVAudioSession 설정. 이것들은 문서만으로 알아내려면 며칠이 걸렸을 것입니다.

  3. Claude가 제품 부분을 틀렸습니다. 버그가 있다는 의미의 틀림이 아닙니다 — "이것이 코드베이스가 보이는 것이지, 앱이 느껴지는 것이 아닙니다"라는 의미의 틀림입니다.

Claude가 만든 것실제로 필요했던 것
"승인"이라고 쓴 버튼리서치 소스가 있는 확장 가능한 아웃라인 리뷰어
모든 화면에 시스템 색상24개 파일의 브랜드 토큰, 강제 다크 모드
문서화된 스키마용 JSON 디코더데이터베이스가 실제로 반환하는 것을 위한 커스텀 디코더
Realtime 구독 (웹 패턴)Realtime + 폴링 폴백 (모바일 패턴)
기능하는 생성 위자드전화기 화면에 맞는 생성 위자드
DIALØGUE iOS creation wizard showing voice customization with speed and pitch sliders in dark theme
인간의 개입 후 생성 위자드 — 속도/피치 슬라이더가 있는 음성 커스터마이징, 접을 수 있는 섹션, 모두 전화기 화면에 맞음.

왼쪽 열은 올바른 코드입니다. 오른쪽 열은 제품입니다.


다음 세대에게 AI에 대해 무엇을 말해야 할까?

몇 주 전에 글을 썼습니다 십대 딸이 있고 미래에 대해 무엇을 말해줘야 할지 모르겠다고. 실행 기술이 자동화되고 있고 "비판적으로 생각할 수 있다"의 기준선이 계속 올라가고 있다는 것에 대해.

이 iOS 앱을 만들면서 그것이 더 선명해졌습니다 — 하지만 기대했던 방향이 아니었습니다.

구현 기술 — Swift 문법, SwiftUI 레이아웃, StoreKit API — 은 필요하지 않았습니다. Claude가 전부 처리했습니다. "코딩을 배워라"가 "프로그래밍 언어의 문법과 API를 배워라"를 의미한다면, 그 조언의 유효기간은 몇 년이 아니라 몇 개월 단위입니다.

하지만 제가 실제로 필요했던 것은: 제품 감각, 디자인 판단력, 그리고 코드 리뷰를 신뢰하는 대신 시뮬레이터를 열고 실제로 사용해보는 규율이었습니다.

이것은 단순히 "감각"이 아닙니다. 비판적 사고가 필요합니다 — 유행어 버전이 아닌 진짜 비판적 사고. 컴파일되고, 테스트를 통과하고, AI가 자신 있게 완료되었다고 말하는 것을 보고 이렇게 말하는 것입니다: "아니요. 이건 맞지 않습니다. 왜 그런지 보여드리겠습니다."

이것이 우리가 아웃소싱할 수 없는 부분입니다. 아직은, 어쩌면 영원히. AI는 솔루션을 생성하는 데 뛰어납니다. 로그에 나타나지 않는 방식으로 솔루션이 잘못된 경우를 아는 데는 형편없습니다. 제품을 사용하지 않습니다. 전화기를 잡지 않습니다. 작업을 날려버리는 완료 버튼의 좌절감을 느끼지 못합니다. 누군가가 방향을 잡아야 합니다. 누군가가 루프에 머물러야 합니다. 누군가가 "이건 작동하지만 좋지 않다"고 말하는 직감 검사를 제공해야 합니다.

어쩌면 이것이 딸에게 해야 할 말인지도 모릅니다. "코딩을 배워라"가 아닙니다 — 그 창은 닫히고 있습니다. 하지만 "그냥 비판적으로 생각하는 법을 배워라"도 아닙니다, 그것은 너무 모호하니까요. 좀 더 구체적인 것:

시뮬레이터를 여는 사람이 되어라.

실제 데이터로 실제 것을 테스트하고 사용자보다 먼저 무엇이 잘못되었는지 알아차리는 사람이 되세요. 훌륭한 제품과 끔찍한 제품을 사용하고 그 차이를 이해하여 감각을 기르세요. 기술적으로는 맞지만 경험적으로 깨진 것에 대해 반박할 자신감을 기르세요 — 반박 대상이 매우 확신에 찬 AI일 때조차도.

루프 안의 인간은 형식이 아닙니다. 전체 제품입니다.

이것으로 충분한지 여전히 확신이 없습니다. 하지만 지금까지 말할 수 있는 가장 구체적인 것입니다.


iOS 앱의 현재 상태는?

앱은 아직 개발 중입니다. 다듬기 단계에 있습니다 — AI 블로그 포스트가 존재하지 않는 척하는 그 단계. 모든 뷰에 대해 실제 프로덕션 데이터를 테스트하고 있습니다. 실제로 사용해봐야만 드러나는 엣지 케이스를 찾고 있습니다.

지난 이틀간의 git 로그에는 feat: 커밋보다 fix: 커밋이 더 많습니다. 그것이 맞는 느낌입니다. 기능은 쉬운 부분이었습니다. 수정이 제품입니다.

현재 상태입니다:

작동하는 것남은 것
인증 (Apple, Google, 이메일, MFA)PDF 업로드 (문서 피커 + Supabase Storage)
전체 커스터마이징이 있는 5단계 생성 위자드오프라인 MP3 다운로드
아웃라인/스크립트 검토가 있는 팟캐스트 상세푸시 알림 (v1.1로 연기)
잠금 화면 컨트롤이 있는 오디오 재생TestFlight 베타 배포
StoreKit 2 인앱 구매App Store 제출
스튜디오 (반복 쇼)
7개 언어 현지화
Studio Warmth 디자인 시스템

App Store에 올라가면 후속 글을 쓰겠습니다. 아니면 거부당하면. Apple을 아는 사람이라면, 거부 이야기가 더 흥미로울 수도 있습니다.


AI 개발은 실제로 얼마나 빠르게 가속화되고 있나?

계속 저를 괴롭히는 표를 업데이트하겠습니다:

프로젝트복잡도개발 기간
DIALØGUE v1MVP 팟캐스트 생성기~6개월
STRAŦUM10개 AI 에이전트, 11개 프레임워크, 멀티테넌트75일
사이트 리디자인WordPress 프론트엔드 전면 개편3일
DIALØGUE v2웹 앱 완전 재구축14일
블로그 마이그레이션WordPress → Next.js, 490개 포스트, Sydney RAG4일
DIALØGUE iOS네이티브 iOS 앱, Swift 첫 사용아직 진행 중 — 하지만 스캐폴드는 어느 저녁에 완성

머릿속에 새 열을 추가했습니다: "Claude의 시간" vs "나의 시간." 비율이 계속 바뀌고 있습니다. Claude의 부분은 점점 짧아집니다. 제 부분은 거의 같습니다. (4일 만에 블로그 백엔드를 재구축했을 때도 같은 패턴을 발견했습니다 — 마이그레이션은 빨랐지만, 사이트가 실제로 완성된 것은 8일간의 복리 다듬기였습니다.)

그리고 도구는 계속 좋아지고 있습니다. Apple과 Anthropic이 2월 3일에 Xcode + Claude Agent SDK 통합을 발표했을 때, 그것은 단순한 보도자료가 아니었습니다. 가능한 것을 근본적으로 바꿨습니다. Claude는 이제 시뮬레이터를 보고, 빌드 오류를 읽고, Preview를 캡처하고, 시각적으로 반복할 수 있습니다 — 인간에게 iOS 개발을 어렵게 만드는 바로 그 루프가 AI에게 네이티브가 되고 있습니다.

그 발표 2주 후, Swift를 모르면서 iOS 앱을 만들기 시작했습니다. 우연이 아닙니다.

다음에 이것을 하는 사람은 블로그 포스트를 쓸 필요가 없을 것입니다. 그냥... 일상이 될 테니까요. 가속이 내부에서 보이는 것이 이렇습니다 — 각 이정표가 이전 것보다 덜 주목할 만하게 느껴지지만, 실제 이동 거리는 계속 커지고 있습니다.

아무도 알려주지 않는 것이 이것입니다. AI는 점점 빨라지고 있습니다. 인간의 작업은 아직 그렇지 않습니다. 아직은요.


자주 묻는 질문

Swift를 모르면서 AI로 정말 iOS 앱을 만들 수 있나요?

네 — Claude Code가 어느 저녁에 69개의 Swift 파일과 7,568줄의 코드를 스캐폴딩했습니다. Apple Sign-In, StoreKit 2 인앱 구매, 오디오 재생, 7개 언어 현지화를 포함합니다. 하지만 "만들 수 있다"는 말이 많은 것을 감추고 있습니다. AI는 컴파일되는 코드베이스를 만들어냅니다; 실제로 배포할 제품으로 만들려면 광범위한 인간 테스트, 디자인 판단, 실제 데이터 디버깅이 필요합니다.

Xcode 26.3의 Claude Agent SDK는 무엇을 바꾸나요?

2026년 2월 3일 발표된 Xcode + Claude Agent SDK 통합은 AI 에이전트가 프로젝트 구조를 탐색하고, Apple의 문서를 검색하고, Xcode Preview를 캡처하고, 시뮬레이터를 보고, 빌드 오류를 읽고, 자율적으로 반복할 수 있게 합니다. 이것은 Swift를 모르는 개발자에게 가능한 것을 근본적으로 바꿉니다 — 질문이 "언어를 배울 수 있을까?"에서 "원하는 것을 설명할 수 있을까?"로 바뀝니다.

AI로 만든 앱에서 실제로 인간 작업이 필요한 비율은?

제 경험상, AI가 대략 60%까지 데려다줍니다 — 아키텍처, 보일러플레이트, 어려운 API 통합. 나머지 40%는 제품 작업입니다: 실제 데이터에서만 나타나는 버그 수정, 기능하지만 느낌이 맞지 않는 UI 재설계, 무엇을 유지하고 무엇을 삭제할지에 대한 판단. 그 40%가 제품이 실제로 존재하는 곳입니다.

AI 코딩 에이전트로 빌드할 때 가장 중요한 기술은 무엇인가요?

제품 감각, 디자인 판단력, 비판적 사고입니다. 구현 기술 (문법, API, 프레임워크)은 점점 더 AI가 처리합니다. 아웃소싱할 수 없는 것은 실제 데이터로 실제 것을 테스트하고, 무엇이 잘못되었는지 알아차리고, 기술적으로는 맞지만 경험적으로 깨진 것에 반박할 수 있는 능력입니다.

DIALØGUE iOS 앱은 App Store에서 이용 가능한가요?

아직 아닙니다 — 여전히 개발 중이며, 최종 다듬기 단계에 있습니다. 기능은 작동하지만, 프로덕션 데이터에 대해 테스트하면서 실제로 앱을 사용해봐야만 드러나는 엣지 케이스를 찾고 있습니다. App Store에 올라가면 (또는 거부당하면) 후속 글을 쓰겠습니다.


여전히 만들고 있습니다. 여전히 끝나지 않았습니다. 여전히 딸에게 무엇을 말해야 할지 고민하고 있습니다.


계속 읽기

나의 여정
연결
언어
환경설정