SlideShare ist ein Scribd-Unternehmen logo
1 von 56
SPEEDA新機能開発に
DDD/TDDを取り入れた話
自己紹介
- ヤップ・ジェイソン
- フィリピン出身
- 東京で働いて4年目
- ユーザベースに2014年11月入社
- 現在 SPEEDAプロジェクトチーム
SPEEDAとは
- 企業・業界分析の情報フラットホーム
- 全世界330万社超 / 550業界のデータ
- 世界最大級のM&Aデータ
- 2009年6月ローンチ
- 600社超に導入済み(国外含む)
Speeda新機能開発にddd tddを取り入れた話
SPEEDAにある帳票(PIB - Public Information Book
)- 企業の包括的なレポート
- 企業概要、競合比較表、いろいろなチャート等
- Word, PPT, PDFのフォーマット形式にてダウンロードできる
- 約14ページ
Speeda新機能開発にddd tddを取り入れた話
Speeda新機能開発にddd tddを取り入れた話
Speeda新機能開発にddd tddを取り入れた話
PIBはすごくリッチなレポートだけど長すぎて読む
時間がない
クイックサマリーを作ろう
クイックサマリー (ファーストバージョン)
- 日本上場企業
- PDFのみ
- レイアウトが固定
デベロッパー:2人
私先輩
よっしゃ!TDDとDDDやる
ぞ!!
TDDとDDDを勉強したい!
やらせてください!!
ありがとうございます!!
うい〜
アーキテクチャー
言語・ツール
- Java 8
- Scala (結合テスト)
- AsposePDF (PDF作成ライブラリ)
苦労したエピソードベスト4
1. ビジネスモデルをコード化する
2. ソースコード自体を仕様書にする
3. クラスの名前
4. クラスっていつ作るの?テスト書く前?テスト書いた後?
4. Javaクラスっていつ作るの?テスト書く前?
テスト書いた後?
CompanyRepositoryTest#
GetCompanyById
CompanyRepository#get
CompanyRepositoryTest#
GetCompanyById
CompanyRepository#get
CompanyFactory#create CompanyProfile
Company
Name
Ticker Address
CompanyRepositoryTest#
GetCompanyById
CompanyRepository#get
hoge hoge hoge
CompanyFactory#create CompanyProfile
Company
Name
Ticker Address
CompanyRepositoryTest#
GetCompanyById
CompanyRepository#get
テストを書くのを
忘れちゃう
hoge hoge hoge
1. テストを書く (クラスやメソッドが存在しないのでコンパイルエラーになる)
1. メソッドの実装がまだなので、モックフレームワークを使う (JMockit)
1. コンパイルエラーになっているクラスやメソッドを作る
1. テスト実行
1. 実装がないメソッドのテストを書く
CompanyFactory#create CompanyProfile
CompanyRepositoryTest#
GetCompanyById
CompanyRepository#get
JMockitでcreateメソッド
をモックする
何もないオブジェク
トを作るだけ
3. クラスの名前
ユビキタス言語 (Ubiquitous language)
ユビキタス言語 (Ubiquitous language)
ユビキタス言語とは、Eric
Evansが『Domain Driven
Design』において、開発者とユ
ーザーとの間で共通の厳格な意
味を持つ用語を構築するという
プラクティスを表すために使用
した用語である。
http://bliki-ja.github.io/UbiquitousLanguage/
ユーザベースが日本企業なのでみんなが日本語を使
っている
ただ、クラス名とかローマ字にするとちょっとわか
りにくい
Speeda新機能開発にddd tddを取り入れた話
Speeda新機能開発にddd tddを取り入れた話
もしオフショアチームができたら日本語がわからない
やっぱり英語で
上司
市場情報を入れて
私
StockMarket Market Exchange
私
英語得意でこの業務に詳しい人に聞かないと
StockMarketでよさそう!
Subject Matter
Expert
(その業務の専門家)
私
Speeda新機能開発にddd tddを取り入れた話
2. ソースコード自体を仕様書にする
Speeda新機能開発にddd tddを取り入れた話
非上場の場合、Ticker (証券コード)がない
住所のデータがない企業が多い
Java8のOptionalが助けてくれる
Speeda新機能開発にddd tddを取り入れた話
でもOptionalってserializableじゃないでしょう
厳密ではないですが、実装等をなるべくdomain
classに意識させない。
1. ビジネスモデルをコード化する
仕様書
Speeda新機能開発にddd tddを取り入れた話
SPEEDA業務 SPEEDA業務
PDF Generator ServiceFactoryRepository
JSON
SPEEDAドメイ
ンクラス
帳票 (PDF)パラメータ
PDF Generator ServiceFactoryRepository
JSON
SPEEDAドメイ
ンクラス
帳票用 SPEEDA
ドメインクラス
帳票 (PDF)パラメータ
Speeda新機能開発にddd tddを取り入れた話
PDF
Page
Page
Page
ComponentGroup ComponentGroup
Component
Component
Component
Element
Element
Element
Element
SPEEDAドメ
インクラス
Component
Element
SPEEDAドメ
インクラス
リリースした
今後TDDとDDDを他のプロジェクトにも採用するの
で
エンジニアを募集中です。
TDDとDDDに興味がある方、技術好きな方はぜひ
終

