fandhe-backend
AI によるセキュリティ脆弱性発見リスクに備え、Rust で新規構築する軽量・高速・高並行なバックエンドフレームワークです。axum 級の性能を目標に、プラグインによる拡張(WebRTC / WebSocket)、多様な通信規格(GraphQL / tRPC)、OpenAPI 自動生成・容易なロギングを備えます。
正式名称は
fandhe-backendに確定しています(決定経緯・可用性証跡・ 新旧マッピングはdocs/design/framework-naming.md参照)。
インストール
crates.io(v0.4.2、2026-09-28 公開済み。変更履歴は CHANGELOG.md 参照)から
最小コアのみを使う場合は:
プラグインは Cargo feature で着脱します(pay-for-what-you-use。無効な feature の依存・コードはバイナリに一切含まれません):
# 例: WebSocket プラグインを有効化
# 例: 複数 feature の同時有効化
公開対象クレートは fandhe-backend-http / fandhe-backend-routes / fandhe-backend-core と
fandhe-backend-plugin-*(websocket / graphql / openapi / webrtc / webrtc-proxy / tracing /
hub-wiring / jwt / csrf / cors / compression / static)の 15 クレートで、すべて同一バージョン
(lockstep)で公開します。現時点の crates.io 公開版は 0.4.2(2026-09-28 公開、13 クレート。
fandhe-backend-plugin-jwt・fandhe-backend-plugin-csrf は 0.5.0 で初公開予定。
変更履歴は CHANGELOG.md、公開手順は docs/design/crates-io-release.md 参照)です。
通常は fandhe-backend-core の feature 経由で利用し、
個別クレートを直接依存に追加する必要はありません
(Gate 型の fandhe-backend-plugin-hub-wiring ・fandhe-backend-plugin-jwt・fandhe-backend-plugin-csrf は
core の feature を持たない独立クレートで、直接依存に加えて Server::gate で登録します)。
Getting Started
crates.io からの依存追加〜最小サーバ起動までの最短手順は docs/guide/getting-started.md を、
feature 構成別のサンプル(websocket / graphql / webrtc 系 / tracing / openapi / cors / compression / static / hub-wiring)は
docs/guide/feature-samples.md を、
拡張点の実装まで含むチュートリアルは docs/guide/tutorial.md を参照してください。
利用者向けドキュメントサイトは https://fandhe-ai.github.io/fandhe-backend/ にあります。
仕様
仕様書(ブレスト〜PoC〜要件定義〜タスク分解〜ロードマップ)は Fandhe-AI/fandhe-backend-spec で管理し、docs/spec/ にサブモジュールとして取り込んでいます。
# 既存クローンの場合
| ドキュメント | 内容 |
|---|---|
docs/spec/04-requirements.md |
MoSCoW 優先度付き要件(REQ-1〜15)・受け入れ基準 |
docs/spec/05-tasks.md |
タスク分解(全 56 タスク・依存関係・工数) |
docs/spec/06-roadmap.md |
マイルストーン MS-1〜MS-6・着手判定 |
開発の進め方
docs/spec/06-roadmap.md のマイルストーンに従って実装します。
- MS-1: 基盤構築(
cargo workspace・CI・依存監査ベースライン)・最小コア(HTTP/1.1・3 種拡張点)・プラグイン機構 - MS-2〜MS-4: Must 要件(性能ベンチマーク・セキュリティ・OpenAPI 自動生成ほか)
- MS-5〜MS-6: Should 要件(GraphQL / tRPC・WebRTC / WebSocket プラグイン・micro-service-hub 共通配線)
実装着手の最初のタスクは TASK-1.1(cargo workspace・CI 基盤整備)です。
開発環境の構築
開発タスクは Makefile に集約しています。クローン後に make setup を実行すると
仕様書 submodule の取得と git hooks(lefthook)の配線が完了します。
git hooks は lefthook(lefthook.yml)で管理し、pre-commit で
staged の .rs に対する rustfmt --check、commit-msg で Conventional Commits 形式検証
(scripts/commit-msg-check.sh、外部依存なし)を行います。--no-verify での
スキップは禁止です(CONTRIBUTING.md 参照)。
ホスト環境に Rust ツールチェーンを入れずに開発する場合は Docker を使えます
(Dockerfile / compose.yaml):
エディタ設定は .editorconfig で統一しています(Rust は rustfmt と同じ 4 スペース)。
ビルド成果物(target/)は肥大化しやすいため、ルート Cargo.toml の
[profile.dev.package."*"] で依存クレート(workspace 外)のデバッグ情報を行番号のみに
しています(dev・test に効き、本リポのクレートは full debuginfo のままです。panic 位置・
バックトレースの行番号は残り、デバッガで依存の変数・型を見られなくなるだけです)。
溜まった古い成果物は cargo install cargo-sweep のうえ cargo sweep --time 14
(14 日以上使われていない成果物を削除)や cargo sweep --installed(rustup に現存しない
ツールチェーンでビルドした成果物を削除)で消せます。
コントリビュート
開発フロー・コミット規約・設計原則は CONTRIBUTING.md を参照してください。
ライセンス
本プロジェクトは MIT ライセンス と
Apache License 2.0 の
デュアルライセンスで提供されます。あなたが本プロジェクトへ提出する Contribution は、明示的な
別段の定めがない限り、上記デュアルライセンスの下で提供されるものとみなされます
(詳細は CONTRIBUTING.md を参照)。
crates.io への公開手順(名前確保・所有権・リリース CI)は
docs/design/crates-io-release.md
で定めています。