Python Web開発完全入門ガイド|初心者でも分かるFlask・Django入門

はじめに

Python Web開発は、プログラミング初心者にとって最適な選択肢の一つです。Pythonの読みやすい文法と豊富なフレームワークにより、短時間で実用的なWebアプリケーションを構築できます。本記事では、Python Web開発の基礎から実践まで、初心者にも分かりやすく解説します。

Python Web開発とは?

Python Web開発とは、Pythonプログラミング言語を使用してWebアプリケーションやWebサイトを構築することです。PythonはGoogleやInstagram、YouTubeなど多くの大手企業で採用されており、その実績と信頼性は証明済みです。

Python Web開発の特徴

メリット

  • シンプルで読みやすいコード
  • 豊富なライブラリとフレームワーク
  • 開発速度が早い
  • 大規模なコミュニティサポート

デメリット

  • 実行速度がやや遅い
  • モバイルアプリ開発には不向き

主要なPython Webフレームワーク

1. Flask(軽量フレームワーク)

Flaskは最小限の機能を持つマイクロフレームワークです。学習コストが低く、小規模なアプリケーション開発に最適です。

Flaskの基本例

from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello():
    return '<h1>Hello, World!</h1>'

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

2. Django(フルスタックフレームワーク)

Djangoは「バッテリー同梱」の思想で作られた高機能フレームワークです。大規模なWebアプリケーション開発に向いています。

Djangoの基本構造

# views.py
from django.http import HttpResponse

def hello(request):
    return HttpResponse('<h1>Hello, Django!</h1>')

# urls.py
from django.urls import path
from . import views

urlpatterns = [
    path('', views.hello, name='hello'),
]

3. FastAPI(高速APIフレームワーク)

FastAPIは現代的なAPI開発に特化したフレームワークです。自動ドキュメント生成と高いパフォーマンスが特徴です。

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def read_root():
    return {"message": "Hello, FastAPI!"}

Python Web開発環境の構築

必要なツール

  1. Python(3.8以上推奨)
  2. pip(パッケージ管理ツール)
  3. 仮想環境(venvまたはconda)
  4. コードエディタ(VS Code、PyCharm等)

環境構築手順

# 仮想環境作成
python -m venv myproject

# 仮想環境有効化(Windows)
myproject\Scripts\activate

# 仮想環境有効化(Mac/Linux)
source myproject/bin/activate

# Flaskインストール
pip install flask

実践:簡単なWebアプリを作ってみよう

シンプルなブログアプリ(Flask版)

from flask import Flask, render_template_string

app = Flask(__name__)

posts = [
    {'title': 'Python入門', 'content': 'Pythonは素晴らしい言語です'},
    {'title': 'Web開発', 'content': 'Flaskで簡単にWebアプリが作れます'}
]

@app.route('/')
def index():
    html = '''
    <h1>My Blog</h1>
    {% for post in posts %}
        <h2>{{ post.title }}</h2>
        <p>{{ post.content }}</p>
    {% endfor %}
    '''
    return render_template_string(html, posts=posts)

app.run(debug=True)

REST API作成(FastAPI版)

from fastapi import FastAPI
from pydantic import BaseModel

app = FastAPI()

class Item(BaseModel):
    name: str
    price: float

items = []

@app.post("/items/")
def create_item(item: Item):
    items.append(item)
    return item

@app.get("/items/")
def read_items():
    return items

データベース連携

SQLite with Flask

import sqlite3
from flask import Flask, g

app = Flask(__name__)
DATABASE = 'database.db'

def get_db():
    db = getattr(g, '_database', None)
    if db is None:
        db = g._database = sqlite3.connect(DATABASE)
    return db

@app.route('/users')
def show_users():
    cur = get_db().execute('SELECT * FROM users')
    users = cur.fetchall()
    return str(users)

フロントエンドとの連携

HTML テンプレート

from flask import Flask, render_template_string

app = Flask(__name__)

@app.route('/')
def home():
    template = '''
    <!DOCTYPE html>
    <html>
    <head><title>Python Web App</title></head>
    <body>
        <h1>{{ title }}</h1>
        <p>{{ message }}</p>
    </body>
    </html>
    '''
    return render_template_string(template, 
                                title="Python Web開発", 
                                message="成功しました!")

デプロイメント基礎

本番環境への準備

# requirements.txt作成
pip freeze > requirements.txt

# Gunicorn(本番用サーバー)
pip install gunicorn

# アプリ起動
gunicorn -w 4 -b 0.0.0.0:8000 app:app

Python Web開発のベストプラクティス

セキュリティ対策

  • 入力値の検証・サニタイゼーション
  • CSRF保護の実装
  • SQLインジェクション対策
  • HTTPS通信の使用

パフォーマンス最適化

  • データベースクエリの最適化
  • キャッシュの活用
  • 静的ファイルの圧縮
  • CDNの利用

コード品質

# 環境変数の使用
import os
from flask import Flask

app = Flask(__name__)
app.config['SECRET_KEY'] = os.environ.get('SECRET_KEY', 'dev-key')

# エラーハンドリング
@app.errorhandler(404)
def not_found(error):
    return '<h1>ページが見つかりません</h1>', 404

学習リソースと次のステップ

おすすめの学習順序

  1. Python基礎の習得
  2. FlaskでWeb開発の概念を理解
  3. データベース操作の学習
  4. Djangoで本格的な開発
  5. API開発(FastAPI/Django REST Framework)
  6. デプロイメントの実践

有用なリソース

  • 公式ドキュメント(Flask、Django、FastAPI)
  • Python Web開発チュートリアル
  • GitHubのサンプルプロジェクト
  • オンライン学習プラットフォーム

まとめ

Python Web開発は、その簡潔な文法と豊富なエコシステムにより、初心者から上級者まで幅広く愛用されています。Flaskで基礎を学び、Djangoで本格的な開発を行い、FastAPIで現代的なAPI開発を体験することで、包括的なWeb開発スキルを身につけることができます。

まずは小さなプロジェクトから始めて、段階的にスキルアップしていきましょう。Python Web開発の世界は奥深く、学ぶほどに新しい発見があります。今日からあなたもPython Web開発者への第一歩を踏み出してみませんか?

らくらくPython塾 – 読むだけでマスター

■プロンプトだけでオリジナルアプリを開発・公開してみた!!

■AI時代の第一歩!「AI駆動開発コース」はじめました!

テックジム東京本校で先行開始。

■テックジム東京本校

「武田塾」のプログラミング版といえば「テックジム」。
講義動画なし、教科書なし。「進捗管理とコーチング」で効率学習。
より早く、より安く、しかも対面型のプログラミングスクールです。

<短期講習>5日で5万円の「Pythonミニキャンプ」開催中。

<月1開催>放送作家による映像ディレクター養成講座

<オンライン無料>ゼロから始めるPython爆速講座