nikkie-ftnextの日記

イベントレポートや読書メモを発信

非同期なDBアクセスやクリーンなアーキテクチャのFastAPIアプリケーションの実装例をさがして

はじめに

きっと出会いは偶然だけど ずっと会えれば必然だったよね♪ nikkieです

FastAPIでWeb APIを作ることになり、参照した情報源(2024年12月時点)を書き出します。
FastAPIのドキュメントは都度見ていく前提で、実務的なアプリケーション開発の見取り図を得たかったという動機があります。

目次

rhoboro/async-fastapi-sqlalchemy

今回めちゃめちゃ参考になりました。

rhoboroさんは『Python実践入門』の著者です。
この書籍以外にも国内のPyConで素晴らしい発表を重ねられています。

上記リポジトリは、DBにも非同期でアクセスするFastAPIアプリケーションのサンプルです。

This is a sample project of Async Web API with FastAPI + SQLAlchemy 2.0. It includes asynchronous DB access using asyncpg and test code covering them.

DBの非同期アクセスという点では、rhoboroさんのこのリポジトリ以外に有力なものを私は引っ張り出せていません(もちろん私の見ている範囲が限られているというのは承知の上です。情報求ム!)

このリポジトリには日本語で読める記事もあります

iktakahiro/dddpy

クリーンアーキテクチャを意識したレイヤ分け1を考えるうえで、池内さんのオニオンアーキテクチャの実装例も参考にしました。

ドメイン・インフラ・ユースケースの3層構成です。

リポジトリパターン、DTOのところを特に参照しました。

書籍たち

「DBアクセスを非同期にしたい」「クリーンアーキテクチャを意識したい」というニーズは、現時点で出回っている書籍ではいまいち叶えられないという印象です。
そのため辛口評価となっています

📣逆に言えば、出版関係者の皆さん、市場があるってことですよ!(技術同人誌も!)2

Python FastAPI本格入門』

初学者向けのFastAPIの入門書という感じです。
FastAPIの一通りの機能を扱っているのですが、最初に学ぶ際は厳密さより簡単さ優先というスタンスのようでした。

すぐ近い将来に覚え直しが発生するので、私はあまり好まないスタイルです。
FastAPIの解説部分だけでなく、Pythonの環境構築も同様のスタイルと思われました(Miniconda + conda環境にpipでガンガン依存を入れる)。
趣味レベルのアプリケーションは作れるようになると思いますが、実務レベルに達するには全部覚え直さないといけないように思われます。

『現場のPython

ビープラウドさん発の書籍。
9章でFastAPIを扱っています。

FastAPIの基本的なところだけ触って終わりという感じでした。
この書籍はFastAPIの専門書ではないので妥当だと思います。
覚え直しは不要でそのまま実務につながる内容ですが、FastAPIを知るには他の学習リソースが必要でしょう。

PyCon JP 2024「SQLModel入門」

FastAPIの作者tiangolo氏によるORM SQLModelを知りたく、存在を思い出しました。
PyConの時点ではSQLModelを触るなんて全然想像してませんでしたね。

FastAPIが要は Starlette + Pydantic であるように、SQLModelは SQLAlchemy + Pydantic と理解しました。
DBの非同期アクセスはSQLModel内の情報が薄く(プルリクチャンス!)、いろいろ調べてなんとかいけたという感じです(これはまた別の機会に)

終わりに

非同期なDBアクセスや、関心でレイヤ分けしたFastAPIアプリケーションを実装するうえで、知っている情報を洗い出しました。
rhoboroさんのasync-fastapi-sqlalchemyや、非同期DBアクセスまわりでアウトプットしてくださった先人に感謝です。

この記事を読んだ方でオススメのFastAPIの実装例がありましたら、教えていただけるととても助かります


  1. ちょうぜつ本より
  2. DjangoCongress JP 2025で聞きたいなァ!