Web

Flask(Python)

投稿日:2021年10月8日 更新日:

WebアプリケーションをPythonを使って手軽に開発できるマイクロフレームワークがFlaskです。
Webアプリケーション開発と言えばPHPがありますが、Flaskの最大の特徴は、プログラミング言語の主流になりつつあるPythonを使えることです。

■ Flaskの構造と機能

Flaskは、既存のプログラミング言語であるPythonを使ってWebアプリケーションを開発するための拡張モジュールです。Pythonは、スクリプト言語です。従来から、情報数理など学術的分野に関するプログラミングのために使われてきました。Pythonは習得するのが比較的容易であり、RDBMSやメールサーバとの連携機能なども豊富で、汎用的なWebアプリケーションを作成するにも適しています。

Flaskを使うことで、Pythonへ以下の機能拡張を行うことができます。

①HTTPリクエスト・レスポンス連結機能
 受信したHTTPリクエストを配列でアクセスすることができます。
 HTTPレスポンスを送信する関数を呼ぶだけで、処理した結果のHTMLを、
 HTTPリクエストを送信した相手に返却できます。
    
②HTMLとの連結機能
 Jinja2というHTMLテンプレートエンジンによって、処理した結果のHTMLをテンプレート(ひな形)を使って生成することができます。 
 テンプレートにHTMLのフォーマットを記載しておき、その中で処理結果に従って変わる箇所を定義します。
 そして、処理結果とテンプレートを関数に引き渡すことで、最終的なHTMLを生成できます。


Flaskは、MVC(Model、View、Control)モデルに従ったフレームワークとして、使うことができます。
ただし、MVCの機能にガチガチに分けられた構造ではなく、HTMLを扱うViewの部分だけがJinja2というHTMLテンプレートエンジンとして機能的に分離されていて、他のModelとControlの機能は、普通のPythonのプログラムとして記述できます。
そのため、HTTPの結果をJsonやXMLなどの形式で返却することが容易にでき、マイクロサービスの開発にも向きます。

特徴的なのは、Flask自体もWebサーバ機能を持ち、ApacheなどのWebサーバが無くても、HTTP/HTTPSによってブラウザからアクセスすることができます。ただし、デバックなどで使う目的のWebサーバ機能であり、本格的にサービスを提供するには、Apacheなどの専用のWebサーバとFlaskをWSGIというインターフェース定義を使って連結し、サービスを提供する必要があります。

■ PHPとの違い

Webアプリケーションを作るプログラミングの代表格と言えば、スクリプト言語のPHPです。

PHPは、WebサーバのApacheに組み込んで使うことを想定されたプログラミング言語です。Webサーバ内のHTMLを動的に作成できるようにするWebアプリケーション専用のプログラミング言語です。

特に、Webアプリケーションからデータベースにアクセスするために、PHPを使うと言っていいぐらいRDBMSとの接続性を備えています。オープンソースのMySQL、RDBMS、商用のSQLServer、Oracleなど、どれも同じように接続できます。

PHPは、HTMLの記述の中に直接、PHPのコードを書いていくようなプログラミングとなります。
ブラウザからのHTTPリクエストを受け取り、データベースを検索した結果に変換したり、データベースに登録するなどの処理を記載していきます。どうしてもHTMLをベタに作成するようなプログラミングとなってしまいます。

Webアプリケーションの構造としては、MVCモデルに従うことが推奨されています。こうすることで、プログラム構造を機能別に決めることができ、コードを見やすくし保守性を確保できるだけでなく、機能別に分けることで品質を確保できます。
現在では、PHPでも、MVCモデルに従ったフレームワーク(枠組み)を提供する「Laravel」などがあります。


Pythonが優位なのは、機械学習などAIやデータ分析のプログラミングが可能なことです。そのため、ビックデータの解析やAIを駆使したWebアプリケーションを作成することが可能です。

今後のトレンドを考えると、Websサービスが、データ分析・AIとの連携が多くなることが目に見えていますし、マイクロサービス化の流れも進展していくでしょう。
Flaskは、それらに対して親和性が高く、採用される数も増えていくのではないかと考えています。

-Web

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

GCPでのWebサービスの作り方(Python、Flask、MYSQL、Mail、Apache) 1/2

GCP(Google Cloud Platform)上で、Webサービスを立ち上げるポイントを整理します。オンプレミス(自前でネインターネット接続環境やサーバを調達してシステムを構築)でWebサービス …

GCPでのWebサービスの作り方(Python、Flask、MYSQL、Mail、Apache) 2/2

以下からの続きとなります。GCPでのWebサービスの作り方(Python、Flask、MYSQL、Mail、Apache) 1/2 – DXインテリジェンス (itresourcetech.net) …

Zoom REST API

リモート会議を開催するとき、アプリケーションのZoomを使われてる人も多いと思います。Zoomには、Pythonによってプログラミング可能なWeb-APIであるREST APIが用意されています。この …

続スクレイピング

seleniumライブラリを使ったスクレイピングについて、解説します。サイトには、ブラウザとセッションを管理するものもあり、セッションがないとアクセスできないようにしているサイトもあります。セッション …

スクレイピング

インターネットにあるWebサイトのHTMLデータの中から、必要なデータを自動的に取得することをスクレイピングといいます。Googleなどの検索エンジンがインデックスを作成するために、自動でWebサイト …