Windows 10 Creators Update はまもなくリリースされる予定で、Windows Subsystem for Linux (Bash on Windows または Ubuntu on Windows とも呼ばれる) に大幅な改善が加えられます。
念のため言っておきますが、これはエミュレーションや仮想マシンの実行によって行われるのではなく、システム コールをリダイレクトすることによって行われます。
Microsoftは本当にLinuxを愛しているのだろうか?明確に答えるのは難しいが、同社はLinuxの将来に大きな期待を抱いており、それに抵抗しないほど賢明だ。
Azure 上の VM の約 3 分の 1 は Linux を実行しており、SQL Server for Linux がリリースされ、次世代 .NET プラットフォーム (.NET Core) は Linux 上で実行され、Visual C++ は Visual Studio 2017 (近日リリース予定) で Linux をターゲットにすることができ、Xamarin 経由で Linux ベースの Android 用のモバイル アプリケーションをコンパイルできます。これらは、Linux が Microsoft プラットフォームに浸透していることを示すいくつかの例です。
Windows Subsystem for Linux (WSL) の目的は何でしょうか?Microsoft は主に開発者を念頭に置いています。Web プラットフォームやモバイル プラットフォーム向けの開発では、Windows のせいで開発が難しくなります。MAX_PATH(パスの長さが 260 文字に制限されており、Java や Node.js などのツールで問題が発生する)、パス区切り文字として異なる文字が使用される、といった煩わしい問題があります。また、ほとんどのオープンソース ツールはまず Linux 用にコンパイルされ、Windows への移植は後回しにされるか、そもそも移植されていないという単純な事実もあります。Mac では OS X が UNIX ベースなので、開発は比較的容易です。
iOS または Mac 自体をターゲットにするには依然として Mac が必要ですが、Microsoft は WSL によってその他の障害のほとんどが取り除かれることを期待しています。
WSLはまだベータ版ですが、Creators Updateで重要な新機能が追加されました。その一つは、WindowsとBashの相互運用性が向上したことです。WindowsのコマンドプロンプトからLinuxコマンドを実行するには、次のように入力するだけです。
bash -c
[Linuxコマンド]
完全なパスとコマンドを入力するだけで、Bash から Windows 実行ファイルを実行することもできます。
ping
などのネットワークコマンドがifconfig
期待通りに動作するようになりました。コンソールはマウスと24ビットカラーに対応しました。また、多数のバグ修正と新しいシステムコールの追加により、Go、Ruby、Java、Node.jsなどの言語を含む、より多くの言語が動作するようになりました。Ubuntu 16.04 (Xenial) がデフォルトでインストールされるようになりました。
Creators Updateでは、SSH(セキュアシェルサーバー)とGDB(GNUデバッガー)の信頼性が向上し、Visual C++ for LinuxのリモートターゲットとしてWSLを設定できるようになりました。このシナリオでは、Visual C++がエディター兼ビジュアルデバッグツールとして機能しますが、コンパイルとビルドは「リモート」Linuxシステム(この場合はWSL)で実行されます。これは便利な機能ですが、Linux VMやリモートLinux PCを使用するほど信頼性が高くはありません。
Windows 10 上の Visual Studio で Linux アプリケーションを完全にコンパイルおよびデバッグできます (クリックして拡大)
もう一つの注目すべき機能は、Ubuntuデスクトップを実行できることです。これはまだプラットフォームの公式機能ではなく、別途Windows Xサーバー(私たちはVcXsrvを使用しました)をインストールする必要がありますが、十分なスペックのPCであれば問題なく動作します。Windows 10のマルチデスクトップサポートと併用することで、1つのデスクトップでLinux、もう1つのデスクトップでWindowsを動作させることができます。Microsoftがこの方向性をさらに進めれば、Windows 10にLinux GUIアプリケーションのサポートが統合されることも容易に想像できます。
WSLは実際の業務に十分使えるのでしょうか?意見は様々です。「私は行末の修正やtarファイルの抽出によく使っています」と、Chefのシニアソリューションアーキテクトであるジョー・ガーディナー氏は言います。こうした用途ではWSLは優れており、開発者の負担を軽減してくれます。
一方、英国のIT Jobs Watchの創設者であるジョン・グラント氏は、「Windows上のUbuntuのBashはNginxをサポートしていません。そのため、開発にはあまり役に立ちません。リモートXenServerの方が柔軟性が高いでしょう…おそらく次のバージョンで。」と述べています。
Grant氏はまだCreators Updateを試していないため、プラットフォームの改善に伴い彼の見解が変わる可能性があります。最新ビルドでの簡単なテストでは、Nginxは問題なくインストールされ、動作することが確認されました。
Windows Subsystem for Linux 上で動作する Nginx
WSL は素晴らしい成果ですが、問題は、WSL を単純なユーティリティを超えて使用する場合は、開発者が「これは自分のコードのバグなのか、それとも WSL のバグなのか?」と自問しない程度に優れている必要があることです。
ほとんどの開発者が Mac または Linux PC を使用することになった場合、ユニバーサル Windows プラットフォーム (UWP)、Azure、Visual Studio Online などが注目される可能性は低くなるため、Microsoft にとってリスクは高くなります。
Microsoft には現在、Visual Studio Code や Visual Studio for the Mac などのクロスプラットフォーム ツールがありますが、Windows 上の Visual Studio ほど洗練されたものはありません。®