[swift] Swift Sourcery를 이용한 추상화 계층 개발

Swift를 사용하여 앱을 개발하다 보면, 비슷한 패턴의 코드를 반복적으로 작성해야 하는 경우가 많습니다. 이러한 경우에는 추상화 계층을 개발하여 코드의 중복을 제거하고 개발 생산성을 높일 수 있습니다. 이번 포스트에서는 Swift Sourcery를 이용하여 추상화 계층을 개발하는 방법을 알아보겠습니다.

1. Swift Sourcery란?

Swift Sourcery는 Swift 소스 코드를 분석하고, 주석과 템플릿을 기반으로 코드를 자동 생성해주는 툴입니다. 이를 이용하면 보일러플레이트 코드를 생성하거나, 추상화 계층을 자동으로 생성하는 등의 작업을 수행할 수 있습니다.

2. 추상화 계층 개발 방법

  1. 먼저, Swift Sourcery를 프로젝트에 추가해야 합니다. CocoaPods를 사용한다면, Podfile에 다음과 같이 추가합니다.
pod 'Sourcery'
  1. 프로젝트 폴더에 .sourcery.yml 파일을 생성하여 설정합니다. 이 파일에는 자동 생성할 코드의 템플릿과 출력 경로 등을 설정할 수 있습니다. 예를 들어, 다음과 같이 설정할 수 있습니다.
sources:
  - MyProject
templates:
  - MyProject/Templates
output:
  path: MyProject/Generated
  1. 추상화 계층을 개발할 Swift 파일에 주석을 추가합니다. 이 주석을 통해, Swift Sourcery에게 코드를 분석하여 어떤 코드를 생성할지 알려줍니다. 예를 들어, 다음과 같이 주석을 추가할 수 있습니다.
// sourcery: AutoMockable
protocol DataManager {
    func fetchItems(completion: ([Item]) -> Void)
}
  1. 마지막으로, 템플릿 파일을 작성하여 코드를 생성합니다. 템플릿 파일은 .sourcery.yml 파일에 설정한 디렉토리에 위치해야 합니다.
// MyProject/Templates/AutoMockable.stencil

{% for protocol in types.implementing.AutoMockable %}
class Mock{{ protocol.name }}: {{ protocol.name }} {
    {% for method in protocol.methods %}
    func {{ method.name }}({{ method.parameters }}) -> {{ method.returnType }} {
        return ValueType.mockValue()
    }
    {% endfor %}
}
{% endfor %}

위와 같은 템플릿 파일을 작성하고, Swift Sourcery를 실행하면 MockDataManager 클래스가 자동으로 생성됩니다.

3. 결론

Swift Sourcery를 이용하여 추상화 계층을 개발하면 코드의 중복을 제거하고 개발 생산성을 높일 수 있습니다. Swift Sourcery의 강력한 템플릿 기능을 이용하여 자신만의 추상화 계층을 개발해보세요!

참고 자료