Swinject の解説ビデオを見つけた。Swinject は Swift 用の DI フレームワークで、仕事の開発でも使っている。このビデオのポイントはSecondVC に ColorProvider をアプリ側ロジックとして明示的に渡さずにDIコンテナ内で解決している点と言える。
単純化のためやむをえないのだろうが、改善したほうが良さそうな点はある。特にViewController(VC)はコンテナに直接アクセス(resolve)しない方がよい。SVCFactory的なクラスを作った上でコンテナからVCにinjectして呼び出すべきだろう。アプリ本体のコードではコンテナに直接アクセスするのを避ける。
仕事の開発では SwinjectStoryboard や SwinjectAutoregistration も使っている。SwinjectAutoregistration の autoregister を使えば、このビデオにある2つめの container.register() のように SVC のイニシャライザを直接呼び出す必要はないなど、もっと簡略化できるし、疎結合にもできる。
などなど、当然ながらこのビデオでは見えない良さはまだまだあるんだよね。Swinject についてのビデオを検索してみたら他にもけっこうある模様。Swinject や DI の話題が出るのはうれしい!
- Swinject: https://github.com/Swinject/Swinject
- SwinjectAutoregistration: https://github.com/Swinject/SwinjectAutoregistration
- SwinjectStoryboard: https://github.com/Swinject/SwinjectStoryboard