Ruby コミュニティがコンポーネントベースのデザインを採用する中、 RubyUI のパフォーマンス主張をめぐり議論が勃発

BigGo Editorial Team
Ruby コミュニティがコンポーネントベースのデザインを採用する中、 RubyUI のパフォーマンス主張をめぐり議論が勃発

Ruby ウェブ開発コミュニティは、 Phlex レンダリングエンジン上に構築された再利用可能な UI コンポーネントのコレクションである RubyUI (旧 PhlexUI )に大きな関心を示しています。しかし、その開発者体験への称賛と並行して、このプロジェクトのパフォーマンス主張をめぐって激しい議論が起こっています。

RubyUI は、美しく整理された UI コンポーネントを構築したいと考える Rails 開発者向けのソリューションとして自らを位置づけており、これらのコンポーネントは簡単にコピーしてカスタマイズすることができます。従来のコンポーネントライブラリとは異なり、 RubyUI は開発者がコンポーネントを直接プロジェクトにコピーすることでコードの所有権を持つことを奨励しています。

精査されるパフォーマンス主張

RubyUI の最も議論を呼んでいる側面の一つは、従来の Rails ERB テンプレートよりも最大12倍速いという主張です。この主張はコミュニティ内で大きな議論を巻き起こし、複数の開発者がその正確性に疑問を投げかけています。

コミュニティ内での特に洞察に満ちた意見交換では、これらのパフォーマンス主張の背後にある微妙な点が浮き彫りになりました。ある開発者は、 RubyUI を動かす Phlex エンジンが多数の小さなコンポーネントを持つ特定のシナリオでは ActionView よりも優れているかもしれないが、 ERB よりも普遍的に速いわけではないと指摘しました。 Phlex エコシステムの重要人物である Joel Drapper はこの区別を認めています:

「私の経験では、一つのビューで数千のコンポーネントをレンダリングするのは極端なシナリオではありません... ActionView は何千もの部分的なビューを組み合わせてビューを構築するとかなり遅くなります — そしてそのようなビューを構築したい人にとっては、それは重要です。」

この説明は、パフォーマンス上の利点はコンテキストに依存しており、高度にコンポーネント化されたビューを持つアプリケーションで最も顕著であることを示唆しています。

RubyUI の主な機能

  • Phlex レンダリングエンジンを基盤としている
  • カスタマイズ可能な UI コンポーネント
  • コピー&ペーストによる実装アプローチ
  • 独自の Stimulus.js コントローラーを使用した最小限の依存関係
  • Ruby gem を介したインストール

パフォーマンス比較(プロジェクトの主張による)

  • Phlex: 基準値
  • ViewComponent: 約1.5倍遅い
  • ERB テンプレート: 約5倍遅い

Phlex を使用している注目すべきプロジェクト

  • Clearscope: 454以上のコンポーネント
  • MagicNotes.ai
  • Baheth.ieasybooks.com

採用を促進する開発者体験

パフォーマンスをめぐる議論にもかかわらず、多くの開発者は主に開発者体験の向上を理由に RubyUI と Phlex を採用しています。Ruby と ERB テンプレートを行き来するのではなく、純粋な Ruby で UI コンポーネントを書く能力が大きな魅力となっているようです。

コミュニティメンバーは、部分的なビューとしてプライベートメソッドを使用することが UI のリファクタリングに革命をもたらしたと報告しており、複数の開発者がすでに本番アプリケーションで Phlex を使用していると述べています。プロジェクトの GitHub ページによると、 Clearscope が Phlex ビューを排他的に使用している最大のアプリケーションであり、450以上のコンポーネントを持っています。

コンポーネントアーキテクチャの考慮事項

RubyUI のアプローチは非常に細かいコンポーネント構造を奨励しており、開発者はヘッダーのような主要なページセクションだけでなく、個々のナビゲーション項目やアイコンにさえ別々のコンポーネントを作成する可能性があります。この抽象化のレベルは、 Rails アプリケーションがビューを構造化する方法の変化を表しています。

一部の開発者はこの粒度を評価していますが、他の開発者は名前空間管理やコンポーネント編成などの実用的な考慮事項について疑問を提起しています。コミュニティはまだこれらのアーキテクチャパターンに関する規約を確立している途中であり、ある開発者は新しいものなので規約が少ないため、自分で考えて一貫性を持たせる必要があると述べています。

RubyUI が牽引力を得続けるにつれて、 Ruby コミュニティはこのコンポーネントベースのアプローチを効果的に活用するためのより確立されたパターンを開発する可能性が高いです。現在のところ、このプロジェクトは開発者体験を優先しながらビューレンダリングのパフォーマンスの境界を押し広げる Rails フロントエンド開発の興味深い進化を表しています。

参考: RubyUI (旧 PhlexUI)