Pythonのフレームワークとは?種類や分野別のおすすめを紹介

最終更新日:2024年8月21日

Pythonは記述がシンプルでコード記載量を抑えることができる優れた高水準言語です。また、ライブラリやフレームワークが充実していることもPythonの人気を支える理由となっています。

Pythonの用途は、Web関連の開発からデータ分析、機械学習まで幅広く、分野ごとにフレームワークが用意されています。Pythonを学習する際には、今後のキャリアパスに応じて習得するフレームワークを選択しましょう。

本記事ではPythonのフレームワーク習得にあたり習得対象の選択に悩むエンジニアに向けて、Pythonのフレームワークを分野別に紹介します。

レバテックキャリアで転職した3人に2人が年収70万円UPを実現

支援実績10年の登録者データを基にした エンジニア・クリエイター専門 年収診断 無料診断START

※2023年1月~2024年3月実績

この記事のまとめ

  • フレームワークとは、システム開発に必要な機能を搭載した枠組み
  • Pythonのフレームワークは複数あり、開発規模や用途によって選択し使いこなせると良い
  • フレームワークを活用するメリットは非常に多いため、Pythonエンジニアは積極的に学習するべき

Pythonの求人を紹介してもらう

Pythonで使える3種類のフレームワークとは

Pythonで使える3つのフレームワーク


Pythonは多くの用途に使用されているため、機械学習やWebアプリ開発用など様々なフレームワークがあるのが特徴です。また、Pythonのフレームワークは次の3つの種類に分類できます。具体的には以下の3つです。


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

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

    ・非同期フレームワーク


それぞれについて詳しく見ていきましょう。

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

フルスタックフレームワークとは、開発に必要な機能が網羅的に搭載されているフレームワークです。万能型のフレームワークであり、UI・データベース・セキュリティなどに関する機能がまとめられています。

そのため、環境構築が非常に簡単であり、コーディングに集中できるというメリットがあります。ただし、動作が重くなりがちというデメリットもあります。

マイクロフレームワーク

軽量フレームワークとも呼ばれ、特定分野の開発に必要な機能がコンパクトにまとめられたフレームワークです。

小規模でシンプルな機能を開発する際に使用されることが多いでしょう。また、機能のシンプルさゆえに学習コストも低く、初心者でも扱いやすいことも特徴です。

非同期フレームワーク

非同期フレームワークとは「非同期通信」を実装できるフレームワークです。非同期通信とは送受信者双方が、お互いにタイミングを合わせることなく、通信を行う様子を指します。

一般的に通信はリクエスト⇒レスポンスという具合に、送信者からの要求に対して受信者側がタイミングよく応答することで成立します。しかし、非同期通信では、「スタートを表すデータ」と「ストップを表すデータ」で通信の開始と終了を制御するため、タイミングを合わせる必要がありません。

このことを利用して、「Webサイトの一部だけを更新する」「画面遷移を経ずに動的な処理を行う」といった実装が行われます。

Pythonの求人を紹介してもらう

そもそもフレームワークとは

フレームワークとは、システム開発に必要な機能を搭載した枠組みです。システム固有の処理を記述するだけでシステム開発が可能となり、1から構築すると工数のかかるWebアプリケーション開発や人工知能開発の分野で広く使用されています。具体的にはWebアプリで多く使用されるログイン機能や管理画面などです。

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

フレームワークとよく似た単語で「ライブラリ」があります。どちらも汎用的な機能を簡単に実装するための枠組みです。2つの違いを確認していきましょう。それぞれは以下のような違いがあります。

フレームワーク:アプリケーション開発に必要な機能を全て備えた枠組み
ライブラリ:汎用的に使用される機能を”機能単位”で提供する枠組み。
フレームワークがアプリ全体の機能を提供するのに対して、ライブラリは機能単位で提供しています。アプリケーション全体へ仕組みを提供しているのか、機能を提供しているのかと考えれば分かりやすいでしょう。

Pythonの求人を紹介してもらう

Pythonの分野別おすすめフレームワーク一覧

フレームワークの種類を確認したところで、ここからは各分野別おすすめフレームワークをご紹介します。Pythonは人気な言語ですので各分野に多数のフレームワークが開発されています。それぞれのフレームワークに特徴がありますので、開発内容に応じて使いこなせるように特徴をおさえましょう。

