﻿===============================================================================
『butterfly search（バタフライ サーチ）』をダウンロードしていただきありがとうございます。
【ソフト名    】butterfly_search.exe
【バージョン  】4.3
【ソフト内容  】テキストファイル向け全文検索ツール
【対応OS      】Windows 10（64 bit）
【作者氏名    】星 智之（ホシ  トモユキ）
【ホームページ】https://sites.google.com/view/butterfly-search
【連絡先      】tomoyuki.hoshi+bf@gmail.com
【種別        】フリーウエア
===============================================================================

１．はじめに
  butterfly search は全文検索ツールです。大量のテキストファイルから目的の単語が
  含まれる箇所を素早く探し出す際に使用します。予め作成したインデックスファイルを
  使用する事により、瞬間的に検索結果を得る事が出来ます。
  検索結果は、ファイル名だけでなく、目的の単語が含まれる行までを表示します。

  本ソフトは、ソフトウエア開発において存在しない文字列が存在しない事を確認する
  為に作成されています。つまりは検索漏れゼロを目標に作成されており、この為、
  どんなにファイルサイズが大きくても、どんなに単語の長さが長くても、
  諦めない設計思想となっています。(※試作機能は除く)

  ※試作機能
   （１）PDF,WORD,EXCEL,一太郎などのファイルも検索可能です。フィ
         ルターとしてxdoc2txt（hishida氏作成）を同梱しています。
  
２．インストール/アンインストール
  レジストリは使用していませんので、そのままフォルダに解凍するだけで使用できます。
  削除する時はフォルダごと削除して下さい。
  butterfly searchは大量の中間ファイル作成します。場所はbutterfly_search.exe
  と同じ場所を使用しますので、butterfly_search.exeは十分に空きのある所に解凍して
  下さい。目安として検索対象の2倍の空き容量が必要です。
  ※オプションによっては更に5倍程度の空きディスクを要求します。この為、butterfly searchの
    インストールはシステムとは別の場所にインストールすることをお勧めします。

３．使用方法
（１）インデックスファイルの作成
    はじめにインデックスファイルを作成する必要があります。初回起動時にウイザード
    が起動しますので、ウイザードに従って作成します。

    検索対象のドキュメント内からすべての文字を分解、抽出しますので、時間がかかり
    ます。

    インデックスファイルはインストールしたフォルダ内の_bf_indexというフォルダ内に作成
    されます。
    

（２）検索キーの入力（1次フィルタリング）
    検索文字列欄に検索したい文字を入力します。単語を入力した時は単語単位に検索さ
    れ、それ以外の文字は、単純に文字が含まれるかどうかを検索します。

   【重要】
    本ツールでは単語の定義を[半角英数字及び"_"（アンダーバー）の列]としています。

    （ア）単語を入力したとき
      単語の場合は、文字が一致する以外に前後の区切り文字を意識します。
      検索キーを”ABC”とした時は単語として検索しますので  ”ABCD”や”AABC”には
      ヒットしません。

      単語内に"?","*"を検索キーに含め、上下の矢印キー（↑↓）を押すと、次の検
      索キーをインデックスの中から検索し、その結果を元に検索処理を行います。
        例：A??? の時  → Aから始まる4文字の単語をインデックスから検索。
        例：A* の時  → Aから始まる単語をインデックスから検索。 
        ※*は任意の文字列に展開されます。?は任意の１文字に展開されます。

    （イ）単語以外を入力したとき
      単純に文字が一致した行を表示します。検索キーを”京都”とした時は単語
      （butterfly_searchでの）ではない為、”東京都庁”にもヒットします。

（３）検索結果のフィルタリング（2次フィルタリング）
    （ア）AND設定での絞り込み
        検索文字列で検索した結果を更に絞り込む時に使用します。AND設定での絞り込み
        は低速な為、1次フィルタリングで対象を絞り込むと便利に使用できます。
        また、近接検索(言葉と言葉の距離)指定が可能です。

    （イ）ファイル名での絞り込み
        [対象ファイル名]にファイル名を入力する事により、一致する名前を持つファイ
        ルだけを表示対象とする事ができます。この欄には”*”と”?”が使用可能です。
        複数の条件を指定するときは、”;”にて区切ります。デフォルトは、すべての
        ファイル”*;”です。大文字小文字は区別されません。

          例：*.c;ReadMe;
              → 拡張子がcとなっているファイルとReadMeを表示

    （ウ）ディレクトリ名での絞り込み
        [対象ディレクトリ名]にディレクトリ名を入力する事により、ファイル名と同様
        に絞り込みが可能です。

     ※｢対象ファイル名｣と書かれている文字列をクリックすると、｢除外ファイル名｣へ
       表示が変わり否定の動作となります。また、SHIFTを押しながらクリックすると
       正規表現を受け付けるようになります。正規表現に切り替えた場合は、一般的な
       正規表現ルールが適用されます。（”;”は区切りとして解釈されません）

