Web Speed Hackathon 2021 mini 振り返り
2021/22 の年末年始の休みの合間でWeb Speed Hackathon 2021 miniに参加しました。メモ程度に振り返ります。
最終的な結果は 503 点(720 点満点)でした。
やったこと
web-speed-hackathon-2020 の解説記事を参考にしながら取り組みました。 リポジトリはこちら
ビルド
package.json
buildコマンドのNODE_ENV=developmentをNODE_ENV=productionに修正browserslistを追加["last 1 chrome version"]
babel-nodeをproductionから除去
webpack
productionではinline-source-mapを埋め込まないように設定modeをproductionに切り替えcss-minimizer-webpack-pluginで css を minifyterser-webpack-pluginで js を minifypreload-webpack-pluginで css を preload
tailwind
tailwind.config.jsにpurgeを設定purge: ['./src/**/*.html','./src/**/*.jsx']
フロントエンド
スクロール改善
- スクロールに関する処理を修正
CSS 周り
normalize.cssの削除
font 周り
- 不要な
webfontを削除
依存パッケージの最適化
jQueryを削除、fetchに置き換えblobを使わないように修正lodashを削除し、自前の実装で置き換えmomentを削除し、自前の実装で置き換えpakoを削除react-helmetを削除し、自前の実装で置き換え
画像・動画・音源周りの最適化
- 画像の遅延ロードのために、
loading="lazy"を付与 jpegをavifに置き換えgifをwebmに置き換えmp3をaacに置き換え- 画像のアスペクト比の計算を改善
- 画像サイズの改善
- 不要な
svgを削除
コード分割
React.lazyを用いてコード分割
感想
今回初めてこのようなチューニングコンテストの様な形式に取り組みましたが、非常に楽しかったです。できていないこともたくさんあるので他の方の解説記事を読んで吸収しておきたいです。運営の方、ありがとうございました!