コマンドライン(jpgboost-cli)

jpgboost-cliはグラフィカルインターフェースを開かずに画像を圧縮します。スクリプト、定期実行タスク、継続的インテグレーションに適したツールです。

Mac App Store版では利用できません

jpgboost-cliは、jpgboost.comで直接販売されているJPGBoostの版にのみ含まれています。Mac App Store版にはどのライセンス階層でも含まれておらず、今後のアップデートで追加されることもありません。Storeアプリに課されるAppleのサンドボックスは、コマンドライン実行ファイルの同梱やインターフェースなしでの動作を完全に禁止しています。Mac App Store版をお使いの場合は、代わりにローカルAPI監視フォルダショートカットとAppleScriptとの連携で、多くのスクリプトや自動化のニーズをカバーできます。

Pro機能

お使いのライセンスは、個人的に使用する最大2つのインストールをカバーします。アプリとCLIは、同じMac上にインストールされていても、それぞれ別のインストールとしてカウントされます。これらは設定 > ライセンスにデバイスとして表示されます。

継続的インテグレーションや定期実行タスクなど、自動化のためだけにCLIを実行するサーバーは、追加のライセンスを必要とせず、この2つの枠のうち1つを占有できます。詳しくはサーバーでのライセンスユーザーあたり1ライセンスのセクションをご覧ください。

コマンドラインの用途

jpgboost-cliはJPGBoost.appに含まれる独立した実行ファイルです。ローカルAPIにもアプリの実行中インスタンスにも依存せず、同じデコード・エンコードエンジンを直接使用するため、グラフィカルインターフェースとまったく同じファイルを生成します。

これは、インターフェースを一切開くべきでない場合に適したエントリーポイントです。シェルスクリプト、定期実行タスク、継続的インテグレーション、大量のファイルの処理などに向いています。

インストール不要

jpgboost-cliJPGBoost.appに含まれています。アプリにすでに統合されたコンポーネントを使用するため、コンパイルもライブラリのインストールも必要ありません。

コマンドをアクセス可能にする

バイナリはアプリのパッケージ内にあります。フルパスを使って直接呼び出せます:

/Applications/JPGBoost.app/Contents/MacOS/jpgboost-cli --help

どのフォルダからでもjpgboost-cliを実行できるように、シンボリックリンクを一度作成します:

sudo ln -s /Applications/JPGBoost.app/Contents/MacOS/jpgboost-cli \
  /usr/local/bin/jpgboost-cli

jpgboost-cli --help

このリンクはパッケージを指しているため、アプリを更新した後も有効なままです。このページの例では、このインストールを前提としています。行っていない場合は、jpgboost-cliを上記のフルパスに置き換えてください。

sudoを使わない場合

PATHに含まれていれば、/usr/local/binの代わりに~/binのような個人用フォルダを使うこともできます。簡単な代替方法として、~/.zshrcにエイリアスを追加することもできます。

サーバーでのライセンス

グラフィカルインターフェースのないサーバーなど、CLIのみを実行するマシンは、JPGBoost.appを使わずに有効化・管理できます。

# CLIからこのマシンの識別子を取得
jpgboost-cli --machine-id

# 購入後にメールで届いたトークンを使った初回有効化
jpgboost-cli --activate ACT-XXXX-XXXX-XXXX-XXXX-XXXX

# すでに有効化済みのこのサーバーから、別のデバイスを追加するためのコードを生成
jpgboost-cli --add-device

# 他の場所(アプリや別のCLI)で生成したコードでライセンスに参加
jpgboost-cli --pair XXXX-XXXX

# サーバーにより新しいライセンスのバージョンがあれば取得する
jpgboost-cli --sync

# 使用中のインストール数/上限と、その一覧 — ローカル読み取り、ネットワーク呼び出しなし
jpgboost-cli --devices
アプリとCLIは別々の2つのインストールとしてカウント

アプリとCLIは、同じMac上で使用されていても別々の2つのインストールとみなされます。それぞれが独自のインストール識別子を持ち、Proライセンスで許可された2つの枠のうち1つを占有します。

そのため、お使いのMacにアプリ、サーバーにCLIを配置したり、同じMacにアプリとCLIの両方を配置したり、2台の異なるMacにアプリを配置したり、あるいはアプリを一切開かないサーバーにCLIのみを配置したりと、さまざまな方法でライセンスを活用できます。

構文とオプション

