PowerShell 7リリース間近

Microsoftは2019年12月16日(米国時間)、PowerShellのリリース準備版となる「PowerShell 7.0.0 RC1」を公開した。これが最後の準備リリースになると見られており、2020年1月にはPowerShell 7.0.0の一般公開が予定されている。PowerShell 7はこのところ新機能の追加が続いていたが、一般公開を目前にして今回のリリースはバグ修正などが主な内容となっている。

  • PowerShell 7.0.0 RC / Windows 10

    PowerShell 7.0.0 RC / Windows 10

PowerShellを巡る状況はこの2、3年で大きく変わってきた。これはWindowsだけのことと思うかもしれないが、Linuxにも広がっている。特にAzureやDockerなどでLinuxを利用している場合、PowerShellは操作用のスクリプトとして利用する機会が増えるだろう。

したがって、このタイミングで現在のPowerShellを巡る状況を整理しておくことは、2020年以降のWindowsとLinuxを利用する上で有益だ。

最新版は「Windows PowerShell 5.1」

PowerShellはもともとWindows専用の管理者向けシェルとして開発された。見た目はUNIX系のシェルやインタラクティブシェルのように振る舞っている。しかし、中身はオブジェクト指向プログラミング言語だ。.NET Frameworkをベースとして開発されており、機能はC#に導入されているものがPowerShellにも導入されている。

このPowerShell、現在では「Windows PowerShell」という名称で呼ばれている。最新版は「Windows PowerShell 5.1」であり、Windows PowerShellはこのバージョンが最後のバージョンになると見られている。Microsoftは既にWindows PowerShellの開発終了を発表しており、今後バグ修正やセキュリティフィックスなどは行われるかもしれないが、新機能の追加や新しいバージョンの開発は行われないことになっている。

  • Windows PowerShell 5.1 / Windows 10

    Windows PowerShell 5.1 / Windows 10

Windows 10に導入されているのもWindows PowerShellだ。これにより、Windows PowerShellは互換性のためだけにメンテナンスされていく存在になると思われていたが、MicrosoftがPowerShellをオープンソース化するという発表を行い、状況は変わっていった。

Windows PowerShellのオープンソース版「PowerShell Core 6」

Microsoftはここ数年、基盤技術の一部をオープンソース・ソフトウェア(OSS)として公開する取り組みを続けている。そうした技術の中に.NET Coreがある。.NET Frameworkのオープンソース版といえる.NET Coreが登場したことで、.NET Frameworkを基盤として開発されてきたソフトウェアのオープンソース化も進めやすくなった。そういった取り組みの一つがPowerShell Coreだ。

PowerShell Coreは.NET Coreをベースにして開発されたPowerShellの実装系で、Windows PowerShellのオープンソース版と言えるものになっていった。Windows PowerShellとPowerShell Coreの大きな違いは、PowerShell CoreがOSSである点と、macOSやLinuxといった他のオペレーティングシステムをサポートしている点にある。

  • PowerShell Core 6 / macOS Catalina

    PowerShell Core 6 / macOS Catalina

.NET Frameworkと.NET Coreに100%の互換性はない。このため、Windows PowerShellとPowerShell Coreにも非互換の部分が存在している。しかし、Microsoftの想定を越えてか、PowerShell Coreにはよいエコシステムが生まれていった。特にLinuxでの利用が増加していったことが指摘されている。

Windows PowerShell 5.1は互換性の目的で残り続け、よりアドバンスドなユーザーはPowerShell Coreを使うといった状況が続くと思われたが、ここでまた新たな動きが出てきた。Microsoftが、PowerShell Coreの次のバージョンをWindows PowerShell 5.1の後継として取り込むと発表したのだ。

Windows PowerShell 5.1の後継として「PowerShell 7」登場

MicrosoftはPowerShell Core 6.2の次のバージョンをPowerShell Core 6.3やPowerShell Core 7とはせず、「PowerShell 7」にすると発表。さらに、このバージョンをWindows PowerShell 5.1の後継にすると説明した。1周回って、また名称もPowerShellに戻ってきた。これが状況をややこしくしている。

ここで状況を整理すると、次のようになる。

  • Windows 10における正式はPowerShell実装系は、現在の「Windows PowerShell 5.1」から、2020年1月に公開が予定されている「PowerShell 7」へ移り変わる
  • PowerShell 7はOSSとして開発されており、Windowsプラットフォームのみならず、macOSやLinuxでも利用できる
  • PowerShell 7はWindows PowerShell 5.1と互換性を確保しつつ、プログラミング言語として新たな機能を導入している
  • PowerShell 7は.NET Core 3.1を基盤として開発されている。今後は.NET 5をベースにしていくことが予定されている
  • PowerShell 7の開発は今後もOSSモデルで進められる

MicrosoftはMicrosoft Azureを提供するようになってから、他のオペレーティングシステムのサポートを積極的に進めている。なぜなら、AzureでWindows以外のオペレーティングシステムも使われるためだ。LinuxやFreeBSDをサポートするなどして、こうしたオペレーティングシステムを利用するユーザーの取り込みを進めている。

PowerShell 7はそうしたゲストオペレーティングシステムや、Dockerといったコンテナを管理するためのインタフェースとして利用することも予定されている。つまり、PowerShell 7はWindows 10やWindows Serverのみならず、LinuxサーバやDockerコンテナを管理するインタフェースとして利用されるシーンが増えることが想定されている。LinuxだからPowerShellは関係ない、という状況ではなくなっていくかもしれないわけだ。

LinuxにおけるPowerShell 7のサポートは改善が続いている。今後の展開を考えると、いままでPowerShellを使ったことがないのであれば、PowerShell 7を機に使ってみるとよいのではないかと思う。PowerShell 7は複数のオペレーティングシステムで利用できるシェルとして今後採用シーンが増えることが予想される。