用途 名称 種別
Webアプリ開発 Django フルスタックフレームワーク
Flask マイクロフレームワーク
Tornado 非同期フレームワーク
FastAPI マイクロフレームワーク
非同期フレームワーク
Bottle マイクロフレームワーク
web2py フルスタックフレームワーク
データサイエンス・
機械学習
Tensorflow 機械学習フレームワーク
Keras ニューラルネットワークライブラリ
Pytorch 機械学習向けライブラリ
ビッグデータ処理 ApacheHadoop 分散ビッグデータ処理用フレームワーク
(またはミドルウェア)
ApacheSpark 機械学習とビッグデータ処理に特化した
分散処理フレームワーク

関連記事:Pythonとは?特徴やできること・活用事例などを解説!

Webアプリ開発

まずはWebアプリ開発分野で使用されるフレームワークを紹介します。Pythonは機械学習で使用されるイメージをお持ちの方も多いと思いますが、Webアプリ開発でも使用されています。Instagramなどが代表例です。ここでは代表的な以下6つのフレームワークを紹介します。

・Django

・Flask

・Tornado

・FastAPI

・Bottle

・web2py

それぞれについて詳しく見ていきましょう。

Django

Djangoは、PythonのWeb開発に特化したフルスタックフレームワークです。2005年7月にオープンソース化されたDjangoは、Webサイト・アプリケーションの開発・保守運用に必要な機能を全て網羅しています。

一般的なフレームワークに搭載されている機能(URLディスパッチャー、O/Rマッパー、テンプレートエンジン)に加え、管理画面からのデータベースの操作や独自のテンプレートエンジンなど、豊富な機能を提供しています。特に管理画面の自動生成機能は、他のフレームワークにはない特長です。

Djangoでは、管理者ユーザーを作成したあとにサーバーを起動し「localhost:◯◯/admin/」にアクセスすると「Django管理サイト」にログインできます。この管理画面から、データベースの閲覧・データ投入・検証作業や、管理画面自体のカスタマイズが可能です。また、機能追加やコンポーネントの再利用性の面でも優れています。

Flask

Flaskは非常に軽量でシンプルなマイクロフレームワークです。中小規模の開発に向いていると言えるでしょう。「MVTモデル」を採用したフレームワークで「Model(データ管理)」「View(呼び出し制御)」「Template(ユーザーインターフェース)」という3つの構造に従って実装を進めることが基本です。文法が簡単で学習コストが低く、拡張機能が豊富という強みがあります。

主な拡張機能としては「Flask WTF(レンダリングと検証機能)」「Flask Mail(SMTPインターフェース機能)」などが挙げられます。Djangoに比べて機能はシンプルですが、軽快に動作するため、スモールサービスの開発に最適です。

Tornado

Tornadoは、シンプルで処理速度に優れた非同期フレームワークです。FriendFeed社によって開発され、同社がFacebook社に吸収された後にオープンソースへと移行しました。日本では知名度があまり高くないようですが、非同期通信によるSPA(シングルページアプリケーション)の構築などに使用されています。また、Webサーバーとしての機能も持っており、静的コンテンツの効率的な配信も可能です。

Tornadoはマイクロフレームワークでもあり、非常にシンプルかつ軽量なことも強みのひとつです。非同期通信のほか、同時接続処理にも強みをもち、リアルタイムなWebサービスの開発に対応しやすいことで有名です。特にPythonで記述されたコードに対しては光速に動作し、毎分2000リクエストを処理できるとされています。ただし、UIはTornado独自のものを使用するため、手に馴染むまでに時間を要するかもしれません。

FastAPI

Tornadoと同じくマイクロフレームワークであり、非同期フレームワークでもあります。非常に高速な動作で記述も簡単なため、特にREST APIの開発で人気です。また、記述性の高さや本番運用を意識した設計などが評価され、近年ではPython用フレームワークの中でも徐々に地位が向上しています。

Fast APIはドキュメントが丁寧で、なおかつドキュメントの自動生成機能も付与されているため、開発者同士の意思疎通がしやすいという強みがあります。また、本番運用を想定した仮想環境(Docker image)も用意されているため、本番運用に合わせた開発が進められます。

