re:Grep マニュアル

User Manual — re:Grep v1.0

# 大量のファイルを、ストレスなくgrepするためのツール

よく調べるフォルダの情報をあらかじめDB化し、ファイル検索とgrepを高速に。 grep結果に対してさらにgrepする「絞り込み」や、結果からの外部エディタ起動にも対応します。

## 01概要とコンセプト

re:Grep は、指定したフォルダ配下のファイル一覧とテキスト内容を SQLite の DB にキャッシュし、 そのDBに対して高速にファイル検索・grepを行うためのデスクトップツールです。 Windows標準のファイル検索よりも高速な文字列検索や絞り込みを行うために、Python + PySide6 + SQLite で作られています。

### こんな人に向いています

- 決まった場所への調査目的のgrepを繰り返し行う人
- コマンドラインには不慣れだが、grep的な検索は使いたい人
- grep結果から大量のソースを目視でざっと眺めることが多い人
- Windows標準のファイル検索（反応の遅さ・インデックスの不透明さ・結果が消える等）にストレスを感じている人

### 基本的な仕組み

- 指定フォルダのファイル一覧（FileList）をDB化。拡張子の対象/除外、更新日、サイズ、パスなどで絞り込み可能
- FileList作成時にテキスト内容もDBへ取り込み（キャッシュ）可能
- grepはFileListに対して実行。キャッシュ内容を使うか、その都度元ファイルを読みに行くかを選択可能
- 既存のgrep結果に対して、さらに絞り込みgrepを繰り返し実行可能（親子関係を持つ結果タブとして管理）
- FileList・grep結果はいずれもListViewに表示され、右クリックメニューやEnter/ダブルクリックで外部エディタ起動やファイルの場所を開くといった操作が可能
- FileList・grep結果はCSVへエクスポート可能。DBファイル自体も任意の場所へ保存・任意の場所から読込が可能

Concept ファイルの「新鮮さ」をある程度犠牲にする代わりに、繰り返しのgrep作業を効率化することを目的としたツールです。 ネットワーク越しのリポジトリなど、I/Oが重い場所に対して威力を発揮します。

## 02導入・アンインストール

#### インストール

任意のディレクトリに配布物を解凍するだけです。インストーラは不要です。

初回実行時、実行ファイルと同じ階層に以下の2ファイルが自動生成されます。

ファイル | 役割
--- | ---
`regrep.db` | アプリが利用するSQLite DB（FileList・grep結果・画面設定を保持）
`preference.json` | 直近使用したDBパス、アプリ全体設定、ブックマーク一覧

#### アンインストール

アプリケーションフォルダを削除するだけです。必要に応じて、任意の場所に保存したDBファイルも合わせて削除してください。

## 03基本的な流れ

1. 対象フォルダを指定してFileListを作成する

   調査したいフォルダを指定し、拡張子・更新日・サイズなどの条件をつけてFileListを作成します。テキスト内容も一緒にDBへ取り込んでおくと、以降のgrepが高速になります。

2. FileListに対してgrepする

   検索文字列を入力し、内容grep・ファイルパスgrepのいずれか（または両方）を対象にgrepを実行します。結果は新しいタブに表示されます。

3. 必要なら結果をさらに絞り込む

   grep結果を対象に、別の検索語で再度grepすることができます（絞り込みgrep）。何段階でも繰り返せます。

4. 結果からファイルを開く・CSVに出す

   ListView上の行から外部エディタを起動したり、ファイルの場所を開いたり、結果一覧をCSVに出力したりできます。

## 04画面構成

画面は上から次の3つのブロックで構成されています。

上部操作バー
  DB操作（新規／保存／読込）、接続中DB表示、ブックマーク追加・呼出し、設定（⚙）
FileList ブロック
  対象フォルダの指定と、FileList作成条件の設定。ヘッダー左の `▼` / `▶` で折りたたみ可能
grep ブロック
  grep対象の選択、検索文字列とgrepオプションの設定。同じく折りたたみ可能
結果タブ
  「FileList」タブと、grepを実行するたびに追加される「grep結果」タブ

各ブロックを折りたたむと、タイトルの横に作成日時や件数などのステータスが要約表示されます。画面サイズ・折りたたみ状態・入力内容は自動的に保存され、次回起動時に復元されます。

