Pythonフレームワークのまとめ【2019年版】

フリーランスフリーランスエンジニアPythonフレームワークお役立ち情報

2019/09/19

PythonでWebアプリ開発やAI(人工知能)開発をするにあたり、フレームワーク選びは重要なポイントです。
Pythonフレームワークや機械学習・ディープラーニングフレームワークの種類が多く存在する現在、どのフレームワークを使用するのが良いのか、どのフレームワークを学習するべきなのか、フリーランスエンジニアの方は迷ってしまうと思います。特にフリーランスエンジニアの方は求人・案件を探す際に、特定のフレームワーク経験を求められることや開発経験があると高単価になることが多いです。

今回は、フリーランスエンジニアの方に向けてフレームワークの概要から、おすすめのPythonフレームワークについてお話していこうと思います。フリーランスエンジニアとしてご活躍している方はもちろんのこと、今後フリーランスとしてご活躍するエンジニアの方にオススメの記事です。

<目次>
1.Pythonフレームワークとは?
2.フレームワークとライブラリの違い
3.Pythonフレームワークを利用するメリット・デメリット
メリット
 ・作業効率の改善
 ・コードの統一性を保持
 ・バグの減少
デメリット
 ・ある程度の学習時間が必要
 ・費用がかかるフレームワークがある
4.Pythonフレームワークの市場動向
5.おすすめのPythonフレームワーク5選
 ・Django
 ・bottle
 ・Flask
 ・Tornado
 ・Plone
6.機械学習・ディープラーニングフレームワーク3選
 ・Tensorflow
 ・Keras
 ・Pytorch
7.Pythonフレームワークの求人・案件数
8.Pythonフレームワークのトレンド
9.まとめ

 

 

 

1.Pythonフレームワークとは?


Pythonフレームワークとは、Pythonを使用して機械学習・ディープラーニングなどのAI(人工知能)やWebアプリケーション開発する際の土台として機能するソフトウェアのことを指します。つまり、共通するコード(それぞれのプログラミング言語)に機能性を加えて形成された骨組み、枠組みです。
特に機械学習・ディープラーニングなどのAI(人工知能)やWebアプリケーションなどを開発する際、膨大な量のプログラムを書かなくてはなりません。しかし、フレームワークを使用することで、プログラムの記述量を大幅に削減し、工数をさげる事が可能です。経験が浅いエンジニアでもセキュリティが担保されたプログラムを作成する事ができます。

 

 

 

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


フレームワークとライブラリの簡単に違いについてお伝え致します。

・フレームワーク
フレームワークは、プログラミングにおいて、特定のオペレーティングシステムのためのアプリケーションの標準構造を実装するのに使われるクラスやライブラリの集まりを指します。つまり、汎用的に必要なものをまとめている枠組みや骨組みのことです。

 

・ライブラリ
ライブラリは、汎用性の高い複数のプログラムを一つにまとめたもののことを指します。つまり、クラスや関数といったパーツのまとまりで提供されるソースコードの部品のことです。

 

 

 

3.Pythonフレームワークを利用するメリット・デメリット


Pythonフレームワークを利用するメリット・デメリットについてお伝えいたします。

 

メリット

・作業効率の改善
フレームワークを使用して開発をすることは作業効率の向上に繋がります。
フレームワークは、原形で利用できるテンプレート、再利用可能なクラス、ライブラリ、API等で構成されています。多くの人が利用して信頼できるフレームワークを導入することで、大部分のコーディングは用意する必要がなくなる為、作業効率の改善に繋がります。
さらに機能やデザインのカスタマイズも簡単に出来るため、短時間で高品質なアプリケーションを開発することが可能です。

 

・コードの統一性を保持

チームで開発を行う際、フレームワークを使用するとコードの統一性を保持出来るというメリットがあります。特にコーディングなどの技術力はフリーランスエンジニア毎で異なるため、コードに統一性が無くなり、結果として作業効率や開発スピードは落ちることが多いです。フレームワークという共通ルールを使うことにより、フリーランスエンジニア毎のコーディングの違いを減らします。

 

・バグの減少
フレームワークなしでコーディングをすると多くの箇所でバグが発生する可能性が高まります。
これは単純に開発の力量が足りなかったこともあり得ますが、フレークワークを使用することで自力で書く際よりもバグが出にくくなる傾向にあります。

 

 

