導入(問題提起)

PythonでWebシステム開発を始める際に「BottleとFastAPIのどちらを選ぶべきか」で迷うケースは非常に多いです。結論はシンプルで、「今の要件とチームの成熟度」で決めれば失敗しません。本記事では小規模〜中規模の業務システムを念頭に、Excel Web化からの段階導入という現実的な文脈で、両者の選定基準・技術的な違い・移行のしやすさを3000字超で丁寧に比較します(SEO: Webシステム開発/業務システム/Python/Excel Web化)。

課題の詳細説明

検討時に立ちはだかる典型的な迷い:

  • とにかく早く“動くもの”を社内に提供したい(要件固めの前段階)
  • 将来はAPI連携やB2B連携、モバイルアプリとの共存も視野に入れたい
  • 型での入力検証や自動ドキュメント生成、テスト容易性も捨てがたい
  • 小さなチームで運用するため、学習コストと保守コストを最小化したい

解決方法(比較の軸)

選択のブレを無くすため、次の軸で両者を比較します。

  1. 学習コスト:
  2. - Bottle:最小。単一ファイルでも動く。ルーティングとテンプレートが中心 - FastAPI:中。Pydantic(型)や依存性注入の理解が必要

  3. 初速と中長期の伸び:
  4. - 初速:Bottleが速い(とにかく作って出す) - 中長期:FastAPIは型定義・OpenAPI自動生成・バリデーションで保守が楽

  5. エコシステム:
  6. - FastAPIはツールが豊富(認証、スキーマ、ドキュメント、テストの情報量) - Bottleは軽量で自由度が高い(自分で選んで足す設計に向く)

  7. アーキテクチャ適性:
  8. - 社内向けExcel Web化の最小構成→Bottle - API中心・外部連携前提・将来スケール→FastAPI

具体例(選定ガイド)

ユースケース別のおすすめ:

  • 社内申請・台帳のExcel Web化:Bottle+SQLiteでMVP→定着後にFastAPIへ段階移行
  • 顧客・在庫のB2B連携やモバイル連携:最初からFastAPIでスキーマ駆動設計
  • 移行期間が短いPoC:Bottleで“仮説検証”し、当たりが出たらFastAPIで本実装

どちらを採ってもPythonの生産性は高く、移行も比較的容易です。重要なのは“いま必要な価値を最短で出す”ことと“次の一歩を確保する”ことの両立です。

技術的な解説

ルーティングと入力検証


# Bottle(最小で画面を出す)
from bottle import route, run, request

@route('/customers', method='POST')
def create_customer():
    name = request.forms.get('name')  # サーバ側での単純チェックを自作
    # DBへINSERT...
    return 'ok'

# FastAPI(型で堅くする)
from fastapi import FastAPI
from pydantic import BaseModel, constr

app = FastAPI()

class Customer(BaseModel):
    name: constr(min_length=1, max_length=80)

@app.post('/customers')
def create_customer(cust: Customer):
    # cust.name は型検証済み
    return {'ok': True}

テンプレートとAPIドキュメント

  • Bottle:テンプレート(ビュー)で画面を素早く作る。UIの反復に向く
  • FastAPI:OpenAPI/Swaggerが自動生成され、外部連携やチーム開発に有利

権限と監査(共通パターン)

どちらでもRBACと監査ログは導入可能。共通ミドルウェア/デコレータで権限チェックを一元化し、audit_logsテーブルに保存。削除・承認は二要素を推奨。

データベースの選択

  • 最小:SQLiteで開始(単一ファイル・バックアップ容易)
  • 成長:MySQL/PostgreSQLへ移行(接続プール・PITR)

導入の流れ

  1. 目的の明確化:Excel Web化で“どの業務を、誰が、どの頻度で使うか”を定義
  2. フレームワーク選定:上記の比較軸で当面6〜12か月の現実解を決定
  3. MVP実装:画面/入力/保存/検索/権限/監査/バックアップの最小セット
  4. 検証:社内10〜30人で試用、運用負荷と改善点を収集
  5. 次の一歩:FastAPI化(必要なら)やDB移行、API公開の計画を立てる

まとめ

  • 速攻試作ならBottle、スキーマ駆動・拡張性ならFastAPI
  • 小規模はSQLite開始で十分、将来MySQL/PostgreSQLへ段階移行
  • 選定基準は“要件とチームの成熟度”。今の価値と次の一歩を両立させる

問い合わせ導線

フレームワーク選定やアーキテクチャ相談は、お問い合わせから。業務システムの現実解をご提案します。

Webシステム開発のご相談は monou まで