SlideShare a Scribd company logo
LTはじめます!
自己紹介
重村 裕紀
• しげ or げし
• 22歳
• 2016年4月から新卒でFiNCに入社
• Ruby/DDD/SoftwareTest/(Scala)
所属プロジェクト
最初に着手した課題
テストを書いているの
にバグを防げない
カバレッジは60%あった。
結果テストの正しいやり方
ができていなかった。
やったこと
• テストに関するドキュメントを作る
• ハンズオンでテストのやり方を訓練する
• テスト文化を浸透させる
すると、巨人の進撃が!?
止まらなかった。
何故か?
そもそもプログラム設計の段階でユ
ースケースの抜け漏れが多かった。
仕様
↓
プログラム設計
↓
実装
↓
テスト
仕様を全て満た
せていない。
次に着手した課題
仕様が難解
今までの仕様書
Excel一枚に全てのコンテキストをつめ込まれていた。
-> ユースケースがMECEであるか判断難しい。
-> 前提の抜け漏れ。
UI Flows + Gherkin
UI Flows
画面遷移が一目でわかる。
Gherkin
Feature/When/Given/Thenで仕様記述
ユースケースの網羅性が高まる。
Feature 面談予約
Given ログインしたユーザー
Given アンケートを受けている
When スケジュールを選択
And 予約確定ボタンを押す
Then 予約確定
Given アンケートを受けていない
Then スケジュールを選択できない
Gherkin
Feature/When/Given/Thenで仕様記述
ユースケースの網羅性が高まる。
Feature 面談予約
Given ログインしたユーザー
Given アンケートを受けている
When スケジュールを選択
And 予約確定ボタンを押す
Then 予約確定
Given アンケートを受けていない
Then スケジュールを選択できない
ここが抜け漏れ
る。
結果
ユースケースの抜け漏
れがかなり減った。
副作用
テスト駆動できるよう
になる。
仕様確認のコミュニケー
ションコストも減った。
今度は、巨人の進撃が!?
ちょっと止まった。
しかし、
諸悪の根源
正体を現し始める。
RDB + ORM + MVC
×
大規模アプリケーション
= 結構闇
特徴
• テーブルとクラスが一対一
• 基本テーブルは関連を持っている
• Viewにビジネスロジック、ドメインモデルが漏
れだす
問題
• テーブル構造を隠蔽しきれなくなる
• 関連地獄
• ファットモデル
• マイクロサービスに切り出しにくい
• オブジェクトがただのDAO(Data Access Object)
DDD
ドメイン駆動設計
DDDのメリット
• ビジネスドメインへの理解が深まる。
• ドメインモデルを蒸留させることができる。
• 関連を最小限に抑えることが出来る。
• マイクロサービスと相性が良い。
社内勉強会を開きました。
頑張った甲斐あった
やったこと
コンテキストマップを作り
まだ着手したばかり
ありがとうございました
。

More Related Content

What's hot

だれも教えてくれないJavaの世界。 あと、ぼくが会社員になったわけ。
だれも教えてくれないJavaの世界。 あと、ぼくが会社員になったわけ。だれも教えてくれないJavaの世界。 あと、ぼくが会社員になったわけ。
だれも教えてくれないJavaの世界。 あと、ぼくが会社員になったわけ。
なおき きしだ
 
チーム運用で苦労した話_20160629
チーム運用で苦労した話_20160629チーム運用で苦労した話_20160629
チーム運用で苦労した話_20160629
kohei noguchi
 
テストを書くのが嫌いな君へ #m3dev
テストを書くのが嫌いな君へ #m3devテストを書くのが嫌いな君へ #m3dev
テストを書くのが嫌いな君へ #m3dev
Kazuhiro Sera
 
Web技術勉強会 20110611
Web技術勉強会 20110611Web技術勉強会 20110611
Web技術勉強会 20110611
龍一 田中
 
エンジニアが役立つExcel講座_20160413
エンジニアが役立つExcel講座_20160413エンジニアが役立つExcel講座_20160413
エンジニアが役立つExcel講座_20160413
Keiichi Endo
 
研究フレームワーク
研究フレームワーク研究フレームワーク
研究フレームワーク
Arumaziro
 
20161212 selenium adventcalender
20161212 selenium adventcalender20161212 selenium adventcalender
20161212 selenium adventcalender
Naoya Kojima
 
Processing on web
Processing on webProcessing on web
Processing on web
幸翼 長瀬
 

What's hot (9)

だれも教えてくれないJavaの世界。 あと、ぼくが会社員になったわけ。
だれも教えてくれないJavaの世界。 あと、ぼくが会社員になったわけ。だれも教えてくれないJavaの世界。 あと、ぼくが会社員になったわけ。
だれも教えてくれないJavaの世界。 あと、ぼくが会社員になったわけ。
 
