Pythonは、そのシンプルさ、汎用性、学習を後押しするリソースの豊富さにより、最も人気のあるプログラミング言語の1つとなっています。初心者のプログラマーが「最初に学ぶ言語」であることも多く、ウェブ開発からデータ分析まで幅広い用途と業界で活用されています。

Pythonコミュニティは巨大で、GitHubによると、その成長はとどまることを知らず、2022年時点で22.5%増加しているとのこと。また、2023年には3番目に使用されているプログラミング言語にもなっています。多種多様なフレームワークがあり、そのほとんどがオープンソースです。

この記事では、Pythonのフレームワークの中でも人気があり、知っておくと便利なものをまとめて一挙ご紹介します。

Pythonフレームワークとは

Pythonフレームワークとは、言うなればPythonモジュールのコレクションで、あらゆるタイプのアプリケーションを構築するための構造として使用することができます。

フレームワークは、ソフトウェアをどのように構築すべきかについての一般的なガイドラインとして機能し、複雑なタスクや反復的なタスクの一部を抽象化することで、開発プロセスを効率化してくれます。これにより、すべてを自ら記述する必要がなくなり、アプリケーション固有のロジックなどに専念できるようになります。

反復的なタスクの例としては、HTTPリクエストの処理が挙げられます。ほとんどのウェブアプリケーションでこのタイプのリクエストを処理する必要があるため、多くの開発者が、ゼロからすべてを書いたり、複数のプロジェクト間で同じコードを再利用したりする代わりに、この機能の実装を容易にする既存のフレームワークを使用しています。

フレームワークの概念を理解したところで、Pythonフレームワークの種類を整理しておきましょう。

Pythonフレームワークの種類

Pythonには、さまざまな種類のフレームワークがあります。その違いを見てみましょう。

フルスタックフレームワーク

フルスタックのPythonフレームワークは、開発者が完全なウェブアプリケーションを最初から最後まで構築するために必要なものを包括的に備えています。

これには、フロントエンド(たとえば、テンプレートシステムやユーザーへの情報の表示)とバックエンド(データベースレコードの作成、HTTPリクエストの処理、アプリケーションセキュリティの制御など)の両方が含まれます。

マイクロフレームワーク

マイクロフレームワークは、特定のアプリケーションを構築するのに必要になるコンポーネントに特化した最小限のフレームワークです。

軽量で拡張しやすい設計で、小規模なプロジェクトやコードを細かにコントロールしたい状況で有用です。

非同期フレームワーク

非同期フレームワークは並行処理と並列処理を扱うように設計されており、複数のタスクを同時に扱うアプリケーションを構築することができます。

Pythonパッケージマネージャ(pip)

pipはPythonの各種パッケージを管理するパッケージマネージャです。Pythonをインストールするだけで、pipのコマンドラインインターフェースを使って、Pythonパッケージをインストールすることができます。

パッケージとは、共通のタスク(ウェブ開発、認証、GUI)の実行を助ける、分離された(つまり再利用可能な)コードのかたまりです。以下でご紹介するフレームワークはすべてPython標準ライブラリの一部であり、pipパッケージとして提供されています。

Python Package Index(PyPI)で利用可能なパッケージは、以下のコマンドでインストールできます。

pip install package-name

また、例えばプロジェクトの要件ファイルなど、テキストファイルから以下のコマンドでパッケージをインストールすることも可能です。

pip install -r requirements.txt

PythonフレームワークとPythonライブラリ

Pythonライブラリは、データの解析や乱数の生成など、特定のタスクを実行するのに使用できる関数やメソッドをまとめたものです。ライブラリは一般的に範囲が限定されており、アプリケーションの中の一種のツールとして使用されます。

一方、Pythonフレームワークは、アプリケーション全体を構築するのに活用できます。通常これが、ソフトウェア開発者がプロジェクトで従うワークフローを定義することになります。

とはいえ(しばしばプラグインと呼ばれる)他のパッケージでフレームワークの機能を拡張することも可能です。

Pythonフレームワークの存在意義

