Xcode

Xcode - Group vs Folder

GREEN.1229 2025. 5. 1. 08:05

안녕하세요. 그린입니다 🍏
이번 포스팅에서는 Xcode 16부터 제공되는 folder에 대해 알아보면서 group과 어떤 차이가 있는지 정리해보겠습니다 🙋🏻
 
들어가기전에 Xcode 16부터는 기본적으로 생성 시 폴더 구조로 생성됩니다.
폴더와 그룹의 비주얼 차이는 아래와 같아요!
 

 
확연히 차이가 나죠?
우리가 흔히 알고 사용되던 회색 아이콘이 그룹을 나타내며, 파란색 아이콘은 이제 새로 등장한 폴더를 나타냅니다.
 

이번 포스팅에서는 이 둘의 차이를 본격적으로 파해쳐보고 어떤것을 어떨때 사용하는것이 적절할지 같이 알아봅니다 😀

 

우선 생성하는 방법을 간단히 보고 설명을 해볼께요!

 


Create and Convert folder & group

 
아주 간단해요.
우리가 평소 그룹 생성하는것처럼 우클릭을 한다면 이제 New Folder라는 항목이 보일거에요.
그래서 그룹과 폴더 원하는것을 선택하여 생성할 수 있습니다.

 

추가로 이미 생성된 그룹이나 폴더를 서로의 타입으로 변경할 수도 있어요.

 

너무 간단해서 더 이상 설명이 무의미할것 같네요 😀

 

그럼 본격적으로 알아볼께요!

 


Group

기존의 Group은 사실 파일 시스템과는 무관한 Xcode 내부에서만 존재하는 가상 폴더 구조입니다.
즉, Xcode 프로젝트 내에서 파일을 논리적으로 분류하는데 사용되죠.
실제로 디렉토리 구조는 그대로 두면서 Xcode 내 UI에서만 폴더처럼 보이는 구조입니다.
 

예시로 볼까요?

 

📂 Project Root
├── HomeViewController.swift
├── LoginViewController.swift

Xcode Project Navigator:
📁 ViewControllers
   ├── HomeViewController.swift
   └── LoginViewController.swift

 
이렇게 ViewController라는 그룹을 만들어서 그 안에서 Home, Login을 넣더라도 실제 파일 경로는 여전히 프로젝트 루트에 있을 수 있어요.
즉, Xcode 상에서 보이는것과 실제 파일 디렉토리에서 보이는 구조가 다른것이죠.
 

Group의 장점은 다음과 같아요.

 
1️⃣ 폴더 구조를 변경하지 않고 UI 상에서만 그룹화가 가능하기에 빠른 구조화를 가집니다.
2️⃣ 디렉토리 정리 없이도 Xcode에서 보기 좋게 구성이 가능합니다.
 

반면 단점도 있습니다.

 
1️⃣ 실제 파일 구조와 불일치 시 관리하는데 혼란을 줄 수 있어요.
2️⃣ 협업 시 Git에서 파일 위치가 명확하지 않아 컨플릭이 자주 발생하죠.
3️⃣ 외부 툴이나 스크립트 처리 시 문제가 생기기 쉽습니다.
 

이제 그럼 Folder에 대해 알아볼께요.

 


Folder

Xcode 16에서 새롭게 도입된 Folder는 실제 디스크 상의 폴더와 동기화되는 구조입니다.
즉, 폴더 구조가 Finder의 디렉토리 구조와 일치하며, 파일 이동/생성/삭제가 실제 디스크에 반영되는 구조입니다.
 

예시를 볼까요?

 

📂 Project Root
└── Features
    ├── Login
    │   └── LoginViewController.swift
    └── Signup
        └── SignupViewController.swift

Xcode Project Navigator:
📁 Features
   ├── Login
   │   └── LoginViewController.swift
   └── Signup
       └── SignupViewController.swift

 
Features라는 Folder에서 Loign/Signup 하위 폴더를 생성하면 이렇게 실제 디렉토리에도 동일하게 반영됩니다.
 

