ひがやすを技術ブログ

電通国際情報サービスのプログラマ

DIコンテナの必要性

DI コンテナの起動が遅いなら、起動が速いのを作ればいいじゃない


何度か書いているとおり、DIはテストをしやすくすることが一番のメリットであり、オンプレミスの世界では、今でもある程度有効です。ただ、appengineの世界では、テストする環境が整えられているので、DIを使う必要はないということです。
http://d.hatena.ne.jp/higayasuo/20091115/1258245284


DIを使ったことがある人はわかると思うけど、DIには、ある程度のめんどくささがあります。appengineの世界では、DIがなくてもテストが簡単にかけるので、わざわざめんどくさいことをする必要はないでしょう。
appengineの世界でテストがどれくらい書きやすいのかは、次のustをみればわかります。
http://www.ustream.tv/recorded/6377235


技術的には、JSR330を実装したspin-upの速いDIコンテナを作ることは簡単だし、作ればかなりユーザが付くだろうと思ってますが、いらないと思っているものを作る気には全くなれません。同じように、spin-upの速いJDO/JPAの実装も作れると思うけど作る気になりません。こっちに関しては一瞬作ろうかと思ったこともあるけどw


さんざん苦労するなら、pythonでいいじゃんという考えも、短絡的で、slim3は、appengineに向いているようにを最初から設計されているので、spin-upについては全く困った事がありません。JDOに困らされて、JDOを捨ててSlim3 Datastoreを一から設計し直したのは、苦い記憶だけど。


appengineで使う言語は、素のSDKで比べるとpythonの方が断然出来がいいけど、プロが仕事で使う場合には、リファクタリングやテストのしやすさやIDEの効率などを含めると、たぶん、Javaの方が生産性が高い。これは、ajn7の会場にいた人はきっとそう思っただろうし、会場にいなかった人も上記のustを見てもらえればわかるでしょう。


「プロが仕事で使う場合にappengineでどの言語を選ぶべきか」ついては別のエントリを書きます。