Scala関西Summit2017

Non-Functional Programming in Scala

資料

メモ

竹添 直樹 さん (@takezoen)
ビズリーチ

Scala and Akka apps on Kubernates in ChatWork

資料

メモ

林 大介 さん (@hayasshi_)
チャットワーク

実践ScalaでDDD

資料

メモ

辻 陽平 さん (@crossroad0201)

ストリーム処理ことはじめ Akka Streams

メモ

にしかわささき さん (@nishikawasasaki)

グラフを知って理解するAkka Streams

@kamijin_fanta
さくらインターネット

プレースホルダ構文完全解説

資料

メモ

水島 宏太 (@kmizu) さん

以下のコードの転回形を答えよ

def add(x: Int, y: Int) = x + y list.map(add(1, add(2, _)))

list.map(add(1, x => add(2, x))) コンパイルエラー

勘違いされやすい

obj.method _ obj.method(_)

プレースホルダ構文の難しさ

list.map(_ + 1 + 2) list.map((_.+(1)).+(2))

SLS 6.32.1

構文kてゴリExprの式内に、識別子が有効な箇所に_(アンダースコア)を埋め込むことができる。 そのような式は無名関数を表現する。 2回以上出現した場合は、複数の引数を表現する。

Expr ::= (Bindings | id | `_") `=>" Expr | Expr1

構文カテゴリにおける「還元」 構文カテゴリExpr1の式をExprに還元可能

アンダースコア節

Property Based Testing でドメインロジックをテストする

資料

メモ

中村 学 (@gakuzzzz) さん

case class Message(id: Long, read: ReadStatus)

Message(1, ReadStatus.Unread) Message(2, ReadStatus.Unread) Message(3, ReadStatus.Read) Message(4, ReadStatus.Read)

case class Message(id: Long, read: ReadStatus, category: Category)

レコードが増えてテストが落ちる!

全てのテストでテストデータを共通化してるからだめ
テーブルにカラムが追加 → 全てのテストを書き直し…
テスト毎に専用のデータを用意できればおk

そこで Property Based Testing

テストデータを半自動生成とは

``` case class User(name: String, age: Int)

val userGen: Gen[User] = for { name <- Gen.alphaNumStr age <- Gen.choose(1, 150) } yield User(name, age) ```

データの生成方法だけを定義すればいいので、仕様変更や改修でフィールドが増減してもその生成方法だけ変更すればOK

ドメインロジックで「普遍的な性質」を探そうとすると難しい 「特定条件の時に満たす性質」であれば見つけやすい

特定条件を表し方

その他

まとめ