コンテンツにスキップ

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
  • 静的解析設定

参考:DockerでPoetryを使って環境構築しよう

FastAPI

  • PythonWebフレームワーク
  • ASGIサーバー(uvicornなど)経由で起動する
  • pydantic標準対応
    • 型チェックやバリデーションが可能
  • openapi標準対応
    • swaggerやredocといった実行ツールやドキュメンテーションを自動生成
    • endpointの実装があればIF設計できる
  • DI, CORS, バックグラウンドタスクあたりの実装も可能

SQLModel

  • FastAPIと開発元が同じsclalchemyのPydanticラッパー
  • FastAPIとPydanticに対する親和性が高いので採用
  • 基本的にはSQModelの提供機能(pydanticライクな記述)で設定可能だが、一部の細かい設定を行う場合はsqlalchemyの記述を利用する必要がある