- 低抽象化・低ボイラープレート(low-ceremony)をベースに、Rubyエコシステム向けのシンプルで強力なWebフレームワークとして、コントローラやRESTリソースの概念を使わず、ページ・フォーム・単一アクション中心の構造を提供
- サーバーサイドレンダリングHTML、JS/CSSの直接記述、OpenTelemetry連携、Sequel・OptionParserなどの現代的なRubyツールを内蔵し、インストールと開発が数分以内で可能
- クラスベース構造、実際の型ベースのセッション・フォーム・パラメータ管理、動的メソッド・ハッシュの使用を最小化することで、明確なコード・自動ドキュメント化を志向
- 最新のWebプラットフォーム活用: サーバー・クライアント検証の統合、BrutJS(Web Components)、esbuildでCSSバンドル・ハッシュ化、セキュリティポリシーとDB設計の基礎を強化
- YAMLを最小限に抑え、Ruby/Hashベースの設定と明確なネーミング・役割分離を採用し、不要な抽象化やパターンを強要せずRubyとブラウザ技術を楽しく活用することを目標としている
Brutフレームワーク主要な特徴
完全に新しい構造 – コントローラなしのページ中心
- コントローラ、RESTリソース、ルートアクションの代わりにクラスベースのページ、フォーム、単一アクションハンドラーで構成
- HTMLはサーバー側で直接作成し、JS/CSSは自由に記述可能
- 例: 時間表示ページは
TimePage < AppPage で直接定義
現代的なWebプラットフォームを積極的に活用
- サーバー・クライアント検証統合のフォームUX
- BrutJS(Web Componentsライブラリ)でHTMLの漸進的拡張をサポート
- esbuildでCSSのバンドルとハッシュ化を行い、PostCSSやSASSなしで簡潔に処理
開発生産性・基盤の内蔵
- OpenTelemetryベースのインストルメント、Sequelベースのデータアクセス、OptionParserベースのコマンドライン自動化
- 基本的なセキュリティポリシー、DBカラム・外部キーのデフォルト値・インデックス、常時タイムゾーン対応の時刻、簡易なロケール(Localization)
- RSpecテスト、Faker/FactoryBotによるデータ生成、PhlexでHTML生成
YAMLの排除、明確な設定構造
- I18nはRuby Hashベース、動的設定はdotenvで管理(YAMLはほぼ使用しない)
- docker-composeのみ例外的にYAMLを使用
不要な抽象化やパターンの強制なし
- ネーミング・構造が明確(例:
WidgetsPageは/widgetsにアクセス)
- データ層(DB::Widget)とドメイン層(Widget)を完全に分離可能
- コントローラ概念はなく、望む方法でビジネスロジックを実装可能
- 複雑な関数型パターン、モナド、Procなどを強要しない
開発体験・柔軟性
- RSpecなど現代Rubyエコシステムのツールをデフォルトで内蔵
- Phlex(HTML)、Faker/FactoryBot、Sequel、OpenTelemetryなどの主要ライブラリを積極的に活用
- 繰り返されるボイラープレート・設定・意思決定から離れ、Rubyとブラウザ技術の「楽しさ」に集中
なぜBrutなのか?
- Railsなどの既存フレームワークでの反復的なセットアップ、絶え間ない設計・構造論議、不要な柔軟性の代わりに、コードそのものの楽しさを追求
- 迅速に構築し、開発とデプロイを楽しむことができるRubyベースのWebアプリケーションフレームワークとして、生産性と明確さに集中
始め方と今後のロードマップ
- Brut公式のDockerイメージ、コマンドベースでの素早いアプリ作成・実行をサポート
- ADRs.cloudなど、実戦的なサンプルアプリを提供
- 1.0バージョンと公式ロードマップの継続的な更新を予定
まだコメントはありません。