大きな JSON のパース、描画、ストリーミング
パースがボトルネックでないことが多い。遅いのは描画とコピーです。「パース → 走査 → 描画 → 転送」の四層に沿って最適化し、労力を無駄にしないようにしましょう。
中級約 13 分で読めます2026-10-31 更新
数十 MB の JSON ファイルはメインスレッドを固め、巧妙に作られた JSON はサービスを貫通します。このカテゴリはスループットと防御の両方を扱います。
6 件の記事パースがボトルネックでないことが多い。遅いのは描画とコピーです。「パース → 走査 → 描画 → 転送」の四層に沿って最適化し、労力を無駄にしないようにしましょう。
JSON.parse 自体は安全です。危険なのはその後に起きることです。深いマージ、パスによる代入、HTML へのインライン化、無制限の深さとサイズ。
minify は生の JSON を 30〜50% 削りますが、gzip がその利得の大半を消します。実際の形での実測値と、minify が逆効果になる四つのケースを示します。
10MB の JSON ファイルは V8 ヒープで 30〜50MB になりえます。文字列、オブジェクト、数値の実際のコスト、process.memoryUsage による基準値の取り方、ストリーミングが効く場面を学びます。
カクつきはスクロール時ではなく DOM ノードの生成時に始まります。折りたたみ優先の描画、仮想リスト、検索ハイライト、Worker の境界を指標とともに扱います。
数十MBのJSONエクスポートはテキストエディタやオンラインツールで頻繁に固まりますが、解析自体は数百ミリ秒で終わります。45MB・50万件のサンプルで各段階の処理時間とメモリを実測し、本当のコストは行数とノード数であることを示した上で、ファイルサイズ別のツール選択表を提示します。オンライン表示、コマンドライン抽出、ストリーミング処理、デスクトップアプリの役割分担がわかります。