[Python]フレームワークの基本|アプリ開発のために必要なフレームワーク7選
![[Python]フレームワークの基本|アプリ開発のために必要なフレームワーク7選](/dotnet/column/wp-content/uploads/2020/04/63a09dbe-3451-41bb-b216-e2f1a3b42068.jpg)
- システム
エンジニア - アプリケーション開発にとってフレームワークとはどのような役割をするのですか。
- プロジェクト
マネージャー - アプリケーション開発でフレームワークは土台となり、効率的な開発をすることができるものです。そこで今回は、プログラミング言語Pythonのフレームワークについて紹介しましょう。
Pythonのフレームワークとは?
フレームワークとは、アプリケーション開発の土台となるプログラムのことです。アプリケーション開発によく使われる機能や、制御構造がフレームワークとしてまとめられています。
アプリケーション開発を進める際は、このフレームワーク上に必要なプログラムを追加することで効率的な開発が可能になります。
そしてPythonは「Webアプリケーション開発」「科学技術計算」「データサイエンス(ディープラーニング・機械学習など)」に使用されるプログラミング言語であり、フレームワークもこれらの目的に応じたものが多く提供されています。
この記事では、Pythonの「Webアプリケーションフレームワーク」と「機械学習・ディープラーニングフレームワーク」に注目してご紹介します。
Webアプリケーションフレームワーク4選
Webアプリケーションフレームワークとは、開発者がプロトコル、ソケット通信、プロセス・スレッド管理などの処理を記述することなく、Webアプリケーションを開発できるようにするプログラムのことです。
このWebアプリケーションフレームワークから、4つを選んでご紹介します。
Django
DjangoはWebアプリケーション開発に必要な機能が一つにまとめられているフルスタックなPythonフレームワークです。
Djangoは、Webアプリケーションフレームワークのコンセプト設計から起動までの開発をできるだけ早く行えるように設計されています。
またDjangoには、ユーザー認証・コンテンツ管理・サイトマップ・RSSフィードなど、一般的なWebアプリケーション開発に必要とされる機能が含まれています。
セキュリティに関しても、SQLインジェクション・クロスサイトスクリプティング・クロスサイトリクエストフォージェリ・クリックジャッキングなどを防ぐためのサポートがあります。
加えてスケーラビリティが高く、コンテンツ管理システム・ソーシャルネットワークサービス・科学計算のためのプラットフォームなど、様々な種類のアプリケーションがDjangoにより構築されてきました。
Instagram、Pinterest、National Geographicといった企業が、Webアプリケーション開発にDjangoを使用しています。
web2py
web2pyはセキュアなデータベース駆動型のWebアプリケーションをアジャイルで開発するためのPythonフレームワークです。
web2pyは、Webアプリケーション開発がMVC(モデル・ビュー・コントローラ)モデルに基づくように設定されており、3つの構成に対してそれぞれ設計・実装・テストできるようなライブラリを提供しています。
またWeb2pyには、セキュリティに関し、クロスサイトスクリプティングやディレクトリトラバーサルなどを防ぐためのサポートがあります。
そしてweb2pyには、SQLを動的に作成するデータベース抽象化レイヤ(DAL)が含まれています。これにより、開発者がSQLを記述する必要がなくなります。
DALは、SQLite・MySQL・PostgreSQL・MSSQL・Firebird・Oracle・IBM DB2・Informix・Ingresについて、それぞれのデータベースに依存しないSQLを生成することが可能です。
Flask
Flaskは、シンプルであり拡張可能なフレームワークです。
Flaskには規定のデータベースなどが設定されていないため、どのテンプレートエンジンを使用するかは開発者が決定できます。
デフォルトのFlaskには、データベース抽象化レイヤー・フォーム検証・またはそれを処理するライブラリなどは含まれていません。その代わりとしてFlaskは、上記の機能をアプリケーションに追加する拡張機能をサポートしています。
拡張機能としては、データベース統合・フォーム検証・アップロード処理・様々なオープン認証のシステムなどが提供されています。
CherryPy
CherryPyは、オブジェクト指向のPythonフレームワークです。
CherryPyを使用すると、開発者はオブジェクト指向のPythonプログラムを開発するのとほぼ同じ方法でWebアプリケーションを開発できます。
このCherryPyはリリースから現在10年以上経過しており、非常に高速で安定していることが証明されています。
またCherryPyはWebサーバーとして動作することもでき、WSGI環境であれば外部から起動することが可能です。加えて、一度に複数のHTTPサーバーを実行することができます。
CherryPyは一般的に、フロントエンドを備えた通常のWebアプリケーション(ブログ・CMS・ポータルサイト・eコマースなど)に使用されます。
機械学習・ディープラーニングフレームワーク3選
機械学習とは、大量のデータからパターンやルールなどを学習し、与えられた課題に対して推論や回答、情報の合成などを行うプログラムのことです。
ディープラーニング(深層学習)は機械学習の手法の1つであり、人間の神経回路を模したニューラルネットワークで深い階層のモデルを構築することで、データに含まれる特徴を段階的に学習していくことが可能になります。
それでは機械学習・ディープラーニングフレームワークから、3つを選んで紹介します。
TensorFlow
TensorFlowは、Googleが開発した、機械学習未経験者でも簡単に機械学習モデルを構築してデプロイできるエンドツーエンドのPythonフレームワークです。
使用する言語を問わず、クラウド・オンプレミス・ブラウザ、またはデバイス上で、機械学習モデルのトレーニングとデプロイを簡単に行うことが可能です。
また、機械学習モデルの構築が簡単に行えます。Kerasなどの直感的な高レベルAPIを使用してデバッグできるため、機械学習モデルの構築とトレーニングを簡単に行うことができます。
TensorFlowは、Googleの音声検索・言語翻訳・画像検索や、検索エンジンのアルゴリズムの一つであるRankBrainに使用されています。
その他にも、監視カメラを使った顔認識システムや自動運転分野で使用されています。
PyTorch
PyTorchは、Torchをベースに開発された機械学習ライブラリで、エンドツーエンドのディープラーニング向けPythonフレームワークです。
数値計算ライブラリであるNumpyと操作方法が類似しているため、Numpyと同じ感覚でPytorchの操作をすることができます。また、PyTorchは簡潔な記述と、ニューラルネットワーク構築時の動的な計算グラフが特徴です。
動的に計算グラフを構築することで、柔軟かつ複雑なネットワークを実装しやすいメリットがあります。しかし、状況に応じては学習速度が落ちるデメリットもあります。
Caffe
Caffeは、画像認識に特化したPythonフレームワークです。
Caffeの特徴は、C++で実装されていてGPU対応のため、高速な計算処理が可能なことにあります。例として、Caffeは単一のNVIDIA K40 GPUで1日あたり約6,000万を超える画像を処理できます。
また、学習済みの機械学習モデルがModel Zooに多数公開されています。
- システム
エンジニア - フレームワークにもいろいろなタイプがあるのですね。
- プロジェクト
マネージャー - そうです。ご自身の開発目的に合わせてフレームワークを選んでください。
開発目的に合わせたフレームワークを選択しよう
以上、Pythonフレームワークから7つ紹介しました。
この記事で紹介したフレームワーク以外にも、便利なPythonフレームワークが多数提供されています。
自身が開発したいアプリケーションに合わせて、最適なフレームワークを選びましょう。
FEnet.NETナビ・.NETコラムは株式会社オープンアップシステムが運営しています。
株式会社オープンアップシステムはこんな会社です
秋葉原オフィスには株式会社オープンアップシステムをはじめグループのIT企業が集結!
数多くのエンジニアが集まります。

