スポンサーリンク

2016年10月12日水曜日

次世代の高速検索ツール ripgrep を howm で使う

高速検索ツール 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 は次の世代の検索ツールとしてこれからどんどん活躍することでしょう。

1 件のコメント :