Repolode
krzysztofzablocki

krzysztofzablocki/Sourcery

SwiftSyntaxを基盤とするSwiftコードジェネレーター。テンプレートを使ってモックやEquatable、Codableなどの定型コードを生成します。

スター
8,031
フォーク
633
未解決の Issue
95
最終コミット
9 日前

これは何?

SourceryはSwift向けのコマンドラインコードジェネレーターです。AppleのSwiftSyntaxでSwiftのソースファイルを解析し、得られた型情報をStencilテンプレートに渡して、新しいSwiftファイルを生成します。プロトコルのモック、等価性やハッシュの実装、enumのcase用ヘルパー、レンズ、Codable準拠といった繰り返しの多いコードを自動化できます。

代表的な用途はモックの生成です。プロトコルごとにモッククラスを手書きする代わりに、`extension MyProtocol: AutoMockable {}`のようなアノテーションを追加すると、Sourceryがモックを生成します。ソースから出力を再生成するため、プロトコルのメンバーが変わってもモックを最新の状態に保てます。

SourceryはHomebrew、CocoaPods、Mint、Swift Package Manager経由でインストールできるバイナリとして実行できるほか、Swift package command pluginやpre-commit hookとしても利用できます。ファイル変更時にコードを再生成するwatch modeを備え、ソース、テンプレート、引数を指定する設定ファイルも用意されています。

主な機能

  • 01AutoMockableアノテーションを使ってプロトコルのモックを生成します。
  • 02型定義からEquatable、Hashable、Codableの実装を生成します。
  • 03Stencilテンプレートを自作して、任意のパターンを自動化できます。
  • 04ソースやテンプレートの変更時にコードを再生成するwatch modeを備えています。
  • 05Homebrew、CocoaPods、Mint、SPM、またはpre-commit経由でインストールできます。

ユースケース

  • iOSプロジェクト内のすべてのプロトコルに対し、一貫性のあるモックやスタブを生成する。
  • モデル型の変更に合わせて、Equatable、Hashable、Codableのコードを最新の状態に保つ。
  • 繰り返しの多いアーキテクチャパターン向けに、プロジェクト固有のコード生成テンプレートを作成する。
  • 型宣言をもとに設定画面などのUIコードを自動生成する。

クイックスタート

  1. 1

    Homebrewでsourceryのバイナリをインストールします

    brew install sourcery
  2. 2

    ソース、テンプレート、出力先のパスを指定してsourceryを実行します

    ./bin/sourcery --sources <sources path> --templates <templates path> --output <output path>

使う前に知っておきたいこと

  • Swift Package Managerでビルドする場合、JSで記述されたテンプレートはサポートされません。
  • XcodeコマンドプラグインはXcode 14以降でのみ利用できます。

収録されている特集

トピック

#swift#code-generation#metaprogramming#templates#ios#testing#boilerplate#codegen#codegenerator

よくある質問

Sourcery とは?
SwiftSyntaxを基盤とするSwiftコードジェネレーター。テンプレートを使ってモックやEquatable、Codableなどの定型コードを生成します。 SourceryはSwift向けのコマンドラインコードジェネレーターです。AppleのSwiftSyntaxでSwiftのソースファイルを解析し、得られた型情報をStencilテンプレートに渡して、新しいSwiftファイルを生成します。プロトコルのモック、等価性やハッシュの実装、enumのcase用ヘルパー、レンズ、Codable準拠といった繰り返しの多いコードを自動化できます。
Sourcery は無料で使えますか?ライセンスは?
Sourcery は MIT ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
Sourcery は今もメンテナンスされていますか?
活発にメンテナンス中。Sourcery の最終コミットは 2026年10月28日 です。
Sourcery は何に使えますか?
iOSプロジェクト内のすべてのプロトコルに対し、一貫性のあるモックやスタブを生成する。 モデル型の変更に合わせて、Equatable、Hashable、Codableのコードを最新の状態に保つ。 繰り返しの多いアーキテクチャパターン向けに、プロジェクト固有のコード生成テンプレートを作成する。 型宣言をもとに設定画面などのUIコードを自動生成する。
Sourcery のインストール方法は?
Homebrewでsourceryのバイナリをインストールします: brew install sourcery ソース、テンプレート、出力先のパスを指定してsourceryを実行します: ./bin/sourcery --sources <sources path> --templates <templates path> --output <output path>
Sourcery はどこで入手できますか?
ソースコードとインストール手順は GitHub にあります:https://github.com/krzysztofzablocki/Sourcery

概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。

関連プロジェクト

Rustの手続き型マクロを実装する、5つのプロジェクトからなる実践ワークショップ。各プロジェクトには雛形とtrybuildのテストスイートが用意されています。

学習リソース#rust#procedural-macros#metaprogramming
4873+1 今週1216RustApache-2.0更新 3 か月前