【2020年版】Pythonのフレームワークとは?人気の4種を徹底比較!

Pythonは近年人気のプログラミング言語になってきています。しかし、開発時にフレームワークの種類が多すぎてどれを使うべきか、またどれを学習すべきか、中級レベルの人でもなかなか悩ましいですよね。

また、トレンドを理解しておかないと、結局すぐに使えなくなってしまった場合、「学習に費やす時間も無駄になってしまう」ということもにもなりかねません。

そこで今回は、特にプログラミング入門者から中級者の方を対象として、Pythonフレームワークの選び方とオススメのフレームワークについて解説していきます。

↓Python学習に必要な情報を一つにまとめた記事を作りました。これを読めば、効率よくPythonを学ぶことができます↓


Pythonを開発する時のフレームワークについて「オンラインレッスン」で詳しく聞きたい↓ 【無料です!】
【月500名以上が受講】1時間で人生が変わる無料体験レッスン
更新日 : 2020年4月2日

そもそもフレームワークって?


フレームワークってなに?と思っている方もいるかも知れませんので、簡単に解説しておきます。

フレームワークとは

フレームワークとは「プログラミングでアプリ開発をする際に、土台として提供されているものです。」自分でプログラミングを全て行う場合、莫大な量のソースコードを用意する必要があり、アプリ開発をする際にものすごく時間がかかってしまいます。

そのため、最近ではアプリ開発に必要なものをまとめて提供しているフレームワークを使って開発を行うのが、スタンダードとなっています。

フレームワークとライブラリの違い

フレームワークと混同されやすいのがライブラリです。そのため、フレームワークとライブラリが同じものだと思っている人も多いかもしれません。

  • ライブラリは、汎用性が高いプログラムをまとめたもの
  • フレームワークは、開発を行う際に、頻繁に利用される基礎的な機能をまとめたもの

例えば、WebサイトにFacebookのログイン機能をつけたいと思った場合、一からプログラミングを行うと膨大な時間がかかってしまいます。しかし「Facebookログイン機能を付けるライブラリ」を使うと、WebサイトにFacebookのログイン機能を簡単に装着可能です。

つまりライブラリとは、Facebookのログイン機能や、画像のスライドを作るなど、よく利用されるプログラムをパッケージ化したもののことをいいます。

一方で、フレームワークはアプリ開発やWebシステムなどを開発する時に利用される枠組みです。フレームワークは、文章を書く時に使われる起承転結や、マーケティングに使われるSWOT分析に似ています。プログラミングにおいては、フレームワークはよく利用するライブラリをまとめたものだとイメージすると分かりやすいでしょう。

アプリ開発をする際には、大量のソースコードを用意する必要があります。フレームワークを利用すれば、自分で書くコードの量が減るため、その分開発スピードが上がります。このような理由から、大規模な開発を行う場合には、アプリ開発に必要なものがまとまっているフレームワークを使うのが一般的です。

ライブラリやフレームワークの特徴について、詳しく知りたい方はこちらの記事を参考にしてください。

アプリ開発を100倍効率化!独学初心者が最初に知るべき仕組み3選
更新日 : 2020年4月27日

Pythonで使えるWebフレームワークの種類

Pythonで利用できるフレームワークには、3つのタイプがあります。

  • フルスタックフレームワーク(Full-Stack Framework)
  • マイクロフレームワーク(Microframework)
  • 非同期フレームワーク(Asynchronous Framework)

フルスタックフレームワークは、Web開発時に必要なものがまとまっているフレームワークです。代表的なものには、Django、web2py、Pylons、CubicWebなどがあります。必要なものが全て揃っているため、小規模な開発だけでなく、大規模な開発にも使えて汎用性が高いのが特徴です。

例えば、代表的なフルスタックフレームワークのDjangoは「Instagram」や「Pinterest」などのWebアプリの開発に使われています。

マイクロフレームワークは、最低限必要な機能のみがまとめられているフレームワークです。代表的なものには、Flask、Bottle、CherryPy、Dashなどがあります、必要最低限の機能しかないため、フルスタックフレームワークに比べると小規模な開発に向いています。

例えば、Flaskを使えばWebサイトに「ユーザー認証」「管理画面」「サイトの案内ぺージ」「RSSフィード」などの機能を簡単に構築できます。

