Ubuntu on Windowsってデータ分析系エンジニアにとって実は超便利～Mecab(linux版)をいれてみた～

#はじめに
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で簡単に使えないよね？
以前、これを使うために２，３日悩んでMecab側のソースを一部変更したりしてやっと使えるようにした記憶があります。
でもLinuxだと難なく動きます。
あとなぜかユーザー辞書が使えなかったり、、、不明なエラーがよくでたり。。。

こういうのってLinuxで使っておけば無駄な調査の時間を省けるはずです。
なので、割り切ってもうLinuxでやることにしてます。

1.まずWindows 10のBuildバージョンをBash on Ubuntu on Windowsが使えるバージョンにする
僕が試したのは、Build 14385です。

2.コントロールパネルの「Windows機能の有効化または無効化」を起動し、
Windows Subsystem for linux(Bata)を選択して、インストール。
※再起動が必要です。

![image](https://qiita-image-store.s3.amazonaws.com/0/74428/5ba8a9ef-58ff-636b-f98b-db63c1c78c70.png)


3.すると「Bash on Ubuntu on Windows」というアプリが、スタートメニューにでてきます。

![image](https://qiita-image-store.s3.amazonaws.com/0/74428/f435180b-ff53-8a5d-2e4c-89d56353b9c2.png)


4.起動するとコンソールが起動します。初めて起動したときは、Ubuntuのインストール処理が動作します。
5.インストールされると以下のようなコンソールになります。

![image](https://qiita-image-store.s3.amazonaws.com/0/74428/8a7766ba-8347-a328-871f-1006673abfb4.png)


6.そして、Mecabをインストール。ここからは、Ubuntuにインストールする手順と同じです。
なので、インターネット上に山のようにインストール手順があります。

```bash:
$ 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もインストールする

```bash:
$ sudo apt-get install python2.7
```

8.インストール後、テキストエディターのnanoでPythonコードを書いて、Mecabを使う

```bash:
$ cd /home/tomohiku
$ nano
```

・Pythonコード

```py:mecab.py
# coding: utf-8
import sys
import MeCab

m = MeCab.Tagger ("-Ochasen")

print ("私の名前はトモです。")
print m.parse("私の名前はトモです。")
```

9.Pythonを実行する

```bash:
$ python mecab.py
```

![image](https://qiita-image-store.s3.amazonaws.com/0/74428/3062a890-b81c-5785-48f1-071de4711871.png)


まだ、ときどき文字化けしたり、文字が切れたりします。
この辺りのバグが早くなくなることに期待ですね。

#おわりに

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実行環境が組み合わさると
わりといいもんだなと実感できた実験でした。