HTML コードをフォーマット・ミニファイする方法

· 5 分で読めます

HTMLのフォーマットとミニファイは、異なる目的を果たす反対の操作です。フォーマットは開発者のためにコードを読みやすくします。ミニファイはブラウザのためにコードを小さくします。ほとんどのプロジェクトは両方を必要とします。開発でフォーマット済みコード、本番でミニファイ済みコードです。これは関連する兄弟ツール(CSSのフォーマッタ/ミニファイア、JavaScriptのフォーマッタ/ミニファイア、JSONフォーマッタ)にも同じことが当てはまります。パターンは同じで、構文だけが異なります。

フォーマット: HTMLを読みやすくする

フォーマッタは圧縮された、または乱雑なHTMLを取り、適切なインデント、改行、一貫したスペースを追加します。これにより構造が一目で見えるようになります。

変換前:

<div class="card"><h2>Title</h2><p>Some text here</p><a href="/link">Read more</a></div>

変換後:

<div class="card">
  <h2>Title</h2>
  <p>Some text here</p>
  <a href="/link">Read more</a>
</div>

HTMLをフォーマットする手順

  1. HTMLを貼り付ける: 乱雑またはミニファイされたコードをフォーマッタに入力します。
  2. 設定を選ぶ: インデントサイズ(2または4スペース)と、インラインタグを保持するかを選びます。
  3. 結果をコピー: フォーマットされたHTMLはエディタで使う準備ができています。

ミニファイ: HTMLを小さくする

ミニファイアは、ブラウザが必要としないすべて、つまり空白、コメント、任意の閉じタグ、冗長な属性値を取り除きます。結果は単一の、コンパクトな文字列です。

HTMLをミニファイする手順

  1. フォーマット済みHTMLを貼り付け: インデント、コメント、空白のあるコードを入力します。
  2. オプションを設定: コメントの削除、空白の縮小、属性の最適化を選択します。
  3. ミニファイされた出力をコピー: 本番ビルドで使います。

それぞれをいつ使うか

状況使うもの
コードの記述と編集フォーマット
コードレビューとデバッグフォーマット
本番へのデプロイミニファイ
コードスニペットの共有フォーマット
メールテンプレートミニファイ(ペイロードが小さい)
JSONやYAMLへのHTML埋め込みミニファイ(エスケープ問題を回避)
Stack Overflowやドキュメントへの貼り付けフォーマット

HTMLミニファイの簡単な歴史

HTMLは1991年に人間が読めるように設計されたため、元の仕様(1995年のHTML 2.0)には圧縮の規定がありませんでした。ミニファイの考えは、まずCSSとJavaScriptから育ちました。Douglas Crockfordの JSMin(2001年)は最初に広く使われたJavaScriptミニファイアで、ダイヤルアップユーザーのためにファイルサイズを減らすコメントと空白を削除しました。HTMLMin(npmパッケージ)は2009年に続き、その後htmlmin(Python)が2013年に登場しました。モダンなビルドツール(Webpack 2014年、Vite 2020年、esbuild 2020年)は、本番ステップのデフォルトとしてHTMLミニファイを含みます。

Gzip圧縮(1999年にHTTPコンテンツエンコーディングとして導入)とBrotli(2015年)は、サーバーが送るものを何でも圧縮します。つまり、ミニファイされたHTMLは、フォーマットされたバージョンとほぼ同じサイズに圧縮されます。なぜミニファイするのか? なぜなら、圧縮されたミニファイ済みバージョンは、圧縮されたフォーマット済みバージョンよりもまだ約5から15%小さいからです。トラフィックの多いサイトの何百万回ものページロードにわたって、これは実際の帯域幅節約と、低速接続のユーザーにとってのTime-to-First-Byteの高速化につながります。

ミニファイが実際に取り除くもの

ミニファイアでよく見る設定:

出力はもう人間が読めるものではありませんが、入力と機能的に同一です。

よくある落とし穴

一方を使うか他方を使うか

フォーマッタを使う場面:

ミニファイアを使う場面:

プライバシーと機密コード

フォーマッタとミニファイアの両方が完全にブラウザ内で動作します。貼り付けたHTMLはデバイス上に留まります。アップロードはありません。これは機密コンテンツを含むHTMLにとって重要です。リリース前のマーケティングページ、内部の管理ダッシュボード、NDA下のクライアントテンプレート、ビジネスロジックを明かすプレースホルダーデータを含む部分テンプレートなど。クラウドのHTMLツール(ほとんどのオンラインビューティファイア)はHTMLをサーバーにアップロードする必要があり、これは機密マークアップに対してまさに避けたいことです。

使いこなしのヒント

よくある質問

フォーマットやミニファイでページの表示が変わりますか?

いいえ。ブラウザは HTML 内の余分な空白を無視します。フォーマット済み HTML とミニファイ済み HTML は同じ視覚的結果を生成します。フォーマットは開発者向け、ミニファイはパフォーマンス向けです。

ミニファイでどれだけサイズを節約できますか?

通常 10〜30 % で、元の HTML に含まれる空白とコメントの量によります。100 KB のファイルなら 10〜30 KB の節約となり、何千ものページ読み込みでは大きな差になります。

インライン CSS や JavaScript はどうなりますか?

HTML フォーマッターとミニファイヤーは HTML 構造を扱います。最良の結果を得るには、CSS と JavaScript はそれぞれ専用のツールで別々にミニファイしてください。

コードはサーバーに送信されますか?

いいえ。フォーマットもミニファイも完全にブラウザ内で行われます。コードがデバイスから出ることはありません。