Scala Kansai summit 2017参加報告

Scala Kansai summit 2017
日時:2017年9月9日 10:30-18:00
場所:天満研修センター

参加セッション
■ユーザーデータ基盤を1からScalaでつくった話し
登壇者:垂水 秀明様 現在株式会社エフコードでScalaを使って開発しています。

Scalaシステム開発で破綻しないようにした工夫
ユーザデータ基盤とはエフコード社で開発しているマーケティングサービスで扱う行動ログ(クリックしたなど)のユーザデータを扱う基盤。
開発初期はデータフローの全体図を書いて構成要素を分離していった。



■【事例紹介】Scalaで物流倉庫業務システム作ったよ
登壇者:松下 誠和様
Scalaでの開発、導入実績の事例として、株式会社ティアライン(本人が所属)でスクラッチから開発し保守運用中の物流倉庫業務システムを設計、ソースコードを用いてScala導入の開発メリットなどを解説します。

在庫の管理や納品に合わせて請求書発行するシステム。
元請けもあって作りたいように作った。(SPAとかSlalaやReact.jsなどなど)

メリット:型に守られている
デメリット:コンパイル遅い
フレームワークはPlayframe以外にも色々あるよ。

■​実践ScalaでDDD
登壇者:辻 陽平様 現在は、ScalaAWSを使ってDDDでプロダクト開発をしています。
資料:https://speakerdeck.com/crossroad0201/scala-on-ddd

DDD(ドメイン駆動設計)とは
オブジェクト思考で変更が容易なソフトウェアを開発するための体系化された原則集
ー顧客も開発者も共通の言語で会話など
ドメインの知識をドメインの言葉でコードに落とし込む

ScalaとDDD
ー変数を関数に変えても影響がない
ー関数のネストが書けるのが良い #業務的な名前をつける時に使う範囲が特定できるので便利
ーイミュータブルで代入不可を作る
ー副作用を起こす場所を局所化できる#副作用が発生するのは、永続化するところ
ーimplicitを使ってドメインの関心ごとでないことは隠す#IDを生成するなど
ー(アンチ)変数や関数を略さない

実装スタイル
ーレイヤー構想からドメイン中心の構成を工夫(ドメインがインフラに依存しないようにする)。
 最近はオニオンアーキテクチャ推し。(アプリケーションレイヤもインフラに依存しないようにする)
ーエラーの変換
 モデルやインフラレイヤで生じたエラーをユーザフレンドリなエラーに変換する
 ドメインエラーなどをサービスエラーに変換してユースケースのエラーに丸める的なことをする
 エラー変換処理で処理がごちゃごちゃにならないように簡潔に書く
ーアプリケーションコードが仕様書のように見えることを目指す
ーimplicitクラスで関連付の処理をエンティティの外部で定義できる

DDDには正解がないのでやって試して改良していく。ここまで体系化したのも2年かかった。
マイクロサービスアーキテクチャならサービスを分割して開発できるので学びやすい。