はじめに
Mac(M2 Air)でNext.jsの個人開発をしていたところ、突如としてMacが重くなり、ターミナルすら反応しなくなる地獄に遭遇しました。
その個人開発ではモノリポ構成(Next.js, Express.js)で開発していたため、ファイルのネストが深くなってしまうことが原因かと思っていましたが、違いました。
💥 結論:Macのデスクトップに開発用ファイルを絶対置くな!!
❌ ダメな理由
実は、MacBookの「デスクトップ」フォルダは、初期設定だと自動でiCloudに同期されるようになっています。
そして、これが開発環境でトラブルを引き起こす落とし穴になっていました。
特にNext.jsなどで開発サーバーを起動していると、.next/ や .turbo/ に大量のファイルがリアルタイムで生成・変更され続けます。
これに対してiCloudの同期プロセスである fileproviderd が反応し、そのすべてをアップロードしようとしてCPUを占拠し始めるのです。
😨 暴走の引き金
→ 「iCloudのリアルタイム同期」 と 「Next.jsのFast Refresh開発」 が事故る
macOSのiCloud同期は、「対象フォルダ内のファイルが変更されるたびに即座にiCloudに反映しようとする」 仕組みになっている。
一方Next.jsはfast refres(ホットリロード)開発によりファイルを保存するたびにリアルタイムで画面に反映されるようになっています。
その裏で .next/ や .turbo/ に中間ファイルが頻繁に書き込まれるため、これが iCloud の同期と衝突すると fileproviderd が暴走する原因になります。
😱 実際に発生した症状
- ターミナルのコマンドが一切効かなくなる(
git
,npm
,pnpm
全滅) - Macが異常に熱くなる
- VSCodeが固まる
- 再起動しても改善されない
🔍 原因特定の流れ
1. アクティビティモニタで fileproviderd
のCPU使用率を確認
→ 常に80〜140%で暴走していると判明
2. fileproviderd
を調べる
→ iCloudのファイル同期・メタ情報処理担当プロセスを担っていると知った
3. iCloudの設定を調べる
→ デスクトップや書類フォルダがiCloudに同期されていると判明
🩹 解決方法
💡 開発用フォルダを iCloud 管理外(Desktop以外のディレクトリ)にgit cloneせよ!!
なぜgit clone?
おそらく、同症状が発生するとCPU稼働がfileproviderd
に占拠されており、mv
で開発用フォルダをicloud外に移動させることはほぼ不可能に近いと思われます。 (私もそれで試しましたが、移動処理の読み込みが長すぎて無理でした😭)
また、一旦デスクトップのファイルをiCloud同期オフにすることもできまが、iCloud Drive上でしか確認ができなくなり、閲覧するにはローカルにダウンロードする必要があります。そのため、CPU稼働がfileproviderd
に占拠されている状態では、iCloud上の開発用ファイルのダウンロードもほぼ不可能に近いです。
これらの理由から、iCloud Drive 外のディレクトリを作成し(例:~/projects )、速やかにgit clone
を行った方が合理的だと思われます。
補足:iCloud Drive の同期を解除してみる 🔓
上記でも述べたとおり、デスクトップに存在するファイルのiCloud同期をオフにすることができ、これはfileproviderd
のCPU稼働率が下がる可能性があります。(私の場合は下がりませんでした...)
「システム設定 → Apple ID → iCloud Drive → “デスクトップと書類フォルダを同期” のチェックを外す」
最後に
まさかiCloudと開発環境の相性でここまで苦しむとは思ってませんでした。笑
こうした予期せぬトラブルも乗り越えるのも成長できる経験になりますね 😏
もし、同じ症状で悩んでいる方がいましたら、ぜひ参考にしてみてください!!