본문 바로가기
C.W.K.
Lesson 06 of 06 · published

코딩 에이전트가 애플 플랫폼에서 틀리는 곳

~15 min · platform-map, coding-agents, sdk, verification

Level 0번들 열어본 사람
0 XP0/84 lessons0/17 achievements
0/100 XP to next level100 XP to go0% complete
"제일 위험한 답은 작년에, 다른 플랫폼에서는 맞았던 답이야."

애플 일이 모델한테 유독 어려운 이유

이 가족의 Swift는 한 줄도 빠짐없이 코딩 에이전트가 아빠랑 같이 썼어. 덕분에 가족 사고 기록은 에이전트가 어떻게 틀리는지 보여주는 드물게 솔직한 자료야. 애플 플랫폼에서 기억에 기대면 딱 세 가지 방식으로 당해. 첫째, API가 매년 바뀌고 OS마다 쓸 수 있는 범위가 달라. 둘째, 학습 데이터는 iOS SwiftUI 튜토리얼이랑 Swift 5 시절 코드에 쏠려 있는데, 실제 맥 앱은 아직 AppKit 위에서 돌아가. 셋째, 애플 지식 상당수가 "Signing & Capabilities 열고 팀 골라" 같은 클릭으로 적혀 있어서, 생성되는 프로젝트나 터미널 빌드에선 살아남지 못해.

기록에 남은 실패 다섯 가지

  1. 배달 반사작용. 한 세션이 iOS 마일스톤을 끝내고, 잠긴 폰에 케이블로 설치한 다음, TestFlight는 나중 단계로 적어두고 끝났다고 보고했어. 가족 TestFlight 파이프라인이 생기고 12일이나 지난 뒤였어. 케이블로 설치하니 배포한 기분이 들었겠지만, 그건 빌드 확인일 뿐이었어.
  2. 남지 않는 클릭. Xcode UI에서 개발 팀을 골라두면, 다음 xcodegen이 프로젝트를 다시 만들 때 소리 없이 날아가. 인수인계 메모 하나는 "App Store Connect 레코드를 만들어"라고만 적었어. 아카이브가 식별자를 이미 등록했다는 말은 빠져 있었지. 그래서 다음 작업은 Certificates, Identifiers & Profiles로 향했다가 아무 설명 없이 거절당했어. 그날 오후에만 앱 세 개가 우회용 식별자를 새로 지어냈고. 아카이브가 도는 걸 본 사람이 그걸 못 본 사람한테 남긴 지시였던 거지.
  3. 플랫폼 옮겨 심기. iOS SwiftUI에 받아쓰기 API가 있으니까 watchOS에도 있겠지. 없어. watchOS SDK가 사용 불가로 표시해뒀고, 제대로 알 방법은 SDK 인터페이스 파일을 읽는 것뿐이었어.
  4. 아무것도 안 하고 성공하는 명령. security find-identity -v는 자체 서명 인증서를 숨겨. 그래서 빌드 스크립트가 인증서가 없다고 결론 냈어. 대충 짐작한 패턴으로 pkill -f를 돌렸더니 아무 프로세스도 안 잡히고 조용히 끝났어. 그런데 보고는 "죽였더니 launchd가 다시 띄웠다"로 올라갔어.
  5. 플랫폼에 대한 단정. "워치에서 받아쓰기 언어를 바꾸는 방법은 이 화면뿐"이라는 주장이 버튼으로 출시됐어. 진짜 전환 방법은 시스템 받아쓰기 화면에서 위로 스와이프하는 거였어. Y에 닿는 방법은 X뿐이라는 주장은 X가 된다고 해서 증명되지 않아.

이걸 막아주는 습관

  • 기억 말고 깔려 있는 SDK를 읽어. .swiftinterface 파일의 가용성 표시가 네 Xcode로 플랫폼마다 뭘 부를 수 있는지 알려주는 진짜 기준이야.
  • 설계하기 전에 찔러봐. "플랫폼이 X를 해주냐" 같은 질문은 대부분 논쟁보다 열 줄짜리 프로그램이 더 빨리 끝내줘.
  • 실제로 확인한 사실을 콕 집어 말해. 업로드됨, 처리됨, 배정됨, 설치됨은 서로 다른 네 가지 사실이야. 그중 참인 걸 말해.
  • 즉흥보다 파이프라인. 함정을 미리 막아둔 가족 스크립트가 즉석에서 지어낸 자신만만한 명령 한 줄보다 나아.

Code

플랫폼에 API가 있는지 기억 말고 깔린 SDK한테 물어봐·bash
SDK=$(xcrun --sdk watchos --show-sdk-path)
IFACE="$SDK/System/Library/Frameworks/SwiftUI.framework/Modules/SwiftUI.swiftmodule/arm64e-apple-watchos.swiftinterface"
grep -n -B4 'public struct TextInputDictationBehavior' "$IFACE"
# @available(iOS 17.0, visionOS 1.0, *)
# @available(macOS, unavailable)
# @available(watchOS, unavailable)     <- the answer, straight from the SDK you build with
# @available(tvOS, unavailable)
# public struct TextInputDictationBehavior : Swift.Equatable, Swift.Sendable {

External links

Exercise

iOS에 있다고 믿는 SwiftUI나 UIKit API 두 개를 골라. 코드 블록의 SDK 인터페이스 grep으로 watchOS랑 macOS에서 쓸 수 있는지 확인해봐. 다음으로, 최근에 확인 없이 되풀이한 애플 플랫폼 주장 하나를 적고, 그 주장을 판가름할 열 줄짜리 프로브나 SDK 조회 방법을 같이 적어.
Hint
SwiftUI.framework 대신 궁금한 프레임워크 이름을 넣고, --sdk 뒤 플랫폼(macosx, iphoneos, watchos)을 바꿔. 인터페이스 파일에 심볼이 아예 안 나오면, 그것도 답이야.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인 — 댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.