ゼロからFlaskがよくわかる本
PythonのWebアプリケーションフレームワークFlaskの解説書。
尚、Pythonは下記のような特徴があります。
- コードを簡潔に書ける。
- スクリプト言語であり、取っ付きやすい。
- データ分析の分野を中心に世界的に広く使用されており、下記のようにライブラリが豊富。
- 数値計算・信号処理・統計処理・科学技術計算。
- 画像・音声・動画処理。
- スクレイピング・クローリング・自然言語処理。
- ウェブ開発・サーバー・フレームワーク。
- etc…。
このように『機械学習』や『AI』『データ分析』など様々な分野で活用されているPython。
主にバックエンドに強みを持ちますが、
合わせてフロントエンドもまるっと実装できれば便利という事で(?)フレームワークが開発されています。
主なフレームワークとしては、Flask(フラスク)とDjango(ジャンゴ)があります。
- Flaskの特徴は、その軽量さと導入のしやすさです。
Djangoほど様々な機能に対応している訳ではなく、その分処理も軽量で早いです。必要に応じて自分で拡張していく事ができます。
主に小〜中規模開発向きです。
- Djangoの特徴は、WEBアプリケーションの開発に関しフルスタックに対応している事です。
『ユーザー認証』『管理画面』『サイトの案内ページ』『RSSフィード』などの機能は予め盛り込まれています。
主に中〜大規模開発向きです。
今回は仕事でFlaskを使い始めたので、まず本書籍でFlaskの学習をしました。
書き方の癖さえ覚えれば、これまで自分がやってきたようなPHPのCodeIgniterと変わりません。
FlaskやDjangoでは『MVTモデル』と言って、『Models・Views・Templates』にプログラムを分割して記述していきますが、
これはよく採用されている『MVCモデル』『Models・Views・Controllers』に分割して記述する方法と同じような考え方です。
前者では、Viewsが全体のコントローラーの役割を果たし、
Modelsからデータの受け渡し・Templatesのビュー呼び出しを行ないます。
後者では、Controllersが全体のコントローラーの役割を果たし、
Modelsからデータの受け渡し・Viewsのビュー呼び出しを行ないます。
つまり、MVCモデルに馴染みがある人はMVTモデルもすんなり理解できると思います。
PHPとかとちょっと違うのは、PHPの場合はHTMLファイルの中に<?= ~処理; ?>と書けば任意の処理を書けますが、
こちらは飽くまでHTMLファイルで表示できるのは、Viewsから受け渡した値や処理だけです。
詳しくは下記をご覧ください。(Djangoの説明ですが、Flaskも同じです。)
Django テンプレート言語
設計哲学
プログラミングの知識があったり、 PHP のようなプログラムコードを直接 HTML に混ぜ込む言語を使ったことがあるなら、 Django のテンプレートシステ ムが単に HTML に Python を埋め込んだものでないことに疑問を持つでしょう。 しかし、これは設計上意図して決まっていることです。テンプレートシステム はプレゼンテーション層を表現するためのもので、プログラムロジックではな いのです。
Django のテンプレートシステムは、プログラムの構成部品に似たタグ、例えば ブールテストのための {% if %} タグやループ処理のための {% for %} タグを備えています。しかし、これらのタグは単に同じ意味の Python コードとして実行されるのではなく、テンプレートシステムは Python の式を解釈実行したりはしません。テンプレートシステムがサポートしている のは、以下で定義されているデフォルトのタグ、フィルタおよびその構文だけ です (もちろん、必要に応じてテンプレート言語を 拡張する のは可能です)。
http://djangoproject.jp/doc/ja/1.0/topics/templates.html
以上、まぁWEBアプリケーションフレームワークはスクリプト言語ならそれぞれ使いやすい物が用意されているし、
慣れてしまえば基本は一緒なので、後はどの言語をどう使っていきたいかで選ぶのが良いのではないでしょうか。
もちろん仕事環境によって様々なケースが有り得るので、エンジニアとしては下記を心掛けていければ良さそうな気がします。
- 普段は得意な(または馴染みのある)言語・フレームワークを中心にして、開発スキルを高める。
- よく使われる言語は基本を押さえておき、適宜活用する。
後はスクリプト言語のフレームワークは基本が共通するところも多いので、
仕事上でどの言語のどのフレームワークを使うことになっても、およそ問題ないと思います。
(自分はこれまで、Ruby + Rails・PHP + CodeIgniter・Python + Flask を使用してきたので、その雑感です。)
まとめますと、Flaskを使用する事の最大のメリットとしてはデータ分析などの分野で強みを持つPythonを使用しながら、
まるっと簡易的に画面側まで作成できる事でしょう。
https://www.amazon.co.jp/ゼロからFlaskがよくわかる本-本田崇智-ebook/dp/B07F2X9GRQ