米マイクロソフトがBash on Windowsを発表、その目的はWindows 10次期バージョンに搭載

米マイクロソフトは2016年3月30日(米国時間)、同社が米サンフランシスコで開催したカンファレンス「BUILD 2016」において、Windows 10上でBashシェルを動かすデモを披露した。これは、米Canonicalとの協力によって同社が開発したもので、2016年夏に正式提供開始予定のWindows 10新バージョンでサポートされるという。

» 2016年03月31日 12時28分 公開
[三木 泉@IT]

 米マイクロソフトは2016年3月30日(米国時間)、同社が米サンフランシスコで開催した「BUILD 2016」において、Windows 10上でBashシェルを動かすデモを披露した。これは、米Canonicalとの協力によって同社が開発したもので、2016年夏に正式提供開始予定のWindows 10新バージョンでサポートされるという。

 このデモは、Windows 10のスタートメニューで「bash」とタイプすると、Windowsコマンドプロンプトでbashが立ち上がり、Ubuntuのユーザースペースが利用できるようになるというもの。ポイントは、Linuxの環境をシームレスに利用できることだ。Windows上で、仮想マシンとしてLinuxを動かすことはできるが、これでは使い勝手が悪い。いったんLinux仮想マシンに遷移して利用しなければならないし、仮想マシンを動かすオーバーヘッドがあるため、軽快に操作できるとはいえないからだ。このデモでは、あたかもWindowsがLinuxに変身したかのように、Linuxの各種ツールを直接使える感覚だ。

 どういう仕組みなのか。また、マイクロソフトがこうしたツールを出す目的は何か。米マイクロソフトのスコット・ハンセルマン(Scott Hanselman)氏のブログポストおよび米Canonicalのダスティン・カークランド(Dustin Kirkland)氏のブログポストに基づき、紹介する。

 ハンセルマン氏は、「VMでBashやUbuntuを動かしているわけではない。ネイティブなBash LinuxバイナリがWindowsそのものの上で動いている。(中略)awk、sed、grep、viなどのLinuxツールが全て使える。高速で軽量だ。各種バイナリは、apt-getでダウンロードして使える。Linuxの場合と同様だ。なぜなら、これはLinuxだからだ。Ruby、Redis、emacsなどその他のツールも、apt-getでダウンロードできる。私のように、多様なツールを使う開発者にとって、素晴らしいことだ」と書いている。

カークランド氏のブログポストより

 Canonicalのカークランド氏は、LinuxのシステムコールをWindows OSのシステムコールにリアルタイム翻訳する技術だと説明する。

 「『これは仮想マシンとしてUbuntuが動くというだけなの?』 違う、仮想マシンでは全くない。ハイパーバイザでVMとしてブートされるLinuxカーネルは存在しない。Ubuntuのユーザースペースだけだ。『それなら、Ubuntuがコンテナとして動くということ?』 いや、違う。コンテナでもない。UbuntuバイナリがWindows上で直接動いている。『では、cygwinみたいなもの?』 いや、違う。Cygwinはオープンソースのユーティリティをソースからリコンパイルし、Windowsでネイティブに動かす。ここではビットレベル、チェックサムレベルで寸分たがわないUbuntu ELFバイナリをWindows上で直接動かすという話をしている。『では、Linuxのエミュレータのようなもの?』 だんだん近づいてきた。マイクロソフトの優秀な開発者チームが、マイクロソフトリサーチの技術を生かして、LinuxのシステムコールをWindows OSのシステムコールにリアルタイム翻訳する技術を開発してきた。Linuxギークは、これをWINEの逆のようなものだと考えればいい。マイクロソフトは『Windows Subsystems for Linux』と呼んでいる(現時点ではオープンソースではない)」

 マイクロソフトがWindows Subsystems for Linuxを出した目的について、マイクロソフトのハンセルマン氏は次のように記述している。

 「これはLinuxサーバだとか、サーバのワークロードの話ではない。ワークフローの一環としてLinuxツールを使いたい、あるいは使わなければならない開発者に焦点を当てたリリースだ」

 ハンセルマン氏はブログポストで、apt-getしたRedisをスタンドアロンモードで動かし、その一方Visual StudioでRedisキャッシュを使うASP.NETアプリを書く例を紹介している。アプリを書いた後、Azure Redis Cacheを使うアプリとして、これをMicrosoft Azureにデプロイできるとしている。「このように、とても自然なワークフローが実現できる」と同氏は書いている。

 Windows Subsystems for Linux はまだ完全なものではないとCanonicalのカークランド氏は書いている。tty、vt100、byobu、screen、tmuxなどについては、改善作業が進められているという。

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。