macOS 13+ · v1.1.1 · MIT

86,420,337 行。
開くのに 80 ミリ秒。

10 GB のログです。開いたまま一日使っても、本文は 1 バイトも抱えません。見えている行しか読まず、描かないからです。v0.4 からは、その場で編集して atomic に保存できます。

Apple Developer ID で署名し、Apple の公証を通しています。ダブルクリックするだけで開きます。Apple Silicon / Intel 両対応。

10GB
開いたファイル
0B
アプリが抱える本文
80ms
最初の行が出るまで
0.1ms
86,420,337 行目へ跳ぶ

0 は四捨五入ではありません。ファイルはマップするだけで、コピーしません。10 GB を開いた状態で vmmap を見ると、そのファイルは resident 4.2 GB・dirty は 0 バイト —— OS がいつでも捨てられるページで、アプリは 1 バイトも抱えていません。アプリ自体の実メモリは 162 MB(うち 32 MB は何も開いていないときの分)。その中身はウィンドウの描画バッファと、10 GB をマップするためのページテーブルであって、あなたのログではありません。2026-07-12、配布版 1.0.2 で実測。

ビュー

27 秒。カットなし。

一発撮り・等倍です。10 GB のログを開き、行の索引が背景で走っている最中にスクロールし、検索します。索引が終わるとステータスバーの概算が止み、86,420,337 行に確定します。そこで ⌘L、最後の行へ。

全 86,420,337 行を数え上げる索引は、このファイルで約 10 秒。ステータスバーは最初「約 89,292,800 行」と概算を出し、走査が終わると正確な値に落ち着きます。その間、ビューは一度も止まりません。この録画の検索も、索引が 95% の最中に 137,111 件を見つけています。

しくみ

最初の行が出るまでに読むのは、数十キロバイト。

10 GB のうちの、数十キロバイトです。残りは背景で流し読みして行インデックスを作るだけで、メモリには残しません。全文を先にメモリへ載せる定番のやり方は、このサイズで破綻します。だから、そうしていません。

mmap

全部は読まない

ファイルは mmap。実際に触れたページだけ OS が読み込む。だからサイズに関係なく「開く」が一瞬。

sparse index

1 億行でも約 800 KB

2,000 行ごとに 1 つだけオフセットを保持。任意の行へは短いスキャンで届く。索引は極小。

visible only

数十行だけ描く

固定サイズのビュー+行単位スクローラ。16 億ポイントの巨大ビュー(float 精度の崖)を作らない。

機能

読む道具は全部。書く道具も。