Python3でおすすめなWebアプリフレームワーク4選

2020年2月5日

みなさまおはこんばんにちは、せなです

今回はPython3のWebアプリ開発で役立つおすすめなフレームワークを4つ紹介したいと思います

おすすめWebアプリフレームワーク

Django

Django(ジャンゴ)はPythonのWebアプリフレームワークの中でも最も人気あるフレームワークです

2020年2月時点ではVersion3.0.3が最新バージョンとなっています
今後の開発ロードマップも2023年分まで公開されていますので安心(サポート期間)です

Google Trendsの比較データより(2020/2/1)

Djangoは基本的なWebアプリケーションに必要な機能を備えています
一部を紹介すると

  • URLディスパッチャ
  • オブジェクト関係マップ
  • テンプレートエンジン
  • ユーザ認証

など他にも多くの機能を備えています
そのためDjangoは「フルスタックフレームワーク」と言われています

フルスタックフレームワークとは?
UI・DB・セキュリティーなどの基本的な機能を、All In Oneで提供しているフレームワークのこと
中規模以上の開発などでは個々の機能の相性を考える必要がなくなるので、主要機能の開発に集中できるメリットがある
(逆に細かい機能の変更が難しいことがデメリット)

Djangoは中規模以上のWebアプリケーション開発ではよく使用されます
小規模な開発では後述する「Bottle」や「Flask」を使用する方がよい場合が多いです

メリット

  • 国内No.1の人気
  • 公式の開発が活発
  • 日本語資料が多い(調べれば大体のことがわかる)
  • 中規模以上の開発であれば、作業の効率化を図ることができる

デメリット

  • 多機能故に、覚えることが多い
  • 小規模な開発であれば、使用するメリットは多くない
  • 小規模フレームワークと比較して、重い

Bottle

Bottle(ボトル)は最もシンプルで、軽量なWebアプリフレームワークです

Bottleの特徴的な点は、一つの「bottle.py」というファイルで構成されている点です
一つのファイルで動いているため、とても軽いです

ですが、Djangoなどのフルスタックフレームワークと比較するとBottleにはオブジェクト関係マップなどの機能が備え付けられていないので他のライブラリなどから導入する必要が出てきます

始めてWebアプリを開発する方におすすめです(個人的には後述するFlaskの方がおすすめです

メリット

  • とても軽い
  • シンプルな機能のため学習コストが少ない
  • Webアプリ開発初心者におすすめ
  • 小規模開発に最適
  • 日本語資料がある

デメリット

  • 機能が多くないので、ライブラリなどで補う必要がある
  • 中規模以上の開発であればDjangoの方が優れている

Flask

Flask(フラスコ)はBottleと同様にシンプルで、軽量なWebアプリフレームワークです
(Flaskは元々Bottleをもじったエイプリルフールのネタから生まれたフレームワークなので似ています)

FlaskはBottleに非常に似ており、ほとんどの機能はBottleと同じであると言っても差し支えないと思います

決定的な違いとしてはテンプレートエンジンの違いでしょう
BottleはSimpleTemplate Engine」を使用しており「Flaskはjinja2」使用しています

BottleのSimpleTemplate Engineではテンプレート内にPythonコードを埋め込むことができる一方で
Flaskのjinja2ではテンプレート内へのPythonコードの埋め込みはできません

これは一長一短ですが、個人的にはロジックとテンプレートは分けたほうが可読性が上がると思いますのでFlaskのほうが良いと思います
(なおBottleのテンプレートエンジンをjinja2に変更することもできます)

他にはWSGI Serverの違いもありますが、そこまで気にすることではないと思います
(気になる方は調べてみてください)

メリット

  • とても軽い
  • シンプルな機能のため学習コストが少ない
  • Webアプリ開発初心者におすすめ
  • 小規模開発に最適
  • 日本語資料が豊富
  • Bottleよりも可読性が高い(個人的に)

デメリット

  • 機能が多くないので、ライブラリなどで補う必要がある
  • 中規模以上の開発であればDjangoの方が優れている

Tornado

Tornade(トルネード)は基本的なWebアプリフレームワークとしての機能を持ちつつ
Webサーバーとしての機能も持っています

非同期処理に対応しているので、非同期Webサーバーの「node.js」の代わりとして使用することもできます

一般的にはnginxと併用して使用されています
静的ファイルの配信であれば、ほかのフレームワークよりもはるかに高いパフォーマンスを発揮し、高速な動作を期待できます

メリット

  • Webサーバーとして使用することができる
  • 特定の状況であれば、高いパフォーマンスが期待できる

デメリット

  • 特定の使用方法以外では良い結果を得られない
  • 日本語資料はほぼ無い(英語資料はある)

まとめ

どのフレームワークも状況に応じて使い分けることができると思いますが、ここで簡単にまとめると

中規模以上:Django
小規模:Bottle, Flask
Webサーバー:Tornade

小規模開発ではBottleでもFlaskでも好きな方を選べばいいと思いますが
個人的には、Flaskの方が好きなのでFlaskをおすすめします

一応、中規模以上とか小規模とかで区切っていますが小規模開発でDjangoを使ってはいけないわけではないですのであしからず…

ここまで読んで下さり、ありがとうございました
また別の記事でお会いしましょう ではでは~