スクリプト機能

Phantis には、定型処理を自動化するスクリプト実行機能があります。
スクリプト言語は JavaScript (Jint) で、操作API は phantis オブジェクトとして提供されます。

1. 基本ルール

実行環境 JavaScript (Jint) です。ブラウザー API(window / document)はありません。
呼び出し形式 phantis.メソッド名(...) で操作します。補助関数としてグローバル sleep(ms)、ログ出力用に console.log(...) などが使えます。
行番号/列番号 ドキュメント内の行・列は 1-indexed(1始まり)です。
オフセット offset はバイトオフセット(ファイル先頭基準)です。
スクリプト配置 ./scripts フォルダに .js を配置してください。
メタデータ 先頭コメントの @name / @description / @shortcut を読み取ります(現在はメニュー表示向け)。
参考リンク JavaScriptの基本は The Modern JavaScript Tutorial、 文法や標準オブジェクトの確認は MDN JavaScript ガイド / MDN JavaScript リファレンス が便利です。
Jint固有の対応状況や制約は Jint 公式GitHub を確認してください。 ただしPhantisではブラウザーAPIではなく phantis API を使用します。

2. メタデータ例

// @name        ERROR抽出
// @description ERROR行を抽出してパネル表示します
// @shortcut    Ctrl+Shift+1

3. 型定義(APIで使用する主な型)

type ScriptLine = {
  lineNumber: number; // 1-indexed
  offset: number;     // byte offset
  text: string;
};

type ScriptGrepMatch = {
  file: string;
  line: number;       // 1-indexed
  offset: number;     // byte offset
  text: string;
};

type ScriptBookmark = {
  lineNumber: number; // 1-indexed
  preview: string;
  comment: string;
};

type ScriptSearchOptions = {
  regex: boolean;
  caseSensitive: boolean;
  fromLine: number;   // 現状の getSearchOptions() は 1
};

type SearchOptions = {
  regex?: boolean;
  caseSensitive?: boolean;
  limit?: number;     // 0 or omitted = unlimited
  skip?: number;      // default: 0
};

type MultiFileGrepOptions = {
  regex?: boolean;
  caseSensitive?: boolean;
  filter?: string;    // "*.log;*.txt" / "*.log,*.txt"
  subdirs?: boolean;  // default: true
  limit?: number;     // 0 or omitted = unlimited
  skip?: number;      // default: 0
};

type ExecOptions = {
  timeout?: number;   // seconds, default: 30
  workdir?: string;
};

type AggregateOptions = {
  regex?: boolean;
  caseSensitive?: boolean;
  group?: number;     // 0 = match whole text, 1+ = capture group number
  limit?: number;     // 0 or omitted = unlimited
};

type AggregateResult = {
  value: string;
  count: number;
};

type ProcessMetrics = {
  cpuPercent: number;
  workingSetMB: number;
  privateMB: number;
  heapMB: number;
  readBytesPerSec: number;
  writeBytesPerSec: number;
  threads: number;
  handles: number;
};

type SelectionOffsets = { start: number; end: number }; // 選択なし: -1 / -1
type VisibleLineRange = { firstLine: number; lastLine: number };
type FindHit = { line: number; offset: number; text: string } | null;

4. API リファレンス(カテゴリ別)

各APIは メソッド名 / 戻り値 / 説明 の順に記載しています。 行番号は原則として 1始まりoffset はファイル先頭からの バイトオフセット です。 ファイル未オープン時は、空文字列、0、空配列、null など安全な既定値を返すAPIと、パス不正などで例外になるAPIがあります。

巨大ファイルでは、filter() / grep() / countMatches() などの全体走査APIは時間がかかります。 大量ヒットが想定される場合は limit / skip を使ってページングしてください。

4-1. ファイル・ドキュメント

