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
クリーンアーキテクチャ輪読会資料 27-29章
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
koji
March 16, 2020
Technology
0
44
クリーンアーキテクチャ輪読会資料 27-29章
参加しているコミュニティ、Challeng-Every-Monthの輪読会で作成した資料。
koji
March 16, 2020
Tweet
Share
More Decks by koji
See All by koji
20250914_Vibe Coding初学者向け勉強会_Devinについて
kjman678
0
31
Amazon Builder's Library 輪読会資料 ジッターを伴うタイムアウト、再試行、およびバックオフ
kjman678
0
76
時系列解析 輪読会資料 1章
kjman678
0
36
Amazon Builder's Library 輪読会資料 分散システムでのフォールバックの回避
kjman678
0
65
クリーンアーキテクチャ輪読会資料 12-14章
kjman678
0
34
Amazon Builder's Library 輪読会資料 負荷制限を使用して過負荷を回避する
kjman678
0
39
Other Decks in Technology
See All in Technology
GitHub Issue Templates + Coding Agentで簡単みんなでIaC/Easy IaC for Everyone with GitHub Issue Templates + Coding Agent
aeonpeople
1
260
~Everything as Codeを諦めない~ 後からCDK
mu7889yoon
3
530
SREじゃなかった僕らがenablingを通じて「SRE実践者」になるまでのリアル / SRE Kaigi 2026
aeonpeople
6
2.6k
AWS DevOps Agent x ECS on Fargate検証 / AWS DevOps Agent x ECS on Fargate
kinunori
2
240
私たち準委任PdEは2つのプロダクトに挑戦する ~ソフトウェア、開発支援という”二重”のプロダクトエンジニアリングの実践~ / 20260212 Naoki Takahashi
shift_evolve
PRO
2
210
22nd ACRi Webinar - ChipTip Technology Eric-san's slide
nao_sumikawa
0
100
日本の85%が使う公共SaaSは、どう育ったのか
taketakekaho
1
250
10Xにおける品質保証活動の全体像と改善 #no_more_wait_for_test
nihonbuson
PRO
2
340
CDK対応したAWS DevOps Agentを試そう_20260201
masakiokuda
1
440
旅先で iPad + Neovim で iOS 開発・執筆した話
zozotech
PRO
0
100
広告の効果検証を題材にした因果推論の精度検証について
zozotech
PRO
0
210
生成AIと余白 〜開発スピードが向上した今、何に向き合う?〜
kakehashi
PRO
0
170
Featured
See All Featured
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
1.8k
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
77
The untapped power of vector embeddings
frankvandijk
1
1.6k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
196
71k
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
230
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
79
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.1k
Prompt Engineering for Job Search
mfonobong
0
160
A Modern Web Designer's Workflow
chriscoyier
698
190k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
2.7k
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
72
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
190
Transcript
CA輪読会 27章-29章 2020/3/16(月) 22:00- 発表者:koji/メガネ男
27章 サービス:あらゆる存在 1/4 • サービスアーキテクチャ アーキテクチャは上位レベルの方針と下位レベルの詳細を分離し、を依存性の ルールに従う境界によって定義されるものである。 サービスを使用すること=アーキテクチャではない。 それはただのプロセスやプラット フォームの境界を超える関数呼び出しに
過ぎない、とボブおじさんは断じる。 2
27章 サービス:あらゆる存在 2/4 • サービスアーキテクチャ サービス毎にアプリケーションが別れていることがメリットと言われているけど、リ ソースやデータを介して間接的に繋がっている。 サービスごとに専属のチームがつき、スケーラブルであることがメリットと言われ ているが、サービスアーキテクチャだけがスケーラブルなわけではないし、開発・デ プロイ・運用の調整が重荷になることもある。
3
27章 サービス:あらゆる存在 3/4 • タクシー配車システムの例 状況:タクシーの検索、選択、発注サービスを各チームが保守・運用・開発してい る。 ここに、すべての動作に影響を与える新機能を追加すると、すべてのサービスは 結合していることから、すべてのサービスを変更する必要が生じる。 例:子猫の宅配機能。ネコアレルギー配慮のため、シフトや配車のシステムに影
響を及ぼす) 4
27章 サービス:あらゆる存在 4/4 • でもSOLIDの設計原則を慎重に検討すれば独立して開発・デプロイが可能。 • 新機能のデプロイは、再デプロイしなくても、新しいファイルをロードパスに追加す るだけで済む。→オープンクローズドの原則 • アーキテクチャの境界は、サービスではなく、サービス内部のコンポーネントで決
まる。 5
28章 テスト境界 1/3 • テストはシステムの一部であり、アーキテクチャの観点からは、対象、規模に関わ らず、すべてのテストは同じである • テストは依存性のルールに従うし、 アーキテクチャの円の最も外側にある •
テストはコンポーネントに常に依存するし、独立してデプロイ可能な、最も独立した システムコンポーネントである。 6
28章 テスト境界 2/3 • テストは普段デプロイしないので、設計と無関係と考えられがち。 システム安定化のため、設計段階でテストまで考慮する必要がある。 • 脆弱なテストの問題 共通のシステムコンポーネントを変更すると、何百や何千というテストが壊れる可 能性がある。
解決策は、変化しやすいものに依存しない設計を行うこと。 変化しやすい見た目の部分である GUIに依存すると、テストまでコロコロ 変わってしまいテストが手間になり、 テストがおろそかになるかも! 7
28章 テスト境界 3/3 • プロダクトのクラスやメソッドが変わると大量のテストを変更することになるので、 テストは脆弱になり、プロダクトのコードは柔軟性を失っていく。 • テスト段階から使用できるAPIを作成し、検証すればよい。 APIを使えば開発の影響をテストに与えずに済む。 •
ただし、テストAPIが完成物のシステムにデプロイされると危険なので、独立したコ ンポーネントに格納すべし。 8
29章 クリーン組込みアーキテクチャ 1/3 • ソフトウェアは消耗しないが、ファームウェアやハードウェアは時代遅れになる。 その結果新しいソフトウェアが必要になる。 • 時代遅れになりやすいファームウェアは少なくして、ソフトウェアを多くすることが 望ましいのに、組み込みエンジニアでないエンジニアもファームウェアを書いてい る、とボブおじさんは憤慨。
組み込みソフトウェアのアーキテクチャをクリーンにして、寿命の短いファームウェ アではなく、寿命の長いソフトウェアに注力しよう。 9
29章 クリーン組込みアーキテクチャ 2/3 • 組み込みソフトウェアは動作すること、正しいこと、速く動くパフォーマンスが優先 され、長寿となるようクリーンなコードを作ることは考慮されていない。 • 組み込みエンジニアは、ターゲットハードウェアのボトルネック * という問題があ
る。 * ハードウェアの完成を待ってからコードを実行する必要があったり、ハードウェア に欠陥があるとコードの実行に支障をきたしたりといった、必要他のエンジニアが 気にしなくて済んでいる制約事項のこと。 10
29章 クリーン組込みアーキテクチャ 3/3 • 管理できていないファームウェアやハードウェアの依存関係によって、ソフトウェア が内部から破壊される可能性もある。 • ファームウェアとソフトウェアは明確に区分すべき。 OSはファームウェアとソフトウェアを分離する(HAL)。 クリーン組み込みアーキテクチャは買収等により
変わりかねないOSと、 ソフトウェアも 区分する(OSAL)。 11