アプリケーション開発時にPythonフレームワークを使うことにはいくつものメリットがあります。おさらいしておきましょう。

  • フレームワークを使うことでソフトウェア開発者の仕事が楽になる: コードの構造設計や開発プロセスを合理化するツールや機能を使うことで、アプリケーションの構築が簡単かつ効率的になります。
  • フレームワークによりコードの整理が捗る:フレームワークによって、コードを整理することができます。そして、保守や質の確保がしやすくなり、後からソースコードを見たときの理解と修正も簡単になります。
  • フレームワークにより生産性が向上する:コンポーネントやツールがすぐに利用できる状態で用意されているので、業界標準に準拠しながら、すぐにそれを組み込むことができます。また、基本的な部分で時間を削減することで、アプリケーションに固有の機能や仕様により多くの時間を投入することが可能になります。

背景を十分に理解したところで、今度はPythonフレームワークのおすすめ25選をご紹介します。

Pythonのおすすめフレームワーク25選

数ある中でも人気の高い25のPythonフレームワークを機能別に整理しながらご紹介します。

Pythonマイクロフレームワーク

最初にご紹介するのが軽量なマイクロフレームワークです。シンプルなアプリを素早く作成したい場合や、サーバーのメモリ消費量が少ないような状況で特に強さを発揮します。

1. Flask

Flaskにより生成されたページ
Flaskにより生成されたページ

Flaskは軽量なマイクロフレームワークで、シンプルなウェブアプリケーションを素早く構築するのに便利です。Jinjaテンプレート(HTMLコードを再利用する手法)、リクエスト処理、 アプリケーションシグナリングがサポートされています。

Flaskアプリは、ものの数行のコードで素早く起動することができます。

from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello_world():
return "Hello Kinsta"

特徴

  • 軽量で使いやすい
  • 高い柔軟性
  • Python標準ライブラリ上に構築されている
  • ルーティングとビュー(コントローラ)のサポート
  • Jinjaによるテンプレート化のサポート
  • 優れたドキュメントとコミュニティ
  • クッキーとユーザー認証のサポート

強力なREST APIを構築するためのサポートを追加するFlask-RESTfulや、SQLAlchemyをflaskアプリで使うための便利な方法であるFlask-SQLAlchemyのような拡張パッケージも利用できます。

2. Bottle

Bottleのロゴ
Bottleのロゴ

他に依存関係を必要としない、驚くほど軽いウェブアプリケーションを作りたいのであればBottleは見逃せません。軽量なPythonマイクロフレームワークで、中小規模のウェブアプリケーションを簡単に構築できるように設計されています。Python標準ライブラリ以外の外部依存は一切ありません。

BottleはWSGI(Web Server Gateway Interface)標準に基づき構築されており、ほとんどのウェブサーバーとPythonのバージョンと互換性があります。

特徴

  • 学びやすく使いやすい
  • 組み込みのテンプレートシステム
  • 小規模なウェブアプリケーションやAPIの構築に有用
  • メモリ使用量が非常に少ない
  • HTTP、フォーム、ルーティングのサポート

3. CherryPy

CherryPyウェブフレームワーク
CherryPyウェブフレームワーク

CherryPyはPythonでの開発を支える、最小限にこだわったウェブアプリケーション開発フレームワークです。オブジェクト指向フレームワーク(OOP)であり、Pythonで他のOOPと同じようにウェブアプリケーションを構築できます。

2002年から存在し、シンプルな機能を持つものから複雑な仕組みが要求されるものまで、多様なウェブサイトの本番環境で広く採用されています。例えば、巨大なソフトウェアサービスであるNetflixとHuluは、インフラの一部としてCherryPyを使用しています。

CherryPyは主に、HTTPリクエストを処理し、開発者が書いたロジックとそれをマッチさせる役割を担います。つまり、デフォルトでは、CherryPyはデータベースアクセスやHTMLテンプレート化を提供せず、アプリケーションのすべてのロジックを開発者に委ねることになります。

特徴

  • 成熟したフレームワーク
  • HTTPリクエストを処理
  • 柔軟で拡張可能なプラグインシステム
  • バックエンドオンリーのフレームワーク
  • オブジェクト指向の開発
  • 安定したAPI

Pythonウェブフレームワーク

