Post
JA EN

エディタのウィンドウ地獄から脱出する——macOSネイティブタブで複数プロジェクトを一元管理

エディタのウィンドウ地獄から脱出する——macOSネイティブタブで複数プロジェクトを一元管理
  • 想定読者: macOSでVS Code系エディタを使用する開発者
  • 前提知識: VS Code(またはそのフォーク)の基本操作
  • 所要時間: 8分

概要

macOSでVS Codeを使って複数プロジェクトを同時に開くと、ウィンドウが増殖してデスクトップが混沌とする。Mission Controlで目的のウィンドウを探し、Cmd+Tabで切り替え先を見失い、フルスクリーンのスワイプで迷子になる——開発者なら誰もが経験する「ウィンドウ地獄」だ。

この問題に対する解決策として、macOSが標準で提供するネイティブタブ機能がある。ブラウザで複数のページをタブにまとめるのと同じ感覚で、複数のエディタウィンドウを1つの物理ウィンドウに集約できる。

本記事では、設定方法からユースケース別の活用法、ワークスペース機能との使い分けまでを解説する。

対象エディタ:VS Codeだけではない

本記事ではVS Codeを中心に解説するが、この機能はElectron + Code-OSSベースのエディタすべてで利用できる。具体的には以下のエディタが対象となる:

  • VS Code — 本家。window.nativeTabs設定を最初に実装
  • Cursor — VS Codeフォークの AI IDE。同じ設定項目で有効化可能
  • Google Antigravity — Windsurf(旧Codeium)のチームがGoogleに合流後に開発したAI IDE。Code-OSSベースのため同様に対応

いずれもElectronアプリとしてmacOSのネイティブウィンドウAPIを利用しており、設定方法は共通である。以降、本記事では「VS Code」と記載するが、上記エディタにも同じ手順が適用できる。

ウィンドウが増える構造的な理由

VS Codeは「1ウィンドウ = 1プロジェクトフォルダ」が基本設計である。新しいフォルダを開けば新しいウィンドウが生まれる。

日常的に発生するシナリオを考えてみよう:

  • フロントエンドとバックエンドを別リポジトリで管理している
  • マイクロサービスごとにリポジトリが分かれている
  • ライブラリの実装を確認しながらアプリケーションを開発している
  • ドキュメント用リポジトリを参照しながらコードを書いている

AIエージェント時代の「ウィンドウ爆発」

この問題は、AIコーディングツールの普及によってさらに深刻化している。

Claude CodeやCursor Agentのようなツールは、プロジェクトのコンテキストをディレクトリ単位で認識する。つまり、関連する複数のリポジトリでそれぞれAIエージェントを走らせながら作業する場合、リポジトリの数だけエディタウィンドウが必要になる。

たとえば、バックエンドAPIのリポジトリでClaude Codeにエンドポイントの実装を指示しつつ、フロントエンドのリポジトリではCursorで画面を組み、さらに共通ライブラリのリポジトリで型定義を修正する——こうした並行作業が日常になりつつある。従来の「3〜4ウィンドウ」どころか、5つ以上のウィンドウが同時に開くケースも珍しくない。

ここで厄介なのは、AIに作業を並行して委譲しても、人間側の認知負荷は減らないという点だ。複数のエージェントの出力を監視・レビュー・統合するのは人間であり、ウィンドウを探し回る時間はそのままタスクスイッチングのコストになる。認知科学の研究では、タスクスイッチングだけで生産性の最大40%が失われるとされている1。ウィンドウ管理という「本来の作業とは無関係な操作」に認知リソースを奪われるのは、できる限り避けたい。

Cmd+Tabではすべて同じアプリケーション名で表示されるため、目的のプロジェクトを素早く見つけることが困難になる。ウィンドウを探す行為自体が、集中を途切れさせるスイッチングコストを発生させている。

macOSネイティブタブとは

macOS Sierra(10.12)以降、macOSは多くのアプリケーションに対してOSレベルのタブ機能を提供している2。同一アプリケーションの複数ウィンドウを、1つの物理ウィンドウ内のタブとして統合する仕組みだ。FinderやテキストエディットなどのApple純正アプリでも使われている。

VS Codeはバージョン1.12(2017年4月)からこの機能に対応している3。Electronの更新により、macOSネイティブのタブAPIを利用できるようになった。

重要な点として、この機能はmacOS専用であり、WindowsやLinuxでは利用できない。macOS固有のウィンドウ管理APIに依存しているためだ。

VS Code内蔵タブとの違い