（４）ファイルの編集
    編集ボタンを押下する事により、表示しているファイルを外部のエディタを使用して
    編集する事ができます。デフォルトの設定ではnotepad.exeが起動します。
    エディタを変更する時は設定メニュー内の[インデックスの状態/設定値]を選択し変
    更します。

（５）ファイルの実行
    関連ボタンを押下する事により、表示しているファイルの種類に関連付けされたツー
    ルで起動する事ができます。

（６）分布ボタン
    ファイル内での単語の分布状況を左バーに表示します。

（７）コマンドラインからの起動オプション
    オプションを付与して起動することにより、GUIによる操作なしでインデックスの更新
    が可能です。
   ・新規
     オプション「-init」と検索先のフォルダを指定して起動すると、インデックスファイ
     ルを作成します。この際、古いインデックスファイルがある場合は削除されます。
     例：butterfly_search.exe -init D:\test\android_bf\data\

     インデックス作成を待ち合わせしたい場合は「-initC」オプションを使用してください。
     例：start /wait butterfly_search.exe -initC D:\test\android_bf\data\

   ・更新
     オプション「-renew」を指定して起動すると、インデックスファイルの差分更新を行います。
     例：butterfly_search.exe -renew

４．インデックスの状態を確認する
（１） [表示(V)]－[インデックスの概要]を選択すると、現在のインデックスの状態を表示します。

（２）[表示(V)]－[インデックス（ファイル）状態]  を選択するとファイルの状態を表示します。
    [番号]：１から始まるDBへ登録したしたときの番号
    [状態]：エラー等のステータス
    [ファイルパス]：ファイルパス
    [ファイル名]：ファイル名
    [種類]：ファイルの拡張子
    [サイズ(登録時)]：ファイル登録時のファイルサイズ
    [ファイル日付（登録時）]：インデックス作成時の対象ファイルの時刻
    [ファイル日付（実際）]：今現在の対象ファイルの時刻
    [ファイル日付（差）]：ファイル日付（登録時）とファイル日付（実際）の差
    [CodePage1]：IMultiLanguage2での文字コード判定結果１（デバッグ用）
    [CodePage2]：IMultiLanguage2での文字コード判定結果２（デバッグ用）
    [徹夜度]：朝４時を基準とした時の百分率
              朝４時を100％、夕方１６時を0%として算出
    [受付日付]：ファイル登録時のパソコンの時刻
    [MD5(登録時)]：ファイル登録時のハッシュ値（MD5）

（３）[表示(V)]－[インデックス（検索キー）状態]  を選択すると検索キーの状態を表示します。
    [番号]：１から始まるDBへ登録したしたときの番号
    [キー名称]：キー名称
    [キーの長さ]：キー名称の長さ
    [キーの登場回数]：キーが出現した回数。1行に2回以上登場する場合も登場した回数
                      分カウントします。※最大2147483647
    [該当ファイル数]：検索した時にヒットするファイルの数
    [DBのサイズ]：データベースの大きさ（デバッグ用）

   ※Ctrl+Aで全選択
   ※Ctrl+Cでクリップボードへコピー
   ※フィルター
     フィルター欄に文字を入力する事により、表示内容を絞り込む事ができます。特殊文
     字として*と?を使用できます。?は任意の1文字。*は任意の複数文字を意味します。

     入力例：[ファイル日付]欄
               2012/??/?? ??:??:??  →  2012年に更新されたファイルを表示。
             [状態]欄
               *バイナリ*           →  バイナリファイルとして判定されたファイ
                                         ルを表示
   ※ソート
     カラムをクリックすると並び替えを行うことが出来ます。並び替えは時間が掛かりま
     す。並び替え後の結果は保存され次回の表示時に使用されます。
     [ファイル日付（実際）]と[ファイル日付（差）]に関しては、毎回ソートするかどう
     か問い合わせを行います。

