高品質パソコン バッテリーを販売します, 全く新しい商品を保障できます, 人気バッテリーを購入すれば、30%の割引を楽しみます, 即日発送,すべてのノートPCバッテリーは1年の保障があるから、ご安心して購入してください。 denchiya.org バッテリー専門店!


Windows 10 Anniversary Updateで搭載した「Bash」を使ってみた!

2016年08月31日 14:09

Windows 10 Anniversary Updateのローリングアウトが8月2日に始まった。10のユーザーであればほぼアップデート済みではないだろうか。いろいろ機能追加された中、今回はBash(バッシュ)に焦点を当ててご紹介したい。

 基本的に開発者向けの機能ということもあり、開発者以外の方々にはつまらない、もしくは分かりにくい内容であり、また既にBashを試しているユーザーには既知の内容になることを予めご了承頂きたい。

筆者最近の開発環境

Windows 10 Anniversary UpdateのBashをご紹介する前に、筆者最近の開発環境の話を書いてみたい。実はこのBashの登場によって、今後大きく変わる可能性があるからだ。

 昔はWin32やiOS/Androidアプリの開発を行なっていたが、最近はApache、PHP、Perl、MySQLなどを主に使った、つまり古典的なLAMP(Linux、Apache、MySQL、PHPの略)によるサイト系の開発が多くなっている。個人が扱える内容なので小規模だが、新規サイトの構築、古いサイトのリニューアル、企業の社内システム、開発元が居なくなり手の付けられなくなったシステムの解析/機能追加……などが主要どころだ。

 これらの開発を行なう場合、新規以外、作動中のオリジナル環境をそのまま触るわけにも行かず、別途サーバーを構築し、その上で開発/デバッグ/テスト、そしてそれを終えてからリリースという手順になる。

 この時、別途構築するサーバーは、大きく分けて2パターンに分かれ、1つは仮想マシン上にほぼ同じ環境を構築するケース。これはメールシステムやcron、シェルスクリプトなど、作動環境も密接に関係している場合だろうか。

 もう1つはXAMPP(Windows上での簡易LAMP環境)的なものやOS Xを使うケース。これはApache+MySQL+PHP(+Perl)だけで完結し、環境依存しない場合となる。Windows上の疑似LAMP環境としてXAMPPより更にLinuxに近いCygwinやcoLinuxもあるが、これは(最新版は分からないが)初期版の印象がピンとこなかったこともあり、実務レベルでは使ったことがない。

 手掛けるシステムは後者が多く、通常OS Xをそのままサーバーにして(ベースがUnixなので、Linux系と相性が良い上、専用のパッケージなども用意され環境が整っている)、Parallels DesktopでWindowsを作動させ、その上で開発することがほとんど。全てをOS X上で行なわないのは単に慣れの問題だ(笑)。一時、素のWindowsでXAMPPを動かしていたが、互換性などいろいろ問題もあり、今では使わなくなってしまった。

 ただこれはOS Xありきなので、Windows単独で……とした場合、仮想PC上でLinuxを動かすか、XAMPP的なものを使うかの2択となり、メモリとストレージが少ないノートPCなどでは前者は不利。しかし後者だと互換性の問題が……と、悩ましい話となる。もちろんクラウドを使う手もあるが、今度はネットありきとなり、デモなどをしにくかったりする場合もある。

 そんなところに登場したのが、Windows 10 Anniversary Updateで搭載したBashだ。当初は「Bash on Ubuntu on Windows」と言うネーミングから、PowerShell的にBashが動くだけかと思っていたが、実は“ほぼ”Ubuntuに近い≒「Ubuntu on Windows」である。

Windows 10 Anniversary UpdateでBashの動かし方

BashはWindows 10 HomeでもProでも対応しているが、標準では入っておらず、セットアップする必要がある。手順は以下の画面キャプチャを参考にして欲しい。再起動が2回あるがインストール方法自体は簡単だ。途中でユーザー名とパスワードを設定する部分があるが、これはWindowsと独立しているので、同じにする必要はない。

作動ロジック自体は、ここを参照して欲しいが(特にビデオ)、WindowsのカーネルにLinuxのサブシステムが入り、それを通じてUbuntuとやり取りしているイメージとなる。

Bashだけでなく、Ubuntuで作動するコマンドやパッケージも利用可能

さてBashが起動して、psやtopなどありがちなコマンドを打ったところ普通に動く。以下、簡単なコマンドの結果だ。Ubuntu自体のバージョンは“14.04.5 LTS”となっている。

sshを使って外部サーバーへの接続も問題なくでき、これなら長年愛用していたPuTTYも必要なくなりそうだ。

 いろいろ操作してLinuxとして特に違和感なく、しかも仮想PCと違って速いので、ならばと、「sudo apt-get update」(aptライブラリインデックスを更新)を動かしたところ、更新が始まり、「sudo apt upgrade」でインストール済のパッケージが最新版にアップデートされた。つまりUbuntuのパッケージ管理ソフトが使える上、バイナリ互換ということになる。

