.png%3Fw%3D1110&w=3840&q=75)
本記事では、初めて Flask を活用して Web アプリケーションを開発したい方に向けて、特徴やインストール方法を紹介しています。
さらに Flask を使用したアプリケーション実行および拡張機能の利用方法についても解説しています。
また、もう一つの Python のフレームワークである Django との違いについて解説していますので、ぜひ最後までご覧ください!
目次

Flask(フラスク)は Armin Ronacher 氏によって 2010 年に開発された Python の Web アプリケーションフレームワーク(※)です。
機能がシンプルで使いやすく、覚える項目が少ないため、Python 初心者向けのフレームワークと言われています。
(※)「アプリケーションフレームワーク」とはアプリケーションを開発する際の土台となる機能を搭載したソフトウェアのことです。
フレームワークを使用することで、一からアプリケーションを開発する手間を省くことができるというメリットがあります。
Flaskのメリットは以下のとおりです。
(※)「マイクロフレームワーク」とは、特定分野を開発するために必要な機能が最小限にまとめられたフレームワークのことを指します。
Flask のデメリットは以下のとおりです。
Python のインストールから Flask のアプリケーション実行までをコードを交えて解説していきます。
Python の公式ドキュメントから最新バージョンのパッケージをインストールします。
インストールが完了したら、Mac OS の場合はターミナル、Windows の場合はコマンドプロンプトを開きます。
そして以下のコマンドを実行し、Python がインストールされていることを確認します。
#Pythonのバージョン確認 $ python3 --version Python 3.12.2
次に、仮想環境を構築していきましょう。
Python の「仮想環境」とは、プロジェクトごとに独立したPython環境を作成することができる機能のことです。
仮想環境を利用することで、システム全体の Python 環境に影響を与えずに、プロジェクトごとに独立した環境を構築できます。
これにより、「ライブラリどうしのバージョンの相性が悪く、エラーばかり出る...。」といった問題を回避することができます。
以下の流れで仮想環境は構築していきます。
#Flaskプロジェクトを作成する任意のディレクトリに移動 $ cd /Users/username/projects/myproject #python の仮想環境を作成(任意のプロジェクト名で作成) $ python3 -m venv flask-project #仮想環境をアクティブ化 $ source venv/bin/activate
このような手順で仮想環境を構築すると、myproject ディレクトリ内に flask-project というディレクトリが自動で追加され、python を環境汚染の無いきれいな状態で利用することができます。
今回は、ここで構築した仮想環境を Flask プロジェクトとして利用していきます。
次に、用意した仮想環境内に Flask をインストールします。
#Flaskのインストール $ pip3 install flask Collecting flask (中略) Successfully installed flask-3.0.3
「Successfully installed (flaskのバージョン)」と出力されれば成功です!
次に、flask がインストールされているかを確認してみましょう。
#Flask がインストールされているか確認するため、バージョンを確認 $ flask --version Flask 3.0.3
先ほどインストールした flask のバージョンが出力されれば成功です!
Visual Studio Code のインストールを行っていない方は、公式サイトからダウンロードしましょう。
インストール方法や設定方法はこちらの記事で紹介していますので、ぜひ参考にしてみてください!
Visual Studio Code などのコードエディタは、入力したコードの見やすさや予測変換によるスペルミスを防ぐことができ、コードを効率的に開発することができます。
VS Code がインストールできたら、開いてみましょう!
はじめはこちらのような画面が表示されますので、フォルダを開くボタンをクリックします。

先程作成した Flask プロジェクトを選択肢、VSCode 上で開きます。

このような画面が表示されれば成功です。先程作成した仮想環境がプロジェクト内にフォルダとして保存されていることいることが確認できますね!

簡単なコードを記入して、Flask のアプリケーションを実行します。
まずは、VSCode で「run.py」という Python のスクリプトファイルを作成します。
ファイルを追加するボタンをクリックし、ファイル名を「run.py」とします。

この run.py に以下のコードを入力します。
Flask を用いて Web ページに「Hello World!」と表示させるコードです。
#"Hello World!"と表示されるWebアプリケーション from flask import Flask app = Flask(__name__) @app.route('/') def hello(): return 'Hello World!' if __name__ == '__main__': app.run()
run.py 内にコードを入力したら、VSCode内でターミナルを開きます