混乱しやすいが、VS Codeには2種類の「タブ」がある:

 VS Code内蔵タブmacOSネイティブタブ
対象ファイルウィンドウ(プロジェクト)
位置エディタ領域の上部タイトルバー
単位1つのファイル1つのVS Codeウィンドウ全体
OS全プラットフォームmacOSのみ

ネイティブタブは、VS Codeの内蔵タブを置き換えるのではなく、上位レイヤーとして共存する。各ネイティブタブの中に、通常通りファイルタブが表示される。

設定方法

設定は2箇所で行う必要がある。片方だけでは機能しないことが多く、これが「設定したのに動かない」という報告が多い原因でもある4

エディタ側:settings.jsonの変更

GUIで設定する場合はCmd+,で設定画面を開き、「native tabs」で検索する。

settings.jsonに直接記述する場合:

1
2
3
4
{
  "window.nativeTabs": true,
  "window.titleBarStyle": "native"
}
  • window.nativeTabs: ネイティブタブ機能を有効化する
  • window.titleBarStyle: タイトルバーをmacOSネイティブスタイルに変更する(ネイティブタブ有効時に自動でnativeになる場合もあるが、明示的に指定しておくと確実)

設定後はVS Codeの再起動が必要。

OS側:システム設定の変更

システム設定デスクトップとDockウインドウ セクション内の「書類を開くときにタブで開く」を 「常に」 に変更する。

この設定はmacOS全体に影響する。Finder、テキストエディット、その他のネイティブタブ対応アプリすべてで、新しいウィンドウがタブとして開くようになる。

注意: macOS全体の挙動が変わるため、他のアプリケーションへの影響が気になる場合は、まず試してみて不都合があれば「フルスクリーンのみ」に変更するのも一つの選択肢だ。2025年5月にはVS Code側の設定だけで新しいウィンドウをタブとして開く機能のリクエストがGitHubに上がっている4

基本操作

新しいタブを開く

操作方法
メニューからFile → New Window(タブとして開く)
コマンドパレットからworkbench.action.newWindowTab
フォルダを開くFile → Open Folder で別プロジェクトを選択

既存ウィンドウをタブに統合

すでに複数のVS Codeウィンドウが開いている場合:

Window → Merge All Windows

これですべてのウィンドウが1つの物理ウィンドウにタブとして統合される。

タブ間の移動

