docker run: MeCab を使う

dictav
m0blog
Published in
3 min readOct 15, 2018

多くの有名なOS(ディストリビューション)にはパッケージマネージャがあり、有志が公開しているプログラムを簡単にインストールすることができます。macOS には homebrew というパッケージマネージャがあります。

インストールしたプログラムが単体のコマンドとして使えるようなものはそれで良いのですが、MeCab のようにコマンドの他に辞書に依存するようなプログラムは環境を構築するのが難しい人もいます。このような場合は公開されている MeCab の Docker コンテナを使うのが良いでしょう。私が作成した MeCab の Docker イメージを共有します。

https://hub.docker.com/r/dictav/mecab/

IPA辞書とJuman辞書に対応したバージョンを公開しています。以下のように利用することができます。

IPA辞書

$ echo 'カレーライス' | docker run --interactive dictav/mecab:0.996-ipa.20070801
カレーライス 名詞,一般,*,*,*,*,カレーライス,カレーライス,カレーライス
EOS

Juman辞書

$ echo 'カレーライス' | docker run --interactive dictav/mecab:0.996-juman.20130310
カレーライス 名詞,組織名,*,*,*,*,*
EOS

このように辞書を変えて結果を見たいときに、環境を構築したり、設定を変更する手間を省けるので便利です。

ただし、この方法はコンテナを都度起動する必要があるためネイティブで実行するよりもかなり遅いです。大量のファイルを MeCab で解析してファイルに保存するような、何度もコマンドを実行する必要のある用途には向きません。このような場合は mount オプションで対象のファイルをコンテナと共有し、sh コマンドなどでコンテナに接続して中でシェルスクリプを実行するなどしてください。

$ docker run --interactive --tty --mount type=bind,source=$PWD,target=/work dictav/mecab:0.996-juman.20130310 sh
# do something

あるいは、コンテナをバックグラウンドで起動し、docker exec コマンドを実行するのも良いかもしれません。 docker run コマンドを都度実行するよりもずっと速く動作します。

$ docker run --detach --name mecab-bg dictav/mecab:0.996-ipa.20070801
$ echo ‘カレーライス’ | docker exec --interactive mecab-bg mecab

オリジナルの辞書やユーザ辞書を使いたい場合など別途ビルドした辞書を内包する Docker イメージを作成するか、mount オプションで辞書をコンテナと共有し、設定を書き換えるなどして利用してください。Docker イメージの作成の仕方は別の記事で取り上げます。

MySQL や Redis などDB、Python や Ruby の特定のバージョンなど普段使うわけではないが開発用途でインストールしておく必要のあるものも Docker で実行すると自分の環境が汚れなくて良いです。

--

--

dictav
m0blog
Editor for

Go/Objective-C/Ruby dictav=ShintaroAbe 1981,scotch,coffee,bloodhitrstybutchers,elliotsmith,saga,Myth2,raymondcarver