Python+MeCabの仮想環境をつくる

#手軽な仮想環境を用意する
個人で必要があったので、作成がてらメモ。
私はMacで構築していますが、Windowsの方はVagrantのインストールを前提条件とします。

#作業
##Vagrantの準備
###[Homebrew](https://brew.sh/index_ja.html)を入れる

```bash:bash
$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
$ brew doctor
```

###VirtualboxとVagrantを入れる

```bash:bash
$ brew cask install virtualbox
$ brew cask install vagrant
$ vagrant plugin install vagrant-vbguest
```
これで準備ができましたので、仮想マシン用のディレクトリを作成しておきましょう。
私はホームディレクトリ配下にwork/VMを作成し、その下にプロジェクトごとのディレクトリを配置することが多いです。
※今回はホームディレクトリ配下にwork/VM/pythonを作成した前提とします。

###作成したディレクトリに移動する

```bash:bash
$ cd ~/work/VM/python
```

##仮想マシンを作成する
- ボックスはubuntu/trusty64を指定

```bash:bash
$ vagrant init ubuntu/trusty64
$ vagrant up
$ vagrant ssh
```
マシンを立ち上げたらsshで接続しましょう

###pyenv（Pythonバージョン管理）を入れ、pythonのバージョンを指定する
####pyenvの依存パッケージを入れる

```bash:bash
sudo apt-get install -y git make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev curl llvm libncurses5-dev
```
####pyenvをインストール

```bash:bash
git clone https://github.com/pyenv/pyenv.git ~/.pyenv
```


####環境変数を追加

```bash:bash
cat << 'EOF' >> ~/.bashrc
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"
EOF
exec $SHELL -l
```

####インストールの確認

```bash:bash
pyenv -v
```

####Pythonのインストール

```bash:bash
pyenv install 3.6.2
pyenv global system 3.6.2
```

##MeCabのインストール
###MeCabとPythonバインドをインストール

```bash:bash
$ sudo apt-get install mecab libmecab-dev mecab-ipadic
$ sudo aptitude install mecab-ipadic-utf8
$ sudo apt-get install python-mecab
```


##拡張辞書MeCab-ipadic-neologdの適応
###依存パッケージのインストール
```bash:bash
$ sudo aptitude install mecab libmecab-dev mecab-ipadic-utf8 git make curl xz-utils file
```

###インストール
```bash:bash
$ git clone --depth 1 https://github.com/neologd/mecab-ipadic-neologd.git
$ cd mecab-ipadic-neologd
```

###インストール前にスワップ領域を作成する
```bash:bash
$ sudo dd if=/dev/zero of=/swapfile1 bs=1M count=2048
$ sudo chmod 600 /swapfile1
$ sudo mkswap /swapfile1
$ sudo swapon /swapfile1
```

###インストール
```bash:bash
$ ./bin/install-mecab-ipadic-neologd -n -a　
```
-aオプションは全部入り、通常インストール(-aなし)では一部辞書はインストールされない

###スワップ領域をアンマウント
```bash:bash
$ sudo swapoff /swapfile1
```
###MeCab-ipadic-neologdをデフォルト辞書に設定する
```bash:bash
$ sudo find / -name mecabrc
$ sudo vim /etc/mecabrc
```
※以下を変更
変更前：dicdir = /usr/local/lib/mecab/dic/ipadic
変更後：dicdir = /usr/local/lib/mecab/dic/mecab-ipadic-neologd

###辞書更新のスクリプトの作成（更新のときにスワップ領域をマウントする）
```bash:bash
$ sudo mv mecab-ipadic-neologd/ /usr/local/lib
$ vim update_neologd.sh
$ chmod +x update_neologd.sh
```
```vim update_neologd.sh```の書き込み内容は以下

```update_neologd.sh
#!/bin/sh

echo 'START install-mecab-ipadic-neologd'
echo '=================================='
echo '[--SWAPON--]'
sudo swapon /swapfile1
echo '[--UPDATE--] ./install-mecab-ipadic-neologd -n -a -y'
/usr/local/lib/mecab-ipadic-neologd/bin/install-mecab-ipadic-neologd -n -a -y
echo '[--UPDATE--]FINISHED install-mecab-ipadic-neologd'
echo '[--SWAPOFF--]'
sudo swapoff /swapfile1
echo '=================================='
```

これで一旦は作成完了です。
異なる環境の場合は、MeCabのインストール場所などを環境に合わせて変更してください。

#次回
MeCabを使ったAPIの作成までをまとめたいです。
flask+mod_wsgiを使う予定ですが、変わる可能性あり。
Markdownは書き慣れていないので、度々修正します。

#参考
https://github.com/neologd/mecab-ipadic-neologd/blob/master/README.ja.md
書籍：[スマートPythonプログラミング: Pythonのより良い書き方を学ぶ](http://blog.amedama.jp/entry/2016/03/13/234450)