VS Code ワークスペースとは何ですか?

Visual Studio Code のワークスペースとは、VS Code のウィンドウ(インスタンス)で開かれた1つ以上のフォルダーの集合のことです。ほとんどの場合、1つのフォルダーをワークスペースとして開くことになります。ただし、開発ワークフローによっては、マルチルートワークスペースと呼ばれる高度な構成を使用して、複数のフォルダーを含めることも可能です。

ワークスペースという概念により、VS Code は以下のことが可能になります:

  • 特定のフォルダー(または複数のフォルダー)にのみ適用され、他には適用されない設定を構成する。
  • そのワークスペースのコンテキスト内でのみ有効なタスクデバッガー起動の構成を保存する。
  • そのワークスペースに関連付けられた UI 状態(開いているファイルなど)を保存および復元する。
  • 拡張機能をそのワークスペースに対してのみ選択的に有効または無効にする。

VS Code のドキュメント、イシュー、コミュニティでの議論において、「フォルダー」と「ワークスペース」という用語が混在して使われているのを見かけるかもしれません。ワークスペースとは、VS Code 独自の知識や機能を備えたプロジェクトのルートであると考えてください。

注: ワークスペースなしで VS Code を開くことも可能です。例えば、OS のファイルメニューからファイルを選択して新しい VS Code ウィンドウを開いた場合、そこはワークスペース内ではありません。このモードでは VS Code の一部の機能が制限されますが、テキストファイルを開いて編集することは可能です。

VS Code の「ワークスペース」はどのように開きますか?

ワークスペースを開くには、ファイル > フォルダーを開く... メニューを使用してフォルダーを選択します。

あるいは、ターミナルから VS Code を起動する場合、code コマンドの最初の引数としてフォルダーのパスを渡すことで開くことができます。例えば、以下のコマンドを使用して現在のフォルダー(.)を VS Code で開きます。

code .

単一フォルダーワークスペース

フォルダーを VS Code で開くだけで、そのフォルダーは自動的に VS Code ワークスペースになります。特別な準備は必要ありません。フォルダーを開くと、VS Code は開いているファイルやエディターのレイアウトなどの構成を自動的に記録します。次にそのフォルダーを VS Code で開くと、前回終了時の状態でエディターが開かれます。

また、ワークスペース固有の設定(グローバルなユーザー設定とは対照的)、タスク定義デバッグ起動ファイルなど、フォルダー固有の構成を追加することもできます(以下のワークスペース設定セクションを参照してください)。

Single-folder workspace

VS Code 内で開かれた単一フォルダーワークスペース

マルチルートワークスペース

マルチルートワークスペースは、複数の異なるフォルダーを同じワークスペースの一部として構成できる VS Code の高度な機能です。フォルダーをそのままワークスペースとして開くのではなく、ワークスペース内のすべてのフォルダーをリスト化した <名前>.code-workspace JSON ファイルを開きます。例えば以下の通りです:

{
  "folders": [
    {
      "path": "my-folder-a"
    },
    {
      "path": "my-folder-b"
    }
  ]
}

Multi-root workspace

VS Code で開かれたマルチルートワークスペース

注: フォルダーを開いた場合と .code-workspace ファイルを開いた場合の視覚的な違いはわずかです。.code-workspace ファイルが開かれていることを示すために、ユーザーインターフェイスの一部(例えば、ファイルエクスプローラーのルート)では、名前の横に (ワークスペース) という接尾辞が表示されます。

無題のマルチルートワークスペース

ワークスペースにはフォルダーを柔軟に追加・削除できます。まずは VS Code でフォルダーを開き、必要に応じて後からフォルダーを追加していきます。

File Explorer context menu, highlighting options to add or remove folders to the workspace

ワークスペース内のフォルダー追加・削除のためのファイルエクスプローラーのコンテキストメニュー

すでに .code-workspace ファイルを開いていない限り、ワークスペースに2つ目のフォルダーを追加した時点で、VS Code は自動的に「無題(untitled)」のワークスペースを作成します。バックグラウンドで、現在のセッションのすべてのフォルダーとワークスペース設定を含む untitled.code-workspace ファイルが自動的に管理されます。このワークスペースは、ディスクに保存するまで「無題」のままです。

Untitled multi-root workspace

VS Code で開かれた無題のマルチルートワークスペース

注: 無題のワークスペースと保存されたワークスペースの間に違いはありません。唯一の違いは、無題のワークスペースは利便性のために自動的に作成されるものであり、保存するまでは常に復元されるという点です。無題のワークスペースが開かれているウィンドウを閉じると(確認を求められた後)、VS Code はそのワークスペースを自動的に削除します。

