パフォーマンス

Virtual DOMはDOM操作の何を解決したのか

Virtual DOMは「速いDOM」ではない DOM操作はなぜ重いのか jQuery時代に起きていた問題 Virtual DOMの発想 なぜ差分検出が効くのか 「再レンダリング=遅い」という誤解 なぜ手動最適化では解決できなかったのか パフォーマンスの本当の効果 注意点:Virtual…

フロントエンド進化はレンダリング最適化の歴史

フロントエンドの進化はUIの進化ではない ブラウザはどうやって画面を描いているのか jQuery時代の問題:reflow地獄 Virtual DOMの本当の役割 なぜSPAは重くなるのか SSRが速い理由 Hydrationという新しい問題 RSCが狙っているもの CSSの進化も同じ文脈 実務…

フロントエンド史は回線速度とCPU性能で理解できる

フロントエンドの歴史はUIではなく「計算資源の配置」の歴史 ダイヤルアップ時代:回線が最も高価だった ブロードバンド時代:通信が安くなりUIが増える スマートフォン時代:CPUが弱くなる SSRの再評価:計算をサーバへ戻す CDNとエッジの登場:距離が問題…

SPAとGraphQLが結びつく理由とOverfetch問題

SPAでは「必要なデータだけ欲しい」ためGraphQLが選ばれやすい REST APIは“画面”ではなく“資源”を返す Overfetch問題とは何か SPAは“画面中心設計”のアプリケーション GraphQLは「画面が欲しい形でデータを取得する」 Underfetch問題も同時に解決する それで…

SPAで巨大バンドルが生まれる理由とTree Shakingの限界

巨大バンドルの原因は「ライブラリが重い」ではありません なぜSPAはバンドルが1つに集まるのか Tree Shakingとは何をしているのか Tree Shakingが効かないパターン 副作用(side effect) CommonJS 動的参照 ライブラリが巨大化する理由 さらに大きな原因:…

SSRがECサイトに採用される理由とCVR

ECサイトでSSRが選ばれるのはSEOではなく売上の問題 なぜ表示速度が売上に影響するのか SSRが変えているのはLCP SPAとECの相性問題 実際に起きる現象 SEO以外の効果 SNS流入 広告品質スコア クローラ巡回 SSRでもSPAの利点は使える 注意点 サーバ負荷 在庫情…

SPAが社内システム向きで公開サイトに不向きな理由

SPAは万能ではなく「用途が限定された最適解」 SPAが得意なこと 社内システムと相性が良い理由 公開サイトで起きる問題 初回表示の遅さ SEOとクローラ URLの意味が弱くなる 実務で起きる設計失敗 SSRとの違い 向き不向きの目安 注意点 まとめ SPAは万能では…

SSRのISRは何を解決した技術なのか

ISRは「SSRの重さ」と「SSGの古さ」を同時に解決した 従来のSSRの問題 実際に起きる現象 SSGの問題 ISRの仕組み 重要なポイント なぜこれが重要なのか CDNとの関係 注意点 即時更新が必要なページ キャッシュの誤解 実務での使い分け まとめ ISRは「SSRの重…

SSRがサーバ負荷を増やす理由 ― CPU使用率との関係

SSRは「通信が重い」のではなく「計算が増える」 SPAとSSRでサーバの役割はどう変わるか なぜCPU使用率が上がるのか 具体的な比較 同時接続数との関係 よくある誤解:キャッシュすれば解決? Node.js特有の問題 対策として行われること 注意点:サーバ増強だ…

SPAのコードスプリッティングはいつ効く?ウォーターフォールで理解

コードスプリッティングは「軽くする技術」ではない まずSPAの初期表示で何が起きているか コードスプリッティングの仕組み ウォーターフォールでの変化 「効くタイミング」はページ遷移時 よくある失敗:分割しすぎ prefetchと組み合わせたときに真価が出る…

SPAの白画面問題の正体とJSバンドル

SPAで発生する「白画面問題」の正体 SPAの画面はHTMLでは作られていない JavaScriptバンドルとは何か 白画面が発生する具体的なポイント 1. ダウンロード失敗** 2. 構文エラー** 3. 実行時例外** なぜ開発環境では再現しないのか SSRとの決定的な違い JavaSc…

jQueryアニメーションがカクつく理由とrequestAnimationFrameの関係

カクつきの原因は「速さ」ではなく「タイミング」 ブラウザは常に描画しているわけではない jQueryアニメーションの仕組み 何が起きているのか requestAnimationFrameとは何か なぜ滑らかになるのか jQueryが不利になる理由 実際のカクつきパターン 特に重い…

なぜjQueryのDOM操作は遅いと言われ始めたのか

「jQueryは遅い」は本当にjQueryのせいなのか DOM操作はJavaScriptではない jQueryは何をしているのか なぜ昔は問題にならなかったのか 状況を変えたのはJavaScriptエンジン セレクタがボトルネックになる理由 ループで顕著に現れる さらに影響が大きかった…

オプティマイザは別物?MySQLバージョン差の罠

オプティマイザはMySQLのバージョンごとに別物 オプティマイザとは何をしているのか バージョンごとに何が変わるのか 実際に起きる典型的な問題 なぜ開発環境では起きないのか バージョンアップ時の危険な思い込み 対策:必ず見るべきもの ヒント固定は最終…

MySQL8.4で改善されたパフォーマンスの要点

MySQL8.4は「速くなった」のではなく遅くなりにくくなった まず前提:MySQLの遅さの多くはクエリではない InnoDBのロック競合の改善 統計情報(オプティマイザ)の改善 I/O処理の改善 パフォーマンススキーマの強化 注意点 なぜこの方向の改善なのか どう評…

MySQLのLIKE検索でインデックスが効かない理由

インデックスがあるのにLIKE検索が遅い理由 B-Treeインデックスは辞書と同じ なぜ英語では問題になりにくいのか インデックスが使われないもう1つの理由 EXPLAINで確認する よくある誤解 現実的な解決策 前方一致に変える FULLTEXTインデックス 検索専用カラ…

日本語検索が遅い原因はMySQL設定かも

日本語検索が遅いのはSQLではなくMySQL設定 日本語検索でインデックスが効かない理由 文字数ではなく「バイト長」で比較している COLLATIONが遅さを引き起こす よくある誤った対処 効率的な解決策 前方一致検索に変える ngram FULLTEXTを使う COLLATIONを見…

インデックスが効かない原因はMySQLの違い

インデックスが急に効かなくなるのはSQLのせいではない 典型的な症状 なぜインデックスが使われないのか MySQL5.6と5.7以降の違い よくあるパターン:低選択性カラム もう一つの原因:統計情報のズレ なぜ本番だけ遅いのか LIKE検索で突然遅くなる例 インデ…

Astro採用の現実:コードで分かる設計と勘所

まず最初に:Astroを選ぶと「こういうコード」になる 想定するプロダクト:よくあるWebサイト構成(SEO重視+ちょい動き) プロジェクトの素の構造:Astroはこう置く 1本目の具体コード:共通レイアウト(BaseLayout.astro) 2本目の具体コード:トップペー…