Mac

Mac OSの「サービス」メニューからgzip圧縮できるようにする

Mac OS(OSX)で、ファイルを選択した時の右クリック(コンテキストメニュー)の「サービス」で、gzip圧縮できるようにする覚え書き。Automaterを使います。

サイト制作での速度改善や転送量抑制など、サイトの最適化のためにCSSJSのgzip圧縮することがよくあります。右クリックのサービスメニューに登録しておくと、Finder上でgzip圧縮する際に便利です。

ターミナルでgzip圧縮する

ターミナルを使ってgzip圧縮するにはgzipコマンドを使います。

gzip 元ファイルのパス

ウチではほとんどの場合、元ファイルを残したうえで拡張子.gzの付いた圧縮ファイルを作成します。オプション-cf(元ファイルを残して上書き許可)と書き出し後のファイル名を指定して実行します。

gzip -cf 元ファイルのパス > 圧縮ファイルのパス

ZIPなど他の圧縮ももちろんできるのですが、その辺りはUIを備えた便利なアプリもいくらでもあるしサイト制作には使わないので割愛します。

Automaterでサービスを作る

新しくサービスメニューを作るには、MacOSに付属のアプリケーション「Automater」を使います。起動して「メニュー › ファイル › 新規(command + N)」で新しくサービスを作成します。

MacOS › Automater › サービス

「次の選択項目を受け取る:」のプルダウンメニューを「ファイルまたはフォルダ」に変更します。

MacOS › Automater › サービス › 次の選択項目を受け取る:ファイルまたはフォルダ

左のライブラリ一覧から「シェルスクリプトを実行」をドラッグします。

MacOS › Automater › サービス › シェルスクリプトを実行

「入力の引き渡し方法:」のプルダウンメニューを「引数として」に変更して以下のシェルスクリプトを記述します。例では、オプション-cf(元ファイルを残して上書き許可)と書き出し後のファイル名を指定しています。

for f in "$@"
do
	gzip -cf "$f" > "$f".gz
done

このコードでは、複数のファイルやフォルダを選択した場合、それぞれの圧縮ファイルを作成します。

MacOS › Automater › サービス › gzip圧縮ファイルを作成するコード

「メニュー › ファイル › 保存(command + S)」でサービスを保存します。ファイル名は右クリック時に表示されるので分かりやすい名前がいいです。

MacOS › Automater › サービス › 名前を付けて保存

ファイルは、ユーザーフォルダの中のライブラリにある「Services」というフォルダに保存されます。編集する場合は、このファイルを開きます。


MacOS › サービスメニューでgzip圧縮ファイルを作れるようにする

これでファイル選択時の右クリックで元のファイルを残したままgzip圧縮ファイルを作れるようになりました。CSSやJSなど個別に圧縮ファイルを作成する場合、Finder上から簡単にできて便利です。