Bottle

Bottleは、Webフレームワークの中では最も軽量かつシンプルなマイクロフレームワークです。2009年に誕生し、主に個人向け/小規模開発向けのフレームワークとして活用されています。他のフレームワークに比べると機能面では見劣りしますが、Pythonフレームワークの知識を身に着けつつWeb開発を進めたい場合には、有用なフレームワークです。

Bottleは単一のファイルで構成されており、導入の手間が非常に小さく、レンダリングが高速です。また、学習コストも非常に低いです。実際に学習用ドキュメントを比較してみると、BottleはFlaskの3分の1ほど程度のボリュームです。Flaskも決して学習コストが高いフレームワークではないため、Bottleのシンプルさが垣間見えます。

web2py

web2pyは、アジャイル開発を想定して作られたフルスタックフレームワークです。Windows・Mac・Linuxなど複数のプラットフォームで動作するため、クロスプラットフォーム対応に強みを持っています。また、web2pyはデータベース駆動型のWebアプリケーションをセキュアに構築できるため、セキュリティの強固さも魅力のひとつです。

ただし、有名なサービスに採用されていないこともあり知名度はいまひとつで、案件の数もそれほど多くありません。「アジャイル」「セキュリティ」と、現在のアプリケーション開発のトレンドを抑えているため、スキルアップを目的とした習得がおすすめです。

データサイエンス・機械学習

Webアプリ開発に使用されるフレームワークを確認したところで、ここからはデータサイエンス・機械学習に使用されるフレームワークを3つ紹介します。直近のPython人気の火付け役なので、ぜひ把握しておきましょう。紹介するのは以下の3つです。

  • ・Tensorflow

    ・Keras

    ・Pytorch

それぞれについて詳しく見ていきましょう。

Tensorflow

TensorflowはPythonの機械学習フレームワークとしては最も知名度が高く、世界中で使用されています。当初はGoogleの研究プロジェクトでしたが、現在はオープンソースとして公開されています。

TensorFlowは、データの読み込みや前処理、計算処理、出力などあらゆる処理でテンソル(多次元配列)を扱います。また、iOSやAndroidなど、複数のメジャーなプラットフォームに対応できることも人気な理由の1つです。。

これら複数のプラットフォームにおいて、分散学習と並列処理が可能なことから、ビッグデータ解析やディープラーニングに活用されています。

一方で、習得のハードルはやや高いと言えるでしょう。TensorFlowが扱うのは非常に大きいデータで、そのデータを処理するためには大規模な計算リソースが必要です。この計算リソースは、個人所有のPCでは賄いきれない規模になるため、企業やプロジェクトに所属しながらTensorFlowを学ぶことになります。

Keras

Kerasは2015年に誕生したニューラルネットワークライブラリです。現在は前述のTensorFlowに吸収され、TensorFlowの中のライブラリとして動作しています。

ディープラーニングの基礎である数学的理論をシンプルなコードで実装できるため、機械学習関連の開発で多用されているようです。特にニューラルネットワークを容易に構築できる点は、ディープラーニングの知識を持たない人間にとって優しいライブラリです。「ニューラルネットワークとはそもそも何か?」を学びながら、手を動かしつつ知識を習得できるというメリットがあります。

Pytorch

Pytorchは、2016年に誕生した機械学習向けライブラリです。Facebookの研究グループによって作成され、人気を集めています。Pytorchは直感的なコーディングが行えるように工夫されており、なおかつその構造が「Numpy」によく似ています。したがって、Numpyを使ったことがあればスムーズに習得できるはずです。

PytorchはFacebookで誕生したことから開発コミュニティが活発で、最新の手法に関する情報も入手しやすいというメリットがあります。また、動的なニューラルネットワーク構築(define by run)にも対応しており、データを流しながらネットワーク構築を行うことができます。

ビッグデータ処理

3つ目の分野はビッグデータ処理です。ビッグデータ処理は大量に生まれるデータの有効活用に必須の技術になります。AIの開発が活発な現在は非常に注目されている技術です。ここではビッグデータ処理用フレームワークをつを紹介します。

Apache Hadoop

