用語集/よく見かけるプロセス

contactsd

別名: 連絡先の同期

結論

contactsdは、連絡先を管理するmacOSのプロセスです。Mac上の“連絡先”のデータベースを保持し、名前、電話番号、住所を調べるすべてのアプリに答え、インターネットアカウントのアカウントと連携して、iCloud、Google、Exchangeなどのサーバと連絡先を同期します。

アドレスブックを読むのは“連絡先”アプリだけではありません。メールは差出人に名前を付けるために、メッセージとFaceTimeは誰からの着信かを表示するために、カレンダーは参加者を入力するために、Spotlightは人を探すために使います。どれもcontactsdに問い合わせるので、“連絡先”アプリを開いているかどうかに関係なく動いています。

ほとんどの時間はアイドル状態で、ほとんど何も使いません。忙しくなるのは実際の仕事があるときです。アカウントを追加したあとの最初の同期、大量の読み込み、データベースを移行するmacOSのアップデート、そして失敗と再試行を繰り返すアカウントです。何時間もCPUのリストの上位に居続けるのは、たいてい最後の理由です。

contactsdのCPU使用率が高い理由

アカウントを追加した、vCardファイルを読み込んだ、macOSをアップデートしたあとの短い急上昇は正常で、自然に終わります。contactsdがすべてのカードを読み込み、統合し、インデックスを作成していて、アドレスブックが大きいとしばらくかかります。

いつまでも終わらない急上昇は、たいてい1つのアカウントがループに陥っていることを意味します。contactsdがサーバに変更を問い合わせ、処理できない応答を受け取り、また問い合わせる、の繰り返しです。iCloudよりもGoogleやExchangeのアカウントで起きやすく、典型的にはパスワードの変更後、サインインの取り消し後、サーバが受け付けないグループやカードがあるときです。同じアカウントを2回追加したことなどによる何千枚もの重複カードも、同じように負荷をかけ続けます。

落ち着かせる方法

まずアカウントを特定します。システム設定 → インターネットアカウントを開いて再サインインを求めているアカウントを探し、次に“連絡先”を開いてサイドバーのアカウントに警告がないか確認します。1つのアカウントが原因なら、そのアカウントの“連絡先”をオフにし、1分待ってからオンに戻します。contactsdはそのアカウントのローカルコピーを破棄して、もう一度ダウンロードします。

どのアカウントか判断できないなら、iCloud以外のすべてのアカウントで“連絡先”をオフにし、contactsdが落ち着くかどうかを確かめてから、ほかのアカウントを1つずつ戻します。アクティビティモニタでcontactsdを終了しても一瞬しか効きません。macOSがすぐに起動し直し、同じアカウントがまたすぐに引き金を引きます。

contactsdが止まっているか見分ける方法

順調に進んでいる同期なら、だんだん静かになります。ループしている同期は、数分おきに同じ様子が繰り返されます。どちらなのかは、アクティビティモニタとターミナルで確認できます。

  1. アクティビティモニタを開いて“CPU”タブをクリックし、検索フィールドにcontactsと入力します。contactsdと、多くの場合、各アカウントのサーバとやり取りするヘルパーであるAddressBookSourceSyncが表示されます。
  2. “% CPU”を数分間見守ります。ゼロに向かって下がっていくなら、同期が終わりかけています。高いままのとき、または一定のリズムで上下を繰り返すときはループです。
  3. “ネットワーク”タブをクリックします。ループの場合はたいてい、1回の大きなダウンロードではなく、AddressBookSourceSyncが少量の送受信を何度も繰り返しています。
  4. 詳しく知りたいときは、ターミナルを開いてlog stream --predicate 'process == "contactsd"'を実行します。同じアカウントやサーバの名前を含むエラーが繰り返されるなら、それが修正すべきアカウントです。止めるにはControl+Cを押します。

contactsdの普通の状態と気にすべき状態

普通: contactsdはふだんゼロ近くにいて、メールやメッセージが名前を調べるときに一瞬だけ動き、アカウントを追加したりカードを読み込んだりしたあとは数分間動く。macOSのアップデート後は、データベースを新しい形式に移すために長めに忙しくなることがあります。

確認する価値あり: 何時間も忙しいまま、何もしていないのにファンが回る、または“連絡先”に同じ人が2回、3回と表示される。よくある原因は次のとおりです:

  • パスワードの変更後やApp用パスワードの取り消し後に、再サインインが必要になっているアカウント。
  • インターネットアカウントとアプリ経由の2回、同じGoogleやExchangeのアカウントが追加されている。
  • 昔の読み込みで作られた何千枚もの重複カード。“連絡先”で“カード” → “重複項目を検索”を選ぶと統合できます。
  • 同期できる頻度をサーバが制限している職場のアカウント。試すたびに拒否され、再試行が繰り返されます。

contactsdが連絡先を保存している場所

データベースはユーザのライブラリの~/Library/Application Support/AddressBookにあり、Sourcesの下にアカウントごとのフォルダがあります。同期の問題を直すために、手動で削除したり編集したりしないでください。インターネットアカウントでそのアカウントの“連絡先”をオフにしてからオンにすれば、そのアカウントのコピーが安全に作り直され、Macにだけある連絡先には影響しません。

大きな変更をする前には、“連絡先”で“ファイル” → “書き出す” → “連絡先アーカイブ”を選んでバックアップを書き出しておきます。すべてのアカウントのすべてのカードが1つのファイルに保存され、あとで読み込めます。

よくある質問

Macのcontactsdとは?

連絡先を管理するmacOSのプロセスです。“連絡先”のデータベースを保持し、人を調べるアプリに答え、iCloud、Google、Exchangeなどのアカウントと連絡先を同期します。

contactsdのCPU使用率が高いのはなぜ?

短時間なら、アカウントの追加、読み込み、macOSのアップデートのあとで同期やインデックス作成をしているからです。何時間も続くなら、アカウントが失敗と再試行を繰り返しているか、アドレスブックが重複だらけだからです。

contactsdはウイルス?

いいえ。macOSの一部で、launchdによって自分のユーザアカウントで起動されます。削除はできませんし、その理由もありません。

AddressBookSourceSyncとは?

contactsdが、各連絡先アカウントをそのサーバと同期するために使うヘルパーです。contactsdと一緒に忙しくなっているなら、アカウントのどれかが同期中です。2つの間のループは、たいてい1つのアカウントが原因です。

アカウントの“連絡先”をオフにすると連絡先は削除される?

そのアカウントのコピーがMacから削除されるだけで、サーバからは削除されません。オンに戻せば連絡先がまたダウンロードされます。“このMac内”にだけ保存されている連絡先には影響しません。

関連項目

アクティビティモニタより優れたものをお探しなら、Mac向けアクティビティモニタの代替アプリのおすすめをご覧ください。用語集のすべての用語も見られます。