前回、前々回と、「Winget」と「Windows Terminal」について重要なリリースが立て続けに発表されたので、そちらを取り上げた。この流れでもう1つだけ、取り上げておきたいリリースがある。最近更新されたVisual Studio Code向けの拡張機能「PowerShell(PowerShell Language Support for Visual Studio Code)」についてだ。PowerShellスクリプトを開発していく上で大切な機能なので、ここで簡単に説明しておこう。
Visual Studio Code
ご存知の通り、Windowsで最も人気のある開発環境が「Visual Studio Code」だ。Visual Studio Codeは特定のプログラミング言語の開発環境ではない。拡張機能をインストールすることでどんなプログラミング言語の開発環境にもなる。この懐の広さがVisual Studio Codeの人気の理由の1つだ。
PowerShellスクリプトの開発を行うのであれば、PowerShell用の拡張機能をインストールすればよい。拡張機能はいくつかあるが、Microsoftが開発している「PowerShell」という拡張機能が公式だと言えるだろう。この拡張機能を使うことで、さまざまなサポートを得ることができる。
Visual Studio Codeを使うことの最大の利点は、拡張機能がVisual Studio Codeの提供している共通機能の恩恵を得られるという点にある。拡張機能はコーディング支援を行う機能を全て自前で開発しなければならないかといえばそうでもなく、すでに共通機能として用意されている機能を利用して実装を行えばよい。つまり、すでにほかの拡張機能が使っている機能を使って開発機能を開発することができるのである。
それはPowerShell拡張機能も例外ではない。PowerShell拡張機能もVisual Studio Codeが提供している共有機能を使ってコーディング支援機能を実装している。
PowerShell拡張機能 5月更新版の変更点
執筆時点でMicrosoftが開発しているPowerShell拡張機能の最新版は「v2021.5.1」だ。
このバージョンの主な変更点は次の通り。
- デフォルトでセマンティックハイライトを無効化
- PowerShell wordSeparatorsから$と-を排除
- デバッグ中に名前がついていないPowerShellファイルを保存するように促す動作を廃止
- OmniSharpをバージョン0.19.2へアップグレード
- 重複して登録されていたコマンドを排除
- 補完機能によって予期せぬモジュールimportがトリガーにされる動作を修正
今回セマンティックハイライトが無効化されたのは、まだこの機能の実装が不十分なため、有効にすると逆に扱いにくくなるからだ。そのため、問題が修正された問題なく動作するようになるまでは無効化するということだろう。
なお、セマンティックハイライトの機能を有効に戻したい場合には次のように設定すればよい。
"[powershell]": {
"editor.semanticHighlighting.enabled": true
}
wordSeparatorsから「$」と「-」を抜いたのは、単語区切りの挙動をVisual Studio Codeに揃えるためだ。変数をダブルクリックすると拡張機能が強調表示する部分と同じ部分が選択されるようになる。細かい変更だが、こうなっていないと操作を誤りやすいことを考えると重要な変更だ。
あまり戻したいというケースはないと思うが、もし変更される前の状態に戻す場合には次の設定を行う。
"[powershell]": {
"editor.wordSeparators": "`~!@#$%^&*()-=+[{]}\\|;:'\",.<>/?"
}
今回のバージョンで最も重要な変更は「OminiSharp」がバージョン0.18.3から0.19.2へアップグレードされた点にあるとされている。OmniSharpは言語サーバプロトコルおよびデバッグアダプタプロトコルサーバライブラリであり、PowerShell拡張機能が利用する非常に重要なライブラリである。このバージョンに追従していくことはPowerShell拡張機能にとって大切なことなのだ。
それ以外にもいくつものバグが修正されている。PowerShell拡張機能を使っているのであればもうアップデートが適用されているとは思うが、まだ使ったことがないならこのタイミングで使い始めてみるとよいだろう。
今後の開発も活発に進められる予定
こうした拡張機能にとって重要なのは、開発が活発に継続されているかどうかにある。今後の開発計画を見るに、PowerShellの拡張機能は今後も良い状態が続くことが予測される(参考:「Projects · PowerShell/vscode-powershell」)。
PowerShellを取り巻く環境は基本的にはオープンソースソフトウエアモデルになってきており、Microsoftはコミュニティの意見や行動をどうやって開発に取り組んでいくかに力を入れている。Windowsにおいて、PowerShellはデフォルトのシェルとしての立場を確かなものにしており、今後もPowerShellを取り巻く状況は活発な状態が続くことが予測される。