前の記事の論旨が微妙に(かなり?)飛躍していることに気付いたので補足しておきます。
まず、DIパターンやDIコンテナーを使うことの目的は、直接的には、モジュール間(より具体的には、例えばドメインモデルとORMというようなレイヤー間)の結合性を疎にすることです。
「Mooseのアトリビュートへ依存オブジェクトを持たせることでも疎結合に出来る」というdannさんの指摘(DIとは何か 番外編 - DIコンテナを使わずにModelのTestabilityを高める方法)が一つの具体例ですが、元々Perlは(動的言語であるので)イントロスペクション(オブジェクトの中身を実行時に参照すること)のみならず実行時のDI自体はお手の物です。従って、DIがなければ死にそうなくらい大変かというと、必ずしもその通りではありません。
ただ、あまり根を詰めずとも試験容易性(テスタビリティー)の向上という利益が得られるという点で、DIコンテナーのお世話になる費用対効果が大きいと判断しました。私は怠け者なのです。
さらに、DI採用によって将来的に(今回は使用を一旦留保した)新進気鋭のモジュールに切り替え易くするという狙いもあります。これは「新進気鋭のモジュールを活用する実装を一旦断念して、定番のモジュールを活用することにした」という自分自身の負い目に対する代償行動のようですが、これこそが今回DIコンテナーのお世話になることに決めた最大の理由だと自己分析しています。
ということで、何故突然DIコンテナーを実用してみようかと思ったのか、その辺りの事情についての補足でした。前段と後段の内容の結節点となるこの補足がないと、何が何だか分かりませんでしたね。補足があっても寝不足気味なので変なことを書いているおそれがありますが。
コメントする