機械学習だけではない!Pythonが誇る主要ライブラリを網羅的に解説Pythonのフレームワークを分野別に紹介

最終更新日:2021年9月22日

レバテックキャリアは
ITエンジニア・Webクリエイター専門の転職エージェントです

Pythonは記述量が少なく処理速度に優れた高水準言語です。Web関連の開発からデータ分析、機械学習まで幅広く活用されており、分野ごとにフレームワークが用意されています。Pythonを学習する際には、今後のキャリアパスに応じて習得するフレームワークを選択していきましょう。ここでは、Pythonフレームワークを分野別に紹介しています。

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

まず、フレームワークを使用することのメリットについて解説します。Pythonに限らず多くのプログラミング言語にはフレームワーク(統合開発ツール)が用意されており、効率よく開発を進められるようになっています。フレームワークの具体的なメリットとしては以下が挙げられるでしょう。

・生産性の向上
アプリケーションのベース部分にフレームワークを使用し、頻繁に使われる特定の処理を省略することができます。ルーチンワークになりがちな定型処理のコーディング作業が省かれることで、開発効率が向上します。

・開発品質の均一化
フレームワークのルールに従うことで、アプリケーションの品質を一定に保つことができます。アプリケーション開発の品質管理は、通常「QA(品質管理)」部門のエンジニアが担当しますが、すべての企業にQAが設置されているわけではありません。QA部門を持たない企業の場合は、開発チーム内で品質管理を行うこともあります。

フレームワークを使用すると一定の品質が保たれるため、開発担当者の負荷が軽くなったり、開発コストの削減につながったりといったメリットが発生するわけです。

・テスト工数の削減
フレームワークが提供する機能については、テストを省略できることがあります。これは、フレームワーク側ですでに動作保証が確認されているためです。

・保守性、可読性が高くなる
フレームワークを使用した開発では、フレームワーク内のルールに従ってコーディングを進めます。そのため、誰がコーディングを担当してもプログラムの構造は大きく変わらず、可読性や保守性が上がります。

フレームワークの種類

ここで、フレームワークの種類を紹介します。フレームワークは大きく以下3つに分類されます。

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

フルスタックフレームワークとは、開発に必要な機能が網羅的に搭載されているフレームワークです。万能型のフレームワークであり、UI・データベース・セキュリティなどに関する機能がまとめられています。そのため、環境構築が非常に簡単であり、コーディングに集中できるというメリットがあります。ただし、動作が重くなりがちというデメリットもあります。

マイクロフレームワーク

軽量フレームワークとも呼ばれ、特定分野の開発に必要な機能がコンパクトにまとめられたフレームワークです。小規模でシンプルな機能を開発する際に使用されることが多いでしょう。また、機能のシンプルさゆえに学習コストも低く、初心者でも扱いやすいことも特徴です。

非同期フレームワーク

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

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

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

2. Pythonにおける分野別フレームワーク一覧

では、Pythonにおける主要なフレームワークを、分野別に紹介していきます。なお、対象分野は「Web」「データサイエンス(統計解析)」「機械学習」「ビッグデータ処理」としています。

Web

まずWebの分野から紹介します。Webでは以下6つのフレームワークが代表的な存在です。

Django

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

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

Djangoでは、管理者ユーザーを作成したあとに「localhost:8080/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アプリケーションをセキュアに構築できるため、セキュリティの強固さも魅力のひとつです。

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

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

Pythonの本分とも言えるデータサイエンス・機械学習分野からは、以下3つのフレームワークをピックアップしました。

Tensorflow

TensorflowはPythonの機械学習フレームワークとしては最も知名度が高く、世界中で使用されています。当初はGoogleの研究プロジェクトでしたが、現在はオープンソースとして公開されています。TensorFlowは、データの読み込みや前処理、計算処理、出力などあらゆる処理でテンソル(多次元配列)を扱います。また、iOSやAndroidなど、複数のメジャーなプラットフォームに対応できることも見逃せません。

これら複数のプラットフォームにおいて、分散学習と並列処理が可能なことから、ビッグデータ解析やディープラーニングに活用されるようになりました。
TensorFlowはPythonのフレームワークの中でも特に知名度が高いため、ぜひ理解しておきたいところです。

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

Keras

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

Pytorch

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

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

ビッグデータ処理

3つ目の分野はビッグデータ処理です。ビッグデータ処理用フレームワークとしては、下記2つを紹介します。

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は競合関係になく、同一システム内に共存することが可能です。

参考:databricks「Apache Spark™ - Apache Spark とは~分散処理入門の方にもわかりやすくご紹介」

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

最後に、Pythonフレームワークを選ぶ際のポイントについて解説します。

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

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

動作が軽量か

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

人気度

フレームワークの人気度は、毎年変化するため、常にトレンドを注視しておきましょう。ちなみにPythonのフレームワーク・ライブラリに関する人気度は、Pythonソフトウェア財団が毎年ランキング形式で公表しています。(※)ぜひ参考にしてみてください。

参考:​​Python Software Foundation and JetBrains「Python Developers Survey 2020 Results」

ITエンジニア・Webクリエイターの転職ならレバテックキャリア

レバテックキャリアはIT・Web業界のエンジニア・クリエイターを専門とする転職エージェントです。最新の技術情報や業界動向に精通したキャリアアドバイザーが、年収・技術志向・今後のキャリアパス・ワークライフバランスなど、一人ひとりの希望に寄り添いながら転職活動をサポートします。一般公開されていない大手企業や優良企業の非公開求人も多数保有していますので、まずは一度カウンセリングにお越しください。

転職支援サービスに申し込む

また、「初めての転職で、何から始めていいかわからない」「まだ転職するかどうか迷っている」など、転職活動に何らかの不安を抱えている方には、無料の個別相談会も実施しています。キャリアアドバイザーが一対一で、これからのあなたのキャリアを一緒に考えます。お気軽にご相談ください。

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

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

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

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

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

人気の求人特集

内定率が高い

関連する記事

人気の記事

スキルアップ記事トップへ

Pythonの求人・転職一覧