開発者は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は、かなりの強敵となるに違いない。
この連載の記事
-
第187回
iPhone
NFCの世界を一変させる!? iOS 11「Core NFC」の提供開始が意味するもの -
第186回
iPhone
Appleと「4K HDR」 - iOS 11で写真/動画を変える「HEIF」と「HEVC」 -
第185回
iPhone
iPhone 7搭載の「A10 Fusion」「W1」は何を変えるか -
第184回
iPhone
オープンソース化された「PowerShell」をMacで使う -
第183回
iPhone
アップル製デバイス連携の鍵、「Continuity」とは? -
第182回
iPhone
DCI-P3準拠へと歩むiPhone/iPad - WWDC基調講演で秘められた新技術は、ここにある(2) -
第181回
iPhone
WWDC基調講演で秘められた新技術は、ここにある(1) -
第180回
iPhone
WWDC直前、買い替え前にマイMacのココをチェック -
第179回
iPhone
私がiTunesを使わなくなった5つの理由 -
第178回
iPhone
今あえてiPhone「Live Photos」を知る - この連載の一覧へ