isFileOpen()boolean現在のウィンドウでファイルが開かれているかを返します。ファイル依存APIを呼ぶ前のガードに使います。
openFile(path: string)void指定したファイルパスを現在のウィンドウで開きます。path はフルパス推奨です。存在しないファイル、アクセスできないファイルでは例外になります。
openFileDialog()string | nullファイル選択ダイアログを表示し、選択されたファイルを開きます。戻り値は選択されたフルパスです。ユーザーがキャンセルした場合は null を返します。
closeFile()void現在開いているファイルを閉じます。未オープン時は何もしません。
reloadFile()void現在のファイルをディスクから再読み込みします。外部で更新されたログや文字コード切り替え後の再確認に使います。未オープン時は何もしません。
getFilePath()string現在開いているファイルのフルパスを返します。例: C:\logs\app.log。未オープン時は空文字列 "" を返します。
getFileName()string現在開いているファイルのファイル名だけを返します。ディレクトリ部分は含みません。例: C:\logs\app.log を開いている場合は app.log。未オープン時は空文字列 "" を返します。
getFileSize()number現在開いているファイルサイズをバイト単位で返します。ステータス表示、処理対象サイズの確認、簡易レポート作成に使えます。未オープン時は 0 を返します。
getLineCount()number現在の総行数を返します。巨大ファイルを開いた直後は推定値の場合があります。確定値かどうかは isLineCountExact() で確認してください。
isLineCountExact()booleangetLineCount() がバックグラウンド解析完了後の確定値かどうかを返します。厳密な最終行番号が必要な処理では、この値を確認してください。
getEncoding()string現在の表示エンコーディングを .NET の WebName 形式で返します。例: utf-8shift_jis。未オープン時は空文字列 "" を返します。
setEncoding(name: string)void指定した文字コードで現在ファイルを再読み込みします。nameutf-8shift_jis などのエンコーディング名です。未知の名前は例外になります。
getLineEnding()string検出された改行コードを返します。戻り値は主に CRLF / LF / CR です。未オープン時は空文字列 "" を返します。
getLine(lineNumber: number)string指定した1始まりの行番号に対応するテキストを返します。範囲外の行番号は内部的に補正されます。ファイル未オープン時は空文字列 "" を返します。
getLines(startLine: number, endLine: number)string[]指定した1始まりの行範囲を配列で返します。開始行と終了行はどちらも含みます。範囲が不正、または未オープン時は空配列を返します。
getCurrentLine()string現在のキャレット行のテキストを返します。キャレット位置を基準にした簡易分析やAIへ送るコンテキスト作成に使えます。未オープン時は空文字列 "" を返します。
getSelectedText()string現在選択されているテキストを返します。選択なしの場合は空文字列 "" です。複数行選択や矩形選択の内容取得に使えます。
getScriptDir()string実行中のスクリプトファイルが置かれているフォルダを返します。付属設定ファイルやレポート出力先をスクリプト相対で扱う場合に使います。AI生成コードなどファイル実体がない実行では空文字列 "" です。
readTextFile(path: string, encoding?: string)string指定パスのテキストファイルを読み込み、内容を文字列で返します。encoding 省略時は utf-8 です。ファイルが存在しない、または不明なエンコーディングの場合は例外になります。
writeFile(path: string, content: string, encoding?: string)void指定パスへテキストを書き込みます。親フォルダが存在しない場合は作成します。encoding 省略時は utf-8 です。レポートや設定ファイルの保存に使えます。
listFiles(folder: string, filter?: string, subdirs?: boolean)string[]指定フォルダ内のファイル一覧をフルパス配列で返します。filter*.log*.log;*.txt のようなワイルドカードを指定できます。subdirstrue の場合はサブフォルダも再帰検索します。

4-2. ナビゲーション・オフセット

