HN 日本語サマリー

← 一覧へ戻る
Web開発

Rust off Rails: AI時代のための意見の強いWebスタック

Rust off Rails: The opinionated web stack for the AI era (rustoffrails.org)

59 pointsby mike1o156 コメント

要約

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でのテスト合格。

  1. > /offrails:new bookshelf: 人々が本を追跡しレビューする、後でモバイルアプリ用のAPI付き
  2. ● AGENTS.md を読む → インタビュー · 教義 · 構造 · スタック · ワークフロー
  3. ? アカウント? a) マジックリンク(推奨) b) メール + パスワード c) 招待制 d) なし
  4. › a
  5. ? データは誰が所有しますか? a) 各ユーザー(推奨) b) チーム c) 共有
  6. › あなたが決める
  7. ? フロントエンド? a) htmx (推奨) b) inertia c) spa d) api
  8. › b
  9. ? UIライブラリ? a) React (推奨) b) Svelte
  10. › b
  11. ? 他のプログラム用のAPI? a) なし b) REST + OpenAPI c) GraphQL d) 両方
  12. › b
  13. ◆ 計画: inertia + Svelte · API rest · 本番環境ではPostgres(ローカルではSQLite)
  14. 本のタイトル、著者、評価 1〜5 · User に属する
  15. レビュー本文、星 1〜5 · Book に属する
  16. API /api/v1/books, /api/v1/reviews · ベアラートークン
  17. › はい
    • migration/src/m20261013_120000_create_books.rs
    • src/models/book.rs · src/controllers/books.rs
    • web/src/pages/Books/Index.svelte (+ 71 more)
  18. ✓ cargo clippy --all-targets -- -D warnings
  19. ✓ pnpm --dir web typecheck · svelte-check
  20. ✓ cargo nextest run · SQLite · 142 passed
  21. ✓ cargo nextest run · Postgres 18 · 142 passed
  22. 完了の定義: グリーン。 bin/setup && bin/dev を実行

それが何であるか

コードではなく決定で作られたフレームワーク。

他のフレームワークはライブラリを出荷します。Rust off Railsはエージェントに判断を与えます。それ以外では即興で決めるであろうすべての選択肢が、すでに決定され書き留められています。

創設のルール

すべてのコードはAIによって書かれる

Rust、SQL、HTML、CSS、TypeScriptのすべての行、そしてすべてのDockerfileはエージェントによって書かれます。人間は意図を書きます。製品内の仕様 (product/)、インタビューでの回答、会話でのフィードバックです。コードは決して書きません。それは他のすべてを支えるルールです。ボイラープレートは無料、規約はエージェントによって強制され、仕様は真実の情報源であり続けます。§0を読む。

Markdownがフレームワーク

フレームワークがライブラリを出荷する場所で、Off Railsは正確な仕様を出荷します。ジョブキュー、セッション、Inertiaアダプターは、あなたが所有するコードとしてアプリにレンダリングされます。

強い意見、エージェント向け

クレートの選択、ファイルレイアウト、命名、エラー、テスト: 一度決定されます。エージェントはORMについて議論しません。一貫性のなさが敵であり、不完全さではありません。

バッテリー付属

認証、ジョブ、メール、キャッシュ、アップロード、リアルタイム、デプロイ: すべてのレイヤーにガイドとレシピがあるので、エージェントは空白のページから始めることはありません。ガイドを見る。

仕組み

インタビュー。計画。生成。グリーン。

エージェントは人間が答えられることだけを尋ね、その答えを書き留め、コンパイラと両方のデータベースでのテストスイートが合意した場合にのみ完了します。

  1. 01

    インタビュー

    製品に関する質問のみで、それぞれに推奨されるデフォルトがあります。「誰が見ることができますか?」はい、「どのORMを使いますか?」いいえ。「あなたは決める」と言えば、デフォルトが採用されます。

  2. 02

    計画

    リソース、ページ、ジョブ、前提条件のコンパクトな計画が、受け入れ基準とともに product/ 仕様に書き込まれます。仕様が永続的な記録であり、チャットはそうではありません。

  3. 03

    生成

    エージェントによって実行されるジェネレーターレシピ: マイグレーション → モデル → 不合格テスト → コントローラー → ビュー、一度に1つの垂直スライス。

  4. 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. 1

    何をしたいかを言うか、product/features/*.md に書きます。プレーンな英語で。

  2. 2

    エージェントが仕様を書き、次にコードを書きます: マイグレーション、モデル、ビュー、テスト。

  3. 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から
ElixirとPhoenixから

その他

フィールドテスト

実際のアプリ、エージェントによって移植。

エージェントは、人気のあるオープンソースアプリを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でスターを付ける