Top Banner
LT ははははは
45

Finc microservice meetup_shigemura_lt

Apr 15, 2017

Download

Software

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Finc microservice meetup_shigemura_lt

LT はじめます!

Page 2: Finc microservice meetup_shigemura_lt

自己紹介

Page 3: Finc microservice meetup_shigemura_lt

重村 裕紀• しげ or げし• 22 歳• 2016 年 4 月から新卒で FiNC に入社• Ruby/DDD/SoftwareTest/(Scala)

Page 4: Finc microservice meetup_shigemura_lt

所属プロジェクト

Page 5: Finc microservice meetup_shigemura_lt

最初に着手した課題

Page 6: Finc microservice meetup_shigemura_lt

テストを書いているのにバグを防げない

Page 7: Finc microservice meetup_shigemura_lt

カバレッジは 60% あった。

Page 8: Finc microservice meetup_shigemura_lt

結果テストの正しいやり方ができていなかった。

Page 9: Finc microservice meetup_shigemura_lt

やったこと• テストに関するドキュメントを作る• ハンズオンでテストのやり方を訓練する• テスト文化を浸透させる

Page 10: Finc microservice meetup_shigemura_lt
Page 11: Finc microservice meetup_shigemura_lt
Page 12: Finc microservice meetup_shigemura_lt

すると、巨人の進撃が !?

Page 13: Finc microservice meetup_shigemura_lt

止まらなかった。

Page 14: Finc microservice meetup_shigemura_lt

何故か?

Page 15: Finc microservice meetup_shigemura_lt

そもそもプログラム設計の段階でユースケースの抜け漏れが多かった。

Page 16: Finc microservice meetup_shigemura_lt

仕様↓プログラム設計↓実装↓テスト

仕様を全て満たせていない。

Page 17: Finc microservice meetup_shigemura_lt

次に着手した課題

Page 18: Finc microservice meetup_shigemura_lt

仕様が難解

Page 19: Finc microservice meetup_shigemura_lt

今までの仕様書Excel 一枚に全てのコンテキストをつめ込まれていた。

-> ユースケースが MECE であるか判断難しい。-> 前提の抜け漏れ。

Page 20: Finc microservice meetup_shigemura_lt

UI Flows + Gherkin

Page 21: Finc microservice meetup_shigemura_lt

UI Flows画面遷移が一目でわかる。

Page 22: Finc microservice meetup_shigemura_lt

GherkinFeature/When/Given/Then で仕様記述ユースケースの網羅性が高まる。

Feature 面談予約 Given ログインしたユーザー Given アンケートを受けている When スケジュールを選択 And 予約確定ボタンを押す Then 予約確定 Given アンケートを受けていない Then スケジュールを選択できない

Page 23: Finc microservice meetup_shigemura_lt

GherkinFeature/When/Given/Then で仕様記述ユースケースの網羅性が高まる。

Feature 面談予約 Given ログインしたユーザー Given アンケートを受けている When スケジュールを選択 And 予約確定ボタンを押す Then 予約確定 Given アンケートを受けていない Then スケジュールを選択できない

ここが抜け漏れる。

Page 24: Finc microservice meetup_shigemura_lt

結果

Page 25: Finc microservice meetup_shigemura_lt

ユースケースの抜け漏れがかなり減った。

Page 26: Finc microservice meetup_shigemura_lt

副作用

Page 27: Finc microservice meetup_shigemura_lt

テスト駆動できるようになる。

Page 28: Finc microservice meetup_shigemura_lt

仕様確認のコミュニケーションコストも減った。

Page 29: Finc microservice meetup_shigemura_lt

今度は、巨人の進撃が !?

Page 30: Finc microservice meetup_shigemura_lt

ちょっと止まった。

Page 31: Finc microservice meetup_shigemura_lt

しかし、

Page 32: Finc microservice meetup_shigemura_lt

諸悪の根源

Page 33: Finc microservice meetup_shigemura_lt

正体を現し始める。

Page 34: Finc microservice meetup_shigemura_lt

RDB + ORM + MVC×大規模アプリケーション

Page 35: Finc microservice meetup_shigemura_lt

= 結構闇

Page 36: Finc microservice meetup_shigemura_lt

特徴• テーブルとクラスが一対一• 基本テーブルは関連を持っている• View にビジネスロジック、ドメインモデルが漏れだす

Page 37: Finc microservice meetup_shigemura_lt

問題• テーブル構造を隠蔽しきれなくなる• 関連地獄• ファットモデル• マイクロサービスに切り出しにくい• オブジェクトがただの DAO(Data Access Object)

Page 38: Finc microservice meetup_shigemura_lt

DDDドメイン駆動設計

Page 39: Finc microservice meetup_shigemura_lt

DDD のメリット• ビジネスドメインへの理解が深まる。• ドメインモデルを蒸留させることができる。• 関連を最小限に抑えることが出来る。• マイクロサービスと相性が良い。

Page 40: Finc microservice meetup_shigemura_lt

社内勉強会を開きました。

Page 41: Finc microservice meetup_shigemura_lt

頑張った甲斐あった

Page 42: Finc microservice meetup_shigemura_lt

やったこと

Page 43: Finc microservice meetup_shigemura_lt

コンテキストマップを作り

Page 44: Finc microservice meetup_shigemura_lt

まだ着手したばかり

Page 45: Finc microservice meetup_shigemura_lt

ありがとうございました。