2020 年に学ぶべき Python Web フレームワーク トップ 13

フレームワークは、アプリケーション開発の構造を提供することによって、開発者の生活を容易にします。 420>

この記事では、プロのバックエンド開発者になり、既存のスキルセットを向上させるために役立つ、トップ 12 の Python Web フレームワークのリストを紹介します。 Stack Overflowは最近、2019年の年次開発者調査の結果を発表し、Pythonが最も急速に成長している主要プログラミング言語であると宣言しました。

source: stackoverflow.blog

By far, the most popular Python frameworks is Django and Flask.Pythonのフレームワークで最も人気があるのはDjangoとFlaskですが、Pythonのフレームワークで最も人気があるのはDjangoです。 しかし、だからといって、他のフレームワークの可能性を軽視するべきではありません。 それぞれのフレームワークには、あなたの Web プロジェクトと完全に一致するような特徴があります。com

ここで説明する Python フレームワークは、特定の順序でリストされているわけではないことに留意してください。 開発しようとしているものが、機能や要件を詰め込んだ大規模なシステムであれば、フルスタックフレームワークが正しい選択となるかもしれません。 アプリケーションがより小規模で単純な側である場合、おそらくマイクロフレームワークを検討すべきです。

次に、検討しているフレームワークが垂直方向と水平方向に拡張できるかどうかを確認する必要があります。 これは、複数のサーバーで実行し、大量のトラフィックを処理し、機能性を高めるために新しい機能の追加をサポートするプロジェクトには必須です。

フレームワークを選択したら、開発者チームに連絡し、アプリを開発するための推定コストに関する情報を求めます。 しかし、最終的な決定は、プロジェクトと簡略化したいタスクに対するあなた自身の理解から行う必要があります。 フルスタックのフレームワークを選択すると、多くの場合、一連の制限にサインアップすることになります。 もちろん、それらを回避する方法を見つけることはできますが、純粋な Python でアプリケーションを書くよりも、自分自身の自由のために戦うことに多くの時間を費やさないように注意してください。 バックエンド サービス、フロントエンド インターフェイス、およびデータベースの開発をサポートします。 フルスタックフレームワークは、開発者がアプリケーションを構築するために必要なものをすべて提供します。 Python は複数のフルスタックフレームワークを提供します。

Django

Official Website | GitHub | PyPI | Awesome

GitHub Stars: 44,077 | GitHub Forks: 18,949

Django はフリーなオープンソースのフルスタック Python フレームワークです。 Django の代表的な機能には、認証、URL ルーティング、テンプレートエンジン、オブジェクトリレーショナルマッパー (ORM) 、データベーススキーママイグレーション (Django v.1.7+) があります。 同じコードが異なるデータベースで動作し、あるデータベースから別のデータベースへ移行するのは難しくありません。 Django が扱う主なデータベースは PostgreSQL, MySQL, SQLite, Oracle ですが、サードパーティのドライバによって他のデータベースも使うことができます。 その柔軟性のおかげで、Django は MVP を作るためにも使用され、新興企業が時間と予算を最適化することができます。

多くの開発者が、機械学習などの新しい技術にこのフレームワークが最適であると考えているので、Django のユーザーベースは成長すると予想されます。 また、2020 年には、Django コミュニティは、高まる需要に応えるために、より多くのライブラリをリリースする予定です。

ここ SteelKiwi では、バックエンド開発用の主要なフレームワークとして Django を使用しています。

Pyramid

公式サイト | GitHub | PyPI | Awesome

GitHub Stars: 3,215 | GitHub Forks: 866

Pyramid はオープンソースの – そして 2 番目に注目すべき – Python ベースの Web アプリケーションフレームワークです。 その目標は、最小限の複雑さで可能な限り多くのことを行うことです。 Python 3 で実行される Pyramid は、技術的な改良に対応しています。 Pyramid 1.10 はフレームワークの最新バージョンで、2010 年以来 10 回目のアップデートです。

Pyramid の最も顕著な特徴は、小さなアプリケーションと大きなアプリケーションの両方でうまく動作する能力です。 Pyramidの素晴らしい機能には、次のようなものがあります。

  • 単一ファイルのアプリケーション
  • URL 生成
  • 拡張可能な設定
  • テンプレートと資産の仕様
  • 柔軟な認証と承認
  • テスト、サポート,
  • ビュー述語とルートごとの多くのビュー
  • 関数デコレータ
  • 述語
  • レンダラ