Folder가 가지는 장점은 다음과 같습니다.

 
1️⃣ Finder와 1:1 동기화되기에 외부 툴, 스크립트나 Git 관리가 용이합니다.
2️⃣ 협업 시 폴더 위치와 구조가 명확하기에 혼동이 없어요.
3️⃣ 폴더 구조로 인한 리소스 관리 및 접근성이 향상 됩니다.
 

반면 당연히 단점도 있습니다.

 
1️⃣ 구조 변경 시 실제 파일이 변경되기에 경로 의존성을 가지는 경우에 까다롭습니다.
2️⃣ 실수로 삭제할 시 실제 디스크에서 제거되기에 복구가 어려울 수 있습니다.
 

그럼 이 Group과 Folder를 비교해서 정리해볼까요?

 


Group vs Folder

 GroupFolder
파일 시스템 반영Xcode 내부 전용디스크와 연동
디렉토리 관리가상실제
Git 경로 추적어려움용이함
외부 툴/스크립트 연동제한적완전 호환
실수에 대한 영향낮음높음
적절한 사용 예시간단한 정리 및 빠른 구조화 구조적 설계, 협업

 

그럼 이 Group과 Folder 어느 상황에 각각 쓰면 좋을까요?

 

Group은 다음과 같은 상황에 유리합니다.

 
1️⃣ 빠르게 프로젝트를 구성하면서 논리적 UI 구성만 필요할 때
2️⃣ 디렉토리를 실제로 구성할 필요가 없을 때
3️⃣ 외부 툴 사용이나 협업이 아닌 개인 프로젝트
 

Folder는 이러한 상황에 유리해요.

 
1️⃣ 협업 프로젝트에서 명확한 폴더 구조가 필요할 때
2️⃣ 외부 툴을 사용하는 경우
3️⃣ Git에서 경로 기반으로 변경 사항을 추적하기를 원할 때
4️⃣ 유지보수 및 확장성을 고려하여 모듈화를 적용할 때
 
즉, 저는 사실 Folder 기반이 나오면서 프로젝트 관리가 좀 더 편해졌다고 느껴져요.
특히 모듈화를 하고 프로젝트 관리 툴인 Tuist 같은것을 도입하는 이유 중 하나도 협업 시 컨플릭에 대처하는것도 작은 포인트중의 하나일텐데요.
그걸 Xcode 자체적으로 어느정도 해결해줄 수 있고 명확하게 디스크와 Xcode 구조에서 관리가 통일되니 좋다고 생각됩니다.
 
물론, 기존 코드에서 이미 논리적으로만 쓰이고 실제 다른 위치에 있거나 이미 스크립트 등에서 경로 지정이 다르게 되있다면 바로 한번에 전환하는것이 더 오버 스펙일 수 있겠지만 이상적으로만 본다면 Folder 구조로 가는것이 더 좋을것 같아요.
 
또한 Group은 파일 참조가 프로젝트 파일에 직접 저장되고 관리되기에 대형 프로젝트에서는 파일에 대한 파싱 시간이 늘어날 수 있지만, Folder는 파일 시스템 경로를 따라가기에 약간의 빌드 성능 이점은 제공될 수 있습니다.
 

그렇기에 아마 Apple도 Folder 기반으로 생성되는걸 디폴트로 하지 않았을까 합니다 😃

 


Conclusion

이제 Folder가 도입되었으니 Xcode 내에서 파일 관리를 실제 디스크와 동기화된 방식으로 직관적이고 안정적으로 구성해보는건 어떨까요?
물론 기존 Group이 여전히 논리 그룹화를 위해선 유용하게 작용하기에 우선 기존 프로젝트가 있다면 병행하면서 느껴봐도 좋을것 같습니다.
 


References

Managing files and folders in your Xcode project | Apple Developer Documentation

Add new or existing files to your project, and use groups to organize the files and folders in the Project navigator.

developer.apple.com