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は、それらに対して親和性が高く、採用される数も増えていくのではないかと考えています。
また、Pyrhonを使ったWeb開発には、Flaskの他にも「Django」が有名です。
Djangoのほうが機能が多く、例えば、ログイン機能をわざわざ作り込まなくても、Djangoで用意されているログイン機能を使うことができます。
しかし、その分、アプリケーションによっては、使わない余分な機能も含まれることになりますし、Djangoというフレームワークの環境に、実装が大きく依存し、プログラミングの自由度化が低下します。
そいう意味では、REST APIのように画面の必要ないWeb-APIを開発する場合などは、Flaskのほうが他との連動など自由度が高く、手軽に使うことができます。
ソフトウェア開発・システム開発業務/セキュリティ関連業務/ネットワーク関連業務/最新技術に関する業務など、「学習力×発想力×達成力×熱意」で技術開発の実現をサポート。お気軽にお問合せ下さい
Good post but I was wanting to know if you could write a litte more on this topic?
I’d be very grateful if you could elaborate a little bit more.
Thanks!