10月15日、MicrosoftはVisual Studio Code(VS Code)バージョン1.94をリリースした。海外のテクノロジーメディアDEVCLASSが報じたところによると、これは初めてECMAScript Modules(ESM)でビルドされた安定版であり、起動時間やバンドルサイズに大幅な改善をもたらしたが、拡張機能は依然として古いCommonJSモジュールに依存している。
ESMは、JavaScriptの公式標準であり、V8などのブラウザのJavaScriptエンジンにネイティブ対応している。V8は、Electronフレームワークを通じてChromiumブラウザに埋め込まれ、VS Codeでも使用されている。VS Codeプロジェクトは元々AMD(Asynchronous Module Definition)を使用していたが、2022年にESMへの移行が始まり、今月には「すべての古いAMDローダーの使用が無効化され、10月の技術的負債清算週間で削除される」と報告された。
この変更により、VS Codeの起動パフォーマンスは大幅に改善され、メインのワークベンチのバンドルサイズは10%以上削減された。さらに、ESM向けの最新のツール群の恩恵を受けることができ、VS Codeのエンジニアリングシステムの改善も計画されている。
しかし、この有望なニュースに水を差すのは、VS Codeの重要な機能である拡張機能が引き続きCommonJSモジュールにしか対応していない点である。唯一の回避策は、拡張機能のソースコードにESMを使用し、CommonJSにコンパイルすることだ。約3年前にこの問題を提起した開発者によると、拡張機能がネイティブでESMをサポートすれば、ツリーシェーキング(不要なコードの削除)を可能にし、esbuildのようなツールを使用して拡張機能をバンドルする際に「大きなパフォーマンス向上」が見込まれるという。esbuildは、TypeScriptおよびJavaScript向けのバンドラーである。この問題に関する数百件のコメントは、拡張機能の作成者たちの高い関心を示している。
ESMがVS Code本体で使用されるようになったことで、拡張機能にも早急に対応が進むことが期待されている。しかし、ある開発者は「課題に基づいて計画を立てるべきではない。これまでにも非常に要望の高い機能が実装されるまで何年もかかったことがある」と警告している。
VS Code 1.94には他にも多くの新機能が追加されている。GitHub Copilotの機能強化(有料サブスクリプションが必要)、TypeScript 5.6のサポート、Kubernetes開発コンテナへのリモートアタッチ機能などが含まれている。
また、プレビュー機能として、複数のGitHubアカウントを同時にログインできる機能が追加されている。この歓迎される機能は現在、実験的なフラグの背後にあり、次回のリリースでデフォルトで有効になる予定である。
詳細はVS Code migration to ECMAScript modules ‘massively improves startup performance’ – but extensions left behind for now • DEVCLASSを参照していただきたい。