デメリット

・ある程度の学習時間が必要
Python自体の学習の他にPythonフレームワークの学習にも時間を使わなければいけないことが挙げられます。知識の素早いキャッチアップが必要になります。また、ドキュメントは英語で作成されていることや市場規模が小さいPythonフレームワークは情報があまりないことなども有り得ます。

 

・費用がかかるフレームワークがある
Pythonフレームワークには無料で利用できるものもありますが、費用がかかるものもあります。事前にしっかりと調べてから、Pythonフレームワーク学習をしましょう。

 

 

 

4.Pythonフレームワークの市場動向


Pythonは技術としても安定しており、年々開発エンジニア人口が増加しているため、開発言語同様Pythonフレームワークのニーズも高まっていくでしょう。
2030年までに、IoTやAI(人工知能)などの最先端技術を担うITエンジニア人材は55万人不足する見込みがあります。
特にTensorflow・Keras・Pytorchの機械学習・ディープラーニングフレームワークを使った開発は今後拡大する可能性が高いでしょう。
ただ、フレームワークは流行り廃りがあり、現在も新しいものがどんどん開発されています。そのため、常に最新の市場動向を確認して、知識をアップデートし続けましょう。

 

 

 

5.おすすめのPythonフレームワーク5選


PythonはWebアプリケーションから機械学習・ディープラーニングなどのAI(人工知能)まで近年、注目されている開発言語です。また、YouTube・Dropbox・Reddit・Instagramなど数多くのサービスでPythonを使用して開発をしており、求人・案件数も年々増加傾向にあります。そのため、機能が豊富なフレームワークから軽量化を目指したフレームワークまで、様々なものが使われています。
この章では、Python開発の際によく使用されるPythonフレームワーク5選をご紹介します。
フリーランスエンジニアの方は、ぜひ興味のあるPythonフレームワークを見てみてください。

 

・Django

Djangoは、2005年に公開されたWeb開発用のオープンソースフレームワークです。PythonのWebフレームワークの中では、最も人気の高いフレームワークです。大規模のWebアプリケーション開発に適しています。また、Python求人・案件等で開発経験として要求されることが多いPythonフレームワークです。Djangoはサイトマップ・ユーザー認証・RSSフィードなどのWebの機能あり、Webシステム開発が簡単になるように工夫されていることが特長です。
DjangoはInstagram・Pinterestの有名なWebアプリでも使用されています。

 

 

・bottle

bottleは、非常にシンプルに作られたWeb用Pythonフレームワークです。WSGI(Web Server Gateway Interface)であるということが特長です。WSGIとは、PythonでWebサーバーとWebアプリケーションを接続するためのインタフェースを定義することを指します。
簡単な仕組みを理解するだけで使いこなせるため、bottleはPythonフレームワークを初めて学習される方はオススメです。小・中規模のWebアプリケーション開発に適しています。

 


・Flask

Flaskは、bottleと同様WSGIでWebアプリケーションを開発するPythonフレームワークです。マイクロWebフレームワークと呼ばれることもあり、Webフレームワークで軽量で機能が最小限しか備わっていないということが特長です。Flaskで実装したアプリケーションはWSGI対応のHTTPサーバーで簡単に動かすことができます。
なお、小・中規模のWebアプリケーション開発に適しています。

 


・Tornado

Tornadoは、FriendFeedが開発したWeb用Pythonフレームワークです。他のWeb用Pythonフレームワークとは異なり、時間がかかるIO処理を後回しにして、先にリクエスト処理を受け付けることができる、機能があることが特長です。
なお、2009年にFriendFeedはFacebookに買収されています。

 

 

・Plone

PloneはオープンソースのWebアプリケーション用Pythonフレームワークです。Ploneは必要な機能をすべて備えたオールインワンのパッケージであることが特長です。そのため、データベース・WebサーバはPloneに備えられており,ApacheやMySQLをインストールする必要はないです。
Ploneは、企業向けのCMS(Content Management System)の作成で主に活用されています。

 

 

 

6.機械学習・ディープラーニングフレームワーク3選


