[Swift] 네이버 영화 검색 앱 RIBs + Tuist로 만들어보기 – 1

회사에서 감사하게도 RIBs + Tuist로 개발할 수 있는 기회가 주어졌는데(안해줄 것 같았는데..), 아무래도 처음 시도 해보는 것들이다보니 기초 지식이 부족해서 샘플 앱을 몇개 더 만들어봐야할 것 같아 기록용으로 남긴다.

일단 가장 먼저 tuist로 프로젝트를 구성한다.

❯ tuist init --platform ios

아래와 같은 구조를 갖게 된다.

❯ tree .
.
├── Project.swift
├── Targets
│   ├── NaverMovie
│   │   ├── Resources
│   │   │   └── LaunchScreen.storyboard
│   │   ├── Sources
│   │   │   └── AppDelegate.swift
│   │   └── Tests
│   │       └── AppTests.swift
│   ├── NaverMovieKit
│   │   ├── Sources
│   │   │   └── NaverMovieKit.swift
│   │   └── Tests
│   │       └── NaverMovieKitTests.swift
│   └── NaverMovieUI
│       ├── Sources
│       │   └── NaverMovieUI.swift
│       └── Tests
│           └── NaverMovieUITests.swift
└── Tuist
    ├── Config.swift
    └── ProjectDescriptionHelpers
        └── Project+Templates.swift

13 directories, 10 files

나는 멀티 타겟으로 UI와 Kit을 분리할 생각이 아직 없으니(추후에..) 아래의 명령어로 프로젝트 편집기를 열고 수정해준다.

❯ tuist edit

위 명령어를 입력하면 Xcode로 Manifests 프로젝트가 열리게 되는데 해당 프로젝트에서 Project.swift가 프로젝트를 구성하는 설정 파일이다.

import ProjectDescription
import ProjectDescriptionHelpers

// MARK: - Project

let project = Project.app(
  name: "NaverMovie",
  platform: .iOS,
  additionalTargets: []
)

참고로 Project의 app 함수는 ProjectDescriptionHelpers/Project+Templates.swift 파일에 정의되어 있다. 나중에 원하는 입맛대로 수정하도록 하자.

입맛대로 수정했다면 터미널에서 Ctrl + C 후에 아래의 명령어를 실행한다

❯ tuist generate
Generating workspace NaverMovie.xcworkspace
Generating project NaverMovie
Project generated.
Total time taken: 6.425s

이제 프로젝트 파일이 생성되었다. 한번 열어서 Sources/AppDelegate.swift 파일을 확인해보자.

import UIKit
import NaverMovieKit
import NaverMovieUI

@main
class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?

    func application(
        _ application: UIApplication,
        didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil
    ) -> Bool {
        window = UIWindow(frame: UIScreen.main.bounds)
        let viewController = UIViewController()
        viewController.view.backgroundColor = .white
        window?.rootViewController = viewController
        window?.makeKeyAndVisible()
        NaverMovieKit.hello()
        NaverMovieUI.hello()

        return true
    }

}

위처럼 작성되어 있을텐데 Kit, UI는 사용하지 않으므로 제거한다. 제거한 뒤 컴파일 에러가 나는지 안나는지 확인하고 다음에는 RIBs를 설치할 수 있도록 하자