본문으로 건너뛰기

Claude Code로 macOS 앱 'EazeeSwitch'를 구축하며 배운 AI 코딩의 한계와 교훈

Claude Code를 활용해 macOS 개발 환경 런처를 제작한 개발자가 AI가 작성한 데이터 영속성 로직의 취약점을 발견하고 이를 보완하기 위한 방어적 설계 패턴을 공유했다.

커뮤니티 반응

작성자의 실전 경험과 구체적인 방어 로직에 대해 긍정적인 반응이며, 특히 AI 코딩의 맹점을 짚어준 점에 대해 공감하는 분위기이다.

주요 논점

01중립다수

AI는 도구로서 매우 강력하지만 데이터 영속성처럼 중요한 로직에서는 인간의 검토와 방어적 설계가 반드시 병행되어야 한다.

합의점 vs 논쟁점

합의점

  • AI는 '행복한 경로' 위주로 코드를 작성하므로 예외 상황 처리는 개발자의 몫이다.
  • AppleScript와 같은 비주류 언어 자동화에 AI가 매우 유용하다.

논쟁점

  • AI가 작성한 코드의 비중(65%)과 인간의 편집 비중(100%) 사이에서 실제 개발 주도권에 대한 논의가 있을 수 있다.

실용적 조언

  • 데이터 저장 시 파일이 비어버리는 것을 방지하기 위해 저장 전 리스트가 비어있는지 확인하는 가드를 반드시 추가하라.
  • 중요 데이터 저장 전 백업 파일을 먼저 생성하는 로테이션 패턴을 적용하라.
  • 삭제 로직은 ID 기반 검색보다 인덱스 기반 매칭을 사용하여 의도치 않은 다중 삭제를 방지하라.

섹션별 상세

작성자는 Claude Code를 활용해 아키텍처 설계부터 모듈 생성, 버그 수정까지 반복하는 워크플로를 구축했다. SwiftUI 레이아웃이나 복잡한 AppleScript 브릿지 코드 작성에서 AI는 90% 이상의 정확도를 보이며 개발 시간을 단축시켰다. 특히 '특정 프로젝트가 다른 스페이스에서 실행 중인지 감지하는 방법'과 같은 구체적인 구현 질문에 대해 AXRaise와 번들 식별자 매칭이라는 정확한 해법을 제시했다. 결과적으로 약 80시간의 개발 시간 중 30시간을 AI의 도움을 받아 효율적으로 사용했다.
AI가 작성한 초기 영속성 레이어 코드에서 심각한 데이터 손실 버그가 발생할 수 있음이 확인됐다. 퍼지 검색 로직과 삭제 로직이 결합되면서 사용자가 의도하지 않은 프로젝트가 선택되어 삭제될 수 있는 구조적 결함이 발견됐다. AI는 '행복한 경로(Happy Path)' 즉, 사용자가 항상 올바르게 조작한다는 전제하에 코드를 최적화하기 때문에 이러한 예외 상황을 스스로 예측하지 못했다. 이는 AI가 생성한 코드를 비판 없이 수용할 때 발생할 수 있는 실무적 위험성을 시사한다.
swift
func delete(_ project: Project) {
    projects.removeAll { $0.id == project.id }
    save()
}

func save() throws {
    let data = try JSONEncoder().encode(projects)
    try data.write(to: configURL, options: .atomic)
}

AI가 처음 제안한 기본적인 데이터 삭제 및 저장 로직으로, 예외 상황에 대한 방어 기제가 부족한 예시

데이터 손실을 막기 위해 작성자는 AI가 제안하지 않은 다중 방어 계층(Layered Defense)을 직접 도입했다. 삭제 작업을 조건부 술어가 아닌 인덱스 기반으로 수행하여 연쇄 삭제를 방지하고, 데이터 크기가 급격히 줄어들 경우 저장을 거부하는 로직을 추가했다. 또한 매 저장 시 백업 파일을 순환 생성하고 변경 사항에 대한 감사 로그(Audit Log)를 유지하는 방식을 적용했다. 이러한 패턴은 AI에게 '사용자가 할 수 있는 최악의 실수는 무엇인가?'라고 명시적으로 질문했을 때 비로소 보완될 수 있었다.
swift
func save() throws {
    // 1. Heal duplicates before writing
    // 2. Refuse suspicious shrinkage
    // 3. Refuse empty saves without explicit force
    // 4. Rotate backup BEFORE overwriting main
    // 5. Atomic write
    // 6. Update last-known-good count
}

데이터 손실을 방지하기 위해 작성자가 직접 설계한 다중 방어 계층 저장 로직

용어 해설

애플스크립트(AppleScript)
macOS에서 애플리케이션 간의 통신과 자동화를 위해 사용하는 스크립트 언어입니다. 터미널 탭 생성이나 앱 제어와 같은 시스템 수준의 자동화 구현에 필수적이지만 문법이 까다로워 AI의 도움을 받기 유용한 영역입니다.
원자적 쓰기(Atomic Write)
데이터를 파일에 저장할 때 쓰기 작업이 완전히 성공하거나 아니면 아예 수행되지 않도록 보장하는 방식입니다. 파일 저장 중 오류가 발생했을 때 기존 데이터가 손상되거나 파일이 비어버리는 현상을 방지하는 핵심적인 데이터 보호 기법입니다.
접근성 API(Accessibility API)
장애가 있는 사용자를 보조하기 위해 운영체제가 제공하는 인터페이스이나, 개발자들은 이를 활용해 다른 앱의 윈도우 위치를 조정하거나 제어하는 기능을 구현합니다. 본 프로젝트에서는 윈도우 타일링 기능을 위해 사용되었습니다.

언급된 도구

Claude Code추천

기본적인 페어 프로그래밍 및 모듈 생성, 버그 수정

SwiftUI추천

앱 UI 레이아웃 구현

언급된 리소스

AI 분석 전체 내용 보기

AI 요약 · 북마크 · 개인 피드 설정 — 무료

출처 · 인용 안내

원문 발행 2026. 04. 29.수집 2026. 04. 29.출처 타입 REDDIT

인용 시 "요약 출처: AI Trends (aitrends.kr)"를 표기하고, 사실 확인은 원문 보기 기준으로 진행해 주세요. 자세한 기준은 운영 정책을 참고해 주세요.