jumpToLine(lineNumber: number)void指定した1始まりの行番号へジャンプします。行番号ベースの移動に使います。存在しない行を指定した場合は、表示可能な範囲へ補正されます。
firstLine()voidファイル先頭へ移動します。ショートカットや自動処理の開始位置リセットに使えます。
lastLine()voidファイル末尾へ移動します。ログの最後、追記直後の状態、tail開始前の位置合わせなどに使えます。
scrollLines(delta: number)void現在位置から指定行数だけスクロールします。正数は下方向、負数は上方向です。キャレット位置ではなく表示位置の移動です。
scrollPages(delta: number)void現在位置から指定ページ数だけスクロールします。1 は1ページ下、-1 は1ページ上です。画面単位でざっくり移動したい場合に使います。
scrollToOffset(offset: number)void指定したバイトオフセット付近へジャンプします。filter()grep()lineToOffset() の戻り値と組み合わせると、大きなファイルでも正確に該当位置へ移動できます。
lineToOffset(lineNumber: number)number1始まりの行番号を、その行頭のバイトオフセットへ変換します。戻り値は scrollToOffset() に渡せます。ファイル未オープン時は 0 を返します。
getVisibleOffset()number現在画面の先頭表示行に対応するバイトオフセットを返します。現在の表示位置を保存したり、後で同じ位置へ戻る用途に使えます。
getCursorOffset()number現在のキャレット行の行頭バイトオフセットを返します。キャレット位置を基準にした処理やレポート出力に使えます。ファイル未オープン時は 0 を返します。
getSelectionOffsets()SelectionOffsets選択範囲の開始行・終了行に対応する行頭バイトオフセットを { start, end } で返します。選択がない場合は { start: -1, end: -1 } を返します。
getVisibleLineRange()VisibleLineRange現在画面に表示されている行範囲を { firstLine, lastLine } で返します。どちらも1始まりです。表示中の範囲だけを処理したい場合に使えます。

4-3. カーソル・選択

getCursorLine()number現在のキャレット行を1始まりで返します。キャレットがまだ設定されていない場合は 0 を返します。
getCursorCol()number現在のキャレット列を1始まりで返します。行内の桁位置を使った処理や、選択範囲作成の基準に使えます。
setCursor(line: number, col?: number)voidキャレットを指定行・指定列へ移動します。linecol は1始まりです。行または列が範囲外の場合は例外になります。
cursorUp(count?: number)voidキャレットを上方向へ移動します。count 省略時は1行です。ファイル先頭を越える場合は先頭側へ丸められます。
cursorDown(count?: number)voidキャレットを下方向へ移動します。count 省略時は1行です。ファイル末尾を越える場合は末尾側へ丸められます。
cursorLeft(count?: number)voidキャレットを左方向へ移動します。count 省略時は1文字です。
cursorRight(count?: number)voidキャレットを右方向へ移動します。count 省略時は1文字です。
select(startLine: number, startCol: number, endLine: number, endCol: number)void指定した範囲を選択します。すべて1始まりです。複数行選択や、スクリプトで検索した周辺範囲を選択状態にしたい場合に使えます。範囲外指定は例外です。
selectLine(lineNumber: number)void指定した1始まりの行をまるごと選択します。ログの1行をユーザーに見せる、コピー対象として選択する、といった用途に使えます。
selectCharsFromCursor(n: number)void現在のキャレット位置から指定文字数分を選択します。正数は右方向、負数は左方向です。行内の一部だけを選択したい場合に使えます。
selectLinesFromCursor(n: number)void現在のキャレット行を基準に指定行数分を選択します。正数は下方向、負数は上方向です。周辺ログをまとめて選択する用途に向いています。

4-4. 検索・フィルタ・Grep