Pyramidでは、開発者はテンプレート言語、生成ライブラリ、データベース層を決定することが可能である。

Pyramidのコミュニティは活発で、多くのリリースを誇っています。 開発者は、公式 IRC チャンネルに参加したり、Google や Twitter のグループに参加したりして、フレームワークの進捗をフォローすることができます。 65

TurboGears は、オープンソースのデータ駆動型フルスタック Web アプリケーション フレームワークです。 多くのミドルウェアと多くのライブラリで構築されており、当初は他の Python フレームワークの最高のコンポーネントを組み合わせるように作られていました。 ユーザーフレンドリーなテンプレート エンジンと強力で柔軟な ORM が付属しています。 デザイナーを楽にする優れたテンプレート システムに加え、TurboGears は多くの柔軟性、集約の強力なサポート、強力な ORM、および再利用可能なスニペットを提供します。

TurboGearsの特徴的な機能には次のようなものがあります。

  • マルチデータベースのサポート
  • MVCスタイルアーキテクチャ
  • SQLObjectおよびSQLAlchemyのサポート
  • KidおよびGenshiを優先テンプレート言語に含む
  • FormEncodeによる検証
  • WebサーバーとしてのPylons
  • ToscaWidgets.NET

  • のサポート
  • ToscaWidgets.NET
  • のサポート ToscaWidgets.NET
  • PasteScript テンプレート
  • 前面 WSGI ベースサーバ (Paste HTTP サーバ、CherryPy WSGI/HTTP サーバ、など)。)
  • コマンドライン ツール
  • MochiKit JavaScript ライブラリ統合
  • すべての機能は関数デコレータとして実装

TurboGears の将来については、現在コミュニティはフレームワークの機能と全体的な安定性を改善するために取り組んでおり、”最小限のコード “をリリースしようとしているところです。 このコードは、マイクロフレームワーク、または TurboGears のストリップ ダウン版とも呼ばれます。 最小限のコードは、開発者がアプリをより速く構築し、お金と時間を節約するのに役立ちます。

Web2py

Official Website | GitHub | PyPI

GitHub Stars: 1,794 | GitHub Forks: 818

Web2py はスケーラブルなオープンソースのフルスタックPythonフレームワークです。 データを処理することに関しては非常に強力です。 Web2pyはもともと、使いやすさを重視したティーチングツールとして提供されていました。 Web2pyの素晴らしいところは、独自のWebベースのIDEが付属していることで、特に、コードエディター、デバッガー、ワンクリックデプロイが含まれています。

Web2py の他の重要な機能は次のとおりです。

  • インストールや設定のための要件はありません
  • Windows、Mac、Linux/Unix、Google App Engine、Amazon EC2、および Python 2.5-2.0 をサポートする任意の Web ホスティング上で実行可能です。7 または Java+Python
  • 複数のプロトコルの可読性

  • クロスサイトスクリプティング、インジェクションの欠陥、悪意のあるファイルの実行などの脆弱性を防止するデータセキュリティ
  • ソフトウェアエンジニアリング慣行の成功、コードの読みやすさとメンテナンス
  • エラー追跡機能。 徹底したエラーログとチケッティング
  • ロールベースのアクセスコントロール
  • 国際化対応
  • 旧バージョンとの関係を絶つことなくユーザー本位の発展を保証する後方互換性

Web2pyの最大の特長はチケッティングシステムにあると言えます。 これは、エラーが発生するたびにチケットを発行します。 この方法で、ユーザーはエラーとその状態を追跡することができます。

これらすべての利点にもかかわらず、Web2pyのコミュニティはPyramidやDjangoよりも小さいのです。 多くの開発者が使っているわけではありません。 これは、サポートを受けるチャンスが低いことを意味します。 さらに、公式のメーリングリストはあまり活発ではありません。

Microframeworks

マイクロフレームワーク、または最小限のWebアプリケーションフレームワークは、Webテンプレートエンジン、認証機能、アカウント、承認、入力検証、入力廃棄などの本格的なフレームワークの機能性のほとんどを欠いています。 マイクロフレームワークはアプリケーションを構築するために必要なコンポーネントセットだけを提供しようとします。 420>

Flask

Official Website | GitHub | PyPI | Awesome

Github Stars: 46,475 | GitHub Forks: 12,921