「Apache Hadoop」は、Pythonの分散ビッグデータ処理用フレームワークとしては最も有名です。単に「Hadoop」とも呼ばれます。Javaで作られているHadoopは、フレームワークというよりもミドルウェアと称すべき存在かもしれません。

複数のクラスタにまたがる大規模なデータ処理基盤を、シンプルなコーディングで構築できることから、急速に広まりました。近年は処理速度の面で後述のSparkに劣るものの、Pythonの主要なフレームワークとして認識されています。国内でも大企業での採用事例が多いことから、Pythonのビッグデータ処理ならば、まずはHadoopを学ぶことをおすすめします。

Apache Spark

Apache Sparkは、機械学習とビッグデータ処理に特化した分散処理フレームワークです。カリフォルニア大学バークレー校で開発され、2014年にApache Software Foundationに移管されました。SparkはJavaの派生言語「Scala」で作られています。非常に高速かつ、大規模な分散データ処理を高速に行うことに強みがあり、その速度はHadoopの100倍に達することもあります。そのため「速度重視のビッグデータ処理ならばSpark」と言えるでしょう。

Sparkの高速処理を支えているのは「インメモリ処理」です。インメモリ処理とは、データをストレージ(HDDやSSD)に移動せず、メインメモリ内で扱うことで入出力の時間を省き、処理を高速化する手法です。ほかにもSparkには、データ格納場所の選択肢が多かったり、SQLをサポートしていたりと、使いやすさを向上させる機能が搭載されています。ちなみに、前述のHadoopとSparkは競合関係になく、同一システム内に共存することが可能です。

人気なPythonフレームワーク

2022年にチェコに拠点を置くJetBrainsとPythonソフトウェア団体が実施したアンケートによると、下記のような結果になりました。

  • 1位:Flask

    2位:Django

    3位:FastAPI

ご覧の通り、全てWebアプリ開発用のフレームワークです。いずれのフレームワークも活発なコミュニティや豊富なドキュメントなど、初心者でも挑戦しやすい環境が整っているため人気であると考えられます。

Pythonの求人を紹介してもらう

Pythonのフレームワークを選ぶ際のポイント

Pythonのフレームワークを選ぶポイント

大量のフレームワークを確認したことで、どのフレームワークを使用すれば良いのか分からなくなってしまった方も多いのではないでしょうか。Webアプリ開発用のフレームワークだけで6つ紹介したため、考え方を整理していきましょう。ここからは、Pythonフレームワークを選ぶ際のポイントを4つ紹介します。

開発用途に合っているか

最も大事なポイントは開発したい内容を実現できるフレームワークであるかです。DjangoやFlaskはとても便利なフレームワークですが、機械学習モデルの構築や分散処理は実装できません。まずは実装したい内容を整理して、適切なフレームワークを洗い出してから選択していきましょう。

開発規模にマッチしているか

開発用途で抽出してからまず着目すべきは「開発規模」です。これまでの内容からもわかるように、Pythonのフレームワークは「大規模向け」「小規模向け」が入り乱れています。一般的にフルスタックフレームワークは大規模開発向け、マイクロフレームワークは小規模開発向けですが、近年は小規模向けの軽量なフレームワークを採用しつつ、徐々に規模を拡大する方法もあります。もし、参画予定のプロジェクトが決まっているならば、その規模やロードマップに合ったフレームワークを選ぶようにしてみてください。

動作が軽量か

独学時には特に「動作の軽さ」が重要です。フルスタックフレームワークは多機能である一方、開発を進めるごとにデータ量が増え、徐々に動作が重くなる傾向にあります。そのため、まずは学習コストが低く動作が軽いフレームワークを選び、少しずつ知識の幅を拡げていく方法がおすすめです。

人気度

フレームワークの人気度は、毎年変化するため、常にトレンドを注視しておきましょう。Pythonは人気言語で開発が盛んなため、常にトレンドが変化します。人気の高いフレームワークでは、新たな機能の追加、バージョンアップが活発であったり、開発のための情報が充実しており、継続的なサポートが見込めます。

Pythonの求人を紹介してもらう

Pythonでフレームワークを使用するメリット

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


フレームワークはいずれも実務現場で使用されており、現場には必要不可欠な存在です。ではなぜフレームワークを利用されているのでしょうか。それはフレームワークを使用することで、多くのメリットを得られるからです。ここからはフレームワークを使用するメリットを4つ紹介します。

