このページの本文へ

前へ 1 2 次へ

Apple Geeks 第177回

「Windows Subsystem for Linux」はOS Xのライバルとなるか?

2016年04月15日 10時00分更新

文● 海上忍(@u_shinobu)、編集●ハイサイ比嘉

  • この記事をはてなブックマークに追加
  • 本文印刷

開発者は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におけるCygwinとInterixサブシステムの概念図

 Windows Subsystem for Linuxは、いわば「Linuxサブシステム」だ。LinuxのシステムコールをWindowsのものにリアルタイム変換することで、Linuxバイナリのネイティブ実行を可能にする。POSIX/Interixサブシステムでは、Linuxと同じアプリケーションが動作することはあっても、ソースコードからコンパイルしなければならなかったが(バイナリ非互換)、今度のLinuxサブシステムでは「Bash on Ubuntu on Windows」としてUbuntu用にビルドされたバイナリがそのまま動作する。

Windows Subsystem for Linuxは、LinuxのシステムコールをWindowsのものにリアルタイム変換することで、Linuxバイナリの実行を可能にする(画像はChannel 9より)

 思うに、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は、かなりの強敵となるに違いない。

gitやaptなどの開発関連ツールも十分テストされているとのことだ(画像はChannel 9より)


前へ 1 2 次へ

カテゴリートップへ

この連載の記事

ASCII.jp RSS2.0 配信中