プレビューで動いて、フルスクリーンで動かない。そしてこのシンプル極まりないコードでもダメ……。
実はこれ、コードのせいではありません。現代のmacOSの厳格なセキュリティと、スクリーンセーバーの仕様の壁にぶつかっている状態です。
プレビュー画面(システム設定アプリ内)と、実際のフルスクリーン画面では、Mac内部で全く別のプログラムが動いています。フルスクリーンを担当する legacyScreenSaver というプロセスは非常に警戒心が強く、少しでも条件を満たさないと無言で真っ黒な画面にしてしまいます。
以下の3つの「環境設定」と「キャッシュ」が原因である可能性が極めて高いです。順番に確認・実行してみてください。
1. キャッシュの強制クリア(これが一番怪しいです)
Macのスクリーンセーバーは、一度エラーを起こすと古いキャッシュを掴んだままになり、何度新しいファイルを入れても無視されるという厄介な仕様があります。
まずはターミナルを開いて、以下のコマンドを実行し、スクリーンセーバーのプロセスを強制終了(リセット)してください。
killall legacyScreenSaver
killall System\ Settings
これを実行した後、もう一度 .saver ファイルをインストールしてフルスクリーンを試してください。
2. アーキテクチャ(Apple Silicon対応)の確認
お使いのMac(M2やM3などのApple Silicon機)でフルスクリーン起動するには、ビルド設定が正しく「arm64」に対応している必要があります。Intel用のバイナリだと、プレビューはRosetta(変換機能)で動いても、本番で弾かれます。
- Xcodeでの確認場所:プロジェクト設定の
Build Settingsを開き、Architecturesが Standard Architectures (Apple Silicon, Intel) – $(ARCHS_STANDARD) になっているか確認してください。
3. コード署名(Code Signing)の必須化
最近のmacOSは、「署名」されていないスクリーンセーバーをフルスクリーンで実行することをセキュリティ上の理由でブロックします。
- Xcodeでの確認場所:プロジェクト設定の
Signing & Capabilitiesタブを開きます。Signingの項目で、「Sign to Run Locally(ローカルで実行するために署名)」 または、ご自身のApple ID(Personal Team)を選択して署名が行われるように設定してください。
💡 試すべき手順のまとめ
- Xcodeで アーキテクチャ(Apple Silicon対応) と コード署名(Sign to Run Locally) を確認・設定して再ビルドする。
- ターミナルで
killall legacyScreenSaverとkillall System\ Settingsを実行してプロセスを殺す。 - 新しくできた
.saverをインストールしてフルスクリーンで確認する。
コード自体は問題なく赤色を描画できる完璧な状態です!あともう一息、Macのセキュリティの壁を越えるだけです。

コメント