flask-python について
Flask と Python によるモジュール型 Web アプリや API の開発を支援するスキルです。構成、検証、認証、テスト、デプロイの指針をまとめています。
主な機能
- 01アプリケーションファクトリーと Blueprint
- 02型ヒントと関数のモジュール化
- 03入力検証とエラー処理
- 04JWT 認証の指針
- 05テストとデプロイの実践
活用シーン
- 01Blueprint による Flask API の構成
- 02リクエスト検証と JWT 保護の追加
- 03pytest によるエンドポイントのテスト
- 04Flask アプリのデプロイ準備
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ mindrally/ skills --skill flask-pythonインストール後、Claude Code で/flask-pythonを入力して読み込まれたか確認します。
詳細
Flask Python 開発
Flask と Python による Web 開発のエキスパートとして、Flask コードを記述する際は以下のガイドラインに従ってください。
主な原則
- 正確な Python の例を用いて、簡潔で技術的な回答を記述します
- 関数型の宣言的なプログラミングを使用し、Flask ビュー以外ではクラスを避けます
- コードの重複を避け、反復とモジュール化を優先します
- 補助動詞を使った説明的な変数名を使用します(例:
is_active、has_permission) - ディレクトリ名とファイル名には小文字とアンダースコアを使用します(例:
blueprints/user_routes.py) - ルートとユーティリティ関数には名前付きエクスポートを優先します
- 適用可能な場合は、Receive an Object, Return an Object(RORO)パターンを適用します
Python/Flask の標準
- 関数定義には
defを使用します - 可能な場合は、すべての関数シグネチャに型ヒントを実装します
- 構成:Flask アプリの初期化、ブループリント、モデル、ユーティリティ、設定
- 条件分岐では不要な波括弧を省略します
- 単純な条件文には、簡潔な一行構文を使用します
エラー処理とバリデーション
- エラーやエッジケースは関数のエントリーポイントで処理します
- エラー条件では早期リターンを使用し、深いネストを防ぎます
- 可読性を高めるため、関数内では成功時のロジックを最後に記述します
- 不要な
else文は避け、if-return パターンを使用します - 前提条件や無効な状態にはガード節を使用します
- ユーザーにわかりやすいメッセージを用いて、適切なエラーロギングを実装します
- 一貫した処理のため、カスタムエラー型またはエラーファクトリーを使用します
必須の依存関係
- Flask
- Flask-RESTful(RESTful API 開発)
- Flask-SQLAlchemy(ORM)
- Flask-Migrate(データベースマイグレーション)
- Marshmallow(シリアライズ/デシリアライズ)
- Flask-JWT-Extended(JWT 認証)
Flask 固有のガイドライン
- モジュール化とテストのために、Flask のアプリケーションファクトリーを使用します
- Flask Blueprints を使ってルートを整理します
- クラスベースのビューには Flask-RESTful を活用します
- 例外の種類ごとにカスタムエラーハンドラーを実装します
- Flask デコレーター(
before_request、after_request、teardown_request)を使用します - 一般的な機能には Flask 拡張機能を活用します
- Flask の config オブジェクトを通じて設定を管理します(開発、テスト、本番)
- Flask の
app.loggerを使ってロギングを実装します - Flask-JWT-Extended を使って認証/認可を処理します
パフォーマンスの最適化
- 頻繁にアクセスされるデータには Flask-Caching を使用します
- データベースクエリを最適化します(Eager Loading、インデックス作成)
- データベース接続にはコネクションプーリングを適用します
- データベースセッションを適切に管理します
- 時間のかかる処理にはバックグラウンドタスクを使用します(例:Celery)
主な規約
- Flask のアプリケーションコンテキストとリクエストコンテキストを適切に使用します
- API のパフォーマンス指標(応答時間、レイテンシ、スループット)を優先します
- ブループリント、明確な関心事の分離、環境変数を用いてアプリケーションを構成します
データベース操作
- ORM 操作には Flask-SQLAlchemy を使用します
- Flask-Migrate を使ってデータベースマイグレーションを実装します
- SQLAlchemy セッションを適切に管理し、使用後に確実に閉じます
シリアライズとバリデーション
- オブジェクトのシリアライズ/デシリアライズと入力のバリデーションには Marshmallow を使用します
- 一貫した処理のため、モデルごとにスキーマクラスを作成します
認証と認可
- Flask-JWT-Extended を使って JWT ベースの認証を実装します
- 認証が必要なルートを保護するためにデコレーターを使用します
テスト
- pytest を使って単体テストを記述します
- 統合テストには Flask のテストクライアントを使用します
- データベースとアプリケーションのセットアップにはテストフィクスチャを実装します
API ドキュメント
- Swagger/OpenAPI ドキュメントには Flask-RESTX または Flasgger を使用します
- すべてのエンドポイントをリクエスト/レスポンススキーマとともに記述します
デプロイ
- WSGI HTTP サーバーとして Gunicorn または uWSGI を使用します
- 本番環境で適切なロギングとモニタリングを実装します
- 機密情報と設定には環境変数を使用します
コメント
Markdown 対応