macOS Tahoe のビデオ壁紙のリバースエンジニアリング

Apple が最近の macOS バージョンでシネマティックな「Aerials」を導入したことでデスクトップ体験は一変しましたが、システムは依然としてクローズドガーデンです。ユーザーはシステムの壁紙ピッカーに自分のビデオファイルをネイティブに追加できません。そこで登場したのが Phosphene です。開発者 kageroumado によるオープンソースプロジェクトで、基盤となるシステムフレームワークをリバースエンジニアリングし、macOS Tahoe でカスタムビデオ壁紙を実現します。

コアチャレンジ: WallpaperExtensionKit

Phosphene は単にデスクトップ上にビデオを重ねるだけではなく、システム設定 → 壁紙 のネイティブな macOS 壁紙ピッカーに直接統合されます。これを実現するために、開発者は WallpaperExtensionKit.framework、すなわちシステムの Aerials を支えるプライベートな Apple フレームワークに潜り込みました。

このフレームワークはプライベートであり、公開 SDK は存在しません。Phosphene は OS と通信するために以下の高度な手法を用います:

  • ダイナミックローディング: アプリは dlopen を使ってプライベートフレームワークを実行時にロードします。
  • ランタイムインスペクション: XPC タイプ(アプリとシステム間の通信プロトコル)が公開ヘッダーにないため、Phosphene は Swift の Mirror リフレクションを利用してこれらの型を解析・操作します。
  • メソッドスウィズリング: ロック画面が遷移中に灰色になるのを防ぐため、開発者は WallpaperSnapshotXPC エンコーダをスウィズルしました。システムは特定のコーダ型(NSXPCCoder)を期待していますが、実際のコーダはサブクラスです。このランタイム修正がなければスナップショットはエンコードに失敗します。

システムアーキテクチャ

Phosphene は共有 App Group コンテナを介して通信する 2 つの主要コンポーネントに分かれています:

1. メニューバーアプリ (Phosphene.app)

管理層として機能します。ビデオライブラリの管理、メタデータの処理、HEVC 最適化を行います。また、VideoOptimizationService を備えており、システムリソース節約のためにビデオの低解像度または低フレームレート版を事前にレンダリングできます。

2. 壁紙エクステンション (PhospheneExtension.appex)

WallpaperAgent のホストです。プロセス外で実行されるため、メニューバーアプリを終了しても壁紙の再生は継続します。このエクステンションは AVSampleBufferDisplayLayer を使用してリモート CAContext へ実際のレンダリングを行います。

パフォーマンスとバッテリー寿命のためのエンジニアリング

ビデオ壁紙実装における最大のハードルの一つはバッテリーと熱性能への影響です。Phosphene は洗練された PlaybackPolicy を実装し、壁紙がノートブックのバッテリーを消耗したり熱スロットリングを引き起こしたりしないようにしています。

電力感知再生

PlaybackPolicy は単一の真実の情報源として機能し、熱状態、バッテリーレベル、AC 電源状態、ゲームモード、プレゼンテーションモードといった様々な入力を fullreducedminimalpaused の 4 つの状態に統合します。

インテリジェント遮蔽検出

GPU サイクルを節約するため、Phosphene はすべてのディスプレイがウィンドウで完全に覆われているかを検出します。デスクトップが見えなくなると、レンダラは完全に一時停止し、デスクトップが再び表示されるまで待機します。

ギャップレスループ

標準の AVPlayerLayer はリモート CAContext 内でしばしば失敗します。これを解決するため、開発者は手動デコードパイプラインを実装しました。現在のループ用に 1 つの AVAssetReader、次のループ用に事前ロードされた 1 つを使用し、ループ間で増加する PTS(Presentation Time Stamp)オフセットを適用することで、レンダラをフラッシュせずにフレーム単位で正確かつグリッチのないループ再生を実現しています。

技術要件と制約

Phosphene をビルドまたはインストールしようとする人向けに、最新の macOS API への依存があるため要件は厳格です:

  • OS: macOS Tahoe (26.0 以上)。Tahoe 固有の SwiftUI と glassEffect() API に依存しています。
  • ハードウェア: Apple Silicon (arm64-apple-macos26.0)。
  • ツール: Xcode 17 以上、Swift 6 の厳格な並行性が有効化されていること。

結論

Phosphene はプライベート Apple フレームワークのリバースエンジニアリングにおける教科書的な例です。作者は当初これを商用製品として企画していましたが、現在はオープンソース化され、macOS が高度なビジュアルエフェクトをどのように処理しているかを垣間見ることができ、Apple がネイティブに提供しないレベルの精度でデスクトップをカスタマイズする手段をユーザーに提供しています。

Sources