OSS¶
主に利用しているOSSについて記述する。
自動化できるところは自動化できるようにする。
できるだけ一般知識で更新ができるように、ossは担げる場合は担ぐ方式を取る。
テスト、解析、可視化のよう開発環境のみ必要になるものは特にOSSを担ぎたい。
主要OSS一覧¶
機能 | 依存 |
---|---|
パッケージマネージャ | Poetry |
フレームワーク | FastAPI |
ASGI | FastAPI uvicorn |
CQRS対応 | FastAPI (CORS (オリジン間リソース共有)) |
バックグラウンドタスク | FastAPI (バックグラウンドタスク) |
DI | FastAPI (Depends) |
ORM | SQLModel |
RDB | SQLite, postgresql |
マイグレーション | 検討中:Alembic |
Linter,Formatter | Ruff |
型チェック | mypy |
APIユニットテスト | Fastapi (TestClient) |
負荷テスト | 検討中:Locust |
クラスドキュメンテーション | 検討中:Sphinx |
APIドキュメンテーション | FastAPI (swagger, redoc) |
DDLドキュメンテーション | schemaspy |
OSSドキュメンテーション | pip-license, pipdeptree |
MDドキュメンテーション | mkdocs , Material for MkDocs |
Poetry¶
pyproject.tomlに下記の諸情報を記載し、実行環境を管理するもの。
- 依存OSS
- 静的解析設定
FastAPI¶
- PythonWebフレームワーク
- ASGIサーバー(uvicornなど)経由で起動する
- pydantic標準対応
- 型チェックやバリデーションが可能
- openapi標準対応
- swaggerやredocといった実行ツールやドキュメンテーションを自動生成
- endpointの実装があればIF設計できる
- DI, CORS, バックグラウンドタスクあたりの実装も可能
SQLModel¶
- FastAPIと開発元が同じsclalchemyのPydanticラッパー
- FastAPIとPydanticに対する親和性が高いので採用
- 基本的にはSQModelの提供機能(pydanticライクな記述)で設定可能だが、一部の細かい設定を行う場合はsqlalchemyの記述を利用する必要がある