タグ

ブックマーク / lab.synergy-marketing.co.jp (2)

  • Scala で DI (Effective Scala / Lift のDI編) | Synergy Marketing LAB BLOG

    こんにちは、馬場です。 前回はScalaのDIのパターンとしては最も有名なCake Patternを紹介しました。今回はDIの他のパターンも紹介したいと思います。 Twitter でのScala DI さて、少し前にTwitterScala のベストプラクティスをgithub上に公開しました。DIについては、以下のように言っていますね(かなり意訳です)。 Scala にmixinの仕組みを導入したのは、伝統的なDIの手法をやめたかったからだと思う。新方式の最たるものが「Cake pattern」だろう。 (略) けど、Scalaを利用するだけで、古典的DI手法の問題点はだいたい解決できると感じる。(略)だから、私たちはあまり継承せずに構造化しようと決めた。その方がモジュール性が高くテストしやすいプログラムができると思うから。 「伝統的なDIの手法」というのは、Springと同じよう

    sifue
    sifue 2013/04/21
    ScalaでのDIはCake Pattern使うよりTwitterのやり方の方が読みやすくて良いなぁ。こういう方法で、アプリケーション層にComponentRegistryを置くのが良さそうだな。ここに遅延初期化がする仕組みを入れれば更に良さそう。
  • ScalaでDI (Cake Pattern 導入編) | Synergy Marketing LAB BLOG

    こんにちは、馬場です。 唐突ですが、現在Play! + Scalaで開発しています。 それまではほとんどJava (たまにRuby/Rails)で作っていたので、格的にサービスをScalaで作るのは初めて。 慣れないながらもすごく楽しくやっていましたが、プロジェクト開始早々でてきた不満。それは 「DIしたい…」 なぜなら「テストが面倒だから」。 データベースアクセス、webapiの呼び出し、メール送信と外部リソースへアクセスする処理のオンパレード。テストのたびに実行していたらスローテストに陥ることは目に見えています。リファクタリング/パフォーマンスチューニング/ライブラリのアップデートに耐えるためにも、ここはぜひともDIを導入しておきたい。 というわけで、Scala アプリケーションへのDIの導入体験を紹介したいと思います。 Java で DI まずはJavaのDIコンテナSpri

    sifue
    sifue 2013/04/21
    このサンプルは非常にありがたい。
  • 1