以下は、データベースアクセス、フォーム処理、セキュリティなどの一般的なウェブ開発タスクコンポーネントを含む、より包括的なウェブフレームワークです。マイクロフレームワークとは異なり、Pythonウェブフレームワークでは、それ単体で開発を進めることができます。

これはどのプロジェクトでも言えることですが、ウェブアプリを作り始める前に、目的や要件をよく検討することをお忘れなく。その結果、WordPressを使うだけで十分だと判断される可能性もあり得ます。

4. Django

Djangoのスタートページ
Djangoのスタートページ

DjangoはPythonのエコシステムの中でも高い人気を誇り、広く使われているウェブフレームワークの一つです。本格的なウェブアプリケーションを構築するのに必要なあらゆる要素を内包した、揺るぎないフルスタックフレームワークです。

Djangoは、2005年にニュースレターサイトを構築するのに便利な選択肢として開発されました。現在では、ウェブ開発全体で広く採用され、最も使用されているPythonライブラリの1つとなっています。 毎月800万近くのダンロード数は伊達ではありません。Instagram、Discus、Pinterest、Bitbucket、Chess.comなど、数々の有名サイトが、もともとDjangoで開発されています。

Djangoは、Model-view-template(MVT)アーキテクチャに従い、テンプレート化、データベース管理、管理パネル、シグナル、ビュー (バックエンドのロジックを管理)などの機能が組み込まれています。Djangoを使いこなすには、Python のオブジェクト指向プログラミングと関数型プログラミングの基礎がしっかり身についていることが望ましいです。

ウェブプロジェクトにDjangoを選んで損はしないはずです。Djangoは堅牢なウェブフレームワークであり、素早く信頼性の高いウェブサイトを構築することができます。さらに追加の機能が必要であれば(例えばReactAngularのようなフロントエンドフレームワークで使うREST APIを作成する場合など)、Django REST frameworkといった拡張機能を使うこともできます。

さらに、DjangoはKinstaを通してセットアップとデプロイを行うのが最も簡単なフレームワークの1つです。

特徴

  • 非常に安全性の高いフレームワーク
  • ビルトイン管理パネル
  • HTMLを動的に表示する独自のテンプレート言語
  • オブジェクトリレーショナルマッパー(ORM)、Pythonクラスによるデータベースのレイアウト
  • Python APIによるデータベースクエリ
  • 優れたCLIツール
  • 豊富な拡張機能

5. FastAPI

FastAPIの自動ドキュメント(localhostに位置)
FastAPIの自動ドキュメント(localhostに位置)

FastAPIは、APIの構築に特化したモダンウェブフレームワークです。

2018年にリリースされて以来、その優れたパフォーマンスとシンプルさで急速に人気を博しています。実際、PyPi Statsによると、FastAPIの月間ダウンロード数は900万を超え、Djangoのようなフルスタックフレームワークをも上回っています。

FastAPIは月間ダウンロード数でDjangoを上回る
FastAPIは月間ダウンロード数でDjangoを上回る

FastAPIの唯一の目的はバックエンドAPIを構築すること。つまり、ユーザーにサイトを表示するには、(Vue.jsのような)フロントエンドフレームワークが必要になるので、その点では注意が必要です。

とはいえ、このフレームワークは驚くほど簡単に使えるので、FastAPIを使ったアプリをKinstaとGitHubのリポジトリを通してほんの数分でデプロイすることができます。

特徴

  • OpenAPIやJSONスキーマのようなAPIのオープンスタンダードに準拠
  • データ検証とシリアライズ
  • APIの自動文書化
  • 最新のウェブフレームワーク
  • 型宣言のようなPython 3.6+の機能に基づく
  • Pydanticによる型検証
  • 非同期プログラミングのサポート

6. Pyramid

Pyramidのドキュメントページ
Pyramidのドキュメントページ

Pyramidは柔軟で拡張性の高いウェブフレームワークで、小規模なアプリケーションにも大規模なアプリケーションにも利用することができます。FlaskのようなマイクロフレームワークとDjangoのようなフルスタックフレームワークの中間的な存在だと言えるでしょう。

PyramidにはPythonウェブアプリケーションを開発する際に必要な一般的な機能が十分に盛り込まれていますが、プロジェクトに必要なコンポーネントだけに絞り込むこともできます。

