ニュース

PowerShellのエディターはVisual Studio Codeに ~安定性の向上した拡張機能を来年1月に公開

「PowerShell 3.0」「PowerShell 4.0」のサポートは廃止

公式ブログにおけるリリース記事

 米Microsoftは11月4日(現地時間)、「PowerShell」エディターのロードマップを明らかにした。同社は「PowerShell」のクロスプラットフォーム化(Mac/Linux対応)を進めているが、現行のスクリプトエディター「PowerShell ISE」はWindowsでしか動作しない。そこで、その代替としてVisual Studio Code拡張機能の開発を進めている

 Visual Studio Code拡張機能への移行において、開発チームは2つの課題へ集中的に取り組んできたという。つまり、「PowerShell」の構文色分けを行う「PSReadLine」を「Visual Studio Code」の統合コンソールへ組み込むことと、エディターとデバッガーの安定性を向上させることだ。この2つの課題をクリアするため、「PowerShell」拡張機能では設計そのものがやり直されているという。

 まず、「OmniSharp」を移植して言語サーバープロトコル(LSP)が実装された。LSPはプログラミング言語の構文解析エンジン(言語サーバー)とコードエディターを分離・対話させるプロトコルで、「Visual Studio Code」の対応プログラミング言語を拡張する仕組みでもある。この実装により、非同期でメッセージを処理できるようになったほか、自動補完機能「IntelliSense」の安定性向上などが見込めるという。

 次に、「PSScriptAnalyzer(PSSA)」が“ホスト型”となる。「PSSA」は「PowerShell」スクリプトの静的コードチェッカーで、「PowerShell」拡張機能ではスクリプトの文法チェックや書式設定などに利用されている。従来の拡張機能では「PSSA」を利用するたびに「PSSA」エンジンをインスタンス化するコマンドレットを実行していたが、これはオーバーヘッドが大きいため、.NETで直接「PSSA」を管理(ホスト)する仕組みに移行するという。

 最後に、「PSReadLine」でレガシーな「PowerShell」バージョンのサポートが打ち切られる。「PSReadLine」は今年1月に「.NET Standard」に準拠した実装となり、Windows環境でも利用できるようになった(「Windows PowerShell 5.1」以降)。次期バージョン「PowerShell 7」ではPOSIXのターミナルAPIで新しいプロセスを開始する際の処理が改善されるため、Linux/Mac環境でも統合ターミナルにおける「PSReadLine」の利用が実現する見通し。

 その一方で、「PowerShell 3.0」「PowerShell 4.0」のサポートは段階的に打ち切られる。「Visual Studio Code」でこれらのバージョンを利用しているのは全体の約1%ほどだが、これらのユーザーに対応するため、「PowerShell 3.0」「PowerShell 4.0」に対応する最終安定版が提供されるという。レガシバージョンの「PowerShell」を利用しているユーザーは、バージョンにあったVisual Studio Code拡張機能を選ぶ必要がある。

  • 2019年11月:「OmniSharp」ライブラリによる安定性向上を含むプレビュー版「PowerShell」拡張機能をリリース
  • 2019年11月:「PowerShell 3.0」「PowerShell 4.0」をサポートする最後のバージョンの「PowerShell」拡張機能をリリース候補版として出荷
  • 2019年12月:「PowerShell 3.0」「PowerShell 4.0」をサポートする最後のバージョンを正式にリリース
  • 2020年1月:完全な「PSReadLine」サポート、「OmniSharp」統合、ホスト型「PSSA」が付属する「PowerShell」拡張機能を公開。「PowerShell 3.0」「PowerShell 4.0」のサポートは廃止