• Skip to main content
  • Skip to primary sidebar
  • ホーム
  • お問い合わせ

ハイパー仕事し隊

思い立った吉日!イロイロ試してオンリーワンの起業家を目指してます!

現在の場所:ホーム / ウェブアプリ関連 / Python ウェブフレームワークで Django か Flask かで迷ってるあなたへ

Python ウェブフレームワークで Django か Flask かで迷ってるあなたへ

2018年8月12日

Django vs Flask

何かを始める際に必ずできてくる「どっちが良いのさ?」問題。

例外なく、Python でウェブアプリを作るときにもでてきます。

Python アプリつくりたいけど、ウェブフレームワークは「Django か Flask どっちが良いのさ?」問題。

結局どっちも同じことができます。

開発者の向き・不向きや、好き・嫌いの問題など色々な要素があると思います。

ひとまず調べてみましたので、参考にしてください。

結論

一言で「海賊は Flask を使い、海軍は Django を使う」です!
(このタイトルを参考にしました: Pirates use Flask, the Navy uses Django)

  • Django 向きな人
    • しっかりとルールに沿った開発がしたい
    • がっつりフル装備のアプリを作る予定の場合 (例: 認証や DB を使う)
    • ウェブフレームワーク、MVC、正規表現の知識がすでにある
  • Flask 向きな人
    • シンプルなウェブアプリをちゃちゃっと作りたい
    • CRUD 少なめ、シンプルな API サーバー作りたい
    • ウェブフレームワークの勉強を始めた初心者

Django をざっくり知る

基本的に、デフォルトで必要な機能を全て持ち合わせたのが Django です。

「どんなアプリでも、作りたいときに作れるようにする」ために、フル装備となっています。

特に、認証や ORM (object-relational mapper)は、デフォルトで付いています。

管理者用のページもあり、各種操作が GUI からできる ようにもなっているます。

DB は、メジャーなものは全て対応しています。

  • PostgreSQL
  • MariaDB
  • MySQL
  • Oracle
  • SQLite

Django 利用者の中では、DB を PostgreSQL なのか MySQL なのか対決があるようですが、PostgreSQL の方が人気のようです。

また、フルフル装備であるため、セキュリティ対策も万全にとられています。
例:

  • クリックジャッキング
  • クロスサイトスクリプティング
  • SQL インジェクション

とはいっても、良いことばかりではありません。

フル装備なため、初心者にはとっつきにくければ、シンプルなアプリを作るには複雑すぎたりしています。

フォルダ構成

プロジェクトの作成は、django-admin startproject で簡単に作成できます。

実行後は、下記のような構成でファイルが生成されます。

[Project Top]
│-- db.sqlite3 # デフォルトの DB
│-- manage.py
│
└───
    │-- asgi.py
    │-- settings.py
    │-- urls.py
    │-- wsgi.py
    └-- __init__.py

そして、機能単位 (ブログ機能、支払い機能、予約機能など) でアプリというものを作るため、python manage.py startapp でアプリ作成に必要なファイルも作成します。

[App_Top]
│-- admin.py
│-- apps.py
│-- models.py
│-- tests.py
│-- views.py
│-- __init__.py
│
└───migrations
        __init__.py

これをベースに、コードを書いていくことになります。

慣れれば使いやすいですが、慣れまでの道のりは Flask に比べると簡単ではないです。。
(初心者は、これらのファイルの内容を理解する必要があるので、まずそこで一気にハードルがあがりますよね。)

Django を利用している企業

そんな Django を使っている企業がこちら。

Stackshare.io からその他の企業が確認できます。

  • Instagram
  • Pinterest
  • The Washington Times
  • Disqus
  • Bitbucket
  • Mozilla

Django が得意なこと、苦手なこと

これまでの内容を簡単にまとめると、下記のようになります。

  • 得意なこと: 中規模なセキュアなアプリ製作
  • 苦手なこと: DB が必要のない小規模なウェブアプリ製作

Udemy で Django 学ぶ

ここまでで、Django についてはなんとなくわかったと思います。

もう少し具体的に知りたい場合は、実際にアプリを作ることをお勧めします。
下記の Udemy コースではアプリを 3 つ作成し、外部サーバーで公開するところまで網羅しています。

【徹底的に解説!】Djangoの基礎をマスターして、3つのアプリを作ろう!

