docker上のUbuntu16.04 LTSコンテナへのMeCabのインストール

# はじめに
python3でMeCabが使いたくてインストールしようとしたらエラーが発生したのでその対処法について。
自分がハマったことをメモ。

祝！初投稿☆

# 実行環境
Ubuntu 16.04 LTS
docker 18.03-ce
NVIDIA docker 1.0.1
python 3.6.3

Ubuntu上にdocker(NVIDIA docker)を入れ、コンテナ上の環境で作業しています。

# 事象
フツーにpipでmecab-python3をインストールしようとしたら

```
pip install mecab-python3
```

>Collecting mecab-python3
>  Downloading mecab-python3-0.7.tar.gz (41kB)
>    100% |################################| 51kB 5.7MB/s
>    Complete output from command python setup.py egg_info:
>    /bin/sh: 1: mecab-config: not found
>    Traceback (most recent call last):
>      File "<string>", line 1, in <module>
>      File "/tmp/pip-build-toa0xj3z/mecab-python3/setup.py", line 41, in <module>
>        include_dirs=cmd2("mecab-config --inc-dir"),
>      File "/tmp/pip-build-toa0xj3z/mecab-python3/setup.py", line 21, in cmd2
>        return cmd1(strings).split()
>      File "/tmp/pip-build-toa0xj3z/mecab-python3/setup.py", line 18, in cmd1
>        return os.popen(strings).readlines()[0][:-1]
>    IndexError: list index out of range
>
>    `----------------------------------------`
>Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-build-toa0xj3z/mecab-python3/

こんな風に「list index out of range」が出た。

# 対処法

```
apt-get install libmecab-dev
```

してから

```
pip install mecab-python3
```

これでインストールは完了。

# 確認

```python
import MeCab
```

↑問題なし

```python
mecab = MeCab.Tagger('-Ochasen')
```

>Traceback (most recent call last):
>  File "<stdin>", line 1, in <module>
>  File "/root/miniconda3/envs/linebot/lib/python3.6/site-packages/MeCab.py", line >307, in __init__
>    this = _MeCab.new_Tagger(*args)
>RuntimeError

あれ？？動かない。。。
どうやら以下も必要みたい。

```
apt-get install -y mecab mecab-ipadic
```

。。。その後もうまくいかず。。。

ギャー、やり直し！！
コンテナ破棄！こういうときにコンテナの良さがでますね。

# 最終的に
もう一度コンテナを作成し直してから

```
apt-get install -y mecab libmecab-dev mecab-ipadic-utf8
```

現在の状態を確認

```
mecab -D
```

>filename:       /var/lib/mecab/dic/debian/sys.dic
>version:        102
>charset:        UTF-8
>type:   0
>size:   392126
>left size:      1316
>right size:     1316

インストール場所を「/var/lib/mecab/dic/」配下にすることを確認できたので

```
git clone https://github.com/neologd/mecab-ipadic-neologd.git
cd mecab-ipadic-neologd
bin/install-mecab-ipadic-neologd -n -p /var/lib/mecab/dic/mecab-ipadic-neologd
```

「/var/lib/mecab/dic」に移動して

```
ll
```

>drwxr-xr-x 6 root root 4096 Mar 14 13:26 ./
>drwxr-xr-x 3 root root 4096 Mar 14 13:16 ../
>lrwxrwxrwx 1 root root   34 Mar 14 13:16 debian -> /etc/alternatives/mecab-dictionary/
>drwxr-xr-x 2 root root 4096 Mar 14 13:16 ipadic/
>drwxr-xr-x 2 root root 4096 Mar 14 13:16 ipadic-utf8/
>drwxr-xr-x 2 root root 4096 Mar 14 13:16 juman/
>drwxr-xr-x 2 root root 4096 Mar 14 13:26 mecab-ipadic-neologd/

ちゃんと入っています。
次は辞書切り替えのために「/etc/mecabrc」のdicdirを上述のものに変更します。
>dicdir = /var/lib/mecab/dic/mecab-ipadic-neologd

現在の状態を確認

```
mecab -D
```

>filename:       /var/lib/mecab/dic/mecab-ipadic-neologd/sys.dic
>version:        102
>charset:        UTF8
>type:   0
>size:   4549446
>left size:      1316
>right size:     1316

ちゃんと切り替わってます。

```
mecab
```

>ドナルド・トランプ
>ドナルド・トランプ      名詞,固有名詞,人名,一般,*,*,ドナルド・トランプ,ドナルドトランプ,ドナルドトランプ
>EOS

良さげです。
最後にpython3に対応させます。

```
pip install mecab-python3
```

では試してみます。pythonを起動してから以下を実行します。

```python
import MeCab
mecab = MeCab.Tagger('mecabrc')
text = 'ドナルド・トランプ'
mecab.parse(text)
```

>'ドナルド・トランプ\t名詞,固有名詞,人名,一般,*,*,ドナルド・トランプ,ドナルドトランプ,ドナルドトランプ\nEOS\n'


ふー、やっと出来た！

# 参考
以下のサイトを参考にさせて頂きました。
[MecabをインストールしてPythonから使ってみた](http://own-search-and-study.xyz/2017/06/28/mecab%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%97python%E3%81%8B%E3%82%89%E4%BD%BF%E3%81%86%E6%96%B9%E6%B3%95%E3%81%BE%E3%81%A8%E3%82%81/)
[64bitのWindowsにMeCabをインストールする](http://tadaoyamaoka.hatenablog.com/entry/2017/04/24/205509)
[buntu 17.04 に mecab をインストール](https://qiita.com/ekzemplaro/items/c98c7f6698f130b55d53)