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
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
660
Other Decks in Programming
See All in Programming
Java × distroless で 軽量なコンテナイメージを / Java on Distroless
contour_gara
0
380
AI時代だからこそ「Bloc」を採用する価値があるのかもしれない
takuroabe
0
250
関係性から理解する"同一性"の型用語たち
pvcresin
2
590
Migrations : C'est une question d'hygiène !
vinceamstoutz
0
2.4k
OSもどきOS
arkw
0
260
AI駆動開発勉強会 広島支部 第一回勉強会 AI駆動開発概要とワークショップ
hayatoshimiu
0
400
誰も頼んでない機能を出荷した話
zekutax
0
150
生成AI時代にこそ効くGo | Why Go Works in the Age of Generative AI
mom0tomo
8
2.9k
Transactional Change Stream Processing With Debezium and Apache Flink
gunnarmorling
1
140
Make SRE Operations Easier with Azure SRE Agent
kkamegawa
0
1.3k
AI Agent と正しく分析するための環境作り
yoshyum
3
630
Stage 3 Decorators でできること / できないこと / TSKaigi 2026
susisu
1
1.2k
Featured
See All Featured
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
750
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
1
520
Building Adaptive Systems
keathley
44
3k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.7k
What does AI have to do with Human Rights?
axbom
PRO
1
2.2k
The Spectacular Lies of Maps
axbom
PRO
1
770
Building a Scalable Design System with Sketch
lauravandoore
463
34k
Bootstrapping a Software Product
garrettdimon
PRO
307
120k
Unsuck your backbone
ammeep
672
58k
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
The agentic SEO stack - context over prompts
schlessera
0
790
Accessibility Awareness
sabderemane
1
130
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! • ドクターメイトでは一緒に持続可能な医療介護の実現に取り組 んでいただけるエンジニアを絶賛大募集中です! ◦ カジュアル面談などもしておりますのでお気軽にお声かけ くださいませー