コンテンツにスキップ

どの処理がどのファイルを読み書きするか

扱うこと: tebunko が読み書きするファイルとフォルダの全部(置き場ごとの一覧・配布形ごとの置き場・読まない書かない場所)と、画面とインデクサが読み書きするファイルの表(作成・使用・文字コード・内容)。扱わないこと: 各ファイルの形式そのものの詳細(各ファイルのページ)、データの置き場所の決め方(データの置き場所とパスの決め方)。先に読むページ: データの置き場所とパスの決め方。

tebunko が読み書きするファイルとフォルダは、このページの「置き場ごとの一覧」にすべて載せる。書けない・読めないときの振る舞い(パスに [ ] がある・長すぎる・共有に届かない)は データの置き場所とパスの決め方 が正本で、ここには写さない。

置き場ごとの一覧

置き場は次の 8 つに分かれる。「読む」「書く」は、tebunko 本体(画面とインデクサ)とインストーラーがするものに限る。.NET・WPF・PowerShell の本体が読むもの、Office が自分で読み書きするもの、テストと tools/ が使う一時ファイルは含めない(Office 自身が元のファイルの隣に作る一時ファイル ~$*.xlsx などは、クロール対象フォルダの中にできることがある)。

flowchart LR
    TOOL["ツールのフォルダ<br>$rootDir"]
    DEF["既定のワークスペースの直下"]
    WS["ワークスペース<br>work/"]
    CRAWL["クロール対象フォルダ"]
    USER["利用者が選んだ場所"]
    INST["インストーラーが書く場所"]
    OS["OS・ほかのアプリの場所"]
    OLD["過去の版が残したものを消すときだけ触る場所"]
    APP["tebunko"]
    APP -- "読む・書く" --> TOOL
    APP -- "書けないときだけ書く" --> DEF
    APP -- "読む・書く" --> WS
    APP -- "読むだけ" --> CRAWL
    APP -- "読む・書く" --> USER
    INST -- "書く" --> TOOL
    INST -- "書く" --> OS
    APP -- "読む" --> OS
    APP -- "片付けだけ" --> OLD

ツールのフォルダ($rootDir)

zip 版は展開したフォルダ、インストーラー版は {app}(既定 %LOCALAPPDATA%\Programs\tebunko)、単一 .ps1 版はその .ps1 を置いたフォルダ。カレントディレクトリには依存しない。

