Big JSONL Viewer(VS Code 拡張機能)

.jsonl と .ndjson を、エディタの中でそのまま高速で検索できるテーブルとして開きます。スクロールしきれないほど大きなファイルと、いままさに書き込まれ続けているログのために作りました。

インストール

VS Code Marketplace で入手

コマンドラインから入れる場合:

code --install-extension rootfily.big-jsonl-viewer

VS Code の拡張機能パネルで「Big JSONL Viewer」を検索してもかまいません。

無料・MIT ライセンス。

このサイトでも大きなファイルは開けるのに、なぜ拡張機能?

同じ問題の別々の半分を担っているからです。jsonl.co は「いま手元にある 1 つのファイル」向けです。放り込んで、見て、変換して、離れる。拡張機能は「作業している場所にもともと置かれているファイル」向けです。リポジトリの中、SSH でつないだサーバーの上、コンテナの中。

いまも増え続けるログ

ブラウザが見られるのは、選んだ瞬間のファイルのスナップショットだけです。拡張機能はディスク上のファイルを監視し、新しい行が届くたびにインデックスを差分で伸ばし、tail -f と同じように末尾を追い続けます。

その場で編集して保存

壊れた行を直して Cmd+S を押すだけ。ファイルはストリーミングで書き戻されるので、数 GB のファイルでも行の長さが変わって問題ありません。

ファイルがある場所で動く

Remote-SSH、Dev Containers、WSL —— コードが動く場所で拡張機能も動きます。3 行読むために 4 GB のログを手元へコピーする必要はありません。

できること

テーブル表示
列は先頭の数行から推定し、仮想スクロールで描画します。100 万行のファイルでも数十行のファイルと同じようにスクロールできます。
検索とフィルタ
生の行に対する部分一致でも、パース済みオブジェクトに対する key:value 一致でも検索できます。フィルタモードでは一致しない行が隠れます。
パースエラーをその場で表示
壊れた行はその位置でハイライトされ、パーサーのメッセージが添えられます。壊れた行を二分探索で探す必要はもうありません。
巨大ファイルのための設計
各行のバイトオフセットのインデックスを一度だけ構築してキャッシュし、以降は表示中の範囲だけをディスクから読みます。サイズにかかわらず、開くのは一瞬です。
任意の行を展開
パース済み JSON をツリーで確認し、生の行をテキストで見て、その場で編集できます。
データは端末から出ません
ファイルはディスクから読み込まれ、CSP で制限された webview に描画されます。アップロードもネットワーク通信もなく、テレメトリは既定で無効です。

FAQ

.ndjson ファイルにも対応していますか?

対応しています。NDJSON と JSONL は同じ形式の別名で、拡張機能は両者を区別しません。既定では .jsonl のエディタとして登録されます。.ndjson や .txt は「Open With…」から JSONL Viewer を選んでください。

どれくらい大きなファイルを開けますか?

数 GB が設計上の想定です。行のバイトオフセットのインデックスを構築してキャッシュし、実際に表示している行だけを読むため、ファイルが大きくなってもメモリ使用量はほぼ一定です。

データはどこかに送信されますか?

いいえ。ファイルはディスクから読み込まれ、ネットワーク通信ができない CSP 制限付きの webview に描画されます。VS Code の制限モードでも動作し、ワークスペースのコードを実行することはありません。任意の利用状況テレメトリは既定で無効です。

編集はできますか、それとも読み取り専用ですか?

編集できます。行を展開して生のテキストを書き換え、Cmd+S か保存ボタンで保存します。変更はパッチマップとして管理され、ファイルはストリーミングで書き戻されるので、行が伸び縮みしても安全です。

Remote-SSH やコンテナでも使えますか?

使えます。むしろそれが狙いです。拡張機能はファイルがあるマシン上で動くので、リモートサーバーのログを手元にコピーせずそのまま読めます。仮想ファイルシステムは、行インデックスが実ファイルへのバイトオフセットアクセスを必要とするため未対応です。

ちょっと見たいだけ、変換したいだけですか?

このサイトのツールはすべてブラウザ内で完結します。アップロードも登録も不要です。単発の変換や検証はそちらで、プロジェクトの中にあるファイルは拡張機能で。

JSONL ツールを見る