Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Go言語によるクリーンアーキテクチャ.pdf
Search
Asakura
February 14, 2025
22
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Go言語によるクリーンアーキテクチャ.pdf
Asakura
February 14, 2025
Featured
See All Featured
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.4k
30 Presentation Tips
portentint
PRO
1
430
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.6k
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
460
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
23k
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
260
Balancing Empowerment & Direction
lara
6
1.3k
Git: the NoSQL Database
bkeepers
PRO
433
67k
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.4k
エンジニアに許された特別な時間の終わり
watany
109
250k
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
530
The Language of Interfaces
destraynor
162
27k
Transcript
Go言語による クリーンアーキテクチャ 朝倉氏
自己紹介 ・朝倉 滉人 ・京都産業大学 情報理工学部 3回生 ・料理・イラストや雑多が趣味 ・最近はGoを勉強中
どうでもいい報告
今日誕生日です
本題 クリーンアーキテクチャを個人開発に取り入れてみた
クリーンアーキテクチャとは 引用:書籍『Clean Architecture 達人に学ぶソフトウェアの構造と設計 』
各層の特徴 Frameworks & Drivers Interface Adapters App Business Rules EP
Business Rules 絶対的なルール、外部の影響を受けにくい部分 例:エンティティ アプリケーション特有のルール、システム間の 対話を実装 例:ユースケース 内側レイヤーに便利なフォーマットにデータを 変換する 例:コントローラー、プレゼンター フレームワークやツールで構成され、詳細が詰 まっている 例:UI、DB、外部インタフェース
依存性のルール Frameworks & Drivers Interface Adapters App Business Rules EP
Business Rules • ソースコードの依存性は、内側(上 位レベルの方針)だけに向かってい なければならない • 内側は外側のことを知らない • 内側は外側で宣言されたデータ フォーマットを使ってはならない
依存関係逆転の原則(DIP) • 抽象は詳細に依存してはならない。 詳細が抽象に依存するべき • インターフェースに依存をさせる • 具体的な実装の詳細は低レベルに任 せ、高レベルのモジュールは抽象化 レイヤーに依存させる
低レベルのモジュール 高レベルのモジュール 抽象化レイヤー
依存性の注入(DI) • コンストラクタで外部クラスのイン スタンスを受け取る • インスタンス生成の責務から解放さ れるため、本来のクラスの責務だけ が残り、シンプルなクラス設計がで きる User
Tag Likes User Likes Tag
Goでの実装
Goでの実装 実はまだ未完成
こんな感じ
こんな感じ usecase controller < I > usecase 依存 実現 DI
プロセスの流れ
このアーキテクチャのメリット • オブジェクトの差し替えが容易になるのでテスト がしやすい • フレームワークやUIに依存しないため、ビジネス ロジックの箇所がより明確化する • つまり、webフレームワークやUIが随時変更され続 けても、根底にあるビジネスロジックは生き残り
続ける
参考資料 • https://zenn.dev/tokium_dev/articles/dependency-injection-watanabe • https://zenn.dev/edash_tech_blog/articles/b4629f9cd73240 • https://zenn.dev/tokium_dev/articles/dependency-injection-watanabe • あとはこれを読んでください