00:00:00대부분의 AI 코딩 모델에는 아주 치명적인 문제가 하나 있습니다. 바로 Swift를 제대로 다루지 못한다는 거죠.
00:00:06우리는 그동안 AI 에이전트들이 몇 초 만에 웹 앱이나 자바스크립트 도구를 뚝딱 만들어내는 화려한 데모를 많이 봐왔습니다.
00:00:11하지만 Swift 코드를 건드려 달라고 요청하는 순간, 모든 게 순식간에 무너지고 맙니다.
00:00:16도대체 왜 세계에서 가장 똑똑하다는 모델들이 iOS 개발에서 고전을 면치 못하는 걸까요?
00:00:22오늘 영상에서 바로 그 이유를 파헤쳐 보려고 합니다.
00:00:25오늘 저는 최고의 코딩 에이전트들에게 동일한 Swift 앱 코딩 챌린지를 부여하여,
00:00:30어떤 모델이 이 작업을 실제로 수행할 수 있는지, 그리고 어떤 모델이 그저 웹 개발에만 특화된 반쪽짜리 모델인지
00:00:35확인해 볼 예정입니다.
00:00:36약간의 스포일러를 드리자면, 이 모델 중 하나는 테스트를 완벽하게 통과했습니다.
00:00:40어떤 모델인지 영상 뒷부분에서 확인해 보세요.
00:00:43꽤 재미있는 실험이 될 테니, 바로 시작해 보겠습니다.
00:00:50우선 핵심적인 문제부터 짚고 넘어가죠.
00:00:52왜 AI 코딩 모델들은 Swift 개발에 취약할까요?
00:00:56참고로 이건 저만의 생각이 아닙니다.
00:00:59“코드 생성을 위한 대규모 언어 모델 평가 - 비교 연구”라는 제목의 논문에 따르면
00:01:05Python, Java, Swift를 테스트한 결과, GPT와 Claude를 포함한 모든 모델에서
00:01:12Swift의 성능이 Python이나 Java보다 일관되게 낮게 나타났습니다.
00:01:17그 이유는 AI가 애플 생태계를 다룰 때 겪게 되는 세 가지 주요 병목 현상으로 요약됩니다.
00:01:24첫 번째는 데이터의 격차입니다.
00:01:25웹상에는 자바스크립트와 파이썬 오픈 소스 코드가 넘쳐나지만, 전문적인 Swift 코드의 상당 부분은
00:01:31비공개 또는 상업용 저장소 안에 숨겨져 있습니다.
00:01:36두 번째는 API의 급격한 변화, 즉 API Drift입니다.
00:01:38애플은 빠른 속도로 변화를 주도하며 기존의 방식을 과감히 깨는 것으로 유명하죠.
00:01:42SwiftUI와 Swift의 동시성 모델은 지난 3년 동안 일부 웹 표준이 10년 동안 변한 것보다 더 많이 바뀌었습니다.
00:01:49대부분의 AI 모델은 지식 학습 중단 시점(Knowledge Cut-off)이 있기 때문에, 최신 Xcode 버전에서는
00:01:54더 이상 작동하지 않는 오래된 규칙으로 Swift 코드를 작성하려고 하는 경우가 많습니다.
00:01:59마지막으로 벤치마크 편향 문제입니다.
00:02:02오늘 테스트할 Qwen이나 Grok 같은 대부분의 AI 모델들은 특정 테스트에 최적화되어 있습니다.
00:02:08이들은 주로 Python과 웹 기반 로직에 집중된 HumanEval 같은 거대 벤치마크를 통과하도록 훈련되었습니다.
00:02:16복잡한 iOS UI에 대한 주요 벤치마크가 많지 않기 때문에, 이 모델들은
00:02:21기능적인 앱을 구축하는 능력에 대해 제대로 된 평가를 받아본 적이 없는 셈입니다.
00:02:25그래서 저는 시중의 가장 인기 있는 AI 코딩 모델들을 선정하여
00:02:30각 모델에 똑같은 프롬프트를 주었습니다.
00:02:32강아지 버전의 틴더 클론 앱인 “Dogtinder”를 Swift로 제작하라는 과제를 주었는데요. Dog CEO API를 사용하여
00:02:38다양한 강아지 사진을 보여주는 앱입니다.
00:02:43사용자가 왼쪽이나 오른쪽으로 스와이프하여 마음에 드는 강아지를 선택하고, 매칭이 되면
00:02:47채팅창을 열어 매칭된 강아지와 재미있는 메시지를 주고받는 기능입니다.
00:02:52에이전트가 완료하기에 충분히 귀엽고 단순하면서도, 네이티브 Swift로
00:02:58스와이프 애니메이션 기능을 구현해야 하는 흥미로운 도전 과제도 포함되어 있습니다.
00:03:03테스트 결과는 성적이 가장 좋지 않았던 모델부터
00:03:07가장 뛰어난 모델 순으로 살펴보겠습니다.
00:03:09안타깝게도 꼴찌는 새로운 Qwen 2.5 Coder 모델이 차지했습니다.
00:03:15Qwen은 이 모델이 Kimi나 Claude 같은 강자들에 대항할 수 있는 오픈 소스 대안이며,
00:03:20모델 사이즈는 작지만 성능은 더 뛰어나다고 홍보해 왔습니다.
00:03:25웹 앱에서는 그 말이 맞을지 몰라도, 이번 Swift 챌린지에서는 역부족이었습니다.
00:03:32가능한 경우 해당 모델에서 제공하는 자체 CLI 도구를 사용하려고 했고,
00:03:37이 경우에는 Qwen CLI 도구를 사용하여 챌린지를 진행했습니다.
00:03:42하지만 코드 생성이 완료된 후, Qwen이 만든
00:03:46프로젝트 파일을 열 수조차 없었습니다.
00:03:48파일을 열 때 발생한 오류를 수정하라고 다시 프롬프트를 입력해 보았습니다.
00:03:53하지만 Qwen은 오류를 고치지 못했고, 대신 프로젝트를 처음부터 직접 구축하는 방법과
00:03:58파일을 프로젝트 폴더로 복사하는 방법에 대한 긴 리드미 파일만 제공했습니다.
00:04:03수동으로 작업하는 건 이번 챌린지의 취지에 어긋나기 때문에 제가 원한 결과가 아니었죠.
00:04:09나중에 보시겠지만, 일부 모델은 프로젝트에 필요한 최종 파일들을 생성하고
00:04:14한 번에 성공적으로 열 수 있게 만드는 과정을 매우 힘들어했습니다.
00:04:20그래서 Qwen과 같은 경우에는 대신 조금 더 쉬운 조건을 주기로 했습니다.
00:04:26Xcode에서 수동으로 새 iOS 앱 프로젝트를 생성했고,
00:04:31최신 버전의 Xcode에 포함된 새로운 코딩 인텔리전스 기능을
00:04:37테스트해 보기에 좋은 기회라고 생각했습니다.
00:04:38드디어 Xcode에도 자체 AI 어시스턴트 기능이 생겼다는 점은 정말 멋진 일입니다.
00:04:43제 OpenRouter 계정을 연결하고 드롭다운에서 Qwen 2.5 Coder 모델을 선택한 뒤
00:04:49챌린지를 다시 시도했습니다.
00:04:52이런 도움을 주었음에도 불구하고, Qwen은 첫 시도에 성공적인 프로젝트를 만들지 못했습니다.
00:04:57Swift 모델을 정확하게 설정하는 데 문제가 있었기 때문이죠.
00:05:02이제 새로운 AI 어시스턴트 기능을 사용하면, 이러한 문제들을 모두 하이라이트한 다음
00:05:07어시스턴트에게 선택한 모든 문제에 대한 수정안을 한꺼번에 생성하도록 시킬 수 있습니다.
00:05:12결국 몇 차례의 수정을 거친 끝에 작동하는 Dogtinder 앱을 얻었지만,
00:05:16솔직히 결과물은 상당히 실망스러웠습니다.
00:05:23Dog CEO API에서 이미지를 불러오지도 못했고, 전체적인 UI도
00:05:29매우 원시적이고 전혀 흥미롭지 않았습니다.
00:05:32게다가 매칭 섹션에 어떤 매칭도 표시되지 않는 버그까지 있었습니다.
00:05:37안타깝게도 Qwen은 Xcode 앱 챌린지에서 완전히 실패했습니다.
00:05:42다음으로 뒤에서 두 번째인 모델은 Grok의 Grok Code Fast 모델입니다.
00:05:48이 모델은 VS Code의 Copilot 확장 프로그램을 통해 시도해 보았는데, 이번에도 역시
00:05:53완전한 Swift 프로젝트 패키지에 필요한 모든 프로젝트 파일을
00:05:59생성하지 못하는 문제에 부딪혔습니다.
00:06:02대신 파일을 수동으로 복사하는 방법을 알려주더군요.
00:06:06그래서 다시 Xcode의 AI 어시스턴트에서 OpenRouter를 통해
00:06:12Grok 모델을 호출하는 방식으로 돌아가야 했습니다.
00:06:14Grok 역시 몇 가지 문제에 직면했고, 남은 오류를 해결하기 위해
00:06:19두 번 정도 수정을 요청해야 했습니다.
00:06:20하지만 그 과정을 거친 후에는 앱을 성공적으로 완성할 수 있었습니다.
00:06:23첫인상만 보자면, Grok의 디자인 감각은 처참했습니다.
00:06:27디자인이 전혀 매력적이지 않았고, 매칭된 결과를
00:06:32볼 수 있는 섹션조차 없었습니다.
00:06:33Grok을 Qwen보다 높게 평가한 유일한 이유는 적어도 기능적인 면에서는
00:06:38채팅 기능을 포함해 모든 것이 작동했기 때문입니다. 하지만 솔직히 말해서
00:06:44둘 다 성능이 형편없었다는 점은 비슷합니다.
00:06:48이 앱에서 흥미롭거나 시각적으로 만족스러운 부분은 전혀 없었습니다.
00:06:51따라서 Grok이 챌린지에 실패했다고 보긴 어렵지만, 턱걸이 수준의
00:06:57최하위 합격점을 주고 싶네요.
00:06:58리더보드의 다음 순위는 Kimi의 최신 모델인 Kimi K2.5입니다.
00:07:04Kimi 역시 Qwen과 똑같은 문제가 있었는데, 자체 CLI를 사용했을 때
00:07:08프로젝트 파일은 생성했지만 열리지가 않았습니다.
00:07:11CLI를 통해 수정을 시도한 후에도 문제는 해결되지 않았습니다.
00:07:15그래서 Kimi 테스트도 마찬가지로 OpenRouter를 통한 Kimi K2 모델과
00:07:20Xcode의 내장 AI 어시스턴트 기능을 병행해서 사용했습니다.
00:07:23Kimi의 성능은 Qwen이나 Grok과 비슷했는데, 첫 시도에
00:07:29챌린지를 완수하지 못했기 때문입니다.
00:07:31남은 문제들을 해결하기 위해 다시 프롬프트를 입력해야 했습니다.
00:07:34하지만 단 한 번의 수정만으로 Kimi는 최종 결과물을 만들어냈습니다.
00:07:39이 버전은 Qwen이나 Grok보다 한 단계 진보한 모습이었는데, 적어도 이제는
00:07:44진짜 틴더 같은 느낌의 앱이 되었기 때문입니다.
00:07:47세련된 좌우 스와이프 애니메이션과 함께 양옆에 'Like'와 'Nope' 스티커가 붙었고,
00:07:53매칭이 됐을 때 화려한 팝업창도 띄워주었습니다.
00:07:57하지만 애니메이션이 매우 불안정하고 정교하지 못했습니다.
00:08:00이미지가 화면 밖 어딘가에 떠 있어서 전혀 보이지 않을 때도 있었죠.
00:08:05그래도 Kimi는 매칭된 정보를 제대로 저장할 수 있었습니다.
00:08:08매칭 목록을 확인하고 그중 하나를 선택해 특정 강아지와
00:08:12채팅을 시작할 수 있는 섹션이 실제로 구현되었습니다.
00:08:14이것만으로도 Qwen과 Grok에 비하면 엄청난 발전입니다.
00:08:18하지만 나중에 영상에서 보실 다른 사례들과 비교해 본다면,
00:08:22여전히 기대치에 못 미치는 결과라고 할 수 있습니다.
00:08:25그게 제가 Kimi에게 리더보드에서 비교적 낮은 순위를 준 이유입니다.
00:08:29다음은 Gemini 1.5 Pro입니다.
00:08:31이 모델은 흥미로운 점이, 자체 CLI를 사용했을 때와
00:08:36Xcode AI 어시스턴트를 사용했을 때의 결과가 완전히 달랐다는 것입니다.
00:08:41먼저 Gemini CLI를 사용했을 때의 결과를 살펴보죠.
00:08:45CLI상에서는 모델이 아직 프리뷰 모드라고 명시되어 있습니다.
00:08:49아마 그게 핵심적인 문제였을 수도 있겠네요.
00:08:50다른 모델과 똑같은 프롬프트를 입력했음에도 불구하고,
00:08:55결국 프로젝트 파일을 생성해내지 못했습니다.
00:08:59Xcode 프로젝트 파일을 만들려면 먼저 프로젝트 세부 사항이 담긴 YAML 파일을 만들고
00:09:04CodeGen CLI 명령어를 사용하여 생성해야 합니다.
00:09:09그런데 웬일인지 일부 모델은 이를 거부하거나 방법을 잘 모르는 듯했습니다.
00:09:14그럼에도 불구하고 Gemini에게 파일을 만들라고 구체적으로 요청하니 실행해 주었습니다.
00:09:18저는 그저 CodeGen 명령어를 실행할 수 있는 권한만 주면 됐죠.
00:09:22프로젝트를 열었을 때 에셋 오류가 발생했지만,
00:09:25Gemini가 빠르게 해결해 주었습니다.
00:09:28그 문제가 해결되자 드디어 앱이 컴파일되었습니다.
00:09:31하지만 결과는 놀라울 정도로 엉망이었습니다.
00:09:35완전히 망가져 있었죠.
00:09:37매칭 시스템은 제대로 작동하지 않았고 모든 기능에 버그가 가득했습니다.
00:09:41이 시점에서 저는 Gemini에게 불합격 점수를 주려고 했습니다.
00:09:45하지만 호기심에 Gemini에게 한 번 더 기회를 주기로 하고, OpenRouter를 통해
00:09:50Xcode 전용 AI 어시스턴트에서 Gemini 1.5 Pro를 돌려보았습니다.
00:09:56그러자 이번에는 단 한 번에 성공했습니다.
00:10:01성공했을 뿐만 아니라, 앱의 퀄리티가 놀라울 정도로 훌륭했습니다.
00:10:04디자인도 아주 멋졌고요.
00:10:06모든 기능이 제 자리를 잡고 있었습니다.
00:10:08심지어 상단에 귀여운 로고까지 추가해 주었더군요.
00:10:10솔직히 이 버전의 앱에서는 흠잡을 데가 전혀 없었습니다.
00:10:14같은 모델에 같은 프롬프트를 넣었는데, 어떤 AI 코딩 도구를 사용하느냐에 따라
00:10:20이렇게나 극명하게 다른 결과가 나온다는 사실이 좀 당혹스럽긴 합니다.
00:10:24어찌 됐든, Xcode 도구를 통해 Gemini가 보여준 결과물은
00:10:29매우 인상적이었고, 심지어 첫 시도에 완성했다는 점을 강조하고 싶네요.
00:10:32최종 결과물이 상당히 훌륭했기 때문에
00:10:37Gemini를 리더보드 상단에 배치했습니다.
00:10:38자, 리더보드의 다음 순위는 GPT-4o(5.3) Codec입니다.
00:10:43OpenAI에는 자체 Codec 앱이 있기 때문에, 그들의 전용 앱에서
00:10:48챌린지를 진행하기로 했습니다.
00:10:49이전 모델들과 달리, GPT-4o는 첫 시도에 실제로 작동하는
00:10:55최종 결과물을 만들어낼 수 있었습니다.
00:10:58이것만으로도 큰 발전이라고 할 수 있죠.
00:11:00하지만 앱 자체는 그다지 흥미롭지 않았습니다.
00:11:03매우 단조로운 파란색 톤의 테마를 가지고 있었거든요.
00:11:06가장 거슬렸던 문제는 이미지의 가로 폭을 앱 프레임 안에
00:11:11맞추지 못했다는 점입니다.
00:11:13어떤 강아지 사진은 컨테이너가 너무 길게 늘어져서
00:11:18앱의 경계 밖으로 벗어나 버리기도 했습니다.
00:11:20이것은 Codec이 제대로 처리하지 못한 큰 디자인적 결함입니다.
00:11:25그래도 앱 자체는 필요한 모든 UI 요소를 갖추고 잘 작동했습니다.
00:11:29강아지와 대화할 수 있는 매칭 섹션도 제대로 구현되어 있었고요.
00:11:34GPT-4o에 높은 점수를 준 이유는, 별도의 도움이나
00:11:40사전 설정 없이도 전체 Swift 프로젝트 패키지를 한 번에 생성해낸
00:11:46최초의 모델이었기 때문입니다.
00:11:50전반적으로 나쁘진 않았지만, 그렇다고 특별할 것도 없었습니다.
00:11:54드디어 리더보드의 영광스러운 1위입니다.
00:11:57어떤 모델일지 잠시 추측해 볼 시간을 드릴게요.
00:12:01네, 우리 모두가 예상하는 바로 그 모델입니다.
00:12:04바로 Claude 3.5 Opus인데, 시작부터 이번 챌린지를 완벽하게 압도했습니다.
00:12:11다른 모델들과 동일한 프롬프트를 주되, 자체 Claude Code CLI 도구를 사용했고
00:12:17필요한 권한만 승인해 주었습니다.
00:12:20그러자 모델이 제가 미리 프로젝트를 만들 필요도 없이, 완전히 작동하는
00:12:27Xcode 프로젝트 파일을 포함한 모든 과정을 스스로 해냈습니다.
00:12:29그뿐만 아니라, 앱 자체가 정말 아름다웠습니다.
00:12:34디자인 완성도가 높았고요.
00:12:35애니메이션은 부드럽고 자연스러웠습니다.
00:12:37매칭 섹션과 채팅창도 완벽하게 작동했습니다.
00:12:41이 버전에서 유일하게 아쉬웠던 점은 이전 버전의 Gemini가 보여준 것 같은
00:12:46멋진 로고가 없었다는 정도입니다.
00:12:48하지만 그걸 제외하면 모든 모델 중 가장 보기 좋은 버전이었습니다.
00:12:52심지어 이 모든 걸 첫 시도에 해냈죠.
00:12:55Opus의 성능은 다른 모델들과 비교했을 때 정말 경이로운 수준입니다.
00:13:01리더보드의 1위 자격이 충분합니다.
00:13:05하지만 여기서 끝이 아닙니다.
00:13:07여러분께 드리는 작은 보너스가 하나 더 있습니다.
00:13:09아직 리더보드에 등장하지 않은 리뷰할 모델이 하나 더 남았거든요.
00:13:14이 영상을 제작하던 중에 GLM에서 최신 모델인 버전 5를 출시했다는 소식이 들렸는데,
00:13:18이 모델이 코딩 능력에서 Opus 3.5보다 훨씬 높은 점수를 받았다고 호언장담하더군요.
00:13:26당연히 똑같은 Swift 챌린지로 테스트해 보지 않을 수 없었습니다.
00:13:31GLM은 자체 CLI 도구가 없어서, 다시 한번 OpenRouter를 통해
00:13:37GLM 4를 연결하고 Xcode AI 어시스턴트를 사용했습니다.
00:13:41우선, GLM은 첫 시도에 챌린지를 완료하지 못했습니다.
00:13:45여기서 이미 Opus 3.5보다 뒤처진 성능을 보여주죠.
00:13:49게다가 성공적으로 컴파일하기까지 무려 세 번의 버그 수정을 거쳐야 했습니다.
00:13:56그럼 GLM 4의 최종 결과물을 확인해 볼까요?
00:13:59보시다시피, 제 기준으로는 이미 낙제점입니다.
00:14:03어떤 강아지 이미지도 불러오지 못하고 있습니다.
00:14:06스와이프 기능도 전혀 없고요.
00:14:08더 최악인 건, 단 세 마리의 강아지만 보여준 다음
00:14:13더 이상 이용 가능한 강아지가 없다는 메시지를 띄운다는 겁니다.
00:14:15게다가 매칭 섹션에 가봐도 매칭된 항목을 클릭해서
00:14:20채팅창을 열 수가 없습니다.
00:14:23한마디로 전혀 완성되지 않은 상태인 거죠.
00:14:25이런 결과를 바탕으로 GLM을 어디에 배치해야 할까요?
00:14:29안타깝게도 이 결과물은 도저히 받아들일 수 없는 수준이라 Qwen 바로 위인
00:14:36뒤에서 두 번째 자리에 두어야 할 것 같습니다.
00:14:42GLM 4가 Opus 3.5보다 강하다는 주장은 상당히 대담한 소리였네요.
00:14:47물론 이 모델을 다른 코딩 작업에는 써보지 않았고, 어쩌면
00:14:52간단한 웹 개발 프로젝트에서는 Opus 3.5만큼 혹은 그보다 더 잘 작동할 수도 있습니다.
00:14:59하지만 확실한 건 Swift 코딩에는 결코 좋은 모델이 아니라는 점입니다.
00:15:02오늘 우리는 무엇을 배웠나요?
00:15:04AI 혁명이 광속으로 진행 중이지만, 이 모델들에게 Swift 문제는 여전히 실재합니다.
00:15:10Opus 3.5와 GPT-4o는 모델이 충분히 크고 추론 능력이 강하다면,
00:15:18오픈 소스 Swift 데이터의 부족을 극복할 수 있다는 것을 증명했습니다.
00:15:23하지만 Qwen이나 Grok 같은 모델들에게는 앞서 언급한 데이터 격차와 API Drift의
00:15:29영향이 매우 뼈아프게 작용하고 있습니다.
00:15:31또한 Xcode의 새로운 AI 어시스턴트가 Swift 앱 개발에 얼마나 큰 도움이 되는지도 놀라웠습니다.
00:15:36두 가지 Gemini 앱 버전의 차이에서 그 효과를 극명하게 볼 수 있었죠.
00:15:40따라서 iOS 개발자라면 더 나은 결과를 위해 Xcode 내부의 AI 도구를
00:15:46활용하는 것이 큰 도움이 될 것 같습니다.
00:15:47이상으로 리더보드 분석을 마치겠습니다. 유익한 시간이 되셨길 바랍니다.
00:15:51이번 실험은 언어별 특화 모델이 필요할 수도 있겠다는
00:15:55더 넓은 주제의 담론을 던져준 것 같습니다.
00:15:57분명히 많은 모델이 웹 앱이나 자바스크립트,
00:16:03혹은 파이썬 프로젝트에 과도하게 편향되어 있기 때문입니다.
00:16:04특정 분야의 코딩 솔루션을 위해서는 맞춤형 코딩 모델이 필요할지도 모릅니다.
00:16:09이 모든 것에 대해 여러분은 어떻게 생각하시나요?
00:16:11아래 댓글 섹션에 여러분의 의견을 남겨주세요.
00:16:13영상이 즐거우셨다면 영상 하단의 좋아요 버튼을
00:16:18꾹 눌러주시면 큰 힘이 됩니다.
00:16:19저희 채널 구독도 잊지 마시고요.
00:16:22지금까지 Better Stack의 Andris였고, 다음 영상에서 뵙겠습니다.