Repolode
hmlongco

hmlongco/Factory

SwiftとSwiftUI向けの依存性注入コンテナ。スコープ、コンテキスト、テスト用モックに対応し、Factoryをシンプルな計算プロパティとして登録できます。

スター
2,930
フォーク
193
未解決の Issue
1
最終コミット
10 日前

これは何?

Factoryは、SwiftとSwiftUI向けのコンテナベースの依存性注入ライブラリです。Containerの計算プロパティとしてFactoryを返すサービスを定義し、@Injectedプロパティラッパー、関数の直接呼び出し、またはグローバルな依存関数を使って取得します。注入する型に対応するFactoryが存在するかをコンパイラがチェックするため、登録漏れは実行時ではなくビルド時に検出されます。

このライブラリは、DIシステムで一般的に必要とされる機能を備えています。singleton、cached、shared、カスタムのセッションスコープなどのスコープでインスタンスの存続期間を制御でき、コンテキストを使えば、デバッグビルド、ユニットテスト、SwiftUIプレビュー、UIテストで実装を切り替えられます。登録をモックで上書きするのは1回の呼び出しで済むため、プレビューやXCTest、Swift Testingのテストケースを簡単にセットアップできます。

FactoryはObservation、@MainActor、Swiftの並行処理における分離にも対応し、依存関係の解決ツリーを追跡するデバッグモードも備えています。MITライセンスで、Swift Package Managerを通じて配布されています。

主な機能

  • 01Containerの計算プロパティとしてサービスを登録でき、Factoryの登録漏れをコンパイル時にチェックします。
  • 02プロパティラッパー、Factoryの直接呼び出し、グローバルな依存関数による解決に対応します。
  • 03singleton、cached、sharedなどのスコープや、カスタムスコープを利用できます。
  • 04デバッグ、ユニットテスト、SwiftUIプレビュー、UIテスト用のコンテキストを使って実装を切り替えられます。
  • 05SwiftUIのシーンベースのコンテナ、Observation、@MainActorによる分離に対応します。
  • 06依存関係の解決ツリーを出力するデバッグトレースを備えています。

ユースケース

  • SwiftUIのビューやビューモデルにサービスやリポジトリを注入する。
  • SwiftUIプレビューでネットワークサービスや分析サービスをモックに置き換える。
  • 依存関係を上書きして、読み込み中・空・エラーの各状態を扱うユニットテストを書く。
  • MVVM、MVP、Clean、VIPERアーキテクチャでiOSアプリを構成する。

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

  • Swiftプロジェクト専用のため、他の言語には適用されません。

収録されている特集

トピック

よくある質問

Factory とは?
SwiftとSwiftUI向けの依存性注入コンテナ。スコープ、コンテキスト、テスト用モックに対応し、Factoryをシンプルな計算プロパティとして登録できます。 Factoryは、SwiftとSwiftUI向けのコンテナベースの依存性注入ライブラリです。Containerの計算プロパティとしてFactoryを返すサービスを定義し、@Injectedプロパティラッパー、関数の直接呼び出し、またはグローバルな依存関数を使って取得します。注入する型に対応するFactoryが存在するかをコンパイラがチェックするため、登録漏れは実行時ではなくビルド時に検出されます。
Factory は無料で使えますか?ライセンスは?
Factory は MIT ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
Factory は今もメンテナンスされていますか?
活発にメンテナンス中。Factory の最終コミットは 2026年10月28日 です。
Factory は何に使えますか?
SwiftUIのビューやビューモデルにサービスやリポジトリを注入する。 SwiftUIプレビューでネットワークサービスや分析サービスをモックに置き換える。 依存関係を上書きして、読み込み中・空・エラーの各状態を扱うユニットテストを書く。 MVVM、MVP、Clean、VIPERアーキテクチャでiOSアプリを構成する。
Factory はどこで入手できますか?
ソースコードとインストール手順は GitHub にあります:https://github.com/hmlongco/Factory

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

関連プロジェクト