５．その他機能
（１）一括検索機能
	  複数の単語を連続して検索したいときに便利です。
	（a）起動方法
	    メニューの[表示]－[一括検索ウインドウの表示]を選択します。
	（b）検索方法
	    検索したいジャンルを選び、右クリックにて「検索」を選択します。
	（c）結果の見方
	    キーの左側の[XXX]に一致した件数が表示されます。右側の「→」以降にはコメントが
	    表示されます。
	（d）ジャンルの増やし方
	    butterfly_searchをインストールしたフォルダに作成されている「_bf_greplist」という
	    フォルダにファイルを入れ再起動する事で増やせます。
	    書式は「検索キー」＋「スペース」＋「コメント」となります。
	    ※検索キーにはスペースを含む事は出来ません。
	   [注意]
	    デフォルト値はツールの動作の理解を深める為のものであり、 
	    著作権は、Mr.凡人様にあります。実際に検索する際は、ご自身で再定義しての
	    ご利用をお願いいたします。

（２）表記ゆれ検索機能
      似ている単語を探したいときに使用します。キーに*と?を含めることでゆれる場所を指定できます。
　　　検索対象は単語(半角英数字及び"_"（アンダーバー）の列)のみです。
      disc → disk 等の検索を想定しています。
      butterfly_searchのインデックスを検査して表示します。
      

（３）ファイル内の日時文字列登場頻度の可視化
	（a）起動方法
	    メニューの[表示]－[ヒートマップウインドウの表示]を選択します。
	（b）終了方法
	    メニューの[表示]－[ヒートマップウインドウの表示]を選択します。（起動方法と同じ）
	（c）仕組み
	    ファイル内で見つけた日付と思われる数値の組み合わせを特別にインデックスに入れています。
	    （インデックス作成時のオプションで設定可能）
	    
６．その他（特徴、仕様）
（１）インデックスファイル作成後も検索対象ファイルを参照しますので、常にアクセス
      出来る状態にしておく必要があります。
（２）文字コード判定にはIMultiLanguage2を採用していますので、Unicode(UTF-16),
      Unicode(UTF-8),Unicode(UTF-7),Shift-JIS,EUC,JIS等を扱う事ができます。ですが
      判別に失敗する事があり、誤判定した場合、全角文字は正しく処理出来なくなります。
      この為、全角文字の検索結果は完全ではない事に留意しご使用下さい。
      対処としては、失敗したファイルをUnicode（UTF-16）ファイルとして保存し、インデ
      ックスファイルの更新を行って下さい。
（３）検索キー、ファイル名も含めUNICODEに対応しています。
（４）検索キーは、半角大文字と半角小文字を区別しません。
（５）検索キーは、半角カタカナと全角カタカナと全角ひらがなを区別しません。
（６）検索キーは、半角記号と全角記号を区別しません。
（７）単語以外の文字はN-gram法を使用しインデックス化しています。
      「今日はいい天気ですね。」という文章の場合はN-gram(N=3)にしていますので、
      「。」、「い」、「いい」、「いい天」、「い天」、「い天気」、「す」、「すね」、
      「すね。」、「で」、「です」、「ですね」、「ね」、「ね。」、「は」、「はい」、
      「はいい」、「今」、「今日」、「今日は」、「天」、「天気」、「天気で」、「日」、
      「日は」、「日はい」、「気」、「気で」、「気です」
       としてインデックスに登録されます。検索キーはUNICODE順にソートされています。
（８）単語と文字の組み合わせをハッシュ化してインデックス化しています。その際は先頭に◉が
      付与された16進数としてインデックス化されます。
（９）検索可能な、１単語の長さは30000文字が上限です。
（１０）10Mバイトを超えるテキストファイルは、内部的に1Mバイト単位に分割しそれぞれ別
      ファイルとして認識します。この際、ファイル名の最後に<XXXX>を付与することで
      区別します。
（１１）特定の拡張子は、コンバーターを通してテキストに変換されます。この場合は
      キャッシュファイルが_bf_cacheフォルダ下に作成されます。また、変換時間が3分を
      超える場合はエラーとなります。
（１２）バイナリファイルはインデックスへ登録しません。バイナリファイルかどうかは、
      ファイル内部にNULLがあるかどうかで判定します。それ以外はテキストファイルである
      という前提でインデックス化を試みます。
（１３）圧縮ファイル（7z.exeへ処理を回す種類）のmd5sum値は正しくありません。先頭の1M分
      しか処理していません。
（１４）3つの連続した数値について（ヒートマップ）
    特徴のある3つの連続した数値は、特別にインデックスの対象となります。
    ・年月日と思われるもの
      年月日と思われる場合はインデックス化します。時分秒情報はインデックス化しません。
      年号（例：平成、昭和）は、補正してインデックス化します。
      紀元前の場合は、10000を基準にします。紀元前100年の場合は9900年となります。
    ・BWHと思われるもの
      「サイズ」という単語をヒントに解釈を試みます。
    ※一行の長さが1023文字を超える場合、1023文字以降は特別インデックスの対象になりません。
