RailsのJavaScript環境は、Rails7になってから大きく変わりました。Rails wayに乗る場合とそれ以外を選択する場合ではどのような選択肢があり、どういう基準で選択すればよいか軽く調べました。
はじめに結論
Railsのデフォルト推奨の環境は小中規模な開発に特化していると言えます。Rails way = さくっと小中規模環境を作るのに最適だという認識で以下の記事を読んで下さい。
JavaScriptの環境としていくつか選択肢がありますが
1. Importmaps (デフォルト)
Importmapsは、Rails 8のデフォルトのJavaScript管理方法です。
特徴:
- バンドラーを必要としない
- ブラウザのネイティブES moduleシステムを活用
- CDNからJavaScriptライブラリを直接ロード
- 小規模なアプリケーションに適している
- rails7からデフォルトのJavaScript管理方法になっている
設定方法:
バンドラーを利用しない分シンプルです。
railsガイドを確認してみて下さい。サクッと環境構築ができるかと思います。
2. JavaScript Bundlers
従来のJavaScriptバンドリングを好む場合は、以下のオプションがあります。また既に構築済みのRailsの場合は以下の設定を選ぶことが多いかと思います。
- Bun
- esbuild
- Webpack
- Rollup.js
特徴:
- 複雑なJavaScriptの依存関係を管理
- プリプロセッシングやトランスパイリングが可能
- 大規模で複雑なアプリケーションに適している
設定方法:
jsbundling-railsのgemを使えば簡単に設定できます。
おすすめ
小〜中規模のアプリケーション: Importmapsを使用することをおすすめします。設定が簡単で、多くのアプリケーションにとって十分な機能を提供します。
大規模または複雑なアプリケーション: 従来のバンドラー(例:Webpack)の使用をおすすめします。特に以下の要件がある場合:
- 複雑なJavaScript依存関係の管理
- カスタムビルドプロセスの必要性
- レガシーブラウザのサポート4
最終的な選択は、プロジェクトの具体的な要件、チームの経験、パフォーマンスの考慮事項に基づいて行うべきで、小中規模でも現在のバンドラーで困っていることがなければ移行するメリットはないかと思います。ただRails wayに載っておくと開発効率を上げることができるので、必須要件ではなくとも、importmapsに移行も選択肢にあがるのではないでしょうか。
新規ぷろじぇくtはImportmapsやstimulus.jsを使ってなるべく少ない工数でRailsのサポートを受けながら開発することをおすすめします。