非同期フレームワークは、同時に複数接続処理が可能なフレームワークです。代表的なものには、Tornado、Sanic、Growler、Aiohttpなどがあります。レスポンスが早く効率的に作業できるので、人気があります。

例えば、TornadoはWebアプリケーションの開発によく利用されています。

フレームワークを使うメリットとデメリット

この章では、フレームワークを使うメリットとデメリットについて解説します。

フレームワークを使うメリット

フレームワークを使うメリットは、以下の4つです。

  • 作業効率が上がる
  • 複数で作業する場合に、コードを統一できる
  • バグの軽減に繋がる
  • 高いセキュリティを確保できる

フレームワークの最大のメリットは、作業効率が上がることでしょう。フレームワークを使えば、一から必要なソースコードを用意する必要がありません。その結果、コーディング量が減るため、開発にかかる時間を短縮できます。

また、開発するシステムの規模が大きくなるほど、システム開発に関わるプログラマーの人数が増え、スキルや経験値が異なるプログラマーがコーディングします。この時に各々が自由にコーディングすると、コードが統一されず、運用しにくくなってしまいます。一方でフレームワークを利用すれば、複数で作業する場合もコードの統一が可能です。そのため、大規模な開発になるほどフレームワークが使われています。

フレームワークはすでに正常に機能しているコードの集合体のため、一からコーディングを行うよりも、バグが発生する可能性が低いでしょう。フレームワークにある堅牢なコードを使うため、高いセキュリティを確保することも可能です。

フレームワークにはこのようなメリットがあるため、Webシステムやアプリ開発など大規模な開発にはフレームワークが利用されています。

フレームワークを使うデメリット

フレームワークを使うデメリットは、以下の3つです。

  • フレームワークを学習する必要がある
  • 日本語の情報が少ない
  • アップデートによって仕様が変わってしまう

使ったことがないフレームワークを利用する際には、学習する必要があることが一番のデメリットでしょう。フレームワークに関する日本語の情報が少ないのも、デメリットの一つです。

また、フレームワークはアップデートによっては仕様が変わってしまうことも。フレームワークを入れ替える際には、プログラミングの根幹部分を変更します。そのため入れ替えには莫大な時間が必要です。このような理由から、利用するフレームワークは慎重に選びましょう。

Pythonフレームワークの最近のトレンド

それでは実際にPythonフレームワークのトレンドを見てみましょう。Googleトレンドにて検索カテゴリ「プログラミング」にて、比較的検索数が多い単語の組み合わせで調べています。

今回はPythonフレームワークとして、比較的に知名度が高い下記のフレームワークで検索数を調査しました。※その他の用語等と混同する可能性があるものは”python”も付けています。

  • 青:Bottle
  • 赤:Django
  • 黄:Flask
  • 緑:Tornade

世界の検索事情 2004-現在


Pythonのプログラミングをしたことが有る方はご存知かと思いますが、Djangoが圧倒的に使用されています。Flaskの検索数が年を追うごとにDjangoの検索数に迫っています。その他はDjangoの「10分の1」にも満たない量です。まだまだ検索シェアではFlaskはDjangoに劣りますが、その伸び率に期待も持てそうです。

日本の検索事情 2004-現在


日本においても、概ね世界と同じ傾向になっています。

今使われているPythonのフレームワーク

Python Software Foundationが実施した、今実際に使用しているPythonのWebフレームワークやライブラリーに関する調査結果は下記の通りでした。


引用元:Python Software Foundation https://www.jetbrains.com/lp/python-developers-survey-2019/

このように1位がFlask (48%)、2位Django (44%)という結果で、検索結果とほぼ同じでした。そのため、フレームワークの勉強する場合は、まずはDjangoを選ぶのがオススメです。

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

ここまでの内容を踏まえて、これから開発や学習するのに学習や採用にオススメのフレームワークを4つ紹介します。

Bottle

Bottleとは?

スクリーンショット-2016-04-01-15.36.30


1ファイルで導入できる「超お手軽」なフレームワークです。フレームワークの導入もお手軽に行えます。ひとことで言うと「シンプルイズベスト」なフレームワークです。

おすすめ理由

