/note/tech

goでDIを使う

GitHubのStar数はwireが一番多いですが、我々はfxを採用しました。

今回はgo開発でDIを導入したお話でした。

当初の目的は全て達成できており、大きなハマりもなく快適に開発出来ています。

オブジェクトの生成処理を一元的に管理する意義は大きく、稼働確認を一発すれば初期化に伴う実装ミスはほぼなくなりました。

また副次的な効果として、モジュール間の依存関係を意識することで、インタフェースが洗練された印象があります。

結果、様々な言語のDIコンテナが目指すところである、インターフェースと実装を分離して抽象度を高め、変更容易性を向上するという点を達成できました。

go開発でDI導入を検討中なら、uber-go/fxを選択肢の一つとしてお考えになってはいかがでしょうか。

現状、コンストラクタインジェクションで特に困っていないけどモジュールの数が多くなると違ってきたりするのだろうか?