【もう迷わない】PythonのWebフレームワークはFastAPIで決まり

【もう迷わない】PythonのWebフレームワークはFastAPIで決まり プログラミング

PythonのWebフレームワークに関して、迷っていませんか?
「どのフレームワークを採用しようか」と。

迷うなら、FastAPIで行きましょう。
私は、FastAPIで行くことを決めました。

本記事の内容

  • FastAPIをPythonのWebフレームワークに採用
  • FastAPIに決めた理由

それでは、上記に沿って説明していきます。

FastAPIをPythonのWebフレームワークに採用

「Python フレームワーク」
「Python Web フレームワーク」

上記キーワードをGoogleで検索すると、たくさん出てきます。
判明しただけでも、これだけのフレームワークが存在しています。

  • Django
  • bottle
  • Flask
  • Plone
  • FastAPI
  • Tornado
  • Pyramid
  • Quart
  • Sanic
  • Starlette

この中から選ぶなんて、無理ゲーですよ。
そうなると、人気のモノを選びたくなります。

人気のモノを選んでおけば、無難ですからね。
大きな失敗はありません。

それに人気のモノは、情報が多く存在しています。
特に、日本語での情報が多いと余計に人気者を選びたくなります。

でも、今回はFastAPIを選びました
人気者というのであれば、DjangoかFlaskになるのでしょう。

もちろん、FastAPIを適当に選んだのではありません。
ちゃんとした理由があります。

以下では、その理由を説明していきます。

FastAPIに決めた理由

正直、フレームワークなんて些細な事です。

「フレームワークについて語っているのに何を言い出すのか?」
このように思うかもしれません。

でも、フレームワークなんてOSやWebサーバーに比べたら、小さい世界のことです。
実際、OSやWebサーバーの方が重要度は高いと言えます。

そのため、OSやWebサーバーありきでフレームワークを考えるべきなのです。
もっと言うと、「本当にプログラム言語がPythonでいいのか?」も検討すべきでしょう。

前提条件

ただ、今回はすでに以下の前提条件が存在しています。

OSUbuntu 18.04
WebサーバーNginx 1.14.0
アプリケーションサーバーNGINX Unit
プログラム言語Python 3.6.9

この条件下でフレームワークを決めるということです。
前提条件があれば、ある程度は絞り込めます。

アプリケーションサーバーには、NGINX Unitをインストールしています。
次の記事で詳しく解説しています。

なお、NGINX Unitを選んだ理由は、Nginxと同じ会社が開発しているからです。
これが最大の理由です。
あとは、比較的新しいということもあります。

OSやWebサーバーを選択したことにも理由はあります。
ただ、それをここで長々と説明するのはやめておきます。

ここでは、アプリケーションサーバーがポイントとなります。

NGINX Unitで利用可能なフレームワーク

以下のページにおいて、NGINX Unitで利用可能なフレームワークを確認できます。
https://unit.nginx.org/howto/#frameworks

  • Django
  • Flask
  • FastAPI
  • Pyramid
  • Quart
  • Sanic
  • Starlette

10個から、7個に絞れました。
でも、まだ多いですね。

Python 3.6から利用可能なフレームワーク

Python3.5と3.6では、違いが結構あります。
その違いを吸収するようになっていることをマイナスと捉えます。

なぜなら、互換性があるということは、それだけ無駄な処理が走ると言えます。
よって、3.6からのみ(互換性なし)を重要視します。

Django指定ナシ(Python 2すら対象)
FlaskPython 3
FastAPIPython 3.6以上
PyramidPython 3
QuartPython 3.5以上
SanicPython 3.6以上
StarlettePython 3.5以上

互換性による負荷に関して言えば、Djangoはヤバそうです。
でも、過去の開発資産はそうそう簡単には捨てられないのですよね・・・

その点、新興勢力にはしがらみがありません。
そして、最もしがらみのないのがFastAPIとSanicになります。

以上より、FastAPIとSanicが候補に残りました。

Google Trendにおける比較

FastAPIとSanicそれぞれの検索トレンドの比較です。
期間は、この1年となります。

FastAPIとSanicのGoogle Trendにおける比較

FastAPIの方が、勢いがありますね。
それに、現時点が100です。
つまり、勢いが伸び続けていると言えます。

Google Trendにおける比較は、FastAPIの圧勝です。

Githubにおける比較

「Python FastAPI」で検索したリポジトリ数とFastAPIのスター数です。

Python FastAPI

「Python Sanic」で検索したリポジトリ数とSanicのスター数です。

Python Sanic

Githubにおける比較でも、FastAPIの勝利です。
Google Trendでの結果よりは、その差が小さくなりました。

まとめ

以上より、FastAPIをWebフレームワークに採用することにしました。
性能云々に関しても調査はしました。

ただ、性能比較データなんていくらでも捏造はできます。
捏造までいかなくても、データを収集する環境によっても変わってくるでしょう。
それに、記事を書いている人間の主観が、どうしても入ってしまいます。

そのため、なるべく機械的に採用する基準を設けました。
その結果が、FastAPIということでした。
さすがに、Google TrendとGithubの結果をコントロールするのは無理でしょう。

これで FastAPIがダメダメでも、私は何も後悔はしません。
FastAPIを採用することに決まったのは、単なるデータの結果に過ぎませんので。

タイトルとURLをコピーしました