-
スマホアプリから業務系システムまで
スマホアプリから業務系システムまで開発案件多数。システムエンジニア・プログラマーとしての多彩なキャリアパスがあります。
-
充実した研修制度
毎年、IT技術のトレンドや社員の要望に合わせて、カリキュラムを刷新し展開しています。社内講師の丁寧なサポートを受けながら、自分のペースで学ぶことができます。
-
資格取得を応援
スキルアップしたい社員を応援するために資格取得一時金制度を設けています。受験料(実費)と合わせて資格レベルに合わせた最大10万円の一時金も支給しています。
-
東証プライム上場企業グループ
オープンアップシステムは東証プライム上場「株式会社オープンアップグループ」のグループ企業です。
安定した経営基盤とグループ間のスムーズな連携でコロナ禍でも安定した雇用を実現させています。
株式会社オープンアップシステムに興味を持った方へ
株式会社オープンアップシステムでは、開発系エンジニア・プログラマを募集しています。
年収をアップしたい!スキルアップしたい!大手の上流案件にチャレンジしたい!
まずは話だけでも聞いてみたい場合もOK。お気軽にご登録ください。


Python新着案件New Job
-
マルチロガーソフト開発/東京都豊島区/【WEB面談可/C#経験者/20代後半~40代の方活躍中/経験年数不問】/在宅勤務
月給41万~50万円東京都豊島区(池袋駅) -
マルチロガーソフト開発/東京都豊島区/【WEB面談可/C#経験者/20代前半の方活躍中/経験1年以上の方活躍中】/在宅勤務
月給29万~34万円東京都豊島区(池袋駅) -
商品化予定の振動センサーの運用保守/Python/東京都都内/【WEB面談可】
月給50万~60万円東京都都内(-駅) -
商品化予定の振動センサーの可視化UI開発のテスター/Python/東京都都内/【WEB面談可】
月給25万~35万円東京都都内(-駅) -
商品化予定の振動センサーの運用保守/Python/東京都都内/【WEB面談可】
月給50万~60万円東京都都内(-駅) -
商品化予定の振動センサーの可視化UI開発のテスター/Python/東京都都内/【WEB面談可】
月給25万~35万円東京都都内(-駅)