高速検索ツール ripgrep
以前、howm で ag (The Silver Searcher) を使う という記事を書きました。しかし ag を使っていても、howm のメモが数千を越えるとそれなりに検索に時間がかかるものです。それに ag はバグが多いという問題もあります。そんな時、るびきちさんのブログ 見て ripgrep なるツールがあることを知りました。
初めて ag の検索を見た時、その速度に驚いたものですが、ripgrep は更にその数倍の速度を叩き出しています。ag でもうこれ以上劇的なパフォーマンスの向上はないだろうと思い込んでいましたが、まだこれだけ改善の余地があった事には驚きです。実際に使ってみても、おっ!と思うくらい速いのが実感できます。
ripgrep の高速化の一番の理由は Rust の正規表現ライブラリによるもののようです。Rust は安全性、速度、並列性に特化したプログラミング言語です。
Linux, Mac, Windows 用のバイナリイメージ及びソースコードが以下のサイトでリリースされています。Windows 用はMinGW版とMSVC版があり、それぞれに32bit、64bit版が用意されています。
https://github.com/BurntSushi/ripgrep/releases
また 作者のサイト でベンチマークや高速化のためのテクニックが紹介されてます。
howm で使ってみる
さて、この ripgrep を、Emacs のメモ書きツール howm で使ってみようと思いました。ripgrep には豊富なオプションがあり、grep との互換性も高いので、ag の時のような苦労はありません。常にファイル名を表示するという -H オプションも用意されています。(ag の時、一番苦労した点です。)実際やってみるとほとんど苦労なく動かすことができました。既に howm が動いている環境があれば、以下の設定を追加するだけで ripgrep で検索できます。
(setq howm-view-use-grep t)
(setq howm-view-grep-command "rg")
(setq howm-view-grep-option "-nH --no-heading --color never")
(setq howm-view-grep-extended-option nil)
(setq howm-view-grep-fixed-option "-F")
(setq howm-view-grep-expr-option nil)
(setq howm-view-grep-file-stdin-option nil)
rg (rg.exe) は予め PATH の通ったディレクトリに配置するか、howm-view-grep-command にフルパス名を設定してください。
以下の環境で動作確認しました。
- Windows10 Pro 64bit
- NTEmacs 25.1 64bit (IMEパッチなし)
- howm 1.4.4-snapshot
- ripgrep 0.2.3 64bit (MinGW版、MSVC版両方で確認)
使ってみると実に快適です。howm は Emacs の中でも最も grep を酷使するパッケージです。なのでこれ、絶対に使ってみるべきです。
次世代の検索ツール
この ripgep、リリースされたばかりとういうこともあり、まだあまり知られていません。最初のリリースが2016年9月、つい最近です。その後怒涛のようにアップデートが繰り返されています。この記事を書いている最中にも新しいバージョン(0.2.3)がリリースされました。Emacs インタフェースもまだ ripgrep.el という、とりあえず検索ができるというものが、Melpa にある程度です。そのうち helm インタフェースなども出てくることでしょう。
こんなのが出てくると、もはや ack や ag は出番が無くなるような気がします。ripgrep は次の世代の検索ツールとしてこれからどんどん活躍することでしょう。
joya shoes 364w9hbtkt744 outdoor,INSOLES,Joya Shoe Care,walking,fashion sneaker,boots joya shoes 313e3vdiek721
返信削除