特徴

  • 軽量で柔軟
  • Makoテンプレート言語のサポート
  • 簡単な認証と承認の実装
  • WSGI準拠のリクエストオブジェクトとレスポンスオブジェクト
  • 組み込みのテストヘルパーと対話型デバッガによる簡単なテストとデバッグ
  • 簡単に統合できるサードパーティライブラリとプラグイン

7. Tornado

Tornadoウェブフレームワーク
Tornadoウェブフレームワーク

Tornadoはオープンソースの非同期ウェブフレームワークであり、Pythonを使ってウェブアプリケーションを構築するためのネットワーキングライブラリでもあります。SNSアグリゲーターのFriendFeed(後にFacebookが買収)により開発されました。現在では、ウェブサービス、リアルタイム分析、その他の高同期アプリケーションなど、さまざまな用途で広く使用されています。

Tornadoは、多数の同時接続を処理するために最適化されており、各ユーザーとの長時間の接続を必要とするアプリケーション(チャットアプリ、ボット、ウェブスクレイパーなど)に向いています。

特徴

  • スケーラブル(数千の接続を処理可能)
  • カスタムTornadoテンプレート
  • 組み込みのユーザー認証
  • ウェブソケットとロングポーリング機能
  • サードパーティ認証オプション
  • 国際化サポート

GUIフレームワーク

以下のPythonグラフィカルユーザーインターフェース(GUI)フレームワークは、イベントドリブンプログラミング、ウィジェット、グラフィックスのサポートなど、PCアプリケーション構築を後押しする幅広い機能を搭載しています。

8. PyQt

PyQtフレームワーク
PyQtフレームワーク

PyQtは、Qtクロスプラットフォームアプリケーションフレームワークとのバインディングに便利な選択肢です。汎用言語としてのPythonのシンプルさと、C++で構築された強力なQtアプリケーションフレームワークを組み合わせることができます。

PyQtには2つのライセンスオプションがあります。

  • GPLv3:自由に使用できるものの、配布された人は誰でも(ともすると無料で)再配布することができる
  • 商用:コードを非公開にできるため、収益化できるが、使用する開発者ごとにライセンスを支払う必要がある(現在、開発者1人あたり550ドル)

特徴

  • Riverbankによるバックアップ
  • ユーザーインタラクションを処理するためのイベント駆動型プログラミング
  • 他のライブラリやフレームワークとの統合
  • 国際化とローカリゼーションのサポート
  • Qtライブラリの多数の機能をサポート
  • マルチメディア、WebKitとWebEngine、データベース統合のサポート
  • Windows、Linux、macOSとのクロスプラットフォーム互換性

9. Tkinter

Tkinterで構築した電卓
Tkinterで構築した電卓

Tkinterは組み込みのPython GUIフレームワークです。標準ライブラリの一部なので、追加で依存関係をインストールする必要はありません。

PyQt(Qtを使用)と同様に、TkinterはTkと呼ばれるグラフィカルユーザーインターフェースツールキットを使用しています。また、ボタン、ラベル、テキストボックス、メニューなどの様々なウィジェットを作成するのに便利な機能も組み込まれています。

一般的に、Tkinterは小さなGUIプログラムを素早く作成するのに有用です。見た目や風合いは少し時代遅れであるため、大きなプロジェクトであればより堅牢なフレームワークを選択した方が良いかもしれません。

特徴

  • GUIアプリで使われる一般的なウィジェットのサポート
  • ユーザーとのインタラクションを処理するイベント駆動プログラミング
  • 画像と色の組み込みサポート
  • Windows、Linux、macOSとのクロスプラットフォーム互換性
  • 標準ライブラリの一部
  • 軽量

10. Kivy

Kivyのウェブサイト
Kivyのウェブサイト

Kivyは、Pythonでクロスプラットフォームのモバイルおよびデスクトップアプリケーションを作成するのに便利なオープンソースのフレームワークです。ゲームやマルチタッチアプリケーションなど、インタラクティブで視覚的に魅力的なアプリケーションの作成に適しており、主要なプラットフォーム(Windows、Linux、macOS、iOS、Android)に対応する単一のコードベースが最大の売りとなっています。

