[swift] Swift Sourcery와 리모트 콜렉션의 자동화

Swift Sourcery는 자동화 도구로서 개발자들이 Swift 코드를 생성하고 변환할 수 있도록 도와줍니다. 이 글에서는 Sourcery를 사용하여 리모트 콜렉션을 자동화하는 방법에 대해 알아보겠습니다.

1. Sourcery 설치하기

Sourcery를 사용하려면 먼저 설치해야 합니다. 아래의 명령어를 사용하여 Sourcery를 설치할 수 있습니다.

brew install sourcery

2. 리모트 콜렉션 생성하기

Sourcery의 주요 기능 중 하나는 리모트 콜렉션을 생성하는 것입니다. 리모트 콜렉션은 네트워크 요청과 응답을 처리하는데 도움이 되는 타입 세이프한 코드를 생성할 수 있습니다.

리모트 콜렉션을 생성하기 위해 다음과 같은 단계를 따릅니다:

(1) 소스 파일 준비하기

Sourcery를 사용하여 리모트 콜렉션을 생성하려면 먼저 소스 파일을 준비해야 합니다. 일반적으로 .swift 확장자를 가진 Swift 파일에 작성됩니다. 예를 들어, UserService.swift 파일에 리모트 콜렉션을 생성하고자 한다면 다음과 같은 형태로 작성해야 합니다:

// UserService.swift

import Foundation

class UserService {
    func getUsers(completion: @escaping ([User]?, Error?) -> Void) {
        // 네트워크 요청을 처리하는 코드
    }
}

(2) Sourcery 템플릿 작성하기

리모트 콜렉션을 생성하기 위해선 Sourcery 템플릿을 작성해야 합니다. 템플릿은 코드를 기반으로 자동으로 생성되는 코드를 정의하는 파일입니다. 일반적으로 .swifttemplate 확장자를 가집니다.

// RemoteCollection.stencil

{% for method in type.methods %}
    func {{ methodName(method) }}() {
        // 네트워크 요청을 처리하는 코드를 작성
    }
{% endfor %}

위의 예시 템플릿은 UserService 클래스의 각 메서드에 대해 네트워크 요청을 처리하는 코드를 생성합니다.

(3) Sourcery 실행하기

Sourcery를 실행하여 템플릿을 기반으로 리모트 콜렉션을 생성합니다. 다음의 명령어를 실행합니다:

sourcery --sources ./UserService.swift --templates ./RemoteCollection.stencil --output ./GeneratedCode/

위 명령어에서 --sources는 소스 파일이 위치한 경로를, --templates는 템플릿 파일이 위치한 경로를, --output은 생성된 코드가 저장될 경로를 나타냅니다.

3. 생성된 코드 사용하기

Sourcery를 실행하고 나면 GeneratedCode 폴더에 생성된 리모트 콜렉션 코드를 확인할 수 있습니다. 이제 이 코드를 기존 코드에 추가하여 사용할 수 있습니다.

// 사용 예시
import Foundation
import GeneratedCode

class App {
    let userService = UserService()
    let remoteCollection = RemoteCollection()

    func getUsers() {
        remoteCollection.getUsers()
    }
}

위의 예시에서 RemoteCollection은 생성된 코드를 임포트하여 사용하는 예시입니다. 생성된 코드를 사용하여 리모트 콜렉션을 관리하고 네트워크 요청을 처리할 수 있습니다.

마무리

이렇게 Swift Sourcery를 사용하여 리모트 콜렉션을 자동화하는 방법을 살펴보았습니다. Sourcery는 Swift 코드를 자동으로 생성하고 변환하는 작업을 돕는 강력한 도구입니다. 리모트 콜렉션을 자동화하여 생산성을 높이고 코드의 일관성을 유지할 수 있습니다.

참고 자료