higuma
Pythonで書き、Rustで配信する。
A Flask-inspired Python web framework with a Rust HTTP core.
日本語ドキュメント · English documentation · API reference · Examples · Releases
higumaは、書き慣れたPythonのdecorator APIに、axum / Tokioを使ったRustの実行基盤を 組み合わせたWebフレームワークです。JSON API、HTML SSR、リアルタイム通信を、 Python側の必須runtime dependencyなしで構築できます。 名前は日本のヒグマに由来します。
0.6.0 — CSR/SPA、複数static root、Vite manifest連携を追加しました。 Flask風context・session・flash・URL生成は0.5.0から利用できます。 変更履歴 / 機能対応表
はじめる · 型付きAPI · 機能 · フロントエンド · 対応範囲 · 運用 · 貢献する
Quick start
CPython 3.10以降でインストールできます。
python -m pip install -U higuma
app.pyを作成します。
from higuma import Higuma, request
app = Higuma(__name__)
@app.get("/")
def index():
return {"message": "Hello from higuma"}
@app.post("/echo")
def echo():
return {"received": request.json}
if __name__ == "__main__":
app.run()
起動後、http://127.0.0.1:8000 を開きます。
python app.py
CLIからも起動できます。
higuma run app:app --host 127.0.0.1 --port 8000
higuma routes app:app
higuma run app:app --processes 4 --max-connections 1024
GETの応答を確認したら、Getting startedで request、template、CLIの使い方へ進めます。
型付きAPI
型付きAPIでは、標準のAnnotatedとdataclassだけで入力元、制約、dependency、出力を宣言できます。
from dataclasses import dataclass
from typing import Annotated
from higuma import Body, Depends, Higuma, QueryParam
app = Higuma(__name__)
@dataclass
class Item:
name: str
price: float
def page_size(limit: Annotated[int, QueryParam(ge=1, le=100)] = 20):
return limit
@app.post("/items", response_model=Item, status_code=201)
def create_item(
item: Annotated[Item, Body()],
limit: Annotated[int, Depends(page_size)],
):
return item
入力はruntimeで検証・変換され、不正時は構造化された422になります。schemaは同じ宣言から OpenAPI 3.1へ反映されます。
型付きルートの実行例はexamples/modern_typed_api.py、
宣言と制約の詳細はAPIリファレンスを参照してください。
主な機能
| 分野 | 機能 |
|---|---|
| HTTP | typed input、dependency injection、path converter、自動HEAD/OPTIONS、async handler |
| Response | response model、HTML、JSON、cookie、Range file、sync/async streaming、background task |
| Realtime | SSE、text/binary/JSON WebSocket、Origin検証、認証preflight、bounded queue |
| SSR | MiniJinja、compiled template cache、context processor |
| 構成 | Blueprint、class-based view、lifespan、WSGI/ASGI mount、startup/shutdown hook |
| API設計 | OpenAPI 3.1、Swagger UI、dataclass/TypedDict/enum/UUID/date schema |
| Data | dependency-free SQLite ORM、transaction、pagination、typed field |
| Auth | signed cookie session、login/role/permission、OAuth 2.0 + PKCE |
| Security | scrypt password、signed token、CSRF、CORS、rate limit、trusted host/proxy |
| Operations | test client、CLI、multi-process supervisor、worker restart limit |
| Frontend(0.6.0以降) | SPA history fallback、複数static root、Vite manifest、cache / MIME制御 |
完全な一覧と注意点は機能ガイドおよび APIリファレンスを参照してください。
Validationについて:
Annotated[..., Body()]等のmarkerとresponse_modelはruntime検証を 有効にします。従来のrequest_body=やreturn annotation単独はschema metadataです。
CSR/SPAとフロントエンド
以下の機能にはhiguma 0.6.0以降が必要です。0.5.0から利用する場合は更新してください。
from higuma import Higuma
app = Higuma(__name__, static_folder=None)
@app.get("/api/status")
def status():
return {"status": "ok"}
# 先にフロントエンドをビルドし、index.htmlを含む公開用フォルダを用意します。
app.mount_spa("/app", "frontend/dist")
- CSR — 深いURLの再読み込みに対応し、APIや見つからないassetをHTMLに置き換えません。
- 静的配信 —
mount_static()で公開先を分離し、HTMLの再検証とassetのcacheを設定できます。 - Vite + Python HTML —
ViteManifestでhash付きJS・CSSとmodulepreloadを解決します。
React / Vue等のビルド、HMR、Node SSRの実行環境はフロントエンド側で用意します。 設置パス、cookie認証、CORS、デプロイの注意は フロントエンドガイド(English)を参照してください。
対応範囲
- Python: CPython 3.10以降(CIでは3.10〜3.14を検証)
- OS: Windows x86-64、Linux x86-64 / ARM64、macOS x86-64 / Apple Silicon
- Linux: manylinux wheelとmusllinux x86-64 wheelを配布
- Database: 組み込みORMはSQLiteのみ
- Protocol: 組み込みHTTP serverとWebSocket。TLSはreverse proxyで終端
wheelがないplatformではsource distributionからRust buildが必要です。公開済みの配布物は PyPIで確認できます。
互換性と設計上の境界
higumaはFlaskのdrop-in replacementではなく、ASGI serverへ渡すASGI applicationでも ありません。組み込みのRust serverで実行します。
既存のWSGI / ASGI applicationはHTTPのroute配下へmountできますが、mount先の WebSocket、ASGI lifespan、無期限streamingを提供するものではありません。 組み込みのbackground taskとrate limitはprocess-localです。耐久性のあるjobや 分散状態には外部基盤を使用してください。
詳細はFlask互換性 / English compatibility guideと 機能対応表にまとめています。
Examples
examples/には、最小アプリだけでなく次の実行例があります。
- routing、async handler、型付き入力、dependency injection、class-based view
- response、cookie、file、multipart upload、streaming、SSE、background task
- Blueprint、lifespan、WebSocket、WSGI/ASGI mount、OpenAPI
- SQLite ORM、session authentication、role/permission、OAuth
- security middleware、signed token、in-process testing
- multi-process supervisor
| やりたいこと | 実行例 |
|---|---|
| 型付きAPI・入力検証 | modern_typed_api.py |
| session・context・flash | flask_compat.py |
| 既存Flaskアプリを接続 | flask_mount.py |
| リアルタイムチャット | websocket_chat.py |
| streaming・SSE | streaming_sse.py |
| SQLiteとtransaction | orm_blog.py |
| 認証・CSRF・proxy設定 | security_hardened.py |
| CSR / Vite連携(0.6.0以降) | csr_app.py / vite_ssr.py |
必要な環境変数と実行コマンドはExamplesガイドに まとめています。
本番運用
higumaは活発に開発中です。本番採用前に、対象アプリケーションで負荷試験、障害試験、 security reviewを実施してください。
debug=Falseのまま運用する- Caddy、nginx、Cloudflare等でTLSを終端しHTTPSを強制する
- 32バイト以上の推測不能なsecretをsecret managerから読み込む
TrustedHostMiddlewareと、正確なCORS / WebSocket Originを設定するProxyHeadersMiddlewareでは直接接続するproxyだけを信頼する- upload size、保存先、拡張子をアプリケーション側でも制限する
- SQLite fileを定期backupし、multi-process時のwrite負荷を測定する
- network timeout、request buffering、connection limitはreverse proxyでも設定する
詳しくはデプロイガイドと Security Policyを参照してください。
開発とコントリビューション
不具合報告、回帰テスト、ドキュメント改善、互換性の検証を歓迎します。 開発環境の準備にはRust toolchainも必要です。
python -m pip install -e ".[dev,docs]"
python -m pytest
python -m ruff check python tests examples
python -m ruff format --check python tests examples
cargo fmt --all -- --check
cargo clippy --locked --all-targets --all-features -- -D warnings
cargo test --locked --all-features
mkdocs build --strict
変更前にCONTRIBUTING.mdと、coding agent向けの SKILL.mdを確認してください。
CIではPython / OSのmatrix test、Rustのtest / lint、docs build、配布wheelのsmoke testを 実行します。依存関係の監査は専用workflowで 実施します。バッジは各workflowへのリンクであり、脆弱性が存在しないことの保証ではありません。
不具合はIssue trackerへ、 脆弱性は公開IssueではなくSecurity Policyの窓口へ報告してください。
Links
- 日本語ドキュメント
- English documentation
- PyPI
- Examples
- Changelog
- Issue tracker
- Security Policy
- Contributing
- ロゴ・ブランド素材
ライセンス
Metadata
Release files for higuma 0.6.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| higuma-0.6.0.tar.gz | 1.1 MB | With provenance | Details |
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| higuma-0.6.0-cp310-abi3-win_amd64.whl | CPython 3.10 | abi3 | Windows x86-64 | Details |
| higuma-0.6.0-cp310-abi3-musllinux_1_2_x86_64.whl | CPython 3.10 | abi3 | Linux musl 1.2+ x86-64 | Details |
| higuma-0.6.0-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl | CPython 3.10 | abi3 | Linux glibc 2.17+ x86-64 | Details |
| higuma-0.6.0-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl | CPython 3.10 | abi3 | Linux glibc 2.17+ ARM64 | Details |
| higuma-0.6.0-cp310-abi3-macosx_11_0_arm64.whl | CPython 3.10 | abi3 | macOS 11.0+ ARM64 | Details |
| higuma-0.6.0-cp310-abi3-macosx_10_12_x86_64.whl | CPython 3.10 | abi3 | macOS 10.12+ x86-64 | Details |
Total release size: 10.9 MB
Release files / higuma-0.6.0.tar.gz
| Download URL | higuma-0.6.0.tar.gz |
|---|---|
| Size | 1.1 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
36fd700eac8be7429c63227ea39427b1f167293b00a327ef66100cc7053b34ae
|
|
BLAKE2b-256 checksum How to use checksums |
5bedc11358166befd8ec5e8ef1f311bd6dbeb7b41558dafabe6c2b75e5f27527
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.
Transparency logRelease files / higuma-0.6.0-cp310-abi3-win_amd64.whl
| Download URL | higuma-0.6.0-cp310-abi3-win_amd64.whl |
|---|---|
| Size | 1.5 MB |
| Tags | CPython 3.10 Windows x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
26997ae91df5e78d1c0d2f5b2d9473432638c6f833eba8ef204ea6ab1853c894
|
|
BLAKE2b-256 checksum How to use checksums |
7584e67447865cd218897d06e94cd04f7a0ba180f1c1dced0841af699448ac2f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.
Transparency logRelease files / higuma-0.6.0-cp310-abi3-musllinux_1_2_x86_64.whl
| Download URL | higuma-0.6.0-cp310-abi3-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 1.9 MB |
| Tags | CPython 3.10 Linux musl 1.2+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
cd36b29e1686986778691dac374a1c4a0780477a0353e26b5c385039a53c1a68
|
|
BLAKE2b-256 checksum How to use checksums |
57c30a7086d7df07fe5915ec0f926cddc0d77c11ce9bb42b96374d26b521b29c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.
Transparency logRelease files / higuma-0.6.0-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | higuma-0.6.0-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 1.7 MB |
| Tags | CPython 3.10 Linux glibc 2.17+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
e6acec9eba013769383032b39269f97713287cc169bb733fc294560373576e50
|
|
BLAKE2b-256 checksum How to use checksums |
ff7652f4555905f7c5db0e97c9052d79de0e64cbba26e001031d6b23e7d709b3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.
Transparency logRelease files / higuma-0.6.0-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
| Download URL | higuma-0.6.0-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl |
|---|---|
| Size | 1.6 MB |
| Tags | CPython 3.10 Linux glibc 2.17+ ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
d56e92465d3792e760e92af0c1a32346e4feccd958eb1fee2b60a28a8802191f
|
|
BLAKE2b-256 checksum How to use checksums |
5bdebc62964de4cb2b78d67e93a13007aff3a5ba0abcc741f91e9ca7cfde7dcc
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.
Transparency logRelease files / higuma-0.6.0-cp310-abi3-macosx_11_0_arm64.whl
| Download URL | higuma-0.6.0-cp310-abi3-macosx_11_0_arm64.whl |
|---|---|
| Size | 1.5 MB |
| Tags | CPython 3.10 abi3 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
57e02d671024f4e6aad3c6e713b3e2a8cd28ce529f271ab3429e34ed339bf754
|
|
BLAKE2b-256 checksum How to use checksums |
26df3567fa140a0e3ae631dbc3797f3d56cd7f80cb0582d0eff81da0c8081517
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.
Transparency logRelease files / higuma-0.6.0-cp310-abi3-macosx_10_12_x86_64.whl
| Download URL | higuma-0.6.0-cp310-abi3-macosx_10_12_x86_64.whl |
|---|---|
| Size | 1.6 MB |
| Tags | CPython 3.10 abi3 macOS 10.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
a2beff88d2a9f16c0cf3455e692b6efc7d0fed117ce247c71d25135e60f52f63
|
|
BLAKE2b-256 checksum How to use checksums |
438866ca69e751fb7bcd82c082405371409441f47b7e4eb4a9971ee6ac7c64e8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.
Transparency logSecurity for higuma 0.6.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 7 files in this release have been uploaded with provenance metadata.
Attestation for higuma-0.6.0.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.