ターミナルを開くことができたら、以下のコマンドを入力します。
python で run.py を実行するというコマンドです。
#Flask のアプリケーションを実行 $ python3 run.py * Serving Flask app 'app' * Debug mode: off * Running on http://127.0.0.1:5000
Webブラウザでサーバーの URL(http://127.0.0.1:5000)にアクセスすると、Hello World!と表示されます。

Webブラウザ上で表示されない場合はキャッシュを削除するか、シークレットモード(キャッシュが残らない状態)でアクセスすると表示されます。
Flask で本格的に開発を行っていくために、基本のフォルダ構成や拡張機能の利用方法について解説します。
Flask のディレクトリ構成は、用途により構成が異なります。
今回は初心者が開発するシンプルなページを想定したフォルダ構成をご紹介します。
flask-project ├app/ │ ├templates/ │ ├static/ │ └app.py ├venv └run.py
各項目について説明します。
Flask の Web アプリケーションは先ほどの「Flask の基本的なフォルダ構成」をもとに解説します。
Web アプリケーションの作り方の手順は以下です。
先ほど作成した flask-project を編集して、アプリケーション形式にしていいます!
まずは上記でご紹介した構成になるように、VSCode上でディレクトリやスクリプトファイルを作成していきましょう。

次に、templates ディレクトリ内に index.html ファイルを作成し、Webサイトを構成する HTML を記述します。
<html> <head> </head> <body> <h1>test_page</h1> </body> </html>
次に、app.py にコードを記述し、url によって表示するコンテンツを出し分けする機能を作っていきます。
#Flaskとrender_template(HTMLを表示させるための関数)をインポート from flask import Flask,render_template #Flaskオブジェクトの生成 app = Flask(__name__) #「/」へアクセスがあった場合に、"Hello World"の文字列を返す @app.route("/") def hello(): return "Hello World!" #「/index」へアクセスがあった場合に、「index.html」を返す @app.route("/index") def index(): return render_template("index.html")
そして、run.py を以下のように変更します。
先程は、ルートディレクトリにアクセスしたときに「Hello World!」と表示されるコードを記述していましたが、その機能は app.py に記述したため、run.py は「app.py を呼び出す」という処理に変更しています。
from app.app import app if __name__ == "__main__": app.run(debug=True)
ここまでコードを記述できたら、run.py を実行して Flask アプリケーションを起動します。
$ python3 run.py * Running on http://127.0.0.1:5000
Web ブラウザでサーバー(http://127.0.0.1:5000) にアクセスすると、「Hello World!」と表示されます。

一方でこちらは、index ディレクトリに(http://127.0.0.1:5000/index) にアクセスすると、「test_page」 と表示されます。

URL によるコンテンツの出し分けができました!
Flask の拡張機能は、Python でライブラリをインストールするときと同じように、pip コマンドでインストールして使用することができます。
拡張機能の名称や使い方については「拡張機能の一覧」に記載されています。
#pipコマンドで拡張機能をインストール $ python3 -m pip install <拡張機能> #コード文頭で拡張機能を呼び出す $ from <拡張機能> import <拡張機能>
拡張機能をより詳しく知りたい方はFlaskの公式ドキュメントの日本語版がありますので、参照ください。
今回は、Flask で使用される代表的な拡張機能である認証機能の利用について解説します。
まずは以下のコマンドで「flask-httpauth」という拡張機能モジュールをインストールしていきます。
#ページにアクセスする際の認証機能 $ python3 -m pip install flask-httpauth Successfully installed flask-httpauth-4.8.0
flask-httpauth がインストールできたら、先ほど作成した app.py に以下の「#追記」または「#変更」とコメントされている部分のコードを追加します。(※ユーザー名とパスワードは任意)
#Flaskとrender_template(HTMLを表示させるための関数)をインポート from flask import Flask,render_template #追記:flask_httpauth のインポート from flask_httpauth import HTTPBasicAuth #Flaskオブジェクトの生成 app = Flask(__name__) #追記:認証機能を変数に代入 auth = HTTPBasicAuth() #追記:認証に使用するユーザ名とパスワードを設定 users = { "test_user": "test_password" } #追記:認証関数 @auth.get_password def get_pw(username): if username in users: return users.get(username) return None #「/」へアクセスがあった場合に、"Hello World"の文字列を返す @app.route("/") #追記:基本認証を通過したユーザーに"Hello World!"と返す @auth.login_required def hello(): return "Hello World!" #「/index」へアクセスがあった場合に、「index.html」を返す @app.route("/index") def index(): #変更:基本認証を通過したユーザーに"Hello (ユーザー名)!"と返す return "Hello, %s!" % auth.username()
各コードの説明はコメントに記載しているので、詳しくはそちらをご確認ください。
app.py に「#追記」または「#変更」とコメントされている部分のコードを追加することができたら、run.py を実行します。
$ python3 run.py * Running on http://127.0.0.1:5000
サーバーにアクセスすると、認証情報を聞かれます。

先ほど app.py で記述したユーザー名とパスワードを入力してログインをクリックします。

設定したユーザ名とパスワードが一致した場合はHello World! と表示されます。

また、認証が成功した状態で index ディレクトリに(http://127.0.0.1:5000/index) にアクセスすると、「Hello, (ユーザー名)!」 と表示されます。

このように、Flaskを用いることで自身の開発したアプリケーションに、簡単に認証機能をつけることができます。

flask が小規模かつ自由度の高いWeb アプリケーション開発向けである一方、Django(ジャンゴ)は大規模かつ複雑なWebアプリケーション開発向けのフレームワークとされています。
Django はアプリケーション開発に必要な機能を全て備えたフルスタックフレームワークであるため、拡張機能なしでアプリケーション開発ができます。
Django は大規模かつ複雑なアプリケーション開発に適したフレームワークです。
そのため、自動化が必要な管理システムに使用されるケースがあります。
Django は日本語対応しており、ドキュメントも揃っている傾向にあります。
Flaskよりも覚える機能は多いですが、日本人にとって学びやすい環境が用意されていると言えるでしょう。
より詳しい情報は Django の公式ドキュメントを参照ください。
Django は機能が多く搭載されているがゆえ、動作処理速度は Flask に劣ります。
そのため以下のように規模や用途に合わせたフレームワークを選択する必要があります。
今回は、Flask の特徴からアプリケーションの作り方、Django との違いを解説しました。
Flask の特徴は手軽に費用をかけず初心者でもアプリケーションを開発することができるという点です。
本記事を読んでFlaskに興味を持った方は、この記事を参考にぜひアプリケーション開発を実践してみてくださいね!
SHARE
AI/データサイエンス学びはじめの方におすすめの記事
コース一覧
注目記事
新着記事
目次