とすれば、冒頭で書いた筆者が使うLAMP環境を構築できるだろうと、まず「sudo apt-get install apache2」でapacheをインストール、「sudo service apache2 start」でapacheを起動、Windows上のWebブラウザでURLにlocalhostを指定すると……Apacheの初期画面が表示された。

 「これは!」と、続いてMySQLとPHPをインストール(「sudo apt-get install mysql-server」と「sudo apt-get install php5 php-pear php5-mysql」)。PHPの作動確認は/var/www/htmlにindex.php(中は<?php phpinfo(); ?>)を作り、Apacheをリスタート。Webブラウザでlocalhost/index.phpにアクセスすると、MySQL対応のPHPが作動していることが確認できた。

 ここまで動けば最後の仕上げとして、phpMyAdminを「sudo apt-get install phpmyadmin」でインストール。Webブラウザでlocalhost/phpmyadminにアクセスすると、ログイン画面が表示された。ここにMySQLインストール時に設定したID/PWで管理画面へ入ることができた。

つまり、WindowsにおけるBashは、GUIなしのUbuntuと何ら変わらないのだ。1つだけ注意したいのは、Bashを閉じるとこれらのプロセスも終了するため、恒久的なサーバー用途には向いておらず、プログラミング/デバッグ中など一時的な用途に限られる。この辺りの事情もあって、「Bash on Ubuntu on Windows」となったのだろう。

 量が多過ぎて全てのコマンドやパッケージは触れないが、少なくともLAMP環境は「Bash on Ubuntu on Windows」で作動することが確認できた。加えてaptによる管理ができるので、パッケージのアップデートなども容易。XAMPP以上で、OS Xに匹敵(?)する環境が、Windows 10だけで整うことになる。

 ここによると、優先順位が高いものとして、

が上がっているので、開発において必要なものは概ね動くと思って良さそうだ。

 若干気になるのは、コンソール上の日本語表示が途中で切れたりすること。ただ、現状β版扱いなので、取り立てて騒ぐほどでもないだろう。

Windowsならではの使い勝手

これで、例えばサイト構築であれば/var/www/html下へ必要なファイルを置けば動くことになるが(仮想ホスト機能も使える)、問題はそのファイルの転送方法だ。FTPサーバーやSMBサーバーをインストールしてWindowsから転送してもいいが、それではあまりにも芸がない。実は、このシステムならではのアクセス方法がある。

 実は、「Bash on Ubuntu on Windows」のファイルシステムの実態は、

C:¥Users¥[Username]¥AppData¥Local¥lxss¥rootfs

ここに配置されているのだ。また通常Linuxのファイルシステムは、所有者/所有グループ/その他とパーミッションを付けアクセス制限をしているが、Windowsからこのパスを使ってのアクセスはパーミッションを無視し、そのままオープンすることが可能だ(Windowsからはフルコントロールになっている)。

従って、デスクトップ上に/var/www/htmlへのショートカットを置き、サクッとフォルダを開き、使い慣れた秀丸やVisual Studio Codeなどで編集可能。これはある意味、刺激的な開発環境と思われるがいかがだろうか。

 ただ、通常/homeにあるユーザーHomeと、/rootは、コンソールからアクセスすると、その通りなのだが、Windowsから先の方法でアクセスすると、実体は、¥lxss¥home、¥lxss¥rootとなって、一レベル上のフォルダに収められている(/mntも同様に¥lxss¥mnt)。おそらく仮想的に別パーティションとしているのだろう。

 上記したphpMyAdminまでインストールした状態でrootfs下の使用容量は約800MB。大して消費していない。またCPUとメモリの占有/使用率も何かが動かない限りBashを入れる前と変わらず。つまり、かなり軽い実装と言える。また仮想PCではないので、性能も素のWindowsと同レベル。実践的に使えそうだ。

 しかし、まさかMicrosoftがWindowsでUbuntuに対応するとは、スティーブ・バルマーCEOの頃には考えられなかったことだ。さすが開発者出身のナデラと言ったところ。デベロッパ向けのカンファレンスでも、来場者の多くがMacBookを持っていたが(見た目はともかくとして、多くは筆者と同じ理由“=開発環境に適している”だろう)、Bashの実装によって、今後徐々に減って行くかも知れない。

 以上のように、Windows 10 Anniversary Updateで搭載した「Bash」は、単にBashが作動するというレベルではなく、GUIなしのUbuntuがほぼそのまま動き、バイナリレベルで互換性が保たれるレベルにまで仕上がっている。

 WindowsにXAMPPや仮想PCへLinuxを入れ開発して来た開発者には、ちょうど中間的な存在となり、選択肢が増え嬉しい限り。筆者も既に一部実験的に使っているが、β版が取れる頃までに全面的にOS X+Windowsから乗り換えようかと考え中だ。と言うより既にOS Xに作った環境を引っ越すのが面倒なだけなのだが……。

—————

戻る