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
0
1.3k
それ... リポジトリじゃなくね?~実案件から学ぶアンチパターン~/Learn repository pattern from real projects
Shunya Yamada
October 23, 2020
Tweet
Share
Other Decks in Programming
See All in Programming
ktr0731/go-mcpでMCPサーバー作ってみた
takak2166
0
160
Beyond Portability: Live Migration for Evolving WebAssembly Workloads
chikuwait
0
350
GoのGenericsによるslice操作との付き合い方
syumai
2
570
カクヨムAndroidアプリのリブート
numeroanddev
0
410
プロダクト開発でも使おう 関数のオーバーロード
yoiwamoto
0
150
2度もゼロから書き直して、やっとブラウザでぬるぬる動くAIに辿り着いた話
tomoino
0
160
Cline指示通りに動かない? AI小説エージェントで学ぶ指示書の書き方と自動アップデートの仕組み
kamomeashizawa
1
470
Perplexity Slack Botを作ってAI活用を進めた話 / AI Engineering Summit プレイベント
n3xem
0
650
RubyKaigiで得られる10の価値 〜Ruby話を聞くことだけが RubyKaigiじゃない〜
tomohiko9090
0
140
事業戦略を理解してソフトウェアを設計する
masuda220
PRO
22
6k
Development of an App for Intuitive AI Learning - Blockly Summit 2025
teba_eleven
0
110
Go Modules: From Basics to Beyond / Go Modulesの基本とその先へ
kuro_kurorrr
0
110
Featured
See All Featured
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
4
150
The Straight Up "How To Draw Better" Workshop
denniskardys
233
140k
Building Better People: How to give real-time feedback that sticks.
wjessup
367
19k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
137
34k
Raft: Consensus for Rubyists
vanstee
139
7k
GraphQLの誤解/rethinking-graphql
sonatard
71
11k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
10
900
GitHub's CSS Performance
jonrohan
1031
460k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Unsuck your backbone
ammeep
671
58k
Into the Great Unknown - MozCon
thekraken
39
1.8k
Documentation Writing (for coders)
carmenintech
71
4.9k
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 種 システムアーキテクチャは ⾯に はない リポジトリはシステムアーキテクチャの領域 リポジトリは
⾯ごとにではなく、 単 で作った がいい じになる 上となります