はじめに
機械学習モデルを「作る」だけでなく「使ってもらえる形にする」ためにはAPI化が必要です。FastAPIはPython製の高速なWebフレームワークで、機械学習モデルのサービング(API化)に広く使われています。
FastAPIのインストールと基本
pip install fastapi uvicorn joblib scikit-learn
# main.py
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel
from typing import List
import joblib
import numpy as np
app = FastAPI(
title='品質予測API',
description='製造パラメータから製品品質を予測します',
version='1.0.0'
)
# モデルの読み込み(起動時に一度だけ)
model = joblib.load('quality_model.pkl')
scaler = joblib.load('scaler.pkl')
# リクエストのスキーマ定義
class PredictRequest(BaseModel):
temperature: float
pressure: float
speed: float
class Config:
json_schema_extra = {
'example': {
'temperature': 200.5,
'pressure': 5.2,
'speed': 1500
}
}
# レスポンスのスキーマ定義
class PredictResponse(BaseModel):
prediction: int
probability: float
label: str
@app.get('/')
def health_check():
return {'status': 'ok', 'message': '品質予測APIが起動中です'}
@app.post('/predict', response_model=PredictResponse)
def predict(request: PredictRequest):
try:
X = np.array([[request.temperature, request.pressure, request.speed]])
X_scaled = scaler.transform(X)
prediction = int(model.predict(X_scaled)[0])
probability = float(model.predict_proba(X_scaled)[0].max())
label = '良品' if prediction == 1 else '不良品'
return PredictResponse(
prediction=prediction,
probability=probability,
label=label
)
except Exception as e:
raise HTTPException(status_code=500, detail=str(e))
@app.post('/predict/batch')
def predict_batch(requests: List[PredictRequest]):
results = []
for req in requests:
X = np.array([[req.temperature, req.pressure, req.speed]])
X_scaled = scaler.transform(X)
pred = int(model.predict(X_scaled)[0])
prob = float(model.predict_proba(X_scaled)[0].max())
results.append({'prediction': pred, 'probability': prob})
return {'results': results, 'total': len(results)}
# 起動
uvicorn main:app --reload --host 0.0.0.0 --port 8000
# http://localhost:8000/docs でSwagger UIが自動生成される
Pythonからアクセスする
import requests
response = requests.post(
'http://localhost:8000/predict',
json={'temperature': 210.0, 'pressure': 5.8, 'speed': 1600}
)
print(response.json())
# {'prediction': 1, 'probability': 0.87, 'label': '良品'}
まとめ
FastAPIは型ヒントを使ったスキーマ定義・自動ドキュメント生成・非同期処理が揃った現代的なWebフレームワークです。機械学習モデルをFastAPIでAPI化→Dockerでコンテナ化→クラウドにデプロイという流れがMLOpsの基本です。ポートフォリオとして動くAPIを作ってGitHubに公開すると、MLエンジニアとしての実力証明になります。
💼 ITエンジニア転職特化
自分らしく働けるエンジニア転職を目指すなら【strategy career】
年収1000万・残業月30時間以下・リモート可の求人多数
※アフィリエイト広告を含みます
![]()
※本記事にはアフィリエイトリンクが含まれます。


コメント