LoginSignup
2
0

More than 3 years have passed since last update.

MeCabをWindowsでポータブルに使えるようインストールする

Last updated at Posted at 2020-05-12

はじめに

これは個人的な思いなんですが、
いろんなソフトウェアを使うときにレジストリに設定が書き込まれて云々という、
インストーラー形式の導入方法はポータビリティが失われるので苦手です。

おそらく似たような思いを抱いている人もいると思うので、
今回はMeCabをローカルにインストールする方法を記載します。

(毎度のことながらもっといい方法あったら教えて下さい)

実現方法

Windows 10 64bitの環境でやっています。

MeCab のダウンロード

まずは普通にMeCabのインストーラをダウンロードします → ダウンロード

image.png

Universal Extractor のダウンロード

様々なアーカイブを展開できる、Universal Extractorをダウンロードします。

Universal Extractor Download Archive

私はインストーラーが嫌いなので(←)、「uniextract161_noinst.rar」をダウンロードしました。
ダウンロードしたrarファイルを展開すればスタンドアロンで起動する Universal Extractor が起動できます。

image.png

本家からフォークした「UniExtract2」というOSSもあるみたいですが、こちらは試していません。

MeCab の展開

先程ダウンロードした uniextract を使用して、
MeCabのインストーラを展開します。

image.png

上記のように、入力と宛先を指定して展開すると、

image.png

上記フォルダのように展開されます。

install_script.iss をテキストエディタなどで参照すると、
インストーラがどういったことをやっているのかが大体わかって面白いです。

特に、89行目以降の

[Registry]
Root: HKLM; Subkey: "software\MeCab"; ValueName: "mecabrc"; ValueType: String; ValueData: "{app}\etc\mecabrc"; Check: "IsAdmin"; Flags: uninsdeletekey 
Root: HKCU; Subkey: "software\MeCab"; ValueName: "mecabrc"; ValueType: String; ValueData: "{app}\etc\mecabrc"; Flags: uninsdeletekey 

mecabrc(mecabの設定ファイル)の場所をレジストリに登録しているのでしょうか。興味深いですね。

MeCab のコピー

展開したフォルダ内の {app} フォルダの中身をお好みの場所にコピーします。
私はWinPythonというものを使用しているので、WinPython展開フォルダの t/MeCab にコピーしました。

image.png

今後、{installDir}{app} の中身をコピーした場所として説明をしていきます。適宜読み替えてください。

辞書の作成

次に、install_script.iss にある、

Filename: "{app}\bin\mecab-dict-index.exe"; Parameters: "-f SHIFT-JIS -t {code:GetCharCode}"; WorkingDir: "{app}\dic\ipadic"; 

と同様の内容をやっていきます。

しかし、その前に

Source: "{app}\bin\libmecab,2.dll"; DestDir: "{app}\bin"; DestName: "libmecab.dll"; 

の内容もやる必要があるので、
{installDir}\bin\libmecab,2.dll の名前を {installDir}\bin\libmecab.dll にリネームします。

そしてコマンドを以下の通り実行します。

cd {installDir}\dic\ipadic
set PATH=%PATH%;%CD%\..\..\bin
mecab-dict-index -f SHIFT-JIS -t UTF-8

すると、{installDir}\dic\ipadic フォルダに

  • matrix.bin
  • sys.dic
  • char.bin
  • unk.dic

の4ファイルが生成されると思います。

(コマンド内の「UTF-8」は環境に応じて変更してください。コマンドプロンプトで使う場合は「SHIFT-JIS」がよいと思います。)

この状況で mecab コマンドを実行すると

param.cpp(69) [ifs] no such file or directory: c:\Program Files\mecab\etc\mecabrc

というエラーが出ると思います。
これは、mecabrc (mecabの設定ファイル)を読み込む先として、デフォルトでは「c:\Program Files\mecab\etc\mecabrc」が設定されていることに起因します。

MECABRC の設定

ソースコードを読むと、
mecabrcの場所については環境変数 MECABRC を見ていることがわかりますので、 該当箇所

set MECABRC={installDir}\etc\mecabrc

とすることで参照先を変更することができます。
%HOME%\.mecabrc を読むようにもなっていますので、そちらに {installDir}\etc\mecabrc の内容をコピーしてもよいでしょう。)

実行してみる

PATHMECABRC が設定されている状態であれば、mecab コマンドを使用することができます。

image.png

以上で、導入完了になります。

オマケ(WINPYTHON環境で自動で使えるようにする)

導入は完了したわけなんですが、いちいち PATHMECABRC を設定するのも面倒なので、
WinPythonを立ち上げたときに自動で設定が行われるようにします。

(ほとんど、JuliaをWinPythonに導入するのと同じやり方です → 過去記事

起動時の環境変数設定

{winPython}/settings/winpython.ini ファイルを編集し、
[environment]に PATHMECABRC の行を追加します。

[environment]
PATH=%PATH%;%WINPYDIR%\..\t\MeCab\bin
MECABRC=%WINPYDIR%\..\t\MeCab\etc\mecabrc

私は、{winPython}\t\MeCab\ に MeCab をコピーしたので、上記のような設定になりました。

WinPython Command Promptで使う

image.png

コマンドプロンプトで使えるようになります(結果は割愛)。

Jupyter Lab で使う

image.png

JupyterLab でも当然使うことができます。

image.png

いいぞ。

おわりに

「はじめに」にも書きましたが、私はインストーラー形式がすごく苦手です。

というより、WinPythonで色々使用できるように構築しておくと、
コピペでそのまま環境を移動できるようになるなど、非常に便利ですので、おすすめです。

dockerなどで開発環境が一発で整う昨今に、
「フォルダのコピペで環境が複製できる」というポータビリティの確保の仕方もどうかとは思いますがw

参考文献

2
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0