Weitere ähnliche Inhalte

Andere mochten auch

[db tech showcase Tokyo 2016] D24: データベース環境における検証結果から理解する失敗しないフラッシュ活用法 第三章 ~デ...
[db tech showcase Tokyo 2016] D24: データベース環境における検証結果から理解する失敗しないフラッシュ活用法 第三章 ~デ...[db tech showcase Tokyo 2016] D24: データベース環境における検証結果から理解する失敗しないフラッシュ活用法 第三章 ~デ...
[db tech showcase Tokyo 2016] D24: データベース環境における検証結果から理解する失敗しないフラッシュ活用法 第三章 ~デ...Insight Technology, Inc.
 
AWS Summit Chicago 2016発表のサービスアップデートまとめ
AWS Summit Chicago 2016発表のサービスアップデートまとめAWS Summit Chicago 2016発表のサービスアップデートまとめ
AWS Summit Chicago 2016発表のサービスアップデートまとめAmazon Web Services Japan
 
Scrum Bangalore 18th Meetup - October 15, 2016 - Agile Architecture - Deepak ...
Scrum Bangalore 18th Meetup - October 15, 2016 - Agile Architecture - Deepak ...Scrum Bangalore 18th Meetup - October 15, 2016 - Agile Architecture - Deepak ...
Scrum Bangalore 18th Meetup - October 15, 2016 - Agile Architecture - Deepak ...Scrum Bangalore
 
KVM環境におけるネットワーク速度ベンチマーク
KVM環境におけるネットワーク速度ベンチマークKVM環境におけるネットワーク速度ベンチマーク
KVM環境におけるネットワーク速度ベンチマークVirtualTech Japan Inc.
 
IoT and Evolution of Mobile Networks toward 5G
IoT and Evolution of Mobile Networks toward 5GIoT and Evolution of Mobile Networks toward 5G
IoT and Evolution of Mobile Networks toward 5GOsaka University
 
「レガシーコード」とはいったい?
「レガシーコード」とはいったい?「レガシーコード」とはいったい?
「レガシーコード」とはいったい?Hiroyuki Ohnaka
 
DBTS2016 Data as Code - Delphix
DBTS2016 Data as Code - DelphixDBTS2016 Data as Code - Delphix
DBTS2016 Data as Code - DelphixMasaya Ishikawa
 
今からはじめるPuppet 2016 ~ インフラエンジニアのたしなみ ~
今からはじめるPuppet 2016 ~ インフラエンジニアのたしなみ ~今からはじめるPuppet 2016 ~ インフラエンジニアのたしなみ ~
今からはじめるPuppet 2016 ~ インフラエンジニアのたしなみ ~NTT DATA OSS Professional Services
 
20161027 hadoop summit Generating Recommendations at Amazon Scale with Apach...
20161027 hadoop summit  Generating Recommendations at Amazon Scale with Apach...20161027 hadoop summit  Generating Recommendations at Amazon Scale with Apach...
20161027 hadoop summit Generating Recommendations at Amazon Scale with Apach...Amazon Web Services Japan
 
