🤖 이 시리즈는 Claude Code(AI)가 작성합니다.
Swift 코드를 한 줄도 써본 적 없어도 괜찮습니다.
macOS 앱이 어떻게 만들어지는지, AI 코딩 도구들이 내부적으로 어떻게 동작하는지 전혀 모르는 상태에서 시작해도 따라올 수 있도록 이 시리즈를 씁니다. 43편에 걸쳐 Swift 언어 기초부터 SwiftUI, macOS 앱 아키텍처, 로컬 데이터베이스, 프로세스 간 통신, 셸 스크립트, Python 브리지, 그리고 Claude Code · Codex CLI · Gemini CLI의 훅(hook) 시스템까지 단계적으로 다룹니다.
이 시리즈는 누구를 위한 것인가
- Python, JavaScript 등 다른 언어 경험은 있지만 Swift와 macOS 개발은 처음인 분
- AI 코딩 에이전트(Claude Code, Codex CLI, Gemini CLI 등)를 쓰고 있는데 내부 구조가 궁금한 분
- macOS 앱을 만들어보고 싶지만 어디서 시작해야 할지 모르는 분
- Xcode를 열어봤지만 무서워서 바로 닫은 분
Objective-C, UIKit, iOS 경험은 전혀 필요 없습니다. 프로그래밍 기초 개념(변수, 함수, 조건문)만 알고 있으면 충분합니다.
43편에서 다루는 기술 스택
| 영역 | 기술 |
|---|---|
| 언어 | Swift 5.9+ |
| UI 프레임워크 | SwiftUI, AppKit |
| 반응형/비동기 | Combine, Swift Concurrency (async/await, actor) |
| 데이터 저장 | SQLite (libsqlite3), UserDefaults, Codable/JSON |
| 프로세스 간 통신 | TCP 소켓, Unix Domain Socket, 길이-접두사 프레이밍 |
| 시스템 프로그래밍 | Shell Script (bash), Python 3, PTY (Pseudo Terminal) |
| 빌드 도구 | XcodeGen, Swift Package Manager |
| macOS 시스템 API | AVFoundation, Apple Events, Accessibility API, ServiceManagement |
| AI CLI 훅 | Claude Code Hook, Codex CLI Hook, Gemini CLI Hook |
전체 목차
1부 — Swift 언어 기초 (10편)
- Swift 소개와 환경 설정 — Xcode 설치부터 첫 줄 실행까지
- 변수·상수·기본 타입 —
let과var, 값을 바꿀 수 있는 것과 없는 것 - 컬렉션 타입 — Array, Dictionary, Set 세 가지 방법
- 제어 흐름 —
guard가if보다 나은 경우 - 함수 — 파라미터 레이블이 두 개인 이유
- 클로저 — 함수를 변수에 담기, 후행 클로저 문법
- 옵셔널 — nil이 런타임 충돌을 일으키지 않는 이유
- 구조체와 클래스 — 값 타입 vs 참조 타입
- 열거형(enum) — 연관값과 패턴 매칭
- 프로토콜과 제네릭 — Swift의 다형성
2부 — Swift 고급 주제 (4편)
- 에러 처리 —
try와catch, Swift가 에러를 타입으로 다루는 방식 - 메모리 관리(ARC) — 순환 참조와
[weak self] - Swift Concurrency 1부 — async/await와 구조화된 동시성
- Swift Concurrency 2부 —
actor와 데이터 경쟁 방지
3부 — SwiftUI (5편)
- SwiftUI 소개 — 선언형 프로그래밍 패러다임
- 상태 관리 1부 —
@State와@Binding - 상태 관리 2부 —
@Observable과 외부 데이터 구독 - 리스트·내비게이션·시트 — 여러 화면 연결하기
- 커스텀 뷰와 애니메이션 — Shape, Path, withAnimation
4부 — macOS 앱 개발 (5편)
- macOS 앱 구조 — iOS와 무엇이 다른가
- 메뉴바 앱 만들기 —
MenuBarExtra와NSStatusItem - AppKit과 SwiftUI 브리지 —
NSViewRepresentable과NSWindowController - XcodeGen과 Swift Package Manager —
.xcodeproj를 git에 올리지 않는 이유 - 권한·샌드박스·배포 — 코드 서명과 엔타이틀먼트
5부 — Foundation과 데이터 저장 (4편)
- Codable — JSON을 Swift 타입으로, 네트워크 응답을 구조체로
- UserDefaults와 설정 저장 — 앱을 껐다 켜도 기억하는 값
- FileManager와 앱 디렉토리 — 파일을 어디에 저장해야 하는가
- SQLite — UserDefaults로 부족할 때, 로컬 관계형 데이터베이스
6부 — 네트워킹과 IPC (3편)
- Combine — 반응형 데이터 스트림, Publisher와 Subscriber
- TCP 소켓과 Unix Domain Socket — 두 프로그램이 대화하는 법
- 길이-접두사 프레이밍과 IPC 프로토콜 설계 — 패킷이 잘리는 문제 해결하기
7부 — 시스템 프로그래밍 (4편)
- Shell Script 기초 — 터미널 자동화의 언어, bash 입문
- Python 브리지 스크립트 패턴 — 복잡한 로직은 Python으로
- PTY: Pseudo Terminal — 터미널을 프로그램 안에 가두기
- (예고) 35편 이후는 8~9부로 이어집니다
8부 — AI CLI 훅 시스템 (4편)
- AI CLI 훅이란 무엇인가 — AI가 행동하기 전에 물어보는 구조
- Claude Code 훅 시스템 — PermissionRequest부터 AskUserQuestion까지
- Codex CLI와 Gemini CLI 훅 — 동일한 철학, 다른 형식
- 훅 기반 승인 프록시 설계 — 정책 엔진과 감사 로그
9부 — macOS 시스템 API (4편)
- AVFoundation — 소리로 이벤트를 알리는 법, 오디오 재생
- Apple Events와 다른 앱 제어 — AppleScript로 터미널 포커스 이동
- Accessibility API와 글로벌 단축키 — 앱이 포커스 없어도 작동하는 단축키
- ServiceManagement와 LaunchAgent — 로그인 시 자동 시작
각 편의 구성 방식
모든 편은 다음 순서로 작성합니다.
- 배경 — 이 기술이 왜 필요한가, 어떤 문제를 해결하는가
- 왜 이렇게 설계됐나 — 다른 언어·도구와 비교하며 Swift/macOS의 선택 이해
- 코드 해설 — 최소한의 예제로 핵심만
- 다른 언어와 비교 — Python·JavaScript 경험자를 위한 대조 박스
- 핵심 요약 — 한 편에서 기억할 것 3~5가지
시작하며
43편은 적지 않은 분량입니다. 한 번에 다 읽으려 하지 않아도 됩니다. 관심 있는 파트부터 골라 읽어도 되고, 처음부터 순서대로 따라와도 됩니다. 각 편은 앞 편을 읽었다는 전제 아래 쓰지만, 필요한 배경 개념은 편 안에서 짧게 다시 짚어줄 것입니다.
다음 글은 1편 — Swift 소개와 환경 설정입니다.
🤖 Generated with Claude Code