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

サーバーサイドもTSにしたらモノレポになった.pdf

Sponsored · SiteGround - Reliable hosting with speed, security, and support you can count on.

 サーバーサイドもTSにしたらモノレポになった.pdf

Avatar for gizm000

gizm000

May 10, 2024
Tweet

More Decks by gizm000

Other Decks in Programming

Transcript

  1. npm workspace product ┗ node_modules ┗ packages ┗ frontend ┗

    backend ┗ schema ┗ and more ← node_modulesに各パッケージへの シンボリックリンクが生成される
  2. npm workspace product ┗ node_modules ┗ packages ┗ frontend ┗

    backend ┗ schema ┗ and more ← node_modulesに各パッケージへの シンボリックリンクが生成される `import { hoge } from @product/schema` これで他パッケージから参照可能 ✨
  3. npm workspace product ┗ node_modules ┗ packages ┗ validators ┗

    utilities ┗ tsconfig ┗ eslint ← zodで記述した共通バリデーション frontend/backendで共通利用
  4. npm workspace product ┗ node_modules ┗ packages ┗ validators ┗

    utilities ┗ tsconfig ┗ eslint ← 各種パッケージで共通のtsconfigを用意 front, back間で共通はさせない方がよいかも...
  5. NestJS モノレポモード product ┗ node_modules ┗ packages ┗ frontend ┗

    backend ┗ schema ┗ and more ← この配下でネストさせられる 👀
  6. NestJS モノレポモード backend ┗ apps ┗ main ┗ worker ┗

    other ┗ shared ┗ core ┗ infrastructure ┗ utils
  7. NestJS モノレポモード backend ┗ apps ┗ main ┗ worker ┗

    other ┗ shared ┗ core ┗ infrastructure ┗ utils ← ひとつのNestJSプロジェクトに格納可能
  8. NestJS モノレポモード backend ┗ apps ┗ main ┗ worker ┗

    other ┗ shared ┗ core ┗ infrastructure ┗ utils ← appsで共通利用可能なドメインロジック
  9. NestJS モノレポモード backend ┗ apps ┗ main ┗ worker ┗

    other ┗ shared ┗ core ┗ infrastructure ┗ utils ← AWSクライアントなどのインフラ層
  10. NestJS モノレポモード backend ┗ apps ┗ main ┗ worker ┗

    other ┗ shared ┗ core ┗ infrastructure ┗ utils ← ドメインの関係ないユーティリティ
  11. NestJS モノレポモード backend ┗ apps ┗ main ┗ worker ┗

    other ┗ shared ┗ core ┗ infrastructure ┗ utils ← ドメインの関係ないユーティリティ npm workspaceでも 同じことできそう 🤔
  12. NestJS モノレポモード ・npm workspace との違いは? ・NestJS モノレポモードではnpm packageの単位として同一になる ・つまり package.jsonは共有

     → package.jsonを分離したいなら分けた方がよい ・何が嬉しい? ・npm workspaceで複数のNestJSアプリを作らなくてよい  → 認知負荷の軽減
  13. まとめ 📚 ・サーバーサイドをTSにしたときのプラクティスがもっと欲しい! Ruby, Java, PHP のように枯れていない・・・ ・営業製作所では以下を使って構成している ・npm workspace

    ・モジュラーモノリスのような構成が作りやすい ・NestJS モノレポモード ・NestJSに閉じるなら、npm workspaceよりカンタン