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
RTSPクライアントを自作してみた話
simotin13
0
610
Inside Stream API
skrb
1
740
「なぜそう決めたのか」を残し続ける仕組み ― Notion AI カスタムエージェント × Slack連携による設計判断の自動記録 - NIKKEI Tech Talk #47
niftycorp
PRO
0
210
Composerを使ったサプライチェーン攻撃の様子を眺めてみる #phpstudy
o0h
PRO
2
250
Datadog × OpenTelemetry 入門と実践のあいだ
kn_to_maxpno
1
160
代数的データ型って何が嬉しいの? #frontend_phpcon_do
kajitack
8
3.7k
さぁV100、メモリをお食べ・・・
nilpe
0
150
net-httpのHTTP/2対応について
naruse
0
500
セキュリティの専門家じゃなくてもできる。「セキュリティ意識」をアップデートして サプライチェーン攻撃への耐性を高めよう。
tk3fftk
5
880
気圧・高度・GPSを記録&可視化するアプリ「Koudo」を作った話
hjmkth
1
290
Spec Driven Development | AI Summit Lisbon
danielsogl
PRO
0
200
Webフレームワークの ベンチマークについて
yusukebe
0
170
Featured
See All Featured
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
850
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
200
Six Lessons from altMBA
skipperchong
29
4.3k
Agile that works and the tools we love
rasmusluckow
331
21k
Claude Code のすすめ
schroneko
67
230k
Ethics towards AI in product and experience design
skipperchong
2
310
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
320
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.8k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
230
23k
My Coaching Mixtape
mlcsv
0
150
Documentation Writing (for coders)
carmenintech
77
5.4k
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
1
210
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! • ドクターメイトでは一緒に持続可能な医療介護の実現に取り組 んでいただけるエンジニアを絶賛大募集中です! ◦ カジュアル面談などもしておりますのでお気軽にお声かけ くださいませー