
先日Macで使用しているアプリ「BetterTouchTool」に不具合が生じたため、該当アプリの自動起動を設定からオフにしたのだが、自動起動をオフにしているにも関わらずMac起動時にアプリ及びサービスが立ち上がってしまう、という問題が起きた。
もちろんシステム環境設定の「ログイン項目」にも当該アプリは登録されていない。
ここではMacの自動起動の仕組みと最終的に自動起動を止めることに成功した方法を紹介する。
なお、同様に「アプリがmacOS Catalinaで自動で立ち上がってしまう問題」を以前扱ったが、あちらはリスクが低い手順であるのに対して本記事の方法は少々リスクが伴う点にご注意頂きたい。

INDEX
Mac(macOS)の自動起動の仕組み
LaunchDaemonsとLaunchAgents

Mac OS X Tiger(10.4)以降のmacOSではmacOSのサービスの自動起動は「launchd」というプロセスが掌握し、LaunchDaemonsやLaunchAgentsといった仕組みでmacOSのコア機能(OSの中核となる機能)やmacOSネイティブのサービス及びサードパーティーアプリケーションのサービスの自動起動を行っている。
macOSのブート中(Appleロゴとプログレスバーが表示される画面)においてlaunchdはLaunchDaemonsやLaunchAgentsに登録されている情報に従い、それらのサービスを自動起動している。
なお、LaunchDaemonsは通常rootとして起動し、ユーザーが直接目にする機会はあまりないのに対して、LaunchAgentsはユーザー権限下で動作するため、ログイン後に起動するのが普通である。
なお、LaunchDaemonsやLaunchAgentsの登録情報は通常.plistファイルとして存在している。
それぞれのLaunchDaemonsやLaunchAgentsの存在する場所は以下の通り。
macOSのコアサービス /System/Library/LaunchDaemons サードパーティーアプリケーション /Library/LaunchDaemons 全てのユーザー向けLaunchAgents /Library/LaunchAgents 特定ユーザー向けLaunchAgents ~/Library/LaunchAgent macOS各種アプリのLaunchAgents /System/Library/LaunchAgents

それぞれのフォルダに移動したい場合はFinderからパスを入力しよう。
Startup Items
なお、/Library/StartupItems及び/System/StartupItems/というフォルダに登録されたサービスも自動起動するが、AppleはこのStartup Itemsという仕組みを利用することは現在禁止しており、フォルダだけが遺物のように存在するだけに留まる。

僕の環境でも多数のアプリケーションが存在するもののStartupItemsは空になっており、いかなるアプリケーション・サービスも最早StartupItemsは僕の環境では使用していないようだ。
今回の問題の対策

「アプリケーションの設定で自動起動をオフにしているにも関わらずBetterTouchTool(及びサービス)が起動する」という問題に関して、前述の例を参考にサードパーティーアプリケーションのLaunchDaemonsフォルダを開いてみたところ、BetterTouchToolのplistファイル(better-touch-tool.plist)が存在した。
通常、望まないサービスが自動起動する場合は.plistファイルの削除ではなく、ターミナルで以下のようなコマンドで当該サービスをUnloadするのが望ましい。
sudo launchctl unload -w better-touch-tool.plist

なお、下記コマンドを入力するとLaunchDaemons/LaunchAgentsの一覧が出力される。
sudo launchctl list

ただ、今回の場合は「Unload」というコマンドが拒否されてしまい、他の対処法が考えつかなかったため、思いきって/Library/LaunchDaemonsからBetterTouchToolの.plistファイルを削除した。
前述のようにLaunchDaemonsから特定の.plistファイルを削除するのは最悪の場合、macOSの機能にダメージを与える可能性があるため望ましくないが、今回はサードパーティーアプリケーションということで思いきって削除を実行した。
とはいえ、通常は推奨される方法ではないのでもし実行する場合は自己責任でお願いしたい。
問題解決
BetterTouchToolの.plistファイルを/Library/LaunchDaemonsからFinder上で削除してMacを再起動したところ、無事にBetterTouchToolとそのサービスが自動で起動することはなくなり、今回試した方法は結果として上手くいったようだ。
まとめ
今回紹介した方法はスマートな解決法とは言えないため、もっと効率的、あるいは安全な自動起動の停止方法があればご指摘して頂けるとありがたい。