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
React Nativeアプリを DDDで開発している話
Search
nihemak
June 29, 2022
Programming
2k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
React Nativeアプリを DDDで開発している話
2022/06/29 オブジェクト指向LT会 vol.4 #ooltjp
https://rakus.connpass.com/event/247348/
nihemak
June 29, 2022
More Decks by nihemak
See All by nihemak
BigQueryとDataformとTROCCO®による事業グロース
nihemak
0
1.4k
転職してユニットテストに救われている話
nihemak
1
1.2k
忙しいソフトウェアエンジニアにお勧めする友人の作り方 / create friend
nihemak
0
670
Other Decks in Programming
See All in Programming
AI 時代のソフトウェア設計の学び方
masuda220
PRO
29
13k
Dataformのリポジトリを立ち上げるときにまずやること / dataform-day0-2026
snhryt
0
170
Performance Engineering for Everyone
elenatanasoiu
0
180
Hunting Vulnerabilities in Symfony with LLMs
vinceamstoutz
0
550
C# and C++ Interoperability - cho-dotnetnew
harukasao
0
270
TSKaigi Night Talks 2026_TypeScriptでサプライチェーンの整合性を型に閉じ込める
geekplus_tech
0
400
不変条件と整合性境界—ビジネスが決める設計判断と実現パターン / Invariants and Consistency Boundaries
nrslib
14
5.6k
AIで効率化できた業務・日常
ochtum
0
140
セキュリティの専門家じゃなくてもできる。「セキュリティ意識」をアップデートして サプライチェーン攻撃への耐性を高めよう。
tk3fftk
5
880
IBM Bobを活用したレガシーアプリの最新化
oniak3ibm
PRO
1
200
LLM本来の能力を解き放つサンドボックス技術とAI民主化への適用
yukukotani
3
4.3k
Spec Driven Development | AI Summit Lisbon
danielsogl
PRO
0
200
Featured
See All Featured
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
750
Designing Powerful Visuals for Engaging Learning
tmiket
1
420
The Language of Interfaces
destraynor
162
27k
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
370
Raft: Consensus for Rubyists
vanstee
141
7.5k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
3.5k
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
200
Evolving SEO for Evolving Search Engines
ryanjones
0
220
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
210
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
370
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.3k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3.4k
Transcript
React Nativeアプリを DDDで開発している話 2022/06/29 オブジェクト指向LT会 vol.4 #ooltjp
本日の内容は事例紹介になります • React Native モバイルアプリを 軽量DDD で開発しています! • 具体的にどういったアーキテクチャで開発しているかを事例紹介します! •
軽量DDD から脱却して戦略的設計を取り入れた ドメイン駆動 にするため に検討していることも共有します!
自己紹介 nihemak (にへまこ) Makoto Nihei • ドクターメイト株式会社 (2022/01〜) • プロダクト開発エンジニア
• 日々キャッチアップ中
ドクターメイト株式会社
対象モバイルアプリの概要 • 介護施設向け医療相談モバイルアプリ ◦ 介護施設の職員さんが弊社の医師に医療相談をするためのアプリです • 技術スタック ◦ React Native
(Expo) ◦ TypeScript ◦ Firebase / GCP
いわゆる軽量DDDで開発しています! • 発端はテスタブル化 ◦ ユニットテストを書きやすくするためにドメインモデルを中心としたオニオンアー キテクチャにリアーキテクティングしました ▪ 転職してユニットテストに救われている話 - Speaker
Deck • 軽量DDDだが戦略的設計もしてます ◦ ドメインエキスパートとの共同開発 ◦ ユビキタス言語などの定義 ◦ etc
アーキテクチャの概要 【レイヤーの責務】 • Domain層 ◦ 他の層に依存しないドメインモデル • UseCase層 ◦ ユースケースに沿った調整役
• Component層 ◦ Reactの世界 • Infrastructure層 ◦ Firebaseなど外部の面倒を見る
アーキテクチャの概要 【どんな感じか?】 • 責務が明確になった ◦ テストは書きやすいです ◦ レビューもしやすいです • 新規機能開発はこれに沿っている
◦ 若干、開発は重たいかも • クラスベースです ◦ TypeScript/Reactらしくないかも
【WIP】開発はドメイン駆動にしたいですよね • ALPS (Application-Level Profile Semantics) からの駆動を現在検討中 ◦ 既に要件や仕様の定義にALPSを使っている ◦
Firestoreデータモデル設計でも語句の定義と連動させている ◦ リアーキテクティングではドメインモデルもこれに沿った形にした ▪ せっかくなのでドメインモデル等のINPUTにできないかなと...
ところでApplication-Level Profile Semantics (ALPS)とは? • アプリケーションレベルのセマンティクス(語句の意味や構造)を表現するフォーマッ トです。JSON、HTMLなど汎用メディアにアプリケーション固有のセマンティックスを 加え、情報の説明や操作の理解に役立てます。 ◦ イントロダクション
| alps-asd より ASD(Application State Diagram) ・Ontology(語句) ・Taxonomy(語句の階層) ・Choreography(振る舞い)
まとめ • テスタブルを目的とした結果、ドメインモデルを中心としたオニオンアーキテ クチャに行き着いて軽量DDDになりました! • 【WIP】軽量DDDから脱却してドメイン駆動の開発にするためにALPS駆動 で要件や仕様からシームレスにドメインモデルへと繋げられないか検討し ています! • ALPS
(Application-Level Profile Semantics) とはアプリケーションレベルのセ マンティクス(語句の意味や構造)を表現するフォーマットです!
We are hiring! • ドクターメイトでは一緒に持続可能な医療介護の実現に取り組 んでいただけるエンジニアを絶賛大募集中です! ◦ カジュアル面談などもしておりますのでお気軽にお声かけ くださいませー