Flaskとは?PythonでWebアプリを作れる軽量Webフレームワークを初心者向けに解説

Flask(フラスク)は、PythonでWebアプリケーションを開発するためのWebフレームワークです。

PythonにはさまざまなWebフレームワークがありますが、Flaskは特にシンプルな構成になっており、必要な機能を追加しながらWebアプリを作れることが特徴です。

例えば、Flaskを使うと次のようなWebアプリケーションを作れます。

  • Webサイト
  • お問い合わせフォーム
  • 社内業務システム
  • データ管理システム
  • Web API
  • 機械学習モデルを利用したWebサービス
  • Pythonで作った処理をWebから実行するサービス

Pythonを使ってWeb開発を始めたい人にとって、Flaskは比較的理解しやすいフレームワークの一つです。

FlaskはPythonのWebフレームワーク

Flaskは、PythonでWebアプリケーションを作るための機能を提供します。

Pythonだけでもプログラムを書くことはできますが、Webアプリケーションを作る場合には、次のような処理が必要になります。

  • Webブラウザからのリクエストを受け取る
  • URLごとに処理を分ける
  • HTMLを返す
  • フォームから送信されたデータを処理する
  • データベースと接続する

Flaskを使えば、こうしたWebアプリケーション開発に必要な仕組みを利用できます。

Flaskの特徴

Flaskの代表的な特徴は、シンプルで軽量なWebフレームワークであることです。

シンプルな構成

Flaskでは、最小限のコードからWebアプリケーションを作り始めることができます。

例えば、次のようなコードだけでもWebサーバーを起動できます。

from flask import Flask

app = Flask(__name__)

@app.route("/")
def index():
    return "Hello Flask!"

if __name__ == "__main__":
    app.run()

このプログラムでは、Flaskのアプリケーションを作成し、「/」というURLにアクセスされたときに「Hello Flask!」と表示します。

Flaskでできること

Flaskは小規模なWebアプリケーションだけでなく、さまざまな用途に利用できます。

Webサイトを作る

Flaskを使ってHTMLを表示するWebサイトを作ることができます。

HTMLファイルをテンプレートとして利用できるため、Pythonの処理とHTMLを組み合わせたWebアプリケーションを構築できます。

Web APIを作る

FlaskはWeb APIの開発にも利用できます。

例えば、Pythonで計算した結果をJSON形式で返すAPIを作ることができます。

from flask import Flask, jsonify

app = Flask(__name__)

@app.route("/api")
def api():
    return jsonify({
        "message": "Hello Flask"
    })

if __name__ == "__main__":
    app.run()

このように、FlaskはバックエンドのAPIを作る用途にも利用できます。

データベースと連携する

Flaskではデータベースと連携したアプリケーションも作れます。

例えば、次のようなシステムを構築できます。

  • ユーザー管理
  • 商品管理
  • 顧客管理
  • 予約管理
  • 社内データ管理

データベース機能そのものがFlask本体にすべて組み込まれているわけではなく、必要なライブラリを追加して利用するのがFlaskの考え方です。

FlaskとDjangoの違い

PythonのWebフレームワークとして、Flaskとよく比較されるのがDjangoです。

大きな違いは、最初から用意されている機能の範囲です。

項目 Flask Django
特徴 軽量・シンプル 多機能・統合型
学習の始めやすさ 比較的始めやすい 覚えることが多い
機能追加 必要なものを追加 多くの機能が標準搭載
小規模アプリ 向いている 対応可能
大規模システム 構成次第 向いている
Web API 作れる 作れる
データベース 拡張機能などで対応 ORMを標準搭載

Flaskは「必要なものを自分で選んで組み立てる」という考え方に近いWebフレームワークです。

一方、DjangoはWebアプリケーション開発に必要となる多くの機能が最初から用意されています。

そのため、小さなWebアプリを作りながらWeb開発の仕組みを理解したい場合はFlaskが学びやすいでしょう。

Flaskをインストールする方法

FlaskはPythonのパッケージ管理ツールであるpipを使ってインストールできます。

まず、Pythonの仮想環境を作成します。

python -m venv .venv

仮想環境を有効にします。

MacやLinuxの場合は次のように実行します。

source .venv/bin/activate

Windowsの場合は次のコマンドを使います。

.venv\Scripts\activate

その後、Flaskをインストールします。

pip install Flask

インストールが完了したら、Flaskを使ったプログラムを作成できます。

Flaskで簡単なWebアプリを作る

例えば、app.pyというファイルを作成します。

from flask import Flask

app = Flask(__name__)

@app.route("/")
def index():
    return "Hello Flask!"

if __name__ == "__main__":
    app.run(debug=True)

ターミナルから実行します。

python app.py

Flaskの開発用サーバーが起動したら、Webブラウザから指定されたアドレスにアクセスします。

すると、次のように表示されます。

Hello Flask!

これがFlaskを使った最小構成のWebアプリです。

Flaskのルーティングとは?

Flaskでは、@app.route()を使ってURLと処理を対応させます。

例えば、次のように記述します。

@app.route("/")
def index():
    return "トップページ"

@app.route("/about")
def about():
    return "会社情報"