Flask は、BSD ライセンスで利用できる Python フレームワークです。 これは、Sinatra Ruby フレームワークから着想を得ています。 Flask は Werkzeug WSGI ツールキットと Jinja2 テンプレートに依存します。

Flask の背後にある主な考え方は、強固な Web アプリケーションの基盤を構築するのを助けることです。 そこから、あなたが必要とするかもしれない任意の拡張を使用することができます。 Flask は、あらゆるプロジェクトに選ばれています。 実際、Django にマッチしないどんな Web プロジェクトでも、デフォルトで選択されます。

Flaskの軽量かつモジュール式のデザインは、開発者のニーズに簡単に適応させることができます。

  • 内蔵の開発サーバーと高速なデバッガー
  • ユニットテストの統合サポート
  • RESTful リクエストディスパッチ
  • Jinja2 テンプレート
  • Secure Cookies サポート (クライアントサイドセッション)
  • WSGI 1.1 (日本語)。0 準拠
  • Unicode ベース
  • Ability to plug in any ORM
  • HTTP リクエスト処理

2010年に発表されてから Flask は27回アップデートされています。 今日まで、Pythonフレームワークの中でトップの成長を続けています。 しかし、多くのFlask拡張はもはやサポートされていません:ドキュメントが古く、それらはもはや開発されていません。 もしこれに遭遇したら、同様の機能を持つアクティブにサポートされているプラグインを Google で探す必要があります。

Bottle

公式サイト | GitHub | PyPI

GitHub Stars: 6,348 | GitHub Forks: 1,245

Bottleは、マイクロフレームワークです。 元々は API を構築するためのもので、Bottle は単一のソース ファイルですべてを実装します。 Python 標準ライブラリーを除けば、依存関係はありません。 Bottle でコーディングすると、フルスタックフレームワークでコーディングするよりも金属に近くなります。 しかし、Bottle は、最大で 500 行のコードと特別な要件がない非常に小さなアプリケーションを作成する場合にのみマッチします。

そのデフォルト機能には、ルーティング、テンプレート、ユーティリティ、および WSGI 標準の基本的な抽象化が含まれます。

  • ルーティング – 関数呼び出しマッピングへのリクエストをサポートし、クリーンで動的な URL を実現します。
  • テンプレート – mako、jinja2、および cheetah のフルサポートとともに、高速な Pythonic テンプレートエンジンがすぐに利用可能です。 その他の HTTP 関連のメタデータ
  • Server – fapws3、bjoern、GAE、СherryPy、およびその他の WSGI 対応 HTTP サーバーをサポートする内蔵 HTTP 開発サーバー

2009年以降、Bottle は 73 回更新され、今では、試作、Web フレームワークの構成の学習、簡単な個人アプリの構築に最適なソリューションになっています。

Bottle コミュニティへのあらゆる貢献は、GitHub を介して受け付けられます。 ユーザーは、Bottle のメーリング リストとブログに参加し、Twitter で最新の変更をフォローすることもできます。 ディスカッションのための追加のフォーラムを探しているなら、freenode チャットに参加しましょう。

CherryPy

公式サイト | GitHub | PyPI

GitHub Stars: 1,057 | GitHub Forks: 259

CherryPy はオープンソース、最小主義のウェブフレームワークです。 Python Web アプリケーションを構築することは、他のオブジェクト指向プログラムを構築することと何ら変わりません。 たとえば、CherryPy を使用した Web アプリは、独自のマルチスレッド Web サーバーを組み込んだスタンドアロンの Python アプリケーションです。 独自の Web サーバーにより、拡張ポイントはリクエストとレスポンスのサイクルの外にある機能を含み、その結果、CherryPy の拡張性のレベルが高まります。

実際、CherryPy を使用した Web アプリは、独自のマルチスレッドの Web サーバーを組み込んだスタンドアロンの Python アプリケーションです。 CherryPy アプリは、Python をサポートする任意のオペレーティング システム (Windows、macOS、Linux など) で実行できます。 通常のPythonアプリを実行できる場所であれば、どこにでもデプロイできます。 CherryPy アプリに Apache は必要ありませんが、CherryPy アプリを Apache の後ろで実行することは、Lighttpd または IIS の後ろで実行するのと同じようにできます。

