Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Clean_Architecture輪読会_6.pdf
Search
kojirock5260
February 18, 2020
Technology
97
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Clean_Architecture輪読会_6.pdf
kojirock5260
February 18, 2020
More Decks by kojirock5260
See All by kojirock5260
テスト駆動開発_輪読会_vol.1.pdf
kojirock5260
0
660
Clean_Architecture輪読会_11.pdf
kojirock5260
0
83
Clean_Architecture輪読会_1.pdf
kojirock5260
0
340
Effective_DevOps_輪読会_vol.14.pdf
kojirock5260
0
270
Effective_DevOps_輪読会_vol.11.pdf
kojirock5260
0
240
Effective_DevOps_輪読会_vol.3.pdf
kojirock5260
0
73
Effective_DevOps_輪読会_vol.7.pdf
kojirock5260
1
280
初心者にやさしいLT会1.pdf
kojirock5260
0
610
レガシー感謝の日で発表してみたかった話
kojirock5260
0
1.4k
Other Decks in Technology
See All in Technology
Data Hubグループ 紹介資料
sansan33
PRO
0
3.1k
Forza Horizon 6 のテレメトリ機能で 自動運転に使えそうな学習データを集める話
henjin0
0
130
【CEDEC2026】コードレビュー支援ツール開発から学ぶ:LLMを用いた業務システムの実践的な運用設計と誤出力対策
cygames
PRO
0
560
今こそ聞きたいソフトウェア設計 ドメイン駆動設計再入門
masuda220
PRO
16
5.9k
え?フロントエンドエンジニアの ワイがインフラも!?
puku0x
0
290
20260807_第6回_関東kaggler会LT_claw系bot xangiと始める、"寂しくない" kaggle
sugupoko
0
100
Redmine 7.0 新機能・機能強化解説(OSC2026京都ダイジェスト版)
vividtone
1
190
侵入は突然に 〜 IoTマルウェアと悪用される家庭の機器 ~ / When Intrusion Strikes: IoT Malware and the Abuse of Home Devices
nttcom
0
1.5k
【CEDEC2026】専門性の高いデフォルメチームが挑んだ人材育成戦略 〜Cygames Academiaの企画から実施まで〜
cygames
PRO
0
440
AWS ネットワーク構築でハマった(ハマりかけた) 5選とそこから得た教訓
nagisa53
4
180
Bill One 開発エンジニア 紹介資料
sansan33
PRO
7
19k
研究開発部の紹介 / Sansan R&D Profile
sansan33
PRO
4
24k
Featured
See All Featured
Navigating Weather and Climate Data
rabernat
0
450
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.7k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.2k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
980
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
56
3.4k
VelocityConf: Rendering Performance Case Studies
addyosmani
333
25k
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
190
[SF Ruby Conf 2025] Rails X
palkan
2
1.2k
How to build a perfect <img>
jonoalderson
1
5.8k
For a Future-Friendly Web
brad_frost
183
10k
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
230
Transcript
Clean Architecture 輪読会#6 Clean Architecture 輪読会#6 Clean Architecture 輪読会#6 Clean
Architecture 輪読会#6 Clean Architecture 輪読会#6 Clean Architecture 輪読会#6 2020/02/18 2020/02/18 2020/02/18 2020/02/18 2020/02/18 2020/02/18 1 / 17
15 章 アーキテクチャとは? 15 章 アーキテクチャとは? 15 章 アーキテクチャとは? 15
章 アーキテクチャとは? 15 章 アーキテクチャとは? 15 章 アーキテクチャとは? アーキテクチャの形状の目的は、そこに含まれるソフトウェアシステム アーキテクチャの形状の目的は、そこに含まれるソフトウェアシステム アーキテクチャの形状の目的は、そこに含まれるソフトウェアシステム アーキテクチャの形状の目的は、そこに含まれるソフトウェアシステム アーキテクチャの形状の目的は、そこに含まれるソフトウェアシステム アーキテクチャの形状の目的は、そこに含まれるソフトウェアシステム の の の の の の 開発・デプロイ・運用・保守 開発・デプロイ・運用・保守 開発・デプロイ・運用・保守 開発・デプロイ・運用・保守 開発・デプロイ・運用・保守 開発・デプロイ・運用・保守 を容易にすることである。それらを容易 を容易にすることである。それらを容易 を容易にすることである。それらを容易 を容易にすることである。それらを容易 を容易にすることである。それらを容易 を容易にすることである。それらを容易 にするためにの戦略は、できるだけ長い期間、できるだけ多く にするためにの戦略は、できるだけ長い期間、できるだけ多く にするためにの戦略は、できるだけ長い期間、できるだけ多く にするためにの戦略は、できるだけ長い期間、できるだけ多く にするためにの戦略は、できるだけ長い期間、できるだけ多く にするためにの戦略は、できるだけ長い期間、できるだけ多く選択肢を 選択肢を 選択肢を 選択肢を 選択肢を 選択肢を 残すこと 残すこと 残すこと 残すこと 残すこと 残すことである。 である。 である。 である。 である。 である。 2 / 17
15 章 アーキテクチャとは? 15 章 アーキテクチャとは? 15 章 アーキテクチャとは? 15
章 アーキテクチャとは? 15 章 アーキテクチャとは? 15 章 アーキテクチャとは? 開発 開発 開発 開発 開発 開発 開発チームの規模や、開発段階によって、考慮しなくてはならないア 開発チームの規模や、開発段階によって、考慮しなくてはならないア 開発チームの規模や、開発段階によって、考慮しなくてはならないア 開発チームの規模や、開発段階によって、考慮しなくてはならないア 開発チームの規模や、開発段階によって、考慮しなくてはならないア 開発チームの規模や、開発段階によって、考慮しなくてはならないア ーキテクチャは異なる ーキテクチャは異なる ーキテクチャは異なる ーキテクチャは異なる ーキテクチャは異なる ーキテクチャは異なる 3 / 17
15 章 アーキテクチャとは? 15 章 アーキテクチャとは? 15 章 アーキテクチャとは? 15
章 アーキテクチャとは? 15 章 アーキテクチャとは? 15 章 アーキテクチャとは? デプロイ デプロイ デプロイ デプロイ デプロイ デプロイ 開発の早い段階から、アーキテクトがデプロイの問題について考える 開発の早い段階から、アーキテクトがデプロイの問題について考える 開発の早い段階から、アーキテクトがデプロイの問題について考える 開発の早い段階から、アーキテクトがデプロイの問題について考える 開発の早い段階から、アーキテクトがデプロイの問題について考える 開発の早い段階から、アーキテクトがデプロイの問題について考える ことが大事。 ことが大事。 ことが大事。 ことが大事。 ことが大事。 ことが大事。 4 / 17
15 章 アーキテクチャとは? 15 章 アーキテクチャとは? 15 章 アーキテクチャとは? 15
章 アーキテクチャとは? 15 章 アーキテクチャとは? 15 章 アーキテクチャとは? 運用 運用 運用 運用 運用 運用 運用の問題はお金で殴れば解決できることが往々にしてある。 運用の問題はお金で殴れば解決できることが往々にしてある。 運用の問題はお金で殴れば解決できることが往々にしてある。 運用の問題はお金で殴れば解決できることが往々にしてある。 運用の問題はお金で殴れば解決できることが往々にしてある。 運用の問題はお金で殴れば解決できることが往々にしてある。 運用におけるアーキテクチャの役割は、システムの運用ニーズを伝え 運用におけるアーキテクチャの役割は、システムの運用ニーズを伝え 運用におけるアーキテクチャの役割は、システムの運用ニーズを伝え 運用におけるアーキテクチャの役割は、システムの運用ニーズを伝え 運用におけるアーキテクチャの役割は、システムの運用ニーズを伝え 運用におけるアーキテクチャの役割は、システムの運用ニーズを伝え ること。 ること。 ること。 ること。 ること。 ること。 5 / 17
15 章 アーキテクチャとは? 15 章 アーキテクチャとは? 15 章 アーキテクチャとは? 15
章 アーキテクチャとは? 15 章 アーキテクチャとは? 15 章 アーキテクチャとは? 保守 保守 保守 保守 保守 保守 アーキテクチャを慎重に考えることで、保守時に発生するリスクを大 アーキテクチャを慎重に考えることで、保守時に発生するリスクを大 アーキテクチャを慎重に考えることで、保守時に発生するリスクを大 アーキテクチャを慎重に考えることで、保守時に発生するリスクを大 アーキテクチャを慎重に考えることで、保守時に発生するリスクを大 アーキテクチャを慎重に考えることで、保守時に発生するリスクを大 幅に軽減できる 幅に軽減できる 幅に軽減できる 幅に軽減できる 幅に軽減できる 幅に軽減できる 6 / 17
15 章 アーキテクチャとは? 15 章 アーキテクチャとは? 15 章 アーキテクチャとは? 15
章 アーキテクチャとは? 15 章 アーキテクチャとは? 15 章 アーキテクチャとは? 選択肢を残しておく 選択肢を残しておく 選択肢を残しておく 選択肢を残しておく 選択肢を残しておく 選択肢を残しておく DB やフレームワークなどの詳細な技術の決定を初期段階で下す必要は DB やフレームワークなどの詳細な技術の決定を初期段階で下す必要は DB やフレームワークなどの詳細な技術の決定を初期段階で下す必要は DB やフレームワークなどの詳細な技術の決定を初期段階で下す必要は DB やフレームワークなどの詳細な技術の決定を初期段階で下す必要は DB やフレームワークなどの詳細な技術の決定を初期段階で下す必要は ない。 ない。 ない。 ない。 ない。 ない。 会社ですでに決定しているものがあった場合、優秀なアーキテクトなら 会社ですでに決定しているものがあった場合、優秀なアーキテクトなら 会社ですでに決定しているものがあった場合、優秀なアーキテクトなら 会社ですでに決定しているものがあった場合、優秀なアーキテクトなら 会社ですでに決定しているものがあった場合、優秀なアーキテクトなら 会社ですでに決定しているものがあった場合、優秀なアーキテクトなら ば、 ば、 ば、 ば、 ば、 ば、まだ決まっていないと主張する まだ決まっていないと主張する まだ決まっていないと主張する まだ決まっていないと主張する まだ決まっていないと主張する まだ決まっていないと主張する 7 / 17
16 章 独立性 16 章 独立性 16 章 独立性 16
章 独立性 16 章 独立性 16 章 独立性 システムのユースケース システムのユースケース システムのユースケース システムのユースケース システムのユースケース システムのユースケース システムの運用 システムの運用 システムの運用 システムの運用 システムの運用 システムの運用 システムの開発 システムの開発 システムの開発 システムの開発 システムの開発 システムの開発 システムのデプロイ システムのデプロイ システムのデプロイ システムのデプロイ システムのデプロイ システムのデプロイ 8 / 17
独立性 独立性 独立性 独立性 独立性 独立性 システムのユースケース システムのユースケース システムのユースケース システムのユースケース
システムのユースケース システムのユースケース アーキテクチャレベルでシステムの意図がわかるように、 アーキテクチャレベルでシステムの意図がわかるように、 アーキテクチャレベルでシステムの意図がわかるように、 アーキテクチャレベルでシステムの意図がわかるように、 アーキテクチャレベルでシステムの意図がわかるように、 アーキテクチャレベルでシステムの意図がわかるように、振る舞いを 振る舞いを 振る舞いを 振る舞いを 振る舞いを 振る舞いを 明らかに 明らかに 明らかに 明らかに 明らかに 明らかにすることである。 することである。 することである。 することである。 することである。 することである。 9 / 17
独立性 独立性 独立性 独立性 独立性 独立性 システムの運用 システムの運用 システムの運用 システムの運用
システムの運用 システムの運用 システムの要求する技術に対しての解決策をすぐに決定せず システムの要求する技術に対しての解決策をすぐに決定せず システムの要求する技術に対しての解決策をすぐに決定せず システムの要求する技術に対しての解決策をすぐに決定せず システムの要求する技術に対しての解決策をすぐに決定せず システムの要求する技術に対しての解決策をすぐに決定せず選択肢 選択肢 選択肢 選択肢 選択肢 選択肢 として残しておく。 として残しておく。 として残しておく。 として残しておく。 として残しておく。 として残しておく。 10 / 17
独立性 独立性 独立性 独立性 独立性 独立性 システムの開発 システムの開発 システムの開発 システムの開発
システムの開発 システムの開発 アーキテクチャは開発環境のサポートにおいて、 アーキテクチャは開発環境のサポートにおいて、 アーキテクチャは開発環境のサポートにおいて、 アーキテクチャは開発環境のサポートにおいて、 アーキテクチャは開発環境のサポートにおいて、 アーキテクチャは開発環境のサポートにおいて、非常に重要な役割 非常に重要な役割 非常に重要な役割 非常に重要な役割 非常に重要な役割 非常に重要な役割を を を を を を 果たす 果たす 果たす 果たす 果たす 果たす コンウェイの法則 コンウェイの法則 コンウェイの法則 コンウェイの法則 コンウェイの法則 コンウェイの法則 11 / 17
独立性 独立性 独立性 独立性 独立性 独立性 システムのデプロイ システムのデプロイ システムのデプロイ システムのデプロイ
システムのデプロイ システムのデプロイ 目標にすべきは 目標にすべきは 目標にすべきは 目標にすべきは 目標にすべきは 目標にすべきは即時デプロイ 即時デプロイ 即時デプロイ 即時デプロイ 即時デプロイ 即時デプロイ 適切なコンポーネント分割が重要 適切なコンポーネント分割が重要 適切なコンポーネント分割が重要 適切なコンポーネント分割が重要 適切なコンポーネント分割が重要 適切なコンポーネント分割が重要 12 / 17
独立性 独立性 独立性 独立性 独立性 独立性 選択肢を残しておく 選択肢を残しておく 選択肢を残しておく 選択肢を残しておく
選択肢を残しておく 選択肢を残しておく 前述4 つのすべてを満足させる方法は非常に難しい 前述4 つのすべてを満足させる方法は非常に難しい 前述4 つのすべてを満足させる方法は非常に難しい 前述4 つのすべてを満足させる方法は非常に難しい 前述4 つのすべてを満足させる方法は非常に難しい 前述4 つのすべてを満足させる方法は非常に難しい ただし、上手くバランスを取る方法も存在する ただし、上手くバランスを取る方法も存在する ただし、上手くバランスを取る方法も存在する ただし、上手くバランスを取る方法も存在する ただし、上手くバランスを取る方法も存在する ただし、上手くバランスを取る方法も存在する 13 / 17
独立性 独立性 独立性 独立性 独立性 独立性 重複 重複 重複 重複
重複 重複 本当の重複と偶然の重複を見極めることが重要 本当の重複と偶然の重複を見極めることが重要 本当の重複と偶然の重複を見極めることが重要 本当の重複と偶然の重複を見極めることが重要 本当の重複と偶然の重複を見極めることが重要 本当の重複と偶然の重複を見極めることが重要 14 / 17
独立性 独立性 独立性 独立性 独立性 独立性 切り離し 切り離し 切り離し 切り離し
切り離し 切り離し レイヤーの切り離し レイヤーの切り離し レイヤーの切り離し レイヤーの切り離し レイヤーの切り離し レイヤーの切り離し UI, DB, ビジネスロジックなど UI, DB, ビジネスロジックなど UI, DB, ビジネスロジックなど UI, DB, ビジネスロジックなど UI, DB, ビジネスロジックなど UI, DB, ビジネスロジックなど ユースケースの切り離し ユースケースの切り離し ユースケースの切り離し ユースケースの切り離し ユースケースの切り離し ユースケースの切り離し 使用頻度・理由など 使用頻度・理由など 使用頻度・理由など 使用頻度・理由など 使用頻度・理由など 使用頻度・理由など 切り離しレベル 切り離しレベル 切り離しレベル 切り離しレベル 切り離しレベル 切り離しレベル ソースコード、デプロイ、サービス ソースコード、デプロイ、サービス ソースコード、デプロイ、サービス ソースコード、デプロイ、サービス ソースコード、デプロイ、サービス ソースコード、デプロイ、サービス 切り離しの方式も 切り離しの方式も 切り離しの方式も 切り離しの方式も 切り離しの方式も 切り離しの方式も 選択肢を残すための技の一つ 選択肢を残すための技の一つ 選択肢を残すための技の一つ 選択肢を残すための技の一つ 選択肢を残すための技の一つ 選択肢を残すための技の一つ 15 / 17
17 章 バウンダリー : 境界線を引く 17 章 バウンダリー : 境界線を引く
17 章 バウンダリー : 境界線を引く 17 章 バウンダリー : 境界線を引く 17 章 バウンダリー : 境界線を引く 17 章 バウンダリー : 境界線を引く ソフトウェアの要素を分離し、お互いのことがわからないように制限 ソフトウェアの要素を分離し、お互いのことがわからないように制限 ソフトウェアの要素を分離し、お互いのことがわからないように制限 ソフトウェアの要素を分離し、お互いのことがわからないように制限 ソフトウェアの要素を分離し、お互いのことがわからないように制限 ソフトウェアの要素を分離し、お互いのことがわからないように制限 するというもの するというもの するというもの するというもの するというもの するというもの ビジネス要件とは関係のない決定を境界線を引くことで先延ばしに ビジネス要件とは関係のない決定を境界線を引くことで先延ばしに ビジネス要件とは関係のない決定を境界線を引くことで先延ばしに ビジネス要件とは関係のない決定を境界線を引くことで先延ばしに ビジネス要件とは関係のない決定を境界線を引くことで先延ばしに ビジネス要件とは関係のない決定を境界線を引くことで先延ばしに する する する する する する 16 / 17
17 章 バウンダリー : 境界線を引く 17 章 バウンダリー : 境界線を引く
17 章 バウンダリー : 境界線を引く 17 章 バウンダリー : 境界線を引く 17 章 バウンダリー : 境界線を引く 17 章 バウンダリー : 境界線を引く 境界線を引く 境界線を引く 境界線を引く 境界線を引く 境界線を引く 境界線を引く 境界線は 境界線は 境界線は 境界線は 境界線は 境界線は重要なもの( ビジネスルール) 重要なもの( ビジネスルール) 重要なもの( ビジネスルール) 重要なもの( ビジネスルール) 重要なもの( ビジネスルール) 重要なもの( ビジネスルール) と と と と と と重要ではないもの 重要ではないもの 重要ではないもの 重要ではないもの 重要ではないもの 重要ではないものの間に引 の間に引 の間に引 の間に引 の間に引 の間に引 く。 く。 く。 く。 く。 く。 UI がGUI でもCUI でもビジネスルールは変わらない UI がGUI でもCUI でもビジネスルールは変わらない UI がGUI でもCUI でもビジネスルールは変わらない UI がGUI でもCUI でもビジネスルールは変わらない UI がGUI でもCUI でもビジネスルールは変わらない UI がGUI でもCUI でもビジネスルールは変わらない DB がMysql でもPostgreSQL でもビジネスルールは変わらない DB がMysql でもPostgreSQL でもビジネスルールは変わらない DB がMysql でもPostgreSQL でもビジネスルールは変わらない DB がMysql でもPostgreSQL でもビジネスルールは変わらない DB がMysql でもPostgreSQL でもビジネスルールは変わらない DB がMysql でもPostgreSQL でもビジネスルールは変わらない 依存関係逆転の法則の矢印方向 依存関係逆転の法則の矢印方向 依存関係逆転の法則の矢印方向 依存関係逆転の法則の矢印方向 依存関係逆転の法則の矢印方向 依存関係逆転の法則の矢印方向 適切なコンポーネント分割が、きれいな境界線を引くことの鍵 適切なコンポーネント分割が、きれいな境界線を引くことの鍵 適切なコンポーネント分割が、きれいな境界線を引くことの鍵 適切なコンポーネント分割が、きれいな境界線を引くことの鍵 適切なコンポーネント分割が、きれいな境界線を引くことの鍵 適切なコンポーネント分割が、きれいな境界線を引くことの鍵 17 / 17