영어 회화를 녹음하고 다시 들으면서 놓친 단어와 문장을 기록하는 iOS 앱입니다.
짧은 영어 회화 중 바로 이해하지 못했거나 표현하지 못한 부분을 나중에 다시 학습할 수 있도록 돕습니다.
- 대화를 녹음하고 중요한 순간에 핀 표시
- 제목, 주제, 참여자와 함께 녹음 저장
- 녹음 재생, 구간 이동, 0.5배속부터 2배속까지 속도 조절
- 대화에 연결된 단어와 문장 기록
- 화면 모드, 건너뛰기 시간, 자동 잠금 설정
- v1 CoreData 데이터와 녹음 파일을 v2 SwiftData 구조로 자동 이전
두 세대의 앱 코드가 한 저장소에 공존합니다.
CCRecorder/
├── CCRecorder/ # v2 앱 — 현재 개발 대상
├── CCRecorderTests/ # Swift Testing 기반 단위·통합 테스트
├── CCRecorderUITests/ # XCTest 기반 UI 테스트
├── App.xctestplan # Xcode 기본 테스트 플랜
├── CI-Unit.xctestplan # Xcode Cloud 유닛 테스트 플랜
└── Local-UI.xctestplan # 로컬 UI 테스트 플랜
CasualConversation/ # v1 레거시 — 마이그레이션 참고용
Docs/ # 개발 문서와 v2 이미지
새 기능과 수정은 CCRecorder/의 v2 앱을 대상으로 합니다. CasualConversation/은 출시된 v1 데이터 구조를 확인하기 위한 레거시 코드이며 신규 개발 대상이 아닙니다.
- SwiftUI
- SwiftData
- Observation
- AVFAudio (
AVAudioRecorder,AVAudioPlayer,AVAudioSession) - Core Data 기반 v1 저장소 마이그레이션
- Swift Testing, XCTest
- Xcode Cloud
v2는 외부 패키지 없이 단일 Xcode 프로젝트로 구성되어 있습니다. 화면 단위 상태와 동작은 Screen 네임스페이스 아래 Model, ViewModel, Context, View로 분리합니다.
- Xcode 26.2 이상
- iOS 18.0 이상
- 녹음 기능을 실행할 기기의 마이크 권한
CCRecorder/CCRecorder.xcodeproj를 엽니다.App스킴을 선택합니다.- iOS 18.0 이상의 Simulator 또는 실기기를 선택합니다.
- 서명이 필요한 실기기 빌드는 프로젝트의 Development Team을 설정합니다.
- 앱을 실행합니다.
명령행에서 Simulator 빌드만 확인하려면 다음을 실행합니다.
xcodebuild build \
-project CCRecorder/CCRecorder.xcodeproj \
-scheme App \
-configuration Debug \
-destination 'generic/platform=iOS Simulator' \
CODE_SIGNING_ALLOWED=NOXcode Cloud에서는 CI-Unit, 로컬 UI 테스트에서는 Local-UI 플랜을 사용합니다.
# 유닛 테스트
xcodebuild test \
-project CCRecorder/CCRecorder.xcodeproj \
-scheme App \
-testPlan CI-Unit \
-destination 'platform=iOS Simulator,name=iPhone 15 Pro,OS=18.0'
# UI 테스트
xcodebuild test \
-project CCRecorder/CCRecorder.xcodeproj \
-scheme App \
-testPlan Local-UI \
-destination 'platform=iOS Simulator,name=iPhone 15 Pro,OS=18.0'실제 마이크 입력이 필요한 테스트와 CI 운영 기준은 테스트 운영 문서를 참고하세요.
v2는 App Store의 v1과 동일한 Bundle ID(com.pseapplications.CasualConversation)를 유지합니다. 첫 실행 시 기존 CoreData 저장소가 발견되면 다음 데이터를 SwiftData와 v2 녹음 디렉터리로 옮깁니다.
- 대화, 참여자, 핀
- 단어·문장 노트와 대화 연결
Documents/Records의 녹음 파일
마이그레이션 도중 실패하면 v1 원본을 삭제하지 않으며, 완료 플래그가 기록되기 전까지 다음 실행에서 다시 시도할 수 있습니다.
| 버전 | 상태 | 주요 내용 |
|---|---|---|
| 1.1.0 | App Store 배포 중 | 튜토리얼과 녹음 재생 안정화 |
| 1.2.0 | v2 출시 준비 | SwiftUI·SwiftData 기반 재구성, v1 데이터 마이그레이션, 녹음·재생·노트·설정 개선 |
- 앱의 화면과 데이터 구조를 새롭게 구성했습니다.
- 기존 대화, 노트, 녹음 파일을 안전하게 이전합니다.
- 녹음과 재생 제어를 개선하고 재생 속도 및 건너뛰기 설정을 추가했습니다.
- 빈 목록 안내와 오류 처리를 개선했습니다.