## 05DB操作・ブックマーク

re:Grepの作業単位は「DBファイル1つ＝ひとつの調査対象」です。上部の3つのボタンでDBを切り替えます。

`新規`
  保存先を指定して空のDBを新規作成します。画面の入力内容は初期状態に戻り、対象/除外拡張子・特殊フォルダ除外リストは設定画面のデフォルト値がコピーされます。
`保存`（名前を付けて保存）
  現在使用中のDBファイルを指定した場所にコピーし、以降の作業対象をコピー先に切り替えます（Excelの「名前を付けて保存」に相当）。
`読込`
  既存のDBファイルを選択して読み込み、そのDBの内容・設定を画面に復元します。
ブックマークに追加
  現在接続中のDBに表示名を付けてブックマーク一覧（`preference.json`）に追加します（最大20件、先頭が最新）。
ブックマーク呼出し
  プルダウンから選択するだけで、対応するDBに即座に切り替わります（既存DB読込と同じ動作）。
Tip 同一ディレクトリへのgrepの頻度が高い場合、都度FileListを作り直すよりも、既存DBをブックマークしておいて呼び出す方が初動が速くなります。

## 06 FileList作成

`対象フォルダ指定` ボタンでフォルダを選択します。1つ選択するごとに追加確認が表示されるため、複数フォルダをまとめて対象にすることもできます。

#### 作成条件

拡張子（指定なし／対象／除外）
  択一。対象・除外いずれも `;` 区切りで複数拡張子を指定できます（例: `java;jsp;js;sql`）。
ファイル更新日
  指定日付の「以降に限定」または「以前に限定」でファイルを絞り込みます。
ファイルサイズ
  指定KB以下のファイルに限定します。
パスフィルタ
  フルパスに対する部分一致（または正規表現）でファイルを絞り込みます。
テキスト・エクセル・ワード判定ファイルに限定
  バイナリファイルをFileListから除外します。
特殊フォルダを除外
  `.svn` `.git` `.hg` `.vscode` `node_modules` など（設定画面で編集可）配下を対象から除きます。
隠しファイルを除外
  OS上で隠し属性のファイルを対象から除きます。
テキスト判定の場合内容インポート
  テキストと判定されたファイルの中身をDBに取り込み、以降のgrepをキャッシュから高速に行えるようにします。サイズ上限（KB）も指定可能です。
xlsx,docx,xls,docの内容抽出インポート
  Office文書のテキスト内容も抽出してインポートします（`.doc`は簡易抽出）。

`FileList作成` を実行すると、既存のFileList・grep結果はすべて削除される旨の確認が表示されます。作成後は `CSV出力`（`filelist.csv`）や `削除` が行えます。

注意 大量ファイル・ネットワークドライブが対象の場合、初回のFileList作成にはそれなりに時間がかかります。「内容インポート」を有効にするとDBサイズも大きくなる点に留意してください。

## 07 grep実行

`grep対象` プルダウンでは、「FileList」に加えて過去のgrep結果も選択できます（親子関係は階層化して表示されます）。まず何を対象にgrepするかをここで選んでください。

grep文字列
  検索文字列を入力します。実行した文字列は履歴としてプルダウンに残ります。
正規表現指定
  検索文字列を正規表現として解釈します。
内容grep
  ファイルの中身を検索対象にします。
インポートデータを優先利用
  FileList作成時に取り込んだキャッシュ内容を優先して使用します（オフにすると都度元ファイルを読み直します）。
ファイルパスもgrep対象とする
  ファイルパス文字列自体も検索対象にします。

「内容grep」「ファイルパスもgrep対象とする」の両方をオフにすることはできません（検索対象が無くなるため）。実行前に確認ダイアログが表示されます。

注意 正規表現の内容によっては検索に非常に時間がかかる場合があります。

## 08絞り込みgrep

grep結果は下部にタブとして追加され続けます。`grep対象` プルダウンで既存のgrep結果を選んで再度grepすると、 その結果の子タブとして新しい絞り込み結果が作成されます。この親子関係は何段階でも繰り返せます。

