FlaskはPythonで書けるシンプルな軽量Webフレームワークです。Djangoより入門しやすく、小〜中規模のWebアプリやAPIサーバー構築に向いています。
FlaskとDjangoの違い
| 項目 | Flask | Django |
|---|---|---|
| 規模感 | マイクロフレームワーク(軽量) | フルスタックフレームワーク |
| 学習コスト | 低い(シンプル) | 高い(機能が多い) |
| 向き先 | 小〜中規模API・シンプルなWeb | 大規模Webアプリ・CMS |
| ORM | なし(SQLAlchemy等を別途使用) | Django ORM が組み込み |
Flaskのインストールと最初のアプリ
# インストール
pip install flask
# app.py
from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
return 'Hello, Flask!'
@app.route('/hello/')
def hello(name):
return f'こんにちは、{name}さん!'
if __name__ == '__main__':
app.run(debug=True)
ルーティングとHTTPメソッド
from flask import Flask, request, jsonify
app = Flask(__name__)
# GETリクエスト
@app.route('/users', methods=['GET'])
def get_users():
users = [{'id': 1, 'name': '太郎'}, {'id': 2, 'name': '花子'}]
return jsonify(users)
# POSTリクエスト(JSON受け取り)
@app.route('/users', methods=['POST'])
def create_user():
data = request.get_json()
return jsonify({'message': f"{data['name']}を作成しました"}), 201
# パスパラメータ
@app.route('/users/', methods=['GET'])
def get_user(user_id):
return jsonify({'id': user_id, 'name': '太郎'})
Jinja2テンプレート(HTML出力)
# app.py
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/')
def index():
users = ['太郎', '花子', '次郎']
return render_template('index.html', users=users, title='ユーザー一覧')
# templates/index.html
#
#
# {{ title }}
#
# {% for user in users %}
# - {{ user }}
# {% endfor %}
#
#
SQLAlchemyでデータベース連携
pip install flask-sqlalchemy
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///mydb.db'
db = SQLAlchemy(app)
# モデル定義
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(100), nullable=False)
email = db.Column(db.String(120), unique=True)
# DB作成・データ追加
with app.app_context():
db.create_all()
user = User(name='太郎', email='taro@example.com')
db.session.add(user)
db.session.commit()
Flaskを学ぶ上でのロードマップ
- Pythonの基礎(変数・関数・クラス)
- FlaskでHello World → ルーティング
- テンプレート(Jinja2)でHTML出力
- SQLAlchemyでDB連携
- REST APIの設計・作成
- デプロイ(Render・Heroku・AWS等)
まとめ
FlaskはPythonで最も手軽にWebアプリ・APIを作れるフレームワークです。Pythonの基礎が分かれば1週間でシンプルなAPIが作れます。バックエンドエンジニアを目指す入門として最適です。
📚 プログラミング初心者におすすめの本