CherryPy はテンプレートやデータ アクセスなどにあらゆる種類の技術を使用できるので、あまり限定的なフレームワークではありません。 しかし、セッション、静的、クッキー、ファイルアップロード、その他 Web フレームワークが一般的にできることすべてを扱うことができるのです。1準拠のWSGIスレッドプール型Webサーバー

  • 複数のHTTPサーバーを同時に実行するシンプルさ
  • 強力な設定システム
  • 柔軟なプラグインシステム
  • キャッシュ、エンコーディング、セッション、認証、静的コンテンツなどのためのすぐに使えるツール
  • プロファイル、カバー、テスト用の組み込みのサポート
  • Python 2上で動く能力
  • そのすべての機能と利点にもかかわらず、多くの開発者は CherryPy のドキュメントに改善の余地があると感じています。 さらに、CherryPy は少なくとももう少し使いやすくなる可能性があります。

    他のほとんどのフレームワークと同様に、CherryPy には、初心者や上級開発者に支援を提供するコミュニティが背後にあります。 CherryPy にはメーリングリストがあり、開発者にフレームワークの IRC チャンネルや Gitter および Google グループに参加することを勧めています。

    Falcon

    Official Website | GitHub | PyPI

    GitHub Stars: 1,057 | GitHub Forks: 259

    Falcon is a bare-metal Python web API framework for building very fast app backend. フレームワークのロゴは鷹で、Falcon がいかに速く動作するかを象徴しています。

    このフレームワークにより、開発者はよりすっきりしたデザインを作成でき、ほとんどのリクエストを処理できます。 ファルコンは、データベースと認証のためのライブラリの選択において、開発者を決して制限しない。

    その他の貴重な Falcon の機能。

    • 包括的なテスト スイートによる 100% のコード カバレッジ
    • 高度に最適化されたコード ベース
    • アップフロント例外処理
    • REST-
              2130リソースクラス
    • 直感的なルーチンのためのURIテンプレート
    • リクエストとレスポンスクラスによる簡単なアクセス
    • ミドルウェアによるDRYリクエスト処理。 コンポーネント
    • Idiomatic HTTP error responses
    • Unit testing via WSGI helpers

    FalconはWebフレームワークの開発中に無駄な操作を無視することが可能です。 また、選択の自由を与えます。開発者は、実装を自由に調整しカスタマイズするのに役立つ決定を下すことができます。

    言及に値するもうひとつの利点は、広範なドキュメントの利用可能性と活発なコミュニティです。

    Hug

    公式サイト | GitHub | PyPI

    GitHub Stars: 5,905 | GitHub Forks: 347

    Hug は Python 3 の API 開発フレームワークです。 ソフトウェア エンジニアが API を一度開発し、必要なときにいつでもそれを再利用できるようにするために作られました。 Hug フレームワークは、さまざまなインターフェイスを提供することにより、API 開発を単純化します。 これが、このフレームワークがPython 3で最も高速なものの1つと呼ばれる主な理由です。

    Hugの主な特徴。

    • 自動ドキュメンテーションのサポート
    • アノテーションによる検証
    • 組み込みのバージョン管理
    • Cythonへの準拠
    • Pythonライブラリとして使える

    このフレームワークに統合やコードの数は限りなく少なくしている。 機能的でありながら、優れたパフォーマンスを発揮します。 さらに、Hugのコミュニティは現在成長中です。 これはフレームワークの需要の表れであり、問題が発生したときにいつでも開発者が助けを見つけられるということの証明でもあります。

    FastAPI

    公式サイト |GitHub |PyPI

    GitHub Stars: 4,835| GitHub Forks: 256

    FastAPI は最新の Python ベース フレームワークであり、Python を使用しています。 当初は、最高の開発体験を保証するために、簡単に使用できるように設計されました。 今日まで、FastAPI は Python 3.6+ で API を構築するための最速フレームワークの 1 つです。

    このフレームワークは、そのシンプルさなど、いくつかの特性を Flask から取り入れました。 フレームワーク全体は Starlette 上に構築されており、その機能のほとんど (テンプレート、WebSocket、および GraphQL サポート) を含んでいます。

    FastAPI フレームワークは以下を提供します。

    • 開発速度を 200% ~ 300% 向上
    • エラーを 40% 減少
    • デバッグ時間を短縮
    • コードの重複を最小化
    • 自動で対話式のドキュメント化

    FastAPIはどのデータベースとも密接に結合されていません。 しかし、必要なデータベースはサポートします。 FastAPI を使用すると、必要な方法でプロジェクトを自由に構成でき、Flask プロジェクトの 1 つから同じファイルのほとんどを使用することさえ可能です。

    非同期フレームワーク

    Asynchronous framework is a relatively recent type of Python framework. それは、開発者が大規模な同時接続のセットを処理することを可能にするマイクロフレームワークです。 非同期フレームワークは、ノンブロッキングソケットを使用し、Python の asyncio ライブラリを利用します。

    Sanic

    公式サイト | GitHub | PyPI

    GitHub Stars: 12,780 | GitHub Forks: 1,203

    Sanic は uvloop 上に構築され、特に非同期リクエスト処理による速い HTTP 応答のために作られた Python ウェブフレームワークです。 Sanic は非同期リクエスト ハンドラーをサポートし、Python 3.5 の async/await 関数と互換性があります。

    Sonic は、ルーティング、ミドルウェア、クッキー、バージョニング、静的ファイル、ブループリント、クラスベースのビュー、およびソケットにより、Python の世界で好ましい非同期フレームワークと見なされています。 しかし、データベースのサポートとテンプレートは提供していない。

    1 つのプロセスと 100 の接続を使用したベンチマーク テストでは、Sanic は 33,342 リクエスト/秒、平均待ち時間 2.96ms を処理できた。

    Tornado

    公式サイト | GitHub | PyPI

    GitHub Stars: 18,292| GitHub Forks.Tornado

    GitHub Forks: 5,040

    Tornado は Python Web フレームワークで、速度と大量のトラフィックを処理する能力に焦点を当てた非同期ネットワーキング ライブラリです。 これは、ノンブロッキング ネットワーク I/O を使用し、C10k 問題 (適切に構成されていれば、1 万以上の同時接続を処理できることを意味する) を解決します。

    このため、高いパフォーマンスと数万の同時ユーザー数を必要とするアプリケーション構築用の素晴らしいツールとなっています。

    Tornado の主な機能は次のとおりです。

    • ユーザー認証のビルトインサポート
    • リアルタイムサービス
    • 高いパフォーマンス
    • PythonベースのWebテンプレート言語
    • ノンブロッキングHTTPクライアント
    • サードパーティ認証および認可スキームの実装 (Google OpenID/OAuth.NET)
    • サードパーティ認証および認可スキーマの実装
    • Webテンプレート言語
    • Webテンプレート言語

    • Webテンプレート言語
    • Webテンプレート言語
    • Support for translation and localization

    人気という点では、Tornado は Django と Flask の中間に位置するものです。 例えば、FlaskやDjangoの機能やツールを使って何かを書きたいが、もっと良いパフォーマンスも必要だとします。

    その他

    Dash

    Official Website | GitHub | PyPI | Awesome

    GitHub Stars: 9,856| GitHub Forks.Tornado

    Official Website | GitHub | PyPI | Awesome

    GitHub Stars: 9,856| GitHub Forks: 1,011

    Dash はオープンソースの Python フレームワークで、分析用の Web アプリケーションの構築に使用されます。 特に、Web 開発にあまり慣れていない Python データ科学者に最適です。

    Dash の基本的な利点は 2 つあります。

    • Python コードだけを使用して、高度にインタラクティブなアプリケーションを構築できます。
    • データ操作に Python ツールの力を簡単に利用できます。 そのフロントエンドは React.js でコンポーネントをレンダリングします。

      Dash で開発されたアプリケーションは Web ブラウザでレンダリングされ、サーバーにデプロイすることができます。 これはまた、Dash アプリケーションが本質的にクロスプラットフォームでモバイル対応であることを意味します。

      Dashの開発者は、基盤となるFlaskインスタンスとその設定可能なすべてのプロパティにアクセスできます。 Dash アプリケーションの機能を拡張するために、開発者は豊富な Flask プラグインのセットを使用することもできます。 この記事で興味深いフレームワークを見つけられたことを、私たちは本当に願っています。 また、より多くのオプションを検討することに興味があれば、別のもの、2017 年の最高の Python Web フレームワーク 17 を用意しています。

      私たちの会社の GitHub ページを訪問していただけるとうれしいです。 私たちSteelKiwiの開発者は、技術の世界に革新をもたらそうと懸命に努力しており、より多くの人が関われば、より良いものになります

    コメントを残す

    メールアドレスが公開されることはありません。