JSON圧縮
このツールは、JSONペイロードから冗長な空白、インデント、改行、JSONCコメントをすべて取り除きながら、RFC 8259の構文整合性を厳密に保ちます。処理前後のバイト数、削減率、ブラウザが実測した実際のgzip通信サイズ、HTTPペイロード転送を最適化するためのキー短縮の頻度分析を報告します。
JSON圧縮はどう動きますか?
本番のWebアプリケーションやマイクロサービスでは、JSONペイロードに、プリティプリンタやコードフォーマッター、開発者のインデントが持ち込んだ20%から55%もの冗長な空白が含まれていることがよくあります。この無駄な重みは、ネットワーク転送のレイテンシを直接膨らませ、送信帯域を消費し、JSON.parseのデシリアライズを遅くします。
ToolsByUsの最小化エンジンは、完全な字句トークン化を行います。
- 構文の破壊ゼロ:引用符で囲まれた文字列リテラルの中の空白は一字一句そのまま保持し、構造上の空白(コロン、カンマ、括弧の周囲のスペース)は完全に除去します。
- コメントの除去:JSONC設定ファイルによくある1行コメント(
//)と複数行コメント(/* */)を許容し、除去します。 - 実際のgzip計測:最小化した出力は、ブラウザ自身の
CompressionStream("gzip")エンコーダーで圧縮されます。報告される通信サイズは実測値であり、モデルによる推定ではありません。このAPIを持たないブラウザでは、シャノンエントロピーによる近似へフォールバックし、ラベルでどちらの数値かを示します。 - キー短縮の分析:繰り返し現れるプロパティ名を調べます。長いプロパティキー(
transactionIdentificationなど)が配列の何百もの項目にわたって繰り返されるとき、レポートは短縮によって得られる正確なバイト節約量を計算します。
未圧縮の整形済みJSON
{
"status": "ok",
"code": 200
}出力例
{"status":"ok","code":200}JSON圧縮が対応するオプションとエッジケースは?
| パラメータ | 型 | デフォルト | 動作とエッジケース |
|---|---|---|---|
| 空白文字の除去 | ルール | RFC 8259 | 文字列リテラルの外側にあるスペース、タブ、CR、LFを除去します。 |
| JSONCコメント | サニタイザー | 除去済み | // と /* */ のコメントを検出して除去します。文字列の内容は損傷しません。 |
| Gzipサイズ | 指標 | 計測済み | ブラウザのネイティブgzipエンコーダで圧縮されます。CompressionStreamが利用できない場合はエントロピー推定にフォールバックします("~"で表示)。 |
| キーの短縮 | 分析 | 報告済み | 3文字より長い繰り返しキーをカタログ化し、節約可能なバイト数を計算します。 |
よくある質問
最小化はAPIレスポンスのレイテンシをどう減らしますか?
最小化は、TCP/QUICパケットで転送される生のバイトペイロードを直接減らします。複数のMTUフレーム(1500 bytes)にまたがるペイロードでは、無駄な空白を落とすことで往復の回数が減り、ブラウザのパースにかかるCPUサイクルも下がります。
JSONの最小化はデータ型や浮動小数点の精度に影響しますか?
いいえ。ミニファイアーはJSONの構文トークンだけを操作します。文字列リテラル、数値、小数の精度、真偽値は、ビット単位までまったく同じままです。
ツールがGzipサイズを表示するのはなぜですか?
本番のWebサーバー(Nginx、Cloudflare、Envoy)はほぼすべて、JSONレスポンスにgzipかbrotliの圧縮を適用します。そのため圧縮前のバイト数は、実際にネットワークを流れる量を誇張した値になります。表示される数値は、CompressionStream API経由でブラウザ自身のgzipエンコーダーが作ったもので、圧縮サイズのモデルではなく実測値です。このAPIを持たないブラウザでは、エントロピーに基づく近似へフォールバックし、数値の前にチルダを付けます。
最小化したJSONはサーバーで処理されますか?
決してされません。パース、最小化、圧縮の分析はすべて、ブラウザのメモリ内で100%ローカルに実行されます。データがリモートのサーバーへ送られることは一切ありません。
JSONを最小化すると、ペイロードは実際どれだけ小さくなりますか?
インデントされたJSONは典型的には10–30%が空白なので、最小化で生のバイト数から減るのはだいたいその分です。gzipの後の節約ははるかに小さくなります。圧縮器は長いスペースの連なりを非常にうまく圧縮できるからです。だからこそこのツールは、都合のよい数字だけではなく、両方の数値を並べて表示します。
サーバーがすでにレスポンスを圧縮しているなら、最小化する価値はありますか?
多くの場合、効果はごくわずかです。両方の数値を表示するのは、習慣ではなく数字で判断できるようにするためです。それでも効くのは、HTMLやURLに埋め込まれるJSON、圧縮なしで配信されるもの、バイト単位で保存されるペイロードです。ごく普通のgzipされたAPIレスポンスでは差が1%未満になることもあり、めったに割に合いません。