Webサイト制作で画像を軽量化するために、PNGやJPEGをWebP形式に変換する機会が増えました。

私もこれまでは「Squoosh」を使ってWebPに変換していたのですが、画像が多いと1ファイルずつ変換するのが地味に面倒です。

そこでMacの「Automator」とWebP変換ツール「cwebp」を組み合わせて、

Finderで複数のPNGを選択 → 右クリック → WebPに一括変換

できるようにしてみました。

一度設定してしまえば、その後はFinderから数クリックでWebPに変換できます。

この記事では、

  • Intel Mac
  • Apple Silicon(M1 / M2 / M3 / M4 / M5など)

の両方に対応した設定方法を紹介します。

完成するとこんなことができます

例えばFinderに以下のPNG画像があるとします。

image01.png
image02.png
image03.png
image04.png

これらをすべて選択して、

右クリック → クイックアクション → WebPに変換

を実行するだけで、

image01.webp
image02.webp
image03.webp
image04.webp

が同じフォルダに生成されます。

元のPNGファイルはそのまま残ります。

画像が10枚、20枚とあってもまとめて処理できるので、Web制作ではかなり便利です。

今回使用するもの

今回使用するのは以下の2つです。

  • Homebrew
  • Automator

Homebrewを使ってGoogleのWebP変換ツール「cwebp」をインストールし、macOS標準アプリのAutomatorから実行します。

AutomatorはmacOSに標準搭載されているため、新たに変換アプリを購入する必要はありません。

1. HomebrewでWebPをインストールする

まず「ターミナル」を起動します。

以下のコマンドを実行してください。

brew install webp

これでWebP変換に使用する「cwebp」がインストールされます。

「brew: command not found」と表示される場合

Homebrewをまだインストールしていない可能性があります。

その場合はHomebrewを先にインストールしてください。

Homebrew公式サイト:
https://brew.sh/

2. cwebpのインストール場所を確認する

次にターミナルで以下を実行します。

which cwebp

ここは重要です。

MacのCPUによって、基本的にインストール先が異なります。

Intel Macの場合

多くの場合は以下になります。

/usr/local/bin/cwebp

Apple Siliconの場合

M1、M2、M3、M4、M5などのApple Silicon Macでは、多くの場合はこちらです。

/opt/homebrew/bin/cwebp

ただし、環境によって異なる可能性があるため、決め打ちせずに必ず

which cwebp

で確認することをおすすめします。

3. Automatorを起動する

次にmacOS標準アプリの「Automator」を起動します。

Spotlight検索から

Automator

と検索するのが簡単です。

Automatorを開いたら、

「新規書類」→「クイックアクション」

を選択します。

4. クイックアクションを設定する

Automator上部にある設定を変更します。

「ワークフローが受け取る現在の項目」を

画像ファイル

にします。

検索対象は

Finder

にします。

つまり、

ワークフローが受け取る現在の項目:画像ファイル
検索対象:Finder

という設定です。

これでFinderから画像を選択したときに、このクイックアクションを呼び出せるようになります。

5. 「シェルスクリプトを実行」を追加する

Automator左側の検索欄から

シェルスクリプト

と検索します。

表示された

「シェルスクリプトを実行」

を右側のワークフローエリアへドラッグ&ドロップします。

設定は以下にします。

シェル:/bin/zsh
入力の引き渡し方法:引数として

特に重要なのが、

「入力の引き渡し方法:引数として」

です。

Finderで選択した複数ファイルを、シェルスクリプト側で順番に処理するために使用します。

6. WebP変換用スクリプトを入力する

次にWebP変換用のスクリプトを入力します。

Intel Macの場合

CWEBP="/usr/local/bin/cwebp"

for file in "$@"; do
    output="${file%.*}.webp"
    "$CWEBP" -q 85 "$file" -o "$output"
done

Apple Siliconの場合

M1 / M2 / M3 / M4 / M5などの場合はこちらです。

CWEBP="/opt/homebrew/bin/cwebp"

for file in "$@"; do
    output="${file%.*}.webp"
    "$CWEBP" -q 85 "$file" -o "$output"
