VS Code のワークスペースをちゃんと使いたい

# はじめに
皆さん、エディタちゃんと使えてますか？
エディタって特に効率的に使おうとしなくても全然開発できちゃうので、なんか非効率な気がしてもそのまま放置してるって人多いと思います。

ここでは、エディタのデファクトスタンダードとも言える VS Code のワークスペースについて公式ドキュメント準拠でまとめていきます。

https://code.visualstudio.com/docs/editor/workspaces

https://code.visualstudio.com/docs/editor/multi-root-workspaces


# ワークスペースって？
公式ドキュメントによると「VS Code 上で開かれた 1 つ以上のフォルダのコレクション」と定義されています。

> A Visual Studio Code "workspace" is the collection of one or more folders that are opened in a VS Code window (instance). In most cases, you will have a single folder opened as the workspace. However, depending on your development workflow, you can include more than one folder, using an advanced configuration called Multi-root workspaces.

種類としては、

1. １つのフォルダから成る **Single-folder workspaces**
2. 複数のフォルダから成り、より高度な設定ができる **Multi-root workspaces**

が存在します。

# 普通のフォルダと何が違うねん
VS Code では以下の４つを利点として挙げています：
1. ワークスペース独自の設定が可能
2. ワークスペース独自のタスクやデバッグ設定が可能
2. ワークスペースに関連した UI の情報を保存可能
2. ワークスペース独自に拡張機能のオンオフが可能

まあ要するに、「**ワークスペースに閉じた設定ができ、それがいつでも再現できる**」ということが強みなわけです。

以降では、Single-folder workspaces と Multi-folder workspaces の基本の使い方・設定方法を確認し、最後にさらに便利に使うためのツールと考え方を共有します。


# Single-folder workspaces
ここでは、Single-folder workspaces の簡単な設定の仕方を見ていきます。（`single-folder workspace`ディレクトリを作りこの直下で作業します。）

### 1. フォルダを開く
普通にフォルダを VS Code 上で開けるだけで ok です。

### 2. 「設定」を開く
以下のように歯車マークから「設定」を押します（もしくは、`cmd/ctrl` + `,`）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2698077/a34c6014-189a-8cec-2689-295608efe309.png)

### 3. 「ワークスペース」タブで設定
すると、「ユーザー」と「ワークスペース」のタブが現れるので、「ワークスペース」タブを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2698077/dac7b6fc-6311-377d-4afc-2868e7ca1a4b.png)

試しに、フォントサイズを 18 に上げてみます。すると直下のディレクトリに`.vscode/settings.json`ファイルが生成されるので、これをいじれば Single-folder workspace の設定が簡単にできます。
![tmp.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2698077/d582d720-170d-02b8-d121-bf879306bc7b.gif)

生成された`settings.json`で、フォントサイズを 12 から 24 にあげてみます。
![test.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2698077/195be4a4-4af9-c7a3-2a63-da1a7c58559d.gif)

:::note
要らなくなったら、`.vscode`ディレクトリごと消せばいいです。
:::

Single-folder workspace の使い方と効果を確認したので、さらに高度な Multi-root workspace を見ていきます。

# Multi-root workspaces
以下のディレクトリ構成で project1 に関するものを集めた Multi-root workspace を作り、簡単な設定をしてみます。
```
.
├── docs
│   ├── project1　 // このディレクトリをワークスペースに追加したい
│   └── project2
├── project1-code // このディレクトリをワークスペースに追加したい
│   ├── backend
│   └── frontend
└── project2-code
    ├── backend
    └── frontend
```

### 1. Single-folder workspace を開ける
まず、ワークスペースに追加したい１つ目のディレクトリを Single-folder workspace として開けます。（ここでは、`project1-code`）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2698077/31fac4c6-52a3-9423-fe2e-40f8695d620a.png)

### 2. 既存のワークスペースに追加する
その後、「フォルダをワークスペースに追加」を選択し、追加したいディレクトリ（ここでは、`docs/project1`）を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2698077/2ae9c13c-9a00-24a6-b4a4-a4dc76a3f345.png)

すると、以下のように **未設定（ワークスペース）** という名称になります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2698077/1cbfd889-3d4a-f0a4-feb8-b46f9a596eb9.png)

:::note
直感的に、ドラッグ＆ドロップでフォルダを追加することや、コマンドによる追加も可能です。（公式ドキュメント参照）
:::

### 3. ワークスペースとして保存する
このワークスペースを今後も使用したい場合、ワークスペースを保存する必要があります。
「ファイル>名前をつけてワークスペースを保存する」を選択します。
![スクリーンショット 2023-12-23 11.11.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2698077/b920b6dd-11d0-f312-ff66-b33255cb8e5d.png)

`*.code-workspace`　の保存場所と名称は任意ですが、とりあえず Single-folder workspace である `project1/project1-code.code-workspace`として保存することにします。
![スクリーンショット 2023-12-23 11.33.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2698077/d5c50c65-7ad2-9a9f-447b-db2560a86485.png)

:::note
未設定のままインスタンス（ウィンドウ）を閉じようとすると、保存するか否かを尋ねられます。
:::

### 4. ワークスペースを開く
保存できたら、一旦ウィンドウを閉じて開いてみましょう。
一旦 VS Code ウィンドウから以下を選択し、`*.code-workspace`を開けてみます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2698077/f01c8b99-d463-aaef-22a8-2bf0d117ec87.png)

:::note
単純に `*.code-workspace` ファイルをダブルクリックすることでも開けます。
:::

### 5. ワークスペースを設定する
現状の`.code-workspace`設定はこんな感じです。
```json
{
	"folders": [
		{
			"path": "."  // フォルダまでの相対（or 絶対）パス
		},
		{
			"path": "../docs/project1"　// フォルダまでの相対（or 絶対）パス
		}
	],
	"settings": {}
}
```
ここにエクスプローラでのディレクトリ表示名を明示的に加えてみましょう。
```json
{
	"folders": [
		{
            "name": "プロジェクト１のコード",   // 表示名
			"path": "."
		},
		{
            "name": "プロジェクト１のドキュメント" // 表示名
			"path": "../docs/project1"
		}
	],
	"settings": {}
}
```
すると、以下のようになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2698077/9fae9673-34cc-1764-cd7a-79a3d70f9dd4.png)

他にもデバッグやタスク等各種設定が可能なのでこれを皮切りに使ってみてください。

# おまけ
## 拡張機能
よりワークスペースを便利に使うための拡張機能を２つ紹介します。（個人的には１を使っています）
これらを使うと、**ワークスペース自体を探して開ける作業**や**ワークスペース間の移動**がより楽になると思います。

## 1. Project Manager
こちらの記事が参考になります。

https://web-souko.com/vscode-project_manager/

## 2. Workspace Explore
こちらの記事が参考になります。

https://zenn.dev/collabostyle/articles/339b49502fad40

## 設定ファイルについて
IDE の設定ファイルをどこまで共有すべきなのかについての考えが述べられています。
ワークスペースの設定をチームで共有するかどうかを考える際の参考になるでしょう。

https://qiita.com/frozenbonito/items/130f1fce5d3f97997d81

# おわりに
HRBrainでは一緒に働く仲間を募集しています！
ともにさらなる高みを目指しましょう。

https://www.hrbrain.co.jp/recruit


# 参考
https://code.visualstudio.com/docs/editor/workspaces

https://code.visualstudio.com/docs/editor/multi-root-workspaces

https://zenn.dev/collabostyle/articles/339b49502fad40

https://web-souko.com/vscode-project_manager/

https://qiita.com/frozenbonito/items/130f1fce5d3f97997d81