macOSのフルスクリーン切り替えアニメーション:yabaiとAeroSpaceの違い、そしてこれがなぜ面倒なのか

macOS は今に至るまで、「フルスクリーンアプリ」と「通常のデスクトップ/通常のウィンドウ」の間を切り替える際の Space アニメーションを完全に無効化するための、明確で信頼できて公式にサポートされたスイッチを提供していない。この問題は些細に見えるが、長期的に使うと本当にしんどい。単なる見た目の好みではなく、システムがユーザーの注意を「キャンセル不能な遷移アニメーション」に強制的に引きずり込むからだ。低レイテンシを求める人、Cmd-Tab を頻繁に使う人、アニメーションで集中が途切れやすい人、あるいは単にアニメーションを見たくない人にとって、これはかなり頭のおかしい設計だ。ユーザーはすでに「視差効果を減らす(Reduce Motion)」をオンにして「アニメーションはいらない」と明確に意思表示しているのに、システムはそれでもこの切り替え効果を残し続ける。この判断はユーザーに優しくない。

2026-05-06 時点で、公開ページ上の最新安定版は macOS Tahoe 26.4.1。Apple 公式には「視差効果を減らす」オプションがあり、いくつかの system defaults でウィンドウ/Dock/Finder/Mission Control のアニメーションを減らすこともできる。しかしここでの決定的な制約は、これらの設定は「一部の動き」を減らせるだけで、ネイティブの Spaces/フルスクリーンアプリ間の切り替えアニメーションを完全にはオフにできない点だ。

2 つの解決策の本質的な違い

現実的なルートは主に yabai と AeroSpace。両者は問題を解決するレイヤーが違う。

yabai の発想は、macOS ネイティブのウィンドウ/Spaces 機構を乗っ取る、または修復すること。

yabai の通常機能は Accessibility API に依存し、ウィンドウ管理、フォーカス、レイアウトなどを行う。より深い Spaces 機能は、以前は主に scripting addition、つまり Dock.app に拡張を注入してネイティブ Spaces の挙動を制御していた。これが、yabai が以前よく「SIP の一部無効化」とセット扱いされていた理由でもある。

「Cmd-Tab で通常デスクトップからフルスクリーン app に切り替えるときにアニメーションを出したくない」という要件に対しては、yabai のほうが的が合っている。というのも、扱っているのがまさに macOS のネイティブ Space focus の経路だからだ。新しい yabai のドキュメントには次の設定項目もある:

yabai -m config skip_window_focus_animation on

説明は「inactive Space 上のアプリ/ウィンドウがフォーカスされるとき、macOS の Space アニメーションを回避する」。またドキュメントでは、scripting addition を使わないならこれをオンにすべきとも書かれている。scripting addition は同種の機能を実装しており、しかもより robust(堅牢)だという。言い換えると、コア要件が「ネイティブのフルスクリーンは残す」「Cmd-Tab の挙動も残す」「でも切り替えアニメーションは消したい」なら、yabai は依然として問題そのものに最も近いツールだ。

AeroSpace の発想は、macOS ネイティブの Spaces を回避すること。

AeroSpace は Apple の Spaces を深く修復しようとしない。代わりに独自の workspace モデルを提供する:inactive workspace のウィンドウは可視領域の外へ移動され、戻るときに復元される。これの利点は分かりやすい。SIP を無効化する必要がなく、workspace 切り替えは本質的にネイティブ Space アニメーションが発生しない。全体としてクリーンで、OS アップデートに壊されにくい。

ただし代償も明確だ。AeroSpace の推奨運用は「macOS Space を 1 つだけ残し、ネイティブの Mission Control/Spaces ワークフローに深く依存しない」こと。もし緑ボタンのネイティブフルスクリーンを使い続けるなら、その app は依然として macOS ネイティブの full-screen Space に入る。Cmd-Tab でそこへ跳ぶと、Apple のフルスクリーン/Space 切り替え機構が動いて、アニメーションが出る可能性は残る。AeroSpace はこの経路を「直す」ためのものではなく、そもそも「できるだけその経路を使わない」ためのものだ。

じゃあどう選ぶか

ネイティブの macOS フルスクリーンにこだわっていて、主な痛点が「Cmd-Tab でフルスクリーン app と通常 app を行き来するときのアニメーション」なら、優先は yabai。最小構成なら yabai だけ常駐させて skip_window_focus_animation on を設定すればよく、skhd が必須というわけではない。skhd はキーバインド用ツールで、アニメーション除去の本体ではない。

ネイティブフルスクリーンを捨てて、ワークフローを「通常ウィンドウの最大化 + tiling/workspace」に寄せられるなら、AeroSpace のほうがクリーンだ。Apple が最もしぶとく残しているアニメーション経路を回避でき、SIP を切る必要もなく、長期のメンテコストも低い。

単に通常のシステムアニメーションを減らしたいだけなら、システム設定の「視差効果を減らす」に加えて、いくつか defaults を使える:

defaults write -g NSAutomaticWindowAnimationsEnabled -bool false
defaults write -g NSScrollAnimationEnabled -bool false
defaults write -g NSWindowResizeTime -float 0.001
defaults write com.apple.finder DisableAllAnimations -bool true
defaults write com.apple.dock expose-animation-duration -float 0
killall Finder
killall Dock

これは常駐プロセスが要らないのでコストが最小。ただし、ネイティブのフルスクリーン Space 切り替えアニメーションを完全に解決することはできない。

本当の問題は Apple 側にある

ここで一番ばかげているのは、ユーザーが複雑な機能を求めているのではなく、「明確なスイッチ」を求めているだけだという点:

ユーザーが Reduce Motion をオンにしたとき、あるいは単独で「Disable Space transition animations」をオンにしたとき、Cmd-Tab、Dock クリック、Mission Control、フルスクリーン app と通常デスクトップの切り替えはすべて即時に完了できるべきで、アニメーション再生を強制すべきではない。

これは美学の問題ではなく、コントロール権の問題だ。アニメーションは、ある人にとっては美しさだが、別の人にとっては遅延、干渉、酔い、効率低下だ。macOS は細かな点まで大量に調整させるのに、こうした高頻度インタラクションでは完全にオフにする選択肢を用意せず、ユーザーに yabai、scripting addition、SIP、あるいはワークフローの全面変更のどれかを迫る。この設計は極めて不合理だ。

理想は単純でいい:Apple が公式で安定していて副作用のない設定項目を提供する。ユーザーはネイティブフルスクリーン、ネイティブ Cmd-Tab、ネイティブ Spaces を維持したまま、切り替えアニメーションだけを完全に無効化できるべきだ。「視差効果を減らす」を曖昧な妥協にせず、システムが本来提供すべきコントロール権をサードパーティツールに背負わせないでほしい。

参考: