概要
macOSのFinderから直接、Windowsで文字化けせず、.DS_Store
のような不要な隠しファイルを含まないZIPファイルをキーボードから作成する。
この設定により、以下の動作が実現できる。
-
ファイル/フォルダが1つ選択されている場合:
選択したアイテム名.zip
を作成する -
ファイル/フォルダが2つ以上選択されている場合:
Archive.zip
という名前で、選択された全アイテムを格納した1つのZIPファイルを作成する - Finder上でのショートカットキーの割り当てる
1. 事前準備:必要なツールのインストール
この機能はHomebrewでインストールする2つのコマンドラインツールを利用する。
1-1. Homebrewの確認
macOS用のパッケージマネージャーであるHomebrewがインストールされていることを確認する。インストールされていない場合は、公式サイトの手順に従ってインストールする。
1-2. fd と p7zip のインストール
ターミナルを起動し、以下のコマンドを実行して、ファイル検索ツールのfd
と、高機能なアーカイバであるp7zip
をインストールする。ターミナルに🍺
の絵文字が表示されればインストールは成功。
brew install fd p7zip
2. Automatorでクイックアクションを作成する手順
macOSのAutomatorを使い、Finderの右クリックメニュー(コンテキストメニュー)に独自の機能を追加する「クイックアクション」の作成手順です。
手順1:Automatorの起動と種類の選択
- Automatorを起動する(アプリケーションフォルダ、またはSpotlight検索から起動)
- 「新規書類」の画面で、作成する書類の種類として「クイックアクション」を選択し、「選択」ボタンを押す
手順2:ワークフローの基本設定
ワークフローの上部にあるドロップダウンメニューを以下のように設定します。これにより、Finderでファイルやフォルダを選択したときに、このクイックアクションが使えるようになります。
- ワークフローが受け取る現在の項目: ファイルまたはフォルダ
- 検索対象: Finder.app
- イメージ: (任意)メニューに表示されるアイコンを選択できます。
- カラー: (任意)メニュー内での色分けができます。
例
手順3:「シェルスクリプトを実行」アクションの追加
- 左側のアクションライブラリの検索窓に「シェル」と入力
- 表示された「シェルスクリプトを実行」アクションを、右側のワークフローエリアにドラッグ&ドロップ
手順4:アクションの詳細設定とスクリプトの入力
追加された「シェルスクリプトを実行」アクションの内部を、以下のように設定します。
-
シェル:
/bin/zsh
(実行したいスクリプトの種類に合わせて選択。参考にさせていただいた記事がzsh
だったので。) -
入力の引き渡し方法: 引数として この設定により、Finderで選択したファイルやフォルダのパスがスクリプトに渡されます。
stdin へ
のままだと動作しないため、必ず変更してください。 -
スクリプトエリア:
テキストエリアにあらかじめ入力されているサンプルコード (cat
) をすべて削除し、以下のスクリプトを貼り付けます。# Homebrewでインストールしたコマンドが使えるようにパスを通す export PATH=/opt/homebrew/bin:/usr/local/bin:$PATH # 選択されたアイテムの数を取得 num_files="$#" if [ "$num_files" -eq 0 ]; then # 何も選択されていない場合は終了 exit 0 elif [ "$num_files" -eq 1 ]; then # --- アイテムが1つだけ選択されている場合 --- f="$1" zip_name="${f}.zip" if [ -d "$f" ]; then # フォルダの場合 parent_dir=$(dirname "$f") target_name=$(basename "$f") fd --type file --base-directory="$parent_dir" . "$target_name" -X 7z a -tzip -scsWIN "$zip_name" {} elif [ -f "$f" ]; then # ファイルの場合 7z a -tzip -scsWIN "$zip_name" "$f" fi else # --- アイテムが2つ以上選択されている場合 --- # 最初のアイテムの親ディレクトリを取得し、そこにArchive.zipを作成する first_item_path="$1" parent_dir=$(dirname "$first_item_path") zip_name="${parent_dir}/Archive.zip" # 選択されたすべてのアイテムを対象に圧縮を実行 # "$@" は選択された全アイテムのリストを表す 7z a -tzip -scsWIN "$zip_name" "$@" fi
手順5:クイックアクションの保存
- メニューバーから
ファイル
>保存
を選択する - クイックアクションの名前(例えば、「Windows互換ZIPを作成」など、メニューに表示したい名前)を入力し、「保存」ボタンを押す
保存されたクイックアクションは、自動的に ~/Library/Services/
フォルダに格納され、Finderの右クリックメニューからすぐに利用可能になります。
3. ショートカットキーを割り当てる
サブメニューを開く手間を省き、より素早く実行したいというご要望には、作成したクイックアクションにキーボードショートカットを割り当てる方法が最も効果的です。この方法を使えば、マウス操作なしで瞬時にスクリプトを実行できます。
ショートカットキーの割り当て手順
- システム設定を開く: メニューバーのアップルアイコン →「システム設定」を選択
- キーボード設定に移動: 左側のサイドバーから「キーボード」を選択
- ショートカット設定を開く: 「キーボードショートカット...」をクリック
- クイックアクションに移動: 左側のリストから「サービス」を選択(※macOSのバージョンによっては「クイックアクション」と表示される場合があります。)
- ショートカットを割り当てる: 「ファイルとフォルダ」から、作成したクイックアクション(例:「Windows互換ZIPを作成」)を探す
- ボタンをクリックし、割り当てたいショートカットキー(例:
Control + Z
など)を入力
これで、Finderのウィンドウがアクティブな状態で設定したショートカットキーを押すだけで、zipファイルが作成できるようになります。
上記を含め、自分は以下を登録しています。
- テキストファイル新規作成:
control + N
- VSCodeで開く:
control + V
- Cursorで開く:
control + C
- Iterm2で開く:
control + O
← これはスクリプト書かずとも、デフォルトで可能 - WIndowsでも文字化けしないようにzip化:
control + A
← 今回の記事