近年、人気のあるプログラミング言語の一つとしてPythonが注目されています。
PythonはWebアプリケーション開発だけでなく、データ解析や人工知能(AI)開発が可能な言語です。
使用者が多いこともあって、フレームワークも多数存在しています。
そのため、
「Pythonのフレームワークって何があるの?」
「たくさんあってどのフレームワークを使えばいいかわからない…」
といった疑問をお持ちの方もいるでしょう。
そこで、この記事ではPythonのフレームワークについて解説していきます。最後まで読んでいただければ、どのフレームワークを学習すれば良いかわかります!
Pythonについて詳しく知りたい方はこちらの記事を参考にしてください。
>2022年3月版 人気のプログラミング言語ベスト20 第1位:Python | テクフリ
Pythonのフレームワークとは、Pythonを利用して開発をする際に必要な基本機能をまとめたソフトウェアのことです。
フレームワークには、ある程度決まったルールが存在しています。そのため、誰が書いても理解がしやすいという特徴があります。
また、自分で1から書くと数百行必要なコードが、フレームワークを使うと数十行で解決するのも魅力です。
フレームワークと似た言葉としてライブラリがありますが、両者の違いは「制御の反転があるかどうか」によります。
ライブラリの場合、プログラムを動かす主導権はプログラマーが書いたコードにあります。一方で、フレームワークの場合、プログラマーが書いたコードはフレームワークによって制御されるのです。
つまり、ライブラリは主導権がエンジニア側にあり、フレームワークは主導権がフレームワーク側にあると言えます。
Pythonを使う上で、フレームワークを利用することにはいろいろなメリットがあります。ここでは、
・開発スピードが上がる
・コードの統一性を保持(多人数開発にも対応しやすくなる)
・バグの減少
・フリーランスとして仕事が取りやすくなる
という4点のメリットについて紹介していきます。
MVP開発やリーンスタートアップという言葉が注目されているように、IT/Web業界では特に、サービスを高速で市場に投下することが重要です。Pythonのフレームワークを利用するのとしないのでは、開発スピードにかなりの差が生じます。
例えばPythonのフレームワークには、データベースアクセスの機能やログイン機能、フォーム作成機能などが備わっているのですが、それらをフレームワークなしでエラー無く完成させるには、かなりの時間を要してしまうのです。
プログラミングに限らず全ての仕事にいえますが、コードの書き方にはその人の個性やクセがでます。
経験、スキル、年齢、性格、キャリアなど様々な要因によって差が生じるのですが、人が書いたコードを修正するのは、かなり大変な作業です。
フレームワークを利用すれば、コードの統一性を保持させることができます。
統一性を保持することにより、多人数開発にも対応しやすくなります。
Pythonのフレームワークは基本的に大人数のエンジニアに利用されています。そのため、バグはすでに解決されていることが多いです。
それらのバグが少ないフレームワークを利用して開発を進めると、開発をしたプログラムもバグが少なくなる可能性が高まるといえます。
Pythonの中規模、大規模以上案件では、フレームワークが利用されていることがほとんどです。
特にDjango、Flaskの2つは人気のフレームワークとなっており、使えると使えないとでは、Pythonエンジニアとして仕事の獲得しやすさに差が生じるでしょう。
一方で、Pythonフレームワークを使用することのデメリットは次の2点が挙げられます。
・学習期間が必要
・イレギュラーに対応できないことがある
詳しく見ていきましょう。
フレームワークを使いこなすにはPythonの理解がある前提で、最低でも数週間は学習をする必要があります。
概要を抑えることができても、細かい要望を実現しようとすると調査に更に時間がかかることはよくあります。使用者が多くないフレームワークになると、情報量が少なく、調査が難しいこともあるでしょう。
また、ドキュメントは基本的に英語で書かれていることが多いです。
フレームワークはいわゆる「よくある機能」を開発する際には有用です。
しかし、前例が少ない機能を開発したい場合、対応できないことが多々あります。
フレームワークは決められたルールに則ってサービスを開発していかなければならないため、イレギュラーが多発するようなサービスではフレームワークを利用しないほうが作りやすいことがあるのです。
ここからは、人気のフレームワークや、目的によって有用なPythonフレームワークについて解説していきます。
Djangoは2005年にリリースされたフレームワークで、ワシントンポストやNASAで利用されています。
Webアプリケーション開発に利用されている、多機能フレームワークです。
Pythonのフレームワークの中でもトップレベルで人気度が高く、学習しておけば間違いないと言えます。
分からないことがあっても利用者が多いため、調べれば解決方法が見つかりやすいことも初心者にやさしい点です。
Flaskは2010年にリリースされたフレームワークです。
Flaskの大きな特徴は、最低限の機能のみをまとめたフレームワークであるということです。多機能なDjangoとは正反対の性能をしています。
一見すると、ただDjangoに性能で劣っているように見えますが、コンパクトにまとめられているので分かりやすく、処理が軽いという利点を持っています。
また、フレームワークが完成形に近くないため、他のフレームワークに比べて自由がきくのも人気の理由です。
しかし、機能が少ないので、必要なものは自分で用意しなければならないという見方もでき、開発工数がかかってしまう点には注意が必要です。
Bottleは2009年にリリースされたWebアプリケーションフレームワークです。
前述のFlaskよりもさらにシンプルであり、Bottleはなんと一つのファイルで構成されています。
シンプルすぎるため複雑なアプリケーション開発には不向きですが、学習コストはとても低いので、小規模な開発などに使われています。
Tornadoは2009年にリリースされたWebアプリケーションフレームワークです。
Tornadoの特徴は、非同期フレームワークがある点です。処理の際にI/O処理(入出力処理)を後回しにすることで、同時に多数の処理をすることが可能になっています。
長時間の接続が必要とされる、ユーザー向けのアプリケーション開発をする方に向いているフレームワークです。
Pyramidは、小規模から大規模開発を満遍なくカバーしているフレームワークです。
コンパクトさを持ちながらも、さまざまなモジュールを組み合わせることで、大規模開発にも対応できるようになっています。
ここまでフレームワークの解説をしてきました。
では実際の単価や案件数はどのようになっているのでしょうか?
テクフリに掲載されている案件を参考に以下にまとめました。
弊社調べによると、Pythonフレームワークの平均単価は72万円です。
単価の幅は下限で70万円、上限で75万円となっています。
Pythonフレームワークの案件数、記事数などを下記のようにまとめました。
Pythonのフリーランスエンジニアとして案件を受注したいのであれば、2022年9月時点では、選ぶべきPythonフレームワークはDjangoもしくはFlaskであるといえます。
フレームワーク | テクフリ案件数 | Qiitaの記事数 | stackoverflowでの質問数 |
Django | 68 | 7528 | 249 |
Flask | 26 | 4033 | 165 |
Bottle | 1 | 1374 | 37 |
Tornado | 0 | 411 | 11 |
Pyramid | 1 | 384 | 3 |
フレームワーク | Django |
案件名 | Java/React/JavaScript/Python/テスト自動化のスクリプト開発(組込み機器) |
月額単価 | 〜830,000円/月 |
最寄駅 | 品川駅 |
業務内容 |
テスト自動化のスクリプト開発(組込み機器)をお願いいたします。 JavaScript/PythonもしくはJavaによる大規模開発経験若しくはReactを使用したモバイルアプリの開発経験がある方を募集します。 |
基本スキル |
・JavaScript/PythonもしくはJavaによる大規模開発経験 - Webアプリにおけるフロントエンドのクライアント側開発3年以上(ただし、集計や業務効率化のためのTool開発経験を除く) ・Android/iOS アプリ開発経験 - React Native(モバイルアプリケーション用フレームワーク)を使用した開発3年以上 |
フレームワーク | Django,Flask |
案件名 | AWS/GCP/データエンジニア/事業拡大のためのデータ分析 |
月額単価 | 〜880,000円/月 |
最寄駅 | 五反田駅 |
業務内容 | ▼主な業務内容(下記業務内容の中からご対応いただけるものをお願いします)
– GCP上でBigQueryを用いたビッグデータ分析基盤の開発 – 事業のDX化に伴うインフラ開発 – 既存システムの運用/開発 – 将来的にはWebサービスやアプリケーションなど新規事業の開発可能性もあります。 |
基本スキル | ・AWS又はGCPを利用したインフラ上での開発経験
・データベース設計経験 |
この記事では、Pythonのフレームワークについて解説してきました。
Pythonがプログラミング言語の中で人気を獲得していく以上、フレームワークの必要性も同時にあがってきます。
適切なフレームワークを採用することで、作業効率を上げて、良い開発ライフを送りましょう!