プログラミング

PythonのWebフレームワークFlaskのインストール方法・使い方について

「Flask」は、Python上で動くWebアプリケーションフレームワークのひとつ。

Armin Ronacher(アーミン・ロンチャー)という人が作り、2010年に公開されました。

シンプルで、初心者でも比較的簡単に扱うことができるのが特徴です。

必要最低限の機能しか備わっておらず、軽量なので小規模なアプリは重くなりませんし、大きなアプリを作る場合でも、他のライブラリを導入しながら拡張して実装することができます。

「Flask, web development one drop at a time」(少しずつWeb開発できるFlask)という言葉もあるように、シンプルかつ拡張性があるのがFlaskです。

Djangoと何が違うのか

よく使われるPythonのフレームワークで、Flaskの他に「Django」があります。

必要最低限の機能を搭載しているFlaskに対し、Djangoは機能が豊富でフルスタックなWebフレームワークとして知られています。

大規模なWebサービスでも安定して運用できることから、Djangoも人気のあるフレームワークですが、初心者には難しいです。

ちなみに僕もチュートリアルとかしながら勉強中。

関連記事
Djangoのチュートリアルまとめ

一方、Flaskは機能がシンプルで学ぶのも比較的簡単なので、Pythonを使って何かWebサービスを作ってみたい人にとってはいいかと思います。

Flaskのインストール

Flaskの導入は、Pythonのパッケージ管理ツールpipを使ってするのが便利。

ターミナルを起動して、以下のpipコマンドを実行します。

pip3 install Flask

なお、デフォルトが3系になっている場合は以下のコマンドでOK。

pip install Flask

仮想環境でのFlask導入

仮想環境でFlaskを導入する方法も紹介。

mkdir app

まず最初に仮想環境をセットするための専用フォルダを作成。ここではappというフォルダにしています。

このフォルダに対し、以下のコマンドで仮想環境を作ることができます。

python3 -m venv app

次にフォルダ内にある「bin/activate」を実行。

cd app
source bin/activate

コンソールの左側に仮想環境のフォルダ名が表示されれば、仮想環境を有効化できています。

pip3 install Flask

あとは、これにpipコマンドを使うことでFlaskをインストールできます。

Flaskの使い方

Flaskを使ってHello Worldを表示させてみます。

まずコードはざっと次のような感じ。ここではapp.pyというファイルを作成しています。

from flask import Flask
app = Flask(__name__)

@app.route(‘/’)
def hello():
  return ‘Hello World!’

最初に1行目でFlaskのモジュールをインポート。

2行目でFlaskのインスタンスを確保。appにFlaskを定義して使えるようにしています。

4行目の「@app.route(‘/’)」はルーティングのルールを決めるためのもの。関数の直前に書く必要があります。

ここでは「/」にアクセスした際に「Hello World!」という文字列を返すための関数helloを続けて書いています。

export FLASK_APP=app.py

Flaskではアプリのエントリポイントとなるファイル(ここではapp.py)を環境変数のFLASK_APPで指定。

flask run

そしてFlaskを起動。

ターミナル上にはこのように表示されているので、「http://127.0.0.1:5000/」もしくは「localhost:5000」にアクセスすると、Hello World!が表示されるはずです。

HTMLを反映させる

Python自体はHTMLを直接扱うのは得意ではないため、テンプレートエンジンを使います。

HTMLを反映させるためにはHTMLのテンプレートファイルを別途用意する必要があり、templatesというフォルダを作成して、その中にファイルを入れておきます。

mkdir templates

mkdirでtemplatesフォルダを作成。

touch templates/index.html

そしてindex.htmlというテンプレートファイルを作成します。

index.htmlの中身は以下のようにしておきます。

index.html
<!DOCTYPE html>
<html>
 <head>
  <meta charset=”UTF-8″/>
 </head>
 <body>
  <h1>Hello</h1>
 </body>
</html>

そして、app.pyには次のように記述。

app.py
from flask import Flask, render_template
app = Flask(__name__)

@app.route(‘/’)
def hello():
  return render template(‘index.html’)

最初に1行目でrender_template()というメソッドをインポートしておきます。

変数を使うことも可能

index.html
<!DOCTYPE html>
<html>
 <head>
  <meta charset=”UTF-8″/>
 </head>
 <body>
  <h1>Hello</h1>
  <p>{{name}}</p>
 </body>
</html>
app.py
from flask import Flask, render_template
app = Flask(__name__)

@app.route(‘/hello/<name>’)
def hello(name):
  return render template(‘index.html’, name=name)

ここでポイントとなるのはルーティング部分。/hello<name>にアクセスするという意味ではなく、<name>に入力された文字列を関数内で使えるようにしています。

そのため、入力された文字列は関数内で引数として渡され、テンプレートエンジンにnameという変数で渡されています。

/hello/の後に入力する文字を変えることで、HTMLの中身も変わるという仕組みです。

「http://127.0.0.1:5000/hello/yamada」にアクセスした場合。

「http://127.0.0.1:5000/hello/suzuki」にアクセスした場合。

CSSで装飾

CSSやJSのファイルはstaticという名前のフォルダで認識されるようになっています。

mkdir static

なのでまずはstaticフォルダを作成。

style.css
p {
 color: red;
}

staticフォルダ内にstyle.cssを配置。文字色を赤色にするようにCSSを記述しています。

index.html
<!DOCTYPE html>
<html>
 <head>
  <meta charset=”UTF-8″/>
  <link rel=”stylesheet” href=”/static/style.css”>
 </head>
 <body>
  <h1>Hello</h1>
  <p>{{name}}</p>
 </body>
</html>

HTMLにCSSを読み込む一文を追加しておきます。

pタグの文字色が赤色に変わっているのを確認できました。

まとめ

WebフレームワークのFlaskについて、インストール方法、使い方、HTMLを反映させる方法、CSSで装飾する方法など、Flaskの基本的なことについて紹介しました。

  • Djangoと何が違うのか
  • Flaskのインストール
  • Flaskを使ってみる
  • HTMLを反映させる
  • CSSで装飾

Flaskの公式チュートリアルをしてみるのもいいかと思うので、参考にしてください。

Flask 公式サイト

Leave a Comment