PowerShell をオープン ソース化、Linux で利用可能に

8月 18, 2016 に投稿済み

Technical Fellow, Microsoft Enterprise Cloud Group

今日、マルチ プラットフォーム、マルチ クラウド、マルチ OS が当たり前の世の中になっていることは紛れもない事実です。そうした中で新しい課題として、ありとあらゆる作業を共同で行えるツールが求められています。マイクロソフトは、どのプラットフォームの管理も、あらゆる場所から、あらゆるデバイスで、Linux または Windows を使用して行える管理ツールをお客様に提供することに全社で取り組んでいます。このイノベーションをよりオープンでユーザー視点のアプローチからお届けすることは、私にとって日々の仕事の中でのやりがいの 1 つとなっています。

Satya Nadella が「Microsoft loves Linux」というメッセージを発信していますが、これが今までにないレベルで実現しています。Azure 上の VM の約 3 分の 1 は Linux であり、Azure Marketplace でサードパーティが提供している IaaS の約 60% がオープン ソース ソフトウェア (OSS) です。マイクロソフトは、お客様に豊富な選択肢を提供するために業界内のパートナーと強力な関係を築いており、これまでに SQL Server on Linux やオープン ソース化した .NET を提供してきました。OSS の開発に最適なプラットフォームにするために、Bash を Windows 10 に追加しました。さらに、業界全体にわたる多数のオープン ソース プロジェクト (OpenSSH や FreeBSD、Mesos、Docker、Linux、およびその他多数) にも積極的に参加し貢献しています。

そしてこのたび、マイクロソフトはさらに次のステップへと踏み出し、PowerShell がオープン ソース化され、Linux 上で使用可能になったことを報告させていただきます。詳しくない方にご説明すると、PowerShell とはタスク ベースのコマンド ライン シェルおよびスクリプト言語であり、.NET Framework を基盤としています。これを使用することで、Windows (今後は Linux も) とその OS 上で実行されるアプリケーションの管理を制御、自動化できます。 今回の記事では、これまでの経緯について、また Microsoft Operations Management Suite で PowerShell エクスペリエンスがどのように強化されるかについて詳しくお伝えします。

PowerShell のオープン ソース化の道のり

まずは、PowerShell の Linux 対応とオープン ソース化の経緯についてご説明します。

その昔、あるお客様が不満を抱いていました。

Monad (PowerShell の前身) の時代、私は大企業のお客様の経営陣に向けてデモを行ったことがあります。Monad についてはご好評をいただきましたが、お叱りの声もいただきました。

実装されている言語について問われ、C# である旨を答えると、ご不満のようでした。訳がわからず、何が問題なのかたずねると、「Monad はアプローチとしては実に正しいものであるし、全社で標準化したいところだが、.NET は Linux で使用できないため採用できないのだ」とのことでした。

かつて Microsoft は、.NET、さらには PowerShell の動作対象として Windows のみに焦点を当てていました。しかし、マイクロソフトは変わりました。次の写真がよく表しているように、Satya Nadella の方針と Azure は、よりオープンで顧客中心の考えに転換しています。

Microsoft loves Linux_2

Microsoft は、Windows と同様に Linux も、お客様のすべてのワークロードを実行できるプラットフォームとして選んでいただけるようにしたいと考えています。この新しい考えに基づいて、.NET チームは .NET Core を Linux に対応させ、さらに PowerShell でも Linux への対応を実現しました。Linux 版 PowerShell により、同一のユーザーが同一のツールを使用してあらゆるものをあらゆる場所から管理できるようになります。PowerShell はまず Ubuntu、CentOS、Red Hat で使用可能になり、Mac OS X でも実行できます。今後はさらに対応プラットフォームを広げていく予定です。GitHub からアルファ版のビルドをダウンロードして、ソース コードをチェックアウトすることができます。

これからは Windows ユーザーも Linux ユーザーも、既に PowerShell をお使いの方もこれから使用するという方も、ひいてはアプリケーション開発者の皆様も、高機能でインタラクティブなスクリプト言語を使用しながら、既存のツールで異種混在環境の自動化や構成管理を行えます。また、これまで別々に作業を行っていた Windows チームと Linux チームがより簡単に共同作業を行えるようになるため、今後 PowerShell のスキルはよりいっそう価値あるものとなります。

PowerShell の取り組みは始まったばかりであり、私たちにはまだまだ学ぶことがたくさんあります。当初は PowerShell の一部のみをオープン ソース化することから始め、成功させるには何が必要なのか、オープン ソース化の経験のある多数のパートナー様に相談しました。そこから学んだのは、個々のユーザーが Git を使用してコードの確認や変更を行え、すべてのコンパイルを各自のコンピューターで実行でき、すべてのテストを実施して変更による悪影響がないことを確認できるようにすることがきわめて重要であるということです。これを実現するには、マイクロソフトのエンジニアリング、開発、テストの各システムに大きな投資を行う必要がありました。また、コミュニティの協力がスムーズに製品に反映されるように、ガバナンス モデルを定めて役割や責任、プロセスを明確化しました。