まだまだ知名度こそ低いものの地味に人気を集めてきています。比較的新しい技術で、軽量なフレームワークのためアクセス速度もある程度担保できます。要件によって本格的なアプリ開発に利用することもあります。初学者がWEBフレームワーク入門として利用するにもオススメです。

Bottleの仕事

日本でBottleのフレームワークを利用するという求人はほとんどありません。現在はあくまで学習用、または自分のWEBサービス用として利用することになるでしょう。

こんな人にオススメ

とりあえずPythonでフレームワークに触れてみたい!という人にオススメです。「Bottleについてもっと詳しく知りたい」という方はこちらの記事をご覧ください。

  • なぜBottleの人気が上がってきているのか
  • どんな特徴があるのか
  • どんなアプリを開発するのに適しているのか


こういった内容が5分でサクッと読めて、Bottleがどんなフレームワークなのかがわかります。
PythonのWebフレームワークBottleとは?導入方法まで解説
更新日 : 2019年5月30日

Flask

Flaskとは?

スクリーンショット 2016-04-01 18.26.26

引用元:Flask http://flask.pocoo.org/

公式サイトのフレームワーク紹介には次のように書かれています。

Flask is a microframework for Python based on Werkzeug, Jinja 2 and good intentions.

>フラスクはパイソンの小規模なフレームワークで、Jinja2というツールとWerkzeug(ヴェルクツォイク:ドイツ語でツールという意味)というプログラミングに使用するキットを用います。Djangoに近い考え方ですが、面倒な部分を省いて軽量化させたようなフレームワークです。

おすすめ理由

トレンド比較時に覧ていただいた通り、人気が上がってきているフレームワークです。比較的軽量で利用しやすく、これから更にシェアの伸びが期待できます。

Flaskの仕事

例えばForkwellという採用技術の詳細が分かる求人サービスでは、次のような仕事が募集されています。


引用元:Forkwell Scout https://jobs.forkwell.com/kabuku/jobs/3930

PythonのFlaskを中心に新しい技術を積極的に取り入れているチームのようです。こちらでは年収1000万円くらいまで目指すことができます。


引用元:Forkwell Scout https://jobs.forkwell.com/negocia/jobs/6523

機械学習やAIに強いならフルリモートで、年収1000万円を狙える求人もありました。

こんな人にオススメ

将来的にPythonエンジニアやAI・機械学習エンジニアを視野に入れている!という人Flaskの基本や、インストールの方法などの使い方に関してはこちらの記事を参考にしてください。

【Python】フレームワークFlaskの基本をマスター
更新日 : 2019年8月7日

Django

Djangoとは?

スクリーンショット 2016-04-01 18.48.03

公式サイトのフレームワーク紹介には次のように書かれています。

Django is a high-level Python Web framework that encourages rapid development and clean, pragmatic design.

>DjangoはハイレベルなPythonのWebフレームワークです。実用的に作られた素早く精錬された開発環境を提供します。ひとことで言うと、Djangoは多機能な万能型WEBフレームワークです。

おすすめ理由

Pythonで仕事をするのであれば、まずこれを抑えて置かなければいけません。Python界での世界シェアNo.1なので、今後も広く使い続けられます。

Djangoの仕事

例えばForkwellには次のような案件があります。


Djangoを用いて新しい技術も積極採用しているチームのようです。1500万までという年収も魅力的ですね。

こんな人にオススメ

Pythonエンジニアとして仕事をしたい!Pythonで色々な物を作りたい!という人。Djangoのメリットやデメリット、できることなどに関してこちらの記事で詳しく解説しています。興味がある方は参考にしてください。

Tornado

Tornadoとは?


Tornadoの公式サイトによると、

TornadoはFriendFeedで開発されたPythonのWebフレームワーク(非同期通信ライブラリ)です。

ノンブロッキングネットワークI / Oを使用することで、Tornadoは数万のオープン接続に拡張でき、ロングポーリング、WebSocket、および各ユーザーへの長時間の接続が必要なその他のアプリケーションに最適です。

このように解説されています。TornadoはPythonの非同期フレームワークでライブラリでもあります。

おすすめの理由

非同期フレームワークのため、シンプルで処理スピードが早いのが特徴です。他のフレームワークに比べると知名度は低いですが、使い勝手がいいので、興味があるなら勉強してみるのもいいでしょう。