getSearchPattern()stringツールバー検索ボックスに現在入力されている文字列を返します。検索実行は行わないため、検索UIの状態保存や、現在条件を元にしたスクリプト処理に使えます。
setSearchPattern(pattern: string)voidツールバー検索ボックスへ文字列を設定します。このAPI自体は検索を実行しません。設定後に findNext()findPrev()runFilter() などを呼び出してください。
getSearchOptions()ScriptSearchOptions現在の検索UI設定を { regex, caseSensitive } で返します。regex は正規表現ボタンの状態を反映します。スクリプト側で同じ条件を引き継ぐときに使います。
findNext(pattern: string, options?: SearchOptions)FindHit現在のキャレット位置から下方向へ検索します。ヒット時は { line, offset, text } を返します。line は1始まり、offset は行頭バイトオフセットです。見つからない場合、未オープン時、無効な正規表現では null を返します。
findPrev(pattern: string, options?: SearchOptions)FindHit現在のキャレット位置から上方向へ検索します。戻り値の形式は findNext() と同じです。見つかった offsetscrollToOffset() に渡して再ジャンプできます。
isValidRegex(pattern: string)boolean指定文字列が .NET 正規表現としてコンパイル可能か確認します。ユーザー入力を regex: true で検索する前の事前チェックに使えます。
filter(pattern: string, options?: SearchOptions)ScriptLine[]現在開いているファイルを検索し、一致行を { lineNumber, offset, text } の配列で返します。regex / caseSensitive に加えて skip / limit を指定できます。limit 到達時点でスキャンを早期終了するため、大容量ファイルのページングに向いています。
runFilter(pattern: string)voidフィルタパネルへパターンを設定し、現在ファイルに対してフィルタ検索を実行して結果を表示します。スクリプトからUI上のフィルタ機能を直接起動したい場合に使います。
getFilterResults()ScriptLine[]現在フィルタパネルに表示されている結果を配列で返します。各要素には lineNumber / offset / text が入ります。フィルタ済みの行をCSV出力、追加集計、ブックマーク化する用途に使えます。
showInFilterPanel(lines: ScriptLine[], title?: string)voidスクリプトで作成した任意の行配列をフィルタパネルに表示します。lineNumber は1始まり、offset はジャンプ用のバイトオフセットです。title は将来拡張用で、現状は表示タイトルとしては使用されません。
countLinesWith(pattern: string, options?: SearchOptions)numberパターンに一致した行数を返します。1行に複数回マッチしても1行として数えます。ログ内で「該当行が何行あるか」を知りたい場合に使います。
countMatches(pattern: string, options?: SearchOptions)numberファイル全体に含まれる総マッチ数を返します。1行に複数回現れる場合はその回数分カウントします。単語や値の出現回数を数える用途に向いています。
grep(folder: string, pattern: string, options?: MultiFileGrepOptions)ScriptGrepMatch[]指定フォルダ配下の複数ファイルを横断検索し、{ file, line, offset, text } の配列を返します。filter で対象拡張子、subdirs で再帰検索、regex / caseSensitive で検索条件を指定します。skip / limit は全ファイル走査後の結果に適用されます。

4-5. HEX・表示モード・テーマ

