「プロジェクトごとにVS Codeの設定を変えたい」
「フォルダ単位で拡張機能やフォーマッタの動作を切り替えたい」
そんなときに役立つのがVS Codeのワークスペース設定です。
VS Codeのワークスペース設定を使えば、以下のようなことが簡単にできます:
- 特定のプロジェクトだけ保存時にLintを走らせる
- プロジェクトごとにPythonの仮想環境を切り替える
- フォーマッタをプロジェクト単位で変える
- チーム開発での設定統一
この記事では、VS Codeのワークスペース設定の基本から、実際の開発で役立つカスタマイズ例まで、初心者にもわかるように解説します。
VS Codeのワークスペース設定とは?
ワークスペース設定の種類と優先度
VS Codeの設定には大きく3種類あり、それぞれ適用される範囲が異なります。
設定の種類 | 影響範囲 | 保存場所 | 優先度 |
---|---|---|---|
ユーザー設定 | VS Code全体 | settings.json(グローバル) | 低 |
ワークスペース設定 | 現在開いているプロジェクト | .vscode/settings.json | 中 |
フォルダ設定 | 特定フォルダのみ | .code-workspace | 高 |
ポイント: 優先度が高い設定が低い設定を上書きします。
ワークスペース設定のメリット
プロジェクト固有の環境を作れる
各プロジェクトに最適な設定を適用できるため、開発効率が大幅に向上します。
チーム開発での設定統一
.vscode/settings.json
をGitで管理することで、チーム全体で同じ開発環境を共有できます。
他のプロジェクトに影響しない
設定がプロジェクト単位で独立しているため、他の作業に悪影響を与えません。
ワークスペース設定を作る方法
基本的なワークスペース設定の作成
ステップ1: フォルダを開く
VS Codeでプロジェクトフォルダを開きます。
ファイル → フォルダーを開く → プロジェクトフォルダを選択
ステップ2: 設定ファイルを作成
プロジェクトルートに .vscode
フォルダと settings.json
を作成します。
フォルダ構成例
my-project/
├── .vscode/
│ └── settings.json
├── src/
└── package.json
ステップ3: 設定を記述
.vscode/settings.json
に設定を記述します。
基本的な設定例
{
"editor.tabSize": 2,
"editor.insertSpaces": true,
"editor.formatOnSave": true
}
コマンドパレットから設定する方法
より簡単に設定を変更する方法もあります。
手順
Ctrl + Shift + P
(Mac:Cmd + Shift + P
)でコマンドパレットを開く- “Preferences: Open Workspace Settings” を選択
- GUI画面で設定を変更
この方法で変更した設定は自動的に .vscode/settings.json
に保存されます。
よく使うワークスペース設定例
エディタの基本設定
インデントとフォーマット設定
{
"editor.tabSize": 2,
"editor.insertSpaces": true,
"editor.formatOnSave": true,
"editor.formatOnPaste": true,
"editor.trimAutoWhitespace": true
}
表示設定
{
"editor.wordWrap": "on",
"editor.lineNumbers": "on",
"editor.renderWhitespace": "boundary",
"editor.rulers": [80, 120]
}
言語別のフォーマッタ設定
JavaScript/TypeScript プロジェクト
{
"editor.defaultFormatter": "esbenp.prettier-vscode",
"[javascript]": {
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.formatOnSave": true
},
"[typescript]": {
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.formatOnSave": true
},
"prettier.semi": false,
"prettier.singleQuote": true
}
Python プロジェクト
{
"[python]": {
"editor.defaultFormatter": "ms-python.black-formatter",
"editor.formatOnSave": true,
"editor.codeActionsOnSave": {
"source.organizeImports": true
}
},
"python.defaultInterpreterPath": "./venv/bin/python",
"python.terminal.activateEnvironment": true
}
HTML/CSS プロジェクト
{
"[html]": {
"editor.defaultFormatter": "vscode.html-language-features",
"editor.formatOnSave": true
},
"[css]": {
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.formatOnSave": true
},
"emmet.includeLanguages": {
"javascript": "javascriptreact"
}
}
Linter とコード品質の設定
ESLint設定(JavaScript/TypeScript)
{
"eslint.enable": true,
"eslint.workingDirectories": ["./"],
"editor.codeActionsOnSave": {
"source.fixAll.eslint": true
},
"eslint.validate": [
"javascript",
"javascriptreact",
"typescript",
"typescriptreact"
]
}
Python Linter設定
{
"python.linting.enabled": true,
"python.linting.flake8Enabled": true,
"python.linting.pylintEnabled": false,
"python.linting.flake8Args": [
"--max-line-length=88",
"--ignore=E203,W503"
]
}
ターミナルとシェル設定
デフォルトシェルの設定
{
"terminal.integrated.defaultProfile.windows": "PowerShell",
"terminal.integrated.defaultProfile.osx": "zsh",
"terminal.integrated.defaultProfile.linux": "bash",
"terminal.integrated.fontSize": 14
}
作業ディレクトリの設定
{
"terminal.integrated.cwd": "${workspaceFolder}",
"terminal.integrated.env.windows": {
"PATH": "${workspaceFolder}/node_modules/.bin;${env:PATH}"
}
}
複数フォルダのワークスペース管理
.code-workspaceファイルの作成
複数のプロジェクトを1つのワークスペースで管理したい場合は、.code-workspace
ファイルを使います。
手順
- メニュー → ファイル → ワークスペースにフォルダーを追加
- 必要なフォルダをすべて追加
- ファイル → 名前を付けてワークスペースを保存
.code-workspaceファイルの例
{
"folders": [
{
"name": "フロントエンド",
"path": "./frontend"
},
{
"name": "バックエンド",
"path": "./backend"
},
{
"name": "共通ライブラリ",
"path": "./shared"
}
],
"settings": {
"editor.formatOnSave": true,
"files.exclude": {
"**/node_modules": true,
"**/.git": true
}
}
}
フォルダ別の個別設定
各フォルダに独自の設定も適用できます。
{
"folders": [
{
"name": "React App",
"path": "./frontend",
"settings": {
"eslint.workingDirectories": ["./frontend"],
"typescript.preferences.includePackageJsonAutoImports": "on"
}
},
{
"name": "Node.js API",
"path": "./backend",
"settings": {
"node.defaultNodePath": "./backend/node_modules"
}
}
]
}
実用的な設定テンプレート
React + TypeScript プロジェクト向け
{
"editor.tabSize": 2,
"editor.formatOnSave": true,
"editor.codeActionsOnSave": {
"source.fixAll.eslint": true,
"source.organizeImports": true
},
"[typescript]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[typescriptreact]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"eslint.workingDirectories": ["./"],
"typescript.preferences.includePackageJsonAutoImports": "on",
"emmet.includeLanguages": {
"typescriptreact": "html"
},
"files.exclude": {
"**/node_modules": true,
"**/build": true,
"**/.git": true
}
}
Python Django プロジェクト向け
{
"python.defaultInterpreterPath": "./venv/bin/python",
"python.terminal.activateEnvironment": true,
"[python]": {
"editor.defaultFormatter": "ms-python.black-formatter",
"editor.formatOnSave": true,
"editor.codeActionsOnSave": {
"source.organizeImports": true
}
},
"python.linting.enabled": true,
"python.linting.flake8Enabled": true,
"python.linting.flake8Args": [
"--max-line-length=88",
"--ignore=E203,W503"
],
"files.associations": {
"*.html": "django-html"
},
"files.exclude": {
"**/__pycache__": true,
"**/*.pyc": true,
"**/venv": true
}
}
Vue.js プロジェクト向け
{
"editor.tabSize": 2,
"editor.formatOnSave": true,
"[vue]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"eslint.validate": [
"javascript",
"javascriptreact",
"vue"
],
"vetur.format.defaultFormatter.html": "prettier",
"vetur.format.defaultFormatter.css": "prettier",
"vetur.format.defaultFormatter.js": "prettier",
"emmet.includeLanguages": {
"vue-html": "html"
}
}
拡張機能の推奨設定
プロジェクト固有の拡張機能推奨
.vscode/extensions.json
ファイルを作成して、プロジェクトに必要な拡張機能を推奨できます。
{
"recommendations": [
"esbenp.prettier-vscode",
"dbaeumer.vscode-eslint",
"ms-python.python",
"ms-python.black-formatter",
"bradlc.vscode-tailwindcss",
"ms-vscode.vscode-typescript-next"
]
}
拡張機能の無効化
特定のプロジェクトで拡張機能を無効にしたい場合:
{
"extensions.ignoreRecommendations": true,
"typescript.suggest.autoImports": false
}
トラブルシューティング
よくある問題と解決方法
問題1: 設定が反映されない
原因: ユーザー設定が優先されている
解決方法:
{
// ワークスペース設定で明示的に上書き
"editor.formatOnSave": true,
"editor.defaultFormatter": "esbenp.prettier-vscode"
}
問題2: フォーマッタが動作しない
原因: 拡張機能がインストールされていない
解決方法:
- 必要な拡張機能をインストール
.vscode/extensions.json
で推奨拡張機能を指定
問題3: パスの設定がうまくいかない
原因: 相対パスの基準点が違う
解決方法:
{
// ${workspaceFolder} を使用
"python.defaultInterpreterPath": "${workspaceFolder}/venv/bin/python",
"eslint.workingDirectories": ["${workspaceFolder}"]
}
設定の検証方法
現在の設定を確認
Ctrl + Shift + P
→ “Preferences: Open Settings (JSON)”- ワークスペース設定タブを選択
- 設定内容を確認
設定の優先度を確認
コマンドパレットで “Developer: Reload Window” を実行して設定を再読み込み
チーム開発での活用方法
Gitでの設定共有
.gitignoreの設定
# VS Code設定は共有するが、個人設定は除外
.vscode/settings.json
!.vscode/extensions.json
!.vscode/launch.json
!.vscode/tasks.json
README.mdでの説明
## 開発環境のセットアップ
1. VS Codeで本プロジェクトを開く
2. 推奨拡張機能をインストール(自動で促される)
3. 設定が自動で適用されます
設定のバージョン管理
プロジェクトの成長に合わせて設定も進化させましょう:
- 新しいツールの導入時に設定を追加
- チームのフィードバックを受けて設定を調整
- 定期的に不要な設定を削除
まとめ
VS Codeのワークスペース設定を使えば、以下のメリットが得られます:
.vscode/settings.json
にプロジェクト固有の設定を保存- フォーマッタやLinter をプロジェクト単位で管理
- 複数フォルダをまとめた
.code-workspace
でさらに柔軟な環境構築 - チーム開発での設定統一 により生産性向上
コメント