.net column
.NET開発者のためのブログメディア

[Python]フレームワークの基本|アプリ開発のために必要なフレームワーク7選

2021年08月02日
SE
アプリケーション開発にとってフレームワークとはどのような役割をするのですか。
PM
アプリケーション開発でフレームワークは土台となり、効率的な開発をすることができるものです。そこで今回は、プログラミング言語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に多数公開されています。

SE
フレームワークにもいろいろなタイプがあるのですね。
PM
そうです。ご自身の開発目的に合わせてフレームワークを選んでください。

開発目的に合わせたフレームワークを選択しよう

以上、Pythonフレームワークから7つ紹介しました。

この記事で紹介したフレームワーク以外にも、便利なPythonフレームワークが多数提供されています。

自身が開発したいアプリケーションに合わせて、最適なフレームワークを選びましょう。


.NET分野でのキャリアアップをお考えの方は、現在募集中の求人情報をご覧ください。

また、直接のエントリーも受け付けております。

エントリー(応募フォーム)

Search

Popular

reccomended

Categories

Tags