PyQtとは異なり、Kivyはフリーかつオープンソースであり、外部UIライブラリのラッパーではなく、MITライセンスの下で公開されています。

特徴

  • マルチタッチアプリ作成を後押しするオープンソースのツールキット
  • モバイルやデスクトップを含む様々なプラットフォームをサポート
  • グラフィック、アニメーション、UI要素のビルトインサポート
  • 他のライブラリやフレームワークと統合可能

11. PySide

PySide GUIフレームワーク
PySide GUIフレームワーク

Pysideは、マルチプラットフォームのアプリケーションを作成するのに活用できるオープンソースのツールキットです。Qtライブラリ(PyQtに似ている)をベースにしており、幅広い機能を誇ります。

Pysideはまた、複数の入力メソッドとイベント駆動型プログラミングをサポートしており、グラフィックスとマルチメディアのビルトインサポートも含まれています。

LGPLでライセンスされているため、プロプライエタリ型のソフトウェアを簡単に作成することができます。Qt社の支援を受け、Linux、macOS、Windowsをサポートしています。

特徴

  • LGPLライセンス
  • Qt社によるサポート
  • 画像、ビデオ、その他のメディアをアプリケーションに表示可能
  • Qt4、Qt5、Qt6でそれぞれ使用できる3つのバージョン

12. PySimpleGUI

PySimpleGUI
PySimpleGUI

PySimpleGUIはそのシンプルで使いやすいAPIでPythonコミュニティ内で人気を集めています。

PySimpleGUIはPythonを使ってシンプルかつ使いやすいグラフィカルユーザーインターフェースを構築するための素晴らしい選択肢であり、既存のスクリプトにGUIを手間無く追加することができます。PySimpleGUIは4つのGUIライブラリ─PySide、Tkinter、wxPython、Remi─の可能性を一つにしたものです。

特徴

  • 優れたドキュメント
  • 学びやすく使いやすい
  • すぐに使える複数ウィジェット
  • Python 3.4+をサポート

Python機械学習フレームワーク

続いてご紹介するPythonソフトウェアライブラリには、機械学習モデルを構築しデプロイするのに便利な、すぐに使える機能とツールが組み込まれています。データの前処理、モデルのトレーニング、評価などの一般的なタスクや、モデルを本番環境にデプロイするための機能もサポートしています。

13. scikit-learn

scikit-learnフレームワーク
scikit-learnフレームワーク

scikit-learnは人気の高い機械学習ライブラリで、ハイテク業界や教育分野の両方で使用されています。

NumpyやSciPyのような他のライブラリ上に構築されており、一般的な機械学習タスクの効率化を後押しします。

特徴

  • フリーかつオープンソース
  • データマイニングとデータ分析を効率化するツール
  • 分類、回帰、クラスタリング、次元削減を支える幅広いアルゴリズムを網羅
  • コミュニティと開発が活発で、文書化とAPIも豊富

14. TensorFlow

TensorFlow
TensorFlow

TensorFlowは、機械学習モデルの構築とデプロイのためのオープンソースプラットフォームです。2015年にGoogleによって開発されました。ディープラーニングを支える強力なライブラリであり、ニューラルネットワークの構築とトレーニングに活用できる幅広い機能が搭載されています。

TensorFlowは、画像処理や言語処理、音声認識、予測分析など、さまざまなタスクに使用できます。

特徴

  • ニューラルネットワークを構築するツール
  • TensorFlow.jsおよびTensorFlow Liteを使用したモバイルおよびウェブデプロイのサポート
  • TensorBoardなどの可視化とデバッグのためのツール
  • CPU、GPU、TPUを含む複数のプラットフォームで実行できる柔軟性
  • Python、C、C++で利用可能

15. PyTorch

PyTorchのロゴ
PyTorchのロゴ

TensorFlowと並んで、PyTorch(FacebookのAI研究グループが開発)はディープラーニングモデル構築に広く使用されているツールの1つです。コンピュータビジョン、自然言語処理、生成モデルなど、さまざまなタスクに使用できます。

