PowerShell Core 6.2の次は「PowerShell 7」
先日最新版となる「PowerShell Core 6.2」が公開されたばかりだが、すぐに次のニュースが飛び込んできた。
MicrosoftはPowerShell Core 6.2の次のバージョンを「PowerShell 7」として公開すると「The Next Release of PowerShell - PowerShell 7」において発表した。バージョン番号が6.2から7へジャンプするだけではなく、名前からCoreを落として「PowerShell 7」とするというのである。
連載名の変更を検討しなければならない事態になってしまったわけだが、なぜこういった状況になったのかもう一度経緯をおさらいするとともに、今後の流れを整理しよう。
PowerShell 1.0〜PowerShell 5.1
PowerShellの最初のバージョンとなるPowerShell 1.0はWindows Vistaの時代にリリースされている。対象となったプラットフォームはWindows Vista、Windows XP SP2、Windows Server 2003 SP1だ。Windows Server 2008に対してはオプション的にコンポーネントが提供されている。
PowerShell 2.0からはWindows 7およびWindows Server 2008 R2に統合されるようになった。Windows Vista、Windows Server 2003、Windows XP SP3に対してもリリースされている。以後、Microsoftはその当時のWindowsプラットフォームに対して新しいバージョンのPowerShellのリリースを続け、Windows 10に対してPowerShell 5.1を提供するところに至っている。
しかし、PowerShellとしての開発が進められたのはここまで。PowerShellは、PowerShell 5.1で一旦開発は終了となり、以降は互換性維持などの目的でメンテナンスのみが行われる状況になっている。
PowerShell 1.0〜PowerShell 5.1→Windows PowerShell
PowerShellはこのあと、PowerShellという名称ではなく、Windowsに統合されているPowerShellということで「Windows PowerShell」と表記されるようになっていく。
PowerShell Core
MicrosoftはPowerShell 5.1でWindows PowerShellの開発をほぼ終了させるが、別に新しいプロジェクト「PowerShell Core」を開始する。
これはクロスプラットフォームで動作するPowerShellの実装系で、Windows以外にもmacOSとLinuxに対応。さらにソースコードもオープンソースソフトウェアとして公開した。
PowerShell Coreの基本的な実装はそれまでに開発されてきたPowerShellに基づいている。互換性の状況は最初からかなり高かった。PowerShell Coreとして公開可能な部分が最初に公開され、以降もWindows PowerShellとの互換性を高めるためのコマンドレットの追加などが随時実施されていった。
Microsoftはコア技術のいくつかをオープンソースソフトウェアとして公開する戦略へ切り替えている。MicrosoftはPowerShell Coreをオープンソースソフトウェアとして公開するとともに、クロスプラットフォームで実行できるようにすることで、Windows以外のプラットフォームのユーザがPowerShellを使い出すのを期待していると見られる。
事実、PowerShell Coreはインタラクティブシェルとしても利用できるし、プログラミング言語としてスクリプト化して使うこともできる。シェル風でありながらもオブジェクト指向プログラミングの考え方が取り込まれていて高度なコーディングも可能だ。Microsoftは、PowerShell Coreの技術を通じてほかのプラットフォームのユーザがMicrosoftの技術に馴染むことも狙っているのだろう。
PowerShell Core→PowerShell
そして今回の発表だが、主に2つの内容で構成されている。
- 開発を進めてきたPowerShell Coreの実装が進んでおり、さらにWindows PowerShellとの互換性も十分なレベルに到達してきた。PowerShell CoreはWindows以外のユーザ、特にLinuxユーザからのフィードバックを得て素早い開発が行われており、こうした成果をWindowsプラットフォームにも還元していきたい。こうした目的を達成するために、Windows PowerShellをPowerShell Coreで置き換えていきたい。それに合わせて名称はPowerShell CoreからPowerShellへ戻したい
- PowerShell Coreという名称からPowerShellという名称に変更することで、ドキュメントをよりシンプルにすることができる
最大の理由は前者にあるように思える。PowerShell Coreの出来が思った以上によくなってきたので、デフォルトのWindows PowerShellにしてしまおう、というのが発想の大本にあるようだ。
当初、Windows PowerShellとPowerShell Coreは別の実装系として同居していくことが想定されていた。Windows PowerShellは互換性維持のためにずっと残しておき、最新版はPowerShell Coreを使うというものだ。しかし開発がうまく進んだ結果、PowerShell CoreでWindows PowerShellの役割を担うことができると踏んだのか、「PowerShell 7」としてもう一度本体に統合していくというわけである。
互換性維持の目的でWindows PowerShell 5.1は今後も維持されるものと見られるが、今後のアップデートでPowerShell Coreをインストールしなくとも、デフォルトでPowerShell 7が利用できるようになるものとみられる。
PowerShell 7になるのは5月のアップデートか、またはそれ以降
現在の状況を整理すると、PowerShell 7がWindows 10に統合されることになるのは、早くても2019年5月のWindows 10アップデートからになるものと見られる。開発や統合、試験が間に合わなければさらに半年先といったことになるだろう。
何にせよ、個別にインストールすることなくWindows 10でPowerShell 7が利用できるようになるというのはよいことだ。macOSやLinuxのようなパッケージ管理システムが存在していないWindowsでは自分でアンインストール/インストールを実施してアップデートする必要があったので、Windowsアップデートで自動的にアップデートしてくれるようになれば、その方が手軽だ。
「PowerShell 7」への変更は正常な流れのように見える。遅かれ早かれ、この流れは起こっていただろう。MicrosoftはMicrosoft Edgeも含め、オープンソースソフトウェアコミュニティベースで開発されたものをWindows 10にどうやって統合していくかにチャレンジしている最中だ。PowerShell 7もそうしたプロダクトのひとつになるだろう。
最終的にアップデートのスタイルがどのような形になるのかはまだ未知数だが、これまでよりも早い頻度でユーザに最新版が届けられることにはなりそうだ。
この発表から読み取るべきはLinux
今回の発表で特に注目しておきたいのは、PowerShell Coreで増加しているユーザのほとんどがLinuxユーザということだ。
WindowsにおけるPowerShell Coreのユーザはそれほど増加していない。macOSでの利用はまだまだ絶対数が少ない。これに対してLinuxにおけるPowerShell Coreの利用は増加の一途をたどっている。すでに初期の段階でユーザの数はWindowsを越えており圧倒的だ。LinuxでPowerShell Coreを使うユーザが増えているのである。
今回の発表からはどういったユーザがLinuxでPowerShell Coreを使っているのかはわからない。Windowsユーザや管理者がLinuxでシェルとしてPowerShell Coreを使っているのかもしれないし、生粋のLinuxユーザが新しいシェルとしてPowerShell Coreを試しているのかもしれない。どっちにせよ、グラフを見る限りではPowerShell Coreの開発においてLinuxというプラットフォームはますます重要になっていくものとみられる。