Tornadoの仕事

日本でTornadoのフレームワークを利用するという求人はほとんどありません。現在はあくまで学習用、または自分のWEBサービス用として利用することになるでしょう。

こんな人にオススメ

とにかく非同期フレームワークを使ってみたい人、Tornadoの使い方やインストールの方法は、こちらの記事で紹介しているため、よかったら参考にしてください。

PythonのWebフレームワークTornadoをわかりやすく解説!
更新日 : 2020年5月8日

Pythonの機械学習向けフレームワークやライブラリー

Pythonには、下記のような優秀な機械学習向けのフレームワークやライブラリが充実しています。

  • Googleが開発しオープンソースとして提供しているTensorflow
  • ディープニュートラルネットワークの構築ができるKeras
  • ディープラーニングフレームワークライブラリのPytorch

これらのフレームワークやライブラリを使うことで、機械学習やディープラーニングを利用した学習モデルを簡単に構築できます。つまりPythonが使えると、これらのエコシステムを利用できるメリットがあります。

上記以外にもPythonの機械学習向けフレームワークやライブラリーは、豊富にあります。詳しくはこちらの記事で紹介しているので参考にしてください。

現役エンジニアがよく使う!Python機械学習ライブラリ厳選9選
更新日 : 2020年8月18日

フレームワーク選びに迷ったときは

世界的に人気があり、日本でも様々な企業で利用しているDjangoを使うのをオススメします。フレームワークとしてのしっかりした考え方を身につけることができるため、Djangoさえ使えればほとんどのサービスが構築できるでしょう。

ただし、プログラミングをこれから学ぼうという方にはDjangoは少し難易度が高いかもしれません。そのため、学習を始めたての未経験者の方はまず目的を明確にして、目的にあったフレームワークを選ぶことをオススメします。とくにPythonは非常にフレームワークの種類が多いので、あなたの目的にあったフレームワークが見つかるはず。

そんなこと言われてもなかなか決められないよ…。

という方は一度プロに相談してみるのはいかがでしょうか? 弊社の無料体験レッスンでは専属コンサルタントがあなたの悩みを解決するための手助けをさせていただきます。


Pythonのフレームワークだけでなく、その先の学習プランまで知りたい
Python学習を効率的に進めるためのノウハウを知りたい!
Python学習から転職までの手助けをしてほしい!

あなたがフレームワークをこれから学習したいとお考えであれば、フレームワーク選びからあなたの目的にあった学習プランの作成までを無料体験レッスンでご紹介いたします。もちろん、無理な勧誘等は一切いたしませんのでいま自学での学習にお困りの方は何なりとお申し付けください。

下記のカレンダーからお好きな日程を選んでいただけると簡単に予約できます。オンラインでの受講も可能なのでお気軽にご活用下さい。あなたにお会いできるのを楽しみにお待ちしております。

まとめ

Pythonフレームワークはいかがでしたでしょうか?

Pythonはまだまだ日本では仕事として案件を選びにくいですが、人工知能等新しい分野で活躍できる可能性が高い言語です。トレンドなフレームワークも学習していろいろなものが作れるようになりましょう。

LINEで送る
Pocket

「プログラミング、右も左もわからない…」という方にオススメ

当プログラミングスクール「侍エンジニア塾」では、これまで6000人以上のエンジニアを輩出してきました。

その経験を通してプログラミング学習に成功する人は、「目的目標が明確でそれに合わせた学習プランがあること」「常に相談できる人がそばにいること」「自己解決能力が身につくこと」この3つが根付いている傾向を発見しました。

侍エンジニア塾は上記3つの成功ポイントを満たすようなサービス設計に磨きをかけております。

cta_under_bnr

「自分のスタイルや目的に合わせて学習を進めたいな」とお考えの方は、ぜひチェックしてみてください。

書いた人

侍ブログ編集部

侍ブログ編集部

侍エンジニア塾は「人生を変えるプログラミング学習」をコンセンプトに、過去多くのフリーランスエンジニアを輩出したプログラミングスクールです。プログラミングに役立つ情報や有用な情報を発信していきます。
サービスページはこちら
ツイッターはこちら
フェイスブックはこちら

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習やキャリアのお悩み、お気軽にご相談ください。