先日『2万4000超の開発者に聞いたPythonでよく使うフレームワークは?』というニュースがあり、その中で、Web開発で最も使われているフレームワークとして『Flask』が選出されていた。Flaskの使い方はとてもシンプルなので、この機会にFlaskの使い方を簡単に確認しよう。
Flaskのインストール
それでは、pipコマンドを利用してFlaskをインストールしよう。Flaskをインストールするには、コマンドラインから以下のコマンドを実行する。なお、今回は、原稿執筆時点で最新版だった1.1.2を利用する。
$ pip install -U flask===1.1.2
Flaskの基本を確認しよう
FlaskはとてもシンプルなWebアプリケーションフレームワークだ。Flaskを使うと、とても手軽にWebアプリを開発することができる。なお、Flask自体に簡単なWebサーバーの機能が含まれているので、プログラムを実行したらすぐに、Webブラウザで動作確認ができるというのも人気の理由の一つだろう。
以下は、挨拶を表示するだけの最も簡単なFlaskのWebアプリだ。以下のプログラムを「hello.py」という名前で保存しよう。
# 必要なモジュールの取り込み
from flask import Flask
# Flaskオブジェクトの生成 --- (*1)
app = Flask(__name__)
# ルート( / )へアクセスがあった時の処理を記述 --- (*2)
@app.route("/")
def root():
return "Hello"
# サーバーを起動 --- (*3)
if __name__ == "__main__":
app.run(debug=True, port=8888)
プログラムを実行するには、コマンドラインで以下のようにコマンドをタイプしよう。するとWebサーバーが起動する。
python hello.py
次に、Webブラウザを起動して「http://localhost:8888」へアクセスしよう。次のようにHelloとブラウザ画面に表示されるのを確認できる。
プログラムを確認してみよう。FlaskでWebアプリを作成する基本手順は、(*1)の部分で指定しているようにFlaskのオブジェクトを作成し、(*3)の部分のように、runメソッドで実行することだ。
しかし、FlaskでWebサーバーを起動するだけでは意味がないので、サーバー(給仕・奉仕するもの)がどんな仕事をするのかを指定する。それが、(*2)の部分で指定しているものだ。ここでは、サーバーのルート(アドレス "/")に対するアクセスがあったときに、"Hello"という文字列を出力するようにしている。
フォームの処理
次にWebフォームの処理方法を学ぼう。Webアプリについて学ぶ際、Webフォームからの入力をどのように扱うのかが分かると、いろいろなアプリが作れるようになる。HTMLのformタグから送信されたデータを、どのように処理するかを確認しよう。
Flaskの場合、フォームは自動的に処理され、GETメソッドで送信されたパラメータであれば、request.argsで取得でき、POSTメソッドで送信されたパラメータであれば、request.formで取得できる。
ここでは、Webフォームを利用したかけ算ツールを作ってみよう。以下のプログラムをkakezan.pyという名前で保存しよう。
from flask import *
# Flaskオブジェクトの生成
app = Flask(__name__)
# ルート( / )へアクセスがあった時 --- (*1)
@app.route("/")
def root():
# HTMLでWebフォームを記述 --- (*2)
return """
<html><body>
<form action="/calc" method="post">
<input type="text" name="a"> ×
<input type="text" name="b">
<input type="submit" value="計算">
</form>
"""
# フォームの値を受け取って結果を表示 --- (*3)
@app.route("/calc", methods=["post"])
def calc():
a = int(request.form.get("a"))
b = int(request.form.get("b"))
r = a * b
return "<h1>答えは..." + str(r) + "</h1>"
# サーバーを起動
if __name__ == "__main__":
app.run(debug=True, port=8888)
プログラムは同じように実行できる。コマンドラインで以下のように実行しよう。
python kakezan.py
すると、FlaskでWebサーバーが起動するので、Webブラウザで「http://localhost:8888」へアクセスしよう。そして、二つあるテキストボックスに数値を適当に入れて「計算」ボタンを押そう。すると、計算結果が表示される。
プログラムのポイントを確認してみよう。プログラムの(*1)の部分では、サーバーのルートに対してアクセスがあったときの処理を記述する。そして、(*3)の部分ではサーバーのURL「/calc」に対してアクセスがあったときの処理を記述する。つまり、@app.route("アドレス")と指定することで、その直後に記述した関数が実行されるようになる。
続いて、(*2)の部分を見てみよう。Flaskの処理では任意のURLにアクセスがあったときに、何を返すかを指定するだけで良い。ここでは、かけ算する二つの値を入力するフォームを表示するHTMLを返している。
さらに(*3)の部分を見てみよう。ここでは、WebフォームからURL「/calc」にデータが送信されたときに行う処理を記述している。request.form.getメソッドを利用して、送信されたデータを取得できる。ここでは、int関数を使って整数に値を変換し、かけ算を行って、結果を画面に出力する。
Flaskのまとめ
ここまで、Flaskの基本的な使い方を確認した。とても手軽にWebアプリを記述できることが分かっただろう。ここまで紹介した以外にFlaskの大きな機能に、テンプレートエンジンの機能がある。次回、具体的なアプリを作りながら使い方を紹介する。お楽しみに。
自由型プログラマー。くじらはんどにて、プログラミングの楽しさを伝える活動をしている。代表作に、日本語プログラミング言語「なでしこ」 、テキスト音楽「サクラ」など。2001年オンラインソフト大賞入賞、2004年度未踏ユース スーパークリエータ認定、2010年 OSS貢献者章受賞。技術書も多く執筆している。