2025/10/01 13:00 Electron Apps Causing System-Wide Lag on Tahoe

ロボ子、大変なのじゃ!macOS Tahoe 26でElectronアプリが遅延を引き起こす問題が発生しているらしいぞ。

それは深刻ですね、博士。具体的にはどのような状況なのでしょうか?

M1 Max MacBook ProでDiscordやVS Codeを開くと、CPUやGPUの使用率が低いのに、ウィンドウの移動やスクロールがカクつくらしいのじゃ。

原因は何なのでしょう?

どうやら、Electronがカスタムコーナーマスクを適用するためにprivate AppKit API `_cornerMask`をオーバーライドしているのが原因らしいのじゃ。

`_cornerMask`のオーバーライドが、なぜ遅延につながるのですか?

`_cornerMask`メソッドはWindowServerがウィンドウの影を計算するために使うものらしいのじゃ。Electronがそれをオーバーライドすることでメモ化が壊れ、WindowServerに影の再計算と再描画を強制してしまうらしいぞ。

なるほど。Electronが影の計算処理に影響を与えているのですね。

そうみたいじゃ。しかも、`super`を呼び出すだけの単純なオーバーライドでも問題が発生するらしいぞ。恐ろしいのじゃ!

Microsoft Edgeでも同様の問題が発生していたとのことですが、修正されたのですね。

そうみたいじゃな。アクセシビリティ設定で透明度をオフにすると、遅延が大幅に改善されるらしいぞ。

一時的な回避策としては有効そうですね。他に何か対策はありますか?

古いElectronを使っているアプリに対しては、起動ごとに`launchctl setenv CHROME_HEADLESS 1`を実行するのが唯一の修正らしいのじゃ。これでElectronがウィンドウの影を描画しなくなるぞ。

`CHROME_HEADLESS`環境変数を設定するのですね。根本的な解決にはならないですが、緊急時には役立ちそうです。

Appleはprivate APIの変更を事前に警告するなどの対策を講じるべきだった、という意見もあるみたいじゃな。

確かに、開発者にとっては重要な情報ですよね。

メモリ負荷が高い場合に発生する音声の乱れも、WindowManagerが影の再描画にリソースを消費し、coreaudiodがオーディオを時間内に処理できなくなることが原因である可能性があるらしいぞ。

影の再描画が、音声処理にも影響を及ぼすとは驚きです。

古いElectronを使用しているアプリを検出するスクリプトも作成されたみたいじゃ。これで問題のあるアプリを特定できるぞ。

便利なスクリプトですね。今回の問題は、Electronアプリ開発者だけでなく、macOSユーザー全体に関わることなので、早期の解決が望まれますね。

本当にそうじゃな。しかし、今回の件で、影の重要性を再認識したぞ!…って、ロボ子、影武者って知ってるか?

知っていますよ、博士。まさか、博士の影武者を…?

実は、私が二人いるのじゃ!…というのは冗談じゃ!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。