복사한 것들이 하나씩 쌓이고 나중에 골라 쓰는 macOS 클립보드 매니저입니다.
수익화를 염두에 두고 만들었습니다. 첫날 이미 가격 이야기가 나왔고 사흘 뒤에 어떤 모델로 팔지 정했으니, 취미로 만들다 얼떨결에 올린 쪽은 아닙니다. 그런데 만들고 나니 제가 제일 많이 쓰고 있습니다. 그 점이 제일 만족스럽습니다.
가장 좋았던 지점은 AI와 작업할 때였습니다. 프롬프트를 여러 개 굴리거나 결과를 클립보드로 뱉으라고 시켜두면 차곡차곡 쌓이고, 그 사이 다른 일을 하고 있어도 놓치지 않습니다.
쌓인 내용을 고칠 수 있습니다. 대부분의 클립보드 매니저가 읽기 전용 기록인데, 여기서는 항목을 열어 바로 수정하고 ⌘S로 저장합니다. 라인 넘버가 있고 ⌘F 찾기와 ⌘R 바꾸기가 됩니다. 복사한 걸 에디터에 옮겨 고치고 다시 복사하는 왕복이 사라지는 게 생각보다 큽니다.
개발하다 자잘하게 필요한 것들도 안에 넣었습니다. JSON·SQL·Mongo 포맷, XML↔YAML, JWT 디코드, Base64/URL 인코딩, 유닉스 타임스탬프, SHA-256, AES, 카드 두 개 골라 ⌘D로 줄 단위 diff. 브라우저 탭 열기 귀찮아서 만든 것들입니다.
기본 상태에서 시스템 권한을 하나도 요청하지 않습니다. 데이터는 전부 암호화되어 로컬에만 저장되고 분석·추적·서버가 없습니다.
24일 기록
클로드코드로 만들었습니다. 대화 기록이 남아 있어서 열어봤더니 24일간 310건이었고, 성격을 세어보니 결함 지적 28건, 제안을 거절하거나 되돌린 게 15건이었습니다. 시간순으로 정리하면 이렇습니다.
7/5 (30건) — 첫 지시가 "요구사항을 나한테 물어가며 구체화해"였습니다. 그날 안에 이름·번들ID를 정하고, base64·뷰티파이를 넣고, ⌘⏎ 상세보기를 붙였습니다. "$4.99 앱스토어 판매 아니냐"는 이야기도 이날 나왔습니다. 그리고 자동 붙여넣기 기능을 뺐습니다. "의도치 않은 붙여넣기가 될 것 같아 빼자"
7/6~7/7 — "클립보드 내용은 어디에 저장돼?"라고 물어본 게 로컬 암호화 도입으로 이어졌습니다. 엑셀에서 복사하면 이미지로 인식되는 버그를 잡았고, ⌘⇧V 단축키가 먹통인 걸 이틀에 걸쳐 추적했습니다. log show를 직접 떠서 로그를 넘기는 식이었습니다.
7/8 — 어떤 모델로 팔지 확정했습니다. 처음부터 유료로 받을지, 무료로 풀고 안에서 결제받을지를 놓고 "그냥 처음부터 유료로만 팔까? 30일 사용만 무료 이렇게" → 30일 체험 쪽으로 정했습니다. 그리고 사흘 전에 뺐던 자동 붙여넣기를 되살렸습니다. 직접 쓰다 보니 "선택했을 때 바로 안 붙여지는 게 불편"했기 때문입니다.
7/11 — 스니펫 기능을 만들었다가 죽였습니다. "사용성이 쉣인데" → "개선방향 제안해봐, 구리면 기능제거로 간다" → "아냐 제거해". 만든 걸 버리는 판단이 제일 어려웠습니다.
7/12~7/16 — 라이선스 배포를 Lemon Squeezy·PayPal까지 검토하다 앱스토어로 정리했습니다. 이후는 주소 검증 실패, 은행 코드, W-8BEN, 사업자 등록 고민의 연속이었습니다. 코드 짜는 시간보다 이쪽이 길었습니다.
7/19 — 이미 심사에 제출한 뒤였는데, 런처 스크린샷을 보다가 앱 이름이 DevClip-AppStore로 설치된 걸 발견했습니다. 제출을 취소하고 다시 빌드했습니다.
7/25 — 리젝. Guideline 2.4.5 (Performance: Hardware Compatibility)였습니다.
리젝, 그리고 24일 만에 닫힌 판단
리젝 사유가 된 게 하필 그 기능이었습니다. 7월 5일에 위험하다고 직접 뺐다가, 사흘 뒤 쓰다 보니 불편해서 되살린 '바로 붙여넣기'. 손쉬운 사용(Accessibility) 권한을 쓰는데 Apple은 이를 "접근성 목적이 아닌 사용"으로 봤습니다.
기능을 빼면 간단했지만, 이미 한 번 뺐다가 필요해서 되살린 기능이라 이번엔 지키기로 했습니다. 대신 요청 방식을 바꿨습니다.
원래도 기본 꺼짐이었고 사용자가 직접 켤 때만 요청했습니다. 문제는 심사자가 그 사실을 확인할 방법이 화면 어디에도 없었다는 것이었습니다. 그래서 토글을 켜면 시스템 권한창으로 바로 가지 않고, 앱 안에서 먼저 설명하는 창을 띄우도록 했습니다. "항목을 고른 직후 ⌘V 한 번을 보내는 데에만 쓰며 다른 앱의 내용을 읽지 않습니다" 같은 내용이고, "계속"을 눌러야만 시스템 권한창으로 넘어갑니다.
심사 메모에 "설정 > 일반에서 직접 눌러보시면 확인됩니다"라고 재현 경로를 적어 재제출했고 통과했습니다.
"이미 그렇게 동작한다"와 "사용자가 그걸 확인할 수 있다"는 다른 문제더군요.
AI와 일한 방식
코드는 거의 직접 쓰지 않았습니다. 프롬프트로 구현되어 나온 걸 읽고 판단하는 자리에 있었고, 엔지니어이긴 한데 이번엔 사실상 기획과 QA에 전념한 셈입니다.
잘 되기만 한 건 아닙니다. 이미지 드래그가 안 되는 걸 세 번이나 추측으로 고쳤고 그때마다 확인은 제 몫이었습니다. "테스트를 좀 해라, 내가 일일이 확인 안 하게" 하고 나서야 실제 데이터로 검증한 뒤 고치는 방식으로 바뀌었습니다. 그 뒤로는 손으로 찾은 버그를 그때마다 테스트로 고정시켰고, 지금 테스트 270개 중 상당수가 그렇게 생긴 것들입니다.
최종적으로 커밋 87개, Swift 약 1만 줄에 테스트 3,700줄입니다.
30일 동안 전 기능 무료입니다. 이후로도 기본 기능은 계속 무료이고, Pro는 구독이 아니라 일시불입니다.