操作ショートカット
次のタブへCtrl+Tab または Cmd+Shift+]
前のタブへCtrl+Shift+Tab または Cmd+Shift+[
特定のタブへタブバーをクリック
全タブ一覧View → Show All Tabs

タブの整理

  • 順序変更: タブをドラッグして並べ替え
  • 別ウィンドウに分離: タブをウィンドウ外にドラッグ、または Window → Move Tab to New Window
  • タブを閉じる: タブ上にカーソルを置き、×ボタンをクリック

キーボードショートカットの強化

デフォルトのショートカットに加えて、VS Codeのkeybindings.jsonでカスタムショートカットを設定すると、さらに効率的にタブ操作ができる。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[
  {
    "key": "ctrl+cmd+right",
    "command": "workbench.action.showNextWindowTab"
  },
  {
    "key": "ctrl+cmd+left",
    "command": "workbench.action.showPreviousWindowTab"
  },
  {
    "key": "ctrl+cmd+t",
    "command": "workbench.action.newWindowTab"
  }
]

これにより、ホームポジションから手を離さずにプロジェクト間を移動できる。

ユースケース別の活用法

フロントエンド + バックエンドの同時開発

フロントエンドとバックエンドが別リポジトリの場合、ネイティブタブでまとめると効果的だ。タブの並び順で「フロント → バック → 共通ライブラリ」のように配置すれば、API定義の確認とフロント実装の行き来がスムーズになる。

マイクロサービス開発

マイクロサービスアーキテクチャでは5〜10個のリポジトリを同時に扱うことがある。ネイティブタブなら、すべてを1ウィンドウに収めつつ、各サービスの独立した開発環境(拡張機能の設定、ターミナル、デバッグ構成)を維持できる。

ライブラリ開発 + 検証アプリ

自作ライブラリの開発時、ライブラリ本体と検証用アプリケーションを並べて開発するケースがある。ネイティブタブなら、2つのプロジェクトを瞬時に切り替えながら動作確認が可能だ。

ドキュメント参照しながらのコーディング

設計ドキュメントやAPI仕様書をMarkdownで管理している場合、ドキュメント用リポジトリをタブとして常に開いておくと便利だ。

マルチルートワークスペースとの使い分け

VS Codeには複数フォルダを1つのワークスペースにまとめるマルチルートワークスペースという機能もある56。ネイティブタブとどう使い分けるべきかを整理する。

観点ネイティブタブマルチルートワークスペース
プロジェクトの独立性完全に独立(設定・拡張機能・ターミナル)共有のワークスペース設定が適用される
リソース消費プロジェクトごとにプロセスが独立(メモリ多め)1プロセスに統合(メモリ効率が良い)
ファイル検索タブごとに独立した検索全フォルダを横断検索
Git操作タブごとに独立したGit状態フォルダごとのGit状態を1画面で確認
設定の共有不可(各タブが独立).code-workspaceファイルで共有可能
チーム共有不可(OS設定に依存).code-workspaceをリポジトリに含められる

判断基準

ネイティブタブが適する場面:

  • プロジェクト間に技術スタックの違いがある(Python + TypeScriptなど)
  • 各プロジェクトが完全に独立した設定を必要とする
  • 一時的に参照するだけのプロジェクトがある
  • フルスクリーンで作業したい

マルチルートワークスペースが適する場面:

  • モノレポ的にプロジェクトが関連している
  • 横断的なファイル検索が頻繁に必要
  • チームで同じワークスペース構成を共有したい
  • メモリ使用量を抑えたい

両方を併用することも可能だ。マルチルートワークスペースを1つのネイティブタブとして開き、別のプロジェクトを別のタブで開くという使い方もできる。

よくあるトラブルと対処法

タブが表示されない

原因1: VS Code側の設定のみ変更し、macOS側の設定を忘れている。 → システム設定 → デスクトップとDock → 「書類を開くときにタブで開く」 を「常に」に変更。

原因2: 設定変更後にVS Codeを再起動していない。 → VS Codeを完全に終了(Cmd+Q)してから再起動。

原因3: タブバーが非表示になっている。 → View → Show Tab Bar でタブバーを表示。

タイトルバーのデザインがmacOS標準に変わる

window.nativeTabsを有効にすると、VS Code独自のカスタムタイトルバーからmacOS標準のタイトルバーに切り替わる。見た目の変化に戸惑うかもしれないが、ネイティブタブはOSのウィンドウ管理APIを利用するため、ネイティブスタイルのタイトルバーが前提となる。

タブのタイトルが入れ替わる

VS Code 1.105以降で、「New Window Tab」を使用した際にタブタイトルが入れ替わるバグが報告されている7。この問題が発生した場合は、ウィンドウを一度閉じて再度開くか、VS Codeのアップデートを確認してほしい。

まとめ

macOSのネイティブタブ機能は、エディタでの複数プロジェクト管理を大幅に改善する。設定はエディタ側とOS側の2箇所で必要だが、一度設定すればタブ切り替えだけでプロジェクト間を直感的に移動できるようになる。

マルチルートワークスペースとは異なり、各プロジェクトの完全な独立性を保ちつつ、物理的には1つのウィンドウに収められるのが最大の利点だ。特にフロントエンド/バックエンドの同時開発やマイクロサービス構成のように、独立したプロジェクトを頻繁に切り替える開発スタイルとの相性が良い。

「ウィンドウ地獄」に悩んでいるmacOSユーザーは、まず試してみる価値がある。

関連記事

このテーマに関連する他の記事もご覧ください:

参考資料

  1. Rubinstein, J. S., Meyer, D. E., & Evans, J. E. (2001). Executive control of cognitive processes in task switching. Journal of Experimental Psychology: Human Perception and Performance, 27(4), 763-797. 【信頼性: 高】 ↩︎

  2. Use tabs in windows on Mac - Apple (2024). 【信頼性: 高】 ↩︎

  3. Visual Studio Code April 2017 (version 1.12) Release Notes - Microsoft (2017). 【信頼性: 高】 ↩︎

  4. macOS: New setting for always opening new windows in native tabs · Issue #250042 - microsoft/vscode, GitHub (2025). 【信頼性: 中〜高】 ↩︎ ↩︎2

  5. Multi-root Workspaces - Microsoft (2024). 【信頼性: 高】 ↩︎

  6. Multi Root Workspaces in Visual Studio Code - ISE Developer Blog, Microsoft (2025). 【信頼性: 中〜高】 ↩︎

  7. New Window Tab can result in swapped tab titles with macOS Native Tabs · Issue #276577 - microsoft/vscode, GitHub (2025). 【信頼性: 中〜高】 ↩︎

This post is licensed under CC BY 4.0 by the author.