特徴

  • 豊富なドキュメントと大規模な開発者コミュニティ
  • クラウドサポートによる容易な統合
  • ユーザーフレンドリーなツールで学びやすい
  • 他のフレームワークよりもPythonicな雰囲気
  • フリーかつオープンソース

16. Keras

Kerasディープラーニングフレームワーク
Kerasディープラーニングフレームワーク

Kerasは、TensorFlow、Theano、CNTK上で実行可能な高レベルのディープラーニングフレームワークです。2015年にFrançois Chollet氏によって開発されました。ディープラーニングモデルの構築とトレーニングのためのシンプルかつユーザーフレンドリーなインターフェースを提供するように設計されています。

Kerasは、機械学習モデルを素早く構築するための足がかりとなります。実際に、Kaggleのようなデータサイエンス系の競技会で広く使用されています。

特徴

  • ディープラーニングモデルの構築とトレーニングのためのシンプルでユーザーフレンドリーなインターフェース
  • 幅広いアーキテクチャとオプティマイザを使用したニューラルネットワークの構築とトレーニングをサポート
  • Keras TunerやKerasRLなど、ディープラーニングのためのライブラリやツールが豊富
  • TensorFlow、CNTK、Theanoなどの複数のバックエンドで実行できる柔軟性
  • 分散コンピューティングのサポート
  • モデルの可視化とデバッグのビルトインサポート

Python科学計算フレームワーク

続いてご紹介するフレームワークは、学生、科学者、研究者による計算を支えるものです。これにより、根幹にある細かな点を気にすることなく、タスクの実行に専念することができます。

科学計算フレームワークには、線形代数、最適化、補間、積分など、科学系の計算におけるあらゆる処理を助ける機能が搭載されています。

17. NumPy

Numpyのロゴ
Numpyのロゴ

NumPyは科学計算ライブラリで、数値データの多次元配列や行列を効率的に扱う設計になっています。また、配列を操作するための幅広い数学的関数も用意されています。

NumPyは、SciPy、Pandas、scikit-learn、Tensorflowなど、データサイエンスで使用される他の多くのPythonライブラリやフレームワークの基盤となっています。

特徴

  • 多次元配列を簡単に扱える
  • 線形代数ルーチン、フーリエ変換、乱数生成などの数学ツールのサポート
  • 豊富な数学関数
  • Pythonの演算に比べて高速(一部の実装はCで作られている)
  • 多種多様なハードウェアをサポート

18. SciPy

Scipyのロゴ
Scipyのロゴ

SciPyはNumPy上に構築されており、数多くのアルゴリズムと関数が利用できます。最適化、信号処理、積分、線形代数など、一般的な科学的・工学的タスクの実行を支援します。

特徴

  • フリーかつオープンソース
  • 科学的・工学的タスクに便利なアルゴリズムと関数
  • 活発なコミュニティと優れたドキュメント
  • 経験レベルに関係なく利用できる

19. Pandas

Pandasのロゴ
Pandasのロゴ

Pandasは、Pythonでデータ解析を行うための強力で柔軟なオープンソースライブラリです。高性能なデータ構造(有名なDataFrameなど)とデータ分析ツールを誇り、構造化データを簡単に扱うことができます。

特徴

  • DataFrameやSeriesなどの高性能データ構造
  • CSV、Excel、SQLを含む複数のフォーマットとのデータの読み書きをサポート
  • 実世界データの分析が容易に
  • scikit-learnのような他のデータサイエンスパッケージを土台とする

20. Matplotlib

Matplotlibのロゴ
Matplotlibのロゴ

Matplotlibは、Pythonでデータ可視化のために広く使われているツールです。アプリケーションにプロットを埋め込むオブジェクト指向APIを提供します。

Matplotlibは高度にカスタマイズできるよう設計されており、プロット、チャート、ビジュアライゼーションを支える選択肢です。このような理由から、Matplotibはデータサイエンス、機械学習、科学計算に関連するプロジェクトでよく使われています。

特徴

  • 2Dおよび3Dプロットのサポート
  • インタラクティブな図を表示可能
  • 通常、JupyterノートブックやGUIアプリケーションに組み込まれている
  • 豊富なドキュメントと活発なコミュニティ