チーム運用で苦労した話_20160629
チーム運用で苦労した話_20160629チーム運用で苦労した話_20160629
チーム運用で苦労した話_20160629
 
テストを書くのが嫌いな君へ #m3dev
テストを書くのが嫌いな君へ #m3devテストを書くのが嫌いな君へ #m3dev
テストを書くのが嫌いな君へ #m3dev
 
Web技術勉強会 20110611
Web技術勉強会 20110611Web技術勉強会 20110611
Web技術勉強会 20110611
 
エンジニアが役立つExcel講座_20160413
エンジニアが役立つExcel講座_20160413エンジニアが役立つExcel講座_20160413
エンジニアが役立つExcel講座_20160413
 
研究フレームワーク
研究フレームワーク研究フレームワーク
研究フレームワーク
 
Bracketsについて
BracketsについてBracketsについて
Bracketsについて
 
20161212 selenium adventcalender
20161212 selenium adventcalender20161212 selenium adventcalender
20161212 selenium adventcalender
 
Processing on web
Processing on webProcessing on web
Processing on web
 

Similar to Finc microservice meetup_shigemura_lt

DevOps、その前に
DevOps、その前にDevOps、その前に
DevOps、その前に
Yuta Matsumura
 
大規模ソフトウェア開発とテストの経験について
大規模ソフトウェア開発とテストの経験について大規模ソフトウェア開発とテストの経験について
大規模ソフトウェア開発とテストの経験について
Rakuten Group, Inc.
 
はじめてのテスト技法
はじめてのテスト技法はじめてのテスト技法
はじめてのテスト技法
Tatsuya Saito
 
JavaScriptと共に歩いて行く決意をした君へ
JavaScriptと共に歩いて行く決意をした君へJavaScriptと共に歩いて行く決意をした君へ
JavaScriptと共に歩いて行く決意をした君へ
Muyuu Fujita
 
ソフトウェアテストを助ける発想支援ツール
ソフトウェアテストを助ける発想支援ツールソフトウェアテストを助ける発想支援ツール
ソフトウェアテストを助ける発想支援ツール
Akira Ikeda
 
20151126 cookpad talk_test_engineer
20151126 cookpad talk_test_engineer20151126 cookpad talk_test_engineer
20151126 cookpad talk_test_engineer
Kazuaki Matsuo
 
テスト勉強会よしおか100311 1
テスト勉強会よしおか100311 1テスト勉強会よしおか100311 1
テスト勉強会よしおか100311 1
Hiro Yoshioka
 
やろうぜ!簡易ユーザビリティテスト
やろうぜ!簡易ユーザビリティテストやろうぜ!簡易ユーザビリティテスト
やろうぜ!簡易ユーザビリティテスト
Takehisa Gokaichi
 
TDDBC osaka 2012/06/02
TDDBC osaka 2012/06/02TDDBC osaka 2012/06/02
TDDBC osaka 2012/06/02Hiro Yoshioka
 
テスト駆動開発入門
テスト駆動開発入門テスト駆動開発入門
テスト駆動開発入門
Shuji Watanabe
 
JaSST'15 Tokyo 初心者向けチュートリアル -初心者からの脱出!-
JaSST'15 Tokyo 初心者向けチュートリアル -初心者からの脱出!-JaSST'15 Tokyo 初心者向けチュートリアル -初心者からの脱出!-
JaSST'15 Tokyo 初心者向けチュートリアル -初心者からの脱出!-
崇 山﨑
 
テスト駆動開発の導入ーペアプログラミングの学習効果ー
テスト駆動開発の導入ーペアプログラミングの学習効果ーテスト駆動開発の導入ーペアプログラミングの学習効果ー
テスト駆動開発の導入ーペアプログラミングの学習効果ー
Shuji Watanabe
 
Dev love kansai
Dev love kansaiDev love kansai
Dev love kansai
Takafumi Ikeda
 
Introduction to Continuous Testing
Introduction to Continuous TestingIntroduction to Continuous Testing
Introduction to Continuous Testing
Atsuhiro Kubo
 
勉強会用資料:Javaアプリ作成
勉強会用資料:Javaアプリ作成勉強会用資料:Javaアプリ作成
勉強会用資料:Javaアプリ作成
ssuser331f24
 
Xpfp 070626
Xpfp 070626Xpfp 070626
Xpfp 070626takepu
 
スクラムにおけるQAメンバー(非開発者)の関わり方を模索してみた
スクラムにおけるQAメンバー(非開発者)の関わり方を模索してみたスクラムにおけるQAメンバー(非開発者)の関わり方を模索してみた
スクラムにおけるQAメンバー(非開発者)の関わり方を模索してみた
Takayoshi Sakaino
 