Flask をざっくり知る

Flask は、マイクロフレームワークと呼ばれており、必要最低限の機能しかありません。

コンセプトとしては「必要最低限のコア機能 + 拡張機能でアプリを作成できる」になります。

コア機能は、ルーティング、リクエスト処理程度です。

Django と違い、ORM (Object Relational Mapping)、キャッシュ、認証などは、必要に応じて機能を「追加」する必要があります。

なので「できない」わけではないです。

ありがたいことに、既に先人が必要な機能をライブラリとして提供していますので、「車輪の再発明 (re-invent the wheel)」をしなくて良いのです。

拡張機能は こちらから 確認ができます。(もちろん pip install でインストールできます。)

Flask で最低限必要なこと

下記のファイルを作成して、flask run とするだけです。

# app.py
from flask import Flask

app = Flask(__name__)

@app.route('/')
def index():
    return 'Hello World.'

Django と違って、フォルダ構成もなく、ものの数行で始められます。

詳しくは下に書いているので、興味があるかたは見てください。

メッチャ手軽にウェブアプリ構築!Flask (Python ウェブフレームワーク) を初めて触る!

シンプルな分、MVC などわかっている人からすると、フォルダ構成はどうすれば良いの?と疑問になると思いますが、こちらに関しては特に決まりはありません。。

その自由さが好きか嫌いかで Flask なのか Django なのかで分かれそうですね。。

Flask を利用している企業

そんな Flask を使っている企業がこちら

Stackshare.io からその他の企業が確認できます。

  • Reddit
  • Netflix
  • Lyft
  • Zillow
  • Pinterest
  • Twillio

Flask が得意なこと、苦手なこと

Flask 開発者の、アーミン・ロンチャー (Armin Ronacher) さんが YouTube (https://youtu.be/1ByQhAM5c1I) で話をしていますが、

  • 得意なこと: 静的なコンテンツが主なサイト: wiki やフォーラム
  • 苦手なこと: ハイパフォーマンスな非同期 IO が必要なウェブアプリ

になります。

Netflix って動画ストリーミングしてハイパフォーマンスなのでは?思ったのですが、使われている場所が、監査ツールの API サーバーとして利用されているようです。(参考: Python at Netflix )

なっとく。。

Udemy で Flask を学ぶ

下記のコースでは、比較的規模の大きい SNS を作成しています。
シンプルな 1 ファイルから作成できる手軽さがある Flask ですが、この規模の開発も問題なくできることがわかる内容となっています。

Python+FlaskでのWebアプリケーション開発講座!!~0からFlaskをマスターしてSNSを作成する~

その他のウェブフレームワーク

実は、Python のウェブフレームワークは他にもイロイロあるんです!

  • フルスタック系
    • Django
    • Pyramid
    • TurboGears
    • Web2py
  • マイクロフレームワーク系
    • Flask
    • Bottle
    • Falcon
    • CherryPy
  • 非同期系
    • Tornado
    • Sanic

以外にもたくさんあって驚きです。。。

カテゴリー: ウェブアプリ関連
タグ: django, flask, python

最初のサイドバー

簡単な自己紹介

ごく普通の 30 代サラリーマンです。世界を旅しながらの生活が目標!!
IT 全般に興味あり: Python (Flask, Django) / PHP (Laravel, Wordpress) / Golang / AWS / Network Security.
Read More…

サイト内検索

最近の投稿

  • 【VS Code プラグイン】Postman より便利!? Rest Client をオススメする理由
  • MySQL と phpMyAdmin を Docker Compose で作って、Python から接続する
  • Windows10 上の Ubuntu から “curl localhost” を実行すると “Connection refused” になる原因
  • リダイレクトの仕組み知ってる?Flask で調べるてみるのだ。
  • Apple 独自の 検索エンジンで何が変わるのか

アーカイブ

  • 2021年3月
  • 2021年1月
  • 2020年10月
  • 2019年3月
  • 2018年11月
  • 2018年10月
  • 2018年9月
  • 2018年8月
  • 2018年7月
  • 2018年5月
  • 2018年4月

タグ

amazon cloudfront amazon s3 aws coursera css django docker flask fullstack gcp github hawaii life in USA linux mongodb mysql postgresql pwa python sqlite vagrant

Contact
Privacy Policy and Term of Use
Copyright © 2025 · All rights reserved.