Flask セットアップガイド(Poetry使用)

YELL for ALLではパッケージ管理として、Poetryを使用してFlaskプロジェクトをセットアップします。

前提条件

  • Python 3.8以上がインストールされていること

  • Poetryがインストールされていること

Poetryのインストール確認

# Poetryのバージョン確認
poetry --version

# インストールされていない場合(macOS/Linux)
curl -sSL https://install.python-poetry.org | python3 -

# Windows(PowerShell)
(Invoke-WebRequest -Uri https://install.python-poetry.org -UseBasicParsing).Content | python -

1. プロジェクトの作成

プロジェクトフォルダを作成し、Poetryで初期化します。

# 新しいプロジェクトの作成
mkdir flask-app
cd flask-app
poetry init

poetry initを実行すると、対話形式でプロジェクト情報を設定できます:

  • パッケージ名

  • バージョン

  • 説明

  • 作成者

  • ライセンス

  • 依存関係

2. 仮想環境の設定

Poetryは自動で仮想環境を管理しますが、明示的に設定することも可能です。

# 仮想環境の作成(Poetryが自動で行うため通常は不要)
poetry env use python3

# 仮想環境に入る
poetry shell

# 仮想環境の情報確認
poetry env info

3. Flaskのインストール

基本のFlaskパッケージをインストールします。

# Flaskをインストール
poetry add flask

4. 追加パッケージのインストール

poetry initで作成されたpyproject.tomlファイルに依存関係を追加します。 Flask Tutorialに沿って、 開発に便利なパッケージをインストールします。

# 開発用パッケージをインストール
poetry add --group dev pytest black flake8

# その他の便利なパッケージ
poetry add python-dotenv flask-cors

# データベース関連(必要に応じて)
poetry add flask-sqlalchemy flask-migrate

# 認証関連(必要に応じて)
poetry add flask-login flask-wtf

# テンプレートエンジン関連(必要に応じて)
poetry add jinja2

5. 基本的なFlaskアプリケーションの作成

プロジェクト構造の作成

# 基本的なディレクトリ構造を作成
mkdir app
mkdir tests
touch app.py
touch .env
touch .flaskenv

最小限のFlaskアプリケーション

app.pyファイルを作成し、以下の内容を記述します:

from flask import Flask
from dotenv import load_dotenv
import os

# 環境変数の読み込み
load_dotenv()

app = Flask(__name__)

@app.route('/')
def hello():
    return 'Hello, Flask with Poetry!'

@app.route('/health')
def health():
    return {'status': 'healthy', 'message': 'Flask app is running'}

if __name__ == '__main__':
    debug_mode = os.getenv('FLASK_DEBUG', 'False').lower() == 'true'
    app.run(debug=debug_mode, host='0.0.0.0', port=5000)

環境設定ファイル

.envファイルを作成:

FLASK_DEBUG=True
FLASK_ENV=development
SECRET_KEY=your-secret-key-here

.flaskenvファイルを作成:

FLASK_APP=app.py

6. アプリケーションの起動

# 仮想環境に入る
poetry shell

# Flaskアプリケーションを起動
python app.py

# またはFlaskコマンドを使用
flask run

# デバッグモードで起動
flask run --debug

ブラウザで http://localhost:5000 にアクセスして動作確認を行います。

7. テストの設定

tests/test_app.pyファイルを作成:

import pytest
from app import app

@pytest.fixture
def client():
    app.config['TESTING'] = True
    with app.test_client() as client:
        yield client

def test_hello(client):
    response = client.get('/')
    assert response.status_code == 200
    assert b'Hello, Flask with Poetry!' in response.data

def test_health(client):
    response = client.get('/health')
    assert response.status_code == 200

テストを実行:

# テストの実行
poetry run pytest

# 詳細な出力でテストを実行
poetry run pytest -v