ToolPal
ダークスクリーンにカラフルなシンタックスハイライトが表示されたコードエディタ

SVG最適化ガイド:品質を損なわずにファイルサイズを30〜70%削減する方法

📷 Vadim Sherbakov / Pexels

SVG最適化ガイド:品質を損なわずにファイルサイズを30〜70%削減する方法

Web向けSVGファイルを最適化するための実践ガイド。安全に削除できるメタデータ、IDを削除すべきタイミング、レンダリングに影響を与えずにSVGをより小さくする方法を解説します。

2026年4月10日2分で読了

InkscapeやAdobe IllustratorからSVGをエクスポートした後、テキストエディタで開いたことはありますか?シンプルなアイコンのはずが、膨大なメタデータ、エディタの設定、ライセンス情報、ブラウザが決して使わないXML名前空間でいっぱいになっています。実際のパスデータは2KB程度なのに、エディタメタデータのせいでファイル全体が15KBになっていることもあります。

1つのアイコンだけなら大した差ではありませんが、ページに数十個のアイコンがあると話が変わります。SVGの最適化は、一度やっておけばずっと効果が続く作業です。このガイドでは、SVGファイルの中に実際に何があるのか、何を安全に削除できるか、何を触ってはいけないか、そしてToolBox HubsのSVG Optimizerツールの使い方を解説します。

肥大化したSVGの中身

Inkscapeで単純な図形をエクスポートすると、こんな出力になります:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:cc="http://creativecommons.org/ns#"
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.0.dtd"
   xmlns="http://www.w3.org/2000/svg"
   width="100" height="100" viewBox="0 0 100 100">
  <sodipodi:namedview
     inkscape:zoom="5.6"
     inkscape:cx="50"
     inkscape:cy="50" />
  <metadata id="metadata5">
    <rdf:RDF>
      <cc:Work rdf:about="">
        <dc:format>image/svg+xml</dc:format>
        <dc:title />
      </cc:Work>
    </rdf:RDF>
  </metadata>
  <g inkscape:label="Layer 1" inkscape:groupmode="layer" id="layer1">
    <circle cx="50" cy="50" r="40" style="fill:#4a90d9" />
  </g>
</svg>

このファイル全体が、青い円を一つ描くためのものです。意味のあるコンテンツは<circle>要素の一行だけです。残りはすべてエディタの状態がファイルに保存されたものです。ブラウザはレンダリング時にこれらをすべて無視しますが、パースとダウンロードのコストは発生します。

安全に削除できるもの

XML宣言とコメント

ファイル先頭の<?xml version="1.0" encoding="UTF-8"?>は、HTMLに埋め込んだりimgタグで使ったりするSVGには不要です。モダンブラウザにはこれなしでSVGを処理できます。

<!-- Created with Inkscape -->のようなコメントも、バイトを無駄に消費するだけです。削除しましょう。

エディタ名前空間の宣言

これらの名前空間は、それぞれのエディタ内部でのみ意味を持ちます:

  • xmlns:inkscapexmlns:sodipodi — Inkscape専用
  • xmlns:dcxmlns:ccxmlns:rdf — Dublin CoreとCreative Commonsメタデータ

名前空間の宣言を削除すると、それを使用する属性と要素もすべて削除できます。

sodipodi:namedview要素

これは純粋にInkscapeのエディタ状態です — ズームレベル、パン位置、グリッド設定、ルーラー単位。SVGコンテンツと比較してサイズが大きく、レンダリングには全く貢献しません。

RDFメタデータブロック

<metadata>要素内の<rdf:RDF>には、dc:titledc:descriptiondc:creator、ライセンス情報などDublin Coreメタデータが格納されています。著作権管理が必要でなければ安全に削除できます。

Inkscape固有の属性

Inkscapeがよく追加する属性:

  • inkscape:label="Layer 1" — エディタのレイヤー名
  • inkscape:groupmode="layer" — グループ動作のメタデータ
  • inkscape:connector-curvature="0" — コネクタルーティングのヒント
  • sodipodi:nodetypes="cccc" — エディタ用のノードタイプヒント

これらはいずれもレンダリングに影響しません。

不必要な小数精度

M 49.999998 50.000001のようなパスデータは、ほとんどの場合M 50 50に丸めても視覚的な違いはありません。

削除してはいけないもの

これが問題になりやすいポイントです。明確に整理します。

CSSやJavaScriptが参照するID

スタイルシートに.icon #arrow-head { fill: red; }があったり、JavaScriptでdocument.getElementById("tooltip-area")を呼び出したりしていれば、そのIDは必須です。削除するとSVGはレンダリングされますが、スタイルやインタラクションが適用されなくなります。

最適化前に、SVGのIDがコードベースの他の場所で参照されていないか確認してください。

SVG内部要素が参照するID

SVG自体がIDを内部参照します:

  • <clipPath id="myClip">clip-path="url(#myClip)"
  • <linearGradient id="grad1">fill="url(#grad1)"
  • <mask id="mask0">mask="url(#mask0)"
  • <filter id="blur">filter="url(#blur)"

これらのIDを削除または変更すると、参照している図形がスタイルなしでレンダリングされるか、まったく表示されなくなります。

アニメーションのターゲット

SMILアニメーション(<animate><animateTransform>)とCSSアニメーションはどちらも要素IDをターゲットにします。SVGにアニメーションがある場合は、最適化後に必ずテストしてください。