isHexMode()boolean現在のウィンドウがHEX表示モードかどうかを返します。バイナリ処理や getHexOffset() を使う前の状態確認に使えます。
setHexMode(on: boolean)voidHEX表示モードをON/OFFします。ONにするとテキスト表示からHEXビューへ切り替わります。CSVカラム表示など排他的な表示モードとは同時利用できません。
getHexOffset()numberHEXビューで選択中、または現在表示中の先頭に近いバイトオフセットを返します。HEXモードでない場合でも取得可能な表示位置を返しますが、HEX操作の基準として使う場合は isHexMode() で確認してください。
readBytes(offset: number, length: number)number[]ファイルの指定バイト範囲を読み込み、0〜255 の数値配列で返します。length は最大1MBに制限されます。未オープン時、読み込み失敗時、length <= 0 の場合は空配列です。
readBytesAsHex(offset: number, length: number)stringreadBytes() の結果を "FF D8 FF" のようなスペース区切り16進文字列で返します。バイナリヘッダ確認やレポート出力に使いやすい形式です。
findBytes(pattern: string, fromOffset?: number)number16進パターンをファイル内から検索し、最初に見つかったバイトオフセットを返します。pattern"FF D8 FF" または "FFD8FF" 形式です。見つからない場合、無効なパターン、未オープン時は -1 です。
── HEX 編集モード操作 ──
isHexEditMode()booleanHEX編集モード中かどうかを返します。writeBytes() などの編集APIを呼ぶ前に確認してください。
getHexSelection(){offset, length} | nullHEXビューの現在の選択範囲を {offset, length} で返します。選択がない場合は null
selectHexRange(offset: number, length?: number)voidHEXビューで指定オフセット・長さのバイト範囲を選択してスクロールします。length 省略時は1バイト選択。
writeBytes(offset: number, data: number[] | string)booleanHEX編集モード中にファイルの offset から data の内容で上書きします。data[0xDE, 0xAD, 0xBE, 0xEF] の配列か "DE AD BE EF" 形式の文字列。Undo 可能。成功時 true
insertBytes(offset: number, data: number[] | string)booleanHEX編集モード中に offset の直前にバイト列を挿入します。ファイルサイズが増加します。Undo 可能。成功時 true
deleteBytes(offset: number, count: number)booleanHEX編集モード中に offset から count バイトを削除します。ファイルサイズが減少します。Undo 可能。成功時 true
fillHexBytes(offset: number, count: number, value: number)booleanHEX編集モード中に offset から count バイトを value(0〜255)で埋めます。Undo 可能。成功時 true
undoHexEdit()booleanHEX編集モードで直前の操作を Undo します。Undo できた場合 true。スクリプトから複数回呼べば複数回 Undo できます。
getHexEditChanges(){offset, length, isDelete}[]HEX編集セッション中の変更箇所一覧を返します。isDelete: false は現在ファイル座標での挿入/上書き範囲、isDelete: true は元ファイル座標での削除範囲。
saveFile()booleanHEX編集の内容を元ファイルへ上書き保存します。プレビューダイアログは表示されません。保存後は編集モードが終了してファイルが再オープンされます。HEX編集モード中でない場合や保存失敗時は false
── CSV 操作 ──
isCsvMode()booleanCSV/TSVのカラム表示モードが有効かどうかを返します。通常テキスト表示とカラム表示を切り替えるスクリプトで状態確認に使います。
setCsvMode(on: boolean)voidCSVカラム表示モードをON/OFFします。ONにするとHEX表示は自動的にOFFになります。テキストとして開いたCSVを列単位で確認したい場合に使います。
getCsvColumnCount()numberCSVカラムビューが認識している最大列数を返します。CSVモードでない場合は 0。ファイル全体をスキャンし終えていない場合は暫定値になることがあります。
getCsvSeparator()string現在のCSV区切り文字を1文字の文字列で返します(デフォルトは ",")。TSV の場合は "\t"
getCsvColumnNames()string[]ファイルの1行目をヘッダーとして列名の配列を返します。CSVモードでない場合は空配列。
getCsvCell(line: number, col: number)string指定行(1-indexed)・列(1-indexed)のセル値を返します。クォートは除去されます。範囲外は空文字。
parseCsvRow(lineText: string)string[]CSV行テキストをセル配列に分割して返します。CSVモードの区切り文字を使用。RFC 4180 準拠のクォート対応。getLine() と組み合わせてセル単位の加工が可能です。
isTailMode()booleantailモードが有効かどうかを返します。ログ追従中かどうかを判定して、スクリプト側で自動追従のON/OFFを切り替える用途に使えます。
setTailMode(on: boolean)voidtailモードをON/OFFします。ONにするとファイル末尾への追従を開始します。調査用スクリプトで一時的に末尾追従へ切り替える場合に便利です。
getTheme()string現在適用されているテーマ名を返します。テーマ連動のスクリプトや、処理後に元のテーマへ戻す用途に使えます。
setTheme(name: string)void指定したテーマ名へ切り替えます。プリセットテーマ名、またはテーマフォルダに保存されたカスタムテーマ名を指定します。存在しないテーマ名では切り替わらない場合があります。
setWindowTitle(title: string)void現在ウィンドウのタイトルを一時的に上書きします。空文字列 "" を渡すと標準タイトルへ戻します。処理中の状態表示や、スクリプト専用ウィンドウの識別に使えます。
openNewWindow(path?: string)void新しいPhantisウィンドウを開きます。path を指定するとそのファイルを開き、省略または空文字の場合は空ウィンドウを開きます。

