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
アプリのリニューアル時にDomainModelを削除した話(設計カンファレンス extends...
Search
domonr
March 29, 2024
Technology
0
650
アプリのリニューアル時にDomainModelを削除した話(設計カンファレンス extends OOC 2024.3.29)
domonr
March 29, 2024
Tweet
Share
More Decks by domonr
See All by domonr
(iOS13の)UIBarButtonItem 位置調整あるある
domonr
0
1k
あるあるLT~文字列共通化~
domonr
0
580
あるあるLT_domonr_2019-03-19.pdf
domonr
0
1.4k
脱ぼっちレビュー_domonr
domonr
0
340
Other Decks in Technology
See All in Technology
「頑張る」を「楽しむ」に変換する技術
tomoyakitaura
8
1.3k
AWSアカウントのセキュリティ自動化、どこまで進める? 最適な設計と実践ポイント
yuobayashi
7
2k
Dify触ってみた。
niftycorp
PRO
0
110
エンジニア主導の企画立案を可能にする組織とは?
recruitengineers
PRO
1
350
x86-64 Assembly Essentials
latte72
4
760
クラウド関連のインシデントケースを収集して見えてきたもの
lhazy
10
2.1k
役員・マネージャー・著者・エンジニアそれぞれの立場から見たAWS認定資格
nrinetcom
PRO
5
6.9k
プルリクエストレビューを終わらせるためのチーム体制 / The Team for Completing Pull Request Reviews
nekonenene
4
2k
Ruby on Railsで持続可能な開発を行うために取り組んでいること
am1157154
3
190
ABWG2024採択者が語るエンジニアとしての自分自身の見つけ方〜発信して、つながって、世界を広げていく〜
maimyyym
1
230
アジャイルな開発チームでテスト戦略の話は誰がする? / Who Talks About Test Strategy?
ak1210
1
900
AIエージェント入門
minorun365
PRO
35
20k
Featured
See All Featured
Become a Pro
speakerdeck
PRO
26
5.2k
The World Runs on Bad Software
bkeepers
PRO
67
11k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Fantastic passwords and where to find them - at NoRuKo
philnash
51
3k
The Power of CSS Pseudo Elements
geoffreycrofte
75
5.5k
Designing Experiences People Love
moore
140
23k
VelocityConf: Rendering Performance Case Studies
addyosmani
328
24k
Visualization
eitanlees
146
15k
Raft: Consensus for Rubyists
vanstee
137
6.8k
Side Projects
sachag
452
42k
Art, The Web, and Tiny UX
lynnandtonic
298
20k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
49k
Transcript
アプリのリニューアル時に DomainModelを削除した話 土門@rd05011 設計カンファレンス extends OOC 2024.3.29
自己紹介 • 土門良輔(@rd05011) • iOS/Flutter Engineer • App Engineer @
WHITEPLUS, inc. ◦ 2023.4.1入社 ◦ 宅配クリーニング「リネット」のア プリを開発しています 2
None
4 アジェンダ アプリリニューアルに伴うリアーキテクチャのポイント リアーキテクチャ方針 01 02 アプリケーション層とドメイン層を削除 アプリケーション層を一部画面に復活させる 03 04
まとめ 05
5 01 アプリリニューアルに伴う リアーキテクチャのポイント
6 01 アプリリニューアルに伴うリアーキテクチャのポイント • アプリの役割が変化しそれに伴い求められる責務も変わってきた • 元々、多くの機能がネイティブ実装されていたため、アプリ側で 様々なロジックの実装を行なってた • 現在は、アプリ側にはロジックはあまり無く、サーバーから受け
取ったデータを表示することが主な責務になっている • よりシンプルな設計にすることで複雑性を下げることができ、開発 効率の向上が見込めると考えた
7 02 リアーキテクチャ方針
8 02 リアーキテクチャ方針 • 元々は、プレゼンテーション層、アプリケーション層、ドメイン層、インフラ 層の4つの層で構成されていた • しかし、現在のアプリではロジックはほぼ無くなり、主にデータの詰め替えの みを行っていた •
アプリケーション層とドメイン層を削除し、シンプルな設計に移行することに
9 03 アプリケーション層と ドメイン層を削除
10 03 アプリケーション層とドメイン層を削除 • アプリ側にロジックがほぼ無いため、必要なものはデータを取得す る層と表示する層だけなので、アプリケーション層とドメイン層を 削除 • 設計がシンプルになり、画面ごとのファイル数が減少し、不要な ファイルの作成時間もなくなり開発効率がアップ
11 しかし、問題発生
12 03 アプリケーション層とドメイン層を削除 • アプリ側にロジックがほぼ無いが、一部機能にはロジックがある • その画面でプレゼンテーション層が肥大化 • 全てのロジックがプレゼンテーション層に記載されるためコードの 複雑性も上昇
13 04 アプリケーション層を 一部画面に復活させる
14 04 アプリケーション層を一部画面に復活させる • プレゼンテーション層にView以外のロジックが入り込んでしまい、 複数のロジックが集中することで複雑性が上がってしまった • 一部だけUseCaseを復活させることで一部画面で発生した、アプリ ケーションロジックを分離し責務を分けることで、肥大化を避けた
15 05 まとめ
16 05 まとめ • ドメインロジックが無い場合はDomainModelは不要 ◦ アプリの場合は主な関心事がプレゼンテーション層のため、プレゼン テーション層以外はざっくりModelと表現されることが多い • 画面ごとに設計を変えることで過不足ない実装にすることができる
◦ アプリケーションロジックが必要な場合だけUseCaseを作成 ◦ ドメインロジックが必要な場合だけDomainModelを画面単位で導入 • アーキテクチャの軽量化を行うことで設計の複雑性を下げることができる ◦ 軽量化しすぎるとコードの複雑性が上がってしまうので注意
17 よかったらダウンロードしてみてください