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
それ... リポジトリじゃなくね?~実案件から学ぶアンチパターン~/Learn reposit...
Search
Shunya Yamada
October 23, 2020
Programming
1
1.5k
それ... リポジトリじゃなくね?~実案件から学ぶアンチパターン~/Learn repository pattern from real projects
Shunya Yamada
October 23, 2020
Tweet
Share
Other Decks in Programming
See All in Programming
Rust 製のコードエディタ “Zed” を使ってみた
nearme_tech
PRO
0
180
CSC307 Lecture 09
javiergs
PRO
1
840
今こそ知るべき耐量子計算機暗号(PQC)入門 / PQC: What You Need to Know Now
mackey0225
3
380
登壇資料を作る時に意識していること #登壇資料_findy
konifar
4
1.2k
CSC307 Lecture 03
javiergs
PRO
1
490
Honoを使ったリモートMCPサーバでAIツールとの連携を加速させる!
tosuri13
1
180
Amazon Bedrockを活用したRAGの品質管理パイプライン構築
tosuri13
5
710
MDN Web Docs に日本語翻訳でコントリビュート
ohmori_yusuke
0
650
CSC307 Lecture 08
javiergs
PRO
0
670
Apache Iceberg V3 and migration to V3
tomtanaka
0
160
Oxlintはいいぞ
yug1224
5
1.3k
Grafana:建立系統全知視角的捷徑
blueswen
0
330
Featured
See All Featured
Evolving SEO for Evolving Search Engines
ryanjones
0
120
Done Done
chrislema
186
16k
Designing for Performance
lara
610
70k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
5.8k
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
54
Code Review Best Practice
trishagee
74
20k
Believing is Seeing
oripsolob
1
55
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
Bootstrapping a Software Product
garrettdimon
PRO
307
120k
The Cult of Friendly URLs
andyhume
79
6.8k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
2.1k
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
Transcript
それ... リポジトリじゃなくね? ~ 件から ぶアンチパターン~ 2020/10/23
似たような発表をしたのでよければ... 前、 の をしたのでよければ 照してください。 https://www.notion.so/a71be224de42457299befa88c76c86d7
発表のきっかけ なんでこんな発 を
とある Flutter 案件 BLoC パターン + クリーンアーキテクチャ View → Bloc
→ Repository ... と Repository が ⾯ごとに 在 さらに下の で API へのリクエスト等が されている 発 のきっかけ
とある Flutter 案件 BLoC パターン + クリーンアーキテクチャ View → Bloc
→ Repository ... と Repository が ⾯ごとに 在 さらに下の で API へのリクエスト等が されている 発 のきっかけ 何かがおかしい...
とある Flutter 案件 BLoC パターン + クリーンアーキテクチャ View → Bloc
→ Repository ... と Repository が ⾯ごとに 在 さらに下の で API へのリクエスト等が されている 発 のきっかけ
とある Flutter 案件 BLoC パターン + クリーンアーキテクチャ View → Bloc
→ Repository ... と Repository が ⾯ごとに 在 さらに下の で API へのリクエスト等が されている 発 のきっかけ
とある Flutter 案件 BLoC パターン + クリーンアーキテクチャ View → Bloc
→ Repository ... と Repository が ⾯ごとに 在 さらに下の で API へのリクエスト等が されている 発 のきっかけ リポジトリが画面実装に依存?
おかしいと思った理由は? リポジトリが ⾯ に するのがなぜいけないのか
その前に.. アーキテクチャの種類について アーキテクチャには⼤きく けて2 種 あります
二種類のアーキテクチャ アーキテクチャの種 GUI アーキテクチャ システムアーキテクチャ
GUI アーキテクチャについて アーキテクチャの種 MVC 、MVP 、MVVM などが 当 システム 来の
領域( ドメイン) をUI( プレゼンテーション) から き離す。 UI が わる 界より先のことはGUI アーキテクチャは何も⽰していない Model の作り は に指 はない : i O S アプリ パターン
システムアーキテクチャについて アーキテクチャの種 クリーンアーキテクチャのようなレイヤードアーキテクチャが 当 GUI アーキテクチャが っていないドメインの領域をどのようにレイヤーで ドメイン = UI
に しない処理すべて 切り けるべきか、システム 体をどのように すべきか : i O S アプリ パターン
二種類のアーキテクチャ アーキテクチャの種 GUIアーキテクチャ MVC MVP MVVM システムアーキテクチャ クリーンアーキテクチャ
二種類のアーキテクチャ アーキテクチャの種 GUIアーキテクチャ MVC MVP MVVM システムアーキテクチャ クリーンアーキテクチャ リポジトリ
リポジトリはシステムアーキテクチャの領域 よって画面実装に依存すべきではない! と個 的には思っています
実装例 そんなにコードはありません
こんな感じのアプリを想定 API から何かの 事を⼀ で ⽰、 索を⾏う ⼀ ⾯と 索
⾯の2 ⾯ ⼀ ⾯では ての 事を 順で 得 索 ⾯では任 のキーワードで 事を 索 例
こんな感じのアプリを想定 例 UI の処理について える ビジネスロジックは API をコールして「 事 得」「
事 索」を⾏う
まずは良くない例 のプロダクションコードはこんな じでした
まずは良くない例 例
まずは良くない例 例
まずは良くない例 例
良い例 ⾯ に しない例
良い例 例
良い例 例
良い例のメリットなど 例 「 事」に する処理を⼀箇 まとめることができる ⾯ に しないので ⾯が
えてもリポジトリは えない ⾯で再利⽤できる 処理が えてきてリポジトリが⼤きくなってきたら、さらに けられないか⾒ し
まとめ まとめ アーキテクチャは「GUI アーキテクチャ」「システムアーキテクチャ」の2 種 システムアーキテクチャは ⾯に はない リポジトリはシステムアーキテクチャの領域 リポジトリは
⾯ごとにではなく、 単 で作った がいい じになる 上となります