done

先ほど

which cwebp

で表示されたパスとCWEBP=のパスが一致していることを確認してください。

7. WebPの画質を変更したい場合

スクリプト内の

-q 85

がWebPの品質設定です。

例えば、

-q 90 → 高画質・ファイルサイズ大きめ
-q 85 → 画質と容量のバランス重視
-q 75 → ファイルサイズをさらに小さく

といった具合に調整できます。

Webサイト用の画像であれば、まずは85前後から試してみるとよいでしょう。

画像によって適切な設定は異なるため、実際の画質とファイルサイズを確認しながら調整してください。

8. 「WebPに変換」という名前で保存する

設定が終わったら、

Command + S

でAutomatorのクイックアクションを保存します。

今回は分かりやすく、

WebPに変換

という名前にしました。

これで設定は完了です。

9. FinderからPNGをWebPに一括変換する

あとは非常に簡単です。

FinderでWebPに変換したいPNG画像を複数選択します。

そして、

右クリック → クイックアクション → WebPに変換

をクリックします。

しばらくすると、元画像と同じフォルダにWebP画像が生成されます。

例えば、

sample.png

であれば、

sample.png
sample.webp

という状態になります。

元画像を削除する処理は入れていないので、PNGもそのまま残ります。

Intel MacとApple Silicon Macの違い

今回の設定で注意したいのが、Intel MacとApple Silicon MacでHomebrewのインストール先が異なることです。

代表的なパスは以下です。

Maccwebpのパス
Intel Mac/usr/local/bin/cwebp
Apple Silicon/opt/homebrew/bin/cwebp

Apple Siliconには、M1 / M2 / M3 / M4 / M5などが該当します。

ただし、環境によってパスが異なる可能性もあるため、

which cwebp

で実際のパスを確認するのが確実です。

うまく変換できない場合

右クリックから実行してもWebPが生成されない場合は、まずターミナルで以下を確認します。

which cwebp

例えば、

/opt/homebrew/bin/cwebp

と表示されているのにAutomator側が、

CWEBP="/usr/local/bin/cwebp"

になっていたら動作しません。

その場合は、

CWEBP="/opt/homebrew/bin/cwebp"

に変更します。

また、Automatorの「シェルスクリプトを実行」で、

入力の引き渡し方法:引数として

になっているかも確認してください。

JPEGも一括でWebPに変換できる?

今回のスクリプトは、cwebpが読み込める画像であればPNG以外にも利用できます。

そのため、FinderからJPEG画像を選択して、

右クリック → WebPに変換

という使い方も可能です。

Web制作では、

PNG
↓
WebP

だけでなく、

JPEG
↓
WebP

の一括変換にも使えるので便利です。

さらに便利にカスタマイズできる

Automatorのクイックアクションを複製すれば、用途別のWebP変換も作れます。

例えば、

WebPに変換 90%
WebPに変換 85%
WebPに変換 70%

と画質別に用意しても便利です。

さらにスクリプトを変更すれば、

  • WebP変換と同時に画像をリサイズ
  • 長辺1920pxに縮小してWebP化
  • 変換後に元画像を削除
  • 特定フォルダへWebPを保存
  • ファイル名を変更して保存

といった自動化も可能です。

Web制作を頻繁にする人なら、自分の作業フローに合わせてカスタマイズするとかなりの時短になります。

まとめ

MacでPNGをWebPに一括変換したい場合は、

Homebrew + cwebp + Automator

の組み合わせが非常に便利です。

最初に一度設定してしまえば、その後はFinderから、

複数画像を選択 → 右クリック → WebPに変換

だけで一括処理できます。

SquooshなどのWebサービスも便利ですが、大量の画像を毎回1枚ずつ処理するのは少し面倒です。

Webサイト制作などで頻繁にWebPへ変換するのであれば、Finderのクイックアクションに登録しておくと作業時間をかなり短縮できます。

私自身もこれまでSquooshで1枚ずつ変換していましたが、この方法に変更してかなり楽になりました。

特にWordPress制作やWebコーディングで画像をまとめて最適化することが多い方にはおすすめです。