🦕FastAPI(Python)+DDD(ドメイン駆動開発)のポイント!!2022/05/26に公開・約12,300字ツイートPython#DDDFastAPItechカラビナテクノロジーでサーバーサイドエンジニアをしているブラボーです。今回はDDD(ドメイン駆動開発)をFastAPIで実装するときのプラクティスを紹介します。アンケートできるサービスここで扱う題材として、QAが投稿できるサービスを想定しています。この記事ではQuestion(質問)する部分についてフォーカスして書いていきます。オニオンアーキテクチャコードの書き方としては、オニオンアーキテクチャをなんとなく参考にしている感じです。今回のDDDの実践については、この書籍を参考にしています。FastAPIとしてのModelが格納されます。DDDでいうとDataModelに相当します。migrationにはマイグレーションのパッケージであるalembicを利用しました。routersはFastAPIにおける各APIのルートを担当します。testsにはdomain、つまりDDD的な意味での各レイヤーのテストが格納されます。今回はこのプロジェクトではテストツールとしてpytestを利用しました。https://docs.pytest.org/en/7.1.x/補足domainディレクトリについてdomainにはapplication_service、repository、service、value_objectといった各レイヤーのディレクトリを配置しました。他にも適切なディレクトリ構造が考えつきますが、DDD的な情報の整理はできるので今回はOKとしました。以下にそれぞれのレイヤーの実装したコードとテストコードを示します。