Microsoftは2020年3月5日(米国時間)、「Visual Studio Code for PowerShell 7」において、Visual Studio Code向けのPowerShell拡張機能のメジャーアップデート版を公開したと伝えた。同版は、アーキテクチャの刷新やバグ修正などを含んでいるほか、先日公開された「PowerShell 7.0」に対応している。
Microsoftはこれまで、Windows PowerShellの開発環境として「Windows PowerShell ISE」の使用を推奨してきた。しかし、Windows PowerShell ISEの対応はWindows PowerShellまでとなる。
Microsoftは先日公開したPowerShell 7.0をWindows PowerShellの公式にして唯一の後継バージョンと位置付けており、Windows PowerShell ISEに変わる存在として「Visual Studio Code」を指定している。PowerShell拡張機能をインストールしたVisual Studio CodeがWindows PowerShell ISEの替わりということだ。今回公開されたアップデート版のPowerShell拡張機能には、その流れを組んだ改善が取り込まれている。以降では、今回のバージョンで特に注目される新機能や変更点を取り上げる。
Windows PowerShell ISE互換モード導入
新しいPowerShell拡張機能にはWindows PowerShell ISEとの互換性を向上させる機能が導入された。コマンドパレットを表示させると次のように「PowerShell: Enable ISE Mode」という項目が追加されていることを確認できるはずだ。
「PowerShell: Enable ISE Mode」を選択すると、次のスクリーンショットのように見た目がWindows PowerShell ISEっぽくなる。完全に同じというわけにはいかないが、雰囲気はだいぶ近い感じだ。
ショートカットキーなどもWindows PowerShell ISEと調整が行われており、これまでよりもWindows PowerShell ISEからの移行がスムーズになったと言える。なお、デフォルトのモードに戻したい場合にはコマンドパレットで「PowerShell: Disable ISE Mode (restore to defaults)」を選択すればよい。
統合コンソールにPSReadLine 2.0を統合
統合ターミナルに組み込まれているPSReadLineがバージョン2.0.0 GAにアップグレードされた。この結果、統合ターミナルにおいて強力なコマンドライン編集エクスペリエンスが有効になった。今回のアップグレードでは、Windowsのみならず、サポートされている全てのプラットフォームでこの機能が有効になった点が特に大きなポイントだと言える。これでシンタックスハイライト、複数行の編集、後方検索といった機能が統合ターミナルで機能するようになった。
例えば、次のスクリーンショットはmacOSとWindows 10のそれぞれで動作しているVisual Studio Codeの統合ターミナルだが、どちらもシンタックスハイライトが機能していることがわかる。
これで、より簡単にVisual Studio CodeだけでPowerShellスクリプト開発をできるようになったと言える。
古いバージョンのサポート廃止
PSReadLine 2.0.0 GAにアップグレードしたことで統合ターミナル側は嬉しい状況になったわけだが、同時にPowerShell 3系とPowerShell 4系のサポートが廃止された点には注意する必要がある。今後、これらの古いバージョンがサポート対象となることはないだろう。
ただし、MicrosoftはVisual Studio CodeのPowerShellセッションの約1%でPowerShell 3系およびPowerShell 4系のバージョンが使われていたとしており、「これらのバージョンをサポートしたPowerShell拡張機能のバージョン2020.01を最終的な安定バージョンとして入手できるようにしておく」と説明している。これらの古いバージョンを使っている場合には、PowerShell拡張機能2020.01をインストールすることで、これまでのように古いバージョンのWindows PowerShellを使い続けることができる。
そのほかの新機能や変更点
上記2つが、今回のバージョンのPowerShell拡張機能のハイライトだと言える。それら以外の主な変更点などは、次の通りだ。
- 全体的なパフォーマンスの向上
- デバッグ機能の安定性向上
- 拡張機能クラッシュの削減
- スクロールバックバッファをクリアする設定の追加(powershell.integratedConsole.forceClearScrollbackBufferをClear-Hostに設定することで有効になる)
- LSPメッセージを介したターミナルクリア機能の導入
- スニペット編集における$TM_SELECTED_TEXTのサポート
- CodeLensプロバイダにRUnCodeコマンドを追加
- CodeLensおよびReferenceにフィルタ機能を追加
- パス自動補完機能の改善
ほぼ期待通りのPowreShell拡張機能
MicrosoftはPowerShell 7.0のリリースに向けてVisual Studio Code向けPowerShell拡張機能の開発に取り組んできた。今回のリリースでは想定されていた機能がほぼ実現されており、予定通りのリリースに仕上がったのではないかと考えられる。
Visual Studio CodeとPowerShell拡張機能は今後長きに渡ってデフォルトの開発環境として取り上げられることになるだろう。これまでWindows PowerShell ISEを使っていたのであれば、このタイミングで移行を試みるというのは悪くないと思う。Visual Studio Codeの体験はVisual Studio Codeを使用するほかの開発にも適用できるので、なかなか”割のいい勉強”になるはずだ。