そうなるとあいうえお順で(というかエクスプローラーの一覧から)目視で探すのは限界だし、ディレクトリツリーを順番に見ていくのも大変なので、
mktexlsr
のようにファイル名のデータベースを作っておいてそのデータベースから探すのが早そう、ということでPythonでls-R作成スクリプトと検索スクリプトを作りました。検索文字列はreモジュールで正規表現検索するので、一部だけでも適当に検索してくれます。ものすごく便利で自画自賛なんですが、検索したいファイル名(の一部)を入力するときにいちいち「かな漢字変換」をオン・オフするのは面倒だな、と思って、そういえばローマ字入力で日本語文書を検索できるヤツがあったな、と思い出し……。
NamazuじゃなくてKakasiじゃなくてMeCabじゃなくてなんだっけ……とグーグル先生にお尋ねして。
名前が思い出せなかったので、そういえばVimを2chブラウザにするヤツを作っていた人がいて、その人がなんかやってたような、なんだっけ、としばらく考えて検索して、"Chalice"をようやく思い出して。そこから "Migemo" にやっとたどり着きました。
Migemo自体はRubyで記述されているようで、かつすでにメンテされていないようです。もったいない。でも自分はRubyはわからないので、KaoriYaのKoronさんがCに移植されたC/Migemoを見てみようか、と。
Cで実装されてDLLにされているなら、Pythonから呼び出すのもできそうだし、Neovimにも組み込むことができそうです。まあ、後者は追々というとこで、とりあえずPythonから呼び出してローマ字で日本語検索!をやれれば楽ができるかなということで、ぼちぼちいじってみようと思います。
C/MigemoはGitHubで公開されていましたので、これをクローンして作業開始です。
README_j.txtには以下のようにVisualC++でのビルド方法が書かれています。
(Windows + VisualC++) 次のコマンドでRelease/内にmigemo.dllとcmigemo.exeが作成されます。 > nmake msvc 必要な外部プログラム、ネットワーク接続が揃っていれば > nmake msvc-dict で辞書ファイルをビルドできます。migemo.dswをVC++6.0で開き、ビルドする方法も あります。以上が終了すれば次のコマンドでテストプログラムが動作します。 > .\build\cmigemo -d dict/migemo-dict現在の環境はVisualC++を含んだVisualStudio 2019なので、そのままビルドと思いきややっぱりエラーが出ました。
幸い
\compile\vs2003
に.sln
ファイルがあったので、それをVS2019で開くとそのままソリューションを変換してくれて一応プロジェクトは開けました。そのままF6キーでビルドすると、
"afxres.h"
がインクルードできない、というエラーが出てビルドできません。ぐぐってみると、
"winres.h"
に書き換えるといいよ、ということだったので仰せに従い無事ビルド終了。ついでにプロジェクトにx64ビルドも追加してこちらもビルド。一応どちらもDebugビルドにしておきました。お次は辞書ファイルの生成ですが、Makefileを追いかけるとnkfではなくiconvやqkcを使っていました。qkcは今どうしてるんだろう…。
それはさておき。
現状ではnkfを使っているので、nmakeと同じことをコマンドプロンプトからそのままやりました。
dict
ディレクトリで、$ for %i in (base-dict,SKK-JISYO.L,*.dat) do ( More? nkf -w %i > utf-8.d\%i More? ) $ for %i in (base-dict,SKK-JISYO.L,*.dat) do ( More? nkf -e %i > euc-jp.d\%i More? )で辞書の文字コード変換は終了。
早速テストしてみます。cmigemoディレクトリに移動して、
$ compile\vs2003\x64\Debug\CMigemo.exe migemo_open("./dict/migemo-dict")=000002AB8059C640 clock()=0.128000 QUERY: aho PATTERN: (アホ|アホ|信天翁|阿[房呆]|あほ|aho|aho) QUERY: clean PATTERN: (clean|ク(レン(ザー|ジング)|リ(ンナップ|ー(ン|ナー|ニング)))|c(ェア[ンノネヌニナ]|ェア[ンノネヌニナ]|ぇあ[んのねぬにな]|lean)) QUERY: nihongo PATTERN: (ニホンゴ|ニホンゴ|日本(語|極道史|合成ゴム)|にほんご|nihongo|nihongo) QUERY: 日本語 PATTERN: 日本語 QUERY: QUERY:おお、返り値がそのまま正規表現として利用できるようなパターンになっています。なにげに信天翁(アホウドリ)が混じっているのが点数高いです。そして、かな漢字変換で日本語を食わせるとそのまま返ってきます。
これは結構使えるのでは……。 辞書の指定とかエンコードとか出力形式とかはどうなんだろうと見てみると、
$ compile\vs2003\x64\Debug\CMigemo.exe -h cmigemo - C/Migemo Library 1.3 Driver USAGE: compile\vs2003\x64\Debug\CMigemo.exe [OPTIONS] OPTIONS: -d --dict <dict> Use a file <dict> for dictionary. -s --subdict <dict> Sub dictionary files. (MAX 8 times) -q --quiet Show no message except results. -v --vim Use vim style regexp. -e --emacs Use emacs style regexp. -n --nonewline Don't use newline match. -w --word <word> Expand a <word> and soon exit. -h --help Show this message.また、辞書を指定するとそのエンコードで結果が返ってくるようです。
$ compile\vs2003\x64\Debug\CMigemo.exe -w aho (アホ|アホ|信天翁|阿[房呆]|あほ|aho|aho) $ compile\vs2003\x64\Debug\CMigemo.exe -d dict\utf-8.d\base-dict -w aho (繧「繝斈菫。螟ゥ鄙-髦ソ[謌ソ蜻・|縺ゅ⊇|・・ス茨ス楯aho) $ compile\vs2003\x64\Debug\CMigemo.exe -d dict\utf-8.d\base-dict -w aho | nkf -s (アホ|信天翁|阿[房呆]|あほ|aho|aho) $ compile\vs2003\x64\Debug\CMigemo.exe -d dict\euc-jp.d\base-dict -w aho (・「・ロ|ソョナキイァ|ー、[ヒシハ|、「、ロ|」皀陬・aho) $ compile\vs2003\x64\Debug\CMigemo.exe -d dict\euc-jp.d\base-dict -w aho | nkf -s (アホ|信天翁|阿[房呆]|あほ|aho|aho)受け取り側に都合のよいエンコードの辞書を使えば良さそうです。
0 件のコメント:
コメントを投稿