イノベーションに向けたR&dの再定義
イノベーションに向けたR&dの再定義イノベーションに向けたR&dの再定義
イノベーションに向けたR&dの再定義Osaka University
 
OSS活動の活発さと評価の関係について
OSS活動の活発さと評価の関係についてOSS活動の活発さと評価の関係について
OSS活動の活発さと評価の関係についてTakuto Wada
 
師弟登壇2015 GMOペパボ @hfm
師弟登壇2015 GMOペパボ @hfm師弟登壇2015 GMOペパボ @hfm
師弟登壇2015 GMOペパボ @hfmTakahiro Okumura
 
Tokyo Salesforce DG Meetup 2017新年会〜Advent Calendarふりかえり〜
Tokyo Salesforce DG Meetup 2017新年会〜Advent Calendarふりかえり〜Tokyo Salesforce DG Meetup 2017新年会〜Advent Calendarふりかえり〜
Tokyo Salesforce DG Meetup 2017新年会〜Advent Calendarふりかえり〜Akira Kuratani
 
『OpenStack共同検証ラボ』のご紹介 - OpenStack最新情報セミナー 2016年3月
『OpenStack共同検証ラボ』のご紹介 - OpenStack最新情報セミナー 2016年3月 『OpenStack共同検証ラボ』のご紹介 - OpenStack最新情報セミナー 2016年3月
『OpenStack共同検証ラボ』のご紹介 - OpenStack最新情報セミナー 2016年3月 VirtualTech Japan Inc.
 
Railsによるワイルドなソフトウェア開発
Railsによるワイルドなソフトウェア開発Railsによるワイルドなソフトウェア開発
Railsによるワイルドなソフトウェア開発Drecom Co., Ltd.
 
ビッグデータで開扉されるイノベーション社会
ビッグデータで開扉されるイノベーション社会ビッグデータで開扉されるイノベーション社会
ビッグデータで開扉されるイノベーション社会Osaka University
 
アジャイル開発をよりアジャイルに
アジャイル開発をよりアジャイルにアジャイル開発をよりアジャイルに
アジャイル開発をよりアジャイルにESM SEC
 
CodeZineAcademy TDD実践講座PR資料
CodeZineAcademy TDD実践講座PR資料CodeZineAcademy TDD実践講座PR資料
CodeZineAcademy TDD実践講座PR資料Yasui Tsutomu
 
