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
0
1.9k
React Nativeアプリを DDDで開発している話
2022/06/29 オブジェクト指向LT会 vol.4 #ooltjp
https://rakus.connpass.com/event/247348/
nihemak
June 29, 2022
Tweet
Share
More Decks by nihemak
See All by nihemak
BigQueryとDataformとTROCCO®による事業グロース
nihemak
0
1.4k
転職してユニットテストに救われている話
nihemak
1
1.1k
忙しいソフトウェアエンジニアにお勧めする友人の作り方 / create friend
nihemak
0
660
Other Decks in Programming
See All in Programming
CSC307 Lecture 09
javiergs
PRO
1
850
Raku Raku Notion 20260128
hareyakayuruyaka
0
420
Scaling & Coordinating AI Agents for Development - Tamir Dresher
tamirdresher
0
110
CSC307 Lecture 10
javiergs
PRO
1
690
CSC307 Lecture 08
javiergs
PRO
0
690
24時間止められないシステムを守る-医療ITにおけるランサムウェア対策の実際
koukimiura
2
170
AIによる開発の民主化を支える コンテキスト管理のこれまでとこれから
mulyu
3
2k
生成AIを使ったコードレビューで定性的に品質カバー
chiilog
1
310
izumin5210のプロポーザルのネタ探し #tskaigi_msup
izumin5210
1
440
あなたはユーザーではない #PdENight
kajitack
4
270
Gemini for developers
meteatamel
0
120
AWS Infrastructure as Code の新機能 2025 総まとめ~ SA 4人による怒涛のデモ祭り ~
konokenj
7
1.5k
Featured
See All Featured
Building Applications with DynamoDB
mza
96
6.9k
A designer walks into a library…
pauljervisheath
210
24k
Designing for Performance
lara
611
70k
Paper Plane
katiecoart
PRO
0
47k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.2k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.7k
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
180
First, design no harm
axbom
PRO
2
1.1k
The SEO Collaboration Effect
kristinabergwall1
0
370
VelocityConf: Rendering Performance Case Studies
addyosmani
333
24k
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
1
63
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! • ドクターメイトでは一緒に持続可能な医療介護の実現に取り組 んでいただけるエンジニアを絶賛大募集中です! ◦ カジュアル面談などもしておりますのでお気軽にお声かけ くださいませー