Python学習チャンネル by PyQ

Pythonのオンライン学習プラットフォームPyQのオフィシャルブログです

DjangoとFlaskの違いは?PythonのWebフレームワーク2種を比較します

f:id:kenken0326:20210609151045p:plain

こんにちは。PyQサポートのfuriです。

今回は、「Python製のWebフレームワークのDjangoFlaskの違い」を解説します。

質問:WebフレームワークDjango,Flaskは、どちらが開発現場で使われていますか?

DjangoとFlaskは、どちらもWebアプリケーションを作成するときに使用しますが、どちらが実際の開発現場でよく使われているのでしょうか。

回答:Django,Flaskにはそれぞれ特徴があり、どちらもよく使われています

どちらもよく使われています。

それぞれにメリット・デメリットがあります。それらをよく理解して、開発したいシステムに適しているフレームワークを選択するのが良いでしょう。

DjangoとFlaskの違いは?

DjangoはWebアプリケーションに必要な機能が一通り揃っており、フルスタックと呼ばれるフレームワークです。

それに対してFlaskは最小限の機能を備えており、使い方を理解しやすいフレームワークです。

大まかな機能の比較は以下の通りです。

機能

Django

Flask

開発用Webサーバー
リクエスト処理
テンプレートエンジン
データベース管理 x
管理画面 x
認証機構 x
フォーム x

Djangoのメリット、デメリット

Djangoのメリット

Djangoのメリットを一言でいうなら、フルスタックであることです。

一般的にある程度の規模のアプリケーションを開発する場合、必要な機能に応じて複数のライブラリを利用します。

Djangoには、データベース管理や認証機構などWebアプリケーションに必要な多くの機能が最初から備わっているため、こういったライブラリの検討に悩まされずに開発を始められます

もし足りない機能があっても、Djangoを拡張するライブラリが豊富に提供されており、それらを利用することで開発コストを押さえられます。

また、アプリケーションの構成もある程度ルールが決まっていて一度覚えれば知識の使い回しが効くため、チームでの開発にも向いています。

さらに、後方互換性も配慮されており、サポート期間の長いLTSバージョンも提供されているので、中長期的に運用するシステムに使う場合も安心です。

ちなみに、PyQの運営会社のビープラウドは受託でのシステム開発も行っていますが、ほとんどのWebアプリケーション開発をDjangoで行っています。

Djangoのデメリット

フルスタックで機能が豊富な分、開発するWebアプリケーションによっては、Djangoの機能は多すぎることがあります。

たとえばデータベースが不要なWebアプリケーションの場合、Djangoのデータベース機能は不要でしょう。

また、Djangoプロジェクトはルール上、設定ファイルなど複数のファイルやフォルダで構成します。

そのため、1画面だけのシンプルなWebアプリケーションの場合などは、ファイル数の多さが煩雑に感じるかもしれません。

Flaskのメリット

Flaskのメリットは、シンプルで、使い始めるときのハードルが低いことです。

最低でも複数のファイルが必要なDjangoと異なり、Flaskは1ファイルだけでもWebアプリケーションを実装できます。

そのため、ちょっとしたWebアプリケーションを作りたい場合などに便利です

たとえばデータ分析を行うとき、分析の実行や分析結果の共有をブラウザで行いたい場合があります。

このケースではデータベースや認証は不要なため、シンプルな構成で実装できるFlaskが使われたりします。

また、Flaskにも機能拡張の仕組みがあり、より多くの機能が必要になる場合は追加でライブラリをインストールできます。

このように自分好みにライブラリを組み合わせて開発できることもFlaskの特徴と言えるでしょう。

Flaskのデメリット

最小限の機能しかないため、本格的なWebアプリケーションを作るにはライブラリを追加する必要があります。

その際、どのライブラリを使うかを自分で検討しなければなりません。また、ライブラリのメンテナンス状況やアプリとの統合は自分で確認する必要があります。

必要なライブラリを追加した結果、結局Djangoと同じようなものができ上がってしまい、「これなら最初からDjangoを選択しておけばよかった…」というのは避けたいところです。

また1ファイルからでもWebアプリケーションを実装できる反面、規模が大きくなってファイル数が多くなる場合、ファイル構成のルールを考える必要があります。

チーム開発の場合は、そのルールもチームで共有しなければならないでしょう。

まとめ

Djangoは、フルスタックで最初からWebアプリケーションに必要な多くの機能が揃っています。

また、ルールが決まっているのでチーム開発もしやすいです。

複数人で本格的なWebアプリケーションを開発する場合は、Djangoが有力候補となるでしょう。

一方、Flaskは1ファイルからでもWebアプリケーションを実装できるシンプルさに加え、自分で好きな機能を追加できる自由さがあります。

機能が少ない小さなWebアプリケーションが欲しいときは、Flaskを使うと素早く開発できるでしょう。

また、利用するライブラリやアプリケーションの構成などを自分好みにしたい人には、Flaskが向いているかも知れません。

この記事を書いた人

f:id:kenken0326:20210201191750p:plain
furi PyQ運営会社のビープラウドのメンバーであり、「いちばんやさしいPython機械学習の教本 人気講師が教える業務で役立つ実践ノウハウ(インプレス)」の著者。

Copyright ©2017- BeProud Inc. All rights reserved.