Submit Search
Upload
毎日が越境だ!
•
8 likes
•
10,551 views
増田 亨
Follow
エンジニアの学習と成長◆古い設計スタイルの呪縛を解く4つの合言葉◆「だいたいわかっている」の壁を突き抜ける5つの学習パターン
Read less
Read more
Software
Report
Share
Report
Share
1 of 51
Download now
Download to read offline
Recommended
ドメイン駆動設計 基本を理解する
ドメイン駆動設計 基本を理解する
増田 亨
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
Atsushi Nakamura
ドメイン駆動設計のためのオブジェクト指向入門
ドメイン駆動設計のためのオブジェクト指向入門
増田 亨
データモデリング・テクニック
データモデリング・テクニック
Hidekatsu Izuno
ドメイン駆動設計 ( DDD ) をやってみよう
ドメイン駆動設計 ( DDD ) をやってみよう
増田 亨
例外設計における大罪
例外設計における大罪
Takuto Wada
正しいものを正しく作る塾-設計コース
正しいものを正しく作る塾-設計コース
増田 亨
C# における Redis 徹底活用
C# における Redis 徹底活用
Takaaki Suzuki
Recommended
ドメイン駆動設計 基本を理解する
ドメイン駆動設計 基本を理解する
増田 亨
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
Atsushi Nakamura
ドメイン駆動設計のためのオブジェクト指向入門
ドメイン駆動設計のためのオブジェクト指向入門
増田 亨
データモデリング・テクニック
データモデリング・テクニック
Hidekatsu Izuno
ドメイン駆動設計 ( DDD ) をやってみよう
ドメイン駆動設計 ( DDD ) をやってみよう
増田 亨
例外設計における大罪
例外設計における大罪
Takuto Wada
正しいものを正しく作る塾-設計コース
正しいものを正しく作る塾-設計コース
増田 亨
C# における Redis 徹底活用
C# における Redis 徹底活用
Takaaki Suzuki
ドメイン駆動設計サンプルコードの徹底解説
ドメイン駆動設計サンプルコードの徹底解説
増田 亨
イミュータブルデータモデル(世代編)
イミュータブルデータモデル(世代編)
Yoshitaka Kawashima
ドメインオブジェクトの設計ガイドライン
ドメインオブジェクトの設計ガイドライン
増田 亨
ユーザーストーリー駆動開発で行こう。
ユーザーストーリー駆動開発で行こう。
toshihiro ichitani
ドメイン駆動設計のための Spring の上手な使い方
ドメイン駆動設計のための Spring の上手な使い方
増田 亨
世界一わかりやすいClean Architecture - DroidKaigiバージョン
世界一わかりやすいClean Architecture - DroidKaigiバージョン
Atsushi Nakamura
ドメイン駆動で開発する ラフスケッチから実装まで
ドメイン駆動で開発する ラフスケッチから実装まで
増田 亨
「実践ドメイン駆動設計」 から理解するDDD (2018年11月)
「実践ドメイン駆動設計」 から理解するDDD (2018年11月)
A AOKI
世界でいちばんわかりやすいドメイン駆動設計
世界でいちばんわかりやすいドメイン駆動設計
増田 亨
ソフトウェア設計の学び方を考える
ソフトウェア設計の学び方を考える
増田 亨
イミュータブルデータモデル(入門編)
イミュータブルデータモデル(入門編)
Yoshitaka Kawashima
ドメインオブジェクトの見つけ方・作り方・育て方
ドメインオブジェクトの見つけ方・作り方・育て方
増田 亨
私にとってのテスト
私にとってのテスト
Takuto Wada
オブジェクト指向エクササイズのススメ
オブジェクト指向エクササイズのススメ
Yoji Kanno
ドメインモデルの育て方
ドメインモデルの育て方
増田 亨
ドメイン駆動設計の正しい歩き方
ドメイン駆動設計の正しい歩き方
増田 亨
ドメイン駆動設計に15年取り組んでわかったこと
ドメイン駆動設計に15年取り組んでわかったこと
増田 亨
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
Koichiro Matsuoka
3週連続DDDその1 ドメイン駆動設計の基本を理解する
3週連続DDDその1 ドメイン駆動設計の基本を理解する
増田 亨
実践的な設計って、なんだろう?
実践的な設計って、なんだろう?
増田 亨
楽天市場で使われている技術、エンジニアに必要なコアスキルとはTechnology used in Rakuten, core skills neede...
楽天市場で使われている技術、エンジニアに必要なコアスキルとはTechnology used in Rakuten, core skills neede...
Rakuten Group, Inc.
チケットの利用による経験を活かした開発の可能性
チケットの利用による経験を活かした開発の可能性
Makoto SAKAI
More Related Content
What's hot
ドメイン駆動設計サンプルコードの徹底解説
ドメイン駆動設計サンプルコードの徹底解説
増田 亨
イミュータブルデータモデル(世代編)
イミュータブルデータモデル(世代編)
Yoshitaka Kawashima
ドメインオブジェクトの設計ガイドライン
ドメインオブジェクトの設計ガイドライン
増田 亨
ユーザーストーリー駆動開発で行こう。
ユーザーストーリー駆動開発で行こう。
toshihiro ichitani
ドメイン駆動設計のための Spring の上手な使い方
ドメイン駆動設計のための Spring の上手な使い方
増田 亨
世界一わかりやすいClean Architecture - DroidKaigiバージョン
世界一わかりやすいClean Architecture - DroidKaigiバージョン
Atsushi Nakamura
ドメイン駆動で開発する ラフスケッチから実装まで
ドメイン駆動で開発する ラフスケッチから実装まで
増田 亨
「実践ドメイン駆動設計」 から理解するDDD (2018年11月)
「実践ドメイン駆動設計」 から理解するDDD (2018年11月)
A AOKI
世界でいちばんわかりやすいドメイン駆動設計
世界でいちばんわかりやすいドメイン駆動設計
増田 亨
ソフトウェア設計の学び方を考える
ソフトウェア設計の学び方を考える
増田 亨
イミュータブルデータモデル(入門編)
イミュータブルデータモデル(入門編)
Yoshitaka Kawashima
ドメインオブジェクトの見つけ方・作り方・育て方
ドメインオブジェクトの見つけ方・作り方・育て方
増田 亨
私にとってのテスト
私にとってのテスト
Takuto Wada
オブジェクト指向エクササイズのススメ
オブジェクト指向エクササイズのススメ
Yoji Kanno
ドメインモデルの育て方
ドメインモデルの育て方
増田 亨
ドメイン駆動設計の正しい歩き方
ドメイン駆動設計の正しい歩き方
増田 亨
ドメイン駆動設計に15年取り組んでわかったこと
ドメイン駆動設計に15年取り組んでわかったこと
増田 亨
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
Koichiro Matsuoka
3週連続DDDその1 ドメイン駆動設計の基本を理解する
3週連続DDDその1 ドメイン駆動設計の基本を理解する
増田 亨
実践的な設計って、なんだろう?
実践的な設計って、なんだろう?
増田 亨
What's hot
(20)
ドメイン駆動設計サンプルコードの徹底解説
ドメイン駆動設計サンプルコードの徹底解説
イミュータブルデータモデル(世代編)
イミュータブルデータモデル(世代編)
ドメインオブジェクトの設計ガイドライン
ドメインオブジェクトの設計ガイドライン
ユーザーストーリー駆動開発で行こう。
ユーザーストーリー駆動開発で行こう。
ドメイン駆動設計のための Spring の上手な使い方
ドメイン駆動設計のための Spring の上手な使い方
世界一わかりやすいClean Architecture - DroidKaigiバージョン
世界一わかりやすいClean Architecture - DroidKaigiバージョン
ドメイン駆動で開発する ラフスケッチから実装まで
ドメイン駆動で開発する ラフスケッチから実装まで
「実践ドメイン駆動設計」 から理解するDDD (2018年11月)
「実践ドメイン駆動設計」 から理解するDDD (2018年11月)
世界でいちばんわかりやすいドメイン駆動設計
世界でいちばんわかりやすいドメイン駆動設計
ソフトウェア設計の学び方を考える
ソフトウェア設計の学び方を考える
イミュータブルデータモデル(入門編)
イミュータブルデータモデル(入門編)
ドメインオブジェクトの見つけ方・作り方・育て方
ドメインオブジェクトの見つけ方・作り方・育て方
私にとってのテスト
私にとってのテスト
オブジェクト指向エクササイズのススメ
オブジェクト指向エクササイズのススメ
ドメインモデルの育て方
ドメインモデルの育て方
ドメイン駆動設計の正しい歩き方
ドメイン駆動設計の正しい歩き方
ドメイン駆動設計に15年取り組んでわかったこと
ドメイン駆動設計に15年取り組んでわかったこと
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
3週連続DDDその1 ドメイン駆動設計の基本を理解する
3週連続DDDその1 ドメイン駆動設計の基本を理解する
実践的な設計って、なんだろう?
実践的な設計って、なんだろう?
Similar to 毎日が越境だ!
楽天市場で使われている技術、エンジニアに必要なコアスキルとはTechnology used in Rakuten, core skills neede...
楽天市場で使われている技術、エンジニアに必要なコアスキルとはTechnology used in Rakuten, core skills neede...
Rakuten Group, Inc.
チケットの利用による経験を活かした開発の可能性
チケットの利用による経験を活かした開発の可能性
Makoto SAKAI
Final present
Final present
Loc Huynh
Modeling in the Agile Age and casual astah models
Modeling in the Agile Age and casual astah models
Kenji Hiranabe
20150213 codescoreスキル可視化プレゼン資料
20150213 codescoreスキル可視化プレゼン資料
URANO HEIYA
20150213 codescoreスキル可視化プレゼン資料
20150213 codescoreスキル可視化プレゼン資料
ITmedia_HR(人事・採用)
DRIVE CHARTを支えるAI技術
DRIVE CHARTを支えるAI技術
Yusuke Uchida
楽天エンジニアライフ
楽天エンジニアライフ
Rakuten Group, Inc.
来栖川電算の技術紹介
来栖川電算の技術紹介
陽平 山口
チーム開発で徐々にコード品質をあげていく取り組み
チーム開発で徐々にコード品質をあげていく取り組み
Yuta Matsumura
自己紹介にかえて-変化する企業ITと“ワクワク感” 桑原里恵
自己紹介にかえて-変化する企業ITと“ワクワク感” 桑原里恵
Sapporo Sparkle k.k.
メンバーズグループ アジャイル開発への取り組み
メンバーズグループ アジャイル開発への取り組み
Hiroshi Tsukamoto
Find Your Ability: IA for a novice Web Creator
Find Your Ability: IA for a novice Web Creator
Nobuya Sato
チケット駆動開発の解説~タスク管理からプロセス改善へ
チケット駆動開発の解説~タスク管理からプロセス改善へ
akipii Oga
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
Takafumi ONAKA
Jssm26_スライド公表用
Jssm26_スライド公表用
Kyoko Hanada
人が作るソフトウェア 〜今組織パターンを読む意味〜
人が作るソフトウェア 〜今組織パターンを読む意味〜
Yukei Wachi
A16_VB でクラサバシステムの開発をしていた平凡なチームが、どのようにクラウドネイティブプロダクト開発にシフトしアジャイル開発を進めることができたのか...
A16_VB でクラサバシステムの開発をしていた平凡なチームが、どのようにクラウドネイティブプロダクト開発にシフトしアジャイル開発を進めることができたのか...
日本マイクロソフト株式会社
「納品のない受託開発」にみるソフトウェア受託開発の未来
「納品のない受託開発」にみるソフトウェア受託開発の未来
Yoshihito Kuranuki
Enterprise DevOps
Enterprise DevOps
智治 長沢
Similar to 毎日が越境だ!
(20)
楽天市場で使われている技術、エンジニアに必要なコアスキルとはTechnology used in Rakuten, core skills neede...
楽天市場で使われている技術、エンジニアに必要なコアスキルとはTechnology used in Rakuten, core skills neede...
チケットの利用による経験を活かした開発の可能性
チケットの利用による経験を活かした開発の可能性
Final present
Final present
Modeling in the Agile Age and casual astah models
Modeling in the Agile Age and casual astah models
20150213 codescoreスキル可視化プレゼン資料
20150213 codescoreスキル可視化プレゼン資料
20150213 codescoreスキル可視化プレゼン資料
20150213 codescoreスキル可視化プレゼン資料
DRIVE CHARTを支えるAI技術
DRIVE CHARTを支えるAI技術
楽天エンジニアライフ
楽天エンジニアライフ
来栖川電算の技術紹介
来栖川電算の技術紹介
チーム開発で徐々にコード品質をあげていく取り組み
チーム開発で徐々にコード品質をあげていく取り組み
自己紹介にかえて-変化する企業ITと“ワクワク感” 桑原里恵
自己紹介にかえて-変化する企業ITと“ワクワク感” 桑原里恵
メンバーズグループ アジャイル開発への取り組み
メンバーズグループ アジャイル開発への取り組み
Find Your Ability: IA for a novice Web Creator
Find Your Ability: IA for a novice Web Creator
チケット駆動開発の解説~タスク管理からプロセス改善へ
チケット駆動開発の解説~タスク管理からプロセス改善へ
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
Jssm26_スライド公表用
Jssm26_スライド公表用
人が作るソフトウェア 〜今組織パターンを読む意味〜
人が作るソフトウェア 〜今組織パターンを読む意味〜
A16_VB でクラサバシステムの開発をしていた平凡なチームが、どのようにクラウドネイティブプロダクト開発にシフトしアジャイル開発を進めることができたのか...
A16_VB でクラサバシステムの開発をしていた平凡なチームが、どのようにクラウドネイティブプロダクト開発にシフトしアジャイル開発を進めることができたのか...
「納品のない受託開発」にみるソフトウェア受託開発の未来
「納品のない受託開発」にみるソフトウェア受託開発の未来
Enterprise DevOps
Enterprise DevOps
More from 増田 亨
ソフトウェア開発のやり方の改善
ソフトウェア開発のやり方の改善
増田 亨
事業活動モデル・システム機能モデル・ビジネスロジックの記述
事業活動モデル・システム機能モデル・ビジネスロジックの記述
増田 亨
オブジェクト指向プログラミングの現在・過去・未来
オブジェクト指向プログラミングの現在・過去・未来
増田 亨
ドメイン駆動設計 コアドメインを語り合ってみよう
ドメイン駆動設計 コアドメインを語り合ってみよう
増田 亨
オブジェクト指向プログラミング入門 -- Java object-oriented programming primer
オブジェクト指向プログラミング入門 -- Java object-oriented programming primer
増田 亨
ドメイン駆動設計という設計スタイル
ドメイン駆動設計という設計スタイル
増田 亨
プロダクトづくりのためのソフトウェア設計スタイル
プロダクトづくりのためのソフトウェア設計スタイル
増田 亨
レガシーコードの複雑さに立ち向かう~ドメイン駆動設計のアプローチ
レガシーコードの複雑さに立ち向かう~ドメイン駆動設計のアプローチ
増田 亨
マイクロサービス 4つの分割アプローチ
マイクロサービス 4つの分割アプローチ
増田 亨
ビジネスルールの複雑さに立ち向かう
ビジネスルールの複雑さに立ち向かう
増田 亨
ソフトウェアの核心にある複雑さに立ち向かう
ソフトウェアの核心にある複雑さに立ち向かう
増田 亨
ドメイン駆動設計 本格入門
ドメイン駆動設計 本格入門
増田 亨
DDD sample code explained in Java
DDD sample code explained in Java
増田 亨
アジャイルなソフトウェア設計を目指して
アジャイルなソフトウェア設計を目指して
増田 亨
ドメイン駆動設計をゲーム開発に活かす
ドメイン駆動設計をゲーム開発に活かす
増田 亨
SoR 2.0 summary
SoR 2.0 summary
増田 亨
SoR 2.0 基幹システムの再定義と再構築
SoR 2.0 基幹システムの再定義と再構築
増田 亨
ドメイン駆動設計とは何か 【入門編】
ドメイン駆動設計とは何か 【入門編】
増田 亨
越境する情シス:進化可能なアーキテクチャを手に入れる
越境する情シス:進化可能なアーキテクチャを手に入れる
増田 亨
ドメイン駆動設計の基礎知識:設計のスタイル、開発のスタイル
ドメイン駆動設計の基礎知識:設計のスタイル、開発のスタイル
増田 亨
More from 増田 亨
(20)
ソフトウェア開発のやり方の改善
ソフトウェア開発のやり方の改善
事業活動モデル・システム機能モデル・ビジネスロジックの記述
事業活動モデル・システム機能モデル・ビジネスロジックの記述
オブジェクト指向プログラミングの現在・過去・未来
オブジェクト指向プログラミングの現在・過去・未来
ドメイン駆動設計 コアドメインを語り合ってみよう
ドメイン駆動設計 コアドメインを語り合ってみよう
オブジェクト指向プログラミング入門 -- Java object-oriented programming primer
オブジェクト指向プログラミング入門 -- Java object-oriented programming primer
ドメイン駆動設計という設計スタイル
ドメイン駆動設計という設計スタイル
プロダクトづくりのためのソフトウェア設計スタイル
プロダクトづくりのためのソフトウェア設計スタイル
レガシーコードの複雑さに立ち向かう~ドメイン駆動設計のアプローチ
レガシーコードの複雑さに立ち向かう~ドメイン駆動設計のアプローチ
マイクロサービス 4つの分割アプローチ
マイクロサービス 4つの分割アプローチ
ビジネスルールの複雑さに立ち向かう
ビジネスルールの複雑さに立ち向かう
ソフトウェアの核心にある複雑さに立ち向かう
ソフトウェアの核心にある複雑さに立ち向かう
ドメイン駆動設計 本格入門
ドメイン駆動設計 本格入門
DDD sample code explained in Java
DDD sample code explained in Java
アジャイルなソフトウェア設計を目指して
アジャイルなソフトウェア設計を目指して
ドメイン駆動設計をゲーム開発に活かす
ドメイン駆動設計をゲーム開発に活かす
SoR 2.0 summary
SoR 2.0 summary
SoR 2.0 基幹システムの再定義と再構築
SoR 2.0 基幹システムの再定義と再構築
ドメイン駆動設計とは何か 【入門編】
ドメイン駆動設計とは何か 【入門編】
越境する情シス:進化可能なアーキテクチャを手に入れる
越境する情シス:進化可能なアーキテクチャを手に入れる
ドメイン駆動設計の基礎知識:設計のスタイル、開発のスタイル
ドメイン駆動設計の基礎知識:設計のスタイル、開発のスタイル
毎日が越境だ!
1.
毎日が越境だ! エンジニアの学習と成長 有限会社システム設計 代表 ギルドワークス株式会社 取締役 増田
亨 DevLOVE201 越境ジャーニー
2.
エンジニアの学習と成長 3つの越境マインド 9つの越境スキル
3.
エンジニアの学習と成長 3 Special thanks to 慶應義塾大学
湘南藤沢キャンパス 井庭研究室 http://learningpatterns.sfc.keio.ac.jp/index.html
4.
ソフトウェア開発の技術者として 仕事としてのソフトウェア開発 開発の中心はプログラミング プログラミングの腕をあげたい そのために分析・設計スキルを磨く
5.
分析設計のスキル:私のアプローチ • Modularity モジュール性 –
高凝集 疎結合 • 「型」によるモジュール化 – データとロジックのカプセル化 – 小さなインタフェース、少ないインタフェース • ドメイン固有の「型」の発見と実装 – 金額型、数量型、日付型、… – 顧客区分、商品区分、在庫区分、… • ドメインロジック(ビジネスルール)の発見と整理の技法
6.
モジュール性の探求=分析設計スキル 第3章 モジュール性 第5章 オブジェクト技術への道 第10章
しなやかな設計 第14章 モデルの整合性 第15章 蒸留 第12章 大きなリファクタリング 第15章 部品から全体へ 第3章 業務ロジックの整理 第4章 ドメインモデル 第8章 アプリケーション間の連携 6
7.
私の越境:学習と成長の軌跡 – 原価計算シミュレータ(表計算ソフトのマクロ、製造業の管理部門) – グループウェア(自社プロダクト,Unix,
C) – データベース中心の世界へ (Oracle, SQL, DOA) – インターネットバブル (Java as better C) – eコマース専業のソフトウエアハウスの雇われ社長 • 大炎上プロジェクトの火消し役 – 人に「善い設計」を伝えることの難しさ – リファクタリング、ドメイン駆動設計との出会い • 善い設計の模索 – 人材領域 (求人、転職、人材紹介などで、20くらいの似て非なるサービス) – ISPサービス (レガシーとの戦い) – 成功したスタートアップ (大きな泥団子との戦い) – 30年物の販売管理システム再構築(歴史ある中堅商社の情シスとの遭遇) • 現在進行形 – 善い設計の探求、そのための分析スキル、そのための業務知識 – 善い設計の考え方・やり方の言語化と普及活動
8.
3つの越境マインド 8
9.
毎日の小さな変化への「気づき」 ビジョンという「思い」 自分の道
10.
毎日の小さな変化への気づき 3年前の自分 3年後の自分 3カ月前の自分 3か月後の自分 三日前の自分
三日後の自分
11.
毎日の小さな変化への気づき 自分の変化への気づき まわりの変化への気づき 世の中の変化への気づき
12.
昨日と同じ、明日も同じ 昨日と変わった、明日はもっと変わる • 経験値がワンポイントあがった • 安定性が増した •
方向が明確になった • 逆境への耐久力が増した • 思考停止の病が悪化した • 自分への嘘が増えた • 衰えた
13.
ビジョンという「思い」 思い描く自由 思い描く楽しさ 「思い」が生み出すパワー
14.
自分の道
15.
自分の道 自分の思いを大切に
16.
自分の道 自分の思いを大切に 道はひとつではないかもしれないが
17.
自分の道 自分の思いを大切に 自分で扉を開けながら 道はひとつではないかもしれないが
18.
自分の道 自分の思いを大切に 自分で扉を開けながら 道はひとつではないかもしれないが 自分らしく成長を続ける
19.
自分の道 自分の思いを大切に 自分で扉を開けながら 道はひとつではないかもしれないが 自分らしく成長を続ける 自分らしさが集まって より大きな成長を生み出す
20.
3つの越境マインド 毎日の小さな変化への気づき ビジョンという思い 自分の道
21.
9つの越境スキル 21
22.
9つの越境スキル 22 「古い設計スタイル」の呪縛を解く4つの合言葉 「だいたい知っている/いちおうできる」の壁を乗り越える 5つの学習パターン
23.
古い設計スタイルの呪縛を解く 4つの合言葉 23
24.
インクリメンタルな設計 ビジネスルール 型によるモジュール化 ソースコード as ドキュメント
25.
インクリメンタルな設計 25
26.
インクリメンタルな設計 • アップフロントの設計よりも、インクリメンタルな設計を – 最初から良い設計は見つからない –
「これで完成」という設計はない • ざくっと設計してみる – 書いてみてフィードバック – 動かしてみてフィードバック – 改善ネタが見つかったら実験してみる • 繰り返す – 毎日が設計 自分がアップフロントの設計にとらわれていることを自覚する
27.
ビジネスルール 27
28.
ビジネスルール • 業務アプリケーションの複雑さの根源 • 事業の運営が複雑なことの反映 •
システムの構成要素として、ビジネスルールを独 立させると、新たなシステム開発の道筋が見え てくる – ビジネスルールのモジュール – ビジネスルールの分析・設計・実装の活動 – ビジネスルールのスコープ/品質/進捗の管理
29.
ビジネスルール 従来の設計スタイル • 入出力中心の設計 – 画面定義 –
データベース設計 – 機能設計=入出力処理 • ビジネスルール記述の重複 – 入出設計と機能設計の中に埋 め込む – 重複記述 • 暗黙知 – if code == 13 then flag = 1 これからの設計スタイル • ビジネスルールに焦点 – ビジネスルールの発見と整理 – 入出力設計/機能設計から独 立させる • 記述の一元化 – ビジネスルールを表現する データとロジックをカプセル化 – モジュールとして独立させる • コードで表現 – if メーカー直送 then 送料請求 29
30.
3層アーキテクチャ 30 プレゼンテーション層 データソース層 アプリケーション層 30 入出力処理 画面入出力 Web API データベース入出力 メッセージ送信 入出力設計+機能設計 ビジネスルールが 入出力処理の手続きに 暗黙的に埋め込まれる
31.
3層+ドメインモデル 31 プレゼンテーション層 データソース層 アプリケーション層 31 入出力処理 ビジネスルール実行 ビジネスアクション指示 画面入出力 Web API データベース入出力 メッセージ送信 入出力設計+機能設計 ビジネスルール 計算ロジック 判定ロジック ビジネスルールの分析設計 金額、数量、期日、場所、… 金額範囲、数量範囲、期間、… 顧客区分、商品区分、… 配送区分、地域区分、請求区分、… ビジネスルールの記述を 独立したモジュールに 分離する
32.
型によるモジュール化 32
33.
モジュール性の向上 従来の設計スタイル • 分解のしやすさ • 機能単位のモジュール化 •
データの正規化/一元化 • 概念と実装の分離 • 「既存」を変更しない 増築/外付けでがんばる くさいものにふたをする これからの設計スタイル • 組み立てやすさ • データとロジックのカプセル化 • ロジックの正規化/一元化 • 概念と実装の連続性 • 変更(組み立て直し)を続ける 変更の影響の局所化 日常的に変更する 33
34.
モジュール性の向上=分析設計スキル 第3章 モジュール性 第5章 オブジェクト技術への道 第10章
しなやかな設計 第14章 モデルの整合性 第15章 蒸留 第12章 大きなリファクタリング 第15章 部品から全体へ 第3章 業務ロジックの整理 第4章 ドメインモデル 第8章 アプリケーション間の連携 34
35.
独自のデータ型の設計者になる ©有限会社システム設計 35 数値 日付
判定結果 コレクション 汎用の型 int long BigDecimal LocalDate boolean 配列 List<T> Map<K,V> アプリケーション 固有の型を用意 して記述する 金額 数量 単価 年齢 日数 ポイント 期限 予定日 誕生日 確定日 顧客種別 割引可否 送料区分 年齢区分 価格表 カタログ 在庫表 履歴 スケジュール 売買契約
36.
ビジネスルールを記述する型の設計 • 計算ルールを記述するための型 – 値オブジェクト:金額型、数量型、日付型、… •
計算の元データと計算結果を表現する型 • 内部に計算ロジックを持つ • 判定ルールを記述するための型 – 区分オブジェクト • 分岐条件(input)としての区分 – 顧客区分、商品区分、地域区分、… • 判定結果(output)としての区分 – 出荷可否、配送方法、料金区分、… ©有限会社 システム設計 36 本日の演習の中心テーマ ・イベントの区分 ・状態の区分
37.
3層+ドメインモデル 37 プレゼンテーション層 データソース層 アプリケーション層 37 入出力処理 ビジネスルール実行 ビジネスアクション指示 画面入出力 Web API データベース入出力 メッセージ送信 入出力設計+機能設計 ビジネスルール 計算ロジック 判定ロジック ビジネスルールの分析設計 金額、数量、期日、場所、… 金額範囲、数量範囲、期間、… 顧客区分、商品区分、… 配送区分、地域区分、請求区分、… ビジネスルールの記述を 独立したモジュールに 分離する
38.
型によるモジュール化 • 汎用のデータ型だけで記述するスタイル – データクラス(データ構造体) –
機能クラス(トランザクションスクリプト):処理単位にモジュール化 – ビジネスルールの暗黙的な記述 – ビジネスルールの記述の重複 • 固有の型を設計して記述するスタイル – ビジネスルールの結果(目的)を「型」で明示 • 計算結果 • 判定結果 – ビジネスルールで扱う値と計算ロジックを「型」で明示 • 金額型、数量型、日付型、… – データとロジックを「型」(クラス)という単位にモジュール化する – ひとつのビジネスルールの記述を特定の型に一元化できる ©有限会社 システム設計 38
39.
ソースコード as ドキュメント 39
40.
エンジニアのアウトプット ソースコード 説明資料 図表 方眼紙 ブログ tweet
41.
ソースコード as ドキュメント •
クラス名、メソッド名、パッケージ名という説明 • 式の型、メソッドの型、引数の型という説明 • アノテーションという説明 • 図や一覧がほしかったら自動生成する ソースコードをドキュメントとして活用する工夫を積み重ねる
42.
古い設計スタイルの呪縛を解く 4つの合言葉 インクリメンタルな設計 ビジネスルール 型によるモジュール化 ソースコード as ドキュメント
43.
「だいたい知っている」 「いちおうできる」 この壁を乗り越える 5つの学習パターン 43
44.
量が質を生む 広げながら掘り下げる 鳥の眼、虫の眼 隠れた関係性から学ぶ 三日坊主を繰り返す
45.
量が質を生む Quality from Quantity 大量の情報を凝縮すると、理解や思考の飛躍が起きる。 読書量 積読量 パケット量 コミット量 リファクタリング量 失敗量 … 壁を超えるために大量の情報を体にインプットする
46.
広げながら掘り下げる Triangle Scaling 多くに目を向け、ひとつを極める。 これがすべての基本である。 深堀のために、多くに目を向けてみる 多くに目を向けるために、深堀をしてみる 堀が浅いと視野が狭くなる 視野が狭いが堀が浅くなる
47.
鳥の眼、虫の眼 A Bird's- &
Bug's-Eye View 俯瞰して全体を見ることと、詳細に部分を見ること。 この二つの視点を行き来する。 全体と部分は同時には見れない だったら行ったり来たりすればよい 俯瞰と詳細の行ったり来たりを習慣にする そうすると、 俯瞰から詳細が見え 詳細から俯瞰が見える ようになる
48.
隠れた関係性から学ぶ Hidden Connections 意外なつながりこそ面白い! 見えていなかった関係性に気づくとき それが、ブレークスルーの瞬間 そのために 量で質を生み 広げながら掘り下げ 鳥の眼、虫の眼を行き来する
49.
三日坊主を繰り返す 三日坊主でよい 飽きたら、別のことをやる 続かないことを卑下することはない みんなできていない 思いついたらいつでも再開すればよい それでまた三日坊主でよい 三日坊主を繰り返せば、量を生み出せる ある時、量が質になり、隠れた関係性が見える 継続は難しい ブレークスルー
50.
壁を超える5つの学習パターン 量は質を生む 広げながら掘り下げる 鳥の眼、虫の眼 隠れた関係性から学ぶ 三日坊主を繰り返す
51.
エンジニアの学習と成長 51 Special thanks to 慶應義塾大学
湘南藤沢キャンパス 井庭研究室 http://learningpatterns.sfc.keio.ac.jp/index.html
Download now