로컬 패키지와 기능 모듈
더 빠른 빌드와 격리를 위해 기능을 로컬 Swift 패키지로 추출합니다.
로컬 패키지와 기능 모듈은(는) CoddyKit의 무료 Swift Academy 강의입니다. 이것은 4개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Swift Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Swift Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
기능 모듈을 사용하는 이유
앱을 로컬 패키지로 나누면 캡슐화를 강제하고 증분 빌드 속도를 높이며 팀의 병렬 개발을 가능하게 합니다.
// Without modules: one giant target recompiles everything
// With modules: changes to FeatureA only recompile FeatureA로컬 패키지 생성
Xcode 프로젝트 옆에 디렉터리를 만들고 그 안에서 swift package init을 실행하십시오.
mkdir Features/UserProfile
cd Features/UserProfile
swift package init --name UserProfile --type libraryXcode 프로젝트에 추가
로컬 패키지 디렉터리를 Xcode의 프로젝트 탐색기로 드래그하십시오. Xcode가 자동으로 이를 SPM 패키지로 인식합니다.
// In Xcode:
// File → Add Package Dependencies → Add Local...
// Select the package directory로컬 패키지 참조
앱의 Package.swift에서 또는 Xcode를 통해 .package(path:)로 로컬 패키지를 참조하십시오.
.package(path: "../Features/UserProfile"),
// In the target:
.product(name: "UserProfile", package: "UserProfile")공개 API 표면
로컬 패키지의 public 및 open 선언만 앱에서 접근할 수 있습니다. 접근 제어를 사용하여 모듈 경계를 정의하십시오.
// UserProfile/Sources/UserProfile/ProfileView.swift
public struct ProfileView: View {
public init() {}
public var body: some View { Text("Profile") }
}내부 구현
모든 internal 유형은 모듈 외부에서 보이지 않으므로 캡슐화가 자동으로 적용됩니다.
// Only visible within UserProfile module:
final class ProfileCache { ... }
struct ProfileMapper { ... }기능 모듈 구조
각 기능 모듈은 내부에 자체 도메인, 데이터, 프레젠테이션 계층을 소유합니다.
// UserProfile/
// ├── Sources/UserProfile/
// │ ├── Domain/ (entities, use cases, protocols)
// │ ├── Data/ (repositories)
// │ └── Presentation/ (views, view models)
// └── Tests/UserProfileTests/공유 코어 모듈
기능 모듈에서 가져오는 공유 모듈에 네트워킹, 분석, 설계 시스템과 같은 여러 기능에 걸친 관심사를 추출하십시오.
// CoreNetwork package
// CoreDesign package
// Both imported by FeatureA and FeatureB의존성 그래프
기능 모듈은 서로 직접 의존해서는 안 됩니다. 결합을 피하려면 공유 의존성이 코어 모듈을 통해 흐르도록 하십시오.
// GOOD:
// FeatureA → CoreNetwork
// FeatureB → CoreNetwork
// BAD:
// FeatureA → FeatureB (tight coupling)빌드 시간의 장점
모듈 경계가 명확하면 소스 파일이 변경될 때 Xcode가 영향을 받은 모듈만 다시 빌드합니다.
// Change in UserProfile → only UserProfile recompiles
// App target links the new binary → fast incremental build기능 모듈 테스트
각 기능 모듈에는 자체 테스트 대상이 있으므로 테스트를 병렬로 실행하고 CI 시간을 단축할 수 있습니다.
// Run all tests:
swift test --package-path Features/UserProfile
// Or let Xcode run them as part of the main test plan빠른 확인
로컬 스위프트 패키지의 선언을 앱 대상에서 사용할 수 있으려면 어떤 접근 수준이 필요합니까?
학습 내용 정리
swift package init으로 로컬 기능 패키지를 생성하고, .package(path:)를 통해 참조하며, public 유형만 노출하십시오. 공유 유틸리티는 코어 모듈로 추출하십시오. 기능 모듈은 서로 의존해서는 안 됩니다. 모듈 경계를 명확히 하면 증분 빌드 시간이 크게 줄어듭니다.
AI 튜터와 함께 Swift을(를) 배우세요 — 무료
브라우저에서 실제 코드를 작성하고 실행하며, 24/7 AI 튜터로부터 즉각적인 도움을 받고, 웹이나 앱에서 중단한 부분부터 계속 학습하세요.
- 코스
- 122
- 레슨
- 409
자주 묻는 질문
“로컬 패키지와 기능 모듈” 강의는 무료인가요?
네 — “로컬 패키지와 기능 모듈” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Swift Academy 강의 전체를 잠금 해제할 수 있습니다. Swift Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“로컬 패키지와 기능 모듈”에서 뭘 배우나요?
더 빠른 빌드와 격리를 위해 기능을 로컬 Swift 패키지로 추출합니다. 브라우저에서 직접 실행하는 실습 코드로 Swift Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Swift Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Swift Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 2번째 강의입니다.
“로컬 패키지와 기능 모듈” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Swift Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Swift Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.