macOSの⌘+Tabがしっくりこない理由
(MRUの更新タイミング)

macOSの⌘+Tabは、アプリを選択した瞬間にMRU(最近使った順)リストが更新されるため、操作中に順序が変動し、一定のリズムで切り替えにくいです。WindowsのAlt+Tabでは、キーを離して確定するまで順序が固定されるため予測可能なのですが、macOSでは選びそこねたアプリに戻ることができず、常に先頭から辿り直す必要があります。

関連記事

1. ⌘+Tabで感じる小さなストレス

macOSを長く使っていると、⌘+Tabによるアプリ切り替えに、言葉にしづらい違和感を覚えることがあります1
macOSの⌘+Tabは、直前に使っていたアプリへ戻る分にはスムーズです。
ところが、三つ以上のアプリを行き来し始めると、途端に不安定になります。

「前はこの回数で切り替えられたはずなのに」
そんな感覚に覚えがある方も多いのではないでしょうか。

2. WindowsのAlt+Tabとの違い

WindowsのAlt+Tabも、履歴を使った切り替えです。
Windowsでは、切り替えの対象が「アプリ」ではなく「ウィンドウ」です2
この点は細かな違いですが、もう一つ大きな違いは、履歴がいつ更新されるかです。

WindowsのAlt+Tab 切り替え対象 ウィンドウ単位 履歴更新 キーを離した時 1 Alt+Tab押下 2 プレビュー表示 3 キーを離す 4 履歴更新 プレビュー中は順序が固定 = 予測可能

Alt+Tabでは、キーを離して切り替えが確定したときに、初めて履歴が更新されます3
プレビュー中に順序が変わることはありません。
このため、何回押せばどのウィンドウに移動するか、体が覚えやすくなっています。

2.1. MRUという考え方

ここで少し話題を変えます。
Emacsでも、バッファ切り替えでそんなに違和感はありません。

MRUという考え方 MRU = Most Recently Used 最近使った順に管理 使用履歴の順序 現在使用中 先頭 1つ前に使用 2つ前に使用 3つ前に使用 更新タイミングが重要 「確定時」 vs 「選択時」で挙動が変わる

Emacsでは、バッファはMRU(Most Recently Used、最近使った順)で管理されます4
現在使っているバッファが先頭にあり、過去に使ったものが後ろに続きます。

重要なのは、並び替えタイミング。
「確定した操作」でしか起きない点です。

候補を眺めているだけでは、順序は変わりません。
C-x → や C-x ← を押していくと、一定の順序でバッファを巡回できます5
順序が予測できるため、考えなくても指が動きます。

この挙動は、WindowsのAlt+Tabとも共通します。

2.2. macOSの⌘+Tabで起きていたこと

この感覚を基準にすると、macOSの⌘+Tabは少し異質に感じられました。
では、macOSでは何が起きているのでしょうか。

macOSの⌘+Tabで起きていること アプリ選択時に即座に履歴が更新される 初期状態: アプリ A, B, C 1 Tab押下でBを通過 → MRUが [B, A, C] に変化 2 もう一度Tab押下 → MRUが [A, B, C] に変化 ❌ Bに戻りたくても戻れない 順序が変わってしまったため 操作中に順序が変動 = 予測不可能 一定のリズムで切り替えられない

⌘+Tabでは、アプリを選んだ瞬間に履歴が更新されます6
実は、プレビューと確定が分かれていません。

その結果、切り替え操作の途中で並び順が変わります。
途中で、「アプリを選びそこねた」ことに気づいても、「もう一つ次」ができません7
また、MRUの先頭から辿っていかなければならないのです。

  1. この違和感は多くのmacOSユーザーに共有されており、macOS用のサードパーティアプリ切り替えツール(AltTab、Contexts、Witchなど)が人気を博しています。これらのツールは、Windowsスタイルのウィンドウ単位切り替えや、より予測可能なMRU順序を提供します。 – Unlock the Full Power of the macOS App Switcher – The Mac Security Blog
  2. この違いは、複数ウィンドウを持つアプリケーションでの操作感に大きく影響します。macOSでは同じアプリの別ウィンドウに切り替えるには⌘+`(Command+Grave)という別のショートカットが必要です。Windowsでは単一のAlt+Tabですべてのウィンドウを巡回できます。 – Mastering the Mac App Switcher: Essential Tips and Hidden Tricks – MacRumors
  3. これはWindows 10以前の伝統的な挙動です。Windows 11の一部ビルドでは、MRU(Most Recently Used)順序が正しく機能しないバグが報告されており、ユーザーはレジストリ編集(AltTabSettings値の設定)やAutoHotkeyスクリプトで古い挙動を復元しています。 – Alt Tab Toggle Between Two Windows | Windows 11 Forum
  4. 標準のEmacsには、WindowsのAlt+Tabのような「プレビュー中は順序が固定される」MRUバッファ切り替えは組み込まれていません。C-x やC-x (previous-buffer/next-buffer)はバッファを切り替える確定操作です。MRUスタイルの切り替えを実現するには、pc-bufsw、nswbuff、SwBuffなどのサードパーティパッケージが必要です。 – GitHub – ibukanov/pc-bufsw: quick buffer switcher for Emacs according mru/lru order
  5. 補足: C-x (previous-buffer)とC-x (next-buffer)は、バッファリストを順に巡回する操作であり、実行時にバッファの使用履歴が更新されます。「プレビュー中は順序が固定される」という挙動を実現するには、前述のサードパーティパッケージが必要です。標準のEmacsでは、バッファ切り替えのたびにMRU順序が変化します。 – EmacsWiki: Switching Buffers
  6. より正確には、⌘キーを離してアプリが確定した時点でMRUリストが更新されます。ただし、macOSの⌘+Tabは「アプリ単位」の切り替えのため、同じアプリの複数ウィンドウがある場合、どのウィンドウがアクティブになるかが予測しづらいという問題があります。この問題を解決するために、AltTab for macOS、Contexts、Witchなどのサードパーティツールが開発されています。 – DockDoor | Window peeking, alt-tab and other enhancements for macOS
  7. macOSの⌘+Tab中は、Tabキーで前方に、Shift+Tabキーで後方に移動できます。しかし、一度⌘キーを離してアプリを確定すると、MRUリストの順序が変わるため、同じ回数のキー操作で戻れなくなります。これが「予測不可能」と感じる原因の一つです。 – Secrets of the Command-Tab Mac Application Switcher