
NestJSと戦術的DDDのいいとこどりをしてバックエンドTypescriptの設計をした話
BRANK
はじめにバックエンド開発にもTypeScriptを利用する事例、増えてますね。NestJSはTypescriptバックエンドの中でも、唯一のopinionatedなフレームワークとして採用しました(特に大規模な開発を目指している弊社では相性がいい)。しかし、実際にNestJSを使って開発を進めると「too much」と言われる前評判とは異なり、「not enough」という印象を受けました。特に、DDDの観点からすると、DTO(Data Transfer Object)やControllerなどプレゼンテーション層は整備されているものの、Service層にユースケース層、ドメイン層、インフラ層の役割を一括して詰め込んでしまい、結果として「Fat Service」になりがちです。そこで、本記事ではNestJSの機能を活かしつつ、戦術的DDDのパターンを導入して、Service以下のコードをドメイン層、ユースケース層、インフラ層に明確に分離する設計手法について紹介します。NestJSの特徴と利点NestJSは、Node.js環境でモダンなバックエンドアプリケーションを構築するために設計されたフレームワークです。主な特徴と利点は以下の通りです。TypeScriptファーストTypeScriptによる型安全なコーディングが可能で、開発中のエラーを早期に検知で…