ちょっと前からDIコンテナの必要性について考えているのだけど、 結論としては「DIコンテナは必要なところに使えばいい」と思う。 必要なところの例は、DBコネクション周りの設定ファイルを 本番環境と開発環境で変わる場合。 DBの接続先が変わる(または変える予定がある)場合は、 そこはDIや設定ファイルとして外部で制御できるようにすべき。 ただ、こういう環境の差異の吸収目的以外の使用でDIが絶対に必要になる という箇所はあまり思いつかない。 テスティングしやすくするためにDIコンテナ使うのだったら、 TDDで書いてテスティングの時だけDIコンテナ使えばいいのでは?と思う。 で、自分なりに考えたSlim3にDIコンテナが無い理由なんだけど、 App Engineの場合、DIが必要になりそうな「本番と開発環境の差異」を Googleが提供しているもので吸収することができるから。 Slim3だとAp