jpgboost-cli <file...> --output <folder> [options]
オプション機能デフォルト値
--output <folder>書き出し先フォルダ。存在しない場合は作成される必須
--quality <1-100>圧縮品質75
--format <format>pngjpegheicavifwebpjxlのいずれかjpeg
--profile <name>名前付きの書き出しプロファイルを適用なし
--jobs <N>並列処理するファイル数コア数
--json読みやすいテキストの代わりに構造化されたJSON出力無効
--helpヘルプを表示

最初の例

# 2つのファイルをWebP、品質60に変換
jpgboost-cli foto1.jpg foto2.png --quality 60 --format webp --output ./compressed
# foto1.jpg: 4.2 MB -> 890 KB (-79%) -> ./compressed/foto1.webp
# foto2.png: 1.8 MB -> 620 KB (-66%) -> ./compressed/foto2.webp
#
# 2件のファイルを処理、失敗0件。

# フォルダ全体をAVIFに変換
jpgboost-cli ~/Pictures/export/*.png --format avif --quality 65 --output ~/Pictures/web

バッチ処理と並列化

数百から数千のファイルの場合、--jobsオプションで複数の画像を同時に処理できます。各ファイルは独立してデコード・エンコードされた後に解放されるため、メモリ消費は待機中のファイル数ではなく--jobsの値によってのみ増加します。

# 8ファイルを同時に処理
jpgboost-cli ~/Photos/batch/*.jpg --jobs 8 --format webp --output ~/Photos/web

# 共有マシンの負荷を抑えるために1つずつ処理
jpgboost-cli ~/Photos/batch/*.jpg --jobs 1 --format webp --output ~/Photos/web
測定された効果

12ファイルのバッチで、--jobs 8--jobs 1より約4倍高速であることが確認されました。実際の効果は、お使いのMacのコア数と出力フォーマットによって異なります。AVIFとJPEG XLは、JPEGやHEICと比べてエンコードに明らかに時間がかかります。

書き出しプロファイルを使う

--profileオプションは、アプリまたはAPI経由で作成したプロファイルを再利用します。明示的に指定していない項目のみを補完します。

# フォーマット、品質、フォルダはすべてプロファイルから
jpgboost-cli --profile "Web JPEG" *.png

# 明示的なフォルダが優先され、残りはプロファイルから
jpgboost-cli --profile "Web JPEG" --output ./de/livery *.png

CLIは、設定やローカルAPIを経由せずに、プロファイルを直接作成・更新することもできます:

jpgboost-cli --create-profile "Web JPEG" --format jpeg --quality 70 --output ./compressed

--format--qualityは必須で、--outputは任意です(指定するフォルダはすでに存在している必要があります)。すでに使われている名前は、複製を作成するのではなく既存のプロファイルを置き換えます — これはアプリのプロファイルタブとローカルAPIでも同じ動作です。CLIの他の部分と同様、JPGBoost Proが必要です。

JSON出力

--jsonを使うと、出力は処理された各ファイルがJSONオブジェクトに対応するJSON配列となり、ローカルAPIのレスポンスと同じ形式になります。これによりjqや他のツールとの連携が容易になります。

jpgboost-cli *.png --format webp --output ./output --json

# jqと連携:エラーがあるファイルだけを残す
jpgboost-cli *.png --format webp --output ./output --json \
  | jq '.[] | select(.error != null)'

利用可能なフィールド:pathoriginalSizeBytescompressedSizeBytesratiodestinationerror

終了コード

コード意味
0すべてのファイルが正常に処理された
77このマシンに有効なProライセンスがない
0以外少なくとも1つのファイルが失敗。スクリプトや継続的インテグレーションで直接利用可能

同名のファイル

ベース名が同じ2つの入力ファイルは、当然ながら同じ出力を指します。a/foto.jpgb/foto.pngをWebPに変換すると、どちらもfoto.webpになります。

JPGBoostはこれらを上書きしません。2つ目のファイルには別の名前が付けられます。

a/foto.jpg  ->  foto.webp
b/foto.png  ->  foto-2.webp

名前は--jobsによる実行順序に関わらず、引数の順序に従って割り当てられるため、結果は再現可能です。同じルールがアプリ、ショートカット、AppleScript、監視フォルダでも適用されます。

同じ書き出しを繰り返す

このルールは異なるファイル間の衝突にのみ関係します。同じファイルを同じフォルダに再度書き出すと、以前の出力を置き換えるだけで、foto-2foto-3のように蓄積することはありません。

インストールの確認

コマンドが正しく応答することを、いつでも確認できます:

jpgboost-cli --help