Mac VPN のキーボードショートカット:Shortcuts と Automator の比較
Shortcuts と Automator はどちらも Mac VPN を一つのキーに結びつけます。それぞれキーがどこに住むか、何を尋ねてくるか、何も起きないときに何を確かめるべきかを比べます。
キーを一度押すだけで Mac VPN を起動できます。Apple にはそれを紐づける二つの標準的な方法があります。Shortcuts は各ショートカットに独自のキーの組み合わせとメニューバーの項目を与えます。Automator は Quick Action を提供し、そのキーはシステム設定で割り当てます。ワークフロー本体とは切り離されています。どちらの経路も同じ要求を同じ接続サービスに送るため、重要な違いは紐づけがどこに住むか、どの許可の関門を通るか、キーが何もしていないように見えるときに何を調べるかです。
以下はすべて、scutil --nc list に現れる既存のシステム VPN サービスを前提とします。プロバイダーが提供するサードパーティ製クライアントで、その接続がそこに決して現れない場合、どちらのツールも scutil 経由で操作できません。そのベンダー自身のアクションが必要です。
どちらの経路も同じサービスを呼ぶ
アプリではなく一覧から始めます。scutil --nc list は保存済みの各サービスを状態と正確な表示名とともに出力します。コマンドで引用符に入れるべき文字列はこれです:
/usr/sbin/scutil --nc start "Office VPN"その行は有効化の要求です。要求が受け付けられるとすぐに戻ります。二要素目を待たず、プライベート DNS が設定されたことも報告せず、ファイルサーバーが応答していることも確認しません。メニューで行うのと同じクリックだと考えてください。メニューがないだけです。
scutil には切り替えスイッチもありません。接続と切断を別のアクションに分けたほうが、状態を反転させる一つのキーより筋道立てて考えられます。ハンドシェイク中に押された反転は、立ち上がりきらなかった接続を止めてしまうことがあるからです。キーを一つにしたいなら、scutil --nc status "Office VPN" の出力で分岐し、明示的に判断してください。闇雲に切り替えないこと。
Shortcuts:アクションごとに一つのキー、許可の面が広い
Shortcuts でローカルのショートカットを作り、タスクの名前を付けます。たとえば Connect Office VPN です。
Run Shell Script を加えて起動要求を貼り付けます。サービス名は文字どおり入力し、クリップボードや選択テキストから取らないこと。
自分のログイン済みセッションでエディタから一度実行し、通常の認証フローを終えます。システムが必要な承認を記録します。
ショートカットの詳細を開き、Add Keyboard Shortcut で組み合わせを紐づけます。Apple はこの紐づけを自社の Shortcuts ユーザガイド に記しています。システムがすでに予約している組み合わせは奪えません。
紐づけはショートカットと一緒に移動するので、一つのアクションが追加作業なしにメニューバーや Dock に置けます。代価は二つ目の許可で、Shortcuts は環境設定でスクリプトを許可するまでシェルスクリプトを実行せず、管理された Mac ではその設定がポリシーで施錠されていることがあります。自分で書いた、あるいは読んだショートカットにだけ許可し、中身の不明な読み込みファイルには許可しないでください。
同期はもう一つの罠です。別の Mac からコピーしたショートカットは、その Mac のサービス名を文字どおり持ち続けます。サービス名が違うマシンでは、キーは反応し、スクリプトは終了し、理由はどこにも表示されません。
Automator:動く部品が少なく、キーは自分で探す
Automator で Quick Action を選び、どのアプリでも入力を受け取らないようにワークフローを設定し、同じコマンドで Run Shell Script を加えます。シェルは
/bin/zshです。一覧で見分けられる名前で保存します。あとで探すのはその名前だからです。
システム設定、次にキーボード、次にキーボードショートカット、次にサービスを開きます。ワークフローを見つけ、チェックが入っていなければ入れ、組み合わせを記録します。
ワークフローはサービスとして呼ばれるので、キーはサービスの表に住み、ワークフロー名に紐づきます。あとで保存したワークフローの名前を変えたら、そのパネルを開き直して割り当てが残っているか確かめるべきです。サービスのショートカットは全体に効くので便利ですが、別のアプリが欲しがる組み合わせと衝突するまでです。
得られるのは小さな成果物と、許可の問い合わせ一回分の節約です。普通のワークフローファイルで、独自のメニューバー項目もなく、議論の余地のあるスクリプト切り替えもなく、失うのは見つけやすさで、アクションはワークフローが保存されシステムに一度見られたあとでないとサービスの一覧に現れません。
キーが何もしないとき、両者はどこで分かれるか
| Symptom | Shortcuts route | Automator route |
|---|---|---|
| Key fires, nothing connects | Service name mismatch; re-read scutil --nc list | Same name mismatch inside the shell action |
| Key never fires anywhere | Binding collides with a reserved or app-level combination | Service entry unticked in Keyboard Shortcuts, or renamed |
| An authorization dialog appears every time | Prompt comes from the VPN type, not from Shortcuts | Same prompt, same cause; the script runs as you |
| Connects, no reachable resource | Readiness not checked after the request | Identical gap, identical fix |
| Works only inside one app | Rare; check where the shortcut is made available | Workflow set to receive input from a specific app |
表はわざと歪めていて、五行のうち二行は直し方が本当に違います。失敗したキー入力の多くは同じ二つの不具合に帰着し、保存されたサービスと一致しない名前、完了した接続と取り違えられた要求のどちらも、道具を替えて治るものではありません。
どちらの経路も資格情報を保存しません。キーの組み合わせは対話的なログインを無人にはできません。スクリプトにパスワードを貼るのは、一日に一度打つより悪い考えです。
この三つの条件で選ぶ
アクションごとに一つのキーとメニューバーからのアクセスが欲しく、マシンでスクリプトがすでに許可されているなら Shortcuts を選びます。Mac 間でコピーできる一つのファイルが欲しく、余計な切り替えが要らないなら Automator を選びます。組織が Shortcuts のスクリプトを施錠しているなら、ポリシー変更なしで動くのは Quick Action だけです。それで答えは決まります。
キーに頼る前に、scutil --nc list でサービスを確認し、コールドスタートからキーを押して scutil --nc status を見て、トンネルが存在する理由の資源を開き、別に明確な名前の切断アクションを作ってください。唯一の停止アクションを、トンネルがないと届かない遠隔セッションに置かないこと。
次の一歩:Connect だけを紐づけ、Disconnect は一日紐づけずに置き、それでもメニューに手が伸びる回数を記録します。キー入力が時間を節約しているのか、状態を隠しているだけなのかが分かります。