（１５）インデックスの概要ダイアログにある「インデックスの状態（検索キー）」ウインドウ
　   専用のスクロールバーがあります。スクロールバーのスライダーを触った時に表示される
     数値は操作される桁を表しており、3の場合は100の位。5の場合は10000の位が変化します。
     数値を変えるにはスライダーを横にドラッグします。

７．ソフトウェアの扱い
（１）butterfly_search.exeはフリーソフトです。企業ユースでも、個人ユースでも、
      ご利用にあたり作者へ連絡する必要はありません。
（２）butterfly_searchの再配布を希望する場合は必ず作者に再配布許可を取るように
      お願いします。（同梱しているxdoc2txtに再配布の許可が必要な為です）
（３）動作無保証です。使用者の責任にてご使用ください。

８．コンバーター（文書フィルタ）
  共通ルール
   ･コンバーターを使用するかは、ファイルの拡張子を見て判断します。
   ･変換に3分以上時間がかかった場合はエラー扱いとなります。
   ･元のファイルサイズが125Mを超える場合、コンバーターは使用されません。
   ･変換後のファイルサイズが250Mを超える場合、エラーとなります。
（１）ドキュメントコンバータ xdoc2txt
    xdoc2txt（hishida氏作成：http://ebstudio.info/home/xdoc2txt.html）を
    同梱しています。下記ファイルの場合に使用します。
	.rtf  リッチテキスト 
	.docx/docm  Microsoft WORD 2007(OOXML) 
	.xlsx/xlsm  Microsoft Excel 2007(OOXML) 
	.pptx/pptm  Microsoft PowerPoint 2007(OOXML) 
	.doc.dot  Microsoft WORD ver5.0/95/97/2000/XP/2003 
	.xls.xlt  Microsoft Excel ver5.0/95/97/2000/XP/2003 
	.ppt  Microsoft PowerPoint 97/2000/XP/2003 
	.sxw/.sxc/.sxi/.sxd  OpenOffice.org 
	.odt/.ods/.odp/.odg  Open Document  
	.jaw/jtw  一太郎 ver5 
	.jbw/juw  一太郎 ver6 
	.jfw/jvw  一太郎 ver7 
	.jtd/jtt  一太郎 ver8/9/10/11/12 
	.oas/oa2/oa3  OASYS/Win 
	.bun  新松/松5/松6 
	.wj2/wj3/wk3/wk4/123  Lotus 123  
	.wri  Windows3.1 Write  
	.pdf  Adobe PDF 
	.mht  Webアーカイブ 
	.html/htm  HTML 
	.eml  OutlookExpressのエクスポート形式 
	.xdw/xbd 富士ゼロックス Docuworks ※IFilterの設定が必要なはず（ここ数年未確認）
         (https://www.fujifilm.com/fb/support/software/sw_common/answer/103_262.html)
    ※注意
      ・xdoc2txtの解析エラーは検知できません。解析エラーが発生していても、
        エラー報告しませんので、検索もれに注意してください。（例えばパスワ
        ードが掛かっているエクセルファイルは検索もれ（インデックス対象外）
        となります。

（２）メタ情報の取得
   xdoc2txt後はメタ情報の採取を試みます。メタ情報とは作成者名、最終更新者などの事です。
   メタ情報はIFilterを使用して採取します。一部のIFilterは標準ではWindowsにインストールされていません。
   Microsoft Office系のIFilterであれば、Microsoft Officeをインストールするか、Filter Pack Service Packを
   インストールしてください。https://www.microsoft.com/ja-jp/download/details.aspx?id=39668 にあります。
   リンクが切れている場合は「KB2687447」で検索して、Microsoft Office 2010 Filter Pack Service Pack 2
   よりFilterPack64bit.exeをインストールします。
   メタ情報はファイルの最後に「BFMATA:」というタグと共に追加されます。

（３）実行形式ファイルのテキスト抽出
   対象拡張子はexe.dllになります。同梱のコンバーターで日本語を意識した抽出を行います。
   ファイルサイズは5Mを上限としています。他のツール
  （例えばStrings：https://technet.microsoft.com/en-us/sysinternals/bb897439.aspx）
   よりは、抽出してくれますが解析は完全ではありません。

（４）圧縮されているファイル名の抽出
   対象拡張子は7z.XZ.BZIP2.GZIP.TAR.ZIP.WIM.AR.ARJ.CAB.CHM.CPIO.CramFS.DMG.EXT.FAT.
   GPT.HFS.IHEX.ISO.LZH.LZMA.MBR.MSI.NSIS.NTFS.QCOW2.RAR.RPM.SquashFS.UDF.UEFI.VDI.
   VHD.VMDK.XAR.Z.APFS.Base64.VHDXになります。
   ファイルの内容ではなく、ファイル名のみの抽出となります。



９．複数フォルダを扱う
  検索の起点は１つしか指定できませんが、代わりにbutterfly_searchはショートカット
  ファイルを辿る（たどる）事が出来ます。検索対象としたいフォルダのショートカット
  を含めることで、複数のフォルダを対象とする事が出来ます。

１０．動作確認環境
   動作確認に使用した環境になりますので目安にしてください。
    ・OS:Windows 11（64 bit）
    ・CPU:Ryzen 9 3950X
    ・メモリ:48G   ※24G以上積むことをお勧めします。

１１．トラブルシュート
  ・NTFSのファイル圧縮を有効にしている場合、エラーになることがあるようです。
   （例えば0x40000015：不明なソフトウェア例外エラー）
    NTFSのファイル圧縮を無効にして試してください。
  ・最大8000ファイルを同時にOPENしますので、貧弱なファイルシステムでは耐えられないかもしれません。
    一般的な物理ディスクで試行してください。
  ・32bitのOSを使用している場合は起動に失敗します。その場合は、旧版（32bit版）が欲しい旨を
    作者へ連絡ください。
    
１２．変更履歴
  2025.12.13 V4.3  ・ファイルのメタ情報の取得に対応。要IFilter。（本ドキュメントの８－（２）を参照）。

  2025.02.10 V4.2.1・インデックスの概要ダイアログにある「インデックスの状態（検索キー）」ウインドに
　                   専用スクロールバーを追加。これにより21億個までアイテムを表示可能。

  2024.12.08 V4.2  ・停止ボタンを追加
                   ・表記ゆれ検索ボタンを追加
                   ・4Gを超えるシンボリックリンクファイルがあるとエラーになる問題を修正
                   ・7zipをVer 23.01→24.09へ差し替え
                   ・xdoc2txtをRev2.21 64bit版に差し替え
                   ・機能毎のスレッドの数を32へ変更
                   ・ホームページ移転の為、ホームページのアドレスを変更
                   ・mallocをmimallocへ差し替え
  2023.08.04 V4.1  ・全体的な高速化（CFileの呼び出しを削減、ロック処理の見直し）
                   ・ファイル名検索処理をマルチスレッド化
                   ・行をクリックしたタイミングでクラッシュする問題対応
                   ・BWHインデックスをデフォルトでは作成しないように修正
                   ・7zipをVer 22.01→23.01へ差し替え
                   ・非常に多くのバグを修正(安定化)
  2023.04.16 V4.0  ・Butterfly Search本体を64bit化（これにより32bitのOSでは動きません）
                   ・日時ヒートマップ画面を追加
                   ・xdoc2txtをRev2.20 64bit版に差し替え
                   ・CPU12スレッド、メモリ24GBを上限にリソースを使用するように修正
                   ・Microsoft OCR、Docuworks対応の表現を削除。（ダウンロード不可、メンテナンス不可の為）
                   ・7zipをVer 19.00→22.01へ差し替え
                   ・非常に多くのバグを修正
  2022.06.18 V3.0b ・検索履歴が正しく残らない不具合修正。
                   ・データベース更新時の進捗表示メッセージを強化。
                   ・検索速度向上の為、インデックス化する条件を追加。
  2022.01.28 V3.0a ・正規表現を使用してファイル名を検索する際に検索漏れが発生するバグの修正。
                   ・Windowsの設定で左利きマウスの設定にしたとき、窓の大きさを変更できない
                     問題対応。
                   ・キャンセルの切れ味が悪い問題を改善
  2021.10.29 V3.0  ・文章中の3つの連続した数値を抽出する処理を追加。
                   ・文字コード判別処理の改善。
                   ・インデックス生成処理の高速化。
                   ・インデックス生成時にクラッシュする問題を緩和。
  2021.08.08 V2.8e ・ファイル名の検索処理を高速化。
                   ・文字コード判別の重み付けとして、UTF-8が選択されやすいように修正。
                   ・F3キーで次の文字を検索できるように修正。
                   ・インデックス生成時にクラッシュする問題を修正。
  2021.06.26 V2.8d ・xdoc2txtのオプションから-iを外した。
                   ・xdoc2txtフィルターを使用する条件として、拡張子｢xml｣を外した。
                   ・インデックスの除外条件としてファイル名の指定が出来るように機能追加した。
                   ・メモボタンを削除、検索キーの履歴を200件に拡張した。
                   ・インデックス生成時の並列処理を強化した。 
  2020.11.07 V2.8c ・大きいサイズの圧縮ファイルも処理できるように修正。
                   ・圧縮ファイルの処理がエラーになる不具合の修正。
                   ・インデックス生成時の進捗メッセージを修正。
                   ・放送コード.xlsの梱包を中止。
  2020.09.11 V2.8b ・exe2txtを呼ぶ際のファイルサイズの上限を緩和（25M→50M）
                   ・検索をキャンセルした際、次の検索に失敗する事がある不具合の修正。
                   ・検索キーの種類が0x1FFFFFFF個を超えるとエラーになる問題対応。
                   ・ファイル名が暗号化されてるファイルがあるとインデックスの作成に
                     敗する問題対応
  2020.07.05 V2.8a ・エラー回避の為、doc2txt,exe2txtを呼べるファイルサイズの上限を下げた。
                     （250M→125M、50M→25M）
  2020.02.29 V2.7K ・圧縮ファイル内のファイル名を抽出対象に追加
                   ・フィルターが正しく動作しない事があるバグを修正
  2019.07.26 V2.7J ・インデックス生成時の除外フォルダ処理を変更。除外されたファイルを
                     一覧に含めない仕様に変更。
  2019.07.06 V2.7i ・インデックス作成時のスレッド数のデフォルトを1⇒3へ変更
                   ・xdoc2txtをRev2.19に差し替え
                   ・CTRL+Aを検索キー入力ボックスでも動作する様に修正
                   ・マウスホイールで文字サイズを変化させる時の向きを反転した
                   ・タブ毎に検索パス、検索ファイル名を記憶する様に修正
  2018.05.02 V2.7h ・行選択画面のカラムの幅を再起動後に復元する様に修正
  2018.02.18 V2.7g ・インデックス作成時のスレッド数を3⇒1へ減らす事によりメモリ不足を多少回避
  2017.11.04 V2.7f ・Ctrl+s押下により検索文字列入力BOXにフォーカスを飛ばす様に修正
  2017.09.30 V2.7e ・拡張子振り分け画面におけるアイコン画像をOFFにできる設定画面を追加
                   ・インデックス作成時の進捗率の表示が不正になる不具合対応
                   ・作者への連絡先、HPのアドレスを変更
  2017.08.13 V2.7d ・Ctrl+f押下時の動きを修正
                   ・コマンドラインからインデックスファイルを更新できるようにオプション(-renew)を追加
                   ・インデックスファイル更新後のインデックス状態画面において、正しくソートされない
                     バグ修正
  2017.05.13 V2.7c ・特定の環境にて異常終了する不具合対応
  2017.04.15 V2.7b ・パス名や拡張子毎の区別を行う事のできる子画面を追加
                   ・アイコンの絵を変更
                   ・Ctrl+f押下時の動きを修正
                   ・ツールチップを追加
                   ・進捗表示バーを設置
  2017.01.20 V2.7a ・S-JIS認識率の改善
  2017.01.03 V2.6k ・インデックスの作成順序を変更
                   ・xdoc2txtをRev2.16.1に差し替え
                   ・文字コード判定処理の見直し
                   ・butterfly_searchがReadOnlyなフォルダに展開されていても動作す
                     るに様に修正。
  2016.08.13 V2.6j ・過去に廃止したインデックス差分更新機能を復活。
  2016.06.02 V2.6i ・分布表示におけるハイライトがうまくできない場合がある問題対応。
                   ・バイナリファイル（exe,dll）の検索に失敗するデグレバグ対応。
                   ・起動時に右端を折り返すスイッチが利かないバグ対応。
  2016.05.15 V2.6h ・｢正規表現｣失敗した時に｢正規表現不正｣と表示される様に修正。 
  2016.05.13 V2.6g ・メモリの解放漏れを修正。｢正規表現｣の検索に失敗した時のエクセプション
                     を軽減。
  2016.05.06 V2.6f ・インデックス再作成後、再起動が必要となるバグを修正。
  2016.05.05 V2.6e ・AND条件種別に｢正規表現｣を追加。
  2016.04.09 V2.6d ・ファイルパス/ファイル名によるフィルターを高速化。
                   ・ファイル詳細画面を複数持てるように改良。
                   ・一括検索時の結果をクリップボードにコピーできる様に修正。
                   ・xdoc2txtをRev2.15に差し替え。
                   ・拡張子がxdw､xbdの場合、xdoc2txtを-iオプションでコールする様に修正。
  2016.03.08 V2.6c ・xdoc2txtをRev2.14に差し替え。ビルドオプションに/LARGEADDRESSAWAREを付
                     与し2Gのメモリ制限を緩和
  2016.02.18 V2.6b ・メモリ確保失敗時に異常終了する不具合を修正
  2015.12.12 V2.6a ・バイナリファイル（EXE/DLL）内のテキストも検索対象としてサポート。
                   ・大きなファイルに対してキー分布を表示したとき、後半が見切れていたバグ
                     に対応。
  2015.07.09 V2.5k ・サブフォルダ名称に｢_bf_｣を付与（例：cache→_bf_cache）し、除外フォル
                     ダの初期値を修正した。これにより自分自身はインデックス対象から外れる
                     様した。
                   ・同一ファイルがシンボリックリンクで複数回指定されている場合、冗長な検索
                     結果となっていたが、これを冗長にならない様に修正した。
  2015.07.01 V2.5j ・データベースファイルの一部を64ビットアクセス化。
                   ・xdoc2txtの変換タイムアウトを30分→3分へ変更。
  2015.05.17 V2.5i ・xdoc2txtの変換に30分以上かかった場合エラーとして次の処理に移る様修正。
                   ・日本語を収録する際の文字列長を4文字から3文字へ減らした。
  2015.01.11 V2.5h ・xdoc2txtをRev2.07に差し替え。これによりエクセル等に含まれる
                     ShiftJIS以外の文字に対応。
  2013.12.12 V2.5g ・大量のデータをクリップボードへコピーした時のエラーチェックを強化。
                   ・行表示ペインの修正
                     - 表示上限を10000→100000へ変更
                     - クリップボードにコピーできるアイテムとして「ファイルパス」を追加。
  2013.09.27 V2.5f ・クリップボード連動をONにした時にクラッシュする問題対応その２
  2013.09.21 V2.5e ・クリップボード連動をONにした時にクラッシュする問題対応
  2013.08.17 V2.5d ・一括検索機能を追加。
  2013.08.03 V2.5c ・分布表示時のキー取得元としてクリップボードを追加。
                   ・メニューから｢ファイル｣-｢新規｣を選択した時の検索先に、前回の値を表示する
                     様に修正。
  2013.06.12 V2.5b ・フォルダを検索対象から外す機能を使用した時に検索漏れが発生する不具合対応。
  2013.06.09 V2.5a ・分布表示時にキー操作したときのハッチング速度が遅い問題対応。
  2013.06.09 V2.5  ・バージョン表記のみ更新。
  2013.05.10 V2.4j ・分布表示時の色変更機能を追加。
  2013.05.01 V2.4i ・ビッグデータ(大きなファイル（100Gバイトまではテスト済み))に対応。
                   ・特定のフォルダを検索対象から外せるように対応。
                   ・検索結果に色を付ける機能を追加。
                   ・同梱のxdoc2txtフィルターをVer1.42→Ver1.46へ差し替え。
  2012.07.15 V2.4h ・ファイル一覧画面において、選択行を反転させる処理を追加。
                   ・ショートカットファイルの場合にリンク先を辿る様、機能追加。
                   ・xdoc2txtの出力を強制的にUNICODEへ変換する処理を追加。
                   ・行選択画面にファイルドラック処理を追加。
                   ・行をクリックした際に表示する画面において、フォーカス位置を変更で
                     きるように機能追加。
                   ・SHIFTキーを押下しながら関連ボタンを押下したときに、エクスプローラー
                     を起動する様に機能追加。
  2012.06.17 V2.4g バージョン情報ダイアログにHPへのリンクボタンを追加。
                   検索キーの履歴に同じキーが連続して記録されない様にガード処理を追加。
  2012.05.27 V2.4f 同梱のxdoc2txtフィルターをVer1.41→Ver1.42へ差し替え。
                   外部フィルターがアプリケーションエラーを報告した際の動作を修正。
                   編集ボタン押下時に期待した行へジャンプしない不具合を修正。
  2012.05.01 V2.4e コマンドラインからインデックスを作成する機能を追加。
                   インデックス生成処理を見直し(並列化)。
                   インデックス差分更新機能を削除。
                   xdoc2txtフィルターを使用する条件として、拡張子｢dot,xlt｣を追加。
  2012.02.24 V2.4d 簡易履歴機能を追加
  2012.02.24 V2.4c butterfly_OCR_wrapperをwindows7 64bitに対応。
  2012.02.18 V2.4b butterfly_OCR_wrapperのReadMe.htmlを修正。
  2012.02.18 V2.4a Microsoft Office Document Imaging (OCR)と連携。画像から文字の抽出が可能に。
  2012.02.08 V2.3a xdoc2txtフィルターを使用する条件として、拡張子｢docm/pptm/xlsm｣を追加。
  2012.01.02 V2.3  正式版として表記をV2.3に変更。
  2011.12.11 V2.2c xdoc2txtフィルターを使用する条件として、拡張子｢xml｣を追加、
                   バイナリーファイルとして判定されないことがあるバグを修正。
  2011.10.01 V2.2b フォルダ名に「.」が含まれると解析エラーになるバグ対応。(2.2a
                   でデグッてました)
  2011.09.21 V2.2a xdoc2txtを同梱しました。xdoc2txtの同梱に伴い、２次配布規定（ソフト
                   ウェアの扱い）を見直しました。
  2011.09.04 V2.1b 改行コードがCRLF以外の時、正しくジャンプしないバグを修正(2.1a
                   でデグッてました)
  2011.07.19 V2.1a ファイル詳細画面のプロパティを追加（右端を折り返す/折り返さな
                   い設定が可能）
  2011.06.26 V2.0  ファイル名の判定処理を高速化。AND条件機能を追加。
                   設定ファイルをUNICODE化。
                   検索文字列欄が空欄の時はファイル名を検索する仕様を追加。
                   改行が全く無いファイルの表示に極端に時間が掛かかる不具合を修正。
  2010.07.29 V1.9c Linux等に存在する大文字小文字で区別している同名のファイルに対応。
                  （ファイル名の大文字小文字を区別してインデックス化できます。8章参照）
  2010.04.13 V1.9b Ctrlを押しながらマウスのホイールを操作する事で、文字の大きさを
                   変更出来る様に機能追加。
  2010.03.14 V1.9a 検索対象のファイルをロックする期間を短縮
                   インデックス作成時の中間データ構造を変更（木→バランス木）
  2009.07.20 V1.9  検索先のファイルが移動した場合でも追従できる様にパスの変更機能
                   を追加
  2009.07.11 V1.8c フォントの大きさを考慮してウインドウの位置を補正する処理を追加
                   キャッシュ機能を追加
                   xdoc2txt.exeとの連携機能を追加
  2009.05.09 V1.8b 再起動時のウインドウ位置復元機能を追加
  2009.04.05 V1.8a フォントの設定機能を追加
  2009.01.30 V1.8  インデックス作成をキャンセルした際、検索フィルター文字が空白なる
                   不具合対応
  2008.12.13 V1.7  ２重起動した時にプロセスが残ってしまう不具合対応
                   検索対象のファイルが存在しない時のエラー検知不具合対応
  2008.11.27 V1.6  インデックス状態表示画面にて、フィルター機能とソート機能を同時
                   に動作させるとソートされない不具合対応
  2008.11.22 V1.5  行検索結果画面をリスト形式に変更（CEdit→CListCtrl）
                   メモ機能が20以上登録できない不具合対応
  2008.07.08 V1.4  ファイルのMD5値を表示する様に機能追加
                   ?キーによる検索時にノイズが表示される不具合を修正
  2008.02.23 V1.3  インデックスの表示欄に出現回数の項目を追加
                   検索文字列の上限（1024文字）を廃止
  2008.01.16 V1.2  日本語検索強化の為、N-gramのN値を変更（2→3）
                   メモリ管理方法を見直し（スタック値を変更）
                   関連ボタンを追加
                   インデックス詳細表示画面を追加
                   キャンセル時にゴミディレクトリが作成される不具合を修正
  2007.09.24 V1.1  フォルダ名でも絞り込みが可能な様に機能追加
                   EUC文字コードの認識率を向上
  2007.08.23 V1.0  新規作成

１３．謝辞 / LGPL 
  （１）ドキュメントコンバーター
      快くxdoc2txtの同梱を許可して頂いた hishida氏 に感謝致します。
      （hishida氏 http://ebstudio.info/home/xdoc2txt.html）

  （２）正規表現ライブラリ
       boostライブラリ(3.1.4-2)を使用させて頂いています。
       http://www.boost.org/
      ありがとうございます。

  （３）7-Zip
       7z.dll,7z.exeを同梱しています。
       ・7-ZipはGNU LGPLのライセンスです
       ・7-Zipのソースコードは、下記のURLより入手できます。
          http://www.7-zip.org/ 本家（英語）
          https://sevenzip.osdn.jp/ 日本語
        ありがとうございます。

  （４）一括検索機能のデフォルト
      デフォルトで表示されるリストは下記のHPより
      借用させて頂いたものです。
      ･四文字熟語
          Mr.凡人様
          http://www.h3.dion.ne.jp/~urutora/4ji1.htm（現在はhttps://bonjin-ultra.com/4ji1.htmへ移転）
      ありがとうございます。

  （５）mimalloc
      mimallocを使用させて頂いています。
      https://github.com/microsoft/mimalloc
      ありがとうございます。
