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
740
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
アプリのリニューアル時にDomainModelを削除した話(設計カンファレンス extends OOC 2024.3.29)
domonr
March 29, 2024
More Decks by domonr
See All by domonr
(iOS13の)UIBarButtonItem 位置調整あるある
domonr
0
1.1k
あるあるLT~文字列共通化~
domonr
0
630
あるあるLT_domonr_2019-03-19.pdf
domonr
0
1.5k
脱ぼっちレビュー_domonr
domonr
0
420
Other Decks in Technology
See All in Technology
フルAIで個人開発して学んだあれこれ / yuruai vol.1
isaoshimizu
0
180
AIDLC_ヤフーショッピングの取り組み
lycorptech_jp
PRO
0
530
証券システムを10年Scalaで作り続けるということ - 関数型まつり2026
krrrr38
2
430
アラート調査向けAIエージェントの本番導入とその後/AI Agents for Alert Investigation: Production Deployment and After
taddy_919
1
380
AIをフル活用してオンコール機能のプロトタイプを2日で作った話 / Building an AI-Powered On-Call Prototype in Just Two Days
nari_ex
0
180
Hatena Engineer Seminar 37 jj1uzh
jj1uzh
0
430
AI Agent SaaS を支える自社仮想化基盤への挑戦と実運用 / ai-agent-saas-virtualization
flatt_security
2
1.2k
Terraform共通モジュールをチーム横断で“変えられる”運用へ ― リリースと適用の分離
kekke_n
0
110
NDIAS CTF 2026 問題解説会資料
bata_24
0
180
オブザーバビリティ、本当に活用できてる? 〜API連携×生成AIで成熟度を自動評価〜
dmmsre
0
230
#エンジニアBooks 30分でわかる 「技術記事を書く技術」 / engineer-books 2026-06-30
jnchito
1
190
記録をかんたんに、提案をパーソナルに ── AIであすけんが目指すもの
oprstchn
0
140
Featured
See All Featured
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
30k
Utilizing Notion as your number one productivity tool
mfonobong
4
340
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
62
44k
Rebuilding a faster, lazier Slack
samanthasiow
85
9.5k
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.2k
Principles of Awesome APIs and How to Build Them.
keavy
128
18k
Building Applications with DynamoDB
mza
96
7.1k
Skip the Path - Find Your Career Trail
mkilby
1
160
Typedesign – Prime Four
hannesfritz
42
3.1k
Technical Leadership for Architectural Decision Making
baasie
3
430
Measuring & Analyzing Core Web Vitals
bluesmoon
9
880
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
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 よかったらダウンロードしてみてください