Flask

Flask API 作成手順と環境構築ガイド (Python 3.12)

ⓘ本ページはプロモーションが含まれています

スポンサードリンク

開発環境の準備

ローカルで Flask API を構築する際は、まず Python とパッケージ管理ツール が正しくインストールされているかを確認します。バージョンが揃っていれば仮想環境の作成や依存関係の解決がスムーズに進み、以降の手順でつまずくリスクが低減します。

Python と pip のバージョン確認

Python と pip が期待通りのバージョンかどうかをチェックするだけで、環境構築の第一関門はクリアできます。

仮想環境の作成(venv または Poetry)

プロジェクトごとに独立した環境を用意すれば、システム全体への影響を防げます。以下では 標準ライブラリの venv と、依存管理が楽になる Poetry の2パターンを紹介します。

venv の手順

venv は Python に同梱されているので追加インストールは不要です。

Poetry の手順

Poetry は依存関係のロックファイル管理が得意で、チーム開発や CI で便利です。2026年時点でも多くのプロジェクトで採用されており、活発にメンテナンスされています(「最も活発」等の断定は避けています)。


Flask と拡張パッケージのインストール

Flask 本体だけでも API は動作しますが、実務では バリデーション・CORS・環境変数管理 が必須です。ここでは主要な拡張機能を pip と Poetry の両方でインストールする方法を示します。

必要な拡張パッケージ

以下のコマンド一括実行で、API 開発に必要なライブラリがすべて揃います。バージョンはマイナーバージョンまで固定して互換性リスクを低減します。

依存管理ツール比較

依存関係のロック機能は環境再現性に直結します。Poetry と pipenv の特徴を表でまとめました(どちらを選んでも CI に組み込みやすい構成です)。
| ツール | 主な利点 |
|----------|--------------------------------------|
| Poetry | pyproject.toml と lock ファイルで再現性◎、プラグインエコシステムが豊富 |
| pipenv | Pip と virtualenv を統合、設定ファイルがシンプル |


プロジェクト構成と基本コード

保守しやすい Flask アプリは モジュール化 されたディレクトリ構造を採用します。ここでは初心者でも直感的に理解できるベストプラクティスを示します。

ディレクトリ構造例

src/ パッケージにビジネスロジックを集約し、エントリポイントはプロジェクトルートの app.py とすることで、Docker ビルドやテスト時のパスがシンプルになります。

エントリポイントとアプリファクトリー

app.py はシンプルな起動スクリプトに留め、実際の Flask アプリは src/__init__.pycreate_app() が生成します。これによりテスト時にインスタンスを簡単に作成でき、設定分離が容易になります。


API 実装とバリデーション

実務向けの API では 入力検証統一エラーフォーマット が重要です。ここでは pydantic を用いたスキーマ定義と、CRUD エンドポイントの実装例を示します。

pydantic スキーマと CRUD エンドポイント

pydantic は型ヒントから自動的にバリデーションを行い、エラーメッセージも JSON 形式で取得できます。以下はメモリ上の簡易ストアを利用したサンプルです。

バリデーションエラーハンドリングのベストプラクティス

  • ステータスコードは 422(Unprocessable Entity)を使用し、クライアントに入力ミスであることを示す。
  • エラー内容は exc.errors() が生成する JSON 配列そのまま返却すると、フロントエンド側で自動的に表示できる。
  • 例外ハンドラをグローバルに登録しておくと、個別リソースでの try/except を減らせる(ここではシンプルさのためリソース内で処理)。

テスト・CI とコンテナ化

品質保証には 自動テスト継続的インテグレーション (CI) が不可欠です。以下に pytest を使ったテスト例、GitHub Actions の設定例、そして Docker コンテナ化の基本構成を示します。

pytest と Flask test_client の使い方

test_client() は実サーバーを起動せずにリクエストをシミュレートでき、CI で高速に実行できます。

GitHub Actions で CI を走らせる例

Poetry のキャッシュを有効にすれば、次回以降のジョブが数十秒短縮されます。

Dockerfile と docker‑compose の基本構成

マルチステージビルドで不要なビルドツールを除外し、イメージサイズを約 100 MB に抑えます。

ポイント
docker compose up --build でローカル環境と同一設定のコンテナが立ち上がります。
VS Code の「Remote‑Containers」拡張と組み合わせれば、IDE 全体をコンテナ内で動かすことも可能です。


本番デプロイと次のステップ

開発環境から本番へ移行する際は Gunicornnginx のリバースプロキシ構成が一般的です。ここでは主要な設定ポイントと、将来的に拡張すべき項目をまとめます。

Gunicorn + nginx の構成ポイント

  • ワーカー数の目安CPUコア数 × 2 + 1(例: 4 コア → 9 ワーカー)
  • Gunicorn 起動例(uvicorn ワーカーで非同期対応):

  • nginx 設定サンプル/etc/nginx/conf.d/api.conf

注意
本番環境では TLS 終端を nginx が担うほか、.env.production に機密情報(データベースパスワード等)を置き、Docker Compose の environment: で安全に注入します。

今後の拡張アイディア

  • 永続化 DB:PostgreSQL コンテナを追加し、SQLAlchemy と連携させる。
  • テストカバレッジ向上pytest-cov を組み込み、GitHub Actions で 80 % 以上のカバレッジを必須にする。
  • CI/CD パイプライン:AWS ECS、GCP Cloud Run、Azure Container Apps への自動デプロイを設定。
  • Observability:Prometheus + Grafana でメトリクス収集、ELK スタックでログ集約。

まとめ

  1. Python 3.12 と pip を確認し、venv または Poetry で仮想環境を構築。
  2. Flask + flask‑restful・flask‑cors・python‑dotenv に加え、pydantic で入力検証を実装。
  3. ディレクトリは src/ にロジックを集約し、app.py がエントリポイント とすることで保守性向上。
  4. pytest と GitHub Actions で自動テストを走らせ、Docker で本番と同等のコンテナを作成。
  5. Gunicorn + nginx の構成でスケーラブルな本番運用が可能。

これらの手順に従えば、ローカル環境で Flask API を迅速に立ち上げた後、そのまま本格的なサービスへと拡張できる基盤が整います。ぜひ実際に手を動かしながら確認してみてください。

スポンサードリンク

-Flask