Pythonテストフレームワーク

続いてのフレームワークは、コードのテストという面倒なプロセスを簡素化してくれる救世主です。

テスト駆動開発(TDD)を採用しているなら、以下のフレームワークは是非ともチェックしておきたいところです。

21. Pytest

Pytestのロゴ
Pytestのロゴ

Pytestは広く採用されているテストフレームワークで、使いやすく拡張しやすい設計です。小規模なPythonコードベースから複雑なPythonコードベースまで、きれいなテストを書くのに有用です。

特徴

  • 学びやすく使いやすい
  • 800以上のプラグインが利用可能
  • 単体テスト作成のワークフローを設定可能
  • 詳細なエラー情報

22. Unittest

Unittestテストフレームワーク
Unittestテストフレームワーク

UnittestはPython組み込みのテストフレームワークで、xUnitテスト規約に基づいています。自動テストケースとテストスイートなど、Pythonicかつオブジェクト指向のアプローチを採用しています。

特徴

  • テストの記述と実行が捗るシンプルで使いやすいインターフェース
  • パラメータ化、フィクスチャ、マーカーのテスト
  • pytestやnoseと組み合わせて使える
  • Python標準ライブラリの一部

23. nose2

noseテストフレームワーク
noseテストフレームワーク

nose2noseテストフレームワークの後継で、主な違いは nose2が最新のPythonバージョンに対応していることです。

nose2は組み込みのunittestライブラリを拡張するもので、より強力で柔軟なテストの書き方と実行方法を可能にします。拡張に対応したツールなので、複数の組み込みプラグインやサードパーティ製プラグインと組み合わせて使うことができます。

特徴

  • プラグインで拡張可能
  • 組み込みのunittestがベース
  • Python 3をサポート

非同期フレームワーク

続いてのタイプのPythonフレームワークは、開発者による管理しやすく効率的な非同期コードの記述を助けるものです。

24. asyncio

asyncio
asyncio

asyncioは他の多くの非同期フレームワークの中心に位置する存在です。async/await構文を使って並行コードを書くことで、何千もの同時接続を扱えるように設計されています。

asyncioは、TCP、UDP、SSL/TLS、サブプロセス通信などの複数のトランスポートプロトコル向けに単一のAPIを用意しています。

特徴

  • Pythonへの組み込み
  • 他のいくつかのPythonフレームワークの土台
  • サブプロセスを制御し、ネットワークIOを実行するAPIを含む
  • 充実したドキュメント
  • Python標準ライブラリの一部

25. Aiohttp

Aiohttp.
Aiohttp.

Aiohttpは、asyncioパッケージ上に構築された非同期HTTPクライアント/サーバーフレームワークです。HTTPリクエストとレスポンスを処理するシンプルで直感的なインターフェースを誇り、ミドルウェア、セッション、その他ウェブ開発ツールをサポートします。

特徴

  • クライアントサイドとサーバーサイドのHTTPプロトコル
  • 多数の同時接続を処理
  • 非同期ウェブアプリケーションの構築が可能

まとめ

Pythonフレームワークは、コードの整理を促進し、生産性を高め、ソフトウェア開発プロセスを簡単なものにしてくれます。

Python開発者であれば、上記でご紹介した25のPythonフレームワーク全てに精通する必要はなく、プロジェクトに合致する1つまたは2つ程度のフレームワークを使いこなせるようになるのが理想です。

すでに開発プロジェクトをお持ちであれば、高性能アプリケーションホスティングの利用をおすすめします。Kinstaのアプリケーションホスティングソリューションは、あらゆる規模のプロジェクトに対応できる設計です。GitHubを介して簡単にデプロイすることができます。

さらに、KinstaのCloudflare統合によって提供される安定性とセキュリティはもちろんのこと、GoogleのC2マシンとプレミアムティアネットワークによって即座に高速化を図ることができます。

あなたはどのPythonフレームワークを使ったことがありますか?以下のコメント欄でご意見をお聞かせください。

Daniel Diaz

Daniel is a self-taught Python Developer, Technical Writer, and long-life learner. He enjoys creating software from scratch and explaining this process through stunning articles. Follow him on Twitter: @DaniDiazTech