Windows用のgrepツールを利用してみようと、いくつか検討をしてみました。
Windows Explorerでもよいのですが、時間がかかることと、結果が見づらいのですよね。
試したのはTresGrep、KWIC Finder4、VxEditor、秀丸、Migrep2です。(エディタも含まれています)
理由としては、翻訳時に、過去に同じような文・フレーズを訳したことがあったなぁ、とか、過去に翻訳したかは覚えていないけれど、もしあったら流用しよう、ということが多々あるためです。
翻訳作業を少しでも楽に効率的に行えないか、と日々考えています。便利に使えるツールを探したり、自動化できるところは自動化したり、と。
検討したツールを列挙
以下、5つのgrepツールを試してみました。
1. TresGrep
- TresGrep サポートページはこちら
- フリーウェア
- HNXgrepの刷新改善バージョン
- 機能がとても充実している (一方で、初めてのユーザーには多すぎるかも)
- 起動後にフリーズ、使用中にも何度もフリーズして使えなかったため断念
2. KWIC Finder 4
- KWIC Finder 4 - ファイルGREP検索・KWIC索引・テキストビューアのページはこちら
- シェアウェア
- xdoc2txtが内蔵
- シェアウェアなので、まだ試していない
3. VxEditor
- VxEditor 2種類の正規表現検索やキーマクロなどを搭載した多機能テキストエディタのページはこちら
- フリーウェア
- 動作OS: Windows Vista/XP/Me/2000/NT/98/95だった (Windows10が含まれず) ため、断念
4. 秀丸
- 秀丸エディタの紹介ページはこちら
- シェアウェア
- grep検索結果がエディタ上に表示されるので、使いにくさから断念 (ただしエディタとしては優秀)
5. Migrep2
- Migrep2の紹介ページはこちら
- フリーウェア
- 機能が多すぎず、またUIもシンプルで分かりやすい
Migrep2を試すことに決定
大きな期待を込めて、Migrep2をインストールしました。
Migrep2のインストール手順
1. Migrep2単体のインストール
1. MiGrep2 Ver1.7(2021/7/16) のページ (下の方) > 最新版をダウンロードします。
2. ダウンロードしたファイル (migsetupXX.zip) を解凍します。
3. MiGSetup64.exeを実行します。
4. インストール先を指定し、[次へ] をクリックします。
4. しばらくすると、インストールが完了するので、[OK] をクリックします。
5. セットアップウィザードの画面でも、[完了] をクリックします。
Migrep2自体は、ここまででインストール完了です。
2. xd2txlib.dllファイルをインストールフォルダへコピー
6. xdoc2txtのダウンロードページを開き、[ダウンロード] のセクションから、最新バージョンをダウンロードします。
7. xdoc2txtをインストールする前に、同じページにある、「Visual Studio 2015、2017、および 2019 用 Microsoft Visual C++ 再頒布可能パッケージ」をダウンロードし、インストールします。
8. 上記 6. でダウンロードしたxd2tx220.zip (または、xd2tx220_x64.zip) を解凍し、dllフォルダ内にある、xd2txlib.dllをインストールフォルダ (手順4.で指定したフォルダ) にコピーします。
3. Migrep2の設定
9. Migrep2を起動し、[オプション]⇒[設定パネル] をクリックし、[xdoc2txtを使用する]にチェックを入れた上で、手順8.でコピーした.dllフォルダの場所を指定します。
10. [OK] ボタンをクリックして、インストールと設定すべて完了です。
Migrep2の使い方
1. 検索対象のフォルダ、検索対象の語句を指定し、(必要に応じて) サブフォルダも検索するかを選択し、Enterキーを押すと、検索が実行されます。
2. 画面下側に、ヒットしたファイル数、検索時間が表示されます。
強制終了がランダムに発生
上記のように、正常に結果を返してくれるときと、動きが止まったかと思うとアプリケーション画面が音もなく終了するときがあります。
エラーの内容
Windowsボタン右クリック⇒[イベントビューアー]⇒[Windowsログ]⇒[Application] を見ると、アプリケーションエラーとして、下記が出ていました。
障害が発生しているアプリケーション名: MiGrep2.exe、バージョン: 1.7.0.0、タイム スタンプ: 0x60f0da5c
障害が発生しているモジュール名: ntdll.dll、バージョン: 10.0.19041.1466、タイム スタンプ: 0xe2f8ca76
例外コード: 0xc0000374
例外コード0xc0000374は、ヒープ破壊のようですが、開発元に問い合わせるべきだそうで。
もう一つは、Windows Error Reportingとして、
障害バケット 1339674349948644293、種類 4
イベント名: APPCRASH
応答: 使用不可
クラッシュしたのがログに残っていました。
xdoc2txtが原因か
指定したフォルダのサブフォルダやそこに含まれるファイルの上限数が関係しているわけではなさそうでした。
試しに、上記の「Migrep2のインストール手順」> 「3. Migrep2の設定」で設定した、xdoc2txtのチェックボックスをオフにした状態で、同じフォルダの検索を走らせたところ、クラッシュは発生しませんでした。
xdoc2txtは、メモリとCPUを大量に消費しているようなので、それが関係していそうです。
メモリクラッシュの可能性
xdoc2txtの開発者、hishidaさんのブログ記事には、クラッシュの可能性について記載がありました。
xdoc2txtはVer2.0以降 Dll版も提供しているが、DllImportでdllをロードした場合(例1)、アプリケーション終了までDllのメモリは解放されない。通常は問題ないが、連続して大量のファイルのテキスト抽出を行うと、入力ファイルによってメモリーリークが生じたり、クラッシュしたりする場合があることがわかった。
hishidaの開発blog
実際に、Migrep2でどのようにxdoc2txtが呼び出されているか、Migrep2の開発者に問い合わせる必要がありますが、Migrep2というよりは、xdoc2txtの呼び出し方か、xdoc2txtの内部的なものに関係がありそうです。
まとめ
何の解決にもなっていませんが、今後、新たに分かったことがあれば、追記しようと思います。
PCを新しく買って試す方が早いかもしれませんが。。。