開発生産性の向上

フレームワークを使用するとシステム開発に必要な機能が一通り完成した状態から開発できるため、生産性を向上させられます。特に実装の面倒なWebアプリ開発のログイン周りや人工知能開発のモデル作成などでは非常に重宝です。

セキュリティの向上

フレームワークは長い年月をかけて多くの有識者が改善してきたため、非常に高品質な機能が多いです。そのため、0から記述したコードよりもセキュリティに配慮した安全なアプリケーション開発が可能となります。

新たに作成したコードではセキュリティの不備を検知しにくいですが、フレームワークならその心配が低いです。情報の送受信やログインを必要とするアプリケーション開発にはフレームワークを活用するメリットが大きいでしょう。

コードの統一化によるメンテナンス工数削減

フレームワークを使用するとプロジェクトで新たに記述する範囲を限定できるため、コードを統一化しやすいです。また、コードの統一化はメンテナンス工数の削減や属人性を下げるなどおおきなメリットがあります。

バグの削減

フレームワークで提供される機能は多くの時間によって改善されてきているため、バグを保有している可能性が低いです。一方、プロジェクトで新たに記述したソースコードは技術不足や時間不足、テスト不足など様々な要因でバグ発生の可能性があります。フレームワークを採用することにより、多くのコードを提供されたものと差し替えられるためバグが削減可能です。ソフトウェアの品質にとって大きなメリットですので、ぜひ積極的に活用していきましょう。

Pythonの求人を紹介してもらう

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

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


Pythonフレームワークを確認したところで、ここからは使用するデメリットをご紹介します。前述の通りフレームワークを使用するメリットは非常に多いですが、デメリットも存在します。メリットだけでなくデメリットもおさえておきましょう。

独自カスタマイズが制限される

フレームワークには記述ルールが設けられているため、自由に記述やカスタマイズが出来ない場合があります。フレームワークに沿った画面設計、ひいては業務設計が必要となります。

習得に時間が必要

フレームワークは多機能なものが多いため、Pythonの基本文法だけでは使いこなせず、別途フレームワークの学習が必要になります。しかし、一度学習してしまえば、その後は何度でも使用できるため学習コストのパフォーマンスは高いと言えるでしょう。

有料のものがある

Pythonのフレームワークにはごく稀に有料のフレームワークがあります。メジャーなフレームワークのほとんどは無料ですが、初めて使用するフレームワークは無料で使用可能か確認しましょう。

Pythonの求人を紹介してもらう

Pythonフレームワークごとの求人数

Pythonのフレームワークスキルを活かして案件を獲得したい方は求人数がきになるのではないでしょうか。ここからは2024年6月にレバテックキャリアに掲載されている案件数を紹介します。

まずはWebアプリ開発用フレームワークの求人件数を確認してみましょう。


  • Django:471件

    Flask:201件

    FastAPI:62件


ご覧の通り、Djangoが圧倒的な人気でした。Djangoは大規模アプリ開発に向いているため、企業やプロジェクトなど大規模開発に適しているため求人が多く出ているようです。

続いて分散処理フレームワークの求人数を確認してみましょう。


  • Hadoop:334件

    Spark:154件


上記の通り、Hadoopの求人数の方が多かったですが、求人内容を確認したところHadoopの経験を重視しておりHadoop自体は使用しない求人が多かったです。

最後にデータサイエンス領域のフレームワークを見ていきましょう。


  • Tensorflow:198件

    Keras:62件


ご覧の通り、Tensorflowの求人数が圧倒的に多かったです。前述の通り、現在KerasはTensorflowに吸収されています。そのため、Tensorflowでヒットした案件でもKerasの知識が要求されるのでご注意ください。

Pythonの求人を紹介してもらう

Pythonのフレームワークに関するよくある質問

ここまでPythonフレームワークの種類やメリットなどを確認してきました。ここまでご覧いただいた方はPythonフレームワークの概要を理解できたのではないでしょうか。ここからは、Pythonフレームワークに関するよくある質問を確認していきます。

Q1. Pythonフレームワークとは何ですか?

