PythonでWEBアプリを実現するためには、「Django」、「Bottle」、「FastAPI」、「Flask」の4つが特に有名です。このなかで、どのWEB開発環境を学ぶのが良いかを簡単に解説致します。
本記事の読者層は以下の方を想定しています。
- PythonでWEBアプリ作りたい方。
PythonでWEBアプリを作る方法
Pythonは人気のアプリですが、ネットワークアプリケーションとの相性はあまり良くありません。
2022年現在で、Python言語で利用できるWebアプリケーションとして、オープンソースプログラム「Django」と「Flask」が1位と2位の人気を誇ります。今回、更に人気急上昇中の「FastAPI」と「Bottle」を加えたWEBアプリケーションの紹介をしたいと思います。
- Django (ジャンゴ)
- Bottle (ボトル)
- FastAPI (ファストえーぴーあい)
- Flask (フラスコ)
これらの開発ソフトは、クロスプラットフォーム対応で、サポートOSとしてWindows、macOS, Linuxが利用できるようになっています。
Django
【HP】https://www.djangoproject.com/
【概要】
Python製Webフレームワークの中で最も有名なものです。Web開発に必要な機能が一通りそろっており、大規模なWEBアプリを利用する際に使われます。
【特徴】
フルスタックと呼ばれるフレームワークです。データベース管理や認証機構などWebアプリケーションに必要な多くの機能が最初から備わっているため、すぐに大規模アプリケーションの開発ができます。
pip3 install Django
Flask
【HP】https://flask.palletsprojects.com/
【概要】
FlaskはPythonのWebフレームワークで、軽量かつシンプルです。このため、開発を始めるときのハードルが低いです。
【特徴】
軽量フレームワークで、小規模から中規模の開発にむいています。データーベース管理や管理画面、認証機能やフォームといったものは使用できません。
pip3 install -U simplejson
pip3 install -U flask
FastAPI
【HP】https://fastapi.tiangolo.com/ja/
【概要】
FastAPIは、Djangoと同様にPythonのWebフレームワークです。主にWEB API(「Application Programming Inerface」)のを開発するために利用されます。FlaskやDjangoよりも後発なフレームワークですが、FastAPIは、Flaskと異なり非同期処理に対応しています。
【特徴】
Python3.6以降で古い言語の勉強をしなくてもよく、高速なNGINXに対応しているため比較的しぼった環境化で開発ができるメリットがあります。そして、軽量でPythonフレームワークの中で最も高速という特徴があります。名前の通りWEBAPIに特化したフレームワークです。バックエンドとしてFastAPIを利用し、フロントエンドには「React」や「Vue.js」を利用することが多いようです。
FastAPIの本番環境は以下のようにインストールします。
pip3 install fastapi
pip3 install uvocorn[standard]
Bottle
【HP】https://bottlepy.org/docs/dev/
【概要】
PythonのWebフレームワークの中で、最もシンプルで最軽量フレームワークです。なんといっても単一ファイル「Bottle.py」だけで構成されています。チュートリアルやマニュアルも充実しており、使いやすいフレームワークとなります。このため、最大のメリットは高速であることです。しかし、大規模なWebアプリケーションには不向きです。
【特徴】
Bottleの主な機能は①「ルーティング」、②「テンプレート」、③ユーティリティ、④「開発サーバー」があります。Bottleは単一のファイルだけで構成されています。
pip3 install bottle
比較
SOFT | FastAPI | Flask | Django | Bottle |
勉強のしやすさ | ||||
速度 | 速い | 少し遅い | 遅い・重量級 | 速い |
以上、FastAPIとFlask, Django, Bottleを比較してみました。
まとめ
本記事のまとめは、FastAPIとFlask, Django, Bottleを比較してみました。
個人的な「物になる開発」をする際は、FastAPIを試してみるのが良い。
大規模開発にはDjango一択。
次回の記事をご期待下さい。どうぞよろしくお願いいたします。
コメント