5 ポイント 投稿者 GN⁺ 2025-07-31 | まだコメントはありません。 | WhatsAppで共有
  • 低抽象化・低ボイラープレート(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バージョンと公式ロードマップの継続的な更新を予定

まだコメントはありません。

まだコメントはありません。