サイトアイコン 【TechGrowUp】

Python開発入門51 Flask入門!Pythonで軽量Webアプリを簡単に構築する方法

はじめに

Flaskは、Pythonで軽量なWebアプリケーションを構築するためのマイクロフレームワークです。シンプルで学びやすい設計が特徴で、小規模なアプリから大規模なプロジェクトまで対応可能です。

この記事では、Flaskの基本的な使い方や構造、応用的な機能を初心者向けに解説します。

Flaskとは

Flaskの概要

Flaskは、PythonでWebアプリケーションを作成するための軽量なフレームワークで、以下の特徴を持っています:

Flaskの主な特徴

  1. 軽量で柔軟
    必要最小限の機能だけを持ち、プロジェクトに応じた拡張が可能。
  2. 簡単なルーティング
    URLルーティングが直感的に設定できます。
  3. 豊富なエコシステム
    SQLAlchemyやJinja2などのライブラリと統合が容易。
  4. テンプレートエンジン
    Jinja2による動的なHTML生成をサポート。

Flaskのインストールとセットアップ

Flaskのインストール

以下のコマンドを使ってFlaskをインストールします:

pip install flask

簡単なセットアップ

以下のコードを記述して、Flaskアプリケーションを作成します:

from flask import Flask

app = Flask(__name__)

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

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

説明:

サーバーの起動

上記のコードを実行すると、以下のようなURLでアプリケーションにアクセスできます:

http://127.0.0.1:5000/

Flaskアプリケーションの基本構造

Flaskプロジェクトの典型的なディレクトリ構造は以下の通りです:

project/
├── app.py
├── static/
   └── style.css
├── templates/
   └── index.html
└── requirements.txt

主要なディレクトリとファイルの説明

  1. app.py
    アプリケーションのエントリーポイント。
  2. templates/
    HTMLテンプレートを格納するディレクトリ。
  3. static/
    CSSやJavaScriptなどの静的ファイルを格納。
  4. requirements.txt
    必要なパッケージを記述したファイル。

Flaskの基本機能

ルーティング

ルーティングを使って、URLごとに異なる処理を定義します。

例:複数のルートを定義
@app.route("/")
def home():
    return "ホームページ"

@app.route("/about")
def about():
    return "このアプリについて"

テンプレートの活用

Flaskでは、Jinja2テンプレートエンジンを使用して動的なHTMLを生成できます。

例:テンプレートの使用

templates/index.html

<!DOCTYPE html>
<html>
<head>
    <title>{{ title }}</title>
</head>
<body>
    <h1>{{ message }}</h1>
</body>
</html>

app.py

from flask import render_template

@app.route("/")
def home():
    return render_template("index.html", title="ホーム", message="ようこそ、Flaskへ!")

フォームの処理

Flaskでは、フォームデータを簡単に処理できます。

例:フォームの送信と処理

templates/form.html

<!DOCTYPE html>
<html>
<body>
    <form action="/submit" method="post">
        <label for="name">名前:</label>
        <input type="text" id="name" name="name">
        <button type="submit">送信</button>
    </form>
</body>
</html>

app.py

from flask import request

@app.route("/submit", methods=["POST"])
def submit():
    name = request.form["name"]
    return f"こんにちは、{name}さん!"

静的ファイルの提供

静的ファイルはstaticディレクトリ内に配置し、URLからアクセスできます。

例:CSSファイルの読み込み

static/style.css

body {
    background-color: lightblue;
}

templates/index.html

<!DOCTYPE html>
<html>
<head>
    <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='style.css') }}">
</head>
<body>
    <h1>スタイル付きのページ</h1>
</body>
</html>

Flaskの応用機能

RESTful APIの構築

Flaskを使って簡単にRESTful APIを作成できます。

例:簡単なAPIの作成
from flask import jsonify

@app.route("/api/items", methods=["GET"])
def get_items():
    items = [{"id": 1, "name": "Item 1"}, {"id": 2, "name": "Item 2"}]
    return jsonify(items)

データベースの使用

SQLAlchemyを使ってデータベースと連携できます。

例:SQLAlchemyの使用
from flask_sqlalchemy import SQLAlchemy

app.config["SQLALCHEMY_DATABASE_URI"] = "sqlite:///test.db"
db = SQLAlchemy(app)

class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(80), nullable=False)

@app.route("/create_user")
def create_user():
    user = User(name="太郎")
    db.session.add(user)
    db.session.commit()
    return "ユーザーを作成しました!"

Flaskを使う際の注意点

  1. 構造設計を明確に
    プロジェクトが成長するにつれて、フォルダ構成を明確にしておくことが重要です。
  2. セキュリティ対策
    CSRF対策やセッション管理を適切に行いましょう。
  3. 拡張の活用
    必要に応じて、Flaskの拡張機能(Flask-WTF、Flask-SQLAlchemyなど)を導入しましょう。

まとめ

Flaskは、軽量で柔軟性が高く、初心者から上級者まで幅広く利用できるPythonのWebフレームワークです。そのシンプルな設計を活用して、効率的にWebアプリケーションを構築してみましょう!この記事を参考に、Flaskをプロジェクトで活用してください。

モバイルバージョンを終了