この場合、次のようにURLごとに処理を分けることができます。

  • / → トップページ
  • /about → 会社情報

この仕組みをルーティングと呼びます。

Flaskを学習する場合、ルーティングは基本となる重要な概念です。

FlaskでHTMLを表示する

Flaskでは、HTMLテンプレートを使ってWebページを表示することもできます。

一般的にはtemplatesというディレクトリを作り、その中にHTMLファイルを配置します。

例えば、次のような構成にします。

project/
├── app.py
└── templates/
    └── index.html

index.htmlを作成します。

<h1>Flask入門</h1>
<p>FlaskでWebアプリを作っています。</p>

Python側ではrender_template()を利用します。

from flask import Flask, render_template

app = Flask(__name__)

@app.route("/")
def index():
    return render_template("index.html")

if __name__ == "__main__":
    app.run(debug=True)

このように、Pythonの処理とHTMLを組み合わせてWebアプリケーションを作ることができます。

Flaskは初心者におすすめ?

Flaskは、Pythonの基礎を理解している人がWeb開発を学ぶ入り口としておすすめできるフレームワークです。

特に、次のような人に向いています。

  • Pythonを使ってWebアプリを作りたい
  • Web APIを作ってみたい
  • Webサーバーの仕組みを理解したい
  • 小さなWebアプリを作りたい
  • 機械学習とWeb開発を組み合わせたい

一方で、Pythonそのものをほとんど知らない状態でFlaskから始めると、PythonとWeb開発の知識を同時に学ぶことになります。

そのため、まずPythonの基本文法を学んでからFlaskに進むと理解しやすくなります。

Flaskを学ぶ前に覚えておきたいPython

Flaskを学習するなら、最低限次のPythonの知識を身につけておくとスムーズです。

  • 変数
  • 文字列
  • 数値
  • リスト
  • 辞書
  • if文
  • for文
  • 関数
  • モジュールとimport
  • 例外処理

特に重要なのが関数です。

Flaskでは、次のように関数を定義し、その関数をURLと関連付けて利用します。

def index():
    return "Hello Flask!"

Pythonの関数を理解していると、Flaskのコードも理解しやすくなります。

Flaskの学習で重要なのはコードを書くこと

Flaskを学ぶときは、教材を読むだけでなく、実際にコードを書いて動かすことが重要です。

例えば、次のように小さな機能を一つずつ作っていくと理解しやすくなります。

  1. Flaskをインストールする
  2. Webサーバーを起動する
  3. URLを追加する
  4. HTMLを表示する
  5. フォームを作る
  6. 入力されたデータを受け取る
  7. データベースと接続する

エラーが出た場合も、エラーメッセージを調べて原因を確認し、自分で修正する経験がWeb開発では重要です。

Flaskを使うメリット

Flaskには次のようなメリットがあります。

軽量である

Flaskは必要最小限の構成から始められるため、小さなアプリケーションを作りやすいのが特徴です。

コードがシンプル

最小構成のアプリケーションであれば、少ないコードでWebページを表示できます。

拡張しやすい

必要に応じてライブラリや拡張機能を追加できます。

Pythonの知識を活用できる

Pythonを使ってWebアプリケーションを開発できるため、データ分析やAI、機械学習などPythonの他分野と組み合わせることもできます。

Flaskのデメリット

Flaskはシンプルである一方、すべての機能が最初から用意されているわけではありません。

そのため、アプリケーションが大きくなると、次のようなことを自分で判断する必要があります。

  • どのライブラリを使うか
  • プロジェクトをどう設計するか
  • データベースをどう扱うか
  • 認証をどう実装するか

「Webアプリケーションに必要な機能を最初からまとめて使いたい」という場合は、Djangoのほうが適しているケースもあります。

Flaskはどんな人に向いている?

Flaskは次のような人に向いています。

  • Pythonを使ってWeb開発を始めたい人
  • シンプルなWebアプリを作りたい人
  • Web APIを作りたい人
  • Pythonの処理をWebサービス化したい人
  • 機械学習とWebアプリを組み合わせたい人
  • Webフレームワークの仕組みを理解したい人

反対に、大規模なWebサービスを効率よく開発するために、認証や管理画面、データベースなど多くの機能をまとめて利用したい場合は、Djangoも候補になります。

Flaskまとめ

Flaskは、PythonでWebアプリケーションを開発するための軽量なWebフレームワークです。

シンプルな構成から始められるため、Pythonを使ったWeb開発の基本を学びたい人にも適しています。

Flaskでは、次のようなものを開発できます。

  • Webサイト
  • Webアプリケーション
  • Web API
  • データ管理システム
  • PythonやAIを利用したWebサービス

Flaskを学ぶ場合は、まずPythonの基本文法を身につけ、その後に「ルーティング」「HTMLテンプレート」「フォーム」「データベース」「API」などを実際にコードを書きながら学ぶとよいでしょう。

Pythonを仕事で使えるようになりたいなら、文法を暗記するだけでなく、実際にコードを書いて動かすことが重要です。

プログラミング学習に興味がある方は、まずは無料体験会へ

無料体験会・お申し込みはこちら