PowerShell チームは常にコミュニティに寄り添っていることを自負していますが、今回ソース コードを公開してオープン ソース開発モデルを採用したことで、さらに次のレベルへと進歩し、RFC やさまざまな問題についてコミュニティとさらに緊密に連携でき、コミュニティの協力をダイレクトに受けられるようになります。また、オープン ソース化によりコミュニティが拡大され、万事においてそうであるように、共同体が形成されています。この共同体が、エクスペリエンスの向上には重要な要素です。マイクロソフトは Chef、Amazon Web Services、VMware、Google、およびその他数多くのサードパーティ企業とパートナーシップを提携し、現在普及しているプラットフォーム全体にわたる高機能でシームレスなエクスペリエンスを開発すべく取り組んでいます。

PowerShell を Linux に対応させるにあたって、私たちは自身がこのプラットフォームの第一のユーザーであるよう努め、アーキテクチャ、イディオム、既存のツールについて十分に熟知するようにしました。もともと PowerShell チームのほとんどのメンバーは Unix の使用経験がかなりあるため、さほど難しいことではなく、そうした知識が設計に活かされました。PowerShell には細かな変更が多数行われ、次の 2 点は大きな変更となりました。

  1. PowerShell Editor Service を作成しました。これにより、ユーザーはさまざまな種類のエディター (VS Code や Sublime など) で、Intellisense やデバッグ機能などによる優れた PowerShell スクリプト作成エクスペリエンスを得られます。
  2. PowerShell リモート処理プロトコル (MS-PSRP) を拡張し、OpenSSH をネイティブ トランスポートとして使用できるようにしました。これにより、転送プロトコルを SSH と WINRM から選択できるようになります。

初回リリースは「アルファ版」であり、コミュニティによりサポートされます。将来的には、オープン ソースをベースとしたマイクロソフト公式リリース バージョンの PowerShell を提供し、サポート対象となっている Windows または Unix 系 OS でご利用いただけるようにする予定です。マイクロソフト公式バージョンのリリース時期は、コミュニティからの意見や企業のニーズに応じて決定されます。皆様のご協力をよろしくお願いいたします。

Microsoft Operations Management Suite での PowerShell エクスペリエンスを拡張

今回の PowerShell のニュースに伴い、クラウド管理ソリューションである Operations Management Suite (OMS) でも機能が拡張されます。OMS では、Azure およびその他のクラウド全体のアプリケーションやワークロードを視覚化、制御できます。これに加えて、Linux サーバーと Windows サーバーの両方で PowerShell を使用する場合の顧客のクラウド エクスペリエンスを変革することができます。OMS Automation は、Azure による高度に利用可能でスケーラブルな管理サービスを通して PowerShell と Desired State Configuration (DSC) を強化します。ユーザーは Runbook、DSC 構成、DSC ノード構成などのあらゆる PowerShell リソースの作成や管理を、1 か所からまとめて視覚的に行うことができます。

OMS ハイブリッド Runbook ワーカーを使用すると、OMS Automation 機能を拡張して、オンプレミス環境を含むあらゆる環境の構成を適用、監視、更新することができます。このたびは、Linux 用 OMS 監視エージェントの一般提供が開始されました。これらを併用すると、豊富なインサイトに基づいて Linux ワークロードをリアルタイムに把握でき、発生した問題をすばやく解決することができます。

ぜひ Linux で PowerShell をお試しいただき、ご意見やご感想をお聞かせください。ここで、OMS Automation の詳細を確認することもできます。また、来週開催される LinuxCon では、Wim Coekaerts 氏の基調講演があります。Microsoft も PowerShell を展示するブースを設けます。私もデモを交えたセッションを行う予定です。ぜひご注目ください。

PowerShell を初めて使用する場合は、GitHub の Learning PowerShell リポジトリで学習を始めることをお勧めします。無料の Microsoft Virtual Academy オンライン コースもご利用いただけます。PowerShell 3.0 ジャンプ スタートの概要powershell.org/ で PowerShell コミュニティに参加することも、PowerShell チームのブログをフォローすることもできます。今後は、Linux コミュニティの要望 (サンプル提供など) にお応えしながら、これらを更新していく予定です。

これまで長きにわたる道のりでしたが、今後もたくさんのすばらしいニュースをお届けしてまいります。ぜひこのプロジェクトにご参加ください。私たちが一丸となれば、使うたびにうれしい驚きのある優れたツールを生み出せることでしょう。