こんにちは!開発現場を渡り歩く中で、後輩エンジニアから「最近、VS Codeの動きがやけにもっさりするんです……」という相談を本当によく受けます。
あなたも、何気なく便利な拡張機能(プラグイン)を次々とインストールした結果、タイピングのレスポンスが悪くなったり、ファイル保存時の自動整形が妙にワンテンポ遅れてイライラしたりした経験はありませんか?
「拡張機能は便利だから入れたい、でも動作は軽く保ちたい」
これはすべてのエンジニアが直面する永遠のジレンマです。ネットでよく見かける「不要な拡張機能を消しましょう」というアドバイスは正論ですが、「どれが具体的にどれだけの負荷をかけているのか」をデータで直視したことはあるでしょうか?
今回は、VS Codeの奥深くに隠された「Process Explorer(プロセスエクスプローラー)」という強力な武器を使い、犯人(重い拡張機能)を科学的に特定する手法を徹底解説します。これをマスターすれば、あなたの開発環境は新幹線のようになり、毎日のコーディングが劇的に快適になりますよ。
—
1. VS Codeはなぜ重くなるのか?(アーキテクチャの裏側)
まず大前提として、VS Codeがどのような仕組みで動いているかを知る必要があります。
VS Codeは、内部的には「Electron(エレクトロン)」というフレームワークで作られています。これは簡単に言うと「VS Codeという名のGoogle Chromeブラウザが単体で動いている」ようなものです。
そして、あなたがインストールした拡張機能(Python、GitLens、各種テーマやフォーマッタなど)は、それぞれが独立した「別プロセス(子プロセス)」としてバックグラウンドで起動しています。つまり、プラグインを入れれば入れるほど、VS Codeという名のマンションの住人が増え、CPUやメモリの取り合いが起きるわけです。
ここで重要なのは、「すべての拡張機能が常に同じ負荷をかけているわけではない」という点です。
- 起動した瞬間だけCPUを食いつぶす奴
- 特定の巨大なJSONや大型のコードファイルを開いた瞬間に暴走する奴
- 常駐してメモリをじわじわ削り続ける奴
これらを感覚ではなく、「客観的な数値データ」として暴いていきましょう。
—
2. 犯人を特定する:Process Explorerの起動と見方
VS Codeには、OSのタスクマネージャーによく似た、内部のCPU・メモリ使用量を丸裸にする専用ツールが標準搭載されています。追加のプラグインは一切不要です。
プロセスエクスプローラーの呼び出し手順
1. VS Codeを開いた状態で、キーボードの `F1` キー(または `Ctrl + Shift + P` / `Cmd + Shift + P`)を押し、コマンドパレットを開きます。
2. 検索窓に `Process` と入力します。
3. 「Developer: Open Process Explorer(開発者: プロセス・エクスプローラーを開く)」を選択してEnterを押します。
すると、別ウィンドウで下図のようなプロセスのリストが立ち上がります。
PID CPU % Memory (MB) Command Line
—————————————————————————————–
1234 0.0 140 code –type=window (メインウィンドウ)
5678 4.2 110 code –type=extensionHost (拡張機能ホスト)
├─ 5689 2.5 85 extensionId: ms-python.python (Python拡張機能)
├─ 5712 0.0 45 extensionId: eamodio.gitlens (GitLens拡張機能)
└─ 5800 0.1 30 extensionId: esbenp.prettier-vscode (Prettier)
注目すべき3つのポイント
1. `extensionHost`(拡張機能ホスト)の存在
すべての拡張機能を取りまとめて動かしている親玉です。ここ全体のCPU使用率が高い場合、どれか(あるいは複数の)拡張機能が暴走しています。
2. `extensionId:` の表記
親である `extensionHost` のツリー構造を広げていくと、個々のプラグインのID(識別子)が表示されます。ここで「あ、こいつが今CPUを4%も食ってるな」というのが一目でわかります。
3. CPU % のリアルタイム変動
普段は `0.0%` なのに、ファイルを保存した瞬間や、特定のファイルを新しく開いた瞬間に `CPU %` が跳ね上がるプロセスはありませんか?それが、あなたのコードを裏で重くしている「真犯人」です。
—
3. 実践検証:どの拡張機能がボトルネックになっているか?
では、実際に特定の言語拡張やフォーマッタが負荷を生んでいないかを検証するステップを解説します。今回は、多くの人が導入している「重くなりがちなシチュエーション」を例に取ります。
ステップ1:起動時負荷の計測
VS Codeを完全に終了した状態から立ち上げ、Process Explorerを即座に開きます。
起動直後の数秒間、どの拡張機能が初期化処理(インデックス作成やサーバー起動など)にCPUを奪っているかを確認します。例えば、重いコード補完(IntelliSense)を持つ言語拡張は、起動直後にCPUを100%近くまで専有することがよくあります。
ステップ2:ファイルオープン時・編集時の負荷テスト
特定の巨大なファイル、または複雑な構文を持つファイルを開きます。
この時、Process ExplorerのCPU使用率を横に並べて観察してください。
- 症状: ファイルを開いた瞬間に `ms-python.python` などのリンター(構文チェック)やフォーマッタが急激にCPUを消費し続ける。
- 原因: バックグラウンドで静的解析エンジン(Pylanceなど)がフル稼働し、リアルタイムでAST(抽象構文木)を生成しているためです。
—
4. ボトルネックを解消するプロフェッショナルな設定術
犯人が分かったからといって、その拡張機能をすぐにアンインストールする必要はありません。プロのエンジニアは、「必要なときだけ動くように設定をチューニング」します。
以下の設定(`settings.json`)を適切に行うことで、拡張機能の無駄な暴走をピタッと止めることができます。
安定性とパフォーマンスを引き上げる推奨設定 (`settings.json`)
VS Codeの設定画面(`Ctrl + ,` または `Cmd + ,`)を開き、右上のアイコンから `settings.json`(テキストエディタ形式)を開いて、以下の設定をマージしてください。
{
// 1. 巨大ファイルを開いた際、重い拡張機能の自動機能を強制抑制する
// (巨大なログファイルやCSVを開いたときにVS Codeがフリーズするのを防ぎます)
“workbench.editor.largeFileConfirmation”: 10485760, // 10MB以上のファイルは警告を出す
// 2. 拡張機能の不要な自動更新を停止し、バックグラウンド通信を減らす
// (開発中に突然バックグラウンドで重いダウンロードが始まるのを防ぎます)
“extensions.autoUpdate”: false,
// 3. テキスト検索(Grep)の際に、不要なフォルダやビルド成果物(node_modulesなど)を
// 検索対象から除外することで、検索拡張機能のCPU負荷を劇的に下げる
“search.exclude”: {
“/node_modules”: true,
“/bower_components”: true,
“/.code-search”: true,
“/dist”: true,
“/build”: true
},
// 4. 自動保存(Auto Save)の間隔を適切に調整し、
// 保存のたびに走るフォーマッタやリンターの実行頻度をコントロールする
“files.autoSave”: “afterDelay”,
“files.autoSaveDelay”: 2000 // 2秒間操作がない場合にのみ保存(デフォルトの即時保存による負荷を軽減)
}
さらに踏み込む:「必要なプロジェクトだけ」拡張機能を有効にする
「Pythonの拡張機能はPythonを書くときだけ動いてほしいのに、Markdownを書いている時も裏で動いているのは無駄だな……」と思ったことはありませんか?
VS Codeには、ワークスペース(プロジェクト)単位で拡張機能を有効・無効にする機能があります。
1. アクティビティバーの「拡張機能」アイコン(`Ctrl + Shift + X`)を開く。
2. 例えば「Python」拡張機能の歯車マークをクリックする。
3. 「無効(ワークスペース)」を選択する。
これで、Pythonを使わないフロントエンド開発のプロジェクトや、ただのドキュメント作成用のフォルダを開いたときに、Python拡張機能がバックグラウンドで起動しCPUを消費するのを完全に防ぐことができます。これは環境を軽くする上で非常に強力なテクニックです。
—
5. まとめ
今回は、VS Codeの「Process Explorer」を活用した拡張機能の負荷監視と、パフォーマンスを限界まで引き上げるチューニング手法を解説しました。
- Process Explorer(`F1` ➔ `Open Process Explorer`)で、どの拡張機能がどれだけCPUやメモリを食っているかを可視化する。
- 起動時やファイルオープン時の挙動をチェックし、ボトルネックを突き止める。
- `settings.json` の調整や、ワークスペースごとの拡張機能の有効/無効化によって、無駄なリソース消費をシャットアウトする。
開発環境の重さにイライラする時間は、エンジニアにとって最も生産性の低い時間です。このボトルネック分析を一度行っておくだけで、日々のコーディングが驚くほど軽快になり、開発への集中力が途切れることがなくなりますよ。
ぜひ今日から、あなたのVS Codeの裏側を覗いてみてくださいね!