こんにちは!プロダクトデザイナー、そしてフロントエンドエンジニアのあなたへ。
日々のデザイン制作やエンジニアへの引き渡し(ハンドオフ)で、こんなモヤモヤを感じたことはありませんか?
- 「デザインカンプからSVGを書き出しただけなのに、謎のメタデータや使っていないグループタグが膨大に含まれていてファイルサイズが大きい……」
- 「エンジニアから『このアセット、重いから最適化して再送して』と言われてムダな修正が発生する」
- 「Webやモバイルアプリの初期読み込み速度(LCPやCLS)を限界まで削り込みたいのに、画像アセットがボトルネックになっている」
これを解決するのが、Sketchが標準で持つ「Smart Export(スマートエクスポート)」と、SVG最適化のデファクトスタンダードである「SVGO」を組み合わせた極限の軽量化ワークフローです。
今回は、これからSketchを使ったモダンなアセット管理と高速化の仕組みに触れる方に向けて、ツールの本質から実践的なセットアップ、そして「思わずエンジニアが唸る」最高の引き渡しワークフローまでを、優しく、徹底的に解説していきます。これをマスターすれば、毎日の作業とチームのパフォーマンスが劇的に変わりますよ!
—
1. なぜ、デザインツールの「生書き出し」はファイルが肥大化するのか?
まず、デザインツールから出力されるアセットの裏側を覗いてみましょう。
SketchやFigmaなどのデザインツールは、レイヤー構造、デザイナーごとのクセ、編集履歴、さらには将来の編集性を担保するためのメタデータをファイル内に保持しています。それをそのまま「SVG」や「PNG」としてエクスポートすると、以下のような“余計な荷物”まで一緒にパッケージングされてしまいます。
- 編集用メタデータ: Adobe IllustratorやSketch固有の名前空間、GUID(個体識別子)。
- 隠しレイヤーや空のグループ: デザインの試行錯誤の跡に残された `
` タグや ` `。 - 不要な属性:
enable-backgroundや使われていないxml:spaceなどのレガシーなSVG属性。
これらは、ブラウザやモバイルアプリのレンダリングエンジンにとっては「1バイトの価値もないゴミ」です。通信量を圧迫し、DOMのパースコストを増大させるだけの原因になります。
—
2. Sketchの「Smart Export」を基礎から理解する
まずは、Sketchの標準機能である「Smart Export」のポテンシャルを最大限に引き出しましょう。
Smart Exportの役割とは?
Smart Exportとは、1つのレイヤーやアートボードから、複数のサイズ(@1x, @2x, @3x)や異なるフォーマット(SVG, PNG, WebPなど)をワンクリックで同時書き出しする仕組みです。
基礎セットアップ:スライスの正しい当て方
初心者がやりがちなミスは、アートボード全体をそのままSVGにしてしまうことです。アイコンやロゴは、必ず「ベクターパスが正しく整えられたグループ(またはシンボル)」に対してエクスポート設定を行います。
1. 対象のレイヤーを選択する。
2. インスペクターパネル(右側)の最下部にある 「Make Exportable」 をクリック。
3. プレフィックスやサフィックス(例: `@2x` や `-icon`)を設定し、フォーマットを `SVG` や `PNG` に指定。
これだけで、デザインを変更したときに同じ名前・同じ場所へアセットを爆速で上書きエクスポートできるようになります。これがSketchにおける「自動化の第一歩」です。
—
3. 究極の軽量化の切り札:SVGOによるメタデータ自動削除
しかし、Sketchの標準エクスポートだけでは、コードレベルでの「細かい不要な属性の削除」までは完璧にコントロールできません。ここで登場するのが、SVG最適化の神ツール「SVGO (SVG Optimizer)」です。
SVGOとは?
Node.js製をベースにしたオープンソースのSVG最適化エンジンで、SVGの構造を解析し、見た目を変えずにコードを極限までスリム化(難読化・圧縮)してくれます。
環境構築:CLIツールのインストール
まずは、お手元のMacでターミナルを開き、グローバル環境にSVGOをインストールしましょう。(※Node.jsがインストールされている前提です)
グローバルにSVGOをインストール
npm install -g svgo
インストールが成功したか、バージョンを確認してみます。
svgo –version
例: v3.x.x が返ってればOKです
精度高い動作確認(HelloWorld的アプローチ)
手元にある適当なSVGファイルを1つ用意してください(ここでは `logo.svg` とします)。以下のコマンドを叩くだけで、その魔力が体感できます。
svgo logo.svg -o logo.min.svg
ターミナルに次のようなログが出力されます。
> `logo.svg` -> `logo.min.svg` (done: 45.2% reduction)
なんと、コードを一切削ることなく、ファイルサイズが半分以下(45.2%減)になりました!これがSVGOの真価です。
—
4. 現場で即採用できる!Sketchプラグインとの連携ワークフロー
「毎回ターミナルを開いてコマンドを打つのは面倒くさい……」
そうですよね。私たちはデザイナーでありエンジニアです。面倒な手作業はすべて自動化しましょう。
Sketchには、エクスポート時に自動でSVGOなどの最適化を走らせてくれる神プラグインが存在します。
おすすめプラグイン:「SVGO Compressor」または「Sketch SVGO」
プラグインマネージャー(例: Sketchpacksや公式ライブラリ)から、SVGを最適化するプラグインをインストールします。
【理想的なハンドオフ・ワークフローの全貌】
1. デザイン作成: Sketch上でコンポーネント指向を意識してアイコンやUIパーツを作成。
2. Smart Exportの設定: 各アセットにエクスポート設定を付与。
3. 書き出しと同時最適化: プラグイン経由、または後述するビルドスクリプトでSVGOを通過させる。
4. エンジニアへ引き渡し: 限界まで軽量化され、綺麗に整ったアセットがGitHubやZeplin経由でエンジニアの元へ届く。
—
5. 差がつくプロの知見:設定ファイル(`svgo.config.js`)の極意
SVGOをプロジェクトに導入する際、デフォルトのままだと「パスが勝手に結合されてデザインが崩れた!」という事故が稀に起きます。これを防ぐために、プロジェクトルートに専用の設定ファイルを置きましょう。
以下は、デザインの整合性を完全に保ちつつ、極限まで削るための実用的な `svgo.config.js` です。
// svgo.config.js
module.exports = {
multipass: true, // 複数回最適化をループさせて、限界までサイズを削る
plugins: [
{
name: ‘preset-default’,
params: {
overrides: {
// IllustratorやSketch特有のメタデータ(title, desc)を削除
removeViewBox: false, // viewBoxはレスポンシブ対応に必須なので消さない!
cleanupIds: true, // 重複・不要なIDを削除
removeUselessStrokeAndFill: true, // 使っていないストロークや塗りを削除
},
},
},
‘removeDimensions’, // width/height属性を削除し、CSSで制御しやすくする
{
name: ‘addAttributesToSVGElement’,
params: {
attributes: [{ focusable: ‘false’ }], // アクセシビリティ向上のための属性を自動付与
},
},
],
};
この設定ファイルをプロジェクトに置いておけば、チーム全員が同じ品質、同じ圧縮率でSVGアセットを量産できるようになります。
—
まとめ:小さな1バイトのこだわりが、プロダクトの体験を劇的に変える
今回は、Sketchの「Smart Export」とSVGOを組み合わせた、Web・アプリの読み込み速度を劇的に改善する軽量化の裏技をご紹介しました。
- SketchのSmart Exportで、マルチデバイス向けのアセットを効率的に管理する。
- SVGOを導入し、人間の目に見えない不要なメタデータを自動削除する。
- 設定ファイル(`svgo.config.js`)を共有し、チーム全体で高品質なアセットパイプラインを構築する。
デザインの美しさだけでなく、「コードとしての美しさとパフォーマンス」までこだわり抜くこと。それが、私たちエンジニアリング視点を持つプロダクトデザイナーの醍醐味です。
これをマスターしたあなたなら、明日からのエンジニアとの連携が驚くほどスムーズになるはずです。さあ、今日からあなたのデザインファイルも軽量化の旅に出発させましょう!