アクセシビリティのためのtitledesc

インラインSVGでスクリーンリーダーのサポートが必要な場合、<title><desc>要素は重要です。アクセシビリティ要件を理解した上で扱ってください。

スプライトシートのシンボルID

SVGスプライトシートはこのようなパターンを使います:

<svg style="display:none">
  <symbol id="icon-home" viewBox="0 0 24 24">...</symbol>
  <symbol id="icon-search" viewBox="0 0 24 24">...</symbol>
</svg>

そして別の場所で:<use href="#icon-home" />。最適化中にシンボルIDが削除または短縮されると、HTML内のすべてのuse参照が壊れます。スプライトシートを最適化する際はID短縮機能を無効にしてください。

SVG Optimizerツールの使い方:ステップバイステップ

  1. ツールを開くtoolboxhubs.com/tools/svg-optimizerにアクセス

  2. SVGを貼り付けるかアップロード — ファイルをドラッグするか、SVGマークアップを直接貼り付けます。ツールはブラウザ内で完全に動作するため、ファイルはサーバーに送信されません。

  3. 設定を確認 — デフォルト設定ではエディタメタデータ、コメント、XML宣言、空の要素が削除され、数値が丸められます。外部から参照されているIDがないと確信できない限り、ID短縮はオフのままにしてください。

  4. 最適化をクリック — ツールがSVGを処理し、最適化前後のファイルサイズと削減率を表示します。

  5. ビジュアル確認 — 元のSVGと最適化されたSVGのプレビューを並べて表示します。同じに見えることを確認してください。

  6. 結果をコピーまたはダウンロード

一般的なアイコンの場合、全体で約30秒かかります。

実際のファイルサイズ削減例

実際に確認した結果をいくつか紹介します:

Inkscapeのシンプルなアイコン: 8.2KB → 1.4KB(83%削減)。ファイルのほぼすべてがエディタメタデータで、実際のパスは非常に小さかったです。

Illustratorの20レイヤーイラスト: 94KB → 31KB(67%削減)。IllustratorはXML名前空間の宣言とレイヤーメタデータを大量に追加します。

手書きSVG: 3.1KB → 2.9KB(6%削減)。手書きや自動生成されたSVGはすでにコンパクトです。最適化ツールが主にすることは小数点の丸めです。

デザインエージェンシーのロゴ: 22KB → 9KB(59%削減)。典型的なケース — デザインチームが「Web用」でエクスポートしたが最適化はしていない。

パターンはかなり一貫しています:GUIエディタの関与が多いほど、削除できるものも多くなります。

SVGO CLIとの比較

SVGO(SVG Optimizer)はSVG最適化のスタンダードなコマンドラインツールです。ブラウザツールとSVGOは同様の作業を行っています — エディタメタデータの削除、コメントの削除、数値の丸め、冗長な要素の結合。

SVGO CLIが優れている点:

  • 自動化:webpack/vite/rollupビルドパイプラインへの統合。保存時の自動最適化。フォルダ全体のバッチ処理。
  • 設定可能性svgo.config.jsでプラグインの有効化/無効化、精度設定、特定の属性の保持。
  • より多くのプラグイン:属性の並べ替え、図形をパスに変換、スタイルのインライン化など数十のプラグイン。
  • 再現性:同じ設定、同じ出力、常に。

ブラウザツールが優れている点:

  • 設定不要:Node.js、npm、設定ファイル不要。
  • ビジュアルプレビュー:結果を確認してから反映するかどうかを決断。
  • 素早い単発作業:ブラウザを開いて貼り付けてコピーするだけ。
  • 非開発者でも使える:デザイナーがターミナルなしで使えます。

個人的なワークフロー:プロジェクトのアイコンにはビルドパイプラインでSVGOを使い、デザイナーからSVGが送られてきたときに素早く確認したい場合はブラウザツールを使っています。

よくある最適化ミス

視覚的な結果を確認しない。積極的な丸めは、複雑なパスを変形させることがあります。必ずプレビューを確認してください — 特にフォントアウトラインや技術的な図解のような非常に精密なSVGの場合。

バックアップなしで上書き。最適化ツールは元のファイルを保持しません。ソースファイル(Inkscape/Illustrator)を保管するか、少なくとも最適化前のSVGをバージョン管理に保存しておいてください。

使われていないと思ったIDを削除。まず検索してください。grep -r "my-id" ./srcは2秒でできて、2時間のデバッグを防ぐことができます。

関連ツール

SVGを最適化した後、これらのツールも役立つかもしれません:

  • XML Formatter — 最適化前後のSVG XMLを検査したり整形したりする場合
  • HTML Minifier — SVGを含むHTMLファイルの圧縮
  • Image to Base64 — 最適化されたSVGをCSS埋め込み用のbase64データURIに変換

SVG最適化はWebパフォーマンスの中でも比較的早く成果が出る作業の一つです。アイコンのファイルサイズ60%削減は小さく見えるかもしれませんが、ページに40個のアイコンがあれば合計は相当なものになります。そしてSVGはテキストなのでgzip/brotli圧縮も効果的です — 圧縮前のファイルが小さいほど、圧縮後もさらに小さくなります。

よくある質問

この記事を共有

XLinkedIn

関連記事