Mac で Sogou、Baidu、WeChat の入力メソッドを削除する方法
Sogou の入力メソッドを公式パッケージからインストールし、アンインストールしようとしたところ、最初は「アプリが実行中」と言われて拒否されました。インストーラが /Library/LaunchAgents に置いた2つの LaunchAgent が KeepAlive に設定されていて、SogouServices と SogouTaskManager に終了を求めるたびに、launchd がそれらを再び起動していたのです。のちに、Tencent の入力メソッド Chatterfly でも同じような拒否があったとユーザーから報告がありました。「使用中」のため削除に失敗した、というものです。
入力メソッドは普通のアプリではありません。専用のフォルダに置かれ、macOS がバックグラウンドで動かし続け、Sogou と Baidu はさらに独自のヘルパーを持ち込みます。この記事では、Mac の Sogou、Baidu、WeChat 入力(WeType)について、それぞれの置き場所、動き続けるもの、残骸のうちあなたのデータにあたるもの、キーボードで入力できなくなるのを避ける順序を扱います。iFlytek の入力メソッドはまだテストしていないので、ここでは扱いません。
入力メソッドの置き場所
入力メソッドは /Applications には入りません。置き場所は2つあり、/Library/Input Methods はこの Mac のすべてのアカウント用、~/Library/Input Methods はあなたのアカウント専用です。Sogou と Baidu の公式インストーラは、どちらもアプリを root 所有の /Library/Input Methods に置くので、移動するには管理者パスワードが必要です。WeChat 入力も /Library/Input Methods/WeType.app としてここにあります。
入力メソッドがいつも動いているように見えるのも、このためです。macOS は必要になったときに入力メソッドを起動し、システム設定のキーボードの画面を開くと、インストールされているものがすべて読み込まれます。Sogou や Baidu のプロセスが動いていても、それで入力していたとは限りません。
まず入力ソースの一覧から外す
入力に使っている入力ソースをアンインストールすると、しばらく入力できなくなることがあり、メニューバーの入力メニューにも、メニューが再起動するまでその項目が表示され続けます。ファイルに手を付ける前に、一覧から外しておきます。
- メニューバーの入力メニューから、ABC など別の入力ソースに切り替えます。
- 「システム設定 › キーボード › テキスト入力 › 入力ソース › 編集」を開きます。
- サードパーティの入力メソッドを選び、「削除」(マイナスボタン)をクリックします。
この画面については、Apple の Macで「入力ソース」設定を変更する で説明されています。一覧から入力ソースを外しても、削除されるわけではありません。アプリ、ヘルパー、データはすべて Mac に残っています。
動き続けているもの
調べた3つは、どれも複数のプロセスを動かしています。
- Sogou:入力メソッド本体(
SogouInput)に加えて、SogouServicesとSogouTaskManager。この2つは、/Library/LaunchAgentsにあるcom.sogou.SogouServicesとcom.sogou.SogouTaskManagerの2つの LaunchAgent が動かし続けています。どちらも KeepAlive なので、LaunchAgent が読み込まれている間は、プロセスを終了しても意味がありません。 - Baidu:入力メソッド本体(
BaiduIM)、アプリの中にあるenableInputを実行する/Library/LaunchAgentsの LaunchAgentcom.baidu.InputService、そしてアプリの中にあるbaiduServiceをシステムドメインで実行する/Library/LaunchDaemonsのデーモンcom.baidu.baiduService。 - WeChat 入力:入力メソッド本体(
WeType)。
順序が大切です。プロセスを終了する前に LaunchAgent を削除するか読み込みを解除してください。そうしないと、すぐに戻ってきます。手作業でファイルを削除した場合は、そのあと一度再起動して、ゴミ箱から動き続けるものがない状態にします。
それぞれが残すもの
Sogou、公式インストーラ 6.25.1 の場合:
| 項目 | 内容 | 対処 |
|---|---|---|
/Library/Input Methods/SogouInput.app |
入力メソッド本体、約 549 MB | 削除。管理者パスワードが必要 |
/Library/LaunchAgents/com.sogou.SogouServices.plist と com.sogou.SogouTaskManager.plist |
2つの KeepAlive LaunchAgent | 削除。管理者パスワードが必要 |
/Library/QuickLook/SogouSkinFileQuickLook.qlgenerator |
Sogou のスキンファイル用のクイックルックプレビュー、約 3 MB | 削除。管理者パスワードが必要 |
~/Library/Application Support/Sogou/InputMethod |
Sogou のユーザーデータ、テスト用の Mac では 485 MB | まず別の場所にコピーしてから判断 |
~/Library/Application Support/Sogou/ResHub と SkinShop |
Sogou のリソースとスキンのフォルダ | 削除 |
com.sogou.inputmethod.sogou、SogouServices、SogouHelper、com.sogou.SogouTaskManager という名前の Caches、HTTPStorages、Preferences |
入力メソッドとヘルパーの設定とキャッシュ | 削除 |
~/.sogouinput |
テスト用の Mac では空 | 削除 |
~/Library/Application Support/Sogou そのもの |
ほかの Sogou 製品と共有されることがある親フォルダ | 残して、上のサブフォルダだけを削除 |
~/Library/Application Support/com.tencent.bugly |
ほかのアプリも使うクラッシュレポートの SDK | 残す |
Baidu、公式インストーラ 5.7 の場合:
| 項目 | 内容 | 対処 |
|---|---|---|
/Library/Input Methods/BaiduIM.app |
入力メソッド本体、68 MB | 削除。管理者パスワードが必要 |
/Library/LaunchAgents/com.baidu.InputService.plist |
enableInput を実行する LaunchAgent |
削除。管理者パスワードが必要 |
/Library/LaunchDaemons/com.baidu.baiduService.plist |
baiduService を実行するシステムデーモン |
削除。管理者パスワードが必要 |
~/Library/Application Support/BaiduInput |
ユーザー辞書のフォルダ、テスト用の Mac では 2.9 MB | まず別の場所にコピーしてから判断 |
com.baidu.inputmethod.BaiduIM という名前の Caches、HTTPStorages、Preferences |
設定とキャッシュ | 削除 |
~/Library/sapi と ~/Library/Application Support/Baidu |
入力メソッドのものだと確認できなかった | 何が書き込んだか分からない限り残す |
com.baidu.BaiduNetdisk-mac や baidunetdisk という名前のもの |
別製品の Baidu Netdisk | 残す |
WeChat 入力は私が毎日使っている入力メソッドなので、アンインストールはしていません。この Mac では、Mole は WeChat 入力について 17 項目を表示し、そのうち 11 項目を初期状態で選択します。一覧に出ない唯一のファイルは ~/Library/Preferences/com.tencent.WeTypeSettings.plist で、これは WeChat 入力の設定用ヘルパーのものです。WeChat 入力を削除したら、これも削除してかまいません。
ここで残す価値があるのは、辞書のフォルダだけです。何かを削除する前に、BaiduInput や Sogou/InputMethod を ~/Library の外のフォルダにコピーし、あとで再インストールするつもりなら、そのコピーを残しておいてください。
何が残っているか確認する
以下のコマンドは読み取るだけで、何も変更しません。
ls "/Library/Input Methods" ~/Library/Input\ Methods 2>/dev/null
pgrep -il 'sogou|baiduim|baiduservice|enableinput|wetype'
ls /Library/LaunchAgents /Library/LaunchDaemons ~/Library/LaunchAgents | grep -iE 'sogou|com\.baidu\.(inputservice|baiduservice)'
ls -d ~/Library/Application\ Support/Sogou/* ~/Library/Application\ Support/BaiduInput ~/.sogouinput 2>/dev/null
1つ目のコマンドは、まだインストールされている入力メソッドを一覧表示します。出力に SogouInput.app、BaiduIM.app、WeType.app があれば、それはまだ残っています。pgrep が何も表示しなければ、どのプロセスも動いていません。すでに削除したバンドルの行が出た場合は、ゴミ箱から動き続けているもので、次の再起動で消えます。終了して数秒で戻ってくるプロセスは、LaunchAgent がまだ読み込まれていることを示しています。LaunchAgent とデーモンがなくなれば、3つ目のコマンドは何も表示しないはずです。最後のコマンドはデータのフォルダを一覧表示します。表示されたものはまだディスク上にあり、残すかどうかはバックアップのあとであなたが決めます。
Mole での扱い
Mole は2つの Input Methods フォルダを見るので、入力メソッドもほかのアプリと同じようにアプリ一覧に表示されます。入力メソッドには「使用中」の表示や最終使用日を出しません。使っているかどうかに関係なく、macOS が動かし続けるからです。入力メソッドを選ぶと、Mole は先に別の入力ソースへ切り替えるよう促します。
入力メソッド本体と、そのプログラムが中にある LaunchAgent とデーモンは、初期状態で選択されます。動いている入力メソッドに終了を求める前に、Mole は選択されたこれらの起動項目の読み込みを解除するので、KeepAlive がヘルパーを再び起動することはありません。上の Sogou での拒否から生まれた修正がこれです。root 所有の項目には管理者パスワードが必要です。ユーザーデータのフォルダ(BaiduInput、Sogou/InputMethod、~/.sogouinput)、Sogou のリソースフォルダ、ヘルパーのキャッシュ、クイックルックプレビューは、表示されますが選択されません。Mole が対象にするのはこれらの特定のサブフォルダだけで、親の Sogou フォルダ、~/Library/sapi、共有の Bugly フォルダは対象外です。すべてゴミ箱に移るので、そこから元に戻せます。
入力メソッドを削除した一括処理のあとは、Mole が入力メニューを再起動し、古い項目が消えるようにしています。この変更の前に Chatterfly を削除したときは、入力メニューにまだ表示されていて、アンインストールに失敗したように見えました。残骸とバックグラウンドのヘルパーの違いは、Macでアンインストール後もアプリが動く? と Mac の起動項目とバックグラウンド項目を安全に止める を参照してください。
よくある質問
入力メソッドをゴミ箱にドラッグするだけでいいですか?
管理者パスワードを入力すれば、アプリを /Library/Input Methods から移動できます。ただし LaunchAgent は残り、それが起動した Sogou や Baidu のヘルパーは再起動するまで動き続けます。まず入力ソースの一覧から外し、次に起動項目、最後にアプリを削除してください。
入力メソッドを削除したのに、入力メニューにまだ表示されます。アンインストールに失敗したのですか?
おそらく違います。入力メニューは、起動したときに読み込んだ一覧を使い続けています。一度ログアウトして、ログインし直してください。Mole の「最適化」にも、同じメニューを再起動する「入力切り替え」の修復があります。
自分で登録した単語は消えますか?
辞書のフォルダを削除しない限り消えません。先に ~/Library/Application Support/BaiduInput や ~/Library/Application Support/Sogou/InputMethod を ~/Library の外にコピーしておいてください。Mole はこれらのフォルダを表示しますが、選択はしません。