anything 的絞りこみコマンド percol が migemo 対応しました
先日のエントリで percol というとっても便利なコマンドを紹介しました.migemo 対応してくれたら更に便利だなーと思っていたのですが,id:mooz さんがばっちり --match-method に migemo を追加して下さいました.
percol で migemo を使うには C/Migemo と PyMigemo を導入する必要があります.備忘として Ubuntu 11.10 とWidnows7 での導入方法を記しておきます.めんどくさいのでインストール場所は全部デフォルトの場所で,migemo の辞書の文字コードは utf-8 を使うことにします.
各ソフトウェアのバージョン
Ubuntu 11.10 に導入する
Ubuntu の環境は以下のようなになってます.
まずは cmigemo の導入です.KaoriYaさんからアーカイブをダウンロードしてきます.
$ wget http://cmigemo.googlecode.com/files/cmigemo-default-src-20110227.zip $ unzip cmigemo-default-src-20110227.zip $ cd cmigemo-default-src
このソースの中の src/wordbuf.c は limits.h をインクルードし忘れているので,以下のように修正します.
$ diff -u src/wordbuf.c.bck src/wordbuf.c --- src/wordbuf.c.bck 2012-05-11 21:52:44.006214700 +0900 +++ src/wordbuf.c 2012-05-11 19:40:39.310948000 +0900 @@ -9,6 +9,7 @@ #include <stdio.h> #include <stdlib.h> #include <string.h> +#include <limits.h> #include "wordbuf.h" #define WORDLEN_DEF 64
あとはビルドするだけです.
$ ./configure $ make gcc $ make gcc-dict; cd dict; make utf-8; cd .. # 辞書のビルド # make gcc-install
これで /usr/local/bin に cmigemo,/usr/local/share/migemo に辞書,/usr/local/lib に libmigemo.so がインストールされます.
次は PyMigemo を導入します.
$ wget http://www.atzm.org/etc/files/pymigemo/pymigemo-0.3.tar.gz $ tar xvf pymigemo-0.3.tar.gz $ cd pymigemo-0.3 $ python setup build # python setup install
これで無事ビルドされるはずです.
最後に percol を入れます.
$ git clone git://github.com/mooz/percol.git $ cd percol # python setup.py install
ビルドはこれだけです.あと設定ファイルが必要ですが,無駄に長くなるので前のエントリ]を見て下さい.
Windows7 64bit に導入する
Windows の環境は以下のようになっています.
- Windows7 64bit
- Cygwin 1.7.11
- python 2.6.7
- zsh 4.3.12
Cygwin は既に導入されている前提とします.私は Cygwin のもともと全パッケージをインストールしているので,以下の工程での細かい必要パッケージがわかりません.cmigemo も Windows用 dll ではなく,ソースからビルドします.
まずは cmigemo ですがすこし make のコマンドが変わるだけです.先程と同様に src/wordbuf.c の修正は必要です.
$ wget http://cmigemo.googlecode.com/files/cmigemo-default-src-20110227.zip $ unzip cmigemo-default-src-20110227.zip $ cd cmigemo-default-src $ edit src/wordbuf.c $ ./configure $ make cyg $ make cyg-dict; cd dict; make utf-8; cd .. # 辞書のビルド # make cyg-install
これで /usr/local/bin に cmigemo と cygmigemo1.dll,/usr/local/share/migemo に辞書,/usr/local/lib に libmigemo.dll.a がインストールされます.
次に PyMigemo をビルドします.先程とライブラリの名前が違うので,そのままではビルドできません.
$ wget http://www.atzm.org/etc/files/pymigemo/pymigemo-0.3.tar.gz $ tar xvf pymigemo-0.3.tar.gz $ cd pymigemo-0.3 $ python setup build running build running build_ext building 'migemo' extension (中略) gcc -shared -Wl,--enable-auto-image-base build/temp.cygwin-1.7.11-i686-2.6/pymigemo.o -L/usr/lib/python2.6/config -lmigemo -lpython2.6 -o build/lib.cygwin-1.7.11-i686-2.6/migemo.dll /usr/lib/gcc/i686-pc-cygwin/4.5.3/../../../../i686-pc-cygwin/bin/ld: cannot find -lmigemo collect2: ld returned 1 exit status error: command 'gcc' failed with exit status 1
setup.py を修正すればいいのかもしれませんが,わからなかったので手動で libmigemo.dll.a とリンクしてコンパイルします.
$ gcc -shared -Wl,--enable-auto-image-base build/temp.cygwin-1.7.11-i686-2.6/pymigemo.o \ -L/usr/lib/python2.6/config -L/usr/local/lib -lmigemo.dll -lpython2.6 \ -o build/lib.cygwin-1.7.11-i686-2.6/migemo.dll # python setup install
これでビルド完了です.
percol は先程と全く同じ工程で出来ますので省きます.
使ってみる
実際にしぼり込んでみます.
$ ls | percol --match-method migemo
前のエントリで作成した search-document-by-percol はドキュメントを絞り込みますが,これもばっちり日本語のパスが含まれていても絞り込んでくれるようになりました.1000以上の候補があってもサクサク絞り込んでくれますし,migemo かつ AND 検索できるようなドキュメント検索ツールは今までにないものだと思います.
zsh の履歴検索もできるかと思ったのですが,日本語を使ったコマンドが .zsh_history に正しく保存されず文字化けっぽくなってしまいます.どなたか解決策をご存知の方に教えていただきたい!
おわりに
この機能が実装されて本当に便利すぎて滂沱の涙が出てきました.mooz さん本当にありがとうございます.もう拝まずにいられません.ぜひぜひこのエントリを見た人も使ってみてください.