現在、機械学習・ディープラーニング開発が増えています。今後、AI(人工知能)関連開発に携わる時に経験としてあると良い機械学習・ディープラーニングフレームワークを3つお伝え致します。
機械学習・ディープラーニングなどのAI(人工知能)エンジニアや興味があるエンジニアなどは詳細をぜひご覧ください。

 

・Tensorflow

Tensorflowは、Googleが開発しオープンソースで公開している機械学習やディープラーニングに対応したフレームワークです。元々はテンソル計算を扱うために開発されたライブラリですので、計算処理が可能であることやニューラルネットに関する関数が豊富なフレームワークです。
AI(人工知能や)機械学習の分野は発展途上ですので、TensorFlowを活用したサービスが増加することが見込まれます。その他、GoogleのOSS(オープンソフトウェアライブラリ)ということもあり、公開されてから数ヶ月でユーザー数が激増したことでも有名です。

 

 

・Keras

Kerasは、TensorFlowやTheano上で動くニューラルネットワークライブラリです。ニューラルネットワークライブラリは、機械学習・ディープラーニングなどの実装をサポートするソフトウェア群のことです。Kerasは、エンジニア初心者でも実装可能なほどわかりやすく作られているため、機械学習・ディープラーニングを学習し始めるエンジニアの方には、非常に優秀なPythonフレームワークです。

 

 

・Pytorch

Pytorchは、Facebookが主導して開発されたディープラーニングフレームワークです。Pytorchは、非常に柔軟なニューラルネットワークの記述が可能でディープラーニングライブラリの中でも大変人気があります。利用者のコミュニティも年々拡大傾向にあるため、他の研究者が記述した実装を探しやすいことが魅力です。

 

 

 

7.Pythonフレームワークの求人・案件数


実際にPythonフレームワーク求人・案件数はフリーランスエージェント毎でどのぐらい公開されているのかを見ていきたいと思います。
フリーランスエージェント各社に公開されているPythonフレームワーク求人・案件数をお伝え致します。(2019年5月時点)

 

Pythonフレームワーク案件数
Pythonフレームワーク案件数


Pythonフレームワーク求人・案件はDjangoが185件、Flaskが61件、Tensorflowが49件、Kerasが14件、Tornadoが10件、bottleとPytorchが1件です。

Python求人・案件では、DjangoとFlaskを使用することが多い事がわかります。Pythonエンジニアや今後Pythonの学習を検討している方は、DjangoとFlaskも同時に学習することをおすすめします。
近年は、機械学習やディープラーニングなどの開発案件も多く見られるため、TensorflowやKerasも学習すると良いでしょう。
また、フリーランスエージェント各社は公開中のPythonフレームワーク求人・案件の他に、非公開求人・案件も多く保有しています。
非公開案件はまだインターネットには出回らない優良なPythonフレームワークを使う求人や案件が多いため、複数フリーランスエージェントに登録し、定期的に非公開のPythonフレームワークを使う求人や案件情報を取得しましょう。

 

 

 

8.Pythonフレームワークのトレンド


Googleトレンドを使い、どのPythonフレームワークが頻繁に検索をされているのかを調べました。

 

Pythonフレームワークのgoogleトレンド
Pythonフレームワークのgoogleトレンド

 

結果は、Django・Tensorflow・Keras・Flask・Tornadoの順です。Pythonフレームワークで、Djangoがトップですが、近年、Tensorflow・Kerasなどの機械学習開発で使用するPythonフレームワークも非常に注目されていることがわかります。
Django・Tensorflow・Keras以外では、Flask・Tornadoが少し上昇を見せています。このことより、将来的にTensorflow・Keras・Flask・TornadoのPythonフレームワークも、学習を積極的に行うなど、知識を蓄えておくことをオススメします。

 

 

 

9.まとめ


今回はPythonのフレームワーク概要の説明からオススメのPythonフレームワークまでご紹介させていただきました。
作業効率よく開発を行うにはフレームワークを使って開発することが良いでしょう。
Pythonフレームワークは現在、Djangoが有名ですが、Tensorflow・Kerasなども近年注目されています。しかし、フレームワーク・ライブラリは流行り廃りがあり、現在も新しいものが日々開発されています。常にPythonや周辺知識に関する最新情報を確認し、アップデートすると良いでしょう。
開発規模や環境・分野を考慮した上で、慎重に選択することをおすすめします。

本記事が皆様にとって少しでも役に立てれば幸いです。