Scala

Guiceが生成するインスタンスをMockitoでspyする

Play FrameworkではGoogle Guiceが標準で採用されている。 統合テストを書いているとGuiceが生成するインスタンスをspyに差し替えたくなる時がごく稀にある。 この場合、Injector.getInstance()が返したインスタンスをspyにするのではなく、Injector.getInst…

AkkaのClassic ActorにGuiceを使ってDIする方法

Classic Actorを今時使っているところはあまり無いと思うが、現在携わっているプロジェクトでは既に多くのActorがClassicで書かれてしまっており、中々完全に移行できない。 このプロジェクトはPlay Frameworkで実装されているWebアプリでバッチ処理の定期実…

RubyからScalaに移る上で大事だったこと

前職ではRuby on Railsでの開発がメインだったが、転職してからはScala/Play Frameworkでの開発が主になり、それに伴い開発の手法, メンタルモデルも大きく変わった。 それに適応していくために特に大事だったと思うことを書く。 型駆動開発で進める Scalaは…

Play Frameworkのテスト実行中にDBのコネクションが枯渇する

概要 背景 Play Frameworkのコネクションプールの動作 対策 GuiceOneAppPerSuiteなど用意されたtraitの枠組みに乗っかる テストケースごとにModuleをoverrideしたい場合 概要 Play Frameworkのテストコードでplay.api.Applicationのインスタンスを生成したら…

for-comprehensionをうまく使うために必要そうだと思ったこと

新しい仕事に入り、1週間が経過しました。 私としては有給消化中にコップ本を読んでおけば事前準備としてはよくやった方ではないかと思っていたのですが、Play FrameworkやDBとのやりとりに使っているScalikeJDBCなど、新しく知るべきことはたくさんあり、逆…

ドワンゴ社のScala研修テキストを読む前に知っておきたかった高階関数への関数オブジェクトの渡し方のパターン

Scalaでは関数リテラルを様々な形で書けますが、入門向けの資料であるドワンゴ社のScala研修テキストでは具体的にどのような書き方ができるのかは解説されていません。 にも関わらずそれぞれの書き方が説明なしに登場するので「高階関数に渡す関数の書き方は…