はじめに
最近ハッカソンでPython(FastAPI)を使いかける機会があり少し勉強しました。使いはしなかったものの一応その概要とオブジェクト指向について思考整理としてアウトプットしておくことにしました。オブジェクト指向の方は記事として切り出したほうが読みやすい気がしたので別記事に書きます。
全く土地勘といえるほどの内容ではないのですが、Pythonを使ったWeb開発で急ぎでどういう技術がいい感じなのかというちょっとした概要を知りたい方の参考になれば幸いです。
Python概要
- 動的型付け言語
- プログラミングスタイルとしてはオブジェクト指向が主流
- 型ヒント(Type Hints)と静的型チェックツール(mypyなど)を併用することで、Pythonの利点である「迅速な開発やプロトタイピングの容易さ」を維持しつつ、型安全性も両立することができる。
- データ分析や機械学習、Web開発など幅広い分野で使われている。
よく使われるライブラリ(Web開発)
Webフレームワーク
FastAPI
- 軽量で高速でモダンな機能も豊富
- API開発に特化している
Flask
- 小規模〜中規模開発に向いてる
- 軽量
- 迅速な開発に向いてる
Django
- 保守性と迅速な開発を両立したフルスタックフレームワーク
- 中規模〜大規模開発に向いてる
テストツール
pytest
- 機能幅も広くサービス規模問わず使われている。
unittest
- 標準ライブラリ
orm
SQLAlchemy
- 標準的立ち位置
- 大規模システムの開発に向いてる
- 複雑なDB構造を持つサービスの開発に向いてる
Peewee
- 小規模〜中規模開発に向いてる
- 軽量
Tortois ORM
- FastAPIと相性良い。
- 小規模〜中規模開発に向いてる
マイグレーションツール
Alembic
- 標準的
- 複雑なクエリやスケーラビリティが重要なプロジェクトに向いてる
- 基本的にSQLAlchemyとセットで使われる
- 中規模〜大規模開発に向いてる
simple-db-migrate
- シンプル
- 小規模〜中規模開発に向いてる
Linter
Ruff
- Linter、Formatter、import sortingを高い質で行うことができ、今のところ最も高速と言われているツール
- できて数年でGithubスター数も3.7万と勢いがある
- 比較的新しく、ドキュメントやコミュニティが成熟していない
Flake8
- シンプル
- 歴史が長く成熟しており、広く普及している。
- 小規模〜中規模開発に向いてる
Pylint
- 歴史が長く、成熟している
- 大規模開発に向いてる