Macを起動したのが平日か休日か判定して、起動するアプリを変えるKeyboard Maestroマクロの作り方

仕事のときはStationというチャットサービス統合アプリを使い、プライベートではStackというチャットサービス統合アプリを使っています。
それぞれのアプリで管理しているサービスは下記の通りです。
| アプリ | 主要管理サービス |
|---|---|
| Station | Slack・ChatWork・Skype |
| Stack | Twitter・Facebook Messenger・Todoist |
このように仕事で使うサービスとプライベートで使うサービスを、別アプリで管理しています。
こうすれば仕事をしているときはStationを起動しておけば、プライベートの通知を気にせずに済みます。
逆に、仕事が終わればStationを終了してStackを起動すれば、仕事用の通知は気にせずに済みます。
しかしMacにログインするたびに、StationもStackも両方起動してしまっては本末転倒です。
そこで、Keyboard Maestroを使って、Macを起動した曜日や時間に応じて起動するアプリを変えるマクロを作ってみました。
ログイン用のトリガー
Keyboard Maestroでログイン時に発火するマクロを作るときは「Login Trigger」を使います。

ログイン時の時間と曜日を判定する
次はアクションの作成ですが、考え方は「曜日と時間が指定したものと一致していたらStation、それ以外ならStackを起動させる」なので、その順にアクションを並べていきます。
ログインした時間と曜日の取得
まずは「Set Variable」アクションで「ログインした曜日」と「ログインした時間」を変数に入れます。

LoginDayOfWeek(ログインした曜日)%ICUDateTime%EEE%LoginTime(ログインした時間)%ICUDateTime%HH%これでログインした曜日とログインした時間が取得できました。
判別用の変数の初期化
次に取得した曜日と時間が、条件に一致するか判別するために、「checkDayOfWeek」と「checkTime」という名前の判別用の変数を作成し、中身を「false」にしておきます。

これで時間や曜日が条件に一致している場合は中身を「true」にします。
条件に合致する時間と曜日か判別
次にFor Eachアクションを使って、「Lines In Collection」で「Text」を設定します。
これは記述した行を、指定した変数にいれながらループしてくれるアクションです。
今回の場合は平日かどうか判別したいので、変数は「setDayOfWeek」で中身は「月〜金」を改行して入力します。

あとはIf Then Elseアクションで「LoginDayOfWeek」と「%Variable%setDayOfWeek%」がマッチするかどうか条件分岐をします。
そしてtrueのときは「checkDayOfWeek」の中身を「true」に変更します。
また、1度でも「true」になったら、それ以降はループを回す必要がないのでBreakアクションでループを終了させます。
同じことを「時間」の方でも行います。
アプリの起動
これで時間と曜日の判別は完了したので、最後にアプリの起動部分を作ります。
特に問題ないと思いますが、自分の場合はアプリ起動の前にPauseアクションで15秒ほど時間を空けています(遅延起動も兼ねて)。

If Then Elseアクションを使って「checkDayOfWeek」と「checkTime」の2つの変数がどちらも「true」の場合にActivate a Specific Applicationを使ってStationを起動させます。
それ以外の場合はStackを起動させればOK。
これで完成です。
まとめ
Login Triggerを使えば、Macを起動させるだけでマクロが発火するので面白いですよね。
今回はアプリ1つずつですが、複数アプリの起動もできますし、工夫次第でいろいろできそうです。
- アプリではなく特定サイトを開く(平日は勤怠管理のサイトを開く)
- 曜日ではなく日時で発火させる(毎月1日に目標を管理しているアプリを開く)
- 夜中に起動したら自動で明るさを暗くする


Path Finder 8から大幅に強化されたモジュール機能の設定方法
Hazelを使って、ファイルダウンロードのタイミングでDownloadフォルダを自動で開くようにする
Macのウインドウサイズを瞬時に変更できる「BetterSnapTool」を自分好みにカスタマイズする方法
Google Chromeの別アカウントとのブックマークを同期する「TeamSync Bookmarks」
Homebrew Caskを使うとき、「brew cask search」は効かないので「brew search」を使うようにする
Illustratorでスクリプトを実行するいくつかの方法
Google Chromeの開発者ツールに出てくる「[Deprecation] chrome.loadTimes() is deprecated」に関して
Path Finder 8の一括名称変更で使える設定サンプルまとめ
単語登録機能に日常でよく使うフレーズを登録して、文章を素早く入力する方法
AirPodsで片耳を外しても再生が止まらないようにする方法
MacのKeynoteにハイライトされた状態でコードを貼り付ける方法
iTerm2でマウスやトラックパッドの操作を設定できる環境設定の「Pointer」タブ
DeepLで「インターネット接続に問題があります」と表示されて翻訳できないときに確認すること
Ulyssesの「第2のエディタ」表示を使って2つのシートを横並びに表示する
【2026年版】Karabiner-Elementsで実現する右commandキー活用のススメ
Bartender ProのTop Shelf機能でできること
高機能なスクリーンショットアプリ「CleanShot X」
macOSの効率化に関するDiscordコミュニティ「CMD-F」を立ち上げました
1Passwordの開発者向け機能(SSH Agent / Environments / 1Password CLI / Developer Watchtower)
Default Folder Xで保存ダイアログ内のファイルリストにフォーカスする方法
Obsidianで整理した知識をAnkiで定着させる方法
Figma × Keyboard Maestroでどこまで効率化できる?
マウス操作の完成度が高いウインドウリサイズアプリ「Magnet」
Macで複数ディスプレイを使っている場合に便利な設定集