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
CleanArchitecture23章&24章
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
ssknnm
November 18, 2020
Technology
290
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
CleanArchitecture23章&24章
CleanArchitectureの23章と24章です
ssknnm
November 18, 2020
More Decks by ssknnm
See All by ssknnm
CleanArchitecture_31章_32章.pdf
ssknnm
0
100
CleanArchitecture17章&18章
ssknnm
0
230
CleanArchitecture第5章&第6章
ssknnm
0
110
Other Decks in Technology
See All in Technology
OpenID for Verifiable Credentials 実装から見えた相互運用性確保までの道のり(OAuth/OIDC Numa (Immersion) Workshop 2026)
oidfj
PRO
0
380
1000⼈規模のClaude Enterprise運⽤を「Oktaのグループ」と「Slack」に集約する
sansantech
PRO
1
510
Contract One Engineering Unit 紹介資料
sansan33
PRO
0
20k
サーバー常駐型の 簡易障害調査AI エージェントを作ってみた話
masayoshi
1
400
AIレビュー時代に必要なのは、SLOで引く撤退ライン
nobuoooo
0
150
8bit CPU 2026
koba789
7
3k
あなたの知らないバージョン命名規則
sat
PRO
2
860
マイナンバーカード本人確認の実装比較(OAuth/OIDC Numa (Immersion) Workshop 2026) / 20260825 numa-12
oidfj
PRO
0
360
Distributed Transactions Under Fire: Building a Zero-Oversell Flash Sale Platform with Amazon Aurora DSQL
yama3133
1
110
名刺メーカーDevグループ 紹介資料
sansan33
PRO
0
1.2k
サイボウズ 開発本部採用ピッチ / Cybozu Engineer Recruit
cybozuinsideout
PRO
12
86k
アクセスキー流出時の対応で再認識した攻撃側と防御側の非対称性について
kazzpapa3
1
450
Featured
See All Featured
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
1k
The agentic SEO stack - context over prompts
schlessera
0
880
HDC tutorial
michielstock
2
830
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
490
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
2k
Embracing the Ebb and Flow
colly
88
5.1k
Navigating Weather and Climate Data
rabernat
0
490
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
690
The Art of Programming - Codeland 2020
erikaheidi
57
14k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.5k
Designing Powerful Visuals for Engaging Learning
tmiket
1
520
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
640
Transcript
CleanArchitecture 23章&24章 Sasaki
23章 プレゼンターとHumble Object プレゼンターはHumbleObjectパターンの一つであり、アーキテクチャの教会の特定と保 護に役立つものです。
HumbleObjectパターン HumbleObjectパターン‥UTしにくい振る舞いとしやすい振る舞いを分離するために生 み出されたデザインパターン Humble‥意味:控えめ。テストが難しい振る舞い。 HubmleObjectから取り除かれたテスト‥テストしやすい振る舞い。
プレゼンターとビュー View‥HumbleObjectパターン。→コードをシンプルに保っておく必要がある。 ViewModelからデータを読み込み画面に移動させる以外仕事がない。 Presenter‥テスト可能なオブジェクト。アプリからデータを受け取りViewに適切なオブ ジェクトを送る役割がある。表示させたいデータはViewModelに配置する。
テストとアーキテクチャ 境界の定義 = テストしやすい部分 | しにくい部分が分かれている ここではPresenterとViewもそうした境界で分かれている
データベースゲートウェイ • DBに対して実行する作成・読み取り・更新・削除全てのメソッドを含んだポリモー フィックインターフェイス。 • データベースのレイヤーのあるクラスで実装する。(HumbleObjectである) インタラクター • ビジネスルールを含んでいる。 •
Humbleではない。テスト可能。 • ゲートウェイをスタブなどに書き換えることができるため。
データマッパー Q.HibernateのようなORMはどのレイヤー? A.データベースのレイヤー データ構造はユーザーの観点から見えない。ORMは振る舞いを持たないデータの集合 体であるため「データマッパー」と呼ぶ方が適切。 RDBから取ったデータをデータ構造に当てはめる。 結論:ORMはゲートウェイインターフェイスとデータベースの間にHumbleObjectの境界 を作るものである。
サービスリスナー アプリが他のサービスと通信を行う、アプリがサービスを提供する場合にHumbleObject パターンがサービスの境界を作成する。 インターフェイス→リスナー→データをフォーマット→サービス境界を超えて→アプリに データ構造を戻す。
23章のまとめ アーキテクチャの境界にはHumbleObjectパターンが潜んでいる。 境界にはテストしやすい・しにくい部分に分割する。 ↑うまく利用するとシステム全体のテスト容易性が大幅に向上する。
24章 部分的な境界 悩み:本格的なアーキテクチャの境界はコストが高い 解決策:確かに違反している。だがあとで必要になることもある。と考える。 →部分的な境界を実装する。(あとで必要になるかもって部分のことだと思う) 〜アジャイルコミュニティの言葉〜 You Aren’t Going to Neet
Id. (YAGNI)
最後のステップを省略する 部分的な境界の構築方法:独立してコンパイルやデプロイが可能なコンポーネントを準 備→それらを同じコンポーネントにまとめる。 FitNesseの例 ユーザーが他のjarを探したりバージョンの互換性を気にすることなく一つのjarをダウン ロードするだけで実行できるようにした。 危険性:時間だたつとウェブコンポーネントが必要なくなってきた。そしたらウェブとWiki の分離が弱くなり、今では両者を再度分離することが面倒になってきた。
片方だけの境界 Strategyパターン‥将来のアーキテクチャの境界の準備。 ClientからはServiceBoundaryインターフェイスを使用し、 ServiceImplに実装されている。 目的:クライアントをServiceImpl から分離するため。
Facade クライアントからアクセスできないクラスにサービス呼び出しを行う。 ただしClientは全てのサービスくらすに依存しており、Serviceのコードを変更するたびに Clieantの再コンパイルも必要になる。。。
まとめ 24章で紹介した部分的な境界は最終的に完全な境界に至るまでの代理として特定の状 況では適切である。 アーキテクチャの境界をいつどこに作るのか、それは完全な境界なのか部分的な境界な のかを決めるのはアーキテクトの役割である。