フレームワークとは、各種のアプリケーション作成の際の枠組み、骨組みにあたります。よく作成されるアプリケーション種別において、共通する部分をまとめて作成して提供してくれるものです。このため、フレームワークを利用したアプリケーション開発は、効率的かつ高品質にしやすいメリットを持ちます。

Q2. Pythonのフレームワークは何種類ありますか?

個別のフレームワークの数は把握できませんが、用途別で分けると下記の3種類が存在します。


  • ・Webアプリケーション

    ・データサイエンス・機械学習

    ・ビッグデータ処理


また、Webアプリケーションフレームワークの中では、さらに3つの種類に分けられます。


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

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

    ・非同期フレームワーク

Q3. Pythonのフレームワークはどのようなときに使いますか?

開発するアプリケーションの種別や実現したい業務が定まっており、その実現に利用できるのであれば積極的にフレームワークの利用が検討されます。アプリケーション開発の効率向上と品質向上が主な目的です。例えば、Webbアプリケーションの開発をする場合には、業務用件を実現するために利用できるフレームワークがどれなのかを検討して、適したものがあれば採用することが一般的です。

Pythonの求人を紹介してもらう

まとめ

フレームワークはシステムやサービス、アプリケーションを作成する際に一般的に共通する部分をまとめた枠組みです。Web用のフレームワークであれば、画面遷移やデータベースへのアクセス、画面表示のテンプレートエンジンなどが提供されます。これらの機能を提供してくれるため、Webアプリケーション開発者は効率的かつ高品質な開発が可能となるメリットがあります。

Pythonは汎用的なプログラミング言語で、幅広い用途で活用されています。このため、大きくは下記の用途向けのフレームワークが提供されています。


  • ・Webアプリケーション

    ・データサイエンス・機械学習

    ・ビッグデータ処理


また、Webアプリケーション向けのフレームワークでは、特徴によって3種類に分類されています。

フレームワークはすでに開発されたコードを多くの範囲で利用できるため、開発効率と品質の向上に加え、セキュリティの向上やコードが統一化されるメリットもあります。一方で、独自のカスタマイズに制限が出る場合や、利用に向けて学習コストがかかるデメリットも存在します。

Pythonのフレームワークを選択する場合には、用途と規模、Webならば実現したい内容を考慮して選択しましょう。

関連記事:
Pythonエンジニアの仕事内容!必要なスキル・学習方法も解説
Pythonエンジニアの年収が高い理由は?需要と将来性も解説
Pythonの将来性は?メリットやJava・Rubyとの比較も解説
Pythonエンジニアの転職事情を解説!求人数や年収も紹介

ITエンジニアの転職ならレバテックキャリア

レバテックキャリアはIT・Web業界のエンジニア職を専門とする転職エージェントです。最新の技術情報や業界動向に精通しており、現状は転職のご意思がない場合でも、ご相談いただければ客観的な市場価値や市場動向をお伝えし、あなたの「選択肢」を広げるお手伝いをいたします。

「将来に向けた漠然とした不安がある」「特定のエンジニア職に興味がある」など、ご自身のキャリアに何らかの悩みを抱えている方は、ぜひ無料のオンライン個別相談会にお申し込みください。業界知識が豊富なキャリアアドバイザーが、一対一でさまざまなご質問に対応させていただきます。

「個別相談会」に申し込む

転職支援サービスに申し込む
※転職活動を強制することはございません。

レバテックキャリアのサービスについて

この記事の監修

レバテックキャリア編集部

レバテックキャリアは、IT/Web業界のエンジニア・クリエイター向けに特化した転職エージェントです。当メディアでは、エンジニア・クリエイターの転職に役立つノウハウから、日々のスキルアップや業務に活かせる情報まで、幅広いコンテンツを発信しています。

プロのアドバイザーがあなたのお悩みや疑問にお答えします

- 転職個別相談会開催中 -

相談内容を選択してください

※転職活動や求人への応募を強制することはありません

関連する記事

人気の求人特集

内定率が高い

Pythonの求人・転職一覧

ITエンジニア未経験~3年目の方限定

  • ITエンジニア適職診断
  • 5年後の予想年収

簡単3分無料で診断してみる

×

今もらっている年収は高い?低い?

簡単60秒 エンジニア・クリエイター専門 年収診断 無料診断START ×