SWIFTUI ‐ 폴더 생성 규칙 설명 및 이유 - DeveloperAcademy-POSTECH/2025-C6-M12-YesAgile GitHub Wiki
📁 Swift 프로젝트의 Group vs Folder 정리
개요
Swift(Xcode) 프로젝트를 관리할 때, 파일을 구성하는 방식에는 Group과 Folder 두 가지가 있습니다.
겉보기에는 비슷해 보이지만, Xcode 내부에서 관리되는 방식과 실제 파일 시스템에서의 구조가 다르기 때문에 명확한 구분이 필요합니다.
Group과 Folder의 차이
| 구분 | Group | Folder |
|---|---|---|
| 저장 위치 | Xcode 내부에서만 존재 (가상 구조) | 실제 macOS 파일 시스템의 폴더 구조 |
| 파일 경로 | Xcode 프로젝트(.xcodeproj)에만 기록 | 실제 Finder 폴더로 반영됨 |
| 외부 파일 연동 | 외부에서 추가된 파일은 자동 반영되지 않음 | 외부 파일 추가/삭제가 Xcode에도 반영됨 |
| 색상 구분 | 노란색 아이콘 | 파란색 아이콘 |
| 용도 | Xcode 내부 정리용 (코드 분류 목적) | 실제 파일 관리용 (Git, 협업에 적합) |
| Git 동기화 | 구조 변경이 반영되지 않음 | 실제 디렉터리 변경이 Git에 반영됨 |
💡 정리:
Group은 Xcode 프로젝트 파일 안에만 존재하는 “논리적 분류”,
Folder는 실제 macOS 디렉터리 구조에 존재하는 “물리적 분류”입니다.
문제 사례
❌ Group만 사용했을 때 발생할 수 있는 문제
- 파일이 실제 폴더에 존재하지 않음
- Finder에서는 “파일이 보이지 않음”
- Git 협업 시 충돌
- 다른 개발자의 로컬 환경에서는 경로가 불일치할 수 있음
- 빌드 오류
- 경로가 유효하지 않거나, DerivedData에서 “Content Missing From Group” 오류 발생
- 자동화 스크립트나 도구 사용 시 문제
find,swiftlint,fastlane등의 툴이 파일을 찾지 못함
팀 규칙: “실제 폴더(Folder) 사용 원칙”
우리 팀은 폴더(Folder) 구조를 표준으로 사용합니다.
이는 협업, Git 관리 및 안정성을 높이기 위함입니다.
✅ 원칙
- 모든 새 파일은 실제 폴더 안에 생성
- Finder나 Xcode에서 생성 시 “Create folder references” 옵션 확인
- Group 대신 Folder를 사용
- Xcode 내에서 파란색 아이콘으로 표시되어야 함
- 폴더 구조와 네임스페이스 일치
- 예:
Views/Components/Growth/GrowthDatePickerSheet.swift
- 예:
- 폴더 이름은 PascalCase 또는 명확한 기능 단위로
- 예:
Views,Models,ViewModels,Utils,Resources
- 예:
- Git에 전체 폴더 구조 포함
.gitignore에서 폴더 제외 금지
📘 폴더 구조와 실제 파일 경로가 완전히 일치해야 함.
생성 시 주의사항
- Xcode에서 새 폴더로 만든다.
- Group은 선택하지 않는다.
- xCode최신 버젼을 유진한다.
- 폴더 이름과 실제 파일명은 일관성을 유지합니다.
유지보수 가이드
- 새로운 기능(feature)을 추가할 때는 해당 기능 단위별 하위 폴더를 생성합니다.
- 불필요한 Group은 모두 삭제하고 Folder 기반으로 정리합니다.
- 폴더 구조 변경 시 반드시 Git 커밋 로그에 구조 변경 이유를 명시합니다.