propshaft コンセプト

現代のweb開発では Webpack など他のツールでプリコンパイルやバンドリングなどを行うことが多いので、 Railsのアセットパイプラインとしては配信に必要な最小限の機能だけ提供してシンプルに保とう いうというコンセプトのライブラリ

Rails 7.0 で Sprockets 代替として追加された Propshaft とは何か?

Rails8: propshaft がデフォルト有効化

Rails 8 からデフォルトで propshaft が有効化される。

With Rails 8, Propshaft is the default asset pipeline for new applications. With Rails 7, you can start a new application with propshaft using rails new myapp -a propshaft. For existing applications, check the upgrade guide which contains step-by-step instructions.

ref. propshaft/README.md at main · rails/propshaft

なぜ propshaft に至ったのか?

4.1 アセット管理技術の進化 ここ数年、Web技術の進化により、Webアプリケーションでのアセットの管理方法に影響を与える大きな変化が起こりました。このような変化には以下のものが含まれます。

  1. ブラウザサポート: 最新のブラウザでは新しい機能や構文のサポートが強化され、トランスパイルやポリフィルの必要性が減りました。
  2. HTTP/2: HTTP/2プロトコルの導入により、複数のファイルを並行して配信しやすくなり、アセットをバンドルする必要性が減りました。
  3. ES6+: 最新のJavaScript構文(ES6以降)はほとんどの最新のブラウザでサポートされているため、トランスパイルの必要性が減りました。

そのため、Propshaftで動作するアセットパイプラインには、デフォルトでアセットの「トランスパイル」「バンドル」「圧縮」機能が含まれなくなりました。ただし、フィンガープリントは引き続き不可欠な機能です。

アセットパイプライン - Railsガイド