ログ分析からセキュリティ監視まで:Oracle Management Cloudで実現するIT運用データのビッグデータ分析 [Oracle Cloud D...
ログ分析からセキュリティ監視まで:Oracle Management Cloudで実現するIT運用データのビッグデータ分析 [Oracle Cloud D...ログ分析からセキュリティ監視まで:Oracle Management Cloudで実現するIT運用データのビッグデータ分析 [Oracle Cloud D...
ログ分析からセキュリティ監視まで:Oracle Management Cloudで実現するIT運用データのビッグデータ分析 [Oracle Cloud D...オラクルエンジニア通信
 

Andere mochten auch (20)

[db tech showcase Tokyo 2016] D24: データベース環境における検証結果から理解する失敗しないフラッシュ活用法 第三章 ~デ...
[db tech showcase Tokyo 2016] D24: データベース環境における検証結果から理解する失敗しないフラッシュ活用法 第三章 ~デ...[db tech showcase Tokyo 2016] D24: データベース環境における検証結果から理解する失敗しないフラッシュ活用法 第三章 ~デ...
[db tech showcase Tokyo 2016] D24: データベース環境における検証結果から理解する失敗しないフラッシュ活用法 第三章 ~デ...
 
AWS Summit Chicago 2016発表のサービスアップデートまとめ
AWS Summit Chicago 2016発表のサービスアップデートまとめAWS Summit Chicago 2016発表のサービスアップデートまとめ
AWS Summit Chicago 2016発表のサービスアップデートまとめ
 
Scrum Bangalore 18th Meetup - October 15, 2016 - Agile Architecture - Deepak ...
Scrum Bangalore 18th Meetup - October 15, 2016 - Agile Architecture - Deepak ...Scrum Bangalore 18th Meetup - October 15, 2016 - Agile Architecture - Deepak ...
Scrum Bangalore 18th Meetup - October 15, 2016 - Agile Architecture - Deepak ...
 
KVM環境におけるネットワーク速度ベンチマーク
KVM環境におけるネットワーク速度ベンチマークKVM環境におけるネットワーク速度ベンチマーク
KVM環境におけるネットワーク速度ベンチマーク
 
IoT and Evolution of Mobile Networks toward 5G
IoT and Evolution of Mobile Networks toward 5GIoT and Evolution of Mobile Networks toward 5G
IoT and Evolution of Mobile Networks toward 5G
 
「レガシーコード」とはいったい?
「レガシーコード」とはいったい?「レガシーコード」とはいったい?
「レガシーコード」とはいったい?
 
DBTS2016 Data as Code - Delphix
DBTS2016 Data as Code - DelphixDBTS2016 Data as Code - Delphix
DBTS2016 Data as Code - Delphix
 
今からはじめるPuppet 2016 ~ インフラエンジニアのたしなみ ~
今からはじめるPuppet 2016 ~ インフラエンジニアのたしなみ ~今からはじめるPuppet 2016 ~ インフラエンジニアのたしなみ ~
今からはじめるPuppet 2016 ~ インフラエンジニアのたしなみ ~
 
20161027 hadoop summit Generating Recommendations at Amazon Scale with Apach...
20161027 hadoop summit  Generating Recommendations at Amazon Scale with Apach...20161027 hadoop summit  Generating Recommendations at Amazon Scale with Apach...
20161027 hadoop summit Generating Recommendations at Amazon Scale with Apach...
 
イノベーションに向けたR&dの再定義
イノベーションに向けたR&dの再定義イノベーションに向けたR&dの再定義
イノベーションに向けたR&dの再定義
 
OSS活動の活発さと評価の関係について
OSS活動の活発さと評価の関係についてOSS活動の活発さと評価の関係について
OSS活動の活発さと評価の関係について
 
師弟登壇2015 GMOペパボ @hfm
師弟登壇2015 GMOペパボ @hfm師弟登壇2015 GMOペパボ @hfm
師弟登壇2015 GMOペパボ @hfm
 
Tokyo Salesforce DG Meetup 2017新年会〜Advent Calendarふりかえり〜
Tokyo Salesforce DG Meetup 2017新年会〜Advent Calendarふりかえり〜Tokyo Salesforce DG Meetup 2017新年会〜Advent Calendarふりかえり〜
Tokyo Salesforce DG Meetup 2017新年会〜Advent Calendarふりかえり〜
 
『OpenStack共同検証ラボ』のご紹介 - OpenStack最新情報セミナー 2016年3月
『OpenStack共同検証ラボ』のご紹介 - OpenStack最新情報セミナー 2016年3月 『OpenStack共同検証ラボ』のご紹介 - OpenStack最新情報セミナー 2016年3月
『OpenStack共同検証ラボ』のご紹介 - OpenStack最新情報セミナー 2016年3月
 
Railsによるワイルドなソフトウェア開発
Railsによるワイルドなソフトウェア開発Railsによるワイルドなソフトウェア開発
Railsによるワイルドなソフトウェア開発
 
ビッグデータで開扉されるイノベーション社会
ビッグデータで開扉されるイノベーション社会ビッグデータで開扉されるイノベーション社会
ビッグデータで開扉されるイノベーション社会
 
Bambooによる継続的デリバリー
Bambooによる継続的デリバリーBambooによる継続的デリバリー
Bambooによる継続的デリバリー
 
アジャイル開発をよりアジャイルに
アジャイル開発をよりアジャイルにアジャイル開発をよりアジャイルに
アジャイル開発をよりアジャイルに
 
CodeZineAcademy TDD実践講座PR資料
CodeZineAcademy TDD実践講座PR資料CodeZineAcademy TDD実践講座PR資料
CodeZineAcademy TDD実践講座PR資料
 
ログ分析からセキュリティ監視まで:Oracle Management Cloudで実現するIT運用データのビッグデータ分析 [Oracle Cloud D...
ログ分析からセキュリティ監視まで:Oracle Management Cloudで実現するIT運用データのビッグデータ分析 [Oracle Cloud D...ログ分析からセキュリティ監視まで:Oracle Management Cloudで実現するIT運用データのビッグデータ分析 [Oracle Cloud D...
ログ分析からセキュリティ監視まで:Oracle Management Cloudで実現するIT運用データのビッグデータ分析 [Oracle Cloud D...
 

Ähnlich wie Speeda新機能開発にddd tddを取り入れた話

企業・業界データサービスSPEEDAの開発における複雑怪奇なデータとの格闘
企業・業界データサービスSPEEDAの開発における複雑怪奇なデータとの格闘企業・業界データサービスSPEEDAの開発における複雑怪奇なデータとの格闘
企業・業界データサービスSPEEDAの開発における複雑怪奇なデータとの格闘Akira Kitauchi
 
Speeda 20200507 saleshub
Speeda 20200507 saleshubSpeeda 20200507 saleshub
Speeda 20200507 saleshubNatsuki Otake
 
Freee × Nport 経営数字の見える化をカンタンに実現する方法とは
Freee × Nport 経営数字の見える化をカンタンに実現する方法とは Freee × Nport 経営数字の見える化をカンタンに実現する方法とは
Freee × Nport 経営数字の見える化をカンタンに実現する方法とは marketing_freee_sbps
 
20151001 FeedTech-パネルディスカッション資料
20151001 FeedTech-パネルディスカッション資料20151001 FeedTech-パネルディスカッション資料
20151001 FeedTech-パネルディスカッション資料Yoshihiro Okada
 
アジャイル開発と私たちのやり方
アジャイル開発と私たちのやり方アジャイル開発と私たちのやり方
アジャイル開発と私たちのやり方Moriyuki Hirata
 

入社4ヶ月 新入りPdMの取り組み

入社4ヶ月 新入りPdMの取り組み
入社4ヶ月 新入りPdMの取り組み

入社4ヶ月 新入りPdMの取り組みTsuyoshi Nagahashi
 
シラサギ紹介20161119
シラサギ紹介20161119シラサギ紹介20161119
シラサギ紹介20161119Naokazu Nohara
 
09 OSPD レジャーサービス
09 OSPD レジャーサービス09 OSPD レジャーサービス
09 OSPD レジャーサービスYuto Yoshida
 
売上に効くデータ組織~データから売上や利益を作るために何をしているか~
売上に効くデータ組織~データから売上や利益を作るために何をしているか~売上に効くデータ組織~データから売上や利益を作るために何をしているか~
売上に効くデータ組織~データから売上や利益を作るために何をしているか~Recruit Lifestyle Co., Ltd.
 
ドローン向けソフトウェア事業
ドローン向けソフトウェア事業ドローン向けソフトウェア事業
ドローン向けソフトウェア事業Masayuki Isobe
 
プロダクトマネジメントパラダイム
プロダクトマネジメントパラダイムプロダクトマネジメントパラダイム
プロダクトマネジメントパラダイムTakashi Ohida
 
Drupal business consortiam in Japan:DBCJ 20140909
Drupal business consortiam in Japan:DBCJ  20140909Drupal business consortiam in Japan:DBCJ  20140909
Drupal business consortiam in Japan:DBCJ 20140909Hidekazu Ikeda
 
making an magazine with XP-practices
making an magazine with XP-practicesmaking an magazine with XP-practices
making an magazine with XP-practicesKenji Hiranabe
 
リクルートオープンデータの取り組み
リクルートオープンデータの取り組みリクルートオープンデータの取り組み
リクルートオープンデータの取り組みRecruit Technologies
 
[よくわかるクラウドデータベース] Amazon RDS for SQL Server導入事例
[よくわかるクラウドデータベース] Amazon RDS for SQL Server導入事例[よくわかるクラウドデータベース] Amazon RDS for SQL Server導入事例
[よくわかるクラウドデータベース] Amazon RDS for SQL Server導入事例Amazon Web Services Japan
 

Ähnlich wie Speeda新機能開発にddd tddを取り入れた話 (20)

企業・業界データサービスSPEEDAの開発における複雑怪奇なデータとの格闘
企業・業界データサービスSPEEDAの開発における複雑怪奇なデータとの格闘企業・業界データサービスSPEEDAの開発における複雑怪奇なデータとの格闘
企業・業界データサービスSPEEDAの開発における複雑怪奇なデータとの格闘
 
Speeda 20200507 saleshub
Speeda 20200507 saleshubSpeeda 20200507 saleshub
Speeda 20200507 saleshub
 
Freee × Nport 経営数字の見える化をカンタンに実現する方法とは
Freee × Nport 経営数字の見える化をカンタンに実現する方法とは Freee × Nport 経営数字の見える化をカンタンに実現する方法とは
Freee × Nport 経営数字の見える化をカンタンに実現する方法とは
 
Cloud Days Tokyo 2014
Cloud Days Tokyo 2014Cloud Days Tokyo 2014
Cloud Days Tokyo 2014
 
20151001 FeedTech-パネルディスカッション資料
20151001 FeedTech-パネルディスカッション資料20151001 FeedTech-パネルディスカッション資料
20151001 FeedTech-パネルディスカッション資料
 
アジャイル開発と私たちのやり方
アジャイル開発と私たちのやり方アジャイル開発と私たちのやり方
アジャイル開発と私たちのやり方
 

入社4ヶ月 新入りPdMの取り組み

入社4ヶ月 新入りPdMの取り組み
入社4ヶ月 新入りPdMの取り組み

入社4ヶ月 新入りPdMの取り組み
 
【Pm zen】pmはいつ学び始めるべきか? 20160311
【Pm zen】pmはいつ学び始めるべきか? 20160311【Pm zen】pmはいつ学び始めるべきか? 20160311
【Pm zen】pmはいつ学び始めるべきか? 20160311
 
シラサギ紹介20161119
シラサギ紹介20161119シラサギ紹介20161119
シラサギ紹介20161119
 
09 OSPD レジャーサービス
09 OSPD レジャーサービス09 OSPD レジャーサービス
09 OSPD レジャーサービス
 
売上に効くデータ組織~データから売上や利益を作るために何をしているか~
売上に効くデータ組織~データから売上や利益を作るために何をしているか~売上に効くデータ組織~データから売上や利益を作るために何をしているか~
売上に効くデータ組織~データから売上や利益を作るために何をしているか~
 
データサイエンス業務と「ツール」
データサイエンス業務と「ツール」データサイエンス業務と「ツール」
データサイエンス業務と「ツール」
 
ドローン向けソフトウェア事業
ドローン向けソフトウェア事業ドローン向けソフトウェア事業
ドローン向けソフトウェア事業
 
プロダクトマネジメントパラダイム
プロダクトマネジメントパラダイムプロダクトマネジメントパラダイム
プロダクトマネジメントパラダイム
 
Drupal business consortiam in Japan:DBCJ 20140909
Drupal business consortiam in Japan:DBCJ  20140909Drupal business consortiam in Japan:DBCJ  20140909
Drupal business consortiam in Japan:DBCJ 20140909
 
Portfolio gami0903
Portfolio gami0903Portfolio gami0903
Portfolio gami0903
 
Portfolio gami
Portfolio gamiPortfolio gami
Portfolio gami
 
making an magazine with XP-practices
making an magazine with XP-practicesmaking an magazine with XP-practices
making an magazine with XP-practices
 
リクルートオープンデータの取り組み
リクルートオープンデータの取り組みリクルートオープンデータの取り組み
リクルートオープンデータの取り組み
 
[よくわかるクラウドデータベース] Amazon RDS for SQL Server導入事例
[よくわかるクラウドデータベース] Amazon RDS for SQL Server導入事例[よくわかるクラウドデータベース] Amazon RDS for SQL Server導入事例
[よくわかるクラウドデータベース] Amazon RDS for SQL Server導入事例
 

Speeda新機能開発にddd tddを取り入れた話