Rust off Rails: AI時代のための意見の強いWebスタック
Rust off Rails: The opinionated web stack for the AI era (rustoffrails.org)
要約
Rust off Railsは、AIエージェントがフルスタックのRust製Webアプリケーションを構築するための、厳格な規約に基づいたフレームワークです。コードではなく、Markdownファイルで定義された仕様とエージェントの判断によって開発が進められ、開発者は意図を記述するだけで、コード生成はAIが行います。このアプローチは、RailsやPhoenixの設計思想を取り入れつつ、AIによる開発効率の向上を目指しています。
全文翻訳
AI時代のための意見の強いWebスタック。
コードを一行も出荷しないWebフレームワーク
Rust off Railsは、コーディングエージェントにフルスタックのRust製Webアプリの構築方法を指示するMarkdownファイルのセットです。一つの推奨スタック、一つのレイアウト、物事を行うための唯一の方法があります。規約は文章の中にあります。エージェントがコードを書きます。
curl -fsSL https://rustoffrails.org/install.sh | sh
またはClaude Codeで: /plugin marketplace add rust-off-rails/rustoffrails
パイプする前に読む: インストールスクリプト · INSTALL.md
[画像: Railboard: AIが7つのプロンプトで構築したライブカンバン 3:06 · YouTubeで視聴]
- 0 行のフレームワークコード
- 60 個のMarkdownファイル
- 2 つのデータベース、同じコード
~/code/bookshelf, claude
AIセッションの図解: /offrails:new コマンド、インタビュー、計画、生成されたファイル、SQLiteとPostgresでのテスト合格。
- > /offrails:new bookshelf: 人々が本を追跡しレビューする、後でモバイルアプリ用のAPI付き
- ● AGENTS.md を読む → インタビュー · 教義 · 構造 · スタック · ワークフロー
- ? アカウント? a) マジックリンク(推奨) b) メール + パスワード c) 招待制 d) なし
- › a
- ? データは誰が所有しますか? a) 各ユーザー(推奨) b) チーム c) 共有
- › あなたが決める
- ? フロントエンド? a) htmx (推奨) b) inertia c) spa d) api
- › b
- ? UIライブラリ? a) React (推奨) b) Svelte
- › b
- ? 他のプログラム用のAPI? a) なし b) REST + OpenAPI c) GraphQL d) 両方
- › b
- ◆ 計画: inertia + Svelte · API rest · 本番環境ではPostgres(ローカルではSQLite)
- 本のタイトル、著者、評価 1〜5 · User に属する
- レビュー本文、星 1〜5 · Book に属する
- API /api/v1/books, /api/v1/reviews · ベアラートークン
- › はい
-
- migration/src/m20261013_120000_create_books.rs
-
- src/models/book.rs · src/controllers/books.rs
-
- web/src/pages/Books/Index.svelte (+ 71 more)
- ✓ cargo clippy --all-targets -- -D warnings
- ✓ pnpm --dir web typecheck · svelte-check
- ✓ cargo nextest run · SQLite · 142 passed
- ✓ cargo nextest run · Postgres 18 · 142 passed
- 完了の定義: グリーン。
bin/setup && bin/devを実行
それが何であるか
コードではなく決定で作られたフレームワーク。
他のフレームワークはライブラリを出荷します。Rust off Railsはエージェントに判断を与えます。それ以外では即興で決めるであろうすべての選択肢が、すでに決定され書き留められています。
創設のルール
すべてのコードはAIによって書かれる
Rust、SQL、HTML、CSS、TypeScriptのすべての行、そしてすべてのDockerfileはエージェントによって書かれます。人間は意図を書きます。製品内の仕様 (product/)、インタビューでの回答、会話でのフィードバックです。コードは決して書きません。それは他のすべてを支えるルールです。ボイラープレートは無料、規約はエージェントによって強制され、仕様は真実の情報源であり続けます。§0を読む。
Markdownがフレームワーク
フレームワークがライブラリを出荷する場所で、Off Railsは正確な仕様を出荷します。ジョブキュー、セッション、Inertiaアダプターは、あなたが所有するコードとしてアプリにレンダリングされます。
強い意見、エージェント向け
クレートの選択、ファイルレイアウト、命名、エラー、テスト: 一度決定されます。エージェントはORMについて議論しません。一貫性のなさが敵であり、不完全さではありません。
バッテリー付属
認証、ジョブ、メール、キャッシュ、アップロード、リアルタイム、デプロイ: すべてのレイヤーにガイドとレシピがあるので、エージェントは空白のページから始めることはありません。ガイドを見る。
仕組み
インタビュー。計画。生成。グリーン。
エージェントは人間が答えられることだけを尋ね、その答えを書き留め、コンパイラと両方のデータベースでのテストスイートが合意した場合にのみ完了します。
-
01
インタビュー
製品に関する質問のみで、それぞれに推奨されるデフォルトがあります。「誰が見ることができますか?」はい、「どのORMを使いますか?」いいえ。「あなたは決める」と言えば、デフォルトが採用されます。
-
02
計画
リソース、ページ、ジョブ、前提条件のコンパクトな計画が、受け入れ基準とともに
product/仕様に書き込まれます。仕様が永続的な記録であり、チャットはそうではありません。 -
03
生成
エージェントによって実行されるジェネレーターレシピ: マイグレーション → モデル → 不合格テスト → コントローラー → ビュー、一度に1つの垂直スライス。
-
04
グリーン
fmt、clippy、SQLite と Postgresでのテスト、すべての受け入れ基準がテストにトレースされ、カバレッジゲート。グリーンでなければ、それは起こりませんでした。
8つのスキル、ジョブごとに1つ
| スキル | 何をするか |
|---|---|
/offrails:new | インタビュー → 計画 → アプリスケルトン → 計画された機能、グリーン |
/offrails:feature | まず仕様、次にコード。引数なし: product/ で変更されたものをビルド |
/offrails:scaffold | アプリのフロントエンドモードでの完全なリソース |
/offrails:generate | ジョブ、メーラー、チャネル、認証、モデル、マイグレーション、タスク |
/offrails:check | 完了の定義: fmt、clippy、SQLiteとPostgresでのテスト |
/offrails:doctor | ドキュメントのすべての規約に対してアプリを監査 |
/offrails:deploy | デプロイ設定と検証済みイメージ。公開 facing の前に確認 |
/offrails:upgrade | アプリのベンダー製フレームワークを前進させ、規約を移行 |
どのように使用するか
あなたは意図を書き、エージェントはそれ以外すべてを書きます。
-
1
何をしたいかを言うか、
product/features/*.mdに書きます。プレーンな英語で。 -
2
エージェントが仕様を書き、次にコードを書きます: マイグレーション、モデル、ビュー、テスト。
-
3
完了とはグリーンを意味します。SQLiteとPostgresで、すべての受け入れ基準がテストされます。
開発ツール
アプリの内部を見る。
トレース、プロファイラー、ローカルメールボックス、ジョブダッシュボード、ライブプレゼンスが組み込まれています。エージェントはJSONと同じデータを読み取るため、自身の作業を確認できます。
ダッシュボードは、リリースビルドでのリクエストあたり約1 µsかかり、デフォルトでは開発専用です。
取引
タイピングが無料になったときに何が変わるか。
何十万行ものライブラリ
60個のMarkdownファイル
コードジェネレーターバイナリ
generators/scaffold.md: エージェントが実行するレシピ
規約優先の設定
規約優先の議論なし: エージェントはどのクレートを使用するか議論しません
プログラマーの幸福のために最適化
エージェントの正確性のために最適化: コンパイラがすべてチェック
キーストロークを節約するための魔法
魔法はありません。あなたがタイプしない場合、明示的なコードは安価です。
スタックを一度に
ジョブごとに1つのクレート。テーブルでは代替品は受け付けられません。
Axum·Tokio·SeaORM SQLiteをローカルで、Postgresを本番で、同じコード·Askama·Tailwind·lettre·tracing·単一バイナリ、単一Dockerイメージ
FRONTEND_MODE、インタビューで一度選択
htmx デフォルト
コンパイル時にチェックされるAskamaテンプレート、およびhtmx。Nodeなし。CRUDアプリ、ダッシュボード、コンテンツサイト(このサイトなど)向け。
inertia
生成されたInertiaアダプターを介した、サーバーサイドルーティングとコントローラーを備えたReactまたはSvelteページ。JS UIが必要な場合の選択肢。
spa
UIがスタンドアロンアプリでなければならない場合に備えて、個別のシングルページアプリとJSON API。
api 開発中
UIなし: モバイルアプリ、パートナー、スクリプト用のバックエンドとバージョン管理されたAPI。
UI_LIBRARY
react (デフォルト) または svelte、inertia、spa、htmxアイランド用
API
none、rest (OpenAPI + トークン)、graphql または both: UIとは独立した、公開されたバージョン管理API
データベース内: ジョブキュー、キャッシュ、パブ/サブ。データベースが唯一のインフラストラクチャです。
巨人の肩の上に立つ
RailsとPhoenixの最高のものを一緒に。
ここにある良いアイデアはどれも新しいものではありません。私たちは、最も評価の高いものを2つの愛するフレームワークから選び、それぞれにRustの形を与え、エージェントのために書き留めました。
Ruby on Railsから
- 規約優先の設定、規約優先の議論に洗練
- ジェネレーター:
rails newとスキャフォールド、エージェントが実行するレシピとして - Active Record → モデルとマイグレーション
- Rails 8認証: データベースベースのセッション、生成され所有される
- Solid Queue、キャッシュとケーブル: データベースはインフラストラクチャ、Redisなし
- Turbo 8 ページリフレッシュブロードキャスト → SSE経由の信号
- Action Mailer プレビュー
- Kamal,
/upと Docker がデフォルト bin/railsタスク → 単一のappバイナリ- 認証情報と環境規律
ElixirとPhoenixから
- Oban: 状態を持つ永続ジョブ、ユニークジョブ、cron、スヌーズ
- Oban Web → ライブ
/admin/jobsダッシュボード - Swoosh のローカルメールボックス →
/dev/mailbox - phx.gen.auth: マジックリンクと「メールボックスを確認してください」という開発ヒント
- LiveDashboard →
/devツールボックス - 保留中のマイグレーションページ、「マイグレーションを実行」ボタン付き
- Ecto の明示的なデータレイヤー: チェンジセット、コールバックなし
- チャネル、プレゼンス、PubSub 開発中
- 分散ノードと「クラッシュさせろ」の監視 開発中
その他
フィールドテスト
実際のアプリ、エージェントによって移植。
エージェントは、人気のあるオープンソースアプリをRust off Railsに移植します。それらが遭遇するすべての粗いエッジはフレームワークに戻されます。
-
Fizzyから 開発中
fizzyer
Fizzy のボードとカードを、エージェントによってRustで再構築。
-
FreeScoutから 開発中
FreeScoutのポート
共有受信トレイヘルプデスク、別のマシンでエージェントによって構築。
-
Uptime Kumaから ビルド済み
uptime-offrails
SQLiteとPostgresで1530/1530のテストがグリーン。
GPT-6 Luna Claude Sonnet 5.5 Meta's Muse Wonder 1 GLM 5.3 Flash via opencode で構築 目標: 小さく、安価なエージェントが実際の仕事もこなす。
開始方法
プラグインをインストールする。アプリを説明する。見る。
1 Claude Code で (推奨)
/plugin marketplace add rust-off-rails/rustoffrails
/plugin install offrails@offrails
その後、空のディレクトリで:
/offrails:new bookshelf: 人々が読んだ本を追跡し、レビューする
エージェントがあなたにインタビューし、計画を確認し、構築します。スキルはプレーンなリクエストでもトリガーされます(「新しいRust製Webアプリを作って…」)。
2 Codex, Cursor, または AGENTS.md を読むことができるエージェントで
/path/to/rustoffrails/AGENTS.md を読み、"bookshelf" という名前の新しいアプリを作ってください。
生成されたアプリは AGENTS.md とベンダー化された .offrails/ を持つため、後続のセッションではセットアップは不要です。
3 次に
プレーンな言語で機能を説明するか、product/ に仕様として記述します:
Book を title:string, author:string, published_on:date, rating:integer でスキャフォールドします。
ユーザーは本を作成するためにログインしている必要があります。
完全なウォークスルー どのように使用するか ドキュメントを読む GitHubでスターを付ける