タグ

diとscalaに関するlilpacyのブックマーク (4)

  • Minimal Cake Pattern 再考 - Qiita

    かつて Scalaにおける最適なDependency Injectionの方法を考察する 〜なぜドワンゴアカウントシステムの生産性は高いのか〜 という記事が公開されたとき、ぶっちゃけ私は 100 日も経てば忘れられているだろうと思っていました。私の予想に反して 2020 年現在でも Twitter では Minimal Cake Pattern への言及がたまに見られ、中にはこのパターンが(あるいは DI そのものが)難しいと感じる人もいるようなので、今一度このパターンについて整理してみようと思います。 依存性注入とは Minimal Cake Pattern は 依存性注入 (Dependency Injection, DI) を実現するためのデザインパターンです。ですのでまずは DI についておさらいしましょう。理解済みであればこの節は飛ばして構いません。 例として、時間の計測を行う

    Minimal Cake Pattern 再考 - Qiita
  • Minimal Cake Pattern のお作法 - Qiita

    追記 (2020-12-27) より基礎的な説明を Minimal Cake Pattern 再考 にまとめました。Minimal Cake Pattern という言葉を初めて聞く人は、こちらの記事を先に読むことをおすすめします。 Scalaにおける最適なDependency Injectionの方法を考察する 〜なぜドワンゴアカウントシステムの生産性は高いのか〜 で紹介されている Minimal Cake Pattern をもう少し詳しく解説します。 Minimal Cake Pattern それ自体は自明なものですが、いくつかの規約に従わないと混乱を招きます。以下の事柄を覚えておくと良いでしょう。 MixIn に extends はいらない trait UsesSomething { def something: Something } trait MixInSomething ext

    Minimal Cake Pattern のお作法 - Qiita
    lilpacy
    lilpacy 2021/02/21
    MinimalCakePattern誕生の経緯
  • Scalaでたぶん一番簡単なDI - Qiita

    Outline ScalaでDIをちゃんと考えてみようと思い、ここを参考にcakePatternとか色々調べてみました。 http://eed3si9n.com/ja/real-world-scala-dependency-injection-di でも全体的に何が嬉しいのか見えなかったので、手段から入るのをやめて、 何ができれば嬉しいのかを明確にしてから一番シンプルにそれが達成できそうなものを考えてみました。 Premise SpringMVCの設計みたく、 の依存関係があるとします。 また、今回はRDBを扱い、トランザクションの管理はServiceでやるとします。 Goal ・各Objectで、mockを差し込んだ単体テストが容易に行える。 ・UI確認用に、configを書き換えると実行時にMockのServiceが動くようにする。 ・(上記を実現しつつ、ボイラ−プレートが少なく、シン

    Scalaでたぶん一番簡単なDI - Qiita
  • 関数型ニキ達にインスパイアされた最近の Scala 開発の取り組み - FLINTERS Engineer's Blog

    こんにちは、中途三年目の堀越です。 近頃、Scalaのコミュニティにおいて Functional Programming による実装テクニックを紹介する記事や発表を見たり聞いたりすることは珍しいことではなくなってきました。弊社にもたくさんの関数型ニキ*1が在籍しており、わたしも日々影響を受けています。 ということで、日はわたしが所属するチームでの日々の Scala 開発における取組みや戦略をサンプルコード*2と合わせて紹介していきます。 高カインド型によるEffect型の抽象化 私達はドメイン駆動設計を実践しています。なのでドメインロジックはドメインの関心事に集中できるのが理想です。ドメイン層を抽象化し、特定の実行環境や技術的関心事に依存しない戦略として 高カインド型 を用いてEffect型を抽象化します。 インターフェース定義 例えば Repository のインターフェイスのは以下の

    関数型ニキ達にインスパイアされた最近の Scala 開発の取り組み - FLINTERS Engineer's Blog
  • 1