PowerShell 7.1 Preview 1登場

前回、PowerShell 7の新機能や変更点などについてまとめるとともに、今後どのような名称が使われることになるのかといった話の整理や、主要OSにPowerShell 7をインストールする方法を説明した。

PowerShell 7が公開されたばかりなのだが、Microsoftは2020年3月26日(米国時間)、「PowerShell 7.1 Team Investments and Preview.1 Release|PowerShell」において、PowerShell 7の次のバージョンとなる「PowerShell 7.1」へ向けた最初のプレビュー版「PowreShell 7.1 Preview 1」の公開を伝えた。Microsoftは早めに次のバージョンのプレビュー版を公開し、開発を進めていきたい意向を示している。

PowerShell 7.1 Team Investments and Preview.1 Release|PowerShell

PowerShell 7.1 Preview 1にはすでに多くの変更が追加されている。PowerShell 7.0.0のリリースに間に合わなかった機能や変更が盛り込まれているためだ。先日公開された「.NET 5 Preview 1」もこのバージョンに含まれている。.NET 5はPowerShell 7.1の基盤となることが予定されている。今回はPowerShell 7.1 Preview 1の変更点や今後の取り組みなど、現在わかっていることをまとめる。

PowerShell 7.1で目指すもの

MicrosoftはPowerShell 7.1で特に実現したい内容として次のような説明を行っている。ユーザーや開発者の体験を向上させるというのが主なテーマということになりそうだ。

  • WindowsにおけるPowerShell 7のインストールおよびアップデートを簡単にする:前回まとめた通り、Windows 10にPowerShell 7をインストール、またはアップデートするには、それなりにユーザーが操作を行わなければいけない。開発者にとってみればそれほど難しい操作ではないと思うが、そうでないユーザーにとってはどのパッケージをダウンロードすればよいか選択するだけでも一苦労だろう。Microsoftはこうした現在のWindowsにおけるPowerShell 7の面倒さを認識しており、より簡単にインストール/アップデートを実施する方法を検討しているという。現在のところPowerShell 7をWindowsとともに出荷する計画はないとしているが、最終的にはWindows 10に同梱され、Windows UpdateやMicrosoft Store経由でアップデートが実施されるようになるのではないかと考えられる
  • シェルの改善:現在のPowerShellはネイティブコマンドを実行する際に、その引数などをユーザーが期待しているように処理できないことがある。できればこうしたコマンドをPowerShellへコピー&ペーストしてそのまま実行できるようになることが望ましいため、そうした改善に取り組んでいくという。また、ネイティブコマンドとPowerShellの機能を組み合わせたいアドバンスドユーザーに対しても使いやすいシェルとなるように変更していく。例えば、「PSDrives」を使うことでOSに依存することなく抽象化されたファイルパスを実現できるが、現在のところこの機能はコマンドレットとスクリプトに限られている。こうした機能をネイティブコマンドに対しても機能するように開発していくとしている
  • インタラクティブなユーザー体験を向上させる:「最小限のタイピングでパイプラインを完了することができるように、予測エンジンを調整していく」「コンソールでパイプラインを作成している間に、現在の入力を放棄したり、新しいコンソールを開いたりすることなくパラメータに関するヘルプや完全なヘルプコンテンツを表示できるようにする」「コンソール出力を視覚的に見やすくするために、.NET System.CommandLineチームと協力して文字列を装飾する適切なAPIを開発するとともに、必要に応じて文字列をカラー/プレーンテキストの双方でレンダリングできるようにする」などとされている
  • PowerShellの軽量化:PowerShellには多くのコマンドレットとAPIが用意されている。これは利点でもあるが、その分ディスクスペースもかさむし、セキュリティ上のリスクにも成り得る。スクリプトを実行するだけなら、その実行に必要となるPowerShell関連の機能だけがインストールされているほうが好ましい。こうした機能を実現するために現在一枚岩で提供されているPowerShellをいくつかのモジュールに分割して提供できるようにする
  • PowerShellのパフォーマンス向上: .NETアセンブラへの依存を最小限のものへ減らしていくことでメモリ使用量を削減するとともに、スタートアップタイムの短縮を目指す


上記説明はあくまでもPowerShell 7.1で目指すものであり、PowerShell 7.1のリリースまでに全てが実現できるとは限らないとしている。後は開発の状況次第ということになるようだ。

PowerShell 7.1のリリーススケジュール

MicrosoftはPowerShell Core 6.0からPowerShell 7にかけて、おおよそ半年間(6カ月間)をめどに次のバージョンをリリースするスタイルを取っていた。PowerShell 7からは.NETのリリーススケジュールに合わせてPowerShell 7のリリースを行っていくことが予定されている。

現在、次の.NETとなる.NET 5のリリースは2020年冬が予定されている。PowerShell 7.1のリリースもこの時期を目指すとされており、.NET 5がリリースされてから1週間ないしは2週間以内にPowerShell 7.1のリリースが予定されている。

PowerShell 7.1ではモジュールやツールに関しても新しい取り組みが行われる予定になっているが、これからPowerShell 7.1と同時にリリースされるかはまだ未定とされている。開発が間に合えば同時にリリースするといった運びになるようだ。

現在の説明を読む限りでは、2020H1や2020H2のWindows 10フィーチャーアップデートが実施されても、PowerShell 7がWindows 10の同梱対象となることはなさそうだ。しかし、こうした意思決定は状況が変わると180度覆ることは珍しくない。今後どうなっていくのか状況をよく見ておきたいと思う。