Python

【Python】第8章第10回:Webアプリ開発プロジェクト例

本記事では、PythonとFlaskを使用した簡単なWebアプリ開発プロジェクトの例を解説します。タスク管理アプリの実装を通して、実際のアプリケーション開発の流れを学びましょう。

0. 記事の概要

この記事を読むメリット

  • Webアプリ開発の基礎を理解:実践的なプロジェクトを通して学べます。
  • Flaskの応用力を習得:ルーティングやデータベース操作を活用したアプリ開発を体験できます。
  • ポートフォリオ作成に役立つ:開発したアプリを活用して実績をアピールできます。

この記事で学べること

  • Webアプリ開発の基本的な流れ
  • Flaskを使ったタスク管理アプリの作成
  • アプリケーション設計の実践例

1. Webアプリ開発の基本的な流れ

1.1 Webアプリ開発の主要なステップ

Webアプリ開発の基本的な流れは以下の通りです。

  • 要件定義: どのような機能が必要かを決定
  • 設計: アプリケーションの構造を設計
  • 実装: コードを記述して機能を実装
  • テスト: 動作確認とバグ修正
  • デプロイ: インターネット上で公開

1.2 Flaskを使った開発の特徴

Flaskは以下の特徴を持つため、初心者に最適なフレームワークです。

  • 軽量で柔軟性が高い
  • 直感的なルーティングとテンプレートエンジン
  • 豊富な拡張機能

2. プロジェクト例:タスク管理アプリ

2.1 必要な機能の設計

今回作成するタスク管理アプリには以下の機能を実装します。

  • タスクの追加
  • タスクの一覧表示
  • タスクの削除

2.2 コード例

# app.py
from flask import Flask, request, redirect, url_for, render_template

app = Flask(__name__)

# タスクを保存するためのリスト
tasks = []

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

@app.route("/add", methods=["POST"])
def add_task():
    task = request.form["task"]
    tasks.append(task)
    return redirect(url_for("index"))

@app.route("/delete/")
def delete_task(task_id):
    if 0 <= task_id < len(tasks):
        tasks.pop(task_id)
    return redirect(url_for("index"))

if __name__ == "__main__":
    app.run(debug=True)
動作解説
  • タスクの追加: フォームから受け取ったデータをリストに追加。
  • タスクの一覧表示: テンプレートでリストをループして表示。
  • タスクの削除: URLパラメータを基に指定されたタスクを削除。

3. テンプレートとスタイルの実装

3.1 テンプレートのコード例

# templates/index.html
<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <title>タスク管理アプリ</title>
</head>
<body>
    <h1>タスク管理アプリ</h1>
    <form action="/add" method="POST">
        タスク: <input type="text" name="task">
        <button type="submit">追加</button>
    </form>
    <ul>
        {% for task in tasks %}
        <li>{{ loop.index }}. {{ task }} <a href="/delete/{{ loop.index0 }}">削除</a></li>
        {% endfor %}
    </ul>
</body>
</html>

4. 練習問題

以下の課題に挑戦してみましょう。

  1. タスクに完了フラグを追加し、完了したタスクをリストから移動する機能を実装してください。
  2. Bootstrapを使用して、アプリケーションのデザインを改善してください。
  3. データを永続化するために、SQLiteデータベースを導入してください。

5. 練習問題の解答と解説

問1の解答例

# タスクに完了フラグを追加
@app.route("/complete/")
def complete_task(task_id):
    if 0 <= task_id < len(tasks):
        completed_task = tasks.pop(task_id)
        tasks.append(f"{completed_task} (完了)")
    return redirect(url_for("index"))

問3の解答例

# SQLiteデータベースの導入例
from flask_sqlalchemy import SQLAlchemy

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

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

6. まとめ

本記事では、Flaskを使用した簡単なWebアプリ開発プロジェクトを学びました。次は、より高度な機能を取り入れたアプリケーションを作成してみましょう。