# Show GN: [CodeStudy] 일부러 불편하게 만든 Swift 학습 앱 (AI 튜터)

> Clean Markdown view of GeekNews topic #28806. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=28806](https://news.hada.io/topic?id=28806)
- GeekNews Markdown: [https://news.hada.io/topic/28806.md](https://news.hada.io/topic/28806.md)
- Type: show
- Author: [kirri1124](https://news.hada.io/@kirri1124)
- Published: 2026-04-23T11:27:47+09:00
- Updated: 2026-04-23T11:27:47+09:00
- Original source: [apps.apple.com](https://apps.apple.com/kr/app/codestudy/id6762127373)
- Points: 2
- Comments: 1

## Topic Body

안녕하세요.   
개인 프로젝트로 만든 iOS 학습 앱을 소개합니다.  
  
#### 만든 계기   
ChatGPT나 Claude에 Swift 개념을 물으면 깔끔한 답이 바로 나옵니다.  
그런데 며칠 뒤 같은 개념이 또 나왔을 때 머릿속이 비어있는 경험을 반복하면서, "답을 받는 학습"과 "답을 찾는 학습"이 다르다는 걸 새삼 느꼈습니다.  
  
그래서 **소크라테스식 교수법** 즉, 답을 주는 대신 질문을 던져서 스스로 깨닫게 하는 방식을 AI 튜터로 구현해봤습니다.   
사실, 일부러 불편하게 만든 앱입니다.  
  
#### 어떤 앱인가  
  
- **50개의 Swift 개념** (입문 → 고급, async/await, Actor, Associated Types 등 포함)  
- 유저가 질문해도 **AI는 답을 주지 않습니다.** 대신 역질문으로 사고를 유도  
- **매일 한 개념**, 대화를 통해 "마스터리" 달성하는 구조  
- 대화 중 **Swift 코드를 직접 입력**할 수 있는 내장 에디터 (구문 강조 + 자동 들여쓰기)  
- 학습 기록(잔디), 위젯, 다크모드  
  
#### 기술 스택  
- **iOS**: SwiftUI + SwiftData, MVVM + @Observable, 외부 의존성 0   
- **Backend**: Node.js on Vercel Functions (SSE 스트리밍)  
- **LLM**: Claude Haiku 4.5 via OpenRouter. provider 추상화해서 Gemini/OpenAI 교체 가능  
- **커리큘럼**: JSON 기반 50개 concept, 서버 사이드 프롬프트 엔지니어링으로 "답 대신 질문" 제약 강제  
  
#### 현재 상태  
- **회원가입/로그인 없음** — 지금은 기기 로컬 저장만, 익명 사용  
- **광고 없음** — 학습 앱 톤과 맞지 않다고 봐서  
- **결제 없음** — 아직 베이스 검증 단계. 추후 구독 모델 검토 중  
  
#### 솔직한 한계 / 고민 중  
- **출근길 사용이 버겁다**는 피드백이 있어, 세션 길이를 예측 가능하게 만드는 "5분 모드"를 설계 중입니다  
- **첫 응답 p99가 약 9초** (OpenRouter 관측치). prompt caching 적용으로 다음 버전에서 3~4초 목표  
- 사용자당 토큰 비용 **$0.005/DAU** 수준. 스케일링 시 재검토 필요  
  
#### 링크  
 - App Store: https://apps.apple.com/kr/app/codestudy/id6762127373  
  
---  
출시 3일차라 데이터가 많지 않습니다.   
특히 "답 안 주는 AI가 오히려 답답하지 않나?"는 구조적 질문에 대한 의견이 궁금합니다.   
써보시고 피드백 주시면 감사하겠습니다!  
---

## Comments



### Comment 56118

- Author: kirri1124
- Created: 2026-04-23T11:31:01+09:00
- Points: 2

제가 만들면서 가장 놀란 건, "답 안 주는 AI"를 만드려고 system prompt에 넣은 제약([MASTERY] 토큰 기반 마스터리 판정)을 LLM이 자꾸 깨뜨리려해서 프롬프트 엔지니어링에 생각보다 많은 시간을 썼다는 점입니다.  
  
Claude Haiku보다 Gemini Flash가 이 제약을 더 잘 지켰는데, 반대로 질문의 깊이는 Claude가 좋았어요. 지금은 Claude + prompt 정밀화 조합입니다.  
  
혹시 비슷한 "LLM을 억제하는" 프롬프트 설계 경험 있으신 분 계시면 노하우 공유 부탁드려요 🙏
