VS Code のワークスペースとは?
Visual Studio Code のワークスペースとは、VS Code ウィンドウ (インスタンス) で開かれる 1 つ以上のフォルダーの集合です。ほとんどの場合、ワークスペースとして開くフォルダーは 1 つです。しかし、開発ワークフローによっては、複数ルートのワークスペースと呼ばれる高度な構成を使用して、複数のフォルダーを含めることができます。
ワークスペースの概念により、VS Code は以下のことが可能になります。
- 特定のフォルダーにのみ適用され、他のフォルダーには適用されない設定を構成する。
- そのワークスペースのコンテキストでのみ有効なタスクやデバッガーの起動構成を永続化する。
- そのワークスペースに関連付けられた UI の状態 (たとえば、開かれているファイル) を保存し、復元する。
- そのワークスペースに対してのみ、選択的に拡張機能を有効または無効にする。
VS Code のドキュメント、Issue、コミュニティのディスカッションでは、「フォルダー」と「ワークスペース」という用語が同じ意味で使われているのを目にすることがあるかもしれません。ワークスペースとは、VS Code の特別な知識と機能を持つプロジェクトのルートだと考えてください。
注: ワークスペースなしで VS Code を開くことも可能です。たとえば、プラットフォームのファイルメニューからファイルを選択して新しい VS Code ウィンドウを開いた場合、ワークスペース内にはいません。このモードでは、VS Code の一部の機能は制限されますが、テキストファイルを開いて編集することはできます。
VS Code の「ワークスペース」を開くにはどうすればよいですか?
ワークスペースを開くには、ファイル > フォルダーを開く... メニューを使用し、フォルダーを選択します。
あるいは、ターミナルから VS Code を起動する場合、code
コマンドの最初の引数としてフォルダーへのパスを渡すことで開くことができます。たとえば、次のコマンドを使用して現在のフォルダー (.
) を VS Code で開きます。
code .
単一フォルダーのワークスペース
フォルダーを VS Code のワークスペースにするために、VS Code でフォルダーを開く以外に何もする必要はありません。フォルダーを開くと、VS Code は開いているファイルやエディターのレイアウトなどの構成を自動的に記録します。そのフォルダーを VS Code で再度開くと、エディターは前回終了したときの状態になります。
また、ワークスペース固有の設定 (グローバルなユーザー設定とは対照的)、タスク定義、デバッグの起動ファイルなど、他のフォルダー固有の構成を追加することもできます (下記のワークスペース設定のセクションを参照)。
VS Code 内で開かれた単一フォルダーのワークスペース
複数ルートのワークスペース
複数ルートのワークスペースは、VS Code の高度な機能で、複数の異なるフォルダーを同じワークスペースの一部として構成できます。フォルダーをワークスペースとして開く代わりに、ワークスペースのすべてのフォルダーをリストした <name>.code-workspace
JSON ファイルを開きます。たとえば、
{
"folders": [
{
"path": "my-folder-a"
},
{
"path": "my-folder-b"
}
]
}
VS Code で開かれた複数ルートのワークスペース
注: フォルダーを開いている場合と
.code-workspace
ファイルを開いている場合の外観上の違いは、微妙な場合があります。.code-workspace
ファイルが開かれていることを示すヒントとして、ユーザーインターフェイスの一部の領域 (たとえば、ファイルエクスプローラーのルート) では、名前の横に追加の (ワークスペース) というサフィックスが表示されます。
無題の複数ルートのワークスペース
ワークスペース内のフォルダーを柔軟に追加または削除できます。まず VS Code でフォルダーを開き、その後、必要に応じてさらにフォルダーを追加します。
ワークスペースでフォルダーを追加または削除するためのファイルエクスプローラーのコンテキストメニュー
すでに .code-workspace
ファイルを開いていない限り、ワークスペースに 2 つ目のフォルダーを初めて追加すると、VS Code は自動的に無題のワークスペースを作成します。バックグラウンドで、VS Code は現在のセッションのすべてのフォルダーとワークスペース設定を含む untitled.code-workspace
ファイルを自動的に維持します。ワークスペースは、ディスクに保存することを決定するまで無題のままです。
VS Code で開かれた無題の複数ルートのワークスペース
注: 無題のワークスペースと保存されたワークスペースの間に違いはありません。ただし、無題のワークスペースは便宜上自動的に作成され、保存するまで常に復元されます。無題のワークスペースが開かれているウィンドウを閉じると、VS Code は (確認を求めた後) 自動的に無題のワークスペースを削除します。
ワークスペース設定
ワークスペース設定を使用すると、開いているワークスペースのコンテキストで設定を構成できます。ワークスペース設定は、常にグローバルなユーザー設定を上書きします。これらは物理的に JSON ファイルに保存され、その場所は、フォルダーをワークスペースとして開いたか、.code-workspace
ファイルを開いたかによって異なります。
設定スコープとそのファイルの場所に関する包括的な説明については、設定のドキュメントを参照してください。
単一フォルダーのワークスペース設定
フォルダーをワークスペースとして開くと、ワークスペース設定は .vscode/settings.json
に保存されます。
フォルダーがワークスペースとして開かれているときの設定エディター
複数ルートのワークスペース設定
.code-workspace
をワークスペースとして開くと、すべてのワークスペース設定が .code-workspace
ファイルに追加されます。
ルートフォルダーごとに設定を構成することも可能で、設定エディターには フォルダー設定 と呼ばれる 3 つ目の設定スコープが表示されます。
複数ルートのワークスペースが開かれているときの設定エディター
フォルダーごとに構成された設定は、.code-workspace
で定義された設定を上書きします。
ワークスペースのタスクと起動構成
ワークスペース設定がワークスペース固有であるのと同様に、タスクと起動構成もワークスペースにスコープを限定することができます。
フォルダーをワークスペースとして開いているか、.code-workspace
ファイルを開いているかに応じて、ワークスペースのタスクと起動構成の場所は .vscode
フォルダー内か、.code-workspace
ファイル内になります。さらに、.code-workspace
ファイルを開いている場合でも、タスクと起動構成は常にフォルダーのレベルで定義できます。
VS Code でタスクと起動構成を使用する方法に関するより包括的な概要については、タスクとデバッグの章を参照してください。
よくある質問
複数ルートのワークスペースは、フォルダーと比べてどのような利点がありますか?
最も明白な利点は、複数ルートのワークスペースを使用すると、ディスク上の同じ親フォルダー内に保存されていない可能性のある複数のプロジェクトを操作できることです。どこからでもフォルダーを選択してワークスペースに追加できます。
主に単一フォルダーベースのプロジェクトで作業している場合でも、.code-workspace
ファイルを使用する利点があります。フォルダー内に複数の .code-workspace
ファイルを保存して、シナリオに応じてプロジェクトの特定の側面のスコープを限定したフォルダービューを提供できます (たとえば、client.code-workspace
、server.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 のドキュメントで「プロジェクト」という用語を目にすることがあるかもしれませんが、それは通常「作業しているもの」を意味します。プログラミング言語やフレームワークによっては、ツールセット自体がビルド構成を定義したり、含まれるファイルを列挙したりするために「プロジェクト」と呼ばれるものをサポートしている場合があります。