はじめに
PythonでAPIを作るなら、今もっとも注目されているのが FastAPI! 非同期処理・自動ドキュメント・型ヒントによる補完性など、開発体験がとにかく快適で高速です。
今回は、FastAPIを使ってフロントエンドと分離されたAPIサーバーのテンプレートを構築し、さらに以下のモダンなツールを組み合わせて開発効率を最大化します。しかも一発で
- uv:仮想環境と依存管理を爆速で!
- ruff:Linter + フォーマッターでコードを美しく!
- SQL Server:業務システムでも使われる堅牢なRDBMSと接続!
- pytest:テストも自動化して品質をキープ!
このテンプレートは、将来的に株価分析システムを構築するためのベースとして設計しています。
🧰 使用技術(FastAPI × フロントエンド分離構成)
💡 このテンプレートは、株価分析システムを構築するためのベースとして設計しています。 バックエンドとフロントエンドを分離し、拡張性・保守性・再現性を重視した構成です。
| 技術 | 役割・特徴 |
|---|---|
| FastAPI | Python製の軽量・高速なWeb APIフレームワーク。型ヒントで補完が効き、自動ドキュメント生成や非同期処理にも対応。 |
| uvicorn | FastAPIを実行するASGIサーバー。開発中のホットリロードや非同期処理に最適。 |
| uv | 仮想環境の作成・依存管理・パッケージ実行を一括でこなす爆速ツール。pyproject.tomlベースで管理。 |
| ruff | Linter + フォーマッターを統合した超高速ツール。PEP8, isort, flake8などを1つでカバー。 |
| SQL Server | 株価データの保存・分析に使用予定のRDBMS。ODBC経由で接続。 |
| pytest | テストフレームワーク。FastAPIとの相性も良く、APIの動作確認やCIに最適。 |
| Python | 最新の構文・型ヒント・非同期機能を活かすためのベース言語。 |
| VSCode | 開発用エディタ。FastAPI + uv + ruff の組み合わせと相性抜群。 |
| GitHub | バージョン管理とチーム開発に必須。テンプレートの共有やCI/CDにも活用予定。 |
| React / Streamlit(予定) | フロントエンドは別ディレクトリに分離予定。SPA(React)または軽量UI(Streamlit)を想定。 |
手動でフォルダ構成を作ると面倒
FastAPI のプロジェクトを毎回手作業で作るのは意外と手間がかかります。
特に uv・Ruff・pytest・SQL Server などを組み合わせた構成は、
- フォルダ作成
- uv init
- 不要ファイル削除
- 依存関係追加
- ディレクトリ構成作成
と、やることが多いですよね。
私自身、株価分析アプリ(WebAPI 形式)を作る予定があり、日経225銘柄のスクレイピング、yfinance による株価取得、機械学習による株価予測などを実装するための土台を毎回作るのは非効率だと感じていました。
そこで、Windows のコマンドプロンプト(cmd.exe)だけで、FastAPI 開発環境を丸ごと自動生成できるテンプレートスクリプトを作りました。
- uv(Python パッケージ管理)
- FastAPI
- Ruff(Linter)
- pytest
- SQL Server(pyodbc + SQLAlchemy)
- pydantic-settings
- .venv(仮想環境)
- 株価分析アプリに最適なディレクトリ構成(ml・utils フォルダも含む)
すべてを 1 回の実行で自動構築できます。
📁 完成するディレクトリ構成(ml・utils はフォルダのみ)
スクリプトを実行すると、次の構成が自動で作られます。
<PROJECT_NAME>/
├── backend/
│ ├── app/
│ │ ├── api/
│ │ │ └── v1/
│ │ │ └── routes.py
│ │ ├── core/
│ │ │ └── config.py
│ │ ├── db/
│ │ │ ├── connection.py
│ │ │ └── models.py
│ │ ├── services/
│ │ │ └── dummy_service.py
│ │ ├── ml/ ← フォルダのみ
│ │ ├── utils/ ← フォルダのみ
│ │ ├── main.py
│ │ └── __init__.py
│ ├── tests/
│ │ └── test_hello.py
│ ├── pyproject.toml
│ ├── uv.lock
│ ├── .gitignore
│ ├── .env
│ └── .venv
└── frontend/
株価分析アプリでは、
services/→ スクレイピング・yfinanceml/→ 機械学習モデル(後で追加)utils/→ 共通処理(後で追加)
といった責務分離が非常に重要です。 フォルダだけ先に作っておくことで、後から自然に拡張できます。
🛠️ setup.cmd(ml・utils はフォルダのみの完全版)
以下を setup.cmd として保存し、cmd.exe で実行するだけです。
@echo off
setlocal enabledelayedexpansion
REM ============================================
REM プロジェクト名を変数で定義(自由に変更可能)
REM ============================================
set PROJECT_NAME=stock-api-project
REM ============================================
REM プロジェクトのルートフォルダを作成
REM ============================================
mkdir %PROJECT_NAME%
mkdir %PROJECT_NAME%\backend
mkdir %PROJECT_NAME%\frontend
REM ============================================
REM backend フォルダへ移動
REM ============================================
cd %PROJECT_NAME%\backend
REM ============================================
REM uv プロジェクト初期化
REM ============================================
uv init
REM uv init が作る不要ファイルを削除
del /Q main.py 2>nul
del /Q README.md 2>nul
REM ============================================
REM 仮想環境(.venv)を作成
REM ============================================
uv venv
REM ============================================
REM 必要な依存関係をインストール
REM ============================================
uv add fastapi uvicorn[standard]
uv add python-dotenv
uv add ruff
uv add pytest
uv add sqlalchemy
uv add pyodbc
uv add pydantic-settings
REM ============================================
REM 必要なディレクトリを作成
REM ============================================
mkdir app
mkdir app\api
mkdir app\api\v1
mkdir app\core
mkdir app\db
mkdir app\services
mkdir app\ml
mkdir app\utils
mkdir tests
REM ============================================
REM 必要なファイルを作成(ml/utils はフォルダのみ)
REM ============================================
type nul > app\api\v1\routes.py
type nul > app\core\config.py
type nul > app\db\connection.py
type nul > app\db\models.py
type nul > app\services\dummy_service.py
type nul > app\main.py
type nul > app\__init__.py
type nul > tests\test_hello.py
type nul > .env
echo ============================================
echo FastAPI + uv + Ruff + SQL Server + pytest
echo 株価分析アプリ向けの開発環境を自動構築しました(%PROJECT_NAME%)
echo ============================================
▶️ 実行方法
setup.cmdを任意のフォルダに置く- VS Code のターミナルを cmd.exe に切り替える
- 実行
setup.cmdこれだけで、株価分析アプリの開発を始めるための土台が一瞬で整います。
🎯 このテンプレートのメリット
- 株価分析アプリに最適化された構成 → API / core / db / services / ml / utils がきれいに分離
- ml と utils はフォルダだけ作成 → 必要になったタイミングでファイルを追加できる柔軟性
- uv init → .venv → 依存関係 → ディレクトリ構成 → すべて自動化
- SQL Server(pyodbc + SQLAlchemy)対応 → 実務でもそのまま使える
- VS Code と相性抜群 → そのまま開発開始できる
🌱 次回予告:FastAPI を実際に動かす(py ファイルのサンプル付き)
次回は、今回作成したテンプレートに 最小限の Python コードを追加して、FastAPI を実際に起動できる状態まで持っていきます。
具体的には:
app/main.py→ FastAPI アプリ本体app/api/v1/routes.py→/helloや/stocksの簡単な APIapp/core/config.py→.env読み込みapp/db/connection.py→ SQLAlchemy の接続テンプレートpytestで動作確認uv run uvicorn app.main:app --reloadで起動確認
ここまでできれば、株価分析アプリの API・スクレイピング・yfinance・機械学習の実装にすぐ着手できる状態になります。


コメント