Phospheneは、ひとことで言うと「Macの壁紙を動画にするアプリ」です。
しかも単なる再生アプリではなく、macOSの壁紙機能そのものに食い込むタイプのソフトです。
普通、壁紙といえば静止画ですよね。でもPhospheneを使うと、手持ちの動画を壁紙として扱えます。しかもアプリ内だけで完結するのではなく、System Settings → Wallpaper の中に自分の動画がちゃんと並ぶ、というのが面白いところです。
この「OS標準の壁紙選択画面に出てくる」というのは、地味に重要です。
なぜなら、裏で勝手に何かを重ねるタイプの疑似壁紙よりも、Macの仕組みに正面から乗っている感じがあるからです。個人的には、こういう「ちょっと危ういけど、OSに自然に見せる」系の作りはかなり好きです。
READMEの内容を見る限り、Phospheneにはかなり多くの機能があります。
対応形式は MP4 / MOV / AVFoundationが読めるファイル。
つまり、Macで普通に扱いやすい動画をそのまま使いやすい、ということです。
READMEでは gapless looping、つまり「隙間なく繰り返すループ」をうたっています。
これは動画壁紙ではかなり大事です。ループの切れ目で一瞬止まったり、再生位置がガクッと戻ったりすると、すぐに「作り物感」が出てしまうからです。
Phospheneは、PTS/DTS という動画の時間管理情報を調整して、ループ境界で不自然さが出ないようにしているとのこと。
専門用語ですが、ざっくり言うと動画の時間の流れを丁寧につなぎ直しているイメージです。こういう実装は地味だけど、体験の良し悪しをかなり左右します。
Macを外部ディスプレイ付きで使っている人には嬉しい話です。
Phospheneはディスプレイごとに別の壁紙を持てて、さらにSpaceごとの選択もmacOS側で保持されるそうです。
つまり、1枚の壁紙を全画面で押し通すのではなく、ちゃんと複数画面運用を考えているわけです。これは実用性が高い。
動画壁紙は見た目は華やかですが、裏では当然CPUやGPUを使います。
Phospheneはそこをかなり意識していて、熱状態、バッテリー残量、AC電源かどうか、Game Mode、ロック中かどうかなどを見て、再生負荷を調整する仕組みを持っています。
READMEではこれを PlaybackPolicy と呼んでいます。
要するに、「今は全力で回すべきか、少し手を抜くべきか、止めるべきか」を一元管理する頭脳です。こういう設計は賢いと思います。動画壁紙はロマンだけで突っ走ると、すぐ「電池を食うだけの飾り」になりがちなので。
「Only on Lock Screen」を有効にすると、ロック時・解除時にcubic curve でフェードのように滑らかに切り替えるそうです。
これもAppleのAerialsに似た挙動を目指しているとのこと。
ロック画面でいきなり映像が切り替わると、かなり雑に見えます。
こういう細部まで寄せているのは、完成度へのこだわりを感じます。
デスクトップが全部ウィンドウに覆われているなら、わざわざ裏で動画を描画し続ける必要はありません。
Phospheneはその状態を検知して、見えていない間は一時停止します。
これはとても実用的です。
見えていないものにリソースを使わないのは、正しいし気持ちいいです。
動画をあらかじめ軽いバージョンに変換しておき、状況に応じて切り替える adaptive variants という仕組みもあります。
たとえば、電池駆動で負荷を抑えたいときは軽い版を使う、という発想です。
これもかなり現実的です。
動画壁紙は「高画質であること」だけが正義ではないので、こうした可変設計は長く使う上で効いてきます。
アプリはメニューバー常駐型で、そこからライブラリ管理、再生停止、ディスプレイ切り替え、設定、起動時自動起動などを操作できます。
つまり、普段は軽く潜んでいて、必要なときだけ顔を出すタイプです。
Macの常駐ツールとしてはかなり相性がいい作りだと思います。
ここがこのプロジェクトの一番面白いところです。
Phospheneは、ただのSwiftUIアプリではありません。
READMEによると、Appleのprivate framework である WallpaperExtensionKit を使っています。これはApple自身のAerialsでも使われているものらしく、Phospheneはそれを利用して、macOSの壁紙システムに動画フレームを供給する仕組みを作っています。
この分離が大事です。
ユーザーが触る表側と、壁紙としてフレームを供給する裏側が分かれているので、macOSの仕組みにうまく乗っています。
READMEでは、壁紙表示には AVSampleBufferDisplayLayer を手動で動かしていると書かれています。
一般的な動画再生なら AVPlayer を使うことが多いのですが、ここではそれではうまくいかないため、別のやり方を取っています。
理由は、remote CAContext の中では AVPlayerLayer が静かに失敗するから、とのこと。
静かに失敗するの、開発者からするとかなり嫌ですよね。なので、ちゃんと別ルートで組んでいるのは納得感があります。
個人的には、このあたりは「見た目はちょっと魔法っぽいけど、実際はかなり泥臭い実装」だと思います。
こういうソフトは、派手なデモの裏に、地味で繊細な調整が山ほどあるものです。
Phospheneは魅力的ですが、同時にかなり壊れやすいです。
READMEでもはっきり注意されていて、private framework に依存し、さらに Mirror-based runtime introspection でAppleの非公開XPC型を読んでいるとのこと。
これはつまり、Appleが少し仕様を変えただけで壊れる可能性があるということです。
しかも対応ターゲットは macOS 26 Tahoe。将来のOSでどうなるかは、かなり不透明です。
ここは正直、一般ユーザー向けの安定アプリというより、OSの内部をうまく使いこなした実験的プロジェクトと見るのが自然だと思います。
面白いけれど、長期運用の安定性はApple次第。そこは割り切りが必要です。
READMEによると、必要なのは以下です。
つまり、かなり新しい環境が前提です。
昔のMacや古いXcodeでは動きません。ここは対象をかなり絞っていて、最新環境で遊ぶ人向けのプロジェクトだとわかります。
Phospheneは、次のような人にはかなり刺さるはずです。
逆に、
とにかく安定していて、何も考えずに使える壁紙アプリが欲しいなら、これは少しハードルが高いかもしれません。
private framework 依存という時点で、玄人向けの匂いがします。
Phospheneは、macOS Tahoeで動画を壁紙にするというロマンを、かなり本格的に実現しようとしているプロジェクトです。
単に動画を再生するだけでなく、macOSの壁紙システムに統合し、電力や熱、ロック画面、複数ディスプレイまで考えています。
一方で、Appleの非公開APIに深く依存しているので、面白いけれど繊細。
この「便利さ」と「壊れやすさ」が同居している感じが、いかにもハック寄りの面白さだと思います。
動画壁紙が好きな人には、かなり夢のあるプロジェクトです。
そして、Macの壁紙がここまで作り込めるのか、と驚かされる事例でもあります。
参考: GitHub - kageroumado/phosphene: A video wallpaper engine for macOS Tahoe