- タブを右クリックすると、そのgrep結果の `CSV出力` と `このGrep結果を削除` が行えます（FileListタブ自体は削除できません）。
- grep結果を削除すると、その結果から派生した子・孫の結果もまとめて削除されます。

## 09結果一覧（ListView）の操作

FileListタブ・grep結果タブとも、行に対して次の操作ができます。

#### 右クリックメニュー

項目 | 内容
--- | ---
ファイルパスをコピー | 選択行のフルパスをクリップボードにコピー
ファイルをコピー | ファイル実体をクリップボードにコピー（貼り付けでコピー可能）
ファイルの場所を開く | エクスプローラーでファイルの場所を開く
OS既定のアプリで開く | 設定でこの項目の表示がオンの場合のみ表示。「起動防止拡張子」に該当するファイルには表示されません
（各エディタ名）で開く | 設定画面に登録したテキスト／バイナリエディタで、可能なら該当行・オフセットへジャンプして開く
この値でフィルタ／フィルタ解除 | クリックしたセルの値で一覧を絞り込み表示（列単位）

#### ダブルクリック／Enterキー

それぞれの動作は設定画面（⚙）で以下から選べます。

- 何もしない
- ファイルの場所を開く
- デフォルトエディタで開く
- ファイルをコピー

補足 Office文書（`xlsx` `docx` `xls` `doc`）は、発見箇所へのジャンプには対応していません。「OS既定のアプリで開く」のみが表示されます。

## 10設定画面（⚙）

右上の `⚙` ボタンから開きます。ここでの内容はDBごとではなく、`preference.json` にアプリ全体設定として保存されます。

#### ブックマークリスト管理

表示名／DBパスの一覧を直接編集できます。「削除」はブックマークから外すだけで、DBファイル自体は削除されません。`↑` `↓` で並び替え可能です。

#### 新規DB作成時のデフォルト値

`新規` ボタンでDBを作成した際に適用される、対象／除外拡張子・特殊フォルダ除外リストの初期値です。

#### ListViewコンテキストメニュー設定

「OSの既定アプリで開く」の表示可否、およびテキストエディタ／バイナリエディタの一覧（表示・デフォルト・表示アプリ名・アプリパス・起動オプション）を管理します。「デフォルト」に指定したエディタが、各行の「デフォルトエディタで開く」動作の対象になります。

#### マウス・キーボード操作

行ダブルクリック／Enterキー押下時の動作をそれぞれ設定します。

#### 起動防止拡張子

常時有効な安全機能です。ここに指定した拡張子（初期値 `exe;bat;cmd;ps1;vbs`）のファイルは「OS既定のアプリで開く」が無効化され、誤って実行してしまうことを防ぎます。

## 11外部エディタ連携

起動オプションにプレースホルダを指定することで、エディタ起動と同時に発見箇所へジャンプできます （エディタ側に行・列・オフセット指定でのジャンプ機能があることが前提です）。

#### テキストエディタ用プレースホルダ

`{file}` = ファイルパス`{line}` = 行番号`{column}` = 列番号

エディタ | 起動オプション例
--- | ---
サクラエディタ | `-Y={line}`
VS Code | `-g {file}:{line}`
notepad++ | `-n{line}`

#### バイナリエディタ用プレースホルダ

`{file}` = ファイルパス`{offset}` = バイナリオフセット

エディタ | 起動オプション例
--- | ---
010 Editor | `-goto:{offset}`

## 12注意点・既知の制限

- ツールのコンセプト上、頻繁に内容が更新されるディレクトリでの利用には注意が必要です（DB作成時点の内容がキャッシュされるため）。
- 置換機能は搭載していません。あくまで検索・grep専用のツールです。
- 初回のFileList作成には、対象件数・場所（特にネットワークドライブ）によって時間がかかります。
- 「テキスト判定の場合内容インポート」を有効にすると、DBサイズが大きくなります。
- 正規表現を利用する場合、指定内容によっては検索に非常に時間がかかることがあります。
- 古いWordファイル（拡張子 `.doc`）は、内容によってgrepがヒットしない場合があります。

## 13環境

動作環境
  Windows11
作成環境
  Python / PySide6 / SQLite
配布形式
  PyInstallerによる実行ファイル化（`reGrep.exe`）