0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Homebrewだけを使い、MacからWindowsでも文字化けしないzipをショートカットキーで作成する

Last updated at Posted at 2025-09-05

概要

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の起動と種類の選択

  1. Automatorを起動する(アプリケーションフォルダ、またはSpotlight検索から起動)
  2. 「新規書類」の画面で、作成する書類の種類として「クイックアクション」を選択し、「選択」ボタンを押す

手順2:ワークフローの基本設定

ワークフローの上部にあるドロップダウンメニューを以下のように設定します。これにより、Finderでファイルやフォルダを選択したときに、このクイックアクションが使えるようになります。

  • ワークフローが受け取る現在の項目: ファイルまたはフォルダ
  • 検索対象: Finder.app
  • イメージ: (任意)メニューに表示されるアイコンを選択できます。
  • カラー: (任意)メニュー内での色分けができます。

image.png

手順3:「シェルスクリプトを実行」アクションの追加

  1. 左側のアクションライブラリの検索窓に「シェル」と入力
  2. 表示された「シェルスクリプトを実行」アクションを、右側のワークフローエリアにドラッグ&ドロップ

手順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:クイックアクションの保存

  1. メニューバーから ファイル > 保存 を選択する
  2. クイックアクションの名前(例えば、「Windows互換ZIPを作成」など、メニューに表示したい名前)を入力し、「保存」ボタンを押す

保存されたクイックアクションは、自動的に ~/Library/Services/ フォルダに格納され、Finderの右クリックメニューからすぐに利用可能になります。

3. ショートカットキーを割り当てる

サブメニューを開く手間を省き、より素早く実行したいというご要望には、作成したクイックアクションにキーボードショートカットを割り当てる方法が最も効果的です。この方法を使えば、マウス操作なしで瞬時にスクリプトを実行できます。

ショートカットキーの割り当て手順

  1. システム設定を開く: メニューバーのアップルアイコン  →「システム設定」を選択
  2. キーボード設定に移動: 左側のサイドバーから「キーボード」を選択
  3. ショートカット設定を開く: 「キーボードショートカット...」をクリック
  4. クイックアクションに移動: 左側のリストから「サービス」を選択(※macOSのバージョンによっては「クイックアクション」と表示される場合があります。)
  5. ショートカットを割り当てる: 「ファイルとフォルダ」から、作成したクイックアクション(例:「Windows互換ZIPを作成」)を探す
  6. ボタンをクリックし、割り当てたいショートカットキー(例: Control + Z など)を入力

image.png

これで、Finderのウィンドウがアクティブな状態で設定したショートカットキーを押すだけで、zipファイルが作成できるようになります。


上記を含め、自分は以下を登録しています。

  • テキストファイル新規作成: control + N
  • VSCodeで開く: control + V
  • Cursorで開く: control + C
  • Iterm2で開く: control + O ← これはスクリプト書かずとも、デフォルトで可能
  • WIndowsでも文字化けしないようにzip化: control + A ← 今回の記事

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?