LoginSignup
1
5

More than 1 year has passed since last update.

Pythonのフレームワーク「Flask」を用いてHelloWolrdしてみた

Posted at

概要

pythonでのWebアプリ開発の経験がなかったため、勉強としてFlaskフレームワークを使用していろいろ作成を行ってみました。
この記事では、Hello Worldレベルの最低限の実装となっています。

Flaskとは

Flask Documentation
Flask 日本語Documentation

Flaskは、Python製のマイクロWebフレームワークです。
マイクロ=コアとなる機能を保ちつつ拡張性を持っている という解釈です。
拡張機能を多く持ち、必要に応じて追加することで自由度が高いです。
また、最低限の機能を使うための学習コストが低く、誰にでもすぐに利用することができます。

開発に必要な多くの機能が実装されているという点では、Djangoの方がフルスタックフレームワークとして優れています。

開発環境

OS Windows10
Docker 20.10.7
Visual Studio Code 1.7.1

DockerでCentOS7環境を構築し、コンテナ内で作成を行っています。

事前設定

Flaskを利用するための事前準備を進めていきます。

コンテナの起動

今回は公開済みのCentOS7のDockerイメージからコンテナを構築しています。
Dockerイメージ取得~コンテナ起動まで実行します。

# Dockerイメージ取得
$ docker pull centos:centos7
centos7: Pulling from library/centos
2d473b07cdd5: Already exists
Digest: sha256:c73f515d06b0fa07bb18d8202035e739a494ce760aa73129f60f4bf2bd22b407
Status: Downloaded newer image for centos:centos7
docker.io/library/centos:centos7

$ docker images
REPOSITORY    TAG       IMAGE ID       CREATED         SIZE
centos        centos7   eeb6ee3f44bd   11 months ago   204MB

# コンテナ起動
$ docker run -it -d --name centos7 centos:centos7
c4e8532de5f720c60097a7eef5cf33b049dffc4122d68dfd41ff9887ceeced46

$ docker ps
CONTAINER ID   IMAGE            COMMAND       CREATED          STATUS          PORTS     NAMES
c4e8532de5f7   centos:centos7   "/bin/bash"   35 seconds ago   Up 32 seconds             centos7

Python環境の準備

ここからはコンテナ内での操作となります。
インストールされていなければPythonのインストールを行ってください。
今回はPython 3.6.8をインストールしています。

# python3のインストール
$ yum install -y python3
     -- 省略 --

$ python --version
Python 3.6.8

仮想環境をvenvで構築&有効化します。
仮想環境名はvenvにしています。

# 作業ディレクトリに移動
$ cd working_dir

# 仮想環境venvの作成
$ python3 -m venv venv

# 仮想環境venvの有効化
$ source venv/bin/activate

Flaskを仮想環境上にインストールします。
インストールが完了するとflaskコマンドが使用できるようになります。
これで準備完了です。

# flaskのインストール
(venv)$ pip install flask

Flaskの仕様

環境変数について

Flaskでは2つの環境変数で制御することができます。
環境変数を事前にexportで設定しておくか、.envファイルで管理する方法があります。

  • FLASK_APP : アプリ起動時に実行するソースを指定する
  • FLASK_ENV : 開発か本番か指定する(development or production)

また、.envファイルがある状態でアプリを実行すると、アプリのルートディレクトリが.envファイルがあるディレクトリとなります。

ソースコードの作成

主にリクエスト先のURI関数を紐づけるルーティングをおこなっています。
関数の先頭にデコレーターと呼ばれる@app.route()を追加することでルートを追加できます。

hello.py
from flask import Flask

app = Flask(__name__)

# http://127.0.0.1:5000にアクセスしたときに呼び出される
@app.route("/")
def index():
    return "Hello Flask!"

# http://127.0.0.1:5000/helloにアクセスしたときに呼び出される
@app.route("/hello")
def hello():
    return "Hello Wolrd!"

flask routesコマンドで、作成したルートの確認ができます。
indexとhelloの2つができていることを確認しましょう。

(venv) $ flask routes
Endpoint        Methods    Rule
--------------  ---------  -----------------------
hello           GET        /hello
index           GET        /
static          GET        /static/<path:filename>

アプリ実行

環境変数FLASK_APPにhello.pyを設定しておきます。
開発用ということで、環境変数FLASK_ENVはdevelopmentに設定しておきます。

$ export FLASK_APP=hello.py
$ export FLASK_ENV=development

flask runで実行できます。

$ flask run
 * Serving Flask app 'hello.py' (lazy loading)
 * Environment: development
 * Debug mode: on
 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
 * Restarting with stat
 * Debugger is active!
 * Debugger PIN: XXX-XXX-XXX

http://127.0.0.1:5000 にアクセスして Hello Flask! と表示されていればOKです。
http://127.0.0.1:5000/hello にアクセスすると Hello World! と表示されます。

まとめ

FlaskでHello Worldアプリを作るには以下の手順でOK

  1. Flaskをインストールする
  2. ルーティングをコードで実装
  3. 環境変数の設定
  4. アプリを起動

便利なポイントがあれば別記事でさらに投稿していく予定です。

参考文献

Python FlaskによるWebアプリ開発入門
著:佐藤昌基、平田哲也
監修:寺田学

1
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
5