はじめに
2016年4月のMiceosoftイベント Build 2016で発表されたBash on Ubuntu on Windowsですが、
発表した瞬間、会場ではハンパない歓声だったそうです。MSのエバンジェリストの人がいってました。
でも僕は「ふ~ん」くらいの感じで特に凄さがわからず、「別でLinux使えばいいじゃん」って感じで冷めた目でライブ中継をみてました。
でも、Windows InsiderファーストでリリースされているAnivesary Update相当のBuild 14385をインストールして、Bash on Ubuntu on Windowsを使ってみて、印象がかわりました。
これってめっちゃ便利じゃん!
なにが便利って、Windows のコマンドプロンプトのように超軽い感じでUbuntuがコンソールで動きます。
Windowsメインに使っている人にとってLinuxを別で用意するっていうと選択肢としては、
①AzureなどのCloudにLinuxのVMを作る
②Hyper-VでLinuxのVMをつくる
まぁ、だいたいこの二つだよね。
想像つくと思いますが、この二つって以外と面倒くさいです。
Cloudだと、VM起動停止しないとコストがかかるので、起動待ちが待ちきれくてストレスフル。
Hyper-Vは、端末のCPUとメモリを食うのであんまりやりたくない。(Hyper-VはWindowsの起動遅くなるし)
それを完璧に解決してくれているのが、Ubuntu on Windows。
コマンドプロンプトと同じく一瞬で起動します。
雰囲気でいうと、Visual Studioを立ち上げるのは遅くてイラッとするけど、
テキストエディターだと軽くてストレスがない感じに似ている。
そして、Windows側とファイルの共有も簡単にできて、いい感じです。
まだあまり研究できてないですが、
とりあえず、MecabとTensorFlowをいれてみましたが、動作は問題なさそうです。
データ分析系エンジニアにとって何が嬉しいか
データ分析でよく使われるようなツールって、
Linux版がメインになっていることが多いですよね。
例えば、RやPython、Mecab、Tensorflowなどなどなど。
これらはWindowsにも移植されてるのでいいじゃん?と思うかもしれないですが、
実はWindowsだと動かない機能が結構あったり、インターネットにLinux版の情報しかなかったりして、
めちゃめちゃ使いにくいです。
やっぱLinuxメインのツールは、不毛な障害調査を避けるためにもLinuxで使うべきだと僕は思ってます。
このUbuntu on Windowsはそのハードルを大きく下げてくれます。
そういう理由で、データ分析系エンジニアにとってうれしい機能だと思います。
Mecab(Linux版)をいれてみる
MecabってWindows版だと困ること多くないですか?
僕だけかな。。。
例えば有名なコーパスの「mecab-ipadic-neologd」ってWindowsで簡単に使えないよね?
以前、これを使うために2,3日悩んでMecab側のソースを一部変更したりしてやっと使えるようにした記憶があります。
でもLinuxだと難なく動きます。
あとなぜかユーザー辞書が使えなかったり、、、不明なエラーがよくでたり。。。
こういうのってLinuxで使っておけば無駄な調査の時間を省けるはずです。
なので、割り切ってもうLinuxでやることにしてます。
1.まずWindows 10のBuildバージョンをBash on Ubuntu on Windowsが使えるバージョンにする
僕が試したのは、Build 14385です。
2.コントロールパネルの「Windows機能の有効化または無効化」を起動し、
Windows Subsystem for linux(Bata)を選択して、インストール。
※再起動が必要です。
3.すると「Bash on Ubuntu on Windows」というアプリが、スタートメニューにでてきます。
4.起動するとコンソールが起動します。初めて起動したときは、Ubuntuのインストール処理が動作します。
5.インストールされると以下のようなコンソールになります。
6.そして、Mecabをインストール。ここからは、Ubuntuにインストールする手順と同じです。
なので、インターネット上に山のようにインストール手順があります。
$ cd /home/tomohiku
$ sudo apt-get install mecab libmecab-dev mecab-ipadic
$ sudo aptitude install mecab-ipadic-utf8
$ sudo apt-get install python-mecab
・参考サイト
https://gist.github.com/YoshihitoAso/9048005
※Linuxってパッケージマネージャがあって便利ですよねー。
7.Pythonもインストールする
$ sudo apt-get install python2.7
8.インストール後、テキストエディターのnanoでPythonコードを書いて、Mecabを使う
$ cd /home/tomohiku
$ nano
・Pythonコード
# coding: utf-8
import sys
import MeCab
m = MeCab.Tagger ("-Ochasen")
print ("私の名前はトモです。")
print m.parse("私の名前はトモです。")
9.Pythonを実行する
$ python mecab.py
まだ、ときどき文字化けしたり、文字が切れたりします。
この辺りのバグが早くなくなることに期待ですね。
おわりに
Microsoftは、CEOが代わってからOSSを受け入れ、自らのエコシステムに取り込むようになってきています。
たがしかし、OSSってLinux版が多いので、有名なソフトウェアは頑張ってWindows版を作ってリリースし、
対応していっていたのですが、すごく大変そうでした。
HDInsightとかはその最たるものかな。
なので、そもそもLinuxをWindows上で動かしてしまえば、いいんじゃね?
っていう思考でこの Bash on Ubuntu on Windows を作ったのかなと想像してます。
もちろんそれだけじゃないと思いますが。
今回触ってみて思ったのですが、LinuxのアプリがWindowsで動くってのは、
やってみるとめちゃくちゃ便利そう。
WindowsのVisual Studioから、LinuxのRエンジンやPythonエンジンを使ったり、
Visual StudioからLinuxのApacheにデプロイしたりできるようになるのかな。
Windowsの親しみやすさと、
LinuxのOSS実行環境が組み合わさると
わりといいもんだなと実感できた実験でした。