FastAPI-fastkit: Python & FastAPI入門者向けオールインワンのプロジェクトスキャフォールディングツール
(github.com/bnbong)こんにちは。最近はAI開発分野の盛り上がりが激しく、PythonバックエンドフレームワークであるFastAPIにも本当に多くの新規ユーザーが流入しています。
私は長年FastAPIを使い、愛用してきた開発者として、FastAPIに入門する開発者の方々を助けたいという思いから、このプロジェクトを開発することになりました。
FastAPI-fastkitは、PythonとFastAPIに初めて触れるユーザーのために、開発環境の設定とプロジェクトのスキャフォールディングを素早く行えるCLIベースのスターターキットです。
非常に簡単なコマンド入力だけでFastAPIプロジェクトを作成でき、仮想環境の作成から依存関係のインストールまで、すべて自動で完了します。
pip install fastapi-fastkit
fastkit init --interactive # 対話形式でプロジェクトを構成(DB ORM、認証、テスト、ユーティリティ、その他ユーザーが望む依存関係のインストール)
FastAPIはモダンで高速なPython Webフレームワークとして高く評価されていますが、最初のWebフレームワークとしてFastAPIを採用して始める人にとっては、依然として参入障壁があります。
- 定型化されたプロジェクト構造が提供されていないため、どのようにプロジェクト構造を組めばよいのか分かりづらい
- 1番の問題の延長として、同じFastAPIベースでもプロジェクトごとに構造が異なるため、プロジェクト理解やオープンソース貢献時に学習コストが発生する
- 他のWebフレームワークと比べて、ASGIサーバーやシリアライズなど、コアとなるWebフレームワーク機能に関連する外部ライブラリへの依存度が非常に高く、FastAPIの学習や利用体験が複雑になりやすい(他ライブラリやツールの学習にもより多く注意を払う必要があるため)
Djangoを使ったことがある方なら、django-admin startprojectがどれほど便利かご存じでしょう。Springエコシステムにも、これと似たようにプロジェクトをすぐに作業ディレクトリへ配置できるSpring Initializrというツールがあります。
個人的にFastAPIは性能面でも非常に魅力的なフレームワークだと考えており、5年以上愛用してきましたが、上で述べた欠点のために入門をためらう人がいるので、FastAPIにもこうしたツールがあればよいと思い、FastAPI-fastkitを作ることになりました。
プロジェクト開発を決意した決定的なきっかけは、FastAPI 0.111.0 バージョンでFastAPI CLIパッケージが追加されたときでした。このパッケージはFastAPI開発者のtiangoloがコミュニティの反応検証なしに独断で追加したものですが、その更新ノートで示されたFastAPIの入門障壁を下げるためという動機に共感し、自分のプロジェクトもより意義のあるものになり得ると確信しました。
[主な機能]
- 対話型プロジェクトビルダー (
fastkit init --interactive)
ステップごとに必要な依存関係や機能を選択すると、自動でコードが生成されます。
- Database: PostgreSQL, MySQL, MongoDB, Redis, SQLite
- Authentication: JWT, OAuth2, FastAPI-Users, Sessionベース
- Background: Celery, Dramatiq
- Caching: Redis, fastapi-cache2
- Monitoring: Loguru, OpenTelemetry, Prometheus
- Testing: pytest + coverage 自動構成
- Utilities: CORS, Rate-Limiting, Pagination, WebSocket
- Deployment: Docker, docker-compose 自動生成
- Package Manager: pip, uv, pdm, poetry を選択可能
- その他、ユーザーが追加したい依存関係を入力すれば追加可能
- boilerplateで素早くFastAPIプロジェクトのソースコードを配置
対話型設定が面倒であれば、事前構成済みテンプレートですぐに始められます。
fastkit list-templates # 利用可能なテンプレート一覧を確認
fastkit startdemo fastapi-psql-orm --project-name myapp # 特定テンプレートでプロジェクトを作成
パッケージ内で提供されるテンプレートはFastAPIのさまざまなユースケースを考慮して追加しており、GitHubで公開されているFastAPIベースのプロジェクト構造を参考にしました。
新しいテンプレートの追加も進行中で、現在提供されているテンプレートは次のとおりです。
- fastapi-default: 基本的なFastAPIプロジェクト構造
- fastapi-async-crud: 非同期CRUD処理に特化
- fastapi-dockerized: Dockerデプロイの準備完了
- fastapi-psql-orm: PostgreSQL + SQLAlchemy ORM 統合
- fastapi-single-module: シンプルな単一モジュール構成
- fastapi-mcp: MCPサーバー開発のための基本的なFastAPIプロジェクト構造
- 空のプロジェクトから始める
特別な設定なしでクリーンな空プロジェクトから始めたいなら: fastkit init --project-name myproject
- ルート追加
既存プロジェクトに新しいAPIルートを追加します: fastkit addroute myproject users # myprojectプロジェクトにusersというAPIルートを追加
- 開発サーバー起動
別途uvicornコマンドを使わずに、そのままサーバーを起動します: fastkit runserver --reload --port 8000
[ドキュメントとリソース]
より詳しい使い方は公式ドキュメントを参照してください。
- ユーザーガイド: https://bnbong.github.io/FastAPI-fastkit/user-guide/quick-start/
- チュートリアル: https://bnbong.github.io/FastAPI-fastkit/tutorial/getting-started/
- CLIリファレンス: https://bnbong.github.io/FastAPI-fastkit/user-guide/cli-reference/
- GitHub Repository: https://github.com/bnbong/FastAPI-fastkit
- PyPI Package: https://pypi.org/project/fastapi-fastkit
FastAPIとPythonをこれから始める方々に、少しでも役立てばうれしいです。
フィードバック、質問、貢献はすべて歓迎します!
1件のコメント
新しいプロジェクトのためにFastAPIを検討していました。
一つひとつ悩みながら確認していた項目が、すべて含まれています。
素晴らしいです。ありがとうございます。