ディレクトリを圧縮:1 行 vs 多数の行
Sharp (Node.js)
import sharp from 'sharp';
import fs from 'fs/promises';
import path from 'path';
// Convert every image in a directory to WebP
const dir = './images';
const out = './out';
const files = await fs.readdir(dir);
const images = files.filter(f => /\.(jpe?g|png|gif)$/i.test(f));
await Promise.all(
images.map(file =>
sharp(path.join(dir, file))
.webp({ quality: 80 })
.toFile(path.join(out, file.replace(/\.[^.]+$/, '.webp')))
)
);GetWebPRecommended
# One command — that's it getwebp ./images -o ./out
✓ ✓ ループなし、非同期ファイル処理なし、設定なし。
アーキテクチャ:WASM エンジン vs ネイティブバインディング
核心的な違いは、画像処理がどこで行われ、何に依存するかです。
Pure WASM
GetWebP — 純粋 WASM
専用コーデックからコンパイルされた自己完結型の WebAssembly バイナリを同梱。Node.js、Deno、Cloudflare Workers、Vercel Edge、ブラウザで同一に動作。ビルドツール、OS パッケージ、Docker レイヤーの変更は不要。
Native Bindings
Sharp — libvips C++ バインディング
ネイティブ Node.js バインディングを通じて libvips C ライブラリをラップ。Node.js サーバー上の CPU バウンドワークロードで優れたスループットを発揮。インストール時にネイティブコンパイルが必要で、Edge ランタイムやブラウザとは互換性がありません。
機能比較
スクロールして全表を表示 →
機能
Sharp
推奨GetWebP
インストール
npm install sharp (+ native compile)
Single binary / npm install
インストール
Sharpnpm install sharp (+ native compile)
GetWebPSingle binary / npm install
Node.js サポート
Node.js サポート
Sharp
GetWebP
Edge / サーバーレスサポート
Edge / サーバーレスサポート
Sharp
GetWebP
ブラウザサポート
ブラウザサポート
Sharp
GetWebP
ネイティブ依存関係
libvips (native)
None (WASM)
ネイティブ依存関係
Sharplibvips (native)
GetWebPNone (WASM)
Docker イメージサイズへの影響
+50–100 MB
+~5 MB
Docker イメージサイズへの影響
Sharp+50–100 MB
GetWebP+~5 MB
使いやすさ(バッチジョブ)
Loop + async pipeline
1 CLI command
使いやすさ(バッチジョブ)
SharpLoop + async pipeline
GetWebP1 CLI command
パフォーマンス概要
セットアップ時間GetWebP:ダウンロードして実行。Sharp:npm install + ネイティブコンパイル。
GetWebP
Sharp
メモリフットプリントGetWebP WASM サンドボックス vs Sharp libvips プロセスメモリ。
GetWebP
Sharp
コールドスタートレイテンシWASM とネイティブバイナリ読み込みによる Edge / サーバーレスのコールドスタート。
GetWebP
Sharp
よくある質問
この比較は 2025 年初頭時点での各ツールの公開ドキュメントに基づく理解を反映しています。Sharp は十分にメンテナンスされた広く使われているライブラリです。差異を正確に提示することを目指しています——誤りを見つけた場合はお知らせください。