4-6. ハイライト・ログレベル色分け

addHighlight(pattern: string, fgColor: string, bgColor?: string, regex?: boolean, matchCase?: boolean)void手動ハイライトルールを追加し、画面を再描画します。色は #RRGGBB 形式で指定します。regextrue の場合は正規表現として扱い、matchCasetrue の場合は大文字小文字を区別します。
clearHighlights()voidスクリプトや手動操作で追加されたハイライトルールをすべて削除し、表示を更新します。処理前に既存強調をリセットしたい場合に使います。
addLogLevelRule(pattern: string, fgColor: string, bgColor?: string, isRegex?: boolean, fullLine?: boolean)voidログレベル色分けルールを追加します。fgColor / bgColor#RRGGBB 形式です。isRegex で正規表現、fullLine で行全体色付けを指定できます。
clearLogLevelRules()voidログレベル色分けルールをすべて削除します。プリセットを作り直す前や、スクリプトから一括設定する前の初期化に使います。
getLogLevelRules()object[]現在のログレベル色分けルール一覧を返します。各要素は { pattern, fgColor, bgColor, isRegex, fullLine, enabled } です。現在設定のバックアップや、JSON保存用の取得に使えます。

4-7. クリップボード・ブックマーク

getClipboard()stringWindowsクリップボードにテキストが入っている場合、その文字列を返します。テキストがない場合は空文字列 "" です。画像やファイルリストなど非テキスト形式は取得しません。
setClipboard(text: string)void指定文字列をWindowsクリップボードへ設定します。空文字列を渡した場合は、クリップボードAPIの制約を避けるため単一スペースとして設定されます。
addBookmark(lineNumber: number, comment?: string)void指定した1始まりの行番号へブックマークを追加します。comment はブックマークリストに表示するメモです。検索ヒットや異常行を後で見返す用途に向いています。
clearBookmarks()void現在ファイルのブックマークをすべて削除します。スクリプトで新しい検出結果をブックマークする前の初期化に使います。
getBookmarks()ScriptBookmark[]現在のブックマーク一覧を返します。各要素は { lineNumber, preview, comment } です。lineNumber は1始まり、preview は対象行の抜粋です。

4-8. エクスポート・UI・印刷・制御

