Submit Search
Upload
ソフトウェア設計のすすめ
•
129 likes
•
39,758 views
Yoshimura Soichiro
Follow
社内LTでソフトウェア設計のすゝめを比較的新しいエンジニア向けにしたので、その資料を公開します。
Read less
Read more
Technology
Report
Share
Report
Share
1 of 51
Download now
Download to read offline
Recommended
DDDをScrumで廻す あるいは ScrumをDDDで廻す
DDDをScrumで廻す あるいは ScrumをDDDで廻す
Kiro Harada
デキるプログラマだけが知っているコードレビュー7つの秘訣
デキるプログラマだけが知っているコードレビュー7つの秘訣
Masahiro Nishimi
できる!並列・並行プログラミング
できる!並列・並行プログラミング
Preferred Networks
強いて言えば「集約どう実装するのかな、を考える」な話
強いて言えば「集約どう実装するのかな、を考える」な話
Yoshitaka Kawashima
世界でいちばんわかりやすいドメイン駆動設計
世界でいちばんわかりやすいドメイン駆動設計
増田 亨
正しいものを正しく作る塾-設計コース
正しいものを正しく作る塾-設計コース
増田 亨
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるな
Kentaro Matsui
ドメイン駆動設計 失敗したことと成功したこと
ドメイン駆動設計 失敗したことと成功したこと
BIGLOBE Inc.
Recommended
DDDをScrumで廻す あるいは ScrumをDDDで廻す
DDDをScrumで廻す あるいは ScrumをDDDで廻す
Kiro Harada
デキるプログラマだけが知っているコードレビュー7つの秘訣
デキるプログラマだけが知っているコードレビュー7つの秘訣
Masahiro Nishimi
できる!並列・並行プログラミング
できる!並列・並行プログラミング
Preferred Networks
強いて言えば「集約どう実装するのかな、を考える」な話
強いて言えば「集約どう実装するのかな、を考える」な話
Yoshitaka Kawashima
世界でいちばんわかりやすいドメイン駆動設計
世界でいちばんわかりやすいドメイン駆動設計
増田 亨
正しいものを正しく作る塾-設計コース
正しいものを正しく作る塾-設計コース
増田 亨
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるな
Kentaro Matsui
ドメイン駆動設計 失敗したことと成功したこと
ドメイン駆動設計 失敗したことと成功したこと
BIGLOBE Inc.
ドメイン駆動設計 ( DDD ) をやってみよう
ドメイン駆動設計 ( DDD ) をやってみよう
増田 亨
DDD Alliance レガシーなコードにドメイン駆動設計で立ち向かった5年間の軌跡
DDD Alliance レガシーなコードにドメイン駆動設計で立ち向かった5年間の軌跡
BIGLOBE Inc.
Redisの特徴と活用方法について
Redisの特徴と活用方法について
Yuji Otani
目grep入門 +解説
目grep入門 +解説
murachue
それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?
Yoshitaka Kawashima
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
Takuto Wada
ドメイン駆動設計 モデリング_実装入門勉強会_2020.3.8
ドメイン駆動設計 モデリング_実装入門勉強会_2020.3.8
Koichiro Matsuoka
リーンなコードを書こう:実践的なオブジェクト指向設計
リーンなコードを書こう:実践的なオブジェクト指向設計
増田 亨
イベント・ソーシングを知る
イベント・ソーシングを知る
Shuhei Fujita
5分でわかる良いスライドのつくりかた
5分でわかる良いスライドのつくりかた
Koki Kaku
Test Yourself - テストを書くと何がどう変わるか
Test Yourself - テストを書くと何がどう変わるか
Takuto Wada
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
Takafumi ONAKA
ChatGPTは思ったほど賢くない
ChatGPTは思ったほど賢くない
Carnot Inc.
「のどが渇いた」というユーザーに何を出す? ユーザーの「欲しい」に惑わされない、本当のインサイトを見つけるUXデザイン・UXリサーチ
「のどが渇いた」というユーザーに何を出す? ユーザーの「欲しい」に惑わされない、本当のインサイトを見つけるUXデザイン・UXリサーチ
Yoshiki Hayama
【BS13】チーム開発がこんなにも快適に!コーディングもデバッグも GitHub 上で。 GitHub Codespaces で叶えられるシームレスな開発
【BS13】チーム開発がこんなにも快適に!コーディングもデバッグも GitHub 上で。 GitHub Codespaces で叶えられるシームレスな開発
日本マイクロソフト株式会社
Python におけるドメイン駆動設計(戦術面)の勘どころ
Python におけるドメイン駆動設計(戦術面)の勘どころ
Junya Hayashi
オブジェクト指向プログラミングのためのモデリング入門
オブジェクト指向プログラミングのためのモデリング入門
増田 亨
3週連続DDDその1 ドメイン駆動設計の基本を理解する
3週連続DDDその1 ドメイン駆動設計の基本を理解する
増田 亨
【プレゼン】見やすいプレゼン資料の作り方【初心者用】
【プレゼン】見やすいプレゼン資料の作り方【初心者用】
MOCKS | Yuta Morishige
REST API のコツ
REST API のコツ
pospome
サービス開発における工程
サービス開発における工程
Hidetoshi Mori
It業界の優良企業の見つけ方 20140502 黒田
It業界の優良企業の見つけ方 20140502 黒田
Yusuke Kuroda
More Related Content
What's hot
ドメイン駆動設計 ( DDD ) をやってみよう
ドメイン駆動設計 ( DDD ) をやってみよう
増田 亨
DDD Alliance レガシーなコードにドメイン駆動設計で立ち向かった5年間の軌跡
DDD Alliance レガシーなコードにドメイン駆動設計で立ち向かった5年間の軌跡
BIGLOBE Inc.
Redisの特徴と活用方法について
Redisの特徴と活用方法について
Yuji Otani
目grep入門 +解説
目grep入門 +解説
murachue
それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?
Yoshitaka Kawashima
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
Takuto Wada
ドメイン駆動設計 モデリング_実装入門勉強会_2020.3.8
ドメイン駆動設計 モデリング_実装入門勉強会_2020.3.8
Koichiro Matsuoka
リーンなコードを書こう:実践的なオブジェクト指向設計
リーンなコードを書こう:実践的なオブジェクト指向設計
増田 亨
イベント・ソーシングを知る
イベント・ソーシングを知る
Shuhei Fujita
5分でわかる良いスライドのつくりかた
5分でわかる良いスライドのつくりかた
Koki Kaku
Test Yourself - テストを書くと何がどう変わるか
Test Yourself - テストを書くと何がどう変わるか
Takuto Wada
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
Takafumi ONAKA
ChatGPTは思ったほど賢くない
ChatGPTは思ったほど賢くない
Carnot Inc.
「のどが渇いた」というユーザーに何を出す? ユーザーの「欲しい」に惑わされない、本当のインサイトを見つけるUXデザイン・UXリサーチ
「のどが渇いた」というユーザーに何を出す? ユーザーの「欲しい」に惑わされない、本当のインサイトを見つけるUXデザイン・UXリサーチ
Yoshiki Hayama
【BS13】チーム開発がこんなにも快適に!コーディングもデバッグも GitHub 上で。 GitHub Codespaces で叶えられるシームレスな開発
【BS13】チーム開発がこんなにも快適に!コーディングもデバッグも GitHub 上で。 GitHub Codespaces で叶えられるシームレスな開発
日本マイクロソフト株式会社
Python におけるドメイン駆動設計(戦術面)の勘どころ
Python におけるドメイン駆動設計(戦術面)の勘どころ
Junya Hayashi
オブジェクト指向プログラミングのためのモデリング入門
オブジェクト指向プログラミングのためのモデリング入門
増田 亨
3週連続DDDその1 ドメイン駆動設計の基本を理解する
3週連続DDDその1 ドメイン駆動設計の基本を理解する
増田 亨
【プレゼン】見やすいプレゼン資料の作り方【初心者用】
【プレゼン】見やすいプレゼン資料の作り方【初心者用】
MOCKS | Yuta Morishige
REST API のコツ
REST API のコツ
pospome
What's hot
(20)
ドメイン駆動設計 ( DDD ) をやってみよう
ドメイン駆動設計 ( DDD ) をやってみよう
DDD Alliance レガシーなコードにドメイン駆動設計で立ち向かった5年間の軌跡
DDD Alliance レガシーなコードにドメイン駆動設計で立ち向かった5年間の軌跡
Redisの特徴と活用方法について
Redisの特徴と活用方法について
目grep入門 +解説
目grep入門 +解説
それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
ドメイン駆動設計 モデリング_実装入門勉強会_2020.3.8
ドメイン駆動設計 モデリング_実装入門勉強会_2020.3.8
リーンなコードを書こう:実践的なオブジェクト指向設計
リーンなコードを書こう:実践的なオブジェクト指向設計
イベント・ソーシングを知る
イベント・ソーシングを知る
5分でわかる良いスライドのつくりかた
5分でわかる良いスライドのつくりかた
Test Yourself - テストを書くと何がどう変わるか
Test Yourself - テストを書くと何がどう変わるか
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
ChatGPTは思ったほど賢くない
ChatGPTは思ったほど賢くない
「のどが渇いた」というユーザーに何を出す? ユーザーの「欲しい」に惑わされない、本当のインサイトを見つけるUXデザイン・UXリサーチ
「のどが渇いた」というユーザーに何を出す? ユーザーの「欲しい」に惑わされない、本当のインサイトを見つけるUXデザイン・UXリサーチ
【BS13】チーム開発がこんなにも快適に!コーディングもデバッグも GitHub 上で。 GitHub Codespaces で叶えられるシームレスな開発
【BS13】チーム開発がこんなにも快適に!コーディングもデバッグも GitHub 上で。 GitHub Codespaces で叶えられるシームレスな開発
Python におけるドメイン駆動設計(戦術面)の勘どころ
Python におけるドメイン駆動設計(戦術面)の勘どころ
オブジェクト指向プログラミングのためのモデリング入門
オブジェクト指向プログラミングのためのモデリング入門
3週連続DDDその1 ドメイン駆動設計の基本を理解する
3週連続DDDその1 ドメイン駆動設計の基本を理解する
【プレゼン】見やすいプレゼン資料の作り方【初心者用】
【プレゼン】見やすいプレゼン資料の作り方【初心者用】
REST API のコツ
REST API のコツ
Similar to ソフトウェア設計のすすめ
サービス開発における工程
サービス開発における工程
Hidetoshi Mori
It業界の優良企業の見つけ方 20140502 黒田
It業界の優良企業の見つけ方 20140502 黒田
Yusuke Kuroda
レガシーシステム再生のアンチパターン
レガシーシステム再生のアンチパターン
Kent Ishizawa
Ms retail update ra 20191030
Ms retail update ra 20191030
Microsoft Azure Japan
ReactでCMSを作ったときにハマったこと
ReactでCMSを作ったときにハマったこと
kazuki matsumura
1)空気を読む家』のこれまでの取り組み
1)空気を読む家』のこれまでの取り組み
aitc_jp
PCCC21:株式会社日立製作所 「研究開発力向上のための研究DXソリューション」
PCCC21:株式会社日立製作所 「研究開発力向上のための研究DXソリューション」
PC Cluster Consortium
Mizukiryu refactering-20110821
Mizukiryu refactering-20110821
Mizuki Yamanaka
鹿駆動
鹿駆動
Shinichi Kozake
リクルートにおけるPaaS活用事例
リクルートにおけるPaaS活用事例
Recruit Technologies
Techlion vol8 yusuke #techlion
Techlion vol8 yusuke #techlion
Yusuke Yamamoto
13_B_5 Who is a architect?
13_B_5 Who is a architect?
Atsushi Fukui
20121124 学生セミナー「基礎からわかる! IT業界とプログラミング」
20121124 学生セミナー「基礎からわかる! IT業界とプログラミング」
Takashi Uemura
レスポンシブ対応 をサポートするプラグイン
レスポンシブ対応 をサポートするプラグイン
Kawaji Masaki
基調講演「データのグループウェア化」
基調講演「データのグループウェア化」
Cybozucommunity
[ESM_CM セミナー]小さく作って大いに役立つスマートフォンアプリ(CYCLONE)公開用
[ESM_CM セミナー]小さく作って大いに役立つスマートフォンアプリ(CYCLONE)公開用
masashi takehara
第11回SIA例会プレゼン資料
第11回SIA例会プレゼン資料
Tae Yoshida
モバイルビジネスの動向
モバイルビジネスの動向
Hidetoshi Mori
20140829 山形でJAWS-UGをやって困った2つのこと
20140829 山形でJAWS-UGをやって困った2つのこと
Seiji Akatsuka
Final present
Final present
Loc Huynh
Similar to ソフトウェア設計のすすめ
(20)
サービス開発における工程
サービス開発における工程
It業界の優良企業の見つけ方 20140502 黒田
It業界の優良企業の見つけ方 20140502 黒田
レガシーシステム再生のアンチパターン
レガシーシステム再生のアンチパターン
Ms retail update ra 20191030
Ms retail update ra 20191030
ReactでCMSを作ったときにハマったこと
ReactでCMSを作ったときにハマったこと
1)空気を読む家』のこれまでの取り組み
1)空気を読む家』のこれまでの取り組み
PCCC21:株式会社日立製作所 「研究開発力向上のための研究DXソリューション」
PCCC21:株式会社日立製作所 「研究開発力向上のための研究DXソリューション」
Mizukiryu refactering-20110821
Mizukiryu refactering-20110821
鹿駆動
鹿駆動
リクルートにおけるPaaS活用事例
リクルートにおけるPaaS活用事例
Techlion vol8 yusuke #techlion
Techlion vol8 yusuke #techlion
13_B_5 Who is a architect?
13_B_5 Who is a architect?
20121124 学生セミナー「基礎からわかる! IT業界とプログラミング」
20121124 学生セミナー「基礎からわかる! IT業界とプログラミング」
レスポンシブ対応 をサポートするプラグイン
レスポンシブ対応 をサポートするプラグイン
基調講演「データのグループウェア化」
基調講演「データのグループウェア化」
[ESM_CM セミナー]小さく作って大いに役立つスマートフォンアプリ(CYCLONE)公開用
[ESM_CM セミナー]小さく作って大いに役立つスマートフォンアプリ(CYCLONE)公開用
第11回SIA例会プレゼン資料
第11回SIA例会プレゼン資料
モバイルビジネスの動向
モバイルビジネスの動向
20140829 山形でJAWS-UGをやって困った2つのこと
20140829 山形でJAWS-UGをやって困った2つのこと
Final present
Final present
More from Yoshimura Soichiro
FirebaseでN高生証明botを作ってみた
FirebaseでN高生証明botを作ってみた
Yoshimura Soichiro
N高等学校でやってるプログラミング
N高等学校でやってるプログラミング
Yoshimura Soichiro
失敗の話
失敗の話
Yoshimura Soichiro
並行処理初心者のためのAkka入門
並行処理初心者のためのAkka入門
Yoshimura Soichiro
Obsのプラグイン作ってみた
Obsのプラグイン作ってみた
Yoshimura Soichiro
Developers Summit 2014 「Play2/Scalaでドメイン駆動設計を利用した大規模Webアプリケーションのスクラム開発の勘所」
Developers Summit 2014 「Play2/Scalaでドメイン駆動設計を利用した大規模Webアプリケーションのスクラム開発の勘所」
Yoshimura Soichiro
チームの目標への柔軟な対応
チームの目標への柔軟な対応
Yoshimura Soichiro
20121126 Solr@ニコニコ生放送
20121126 Solr@ニコニコ生放送
Yoshimura Soichiro
私とインクス
私とインクス
Yoshimura Soichiro
More from Yoshimura Soichiro
(9)
FirebaseでN高生証明botを作ってみた
FirebaseでN高生証明botを作ってみた
N高等学校でやってるプログラミング
N高等学校でやってるプログラミング
失敗の話
失敗の話
並行処理初心者のためのAkka入門
並行処理初心者のためのAkka入門
Obsのプラグイン作ってみた
Obsのプラグイン作ってみた
Developers Summit 2014 「Play2/Scalaでドメイン駆動設計を利用した大規模Webアプリケーションのスクラム開発の勘所」
Developers Summit 2014 「Play2/Scalaでドメイン駆動設計を利用した大規模Webアプリケーションのスクラム開発の勘所」
チームの目標への柔軟な対応
チームの目標への柔軟な対応
20121126 Solr@ニコニコ生放送
20121126 Solr@ニコニコ生放送
私とインクス
私とインクス
Recently uploaded
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
Toru Tamaki
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
Hiroki Ichikura
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Yuma Ohgami
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
sugiuralab
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
Toru Tamaki
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
taisei2219
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
iPride Co., Ltd.
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
Ryo Sasaki
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
Toru Tamaki
Recently uploaded
(9)
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
ソフトウェア設計のすすめ
1.
ソフトウェア設計のすゝめ 株式会社ドワンゴ 吉村総一郎
(@sifue)
2.
ソフトウェア設計を なぜするのか?
3.
そもそも設計って 必要なの?
4.
プロトタイピングしながら作って いくなら必要ないんじゃないの?
5.
そうじゃない場合もある
6.
例えばどんな時か 複雑な要件を扱わなくてはならない時 考慮の抜け漏れのしやい複雑な業務用件
無停止メンテナンスなどの運用 耐障害性 拡張性 多くのシステムと連携
7.
複雑な要件を持つシステムは、 建築物で言えば高層ビルのようなもの 膨大な建築法
電気 ガス 空調 間取りの使い勝手 (トイレの数?)
8.
複雑な要件の考慮が抜けている場合には 大きなコストを払うことになることもある
9.
犬小屋をプロトタイピングで作って それを拡張、改修し続ければ高層ビルになるか?
10.
ならない 当初犬小屋で良かったものが要求の変更で 高層ビルが求められる悲劇がそこにはあるが...
11.
できるのはハウルの動く城
12.
致命的な問題にぶち当たれば作り直しが必要 ある日突然考慮漏れの要件にぶち当たってシステム停止に陥ることも
13.
ただ逆に要件の衝突が起こらないような シンプルな要件のプロダクトなら プロトタイピングを利用した
インクリメントな開発はかなり有効
14.
とはいえ複雑そうなものは 設計を考えよう
15.
でも突然ソフトウェア設計しろと言わ れても何をするかよくわからない…
16.
そんな方におすすめの第一歩
17.
図を書いてみよう
18.
図といっても 書き方がわからない…
19.
そんなあなたに おすすめの記法
20.
UML
21.
UMLとは 統一モデリング言語 (Unified
Modeling Language)という、1997年 に選定された世界的に利用 できるソフトウェアのため の設計図の書き方 現在は、UML 2.4.1が最新 であり、13種類の図の書き 方を利用することができる
22.
UMLがない場合の図は どんな感じか?
23.
家計簿アプリの設計の例 変動費 月次集計サービス
支出 固定費 実は同じものを表しているのに、記法が違うために四角がど ういう意味で、丸がどういう意味でとか、緑の線があれで、 青い線があれとかを毎回説明しなくてはいけない
24.
つらい 設計レビューをする前に全員が図の記法を理解する ところから始まる。設計レビューに途中からやって
きた人が図の記法がわからない...。新たにjoinした メンバーも資料を見て意味がわからない。
25.
UMLはそういう問題を 解決してくれます!
26.
どんな図があるのか?よく使うだろう5つを紹介 ユースケース図: 要件の構造を表現
コンポーネント図: システム構成を表現 パッケージ図: パッケージの構成を表現 クラス図: クラスの関連を表現 アクティビティ図: フローチャートのようなもの
27.
家計簿アプリの設計 ユースケース図
28.
家計簿アプリの設計 コンポーネント図
29.
家計簿アプリの設計 パッケージ図
30.
家計簿アプリの設計 クラス図
31.
家計簿アプリの設計 アクティビティ図
32.
こんなふうに記述できます
33.
図はわかってけど 何で書けば良いの?
34.
おすすめのUMLモデリングツール Gliffy Astah
Community PlantUML
35.
Gliffy Confluenceのプラグイン 結構きれい
図が大きくなると重い 制約が緩めでUML以外の記 法もできる クラス図の例
36.
Astah Community MacとWinで動くJava製のデ
スクトップアプリ ページに添付すると Confluenceで図を表示もで きる UMLに違反してる図は書き にくいクラス図の例
37.
PlantUML テキストベースでUML書け る(<|--
が継承とか) 最近流行ってる Confluenceでも記述可能 GUIのサポートないので UMLの仕様を知っている 必要があるクラス図の例
38.
以上紹介したツールを使ってソフ トウェアの設計や設計レビューを やっていきましょう!
39.
おすすめ本 UMLの本というより総合的なソフトウェア開発の本
40.
設計のやり方はわかったけ ど、具体的に何するの?
41.
設計の目的って何?
42.
設計とは、 要求に対して、狙った要件を設定で きるようにすること。正解はない。
43.
よく出てくる設計ノウハウ システム構成をレイヤー化する/しない モジュール化する/しない
モジュールをレイヤー化する/しない SOLID原則を守る/守らない
44.
システム構成をレイヤー化する/しない 多層アーキテクチャ レイヤごとは疎結合にする
右は3層+LBの例 レイヤ毎に再起動更新できる レイヤごとで台数を増やし負荷をコ ントロールできる レイヤが増えると管理コストは増え る
45.
モジュール化する/しない 汎用サブモジュールをくくり出 せ、重複が減って保守コストが
下がる モジュールごとで人を割り当て るので更新衝突が少なくなる モジュール化することで開発コ ストは増える
46.
モジュールをレイヤー化する/しない DDDのレイヤー化アーキテク チャの例
ビジネスロジック(domain層) がapplication層やui層のフ レームワークのVerUP等の変更 をうけない 依存関係の強制を守るために依 存関係の逆転則とかを使わなく てはいけないなど高コスト
47.
SOLID原則を守る/守らない 以下は、コストと再利用性のトレードオフとなる 単一責務の原則:
いろいろやるクラスを作らない オープンクローズドの原則: 状態の変更からは守り、クラス の自体の拡張を提供する リスコフの置換原則: 継承は意味として親と子の交換可能で あるようなクラス設計にする 依存関係逆転の原則: インターフェースを使ってレイヤ間の 依存関係を一方向にする インターフェースの分離の原則: 内部実装を隠ぺいする
48.
依存関係逆転の原則の例 インターフェースを作ってそれを依存先で実装する
49.
適切な設計の目的を果たすための 色々なパターンがあるのでぜひ探してみてください マーチン・ファウラーのリファクタリング
GoFのデザインパターン PoEAA エリック・エヴァンスのドメイン駆動設計 Lean architecture Microservices
50.
要件漏れ/衝突が起こらないよう、開発者 の狙い通りに開発していけるようしっかり レビューしながら考えていきましょう!
51.
以上 ご清聴ありがとうございました
Download now