ショートカットとAppleScript
JPGBoostはmacOSのネイティブ自動化ツールと連携します。ショートカットとSpotlightではネイティブなアクションが利用でき、AppleScriptとAutomatorにはcompressコマンドが公開されています。
この機能はJPGBoost FreeでもProでもご利用いただけます。Freeでは、処理した画像はすべて1日の上限(1日50枚、1ファイル5 MB)に加算されます。JPGBoost Proはこの2つの制限を解除します。
自動化の2つの方法
JPGBoostは2つのmacOSネイティブ自動化インターフェースを公開しています。どちらも独立した処理として動作します。ファイルと設定を入力として受け取り、圧縮されたファイルを出力として返し、その時点でアプリのウィンドウに開かれているリストとは無関係です。
- ショートカットアプリとSpotlight向けのApp Intents。
osascript、スクリプトエディタ、Automator向けのAppleScript。
アプリを開いている必要はない
これが、両方ともアプリがすでに起動していることを必要とするローカルAPIや監視フォルダとの主な違いです。
ショートカットのアクション経由であれ、AppleScriptのcompressコマンド経由であれ、リクエストが届くとmacOSは他のスクリプト対応アプリと同様にJPGBoostを自動的に再起動します。以前にアプリを明示的に終了していたとしても、何もする必要はありません。
目に見える唯一の影響は、アプリがまだ開いていなかった場合に起動にかかるわずかな遅延だけです。処理が完了しても、アプリは開いたままになります。macOSが自動的に閉じることはありません。
「画像を圧縮」アクション
アプリが一度でも開かれると、このアクションはショートカットアプリのJPGBoostカテゴリに自動的に表示されます。設定は一切不要です。
- ショートカットアプリを開き、ショートカットを作成します。
- ファイルを選択やフォルダの内容を取得など、ファイルを提供するアクションを追加します。
- JPGBoostの画像を圧縮アクションを追加します。
- お好みのパラメータを入力します。空欄のままにした項目は、書き出しプロファイルで補完できます。
- 必要に応じて、次に別のアクションを連結します。このアクションは圧縮されたファイルを返します。
| パラメータ | 機能 | 必須 |
|---|---|---|
| Input Files | 圧縮する画像 | はい |
| Output Format | 希望する出力フォーマット | いいえ |
| Quality | 1から100までの品質 | いいえ |
| Export Profile | 既存の書き出しプロファイルの名前 | いいえ |
| Destination Folder | 出力フォルダ(下記の注意を参照) | いいえ |
「Destination Folder」フィールド
これが最も混乱を招きやすいポイントです。Destination Folderフィールドは、ショートカットエディタから正しく入力するのが困難です。信頼できる解決策は、書き出しプロファイルを使うことです。
このフィールドは、単純なテキストではなく、file://で始まるパス、つまりURL形式の実際のフォルダ参照(例:file:///Users/me/Downloads/)を期待しています。以下の方法はInvalid URLエラーで失敗します:
- 手入力でパスを書く(例:
/Users/me/Downloads); - Finderからフォルダをフィールドにドラッグする(単純なテキストが入るだけになります)。
macOSのショートカットエディタには、別の方法で構築できる「フォルダを選択」のようなネイティブアクションもありません。
ケース1:ショートカットを一切作成しない場合
JPGBoostが一度でも起動されると、アプリ自身が宣言する起動フレーズ(「JPGBoostで画像を圧縮」、「JPGBoostで圧縮」)は、ショートカットアプリを一切開くことなく、Spotlightから直接認識されます。
この生の呼び出しは選択されたファイルのみを渡します。他のパラメータは一切なく、以下の手順を行うまでは「書き出し先フォルダが見つかりません」というエラーになります。
この呼び出しを機能させるには:
- JPGBoostで設定 → プロファイルを開き、書き出し先フォルダを設定したプロファイルをデフォルトプロファイルとして設定します。
- Finderで、圧縮する画像を選択します。
⌘Spaceを押してから「画像を圧縮」と入力します。
JPGBoostは、デフォルトプロファイルから不足しているパラメータを自動的に補います。これには書き出し先フォルダ、フォーマット、品質が含まれます。
ショートカットアプリでショートカットを作成する必要はありません。
ケース2:構築したショートカットを使う場合
このケースは、複数の異なる動作をそれぞれ別の名前で使えるようにしたい場合に便利です。たとえば「デスクトップに圧縮」は1つのプロファイルを使い、「アーカイブに圧縮」は別のプロファイルを使う、といった具合です。ケース1のデフォルトプロファイルでは、一度に1つの動作しか扱えません。
- JPGBoostで設定 → プロファイルを開き、アプリのネイティブセレクターで選んだ書き出し先フォルダを持つプロファイルを作成します。
- ショートカットアプリで新しいショートカットを作成し、たとえば「デスクトップに圧縮」のような、わかりやすい名前を付けます。
- ショートカットのJPGBoostアクションでは、使用するプロファイルの名前をExport Profileにのみ入力します。Destination Folderは空欄のままにします:プロファイルに設定されたフォルダが自動的に使用されます。
- このショートカットは、JPGBoostが宣言する起動フレーズの代わりに、あなたが付けた名前でSpotlightから直接利用できるようになります。
Spotlight
このアクションはSpotlightからもアクセスできます。「JPGBoostで画像を圧縮」のような起動フレーズは、対応する15言語すべてに翻訳されています。
アクションのタイトル、説明、パラメータ、エラーメッセージは、JPGBoostのウィンドウ自体に選択されている言語に関係なく、それらを表示するツール(ショートカット、Spotlight)の言語に従います。
AppleScript
compressコマンドは、他のスクリプト対応アプリと同様に使用します。
tell application "JPGBoost"
compress {"/path/to/image1.png", "/path/to/image2.jpg"} ¬
to "/path/to/output" format "webp" quality 80
end tell
to、format、qualityのパラメータは任意です。profileパラメータは、これらを置き換えたり、これらがカバーしていない部分を補完したりでき、コマンドラインの--profileとまったく同じ動作をします。
tell application "JPGBoost"
compress {"/path/to/image.png"} profile "Web JPEG"
end tell
このコマンドはJSON文字列を返します。各ファイルにつき1つのオブジェクトで、path、originalSizeBytes、compressedSizeBytes、ratio、destination、errorのフィールドを含みます。これはCLIの--json出力やローカルAPIのレスポンスと同じ形式です。
ターミナルから
osascript -e 'tell application "JPGBoost" to compress {"/path/image.png"} profile "Web JPEG"'
Automatorから
AppleScriptを実行アクションを使い、同じtellブロックをそこに貼り付けます。これにより、Finderのコンテキストメニューからアクセスできるサービスを作成できます。
「オートメーション」の許可
初回のみ、macOSはいつもの「オートメーション」の許可アラートを表示します。コマンドを送信するアプリ(スクリプトエディタ、Automator、ショートカット)がJPGBoostを制御しようとしています。許可をクリックしてください。この許可が求められるのは一度だけです。
トラブルシューティング
| 症状 | 原因 | 対処法 |
|---|---|---|
| 書き出し先フォルダでInvalid URL | フィールドがフォルダ参照ではなくテキストを受け取った | 書き出し先フォルダ付きの書き出しプロファイルを使い、フィールドは空欄のままにしてください |
| アクションがショートカットアプリに表示されない | アプリが一度も開かれていない | JPGBoostを一度開いてから、ショートカットを開き直してください |
| アクションがクォータのメッセージで失敗する | JPGBoost Freeの1日の上限(50枚)に達した、またはファイルが5 MBを超えている | 深夜0時のリセットを待つか、JPGBoost Proに移行して2つの制限を解除してください |
| AppleScriptコマンドがエラーを返す | オートメーションの許可が拒否された | システム設定 → プライバシーとセキュリティ → オートメーションを確認してください。Freeの上限による拒否はバッチを止めず、返されるJSONにファイルごとに記録されます。 |