exportText(lines: ScriptLine[], filePath?: string)booleanScriptLine[] をタブ区切りテキストとして保存します。filePath 省略時は保存ダイアログを表示します。保存成功時は true、キャンセル時は false です。
exportCsv(lines: ScriptLine[], filePath?: string)booleanScriptLine[]LineNumber,Text 列のCSVとして保存します。本文中のダブルクォートはCSV用にエスケープされます。filePath 省略時は保存ダイアログを表示します。
message(text: string)void情報メッセージダイアログを表示します。処理完了、注意事項、簡単な結果通知に使います。ユーザーがOKを押すまでスクリプトは待機します。
confirm(text: string)booleanOK/キャンセルの確認ダイアログを表示します。OKなら true、キャンセルなら false です。大量処理や上書き保存前の確認に使います。
prompt(text: string, defaultValue?: string)string | null1行入力ダイアログを表示し、入力文字列を返します。キャンセル時は null です。defaultValue を指定すると初期値として表示されます。
selectItem(title: string, items: string[])string | null候補リストから1つ選択するダイアログを表示します。選択してOKなら選択文字列、キャンセルなら null を返します。処理モードや出力形式の選択に向いています。
setStatusMessage(text: string)voidメイン画面のステータスバーへ文字列を表示します。長時間処理中の状態表示や、完了後の簡易結果表示に使えます。空文字列を渡すと表示をクリアできます。
setProgress(value: number, max?: number)voidステータスバーへ進捗を表示します。max 指定時は value/max (percent%) 形式、省略時は value のみを表示します。ループ処理中に定期更新すると進行状況を伝えられます。
print()void現在の表示内容を対象に印刷ダイアログを開きます。実際の印刷はユーザー操作に従います。
printPreview()void現在の表示内容を対象に印刷プレビューを開きます。巨大ファイルや長い行を含む場合、プレビュー生成に時間がかかることがあります。
exec(command: string, options?: ExecOptions)stringcmd.exe /c で外部コマンドを実行し、標準出力を返します。標準出力が空の場合は標準エラーを返します。timeout は秒単位、既定は30秒です。外部コマンドは任意コード実行になるため、信頼できるスクリプトでのみ使用してください。
exit()voidPhantisを終了します。未保存設定やセッション保存の通常終了処理が走るため、バッチ処理の最後にアプリを閉じたい場合に使えます。

4-9. 文字列変換・集計・プロセスメトリクス

transform(text: string, type: string)string文字列を指定タイプで変換して返します。typebase64encode / base64decode / urlencode / urldecode / hexencode / hexdecode / toupper / tolower / sha256 / md5 / unixdatetime を指定できます。未知のタイプや変換失敗時は例外になります。
aggregate(pattern: string, options?: AggregateOptions)AggregateResult[]現在ファイル全体をスキャンし、マッチした値ごとの件数を { value, count } 配列で返します。regex / caseSensitive / group / limit を指定できます。group に1以上を指定すると、正規表現の指定キャプチャグループの値で集計します。
getCpuUsage()numberPhantisプロセスのCPU使用率をパーセントで返します。差分計算のため、初回呼び出しや短すぎる間隔では 0 に近い値になることがあります。継続監視では少し間隔を空けて呼び出してください。
getMemoryMB()numberPhantisプロセスのメモリ使用量をMB単位で返します。値はプロセスモニターのメモリグラフと同じWorking Set基準です。
getProcessMetrics()ProcessMetricsPhantisプロセスのCPU、メモリ、GCヒープ、Read/Write I/O、スレッド数、ハンドル数をまとめて返します。プロセスモニター相当の情報をスクリプトから記録したい場合に使います。

5. グローバル関数・console

sleep(ms: number)void指定ミリ秒だけスクリプト実行を待機します。UIスレッドを完全に止める用途ではなく、短い間隔調整やデモ用の待ち時間に留めてください。
console.log(a?: any, b?: any, c?: any, d?: any)voidスクリプト実行ログパネルへ通常ログを出力します。最大4引数まで受け取り、空白区切りで連結して表示します。途中経過や集計結果の確認に使えます。
console.info(a?: any, b?: any, c?: any, d?: any)voidconsole.log() と同じ通常ログとして出力します。読みやすさのために「情報ログ」として使い分けたい場合に利用できます。
console.warn(a?: any, b?: any, c?: any, d?: any)void警告ログとして出力します。処理は継続できるものの注意が必要な条件、スキップしたファイル、想定外の入力などを記録する用途に向いています。
console.error(a?: any, b?: any, c?: any, d?: any)voidエラーログとして出力します。例外を捕捉した場合や、処理を中断すべき失敗をユーザーへ明示したい場合に使います。
console.debug(a?: any, b?: any, c?: any, d?: any)void詳細確認用のログを出力します。開発・調査中の内部値、ループ回数、分岐条件など、通常利用では不要な情報の表示に使います。
console.trace(a?: any, b?: any, c?: any, d?: any)voidconsole.debug() と同じ詳細ログとして出力します。処理の流れを追いたい場合に、関数入口や重要な分岐点へ入れると便利です。
console.clear()voidスクリプト実行ログパネルの表示をクリアします。長い処理を再実行する前に古いログを消したい場合に使います。

