More Related Content
Similar to 【D3 公開用】ドメイン駆動設計とscala 〜既存プロジェクトへの適用〜
Similar to 【D3 公開用】ドメイン駆動設計とscala 〜既存プロジェクトへの適用〜 (20)
【D3 公開用】ドメイン駆動設計とscala 〜既存プロジェクトへの適用〜
- 6. 自己紹介
6
角谷 文康(すみや ふみやす) @FScoward
■ 略歴
2011年4月 ~ 2015年7月
TIS株式会社にてクレジットカードシステムの保守開発・新規開発などに従事
- 2014年2月 デブサミ2014登壇
2015年8月
株式会社ビズリーチ入社
2015年8月 ~ 2015年12月
スタンバイ のサーバーサイドエンジニア
2016年1月 ~ 現在
HRMOS採用管理 のサーバーサイドエンジニア
2016年12月(予定)
JJUG CCC
■ 好きなもの
スフィア、乃木坂46、欅坂46
- 17. ■ 出会ったのは Mini Spec という書き方
● 「ペロリ流 開発要件のまとめ方」
● http://tech.pero.li/entry/2016/07/22/141228
設計仕様のドキュメントの統一
17
- 28. Why DDD?(精神面)
■ 「ソフトウェアの核心にある複雑性に立ち向かう」 ← かっこいい
■ SIerに居た頃は業務がどうなってようが、知ったこっちゃない。言われたと
おりに動くものが作れればOKという感じだったが、それが嫌になって事業
会社に転職したので、きちんと業務を理解して、あるべき姿のきれいなシス
テム作りをしたかった
■ 我々”一般的な”技術者が解決しなければならないのは技術的問題の前
に、ビジネスの問題であるということを認識しなければならない。
28
- 31. Scalaでドメイン駆動設計?
31
■ Scalaは静的型付け言語なのでドメイン駆動設計と相性がいい(と個人的に
は思っている)
■ ちなみにEric Evans本人はRubyが相性が良いかもねと言っている。
● https://www.infoq.com/jp/articles/eric-evans-ddd-matters-today
● 理由としてはrubyがドメイン固有言語(DomainSpecificLanguage)を簡単に作成できる点にあ
る。
● ドメイン駆動での開発はDSLでメタプログラミングでシステムを作ることなのかもしれない。
● DSLについて語るつもりはない(というか語れるほど詳しくない)ので、各自調べてみてくださ
い。
● http://www.slideshare.net/yizawa/rubydsl-25541986
- 78. ドメインモデルに落とし込む
78The Power of PowerPoint - thepopp.com
1. エンティティ(Entity)
2. バリューオブジェクト(ValueObject)
3. 集約(Aggregate)
これら3つの概念を押さえておく必要がある
- 85. Scala講座 〜 case class について 〜
85The Power of PowerPoint - thepopp.com
Scalaでは case class というものがつくれて宣言が簡単になる
- 86. ValueObject 例え話
86
■ 誕生日をどう表すか
■ 単純にDate型で表すのかBirthDate型を作るか
■ Dateでやると年齢を別の場所で算出しなければならない
● HRMOS採用管理ではUtilでやっていた
■ BirthDateを用意してcalcAgeのようなメソッドを用意してやったほうが良い
- 106. パッケージ分けによるサポート
106
■ controller - コントローラー層 Inputの変換を行う
● model - データを受けとるためのモデル
■ presenter - プレゼンター層 Outputへの変換を行う
● model - データを返すためのモデル
■ application - アプリケーション層
● service - 調整役。処理の振り分けを行う。 トランザクション制御 もここ。ドメインロジックは存在しては
ならない。
■ domain - ドメイン層
● model - ドメインモデル。packageで集約をまとめる。ドメインロジックを記
● service - エンティティや値オブジェクトで行うには 不自然なビジネスロジックを記述
■ infrastructure - インフラ層
● repository - 永続化についての責務を負う
■ gateway - ゲートウェイ層。 外部サービスとのやり取りを行う。外部のメールサービスとか
■ util - ユーティリティ
- 112. We are hiring!
■ Bizreach: https://bizreach.biz/landing/base_01
■ HRMOS: https://www.hrmos.co/saiyo/
■ Stanby: https://jp.stanby.com/
■ Careertrek: https://careertrek.biz/?trcd=corp
■ Bizreach CAMPUS: https://br-campus.jp/ etc...