Distributed Agile using UML
Distributed Agile using UMLDistributed Agile using UML
Distributed Agile using UML
Kenji Hiranabe
 
開発作業やテストの時にMockでケースごとの UIチェックやテストを書きやすくする
開発作業やテストの時にMockでケースごとの UIチェックやテストを書きやすくする開発作業やテストの時にMockでケースごとの UIチェックやテストを書きやすくする
開発作業やテストの時にMockでケースごとの UIチェックやテストを書きやすくする
yugosugiyama
 
遅いクエリと向き合う仕組み #CybozuMeetup
遅いクエリと向き合う仕組み #CybozuMeetup遅いクエリと向き合う仕組み #CybozuMeetup
遅いクエリと向き合う仕組み #CybozuMeetup
S Akai
 

Similar to Finc microservice meetup_shigemura_lt (20)

DevOps、その前に
DevOps、その前にDevOps、その前に
DevOps、その前に
 
大規模ソフトウェア開発とテストの経験について
大規模ソフトウェア開発とテストの経験について大規模ソフトウェア開発とテストの経験について
大規模ソフトウェア開発とテストの経験について
 
はじめてのテスト技法
はじめてのテスト技法はじめてのテスト技法
はじめてのテスト技法
 
JavaScriptと共に歩いて行く決意をした君へ
JavaScriptと共に歩いて行く決意をした君へJavaScriptと共に歩いて行く決意をした君へ
JavaScriptと共に歩いて行く決意をした君へ
 
ソフトウェアテストを助ける発想支援ツール
ソフトウェアテストを助ける発想支援ツールソフトウェアテストを助ける発想支援ツール
ソフトウェアテストを助ける発想支援ツール
 
20151126 cookpad talk_test_engineer
20151126 cookpad talk_test_engineer20151126 cookpad talk_test_engineer
20151126 cookpad talk_test_engineer
 
テスト勉強会よしおか100311 1
テスト勉強会よしおか100311 1テスト勉強会よしおか100311 1
テスト勉強会よしおか100311 1
 
やろうぜ!簡易ユーザビリティテスト
やろうぜ!簡易ユーザビリティテストやろうぜ!簡易ユーザビリティテスト
やろうぜ!簡易ユーザビリティテスト
 
TDDBC osaka 2012/06/02
TDDBC osaka 2012/06/02TDDBC osaka 2012/06/02
TDDBC osaka 2012/06/02
 
テスト駆動開発入門
テスト駆動開発入門テスト駆動開発入門
テスト駆動開発入門
 
JaSST'15 Tokyo 初心者向けチュートリアル -初心者からの脱出!-
JaSST'15 Tokyo 初心者向けチュートリアル -初心者からの脱出!-JaSST'15 Tokyo 初心者向けチュートリアル -初心者からの脱出!-
JaSST'15 Tokyo 初心者向けチュートリアル -初心者からの脱出!-
 
テスト駆動開発の導入ーペアプログラミングの学習効果ー
テスト駆動開発の導入ーペアプログラミングの学習効果ーテスト駆動開発の導入ーペアプログラミングの学習効果ー
テスト駆動開発の導入ーペアプログラミングの学習効果ー
 
Dev love kansai
Dev love kansaiDev love kansai
Dev love kansai
 
Introduction to Continuous Testing
Introduction to Continuous TestingIntroduction to Continuous Testing
Introduction to Continuous Testing
 
勉強会用資料:Javaアプリ作成
勉強会用資料:Javaアプリ作成勉強会用資料:Javaアプリ作成
勉強会用資料:Javaアプリ作成
 
Xpfp 070626
Xpfp 070626Xpfp 070626
Xpfp 070626
 
スクラムにおけるQAメンバー(非開発者)の関わり方を模索してみた
スクラムにおけるQAメンバー(非開発者)の関わり方を模索してみたスクラムにおけるQAメンバー(非開発者)の関わり方を模索してみた
スクラムにおけるQAメンバー(非開発者)の関わり方を模索してみた
 
Distributed Agile using UML
Distributed Agile using UMLDistributed Agile using UML
Distributed Agile using UML
 
開発作業やテストの時にMockでケースごとの UIチェックやテストを書きやすくする
開発作業やテストの時にMockでケースごとの UIチェックやテストを書きやすくする開発作業やテストの時にMockでケースごとの UIチェックやテストを書きやすくする
開発作業やテストの時にMockでケースごとの UIチェックやテストを書きやすくする
 
