Upgrade to Pro — share decks privately, control downloads, hide ads and more …

React Nativeアプリを DDDで開発している話

React Nativeアプリを DDDで開発している話

2022/06/29 オブジェクト指向LT会 vol.4 #ooltjp
https://rakus.connpass.com/event/247348/

27bfff305e8067f0fa075a997ca54923?s=128

nihemak

June 29, 2022
Tweet

More Decks by nihemak

Other Decks in Programming

Transcript

  1. React Nativeアプリを DDDで開発している話 2022/06/29 オブジェクト指向LT会 vol.4 #ooltjp

  2. 本日の内容は事例紹介になります • React Native モバイルアプリを 軽量DDD で開発しています! • 具体的にどういったアーキテクチャで開発しているかを事例紹介します! •

    軽量DDD から脱却して戦略的設計を取り入れた ドメイン駆動 にするため に検討していることも共有します!
  3. 自己紹介 nihemak (にへまこ) Makoto Nihei • ドクターメイト株式会社 (2022/01〜) • プロダクト開発エンジニア

    • 日々キャッチアップ中
  4. ドクターメイト株式会社

  5. 対象モバイルアプリの概要 • 介護施設向け医療相談モバイルアプリ ◦ 介護施設の職員さんが弊社の医師に医療相談をするためのアプリです • 技術スタック ◦ React Native

    (Expo) ◦ TypeScript ◦ Firebase / GCP
  6. いわゆる軽量DDDで開発しています! • 発端はテスタブル化 ◦ ユニットテストを書きやすくするためにドメインモデルを中心としたオニオンアー キテクチャにリアーキテクティングしました ▪ 転職してユニットテストに救われている話 - Speaker

    Deck • 軽量DDDだが戦略的設計もしてます ◦ ドメインエキスパートとの共同開発 ◦ ユビキタス言語などの定義 ◦ etc
  7. アーキテクチャの概要 【レイヤーの責務】 • Domain層 ◦ 他の層に依存しないドメインモデル • UseCase層 ◦ ユースケースに沿った調整役

    • Component層 ◦ Reactの世界 • Infrastructure層 ◦ Firebaseなど外部の面倒を見る
  8. アーキテクチャの概要 【どんな感じか?】 • 責務が明確になった ◦ テストは書きやすいです ◦ レビューもしやすいです • 新規機能開発はこれに沿っている

    ◦ 若干、開発は重たいかも • クラスベースです ◦ TypeScript/Reactらしくないかも
  9. 【WIP】開発はドメイン駆動にしたいですよね • ALPS (Application-Level Profile Semantics) からの駆動を現在検討中 ◦ 既に要件や仕様の定義にALPSを使っている ◦

    Firestoreデータモデル設計でも語句の定義と連動させている ◦ リアーキテクティングではドメインモデルもこれに沿った形にした ▪ せっかくなのでドメインモデル等のINPUTにできないかなと...
  10. ところでApplication-Level Profile Semantics (ALPS)とは? • アプリケーションレベルのセマンティクス(語句の意味や構造)を表現するフォーマッ トです。JSON、HTMLなど汎用メディアにアプリケーション固有のセマンティックスを 加え、情報の説明や操作の理解に役立てます。 ◦ イントロダクション

    | alps-asd より ASD(Application State Diagram) ・Ontology(語句) ・Taxonomy(語句の階層) ・Choreography(振る舞い)
  11. まとめ • テスタブルを目的とした結果、ドメインモデルを中心としたオニオンアーキテ クチャに行き着いて軽量DDDになりました! • 【WIP】軽量DDDから脱却してドメイン駆動の開発にするためにALPS駆動 で要件や仕様からシームレスにドメインモデルへと繋げられないか検討し ています! • ALPS

    (Application-Level Profile Semantics) とはアプリケーションレベルのセ マンティクス(語句の意味や構造)を表現するフォーマットです!
  12. We are hiring! • ドクターメイトでは一緒に持続可能な医療介護の実現に取り組 んでいただけるエンジニアを絶賛大募集中です! ◦ カジュアル面談などもしておりますのでお気軽にお声かけ くださいませー