FlaskでササっとWebアプリケーション作成 〜基礎編①
1. Flaskを手を動かして学ぶ
今回から、PythonベースのWebアプリケーション作成のフレームワークであるFlaskです。
僕はプログラミング学習の初期に学ぼうと思いましたが、当時はクライアントサーバシステムやら3層スキーマやら、いわゆるWebアプリケーションの知識が全くなかったのと、Pythonも駆け出しレベルだったので断念しました。
Djangoと比べてどれくらい簡易にできるのか、その辺を手を動かしながら学びたいと思いますし、興味があったらお付き合いいただければと思います。
2.仮想環境作成とFlaskのインストール
まずは、Flaskのドキュメントを見てインストールの仕方を確認します。
(1)ドキュメントを確認してみる
ざっくりいうと、関連する必要なパッケージたちはFlaskをインストールしようとすると一緒にインストールされるということのようです。
アプリとサーバ間のインターフェースや、Webページ表示のためのテンプレート言語、セキュリティ関連のツールなどのようです。
(2)仮想環境を作成する
上記ページはvenvを利用とあるのですが、私はM1 Macでminiforgeを利用しているのでcondaコマンドで諸々やります。
※Anacondaを何も考えずに入れてしまうと、後々後悔することもあるので自分はこうしました。
conda create -n flask_test python=3.8
先ほどのFlaskのドキュメントに、Pythonのバージョン3.7以降はサポートされていると記載があったので、なんとなく3.8で行こうと思います。
conda activate flask_test
conda install flask
作成したflask_testという仮想環境をアクティブにして、flaskをインストールします。
Channels:
- conda-forge
Platform: osx-arm64
Collecting package metadata (repodata.json): done
Solving environment: done
## Package Plan ##
environment location: /opt/homebrew/Caskroom/miniforge/base/envs/flask_test
added / updated specs:
- flask
The following packages will be downloaded:
package | build
---------------------------|-----------------
blinker-1.7.0 | pyhd8ed1ab_0 17 KB conda-forge
flask-3.0.2 | pyhd8ed1ab_0 79 KB conda-forge
itsdangerous-2.1.2 | pyhd8ed1ab_0 16 KB conda-forge
markupsafe-2.1.5 | py38h336bac9_0 23 KB conda-forge
python_abi-3.8 | 4_cp38 6 KB conda-forge
werkzeug-3.0.1 | pyhd8ed1ab_0 236 KB conda-forge
------------------------------------------------------------
Total: 378 KB
The following NEW packages will be INSTALLED:
blinker conda-forge/noarch::blinker-1.7.0-pyhd8ed1ab_0
click conda-forge/noarch::click-8.1.7-unix_pyh707e725_0
flask conda-forge/noarch::flask-3.0.2-pyhd8ed1ab_0
importlib-metadata conda-forge/noarch::importlib-metadata-7.0.2-pyha770c72_0
itsdangerous conda-forge/noarch::itsdangerous-2.1.2-pyhd8ed1ab_0
jinja2 conda-forge/noarch::jinja2-3.1.3-pyhd8ed1ab_0
markupsafe conda-forge/osx-arm64::markupsafe-2.1.5-py38h336bac9_0
python_abi conda-forge/osx-arm64::python_abi-3.8-4_cp38
werkzeug conda-forge/noarch::werkzeug-3.0.1-pyhd8ed1ab_0
zipp conda-forge/noarch::zipp-3.17.0-pyhd8ed1ab_0
Proceed ([y]/n)? y
Downloading and Extracting Packages:
Preparing transaction: done
Verifying transaction: done
Executing transaction: done
必要な諸々がインストールできました。
3.いざクイックスタート
こういう時はまず動かしてみるのが一番です。
「これからやってくぞ!」という景気づけと、ざっくりどういう仕組みなのかな?という勉強にもなりますので。
早速やってみましょう。
(1)コードを書いてみる
まずは「hello.py」というファイルを作成します。どこにファイルを作ったかは覚えておいてください。
hello.py
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello_world():
return "<p>Hello, World!</p>"
ドキュメントの解説を見ると、、、
ざっくりいうと、Flaskというクラスのインスタンスを作成して、用意したhello.pyを保有するアプリケーションをルートアドレスで実行させてるって感じだと思います。
WebページへHTMLでHello, World!と表示をさせるという簡単な機能です。
(2)作成したファイルをFlaskで実行してみよう
では、次にこのhello.pyを実行させるには、コマンドラインで以下のように実行します。
flask --app hello run
正常に実行されると、以下のようにコマンドラインに表示されます。
* Serving Flask app 'hello'
* Debug mode: off
WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.
* Running on http://127.0.0.1:5000
Press CTRL+C to quit
「http://127.0.0.1:5000 で動いてるよ、止めたい時はCTRLキーとCを一緒に押してね」ということです。
(3)本当に動いているのか確認してみよう
ではWebブラウザを起動して、上記URLをアドレス欄に入力して確認してみましょう。
4.確かに簡単だ!!そして早い!
Djangoは、単純にこれだけのテンプレートを表示するためにもProjectを作成して、データベース項目を定義して、、、とそれなりの手数がかかることを考えると簡単ですね!!
次回はさらにドキュメントを読み進めてみたいと思います。
この記事が気に入ったらサポートをしてみませんか?