Appleのsimctlを活用し、iOS、tvOS、watchOSのシミュレータをGUIで操作できるmacOSアプリ。
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 の数値は毎日更新されます。
関連プロジェクト
SwiftやObjective-Cのプロジェクト向けに、コード補完、チャット、エージェントモード、コードレビューをXcodeに追加するGitHub Copilot連携ツール。
iOS、tvOS、watchOS、visionOSのシミュレータでバックグラウンドデーモンを停止し、1台のMacでより多くのシミュレータをメモリ上で同時に実行できるmacOS向けCLI/アプリ。
アプリケーション内のオブジェクトの生成と依存関係の組み立て方を標準化・集約するPHPコンポーネント。
状態管理の一貫性、機能の合成、副作用の制御、充実したテスト支援を備えた、Appleプラットフォーム向けアプリ構築用Swiftライブラリ。
複数のXcodeバージョンをGUIからインストールし、切り替えられるmacOSアプリ。