ワークスペースの設定

ワークスペース設定を使用すると、開いているワークスペースのコンテキスト内で設定を構成できます。ワークスペース設定は、常にグローバルなユーザー設定を上書きします。これらは物理的に JSON ファイルに保存され、その場所は、フォルダーをワークスペースとして開いたか、.code-workspace ファイルを開いたかによって異なります。

設定のスコープとファイルの詳細については、設定のドキュメントを参照してください。

単一フォルダーワークスペースの設定

フォルダーをワークスペースとして開くと、ワークスペース設定は .vscode/settings.json に保存されます。

Single-folder workspace settings

フォルダーがワークスペースとして開かれた時の設定エディター

マルチルートワークスペースの設定

.code-workspace をワークスペースとして開くと、すべてのワークスペース設定が .code-workspace ファイル内に追加されます。

ルートフォルダーごとに設定を構成することも可能で、設定エディターには フォルダー設定 という3つ目の設定スコープが表示されます。

Multi-root settings

マルチルートワークスペースが開かれた時の設定エディター

フォルダーごとに構成された設定は、.code-workspace で定義された設定を上書きします。

ワークスペースのタスクと起動構成

ワークスペース設定が特定のワークスペース固有であるのと同様に、タスクや起動構成もワークスペース単位でスコープ設定できます。

フォルダーをワークスペースとして開いているか、.code-workspace ファイルを開いているかによって、ワークスペースのタスクや起動構成の場所は .vscode フォルダー内、あるいは .code-workspace ファイル内のいずれかになります。さらに、.code-workspace ファイルを開いている場合でも、タスクや起動構成は常にフォルダーレベルで定義できます。

VS Code でのタスクや起動構成の使用方法に関する包括的な概要については、タスクデバッグの章を参照してください。

よくある質問

フォルダーと比較した場合のマルチルートワークスペースの利点は何ですか?

最も明白な利点は、ディスク上の同じ親フォルダー内に保存されていない複数のプロジェクトを扱えることです。どこにあるフォルダーでも選択してワークスペースに追加できます。

単一フォルダーベースのプロジェクトで主に作業している場合でも、.code-workspace ファイルを使用する利点はあります。フォルダー内に複数の .code-workspace ファイルを保存することで、シナリオに応じてプロジェクトの特定の側面をスコープ化したフォルダービューを提供できます(例:関係のないフォルダーをファイルエクスプローラーから除外するための client.code-workspaceserver.code-workspace)。.code-workspace ファイルは folders セクションで相対パスをサポートしているため、フォルダーの保存場所に関わらず、これらのワークスペースファイルは誰でも使用できます。

最後に、特定のプロジェクトに対して同じワークスペース設定やタスク/起動構成を適用したい場合は、それらを .code-workspace ファイルに追加し、そのワークスペースに対してフォルダーの追加や削除を行うことを検討してください。

なぜ再起動時に VS Code はすべての無題のワークスペースを復元するのですか?

無題のワークスペースは、ユーザーが保持するかどうかを明示的に決定するものとして設計されています。無題のワークスペースが作成された際、VS Code は指定されたフォルダーをワークスペースファイルに追加し、既存のすべてのワークスペース設定も追加します。このユーザーデータは、無題のワークスペースが保存または削除されるまで、常に復元され VS Code ウィンドウに表示されます。

無題のワークスペースを削除するにはどうすればよいですか?

ウィンドウを閉じ、無題のワークスペースを保存するかどうかのプロンプトをキャンセルすることで、無題のワークスペースを削除できます。

フォルダーなしでマルチルートワークスペースを使用できますか?

.code-workspace ファイルの folders セクションを空にして、ルートフォルダーを一切表示しない VS Code インスタンスを作成することは可能です。この場合でも、ワークスペース設定やタスク、起動構成を保存することはできます。

VS Code はプロジェクトやソリューションをサポートしていますか?

VS Code には、Visual Studio IDE など他の開発ツールで定義されているような「プロジェクト」や「ソリューション」という概念はありません。VS Code のドキュメントで「プロジェクト」という用語を見かけるかもしれませんが、それは通常「作業しているもの」を指します。プログラミング言語やフレームワークによっては、ツール自体がビルド構成の定義や含まれるファイルの列挙を支援するために「プロジェクト」と呼ばれる機能をサポートしている場合があります。

© . This site is unofficial and not affiliated with Microsoft.