パス 読む/書く 内容
scripts/(gui.ps1・shared/・tebunko/ の下の .ps1・.xaml・tebunko.ico) 読む 起動のたびに読み込む。画面の XAML・アイコンもここから読む(単一 .ps1 版は XAML を埋め込む。フォントは Windows 標準のものを使い、同梱しない)
scripts/tebunko/startup/*.txt 読む 起動に失敗したときに示す理由の文章(tebunko.bat。Notepad で開く)
scripts/ の下のすべてのファイル 書く(Mark-of-the-Web の解除) tebunko.bat(zip 版)と gui.ps1(単一 .ps1 版以外)が Unblock-File で、ダウンロードの印(Zone.Identifier)を外す(Mark-of-the-Web の解除)。印が無ければ何も変わらない
VERSION.txt 読む 版とコミット(画面の[バージョン情報]・エクスポートの目録)。配布物にだけある。単一 .ps1 版は埋め込み、開発中は無く「開発版」になる(作業ツリーの .git の HEAD・packed-refs・refs\tags などを読むだけで、タグとコミットを添える。readDevVersion。外部のコマンドは起動しない)
work\tmp\<PC の鍵>\open_copy\ 書く・消す [新規で開く]のコピー(Office 以外。copySourceForOpen)。起動時に、最後に使ってから 1 日より古いものだけを消す(clearOldOpenCopies)。閉じるときは消さない
work\tmp\<PC の鍵>\search_overflow\<PID>\<要求の番号>\ 書く・消す 検索の結果が件数の上限を超えたときの、表に入らない分(<作業の番号>.tsv・<作業の番号>.head.tsv。上限を超えた分)。次の検索の始めと画面を閉じるとき(検索の司令のスレッドの終わり)に自分の <PID> のフォルダごと消し、起動時に動いていないプロセスのものを裏で消す(removeStaleSearchOverflow)
setting.config 読む・書く 設定(設定ファイル(setting.config))。ツールのフォルダに書けるときだけここに置く。書けないときは「既定のワークスペースの直下」
setting.config.tmp 書く 設定を保存する途中の一時ファイル。書き終えたら setting.config に置き換える(writeTextLinesAtomic)
setting.config.broken-<日時>[-<番号>] 書く JSON として読めない設定の退避(repairBrokenSettings。起動のとき 1 回だけ)
startup_error.txt 書く 起動そのものに失敗したときの記録。tebunko.bat は上書き、gui.ps1 は追記(writeStartupErrorFile)。ツールのフォルダの直下にだけ書き、書けなければ残さない。インストーラー版のアンインストールで消える。gui.ps1 が追記する前に 1 MB 以上なら startup_error_previous.txt へ移す(増え方と片付け)
startup_error_previous.txt 書く startup_error.txt の前回の分(1 MB を超えたとき、あれば上書きして移す)。startup_error.txt と同じく、ワークスペースと一緒には動かない
.tebunko_write_test_<GUID>.tmp 書く(すぐ消える) ツールのフォルダに書けるかを、ファイルを作って調べる(testWritableFolder。閉じると消える DeleteOnClose)。EDR・DLP の記録に、この名前の作成が出る
tebunko.exe(インストーラー版) 読む 起動口。scripts/tebunko/gui.ps1 を PowerShell で起動する
tebunko.bat(zip 版) 読む 起動口

既定のワークスペースの直下

%USERPROFILE%\Documents\tebunko_ws(getDefaultWorkDir。環境変数 TEBUNKO_DEFAULT_WORKSPACE があればその絶対パス)。ツールのフォルダに書けないときだけ、設定の置き場になる。

パス 読む/書く 内容
setting.config・setting.config.tmp・setting.config.broken-<日時>[-<番号>] 読む・書く 上の表と同じ。ツールのフォルダに書けないときの逃げ先。ワークスペースを別の場所に移しても、設定はここに残る。ワークスペースの中身としては数えない(testSettingsFileName)
.tebunko_write_test_<GUID>.tmp 書く(すぐ消える) 設定の置き場に書けるかを調べる(testWritableFolder)
フォルダ自体 作る 設定を置くときと、ワークスペースが既定のとき

ワークスペース

既定は %USERPROFILE%\Documents\tebunko_ws。[設定]で変えられる(workspaceFolder)。設計書では work/ と書く。中の場所は Workspace クラス(ワークスペースの中の場所)が決める。

パス 読む/書く 内容
work/store/format.tsv(一時ファイルを経由して置き換える) 読む・書く 目録(形式の版・各インデックスの状態。インデックスのファイルの形)
work/store/content/(<インデックス名>/…/content_index.<拡張子>.<番号>.tsv・source_folder.txt) 読む・書く 本文インデックス。インデックス作成が書き、検索・一覧が読む。インポートで置き換え、クロール対象から外したフォルダの分は消す。<名前>.tmp に書いてから置き換える(writeContentIndexFile)。改名のときは <名前>_rename_<PID> を経由する
work/store/gram/<インデックス名>/(toc.tsv・g<10 桁>.seg) 読む・書く 2-gram の索引(検索で照合するファイルを絞る。作り直せる。2-gram の索引)。区画は一時ファイルに書いて置き換える
work/system_index/・work/system_index_state.tsv(前の版が作った検索用のファイル) 消す インデックス作成の始めと、インポートの取り込む前に消す(読まず、書かない。片付け)
work/store/ingest_status.tsv(.tmp を経由して置き換える) 読む・書く 取り込み一覧
work/store/pending_remove.tsv(.tmp を経由して置き換える。0 件なら消す) 読む・書く・消す 本文インデックスから外し終えていない、無くなった元のファイルの記録。次のインデックス作成の始めに読み、外し終えたら消す。work/store/ の中なので、移すときも store\ ごと移り、作り直しで置き場ごと消える
work/content_index/・work/ingest_status.tsv(前の版の置き場) 読む(古い形式かの判定)・消す 読まず、検索もしない。作り直しが終わったインデックスの分から消す
work/store/journal/ingest.tsv 読む・追記する 取り込みのジャーナル
work/publish/<PID>/(import/new/・import/previous/ を含む) 読む・書く 本文インデックスに入れる直前の TSV と、インポートの展開先
work/tmp/<PC の鍵>/<PID>/w<番号>/ 読む・書く 取り込みの作業領域。元のファイルのコピー・抽出途中のファイル
work/office_pids/<PC の鍵>/<PID>.tmp→<PID>.txt 読む・書く このツールが起動した Office の記録(office_process.ps1。.tmp に書いてから .txt に改名)。起動時の確認で読む
work/indexing_log.txt 書く インデクサの表示内容(実行ごとに上書き。writeIndexerLog)。先頭に版と環境の見出しを書く。[ログを開く]で Notepad が開く
work/indexing_log_previous.txt 書く 前回のインデックス作成の記録。インデックス作成が二重起動の鍵を取った後、今の indexing_log.txt をここへ移す(あれば上書き)
work/gui_error_log.txt 書く 画面の予期しないエラー(追記。writeErrorLog)。見出しを最後に書いた記録先と今の記録先が違うとき(プロセスの最初の記録・ワークスペースの切り替えの後)と、ファイルが無いとき(1 MB で移した直後を含む)に、記録の前に版と環境の見出しを書く。切り替えで記録が移るため、1 つのファイルに見出しが 2 つ入ることがある。1 MB 以上なら次の記録の前に gui_error_log_previous.txt へ移す。起動に失敗したときも、ここに書けるならここに書く
work/gui_error_log_previous.txt 書く gui_error_log.txt の前回の分(移すたびに上書き)
work/search_results.txt 書く 検索結果の出力
work/index/(過去の版が置いた本文インデックス) 読む・消す 残っているかの調べ・知らせ・[設定]の「移す」「消して最初から」のときだけ。ここには書かない
work/release/・work/test/・work/site/・work/cache/ – 開発用(tools/ が書く。配布物には入らない)。tebunko 本体は触らない

ワークスペースを移すとき(WorkspaceMover.MoveEntries)は、Workspace.Entries() のものだけを新しい場所へ移す・写す。

クロール対象フォルダ

利用者が登録した元のファイルのフォルダ。読むだけで、書かない。

読むもの いつ
フォルダの中身の一覧(再帰) インデックス作成の取り込み予定を作るとき(Get-ChildItem)。フォルダ・設定画面のツリーを開くとき
取り込み対象のファイル(.xlsx .xlsm .xls .xlsb .docx .docm .doc .pptx .pptm .ppt とテキストファイル・.pdf) 取り込むとき。元のファイルに影響を出さないよう、作業領域へコピーしてから読む(copyFileShared)。保護の判定のため先頭を読む(office_protection.ps1)
元のファイル 検索結果から開くとき(Office・既定のアプリ・Notepad・エクスプローラー)。tebunko は書かない

利用者が選んだ場所

パス 読む/書く 内容
エクスポートの保存先(<インデックス名>_インデックス_<yyyyMMdd>.zip)と <保存先>.tmp 書く 1 つのインデックスの zip(インデックスのエクスポート・インポート)
インポートする zip 読む ファイル選択ダイアログで選んだ zip
フォルダを選ぶダイアログ・ドラッグしたフォルダ 読む(存在の確認・一覧) ワークスペース・クロール対象フォルダの選択。ワークスペースを選んだときは、書けるかを試すファイルを作って消す
検索結果の[コピー] – クリップボードに書くだけで、ファイルは作らない

インストーラーが書く場所

installer/tebunko.iss(Inno Setup)。管理者権限なしで入れるのが既定。

場所 書く内容
{app}(既定 %LOCALAPPDATA%\Programs\tebunko。管理者は Program Files も選べる) tebunko.exe・scripts\・LICENSE・VERSION.txt。更新のとき、先に scripts\ を消してから入れる
{app}\uninstall アンインストーラー(unins000.exe など)
スタートメニュー({autoprograms}\tebunko)・デスクトップ(選んだときだけ) ショートカット
レジストリのアンインストールの情報(AppId の鍵) Windows のインストーラーが必ず書くものだけ。[Registry] は使わない
アンインストールで消すもの 入れたファイルと {app}\setting.config・{app}\startup_error.txt・{app}\startup_error_previous.txt・{app}\startup_error_moving.txt。ワークスペース(インデックス)は消さず、残っている場所を知らせる

OS・ほかのアプリの場所

場所 読む/書く 使うところ
%USERPROFILE%(GetFolderPath("UserProfile")) 読む(パスを組み立てる) 既定のワークスペースの場所(getDefaultWorkDir)
%SystemRoot%\System32\notepad.exe 起動する ログ・拡張子が危ないファイルを開く(openWithNotepad・[ログを開く])
%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe 起動する 起動口(tebunko.bat・tebunko.exe)。PATH からは探さない
explorer.exe 起動する [フォルダを開く]・フォルダの選択・「バージョン情報」のリンク(決まった 2 つのアドレスを既定のブラウザで開く)
%SystemRoot%\System32\ntoskrnl.exe 読む(ファイルの版だけ) ログの見出しの OS の版(getEnvironmentInfo)
Windows のあるドライブの Program Files・Program Files (x86) の Microsoft Office\root\Office16・Microsoft Office\Office16・Microsoft Office\Office15 の EXCEL.EXE・WINWORD.EXE・POWERPNT.EXE 読む(有無とファイルの版だけ。起動しない) ログの見出しの Office の版・形態・ビット数(findOfficeApps)。ほかのドライブや別の版の Office は 見つからない と出る
Excel・Word・PowerPoint のプロセス 起動・終了 古い形式の変換・元のファイルを開く。起動した PID は work/office_pids/ に記録する
設定値の %…%(ExpandEnvironmentVariables) 読む クロール対象フォルダ・ワークスペースに環境変数があれば展開する(folder.ps1・settings.ps1)
カレントドライブ 読む \server\share のように \ ひとつで始まる、ドライブ名の無いパス(今のドライブのパスには直さず、書かれたとおりに扱う)。ドライブ名だけ(D:)はドライブ直下とする
TEBUNKO_GUI_LEFTOVER_FILE(環境変数) 読む 画面のテスト用。残った Office の確認の行に偽の行を差し込むファイルの場所(利用者は使わない)
TEBUNKO_GUI(環境変数) 作る・読む 作るのは tebunko.exe(インストーラー版の起動口。起動する PowerShell のプロセスの中だけ)。gui.ps1 のパスを -Command に渡す。読むのは -Command の WildcardPattern.Escape の引数だけ
TEBUNKO_ROOT(環境変数) 作る・読む 作るのは tebunko.bat(その起動のプロセスの中だけ)。ツールのフォルダのパス(末尾は \)を -Command に渡す。読むのは -Command の Step 1 だけ
TEBUNKO_DEFAULT_WORKSPACE(環境変数) 読む 開発・確かめ用。既定のワークスペースの場所を差し替える(絶対パスだけ。利用者は使わない)

過去の版が残したものを消すときだけ触る場所

場所 触り方 内容
%TEMP%\tebunko\<PID>(legacyTmpParent) 消すだけ 過去の版が一時ファイルを置いていた場所。インデックス作成の始めに、終わったプロセスの分を消す。この場所には書かない
<ワークスペース>\index\(過去の版が置いた本文インデックス) 読む・消す 上の「ワークスペース」の最後から 2 行目のとおり

配布形ごとの置き場

配布形 ツールのフォルダ ツールのフォルダに書けるか 設定(setting.config)の置き場 起動口が読むもの
zip を展開した版 展開したフォルダ 展開先による。自分のフォルダなら書ける。読み取り専用の共有・Program Files に置くと書けない 書ければツールのフォルダ。書けなければ既定のワークスペースの直下 tebunko.bat → scripts/tebunko/startup/*.txt(失敗時)・gui.ps1・scripts/ 全体・VERSION.txt・XAML・アイコン。起動のたびに scripts/ の Mark-of-the-Web を外す(tebunko.bat と gui.ps1)
インストーラー(利用者ごと) %LOCALAPPDATA%\Programs\tebunko 書ける ツールのフォルダ({app}\setting.config) tebunko.exe → scripts/tebunko/gui.ps1 以下・VERSION.txt。gui.ps1 が scripts/ の Mark-of-the-Web を外す(インストーラーが書いたファイルには付かないので、何も変わらない)
インストーラー(Program Files・管理者が選ぶ) C:\Program Files\tebunko 普通の利用者は書けない 既定のワークスペースの直下(%USERPROFILE%\Documents\tebunko_ws\setting.config)。アンインストールでは消えないため、不要なら手で消す 利用者ごとの版と同じ
単一 .ps1 その .ps1 を置いたフォルダ 置き場による 書ければその .ps1 と同じフォルダ。書けなければ既定のワークスペースの直下 その .ps1 自身だけ。scripts/・VERSION.txt・XAML のファイルは読まない(埋め込み)。Mark-of-the-Web は外さない(動き始めた後に外しても効かないため)

どの配布形も、インデックス・取り込み一覧・ログ(ワークスペース)は、既定または[設定]で選んだ場所に置く。設定の置き場は $rootDir に書けるかを起動のたびに調べて決まる(データの置き場所とパスの決め方)。startup_error.txt は、どの配布形でもツールのフォルダの直下にだけ書く。

読まない・書かない場所

次の場所には書かない。

  • %LOCALAPPDATA%\tebunko: 設定の逃げ先にも起動失敗の記録にも使わない。読みも書きもしない(インストーラー版の %LOCALAPPDATA%\Programs\tebunko は別で、ツールのフォルダ)。
  • %TEMP%: 一時ファイルはワークスペースの tmp\ の下にだけ置く。過去の版が残した %TEMP%\tebunko\ を消すときのほかは触らない。
  • レジストリ: インストーラーが書くアンインストールの情報を除き、読みも書きもしない。
  • クロール対象フォルダ・元のファイル: 書かない(読むだけ)。

増え方と片付け

tebunko が作るファイルとフォルダが、何年使っても溜まり続けないことを、置き場ごとの表で確かめる。新しくファイルを足すときは、増え方と上限、誰がいつ消すかを決めてから、この表に行を足す。期間(何日より古いか)で消す処理は持たない。大きさと世代で止める。

  • 掃除の時機: 起動時・終了時のまとめての掃除はしない。ログは書く直前に大きさを見て回す(書かなければ増えないため。起動を遅くせず、届かない共有フォルダで起動が待たされない)。作業のフォルダは、終了時に消し、残りは次のインデックス作成の始めに消す。
  • 移せないとき: rotateLogFile は File.Replace で前回の分を置き換える。今のログが開いたまま・前回の分が読み取り専用・置き場所が File.Replace に対応しないときは、今のログは失わず、元のログに追記を続ける。開いたまま・読み取り専用は、閉じる・前回の分を消すなどで解けたあとの次の記録のときに移る。File.Replace に対応しない置き場所では、1 回目だけ移り、2 回目からは移せないままで上限なしに増える(本文インデックスの書き込み writeContentIndexFile も同じ File.Replace に頼るので、そういう置き場所はもともとワークスペースとして使えない)。起動失敗の記録(startup_error.txt)は、元を startup_error_moving.txt へ移してから前回の分に重ねる。重ねられず、元の名前に戻す移動も失敗したときだけ、startup_error_moving.txt が残る。
  • 画面のスレッドとの関係: ログを回す移動は、書く直前に 1 回だけ行う(今の追記と同じ種類の I/O。docs/design/gui/responsiveness.md の考えを超えない)。
  • ワークスペースの表の 1 列目は Workspace.Entries() の名前(GetFileName)と完全一致で tests/meta/workspace_files.Tests.ps1 が比べる。ワークスペースの外の置き場の表は、テストの対象外。

ワークスペース(Workspace.Entries())

名前 増え方 上限・片付け
store 元のファイルの数に比例(中の format.tsv は上書き、ingest_status.tsv は上書きで 1 つ) store\content は元のファイルが無くなれば消す。外したフォルダの分は利用者が確認ダイアログで消す(利用者のデータ。自動で期間では消さない)
content_index 増えない(前の版が置いたもの) 作り直しが終わったインデックスの分から消す。空になれば content_index ごと消す。消せなければ残し、次のインデックス作成の終わりに消す
index 増えない(過去の版が置いたもの) [設定]の「移す」「消して最初から」・インデックス作成の始めに片付ける
store\gram\<インデックス名>\ 元のファイルの数に比例 区画(g<10 桁>.seg)と目録 toc.tsv。作り直せる
ingest_status.tsv 増えない(前の版が置いたもの。今の取り込み一覧は store の中) 1 つ。作り直しが終われば消す
store/journal/ingest.tsv 追記(始めに入れ替え) 1 つ。1 記録ごとに追記して Flush する。始めに前回の分を読んで入れ替える
search_results.txt 上書き 1 つ
indexing_log.txt 実行ごとに上書き 1 回分。始めるとき(二重起動の鍵を取った後)に今の分を indexing_log_previous.txt へ移す
indexing_log_previous.txt 実行ごとに上書き 1 回分。合わせて 2 回分で止まる
gui_error_log.txt 追記(同じ例外は 60 秒に 1 回) 1 MB 以上なら、次の記録を書く前に gui_error_log_previous.txt へ移す
gui_error_log_previous.txt 移すたびに上書き 1 つ。合わせておよそ 2 MB で止まる(移せない場面を除く。「移せないとき」を参照)
publish 実行ごとに <PID> を作る 終了時・インポートの後に消す。残りは次のインデックス作成の始めに消す
tmp 実行ごとに <PC の鍵>\<PID> を作る 終了時に消す。強制終了の残りは次のインデックス作成の始めに、この PC の終わったプロセスの分を消す。共有のワークスペースでは、ほかの PC の残りは消えない(別に直す)
office_pids Office を起動するたびに <PC の鍵>\<PID>.txt Office を閉じたら消す。残りは画面の起動時の確かめで消す

ツールのフォルダ

名前 増え方 上限・片付け
startup_error.txt tebunko.bat は上書き、gui.ps1(writeStartupErrorFile)は追記 追記の側は 1 MB 以上なら、次の記録を書く前に startup_error_previous.txt へ移す。.bat の側は 1 回分
startup_error_previous.txt 移すたびに上書き 1 つ。合わせておよそ 2 MB で止まる(移せない場面を除く)
startup_error_moving.txt 移すときだけ 重ねられず、元の名前へ戻す移動も失敗したときだけ残る。次に移すとき同じ名前で上書きされ、1 つまで
setting.config.tmp 保存のたび 同じ名前で上書きされ 1 つまで
.tebunko_write_test_<GUID>.tmp 調べるたび 閉じると消える(DeleteOnClose)

既定のワークスペースの直下

名前 増え方 上限・片付け
setting.config.broken-<日時> 設定が壊れるたびに 1 つ 自動では消さない(壊れたときだけできる。設定を戻す手がかりそのもの)

利用者が選んだ場所

名前 増え方 上限・片付け
<名前>.zip.tmp(エクスポート) エクスポートのたび 書き終えたら置き換える。強制終了の残りは同じ名前の次のエクスポートで消え、1 つまで

処理ごとのファイルの表

画面(gui.ps1)とインデクサ(indexer.ps1)は同じプロセスの別のスレッドで動き、進み具合・取り込み予定・確認の返事・中止・エラーはメモリ上の受け渡しの口(newIndexerChannel)で受け渡す(画面とインデクサの受け渡し)。この節の表は、上の一覧のうち画面とインデクサが使うファイルに絞って、作成・使用・文字コード・内容を足した表である。

flowchart LR
    CFG[("setting.config")]
    GUI["画面<br>gui.ps1"]
    IDX["インデクサ<br>indexer.ps1"]
    ST[("store/format.tsv<br>store/ingest_status.tsv<br>store/journal/ingest.tsv")]
    IX[("work/store/content/")]
    GUI -- 読み書き --> CFG
    IDX -- クロール対象フォルダを読む --> CFG
    IDX -- "進捗・取り込み予定・エラー(受け渡しの口)" --> GUI
    GUI -- "確認の返事・中止(受け渡しの口)" --> IDX
    IDX -- 読み書き --> ST
    IDX -- 本文インデックスを書く --> IX
    GUI -- 検索・一覧 --> IX
    GUI -- 集計を読む --> ST
パス 種別 作成 使用 文字コード 内容
setting.config 設定 画面 画面・インデックス作成 UTF-8(BOM なし)、JSON クロール対象フォルダ・検索対象のツリーでチェックを外したフォルダ・元のフォルダ・検索条件・開き方(設定ファイル(setting.config))。PC ごとの設定
work/store/ingest_status.tsv インデックス作成の状態 インデックス作成 インデックス作成・画面 UTF-8(BOM 付き)、タブ区切り 先頭にクロール対象フォルダの行、以降 1 ファイル 1 行で相対パス・更新日時・サイズ・状態・TSV 数・取り込み日時・エラー・抽出版(取り込み一覧)
work/store/journal/ingest.tsv インデックス作成の状態 インデックス作成 インデックス作成 UTF-8(BOM 付き・CRLF) 取り込みのジャーナル。1 行に 1 記録(版・回・持・未・始・出・書・終)で、先頭の列が種類。司令だけが追記して Flush し(IngestJournal)、始めに前回の分を読んで入れ替える。取り込み一覧を書き直し終えると「終」を書く(書き出せなかったフォルダがあっても書く。そのフォルダは「出」が無いことで次の回へ「未」で持ち越す)。「終」が無いまま残っていれば、取り込み中に強制終了した(ジャーナルの形)。前の版の work/ingesting.txt が残っていれば、始めに 1 度だけ読んで消す
work/publish/<PID>/ 作業領域 インデックス作成 インデックス作成 – 1 ファイル分の TSV(<元のファイル名>/<場所>.tsv)。集め終わったら work/content_index の中へフォルダごと移す(publishIndexFiles)
work/tmp/<PC の鍵>/<PID>/(ワークスペースのパスに [ ] があるか長すぎるときは作らない。どのファイルも中間 TSV などをこのフォルダに作るため、テキストファイルを含めすべての取り込みをスキップする) 作業領域 インデックス作成 インデックス作成 – 取り込み中の元ファイルのコピー(Excel は元と同じファイル名、長すぎれば source.<拡張子>。Word・PowerPoint は source.<拡張子>。テキスト・PDF は source.copy。元のファイルに影響を出さないため)、抽出途中の sheet<N>.tmp(UTF-16LE)/ *.tsv、旧形式の変換用の source.doc source.ppt / converted.docx converted.pptx(データの置き場所とパスの決め方「自動生成(work/)」)
work/indexing_log.txt 記録 インデックス作成 利用者 UTF-8(BOM 付き) インデクサの表示内容(writeIndexerLog。実行ごとに上書き。先頭に版と環境の見出し)。前回の分は indexing_log_previous.txt
work/gui_error_log.txt 記録 画面 利用者 UTF-8(BOM 付き) 画面で起きた予期しないエラーの内容(writeErrorLog。追記。1 MB で gui_error_log_previous.txt へ移す)
work/store/content/ インデックス インデックス作成 検索 本文インデックスは UTF-16LE(BOM 付き)、LF。本文インデックスに入れる前の TSV は UTF-8(BOM 付き)、CRLF フォルダ・拡張子ごとの本文インデックス(content_index.<拡張子>.<番号>.tsv。元のファイルごと・場所(シート・ページ・スライド、図形・コメント・ヘッダー・フッター)ごとに、メタ情報の行と TSV の中身を並べる)。取り込み中だけ、シート・ページ・スライドごとの TSV と図形・コメント・ヘッダー・フッターの TSV(<元の場所>[shape]・<元の場所>[comment]・<元の場所>[header_footer])
work/store/content/<インデックス名>/source_folder.txt インデックス インデックス作成 画面 UTF-8(BOM 付き)、タブ区切り 1 行目は説明、2 行目は <インデックス名><TAB><元のフォルダ>(クロール対象フォルダと取り込み対象)。.tsv にすると検索対象になるため .txt
work/search_results.txt 出力 画面 利用者 UTF-8(BOM 付き)、CRLF 検索結果(検索結果ファイル)
利用者が選んだ保存先(既定 <インデックス名>_インデックス_<yyyyMMdd>.zip)と <保存先>.tmp 出力 画面(exportIndex) 利用者 zip(エントリー名は UTF-8) 1 つのインデックスの目録(tebunko-index.json)・取り込み一覧の行・本文インデックスのファイル(インデックスのエクスポート・インポート)
work/publish/<PID>/import/ 作業領域 画面(importIndex) 画面 – インポートで zip を展開する作業フォルダ(new/)と、上書きのとき前のインデックスを一時的に退避する previous/。インポートが終われば消す

各設定の意味は、使用する処理の設計書に記載する(クロール対象フォルダ → インデックス作成、検索対象インデックス → 検索、画面での扱い → 設定ファイル(setting.config))。