このブログにReactを導入しました

といっても全面に見えているところには導入していません。CMSの管理画面など。これについては色々理由があるんですが、長くなりそうなんでまた別のエントリでかきます。

Reactについては完全な初心者だったわけですがその大部分はChatGPTへの質問だけで事足りました。

ChatGPTは、疑問に思うこと、これはどうするの?みたいなところを懇切丁寧に教えてもらえるので大助かりです。技術的な疑問点に対しても、具体的かつ丁寧に回答が得られたため、大変助かりました。Google検索なら習得にもっと時間がかかっていたでしょう。そして、これを機会に完全にSprocketsを削除しました。アセットパイプラインともおさらばです。Sprocketの機能は大別すると

  1. いくつかのアセット(静的なファイル)を結合してくれる(バンドル化)
  2. 圧縮、Minify、ダイジェスト化などをして配信してくれる

ということになるかと思います。いくつかのJSを結合して配信するのはサーバへのリクエスト回数を減らすというのには助かりますが、現代はesbuildなどでバンドル化してくれます。主要なJSはesbuildなどでビルドすること前提に配布されているので、そちらの機能で十分です。minifyもesbuildでできますからこれも不要。ダイジェスト化(ファイル名にハッシュ値をつけて配置してくれるあれ)も強制的にキャッシュを破棄するのにはいいのですが、本ブログはそもそも自身の管理するサーバにある上に規模も小さいので、別にハッシュ値つけんでもええやろという結論に至りましたあと、そもそもお気楽にRailsに導入できるgemがどんどん更新がなくなり、Sprockets使って配信するよりpublicの下においたほうが導入が簡単というのもありました。

またファイル名にダイジェストがつくのはそもそもjavascriptのmoduleと相性が悪く、importmapを使わないとモジュール名が毎回変わってしまうわけで非常に管理がしにくいです。なのでtype="module"を使用して直接読み込むようにしました。

ということでJSやCSSなどのアセットはesbuildでバンドルするかpublicの直下に直置きするようにしました。今んとここれで十分です。ありがとうSprockets、そしてこんにちはReact