遅いクエリと向き合う仕組み #CybozuMeetup
遅いクエリと向き合う仕組み #CybozuMeetup遅いクエリと向き合う仕組み #CybozuMeetup
遅いクエリと向き合う仕組み #CybozuMeetup
 

Recently uploaded

クラウドネイティブにおけるセキュアなソフトウェア・サプライ・チェーンの考え方とベストプラクティス.pdf
クラウドネイティブにおけるセキュアなソフトウェア・サプライ・チェーンの考え方とベストプラクティス.pdfクラウドネイティブにおけるセキュアなソフトウェア・サプライ・チェーンの考え方とベストプラクティス.pdf
クラウドネイティブにおけるセキュアなソフトウェア・サプライ・チェーンの考え方とベストプラクティス.pdf
TatsuyaHanayama
 
CO2排出量見える化・削減・報告クラウド「アスエネ」サービス紹介_Saleshub.pdf
CO2排出量見える化・削減・報告クラウド「アスエネ」サービス紹介_Saleshub.pdfCO2排出量見える化・削減・報告クラウド「アスエネ」サービス紹介_Saleshub.pdf
CO2排出量見える化・削減・報告クラウド「アスエネ」サービス紹介_Saleshub.pdf
yamamotominami
 
Solanaで始めるRustプログラミング - Superteam Japan Developer Event
Solanaで始めるRustプログラミング - Superteam Japan Developer EventSolanaで始めるRustプログラミング - Superteam Japan Developer Event
Solanaで始めるRustプログラミング - Superteam Japan Developer Event
K Kinzal
 
NIST Cybersecurity Framework 2.0の変更点整理をしよう
NIST Cybersecurity Framework 2.0の変更点整理をしようNIST Cybersecurity Framework 2.0の変更点整理をしよう
NIST Cybersecurity Framework 2.0の変更点整理をしよう
You&I
 
シグネチャで始めるRustプログラミング - Superteam Japan Developer Event
シグネチャで始めるRustプログラミング - Superteam Japan Developer Eventシグネチャで始めるRustプログラミング - Superteam Japan Developer Event
シグネチャで始めるRustプログラミング - Superteam Japan Developer Event
K Kinzal
 
アジャイルの30年(Tree Decades of Agileというブログ記事に関する要約)
アジャイルの30年(Tree Decades of Agileというブログ記事に関する要約)アジャイルの30年(Tree Decades of Agileというブログ記事に関する要約)
アジャイルの30年(Tree Decades of Agileというブログ記事に関する要約)
You&I
 

Recently uploaded (6)

クラウドネイティブにおけるセキュアなソフトウェア・サプライ・チェーンの考え方とベストプラクティス.pdf
クラウドネイティブにおけるセキュアなソフトウェア・サプライ・チェーンの考え方とベストプラクティス.pdfクラウドネイティブにおけるセキュアなソフトウェア・サプライ・チェーンの考え方とベストプラクティス.pdf
クラウドネイティブにおけるセキュアなソフトウェア・サプライ・チェーンの考え方とベストプラクティス.pdf
 
CO2排出量見える化・削減・報告クラウド「アスエネ」サービス紹介_Saleshub.pdf
CO2排出量見える化・削減・報告クラウド「アスエネ」サービス紹介_Saleshub.pdfCO2排出量見える化・削減・報告クラウド「アスエネ」サービス紹介_Saleshub.pdf
CO2排出量見える化・削減・報告クラウド「アスエネ」サービス紹介_Saleshub.pdf
 
Solanaで始めるRustプログラミング - Superteam Japan Developer Event
Solanaで始めるRustプログラミング - Superteam Japan Developer EventSolanaで始めるRustプログラミング - Superteam Japan Developer Event
Solanaで始めるRustプログラミング - Superteam Japan Developer Event
 
NIST Cybersecurity Framework 2.0の変更点整理をしよう
NIST Cybersecurity Framework 2.0の変更点整理をしようNIST Cybersecurity Framework 2.0の変更点整理をしよう
NIST Cybersecurity Framework 2.0の変更点整理をしよう
 
シグネチャで始めるRustプログラミング - Superteam Japan Developer Event
シグネチャで始めるRustプログラミング - Superteam Japan Developer Eventシグネチャで始めるRustプログラミング - Superteam Japan Developer Event
シグネチャで始めるRustプログラミング - Superteam Japan Developer Event
 
アジャイルの30年(Tree Decades of Agileというブログ記事に関する要約)
アジャイルの30年(Tree Decades of Agileというブログ記事に関する要約)アジャイルの30年(Tree Decades of Agileというブログ記事に関する要約)
アジャイルの30年(Tree Decades of Agileというブログ記事に関する要約)
 

Finc microservice meetup_shigemura_lt