開発者はWindowsマシンへ移行するか?
Windows Subsystem for Linuxが注目を集める理由は、LAMPやCygwin/MinGWのような環境をWindows上に実現するという即効性あるメリットはもちろんのこととして、遂に「実用的なUNIX互換レイヤー」がWindowsに実装されたからという点も大きい。
MacのコラムでWindowsの歴史を振り返るというのもおかしな話だが、この際簡単に説明しておこう。Microsoftは、Windows NTのときPOSIX互換サブシステムを実装、UNIXからの移行をアピールしていた。シェルを含むCUI環境として「Windows Services for UNIX」(SFU)を有償ながら提供したほか(後年無償化された)、当時管理者/開発者必携とされた書籍「Windows NTリソースキット」にGNU製コマンドを収録するなど、UNIXを強く意識する傾向は当時から存在した。
NTのPOSIX互換サブシステムはユーザランドに実装されていたこともあり、パフォーマンス的に厳しく、機能的にも制限が大きかった。だからだろうか、NTのPOSIXサブシステムはXPで消え、それを引き継いだInterixサブシステム(外部から買収した技術)もWindows 8.1で消滅している。Win32サブシステムのもとでPOSIX互換層として動作するCygwinも、エミュレーションのオーバーヘッドが大きく十分なパフォーマンスを発揮できるとは言い難い。
Windows Subsystem for Linuxは、いわば「Linuxサブシステム」だ。LinuxのシステムコールをWindowsのものにリアルタイム変換することで、Linuxバイナリのネイティブ実行を可能にする。POSIX/Interixサブシステムでは、Linuxと同じアプリケーションが動作することはあっても、ソースコードからコンパイルしなければならなかったが(バイナリ非互換)、今度のLinuxサブシステムでは「Bash on Ubuntu on Windows」としてUbuntu用にビルドされたバイナリがそのまま動作する。
思うに、Macが多くの開発者に受け入れられた理由のひとつは、Windowsではついに(業務レベルでは厳しいという意味で)花開かなかったUNIX互換レイヤーにある。OS Xは出発時点からしてUNIXであり、UNIXとしての機能・資産を必要とする層にはそれが大きな魅力だったが、Windows Subsystem for Linuxの登場により状況は変わった。
つまり、今後はWindowsも事実上Linux/UNIX互換OSとして運用可能になるわけで、シェル(bash)が動作するなどという話はほんの小手調べだ。RubyやPythonといったスクリプト言語も、Windowsのローカルルールを気にする必要はなくなるし、膨大な数が存在するUbuntu用パッケージも「apt」コマンドで簡単に追加できる。
今後開発者がWindowsマシンへシフトするかというと、それはまた別の話だが、スクリプト言語を用いたラピッドプロトタイプ型開発にはCUI/シェルが必須であり、Windows Subsystem for Linuxがプラスに作用することは確か。Surfaceのような競争力あるデバイスが続々登場すれば、開発環境としてのMacの立ち位置にも変化が生じることだろう。OS Xと同じ土俵で戦えるようになったWindowsは、かなりの強敵となるに違いない。