6. 付属サンプルスクリプト(最新版)

同梱サンプルは scripts フォルダにあります。
入門から上級まで段階的に API を試せます。

ファイルレベル主な内容
00_tutorial.js 入門 Step 1〜7 で filter / selectItem / setProgress / findNext / lineToOffset / scrollToOffset / addBookmark を順に体験。
log_analyzer.js 中級 setProgress で進捗表示、scrollToOffset で正確ジャンプ、selectItem でエクスポート形式選択。
grep_and_export.js 中級 selectItem でフィルタパネル / CSV / TXT を選択、scrollToOffset で初ヒットへジャンプ。
multi_highlight.js 初〜中 selectItem でモード選択(設定/クリア)、setProgress で件数確認の進捗表示。
file_statistics.js 中級 setProgress で 1% 刻み進捗、selectItem でアクション選択、writeFile + getScriptDir でレポート保存。
folder_grep.js 上級 listFiles で列挙 → grep(folder, pattern) で横断検索 → TSV を writeFile 保存 → openFile + scrollToOffset でヒット位置を開く。
log_colorizer.js 上級 5プリセット(標準 / Apache / Windowsイベント / Python / SQLスロー)を selectItem で選択。addLogLevelRule 一括設定、writeFile で JSON 保存、readTextFile + listFiles で再読み込み。

7. サンプルコード抜粋

1) 現在ファイルを抽出してフィルタパネルに表示

const hits = phantis.filter("ERROR|WARN", { regex: true, caseSensitive: false });
phantis.showInFilterPanel(hits);
phantis.setStatusMessage(`hit: ${hits.length}`);

2) 複数ファイル Grep(サブフォルダ含む)

const matches = phantis.grep("C:\\logs", "timeout", {
  regex: false,
  caseSensitive: false,
  filter: "*.log;*.txt",
  subdirs: true
});
phantis.message(`match: ${matches.length}`);

3) HEX検索してジャンプ

const pos = phantis.findBytes("FF D8 FF");
if (pos >= 0) {
  phantis.scrollToOffset(pos);
  phantis.setStatusMessage(`Found at 0x${pos.toString(16).toUpperCase()}`);
}

4) 大量ヒットのページング処理(limit / skip)

var PAGE = 5000;
var totalHits = phantis.countLinesWith("ERROR", { regex: false, caseSensitive: false });
var totalPages = Math.max(1, Math.ceil(totalHits / PAGE));

for (var page = 0; ; page++) {
  var batch = phantis.filter("ERROR", {
    regex: false,
    caseSensitive: false,
    skip: page * PAGE,
    limit: PAGE
  });
  if (batch.length === 0) break;

  // batch を処理(Jintヒープに載る件数を PAGE で制御)
  phantis.setProgress(page + 1, totalPages);
}
phantis.setStatusMessage("ページング処理が完了しました。");

8. 旧API名からの移行

旧: grep(pattern)新: filter(pattern, options?)(現在ファイルを対象)
旧: runGrep(pattern)新: runFilter(pattern)
旧: getGrepResults()新: getFilterResults()
旧: showInPanel(lines)新: showInFilterPanel(lines, title?)

9. 注意事項(安全運用)

外部コマンド exec() は OS コマンドを実行します。信頼できるスクリプトのみ実行してください。
ファイルI/O readTextFile() / writeFile() / listFiles() で任意パスへアクセスできます。
タイムアウト スクリプトはタイムアウト(既定60秒)とメモリ上限(既定512MB)の制約があります。これらの設定値は設定メニューで変更可能です。
例外 範囲外行/列、未知エンコーディング、存在しないファイルなどは例外になります。

おすすめ書籍・アイテム