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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
kojirock5260
February 18, 2020
Technology
95
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
650
Clean_Architecture輪読会_11.pdf
kojirock5260
0
81
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
72
Effective_DevOps_輪読会_vol.7.pdf
kojirock5260
1
270
初心者にやさしいLT会1.pdf
kojirock5260
0
600
レガシー感謝の日で発表してみたかった話
kojirock5260
0
1.4k
Other Decks in Technology
See All in Technology
protovalidate-es を導入してみた
bengo4com
0
180
AmazonRoute 53ではじめてのドメイン取得!HTTPS化までの道のりを整理してみた
usanchuu
3
130
非エンジニアがClaudeと挑んだ「1ヶ月間プロダクト30本ノック」
askokc
0
400
失敗を経て、Harness Engineering で 大切にしたいことを考える / Learning from Failure: What Matters in Harness Engineering
bitkey
PRO
1
340
2026TECHFRESH畢業分享會 - 葬送的通靈師:化系統與用戶雜訊成行動訊號
line_developers_tw
PRO
0
880
Oracle AI Database@Google Cloud:サービス概要のご紹介
oracle4engineer
PRO
6
1.5k
データサイエンスを価値につなげるプロジェクト設計 〜 DS一年目が現場で得た気づき 〜
ysd113
1
200
日本 Fintech 未来予測レポート 2027〜2028年(手動編集版)
8maki
0
2.2k
Snowflakeと仲良くなる第一歩
coco_se
4
440
10倍の生産性を実現するAI駆動並列エージェントのすべて
kumaiu
5
1.4k
非定型業務をAI slackbotで自動化する ~ 社内要望を自動壁打ちするbotを作った ~/automating-ad-hoc-work-with-ai-slackbot
shibayu36
0
630
タクシーアプリ『GO』の実践的データ活用
mot_techtalk
3
190
Featured
See All Featured
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
1
1.7k
Are puppies a ranking factor?
jonoalderson
1
3.5k
Building the Perfect Custom Keyboard
takai
2
790
30 Presentation Tips
portentint
PRO
1
320
The Mindset for Success: Future Career Progression
greggifford
PRO
0
360
Large-scale JavaScript Application Architecture
addyosmani
515
110k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
エンジニアに許された特別な時間の終わり
watany
107
250k
Facilitating Awesome Meetings
lara
57
7k
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
770
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
360
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
3.4k
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