コード圧縮ガイド — HTML、CSS、JS最適化
ウェブでは1キロバイトが重要です。読み込み時間が100ms増加するだけで、ユーザーエンゲージメントが測定可能なほど低下する可能性があります。ミニファイ(圧縮)は、HTML、CSS、JavaScriptのサイズを削減する最もシンプルで効果的な技術の1つであり、すべてのプロダクションデプロイメントパイプラインの一部であるべきです。
このガイドでは、各言語での圧縮の実際の効果、コンプレッションとの比較、ワークフローへの統合方法について説明します。Code Minifierを使えば、ビルドツールを設定せずに素早くコードを圧縮できます。
ミニファイとは?
ミニファイとは、機能を変更せずにソースコードから不要な文字を削除するプロセスです:
- コメント — 開発者には有用ですが、ブラウザには見えません
- 空白 — 可読性のためのスペース、タブ、改行
- 冗長な構文 — 省略可能なセミコロン、引用符、閉じタグ
- 長い識別子 — 変数名や関数名の短縮(JavaScriptのみ)
結果として、ファイルサイズが小さくなり、ダウンロードが速くなり、ブラウザによるパースが速くなります。
ミニファイ vs コンプレッション:相互補完的な関係
ミニファイとコンプレッション(gzip/Brotli)が互換性があるという誤解がよくあります。実際は補完的な関係です。
ミニファイはソースコードレベルで冗長な文字を削除します。
コンプレッション(gzip、Brotli)は、ネットワーク上で転送されるバイトに汎用圧縮アルゴリズムを適用します。
両方が必要な理由:
元のCSS: 28.4 KB
ミニファイのみ: 18.2 KB (36%削減)
コンプレッションのみ: 7.1 KB (75%削減)
ミニファイ+コンプレッション: 5.3 KB (81%削減)
ミニファイされたコードはより効率的に圧縮されます。常にまずミニファイし、次にサーバーにコンプレッションを処理させましょう。
HTML圧縮
HTML圧縮は3つの中で最も保守的です。ブラウザはHTMLに対して非常に寛容なので、いくつかの構造を安全に削除できます。
何が削除されるか
コメント:
<!-- 変更前 -->
<!-- ナビゲーションセクション -->
<nav>
<!-- メインメニュー -->
<ul>
<li><a href="/">ホーム</a></li>
</ul>
</nav>
<!-- 変更後 -->
<nav><ul><li><a href="/">ホーム</a></li></ul></nav>
タグ間の不要な空白:
<!-- 変更前 -->
<div>
<p>
こんにちは世界
</p>
</div>
<!-- 変更後 -->
<div><p>こんにちは世界</p></div>
省略可能な閉じタグ:
<!-- 変更前 -->
<ul>
<li>アイテム1</li>
<li>アイテム2</li>
</ul>
<!-- 変更後 -->
<ul><li>アイテム1<li>アイテム2</ul>
HTMLの一般的な削減率
HTML圧縮は一般的にファイルサイズを**10〜25%**削減します。Code Minifierで実際に試してみてください。
CSS圧縮
CSSはスタイルシートにコメントが多く、空白が豊富に使われるため、圧縮から大きな恩恵を受けます。
何が削除されるか
コメントと空白:
/* 変更前 */
/* プライマリボタンスタイル */
.btn-primary {
background-color: #3b82f6;
color: #ffffff;
padding: 12px 24px;
border-radius: 8px;
font-weight: 600;
}
/* 変更後 */
.btn-primary{background-color:#3b82f6;color:#fff;padding:12px 24px;border-radius:8px;font-weight:600}
ショートハンド変換:
/* 変更前 */
margin-top: 10px;
margin-right: 20px;
margin-bottom: 10px;
margin-left: 20px;
/* 変更後 */
margin:10px 20px
カラー最適化:
/* 変更前 */
color: #ffffff;
background: #aabbcc;
/* 変更後 */
color:#fff;background:#abc
CSSの一般的な削減率
CSS圧縮は一般的にファイルサイズを**20〜40%**削減します。
JavaScript圧縮
JavaScript圧縮は最も積極的です。言語が単純な空白削除を超えた変換を可能にするためです。
何が削除・変換されるか
コメント、空白、変数名の短縮:
// 変更前
// 税込み合計金額を計算する
function calculateTotal(price, taxRate) {
const tax = price * taxRate;
return price + tax;
}
// 変更後
function calculateTotal(n,t){const a=n*t;return n+a}
ミニファイアは変数名も短縮しました:priceはnに、taxRateはtに、taxはaになりました。これはマングリングと呼ばれます。
デッドコードの削除:
// 変更前
function processData(data) {
if (false) {
console.log('これは実行されません');
}
return data.map(item => item.value);
}
// 変更後
function processData(d){return d.map(i=>i.value)}
JavaScriptの一般的な削減率
JavaScript圧縮は一般的にファイルサイズを**30〜60%**削減します。
削減率のまとめ
| 言語 | 一般的な削減率 | 主な削減の要因 |
|---|---|---|
| HTML | 10〜25% | 空白、コメント |
| CSS | 20〜40% | コメント、ショートハンド、色 |
| JavaScript | 30〜60% | 変数マングリング、デッドコード |
ミニファイしない方が良い場合
開発中
ミニファイされたコードはほぼ読めません。開発ビルドはミニファイしないでおきましょう。
オープンソースライブラリ
ミニファイされていないソースコードを配布しましょう。消費者が自分のビルドの一部としてミニファイできるようにします。
非常に小さなファイル
200バイトのインラインスクリプトにはミニファイは不要です。1KB以上のファイルにミニファイの努力を集中しましょう。
ソースマップ:ミニファイされたコードをデバッグ可能に保つ
ソースマップは、ミニファイされた本番コードと元のソースコードを結びつけます。
//# sourceMappingURL=app.min.js.map
ソースマップのベストプラクティス:
- ビルドパイプラインでソースマップを生成しますが、本番環境では公開しないようにします
- エラートラッキングサービス(Sentry、Bugsnag)にソースマップをアップロードします
- webpack/Viteで
hiddenソースマップオプションを使用します
ビルドパイプラインへの統合
webpack
const TerserPlugin = require('terser-webpack-plugin');
const CssMinimizerPlugin = require('css-minimizer-webpack-plugin');
module.exports = {
mode: 'production',
optimization: {
minimizer: [new TerserPlugin(), new CssMinimizerPlugin()],
},
};
Vite
export default {
build: {
minify: 'esbuild',
cssMinify: true,
},
};
esbuild
esbuild app.js --bundle --minify --outfile=app.min.js
Rollup
import terser from '@rollup/plugin-terser';
export default { plugins: [terser()] };
ビルドツールなしでの素早いミニファイ
すべてのタスクに完全なビルドパイプラインが必要なわけではありません。単発のタスクには、Code MinifierがHTML、CSS、JavaScriptをブラウザ内で処理します — インストール不要、設定不要、データはサーバーに送信されません。
データフォーマットには、JSON MinifierとYAML Minifierもご用意しています。
ミニファイチェックリスト
- すべてのCSSとJSファイルがミニファイされている
- ソースマップが生成されている
- HTMLがミニファイされている
- コンプレッションが有効 —
Content-Encoding: gzipまたはbrを確認 - 開発ビルドはミニファイされていない
- console.logが削除されている
- 二重ミニファイなし
関連リソース
- ウェブ向け画像最適化 — ページの最大の重量要因を削減
- YAML圧縮ガイド — 設定ファイルの圧縮テクニック
- ウェブ開発者ツールチェックリスト — すべてのワークフローに必要なツール
ミニファイを始めよう
ミニファイは低労力・高効果の最適化です。
Code Minifierを開く → — HTML、CSS、またはJavaScriptを貼り付けて、最適化された出力を即座に取得。登録不要、インストール不要、完全にプライベート。