Let us go template

자주 사용하는 템플릿을 커스터마이징하기 - 커스텀 Xcode 템플릿

커스텀 Xcode 템플릿을 다루는 주제로 let us: Go! 2017 Summer에서 발표된 내용입니다.


소개

Custom Xcode Template이라는 주제로 발표하게 된 이봉원입니다. Xcode에서 우리가 사용하는 아이콘 하나하나가 모두 Template입니다. Viper 아키텍처를 잠시 살펴본 후 커스텀 템플릿을 소개하겠습니다.

VIPER는 MVC, MVP, MVVM 아키텍처와 이름부터 크게 다른데 각 컴포넌트 (View, Interactor, Presenter, Entity, Router)의 앞글자를 따서 지어진 이름의 아키텍처입니다. View부터 시작해서 Entity에 이르기까지 각각의 역할을 담당하게 되는데 interactor와 Entity 사이에는 DataManager / ServiceManager 등의 역할을 추가로 두기도 하며, 각 컴포넌트 간에는 프로토콜을 통해서만 통신하게 됩니다. VIPER는 한 뷰로도 만들 수 있는 내용을 6개까지 파일로 독립시킬 수 있는 구조를 사용합니다.

이런 개발 뉴스를 더 만나보세요

VIPER 아키텍처 컴포넌트 생성 데모

실제로 VIPER 아키텍처로 기본적인 컴포넌트 프로토콜을 만드는 과정을 위 플레이 버튼을 누르고 시연 영상 3:46 시점부터 시청할 수 있습니다. 비즈니스 로직이 들어가지 않았는데도 정말 많은 컴포넌트를 만들어야 합니다. 매번 만들기는 힘들므로 이를 자동으로 생성하는 라이브러리들이 있지만, 해당 라이브러리에 대한 별도의 이해 및 설정이 필요하므로 커스텀 파일 템플릿을 사용하게 됐습니다.

Custom File Template 만들기

커스텀 파일 템플릿을 사용하면 어떻게 과정을 줄일 수 있는지 시연 영상 11:25에서 볼 수 있습니다. 단 몇 번의 클릭 만으로 파일이 생성됩니다. 한 번 만들어 두면 계속해서 편리하게 사용할 수 있습니다.

templateInfo.Plist과 매크로 상수, 옵션을 통해 주요 내용을 설정할 수 있습니다. 저장 경로는 사용자마다 다르게 설정해서 해당 사용자만 사용하도록 할 수도 있는데, 이 경우 SortOrder를 변경해도 Xcode 자체에서 제공하는 템플릿보다 무조건 하단에 위치하게 됩니다.

혹은 기본 템플릿과 함께 넣을 수도 있는데 이 경우 소팅 오더를 변경해서 최상위에 나오도록 할 수도 있지만 Xcode를 재설치하는 경우 저장되지 않으므로 백업이 필요합니다.

  1. Swift File Template 복사 (시작하기 좋은 템플릿)
  2. Change Owner (root -> user)
  3. TemplateInfo.plist 수정
  4. 커스텀 파일 작성

위 과정도 시연 영상 14:50에서 확인할 수 있습니다. 응용 프로그램에서 Xcode를 찾아서 패키지 내용 보기로 Contents/Developers로 이동하고, OS를 찾아서 Library 안 쪽으로 들어가서 Xcode/Template/File Template/Source로 이동해서 파일 템플릿을 찾아서 Custom 폴더에 이동하면, 이후부터는 Xcode에서 해당 템플릿을 선택할 수 있습니다. 터미널에서 작업할 경우 소유주를 바꾸는 것을 잊지 마세요.

프로젝트 템플릿

파일 템플릿에 비해 자유도가 높은 대신 설정이 까다로운 부분이 있습니다. 가장 많이 사용하는 Single View Application을 보면 아이콘 이미지 파일 2개와 MainStoryboard, templateInfo.Plist 등 총 4개의 파일이 있습니다.

프로젝트 템플릿에서는 Template Unique ID가 추가됩니다. 그 밖에도 여러 설정을 해줘야 합니다. 반드시 고유한 ID값을 가져야 하므로 고유하지 않는 경우 Single View Application의 기존 설정이 깨질 수 있으므로 주의하셔야 합니다.

Single View Application이 이미 상속을 받고 있는 템플릿 구조를 정리했습니다.

경로는 파일 템플릿과 같습니다. 커스텀 프로젝트 템플릿을 만드는 과정은 다음과 같습니다.

  1. Single View Application 복사 (시작하기 좋은 템플릿)
  2. Change Owner (root -> user)
  3. Customizing
    • TemplateInfo.plist Definitions에서 정의
    • Custom File 생성
  4. TemplateInfo.plist Nodes에 반영

아까와 다른 점은 Definition에서 정의를 해주거나 Custom File을 생성하고 Nodes에 반영해줘야 실제로 사용할 수 있게 됩니다. 실제 설정과 파일 생성 과정은 시연 영상 20:25를 참조해주세요.

파일 템플릿과 프로젝트 템플릿을 잘 작성해두면 여러 프로젝트에서 편리하게 사용할 수 있습니다. 커스텀 템플릿을 공유하는 GitHub 프로젝트에도 많이 참가해 주세요.


본 영상과 글은 let us: Go!의 비디오 스폰서인 Realm에서 제공합니다. 모바일 개발자가 더 나은 앱을 더 빠르게 만들도록 돕는 Realm 모바일 데이터베이스Realm 모바일 플랫폼을 통해 핵심 로직에 집중하고 개발 효율을 높여 보세요! 공식 문서에서 단 몇 분 만에 시작할 수 있습니다. 또한 Realm 홈페이지에서는 모바일 개발자를 위한 다양한 최신 기술 뉴스와 튜토리얼을 제공하고 있으니 즐겨찾기하고 자주 들러 주세요!

컨텐츠에 대하여

이 컨텐츠는 저자의 허가 하에 이곳에서 공유합니다.

BongWon Lee